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