`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 $

