[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:06122] Re: IDEA - PCI devices auto-detection



  吉山です。

I received from Kaz.Sasayama@xxxxxxxxxxxxxxx on 11 20 , 1998. 

> やはり最も「めんどくせえ」のは、データベースの作成でしょうか。
> 暇があったら取り組んでみたいテーマではありますが、経営が軌道
> にのらないうちは手を付けられるような状態にないですね。:-(
> 学生諸氏の活動に期待、といったところでしょうか。

  まあ、学生に期待しなくてもある程度の楽は出来ます。というのも、データ
ベースが Linux カーネルソースにあるからです。
  /usr/src/linux/include/linux/pci.h には、PCI ベンダと PCI デバイスに
関するデータベースがあります。これをカードの ID と対比させるとカードま
たはカード上のチップの種類が分かります。このデータをそっくりそのまま生
かせば、データベースは出来上がったようなものです。
  ちなみに、2.0 系では cat /proc/pci でこの情報が表示できましたが、プ
ログラム側から使うのは難儀でした。2.1 系では /proc/bus/pci/device にそ
のまま PCI カードの ID が出るので、こちらを使うと楽できます。

---
#define PCI_VENDOR_ID_S3                0x5333
#define PCI_DEVICE_ID_S3_PLATO_PXS      0x0551
#define PCI_DEVICE_ID_S3_TRIO           0x8811
#define PCI_DEVICE_ID_S3_AURORA64VP     0x8812
#define PCI_DEVICE_ID_S3_TRIO64UVP      0x8814
#define PCI_DEVICE_ID_S3_ViRGE_VX       0x883d
#define PCI_DEVICE_ID_S3_868            0x8880
#define PCI_DEVICE_ID_S3_928            0x88b0
#define PCI_DEVICE_ID_S3_864_1          0x88c0
#define PCI_DEVICE_ID_S3_864_2          0x88c1
#define PCI_DEVICE_ID_S3_964_1          0x88d0
#define PCI_DEVICE_ID_S3_964_2          0x88d1
#define PCI_DEVICE_ID_S3_968            0x88f0
#define PCI_DEVICE_ID_S3_TRIO64V2       0x8901
#define PCI_DEVICE_ID_S3_PLATO_PXG      0x8902
#define PCI_DEVICE_ID_S3_ViRGE          0x5631
#define PCI_DEVICE_ID_S3_ViRGE_DXGX     0x8a01
#define PCI_DEVICE_ID_S3_ViRGE_GX2      0x8a10
#define PCI_DEVICE_ID_S3_ViRGE_MX       0x8c01
#define PCI_DEVICE_ID_S3_ViRGE_MXP      0x8c02
#define PCI_DEVICE_ID_S3_ViRGE_MXPMV    0x8c03
#define PCI_DEVICE_ID_S3_SONICVIBES     0xca00
--- /usr/src/linux/include/linux/pci.h

  例えば、X サーバを1項目、カードベンダを2項目、カードを3項目にする
とすれば、

xserver-s3	5333	0551,8811,8812,8814,883d,8880,88b0,88c0,88c1,88d0,88d1,88f0,8901,8902,
xserver-s3v	5333	5631,8a01,8a10,8c01,8c02,8c03

という具合になります。Prolog のような上からのマッチングというルールを
付けると、

xserver-s3v	5333	5631,8a01,8a10,8c01,8c02,8c03
xserver-s3	5333	*

でもいいかもしれません。マルチベンダデバイスの場合はルールの記述にもう
1工夫必要となるでしょう。
  勿論、カーネルローダブルモジュールでも同様の事が出来ます。

  ISA デバイスの場合は…こりゃちょっと案がありません。
  isapnptools が使えるかも知れませんが、お世話になったことがないので。

> まあSCSIは難しいとしても、NICぐらいなら結構メリットがあるんじゃない
> でしょうか。最近はPCIのものが主流になっているし。

  PCI NE2000 のドライバはどこがヘボイのか、私のマシンではちゃんと動い
てくれません。しょうがないので ISA 版のドライバで動かしていますが…。

---
   Name: 吉山あきら  Akira Yoshiyama
   E-mail: yosshy@debian.or.jp  (runlevel1@xxxxxxxxxxxxxxxxx)
   URL: http://jedi.seg.kobe-u.ac.jp/~yosshy/linux.html