IIC(4) | Device Drivers Manual | IIC(4) |
iic
—
iic* at alipm? # alpha amd64 i386 sparc64
iic* at amdpm? # amd64 i386
iic* at armadillo9iic? # evbarm
iic0 at at91twi? # evbarm
iic0 at ausmbus0 # evbmips
iic* at awiniic? # evbarm
iic* at bcmi2c? # evbarm
iic* at coram? # amd64 i386
iic* at cuda? # macppc
iic* at cxdtv? # amd64 i386
iic* at diic? # acorn32 evbppc
iic* at dwiic? # amd64 i386
iic* at exyoi2c? # evbarm
iic* at g2i2c? # evbarm
iic0 at gpiic? # evbppc
iic* at gpioiic? # amd64 i386
iic* at gttwsi? # evbarm evbppc
iic* at gxiic? # evbarm
iic* at i2cbus? # evbarm
iic* at ichsmb? # amd64 i386
iic* at imcsmb? # amd64 i386
iic* at imxi2c? # evbarm
iic0 at iomdiic? # acorn32
iic0 at iopiic? # evbarm iyonix
iic* at ismt? # amd64 i386
iic* at jziic? # evbmips
iic* at ki2c? # macppc
iic* at nbpiic? # hpcarm
iic* at nfsmb? # amd64 i386
iic* at ociic? # sandpoint
iic* at omapiic? # evbarm
iic* at pcfiic? # sparc64
iic* at piixpm? # amd64 i386
iic* at pmu? # macppc
iic* at ri2c? # evbmips
iic* at rtciic? # mmeye
iic0 at slugiic0 # evbarm
iic* at tegrai2c? # evbarm
iic* at tiiic? # evbarm
iic* at tsciic? # alpha
iic* at viapcib? # i386
iic* at voyager0 # evbmips
iic0 at ziic? # evbmips zaurus
The iic
driver provides a uniform
programming interface layer between I2C master controllers and various I2C
slave devices. Each I2C master controller attaches an
iic
framework; several slave devices can then be
attached to the iic
bus.
All I2C slave devices are uniquely identified by the address on the bus. The master accesses a particular slave device using its address.
System Management Bus (SMBus) protocol is also supported by emulating it with the I2C commands.
<dev/i2c/i2c_io.h>
:
I2C_IOCTL_EXEC
(i2c_ioctl_exec_t)
typedef enum { I2C_OP_READ, I2C_OP_READ_WITH_STOP, I2C_OP_WRITE, I2C_OP_WRITE_WITH_STOP, I2C_OP_READ_BLOCK, I2C_OP_WRITE_BLOCK } i2c_op_t; typedef struct i2c_ioctl_exec { i2c_op_t iie_op; /* operation to perform */ i2c_addr_t iie_addr; /* address of device */ const void *iie_cmd; /* pointer to command */ size_t iie_cmdlen; /* length of command */ void *iie_buf; /* pointer to data buffer */ size_t iie_buflen; /* length of data buffer */ } i2c_ioctl_exec_t;
February 27, 2021 | NetBSD 9.4 |