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

[bsd-nomads:16573] Re: pccard



こんばんは	二宮@お四国 です

Yasuhiro OTOMO <yas.axis@ma.mni.ne.jp> は Sat, 28 Dec 2002 23:35:49
+0900 頃
    Subject: [bsd-nomads:16569] pccard のIRQが変更できない
    Message-Id: <wkd6nmxlbu.wl@ma.mni.ne.jp>
    に於いて以下のようにおっしゃっていたように記憶しています。
※都合に因り手を加えさせて頂く事が有ります。御了承下さいマセヽ
大友> 大友と申します。

大友> さて、PC LANカード(corega Ether PCC-TD)をNEC LavieC (PC-LC700J64DH)
大友> にて使い、FreeBSD 4.6.2-RELEASE ...

大友> しかし、ピロリッという明るい音が出てはくるのですが、ed0: device
大友> timeout というメッセージが出てきてしまいます。
大友> 
大友> これはFAQで、IRQをほかと重複しないように変更することでうまく
大友> いくようだとのことですので、

大友> UserConfigで irq pcic1 11 のように変更

というのは ISA バスに繋がってるデバイスな場合に有効な技だと思います
ので該当マシンでは PCI に繋がった pcic(PCI-CurdBus Briage)ですから

大友> してみましたが、下のほうに示すdmesgによると、変更が一向に
大友> 反映されません。

さもありなん ...

大友> /etc/pccard.conf に
大友> 
大友> irq 11
大友> 
大友> を加えてみても、
大友> 
大友> /etc/rc.conf に
大友> 
大友> pccardd_flags="-z -i 11"

上記2つの方法は同義ではありますが以下のような理由により私個人的には
最初の方法(/etc/pccard.conf に書く)が好みです。

  稼働中の pccardd は SIGHUP 送り(kill -HUP `cat /var/run/pccard.pid`)
  によってリスタート(/etc/defaults/pccard.conf->/etc/pccard.conf と
  読み直す)させる事が出来ます。
  pccard.conf に書ける設定は全て pccard.conf に書いてやる方が、書き
  直した後 SIGHUP 送ってやるだけで設定が反映されて便利。
  コマンドラインオプション指定では pccardd を終了させて、再起動しなきゃ
  ならん。。。

とはいえ実はこの設定、、、効かない場合(後述)も有りまする

大友> /etc/pccard.conf
大友> 
大友> irq 11
大友> card "corega K.K." "corega Ether PCC-TD"
大友> #	config	auto "ed" ?
大友>         config  auto "ed" 11
大友>         insert  /etc/pccard_ether $device start
大友>         remove  /etc/pccard_ether $device stop

config auto "ed" ?
のままで良いと思います
ちなみに PCC-TD ってのは defaults/pccard.conf に載ってないので
もしかしたら flag が必要なカードかも知れません
その場合
config auto "ed" ? 0x03000
みたいに書く flag の値は ... souce みなきゃ判らんかっ ...

大友> device		pcic0	at isa? irq 0 port 0x3e0 iomem 0xd0000 disable
大友> device		pcic1	at isa? irq 11 port 0x3e2 iomem 0xd4000
大友> pcic0 をdisableにし、pcic1 のdisableをはずし、irq を 0 から 11 にしま
大友> した。(0でいい、という話を聞きましたが、それでも念のため。)

上記の設定は ISA バスに繋がった pcic 向けの設定です。
PCI に繋がった pcic には無意味です。

device pcic

とだけ書いときゃよろし

大友> カーネル側で設定し、カーネルのコンパイルを行ってみても、

というのは ...

大友> # ISA Ethernet NICs.
大友> # 'device ed' requires 'device miibus'
大友> device		ed0	at isa? port 0x280 irq 10 iomem 0xd8000

この部分の事ですねっ ここで指定してる ed0 の irq 10 と pcic に割り当て
られる IRQ がぶつかってるようなっ。。。
ちなみに上記設定は ISA バスに繋がった ed 用の設定でフツー note-pc な
場合オンボードで ed が ISA バスに繋がってでもいない限り意味が有り
ません。
pccard な ed の為には

device ed

だけで十分です

  そうすると ed0 が ISA 用にリザーブされなくなり、pccard へ ed0 から
  割り当てられるようになります。


大友> dmesg の出力

大友> uhci0: <Intel 82371AB/EB (PIIX4) USB controller> at device 7.2 on pci0
大友> uhci0: Could not map ports
大友> device_probe_and_attach: uhci0 attach returned 6

USB コントローラが認識されてないようですが。。。
まぁ 取り敢えず今回は置いといてっ

大友> sio1: configured irq 3 not in bitmap of probed irqs 0

これってなんでしょう ?
もし ISA に繋がった sio1 なんて無いマシンならば kernel から
sio1 以降の設定は削除しちゃいませう
# そうすれば irq 3 も完全に空きそう

大友> pcic0: <TI PCI-1420 PCI-CardBus Bridge> mem 0x44000000-0x44000fff irq 10 at device 12.0 on pci0
大友> pcic0: TI12XX PCI Config Reg: [ring enable][speaker enable][pwr save][CSC serial isa irq]
大友> pccard0: <PC Card bus (classic)> on pcic0
大友> pcic1: <TI PCI-1420 PCI-CardBus Bridge> mem 0x44001000-0x44001fff irq 10 at device 12.1 on pci0
大友> pcic1: TI12XX PCI Config Reg: [ring enable][speaker enable][pwr save][CSC serial isa irq]
大友> pccard1: <PC Card bus (classic)> on pcic1

大友> ed1 at port 0x300-0x31f irq 10 slot 1 on pccard1
大友> ed1: address 00:90:99:45:cc:09, type NE2000 (16 bit) 

pcic0,1 pcic1(pccard1)の先に生えた ed1 全てが irq 10 を使ってる
ようです。これは PCI interrapt routing で動作しているようです。
PCI routing では irq は共有され pccard.conf 等での irq 設定は無視
されます。このモードでちゃんと動いてくれるなら irq を消費しなくて
良いのですが。。。場合(マシン自体/先に生えるデバイスのドライバが
irq 共有にちゃんと対応できてるか)によって、このモードではうまく行か
ない時が有り(4.6.2 時点の ed がどうだかは失念)、そのときは pcic を
ISA interrapt routing で動かしてやる必要が有ります。その為のおまじないが

Takako Iizuka-Sakano <tsakano@t3.rim.or.jp> は Sun, 29 Dec 2002
04:08:55 +0900 (JST) 頃
    Message-Id: <20021229.040855.78728740.t.sakano@aist.go.jp>
さかの> 解決方法は /boot/loader.conf に
さかの> hw.pcic.intr_path="1"

です。see (j)man pcic
これで ISA routing に設定できます。そのときの pcic が使用する
irq の設定が

さかの> hw.pcic.irq="10"

ですが、私(個人)のお勧めは default の hw.pcic.irq="0"(つまり poling
mode)で使用する事ですのでこれは書かなくてもよろし

  pcic を poling mode で動かしてやると irq を pcic が使わなくなります
  ので、irq の残りが少ないマシンではまず poling mode で試してみてそれ
  でダメなら(泣く〃)irq を割り当てる

さかの> の 2行を加えることと、irq 資源の確保です。

Yasuhiro OTOMO <yas.axis@ma.mni.ne.jp> は Mon, 30 Dec 2002 02:45:36
+0900 頃
    Message-Id: <wkhecwafcv.wl@ma.mni.ne.jp>
大友> 書き忘れましたが、IRQは、Windowsで次のように確認しています。

大友> 4 通信ポート(COM1)
大友> 5 RAGE MOBILITY-M1 AGP(日本語)
大友> 5 ESS Allegro PCI Audio (WDM)
これは鳴りそう ...
大友> 5 Intel 82371AB/EB PCI to USB Universal Host Controller
...
大友> 10 Lucent WDM Communication Device
こいつが悪さをする場合も有る(ports からドライバ入れたら使えるかも
知れないがっ)から irq 10 は使わない方が無難かもっ
大友> 10 Texas Instruments PCI-1420 CardBus Controller
これ PCI routing な場合ねっ
大友> 10 NEC Firewarden OHCI Compliant IEEE 1394 Host Controller
IEEE 1394 は最新の stable や current だったらドライバが有るがっ ...
大友> 11 corega Ether PCC-TD LAN Card
これは動的に割り当てられるもんだから気にする必要無し !
大友> 12 NX PAD

結局 irq 3,11 が Free に使えそうですねっ
という事で整理すると
kernel は私の指摘した点を修正して作りなおす
PCI routing はダメそうだから /boot/loader.conf に
hw.pcic.intr_path="1"を書き ISA routing で動かす
irq の残りが少ないので取り敢えず poling mode で試す
そうすると。。。
/etc/pccard.conf に
irq 3,11
card "corega K.K." "corega Ether PCC-TD"
	config auto ed ? <必要ならflag値>
	insert ...
	remove ...
てな感じのエントリーを用意
でいかがでしょうか ?
slot0/1 両方同時にも使えると思うんですけどねぇ
--─
ICQ UIN:57442553                          二宮 秀幸@愛媛 鬼北 広見町
PGP-Fingerprint:  6C59 EC08 5B23 6490 44D0  7CD3 DA40 219F 7114 8553
PGP-Public-Key:    http://user.shikoku.ne.jp/~nin/pgp/public-key.txt
mailto:nin@shikoku.ne.jp   http://user.shikoku.ne.jp/~nin/index.html
mailto:nin@Jp.FreeBSD.org http://home.jp.freebsd.org/~nin/index.html