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

[bsd-nomads:16631] Re: corega FEther PCC-TXD on 5-current



From: Takeshi Shibagaki <ie9t-sbgk@asahi-net.or.jp>
Subject: [bsd-nomads:16629] Re: corega FEther PCC-TXD on 5-current
sanpei> pccard0: <unknown card> (manufacturer=0x1234, product=0x5678) at function 0
sanpei> pccard0:    CIS info: corega K.K., corega FEther PCC-TXD,

thasegawa> ここで、manufacturer IDとproduct IDのマッチングに失敗してますから、
thasegawa> sys/dev/pccard/pccarddevsに
thasegawa> vendor COREGA2                 0x1234  Corega K.K.
thasegawa> とか定義してつかってやればなんとかなるとおもいます。

> 確かに
> 
> vendor  COREGA2 0x1234
> product COREGA2 PCC_TXD 0x5678 corega FEther PCC-TXD
> 
> などとすれば、認識はするとは思いますが、それがcommit出来る
> ものかというと別問題です。だいたい、
> 
> 0x1234, 0x5678なんて非常に怪しげです。本質的には、

いわれれば、怪しげなんですが、CIS string は読めているようですし、
OLDCARD で、pccard dumpcis して、0x1234, 0x5678 が出てくるようなら、も
ともと、まともな値が書かれていないのではないでしょうか。

その場合、
vendor  COREGA2 -1
product COREGA2 FETHER_PCC_TXD	{ "corega&spK.K.", "corega&spFEther&spPCC-TXD", NULL, NULL } Corega FEther PCC-TXD
として、string match に任せる方がいいと思います。

> pccard.c: pccard_do_product_lookup()
> 
> を見て、何故matchしないかを追いかけてからというのが筋では
> ないかと思います。

一番ありそうなのは、
vendor COREGA 0xc00f
と、0x1234 が一致しないので、以下(pccard.c,v 1.72, 339行目付近)ではね
られている(PCCARD_VENDOR_ANY (= -1) で無い場合 string match のときも、
vendor ID のチェックをしている)と思います。
		if (matches && ent->pp_vendor != PCCARD_VENDOR_ANY &&
		    vendor != ent->pp_vendor)
			matches = 0;

// みつなが のりあき //