109 lines
3.4 KiB
Groff
109 lines
3.4 KiB
Groff
.\" Copyright (c) 1997
|
|
.\" Michael Smith
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer as
|
|
.\" the first lines of this file unmodified.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
|
|
.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.\" %Id: ppi.4,v 1.1 1998/01/02 09:31:18 msmith Exp %
|
|
.\" $FreeBSD$
|
|
.\"
|
|
.Dd January 2, 1998
|
|
.Dt PPI 4
|
|
.Os FreeBSD
|
|
.Sh 名称
|
|
.Nm ppi
|
|
.Nd
|
|
ppbus パラレル 'geek' ポートへのユーザ空間インタフェース
|
|
.Sh 書式
|
|
.Cd "device ppi0 at ppbus?"
|
|
.sp
|
|
マイナ番号: ユニット番号は ppbus 番号に直接対応する。
|
|
.Sh 解説
|
|
.Nm
|
|
デバイスドライバはユーザアプリケーションが
|
|
パラレルポートの状態を操作するための便利な手段を提供し、
|
|
.Pa /dev/io
|
|
インタフェースを使うことに起因するセキュリティ問題を生じることなく、
|
|
容易に低速 I/O 操作ができるようにします。
|
|
.Sh プログラミングインタフェース
|
|
.Pp
|
|
.Fd #include </sys/dev/ppbus/ppi.h>
|
|
.Fd #include </sys/dev/ppbus/ppbconf.h>
|
|
.Pp
|
|
.Nm
|
|
インタフェースでのすべての I/O は
|
|
.Fn ioctl
|
|
呼び出しを使うことによって行います。
|
|
各々のコマンドは 1 つの
|
|
.Ty u_int8_t
|
|
引数をとり、1 バイトのデータを転送します。
|
|
以下のコマンドを使うことができます。
|
|
.Bl -tag -width 10
|
|
.It PPIGDATA, PPISDATA
|
|
データレジスタの内容の読み出しと書き込みを行います。
|
|
.It PPIGSTATUS, PPISSTATUS
|
|
ステータスレジスタの内容の読み出しと書き込みを行います。
|
|
.It PPIGCTRL, PPISCTRL
|
|
制御レジスタの内容の読み出しと書き込みを行います。
|
|
以下ではこのレジスタのビットに対応した定義を行っています。
|
|
制御レジスタのビットをセットすることは相当する出力を low にすることになります。
|
|
.Bl -tag -width 10 -compact
|
|
.It STROBE
|
|
.It AUTOFEED
|
|
.It nINIT
|
|
.It SELECTIN
|
|
.It PCD
|
|
.El
|
|
.It PPIGEPP, PPISEPP
|
|
EPP 制御レジスタの内容の読み出しと書き込みを行います。
|
|
.It PPIGECR, PPISECR
|
|
ECP 制御レジスタの内容の読み出しと書き込みを行います。
|
|
.It PPIGFIFO, PPISFIFO
|
|
ECP FIFO の読み書きをおこないます (8 ビット操作のみ)。
|
|
.El
|
|
.Sh 使用例
|
|
データポートに値 0x5a を出力するために、
|
|
STROBE を low にした後 high に戻します。
|
|
次のコードを使うことができます。
|
|
.Bd -literal -compact
|
|
|
|
int fd;
|
|
u_int8_t val;
|
|
|
|
val = 0x5a;
|
|
ioctl(fd, PPISDATA, &val);
|
|
ioctl(fd, PPIGCTRL, &val);
|
|
val |= STROBE;
|
|
ioctl(fd, PPISCTRL, &val);
|
|
val &= ~STROBE;
|
|
ioctl(fd, PPISCTRL, &val);
|
|
|
|
.Ed
|
|
.Sh バグ
|
|
出力信号がレジスタ値と逆になっているのは混乱を招きかねません。
|
|
.Pp
|
|
.Fn ioctl
|
|
インタフェースは低速であり、
|
|
複数の操作を連続して行うための方法が (まだ) ありません。
|
|
.Pp
|
|
ユーザアプリケーションで必要なヘッダは
|
|
標準のシステムではインストールされません。
|