| 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.3 |