smb(4)
NAME
smb - SMB generic I/O device driver
SYNOPSIS
device smb
DESCRIPTION
- The smb character device driver provides generic i/o to any
- smbus(4)
instance. In order to control SMB devices, use /dev/smb? - with the ioctls
described below. Any of these ioctl commands takes a point - er to struct
smbcmd as its argument. - #include <sys/types.h>
- struct smbcmd {
- char cmd;
int count;
u_char slave;
union {char byte;
short word;char *byte_ptr;
short *word_ptr;struct {short sdata;
short *rdata;} process; - } data;
- };
- The slave field is always used, and provides the address of
- the SMBus
slave device to talk to. - Ioctl Description
- SMB_QUICK_WRITE The QuickWrite command just issues
- the device
- address with write intent to the bus,
- without
transferring any data. - SMB_QUICK_READ The QuickRead command just issues the
- device
- address with read intent to the bus,
- without
transferring any data. - SMB_SENDB The SendByte command sends the byte
- provided in
- the cmd field to the device.
- SMB_RECVB The ReceiveByte command reads a sin
- gle byte from
- the device which will be returned in
- the cmd
field. - SMB_WRITEB The WriteByte command first sends the
- byte from
- the cmd field to the device, followed
- by the byte
given in data.byte. - SMB_WRITEW The WriteWord command first sends the
- byte from
- the cmd field to the device, followed
- by the word
given in data.word. Note that the - SMBus byteorder is little-endian by definition.
- SMB_READB The ReadByte command first sends the
- byte from the
- cmd field to the device, and then
- reads one byte
of data from the device. The re - turned data will
be stored in the location pointed to - by
data.byte_ptr. - SMB_READW The ReadWord command first sends the
- byte from the
- cmd field to the device, and then
- reads one word
of data from the device. The re - turned data will
be stored in the location pointed to - by
data.word_ptr. - SMB_PCALL The ProcedureCall command first sends
- the byte
- from the cmd field to the device,
- followed by the
word provided in data.process.sdata. - It then
reads one word of data from the de - vice, and
returns it in the location pointed to - by
data.process.rdata. - SMB_BWRITE The BlockWrite command first sends
- the byte from
- the cmd field to the device, followed
- by count
bytes of data that are taken from the - buffer
pointed to by data.byte_ptr. The SM - Bus specification mandates that no more than 32
- bytes of data
can be transferred in a single block - read or write
command. This value is available in - the constant
SMB_MAXBLOCKSIZE. - SMB_BREAD The BlockRead command first sends the
- byte from
- the cmd field to the device, and then
- reads count
bytes of data that from the device. - These data
will be returned in the buffer point - ed to by
data.byte_ptr. - The read(2) and write(2) system calls are not implemented by
- this driver.
ERRORS
- The ioctl(2) commands can cause the following driver-specif
- ic errors:
- [ENXIO] Device did not respond to selection.
- [EBUSY] Device still in use.
- [ENODEV] Operation not supported by device (not
- supposed to
- happen).
- [EINVAL] General argument error.
- [EWOULDBLOCK] SMBus transaction timed out.
SEE ALSO
HISTORY
The smb manual page first appeared in FreeBSD 3.0.
AUTHORS
- This manual page was written by Nicolas Souchu.
- BSD October 25, 1998