Linux Kernel 2.2 Documentation:
/usr/src/linux/Documentation/parport.txt
parport.txt
カーネル 2.2 におけるパラレルポートの取り扱いについて
[プレインテキスト版]
- 原著作者: Philip Blundell (Philip.Blundell@pobox.com) Tim Waugh (tim@cyberelk.demon.co.uk)
- 翻訳者: 中野武雄 <nakano@apm.seikei.ac.jp>
- バージョン: 2.2.5
- 翻訳日時: 1999/07/17
`parport' コードは Linux におけるパラレルポートのサポートを
受け持ちます。このコードでは、一つのポートを複数のデバイス
ドライバで共有することも可能になっています。
parport にはパラメータを渡すことができ、ハードウェアの自動検出
結果を上書きできます。これは IRQ を使いたい場合に特に便利です。
IRQ の自動検出は一般にはうまくいきませんので。デフォルトでは
プローブ *できた* IRQ も利用されないことになっています。パラレル
ポートと同じ IRQ をサウンドカードやネットワークカードに割り当てて
いるユーザもたくさんいるからです。
parport は二つの部分に別れています。ポート共有を処理するジェネ
リックな部分と、実際にポートを扱う機種依存の部分です。
モジュールで parport を使う
===========================
parport のコードをモジュールとしてロードする場合は、まず
# insmod parport.o
としてジェネリックな方をロードします。次に機種依存の方をロード
する必要があります。以下はその例。
# insmod parport_pc.o io=0x3bc,0x378,0x278 irq=none,7,auto
ここでは parport コードに「PC スタイルのポートを 3 つ使うこと、
一つは 0x3bc で IRQ なし、二つめは 0x378 で IRQ 7 を使い、
三つめは 0x278 で IRQ を自動検出すること」といった指示を
しています。現在のところでは、PC スタイルのハードウェア
(parport_pc) と Sun Ultra/AX のハードウェア (parport_ax)
がサポートされています。
kmod で使う
-----------
kmod を使っている場合は、 /etc/conf.modules を編集してやると
便利でしょう。次の例のような行を追加します:
alias parport_lowlevel parport_pc
options parport_pc io=0x378,0x278 irq=7,auto
こうすると kmod はパラレルポートのデバイスドライバ (lp など) が
ロードされるたびに、自動的に parport_pc をロードするようになります
(オプション "io=0x378,0x278 irq=7,auto" が用いられます)。
parport の自動検出 [オプション]
------------------
parport の機種依存コードをカーネルにロードした後になら、
parport_probe モジュールをロードすることもできます。
# insmod parport_probe.o
こうすると IEEE1284 プローブが接続されている全てのデバイスに対して
行われ、以下のようなログメッセージが出力されます。
parport0: Printer, BJC-210 (Canon)
(kmod を使っていて parport_probe をモジュールで使うように
設定した場合は、このようになるでしょう。)
プローブの結果は /proc/parport/?/autoprobe で見ることができます。
parport をカーネルにスタティックにリンクする
============================================
parport のコードをカーネルにスタティックにリンクした場合は、
カーネルのブートパラメータを用いれば上記と同様のことができます。
LILO のコマンドラインに以下のような指定を追加してください。
parport=0x3bc parport=0x378,7 parport=0x278,auto
`parport=...' 行は複数指定できます。追加したいポート一つごとに
一行を指定します。カーネルのコマンドラインに `parport=0' を追加
すると、 parport のサポートはずっと無効になります。 `parport=auto'
をカーネルコマンドラインに追加すると、自動検出された IRQ ラインや
DMA チャネルを全て用います。
/proc のファイル
================
/proc ファイルシステムのサポートをカーネルに設定してある場合は、
/proc/parport というディレクトリエントリが現れるはずです。この
ディレクトリには、 parport に扱うように指定したパラレルポート
それぞれに対応するサブディレクトリがあります。それらサブディレクトリ
にはそれぞれ 4 つのファイルがあり、これらを通してパラレルポートの
状態を知ることができます。
ファイル 内容
/proc/parport/0/devices このポートを使っているデバイスドライバの
リスト。現在ポートを使っているドライバ
の名前の脇には "+" がつく (この機能は
全てのドライバでサポートされているわけ
ではない)。
/proc/parport/0/hardware パラレルポートのベースアドレス、
IRQ ライン、 DMA チャネル。
/proc/parport/0/irq そのポートに対して parport が使っている
IRQ。別ファイルになっているのは、この
ファイルに書き込む (IRQ 番号または "none")
ことによって変更を可能にしているため。
/proc/parport/0/autoprobe 取得された IEEE-1284 デバイス ID 情報
デバイスドライバ
================
parport コードが初期化されたら、各ポートにデバイスドライバをアタッチ
することができます。普通はこれは自動的に行われるでしょう。例えば lp
ドライバは、ロードされると見付かったポートそれぞれに対して lp デバイス
を生成します。ただしこの動作は lp ドライバのロード時にパラメータを
用いれば上書き可能です。
# insmod lp.o parport=0,2
あるいは LILO のコマンドラインで:
lp=parport0 lp=parport2
上記の二つの例は、 lp に対して /dev/lp0 を一番目のパラレルポートに
割り当て、 /dev/lp1 を *三番目の* パラレルポートに割り当てるように
指定しています。二番目のポート (parport1) には lp ドライバは割り当て
ません。これは以前のカーネルの動作の仕方とは異なっていることに注意
してください。以前は I/O ポートアドレスとデバイス名はスタティックに
関連づけられており、例えば /dev/lp0 は常に 0x3bc のポートでした。
今後はこれは通用しません - 例えばもしポートが一つしかなければ、その
ポートはデフォルトでは /dev/lp0 になります。これはそのポートの
ベースアドレスには依存しません。
さらに:
* IEEE-1284 自動検出をコンパイル時に選択した場合は、カーネルの
コマンドラインで `ip=auto' を指定できます。すると lp はプリンタが
接続されていると判断されたポートに対してのみデバイスを生成します。
* PLIP に `timid' パラメータを指定すると (コマンドラインで `plip=timid'
あるいはモジュールなら `insmod plip timid=1')、他のデバイスによって
利用中であると判断されたポートを PLIP は避けるようになります。
* IRQ 自動検出が動作するポートのタイプは現時点ではあまり多く
ありません。
--
Philip.Blundell@pobox.com
tim@cyberelk.demon.co.uk
# 本文書は linux kernel 2.2.10 の Documentation/parport.txt
# の日本語訳です。複写・改変・再配布は GPL2 の条件を満たせば可能です。
# 翻訳は中野武雄 (nakano@apm.seikei.ac.jp) が JF Project の協力の下に
# 行いました。ご意見等は JF@linux.or.jp までお寄せください。
$Id: parport.txt,v 1.1 2001/01/21 05:46:11 mdk Exp $
Linux カーネル 2.2 付属文書一覧へ戻る