i82365(4) Intel i82365sl PCMCIA コントローラのドライバ

書式

insmod i82365.o [pc_debug=n] [i365_base=n] [ignore=n] [extra_sockets=n] [do_scan=n] [irq_list=i,j,...] [cs_irq=n] [poll_interval=n] [cycle_time=n] [do_pci_probe=n] [cb_write_post=n] [pci_csc=n] [pci_int=n] [pci_irq_list=i,j,...] [has_dma=n] [has_led=n] [has_ring=n] [freq_bypass=n] [setup_time=n] [cmd_time=n] [recov_time=n] [wakeup=n] [fast_pci=n] [async_clock=n] [cable_mode=n] [irq_mode=n] [p2cclk=n]

説明

これは Intel i82365sl PCMCIA ホストコントローラと、 その多くの派生コントローラの低レベルドライバである。 このドライバは CardBus ブリッジに対する Intel の "Yenta" レジスタ規格も実装している。 i82365sl のクローンとしては、 Cirrus Logic, IBM, O2Micro, Omega Micro, Ricoh, SMC, Texas Instruments, Toshiba, Vadem, VLSI らによるコントローラが出まわっている。 現在のほとんどすべての PCMCIA コントローラと、全ての CardBus ブリッジは、 i82365sl とレジスタ互換である。このドライバはカードサービスから用いられ、 ホストコントローラを設定したり、カードの状態変更イベントを監視したりする。

ISA の i82365 互換コントローラは、通常 I/O アドレス 0x3e0-0x3e1 を利用し、 4 つのソケットすべてをサポートする。 コントローラの 2 番のペアは 0x3e2-0x3e3 を利用する。 この位置をプローブするかどうかは extra_sockets パラメータによって制御できる。 これは ISA ブリッジにのみ影響する。 PCI ブリッジのプローブは 複数のコントローラを自動的に取り扱う。 このドライバは最大で 8 つのソケットまでをサポートする。

CardBus 割り込みの受け渡し

CardBus ブリッジは、基本的に PCI と ISA の両方の割り込みシグナルを サポートしており、割り込みイベントをホストシステムに受け渡す手法も 複数存在する。ブート時にブリッジを正しく設定し、 割り込みハードウェアの実装にマッチさせる作業の一部は、 システム BIOS の役割である。 このモジュールではいくつかのパラメータを用意しており、 デフォルトの割り込み設定を上書きすることが可能になっている。 pci_intpci_csc を用いると、 カードの割り込みやカードの状態変更に PCI 割り込みを使うかどうかを制御できる。 irq_mode を使えば、ブリッジがサポートしていれば、 割り込みの受け渡し方法を変更できる。

i82365 モジュールがロードされると、フリーな ISA 割り込みをスキャンし、 PCMCIA イベントに利用できる割り込みを決定する。 割り込みスキャンの結果はシステムのログに報告される。 スキャンが成功すると、割り込みのリストが "scanned" と報告され、 利用できる割り込みがない場合には、 "default" のリストが報告される。 ブリッジによってはソフトウェア割り込みのテストをサポートしておらず、 常に "default" のリストを返すものもある (Cirrus の non-CardBus ブリッジや Toshiba のある種のブリッジなど)。 他の場合は、 irq_mode が不正であることを示しているのかもしれない。

パラメータ

pc_debug=n
PCMCIA のデバッグレベルを選択する。 このパラメータは、モジュールがデバッグを有効にしてコンパイルした場合にのみ 利用できる。 0 以外の値を指定するとデバッグモードが有効になる。
i365_base=n
i82365sl チップのベース I/O ポートを指定する。 デフォルトは 0x3e0 である。 ISA-to-PCMCIA ブリッジにのみ適用される。
ignore=n
指定した一つのソケットをドライバに無視させる。 ソケットは 0 から番号付けされる。 ソケットはドライバ起動前の状態に保たれるので、 このオプションはカードサービスと共存できない ポイントイネーブラを持つカードに用いるとよいだろう。
extra_sockets=n
ドライバのプローブを 8 つの ISA ソケットに対して行わせるか、 4 つのソケットに対して行ったところで終了させるかを示すフラグ。 デフォルトは 0 (4 つのソケットで終了)。 2 つの独立な ISA-to-PCMCIA コントローラを有するシステム (例えばひとつは内蔵で、 もうひとつはドッキングステーションにある場合など) では、 仮にソケットの合計が 4 だったとしても、 このフラグをセットしておかなければならないかもしれない。 このフラグをセットすると、 poll_interval が自動的に有効になる。
do_scan=n
空いている全ての ISA 割り込みをテストして、 PCMCIA コントローラからトリガできるか調べるかどうかを指定するフラグ。 デフォルトは 1 (真)。
irq_list=i,j,...
他の条件が許す場合に、 このドライバが割り当て可能な割り込み番号をセットで指定する。 デフォルトのリストは 3, 4, 5, 7, 9, 10, 11, 12, 14, 15 である。
cs_irq=n
カードの状態変化のモニターに用いる割り込みラインを設定する。 デフォルトは 0 で、未使用の「正当な」番号のうち、 もっとも高位の番号を使う。 正当な番号は 15, 14, 12, 11, 10, 9, 7, 5, 4, 3 である。
poll_interval=n
カード状態のポーリング遅延を 1/100 秒単位で設定する。 このパラメータをセットすると、カード状態の割り込みは無効になる。 100 程度の値が良いだろう。ポーリングは カードの挿抜イベントの検知にのみ関係する。
cycle_time=n
ホストバスのサイクル長をナノ秒単位で設定する。 デフォルトは 210 ns で、クロック 4.77MHz に対応する。

CardBus コントローラのオプション

do_pci_probe=n
PCI バスに対して PCI-to-PCMCIA ブリッジや PCI-to-CardBus ブリッジの プローブを行うかどうかを決めるフラグ。デフォルトは 1 (真)。
cb_write_post=n
(性能向上のための) 遅延書き込みを有効にするかどうかのフラグ。 デフォルトは 1 (真) (ただし TI 1130 ブリッジの特定のものを除く)。
pci_csc=n
CardBus コントローラに対して、 カードの状態変更割り込みが PCI 割り込みを生じさせるかどうかを指定するフラグ。 デフォルトは 1 (真)。
pci_int=n
CardBus コントローラに対して、 IO カードへの関数割り込みが PCI 割り込みを生じさせるかどうかを指定するフラグ。 デフォルトは 1 (真) (ただし PCI 割り込みを必要とするシステムを除く)。
pci_irq_list=i,j,...
Linux カーネルは、 CardBus ソケットに対する PCI 割り込みの割り当てを自動的に検知できないことがある。 他の方法でこの情報が決定できない場合、 ここで与えることもできる。 N 番目のソケットは、 リストの N 番目の割り込み番号を取得する。

Cirrus のコントローラに特有のオプション

i82365 ドライバは、ロードされるとまず、 どの割り込みを PCMCIA デバイスに安全に割り当てできるかを決定しようとする。 Cirrus のコントローラは他にも追加機能を持っていて、 これらによって特定の割り込み線が利用できないことがある。 また Cirrus のチップには、 割り込みを使えるかどうかの検知に必要な機能がない。 has_dma, has_ring, has_led オプションは、 これらの機能が実装されているかどうかの指定に用いられる。
has_dma=n
has_led=n
コントローラがディスクステータス LED に接続されているかどうかを示すフラグ。 デフォルトではセットされている。
has_ring=n
コントローラの「ビープ通知 (ring indicate)」シグナルが実装されているか 同化を示すフラグ。デフォルトではセットされている。
freq_bypass=n
コントローラを "frequency bypass" モードに設定するかどうかを示すフラグ。 これは高速なシステムクロックのシステムに対して 通常の 7/4 クロック分周を無効にし、 PCMCIA バスへのアクセスを減速する。
setup_time=n
バスのセットアップ時間を内部クロックサイクルの単位で設定する。 デフォルトは 1。
cmd_time=n
バスのコマンド時間を内部クロックサイクルの単位で設定する。 デフォルトは 6。
recov_time=n
バスの復帰時間を内部クロックサイクルの単位で設定する。 デフォルトは 0。
wakeup=n
プローブ機能によって、サスペンド状態のコントローラチップを 目覚めさせるかどうかを示すフラグ。デフォルトは 0。
fast_pci=n
PCI バススピードが 25 MHz を越えるかどうかを示す、 PD6729 PCI コントローラのためのフラグ。
irq_mode=n
割り込み配送モードを指定する、 PD6729 PCI コントローラのためのフラグ。 デフォルトは ISA バスの割り込みを用いる。 1 を指定すると PCI 割り込みを用いる。 PCI カードリーダによっては、 正しく動作させるためにこの指定が必要になることもある。

Ricoh の CardBus コントローラに特有のオプション

irq_mode=n
割り込みの配送方法を選ぶ。 0 を指定すると PCI 割込みだけに配送される。 1 を指定すると ISA 割り込みに配送され、 2 を指定すると外部シリアルの割り込みコントローラ経由で配送される。 デフォルトでは、既に有効になっている配送方法を用いる。
setup_time=n
バスのセットアップ時間を内部クロックサイクルの単位で設定する。 デフォルトは 3。
cmd_time=n
バスのコマンド時間を内部クロックサイクルの単位で設定する。 デフォルトは 6。
hold_time=n
バスの停止 (hold) 時間を内部クロックサイクルの単位で設定する。 デフォルトは 1。

Vadem の ISA コントローラに特有のオプション

async_clock=n
PCMCIA バスのサイクルを、ホストバスのサイクルと 非同期的にするかどうかを指定する。 いくつかの操作に wait 状態を追加することになる。
cable_mode=n
VG469 に対してこのフラグを指定すると、 ケーブル経由で接続されたソケットの駆動に用いるソケットシグナルを調整する。

TI の CardBus コントローラに特有のオプション

通常はシステムの BIOS がこれらのオプションを適切に設定するので、 これらのオプションをデフォルトにすると、 これらの機能はドライバが検知した状態の設定のままで用いられる。
has_ring=n
コントローラが「ビープ通知 (ring indicate)」の接続を持っているかを示すフラグ。 デフォルトでは現在の設定をコントローラから読み込む。
irq_mode=n
割り込みの配送方法を指定する。 0 を指定すると PCI 割り込みだけを用いる。 1 を指定すると ISA 割り込みを用いて配送する。 2 を指定すると 外部シリアルの割り込みコントローラを用いて ISA 割り込みに配送する。 3 を指定すると PCI と ISA 割り込みの両方を用いてシリアルに配送する。 デフォルトは、現在有効になっている配送方法があれば、それを用いる。 どれも有効になっていない場合は ISA 経由で配送する。
p2cclk=n
P2CCLK ピンを入力 (0) または 出力(1) として設定するかどうかを示すフラグ。 このシグナルはソケットの電力コントローラと通信するときに用いる。 間違った指定をすると、ブリッジはカードに電力を供給できなくなる。 デフォルトでは BIOS の設定を用いる。

著者

David Hinds - [email protected]