IOP(4) | Device Drivers Manual | IOP(4) |
iop
—
iop* at pci? dev ? function ?
iopsp* at iop? tid ?
ld* at iop? tid ?
dpti* at iop? tid 0
iop
driver provides support for PCI I/O processors
conforming to the I2O specification, revision 1.5 and above.
I2O is a specification that defines a software interface for communicating with a number of device types. In its basic form, I2O provides the following:
Five types of devices are well defined by the specification. These are:
The iop
driver's role is to initialize and
monitor the IOP, provide a conduit for messages and replies to and from
devices, and provide other common services for peripheral drivers, such as
DMA mapping.
IOPIOCPT
(struct ioppt)
struct ioppt { void *pt_msg; /* pointer to message buffer */ size_t pt_msglen; /* message buffer size in bytes */ void *pt_reply; /* pointer to reply buffer */ size_t pt_replylen; /* reply buffer size in bytes */ int pt_timo; /* completion timeout in ms */ int pt_nbufs; /* number of transfers */ struct ioppt_buf pt_bufs[IOP_MAX_MSG_XFERS]; /* transfers */ }; struct ioppt_buf { void *ptb_data; /* pointer to buffer */ size_t ptb_datalen; /* buffer size in bytes */ int ptb_out; /* non-zero if transfer is to IOP */ };
The minimum timeout value that may be specified is 1000ms. All
other values must not exceed the iop
driver's
operational limits.
The initiator context and transaction context fields in the
message frame will be filled by the iop
driver.
As such, this ioctl may not be used to send messages without a
transaction context payload.
IOPIOCGSTATUS
(struct iovec)
The following ioctls may block while attempting to acquire the
iop
driver's configuration lock, and may fail if the
acquisition times out.
IOPIOCGLCT
(struct iovec)
iop
driver's copy of the logical
configuration table. This copy of the LCT matches the current device
configuration, but is not necessarily the latest available version of the
LCT.IOPIOCRECONFIG
iop
driver scan all bus ports,
retrieve the latest version of the LCT, and attach or detach devices as
necessary. Note that higher-level reconfiguration tasks (such as logically
re-scanning SCSI busses) will not be performed by this ioctl.IOPIOCGTIDMAP
(struct iovec)
struct iop_tidmap { u_short it_tid; u_short it_flags; char it_dvname[sizeof(((struct device *)NULL)->dv_xname)]; }; #define IT_CONFIGURED 0x02 /* target configured */
iop
driver first appeared in NetBSD
1.5.3.
December 2, 2007 | NetBSD 9.4 |