RTEMS  5.1
Files | Data Structures | Macros

RTEMS port of Linux I2C user-space API. More...

Files

file  i2c-dev.h
 RTEMS Port of Linux I2C Device API.
 
file  i2c.h
 RTEMS Port of Linux I2C API.
 

Data Structures

struct  i2c_smbus_ioctl_data
 Argument type for I2C_SMBUS IO control call. More...
 
struct  i2c_rdwr_ioctl_data
 Argument type for I2C_RDWR IO control call. More...
 
struct  i2c_msg
 I2C transfer message. More...
 
union  i2c_smbus_data
 SMBus data. More...
 

Macros

#define I2C_RDRW_IOCTL_MAX_MSGS   42
 Maximum count of messages for one IO control call.
 
#define I2C_SMBUS_BLOCK_MAX   32
 Maximum SMBus data block count.
 

I2C IO Control Commands

#define I2C_RETRIES   0x701
 Sets the count of transfer retries in case a slave device does not acknowledge a transaction. More...
 
#define I2C_TIMEOUT   0x702
 Sets the transfer timeout in 10ms units. More...
 
#define I2C_SLAVE   0x703
 Sets the slave address. More...
 
#define I2C_SLAVE_FORCE   0x706
 Forces setting the slave address. More...
 
#define I2C_TENBIT   0x704
 Enables 10-bit addresses if argument is non-zero, otherwise disables 10-bit addresses. More...
 
#define I2C_FUNCS   0x705
 Gets the I2C controller functionality information. More...
 
#define I2C_RDWR   0x707
 Performs a combined read/write transfer. More...
 
#define I2C_PEC   0x708
 Enables System Management Bus (SMBus) Packet Error Checking (PEC) if argument is non-zero, otherwise disables PEC. More...
 
#define I2C_SMBUS   0x720
 Performs an SMBus transfer. More...
 

I2C Message Flags

#define I2C_M_TEN   0x0010
 I2C message flag to indicate a 10-bit address. More...
 
#define I2C_M_RD   0x0001
 I2C message flag to indicate a read transfer (from slave to master). More...
 
#define I2C_M_STOP   0x8000
 I2C message flag to signal a stop condition even if this is not the last message. More...
 
#define I2C_M_NOSTART   0x4000
 I2C message flag to omit start condition and slave address. More...
 
#define I2C_M_REV_DIR_ADDR   0x2000
 I2C message flag to reverse the direction flag. More...
 
#define I2C_M_IGNORE_NAK   0x1000
 I2C message flag to ignore a non-acknowledge. More...
 
#define I2C_M_NO_RD_ACK   0x0800
 I2C message flag to omit a master acknowledge/non-acknowledge in a read transfer. More...
 
#define I2C_M_RECV_LEN   0x0400
 I2C message flag to indicate that the message data length is the first received byte. More...
 

I2C Controller Functionality

#define I2C_FUNC_I2C   0x00000001
 
#define I2C_FUNC_10BIT_ADDR   0x00000002
 
#define I2C_FUNC_PROTOCOL_MANGLING   0x00000004
 
#define I2C_FUNC_SMBUS_PEC   0x00000008
 
#define I2C_FUNC_NOSTART   0x00000010
 
#define I2C_FUNC_SMBUS_BLOCK_PROC_CALL   0x00008000
 
#define I2C_FUNC_SMBUS_QUICK   0x00010000
 
#define I2C_FUNC_SMBUS_READ_BYTE   0x00020000
 
#define I2C_FUNC_SMBUS_WRITE_BYTE   0x00040000
 
#define I2C_FUNC_SMBUS_READ_BYTE_DATA   0x00080000
 
#define I2C_FUNC_SMBUS_WRITE_BYTE_DATA   0x00100000
 
#define I2C_FUNC_SMBUS_READ_WORD_DATA   0x00200000
 
#define I2C_FUNC_SMBUS_WRITE_WORD_DATA   0x00400000
 
#define I2C_FUNC_SMBUS_PROC_CALL   0x00800000
 
#define I2C_FUNC_SMBUS_READ_BLOCK_DATA   0x01000000
 
#define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA   0x02000000
 
#define I2C_FUNC_SMBUS_READ_I2C_BLOCK   0x04000000
 
#define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK   0x08000000
 
#define I2C_FUNC_SMBUS_BYTE   (I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE)
 
#define I2C_FUNC_SMBUS_BYTE_DATA   (I2C_FUNC_SMBUS_READ_BYTE_DATA | I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
 
#define I2C_FUNC_SMBUS_WORD_DATA   (I2C_FUNC_SMBUS_READ_WORD_DATA | I2C_FUNC_SMBUS_WRITE_WORD_DATA)
 
#define I2C_FUNC_SMBUS_BLOCK_DATA   (I2C_FUNC_SMBUS_READ_BLOCK_DATA | I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
 
#define I2C_FUNC_SMBUS_I2C_BLOCK   (I2C_FUNC_SMBUS_READ_I2C_BLOCK | I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
 
#define I2C_FUNC_SMBUS_EMUL
 

SMBus Transfer Read and Write Markers

#define I2C_SMBUS_READ   1
 
#define I2C_SMBUS_WRITE   0
 

SMBus Transaction Types

#define I2C_SMBUS_QUICK   0
 
#define I2C_SMBUS_BYTE   1
 
#define I2C_SMBUS_BYTE_DATA   2
 
#define I2C_SMBUS_WORD_DATA   3
 
#define I2C_SMBUS_PROC_CALL   4
 
#define I2C_SMBUS_BLOCK_DATA   5
 
#define I2C_SMBUS_I2C_BLOCK_BROKEN   6
 
#define I2C_SMBUS_BLOCK_PROC_CALL   7
 
#define I2C_SMBUS_I2C_BLOCK_DATA   8
 

Detailed Description

RTEMS port of Linux I2C user-space API.

Additional documentation is available through the Linux sources, see:

Macro Definition Documentation

◆ I2C_FUNC_SMBUS_EMUL

#define I2C_FUNC_SMBUS_EMUL
Value:
(I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | I2C_FUNC_SMBUS_BYTE_DATA \
| I2C_FUNC_SMBUS_WORD_DATA | I2C_FUNC_SMBUS_PROC_CALL \
| I2C_FUNC_SMBUS_WRITE_BLOCK_DATA | I2C_FUNC_SMBUS_I2C_BLOCK \
| I2C_FUNC_SMBUS_PEC)

◆ I2C_FUNCS

#define I2C_FUNCS   0x705

Gets the I2C controller functionality information.

The argument type is a pointer to an unsigned long.

◆ I2C_M_IGNORE_NAK

#define I2C_M_IGNORE_NAK   0x1000

I2C message flag to ignore a non-acknowledge.

The controller must support this as indicated by the I2C_FUNC_PROTOCOL_MANGLING functionality.

See also
i2c_msg.

◆ I2C_M_NO_RD_ACK

#define I2C_M_NO_RD_ACK   0x0800

I2C message flag to omit a master acknowledge/non-acknowledge in a read transfer.

The controller must support this as indicated by the I2C_FUNC_PROTOCOL_MANGLING functionality.

See also
i2c_msg.

◆ I2C_M_NOSTART

#define I2C_M_NOSTART   0x4000

I2C message flag to omit start condition and slave address.

The controller must support this as indicated by the I2C_FUNC_NOSTART functionality.

See also
i2c_msg.

◆ I2C_M_RD

#define I2C_M_RD   0x0001

I2C message flag to indicate a read transfer (from slave to master).

See also
i2c_msg.

◆ I2C_M_RECV_LEN

#define I2C_M_RECV_LEN   0x0400

I2C message flag to indicate that the message data length is the first received byte.

The message data buffer must be large enough to store up to 32 bytes, the initial length byte and the SMBus PEC (if used). Initialize the message length to one. The message length is incremented by the count of received data bytes.

See also
i2c_msg.

◆ I2C_M_REV_DIR_ADDR

#define I2C_M_REV_DIR_ADDR   0x2000

I2C message flag to reverse the direction flag.

The controller must support this as indicated by the I2C_FUNC_PROTOCOL_MANGLING functionality.

See also
i2c_msg.

◆ I2C_M_STOP

#define I2C_M_STOP   0x8000

I2C message flag to signal a stop condition even if this is not the last message.

The controller must support this as indicated by the I2C_FUNC_PROTOCOL_MANGLING functionality.

See also
i2c_msg.

◆ I2C_M_TEN

#define I2C_M_TEN   0x0010

I2C message flag to indicate a 10-bit address.

The controller must support this as indicated by the I2C_FUNC_10BIT_ADDR functionality.

See also
i2c_msg.

◆ I2C_PEC

#define I2C_PEC   0x708

Enables System Management Bus (SMBus) Packet Error Checking (PEC) if argument is non-zero, otherwise disables PEC.

The argument type is unsigned long.

◆ I2C_RDWR

#define I2C_RDWR   0x707

Performs a combined read/write transfer.

Only one stop condition is signalled.

The argument type is a pointer to struct i2c_rdwr_ioctl_data.

◆ I2C_RETRIES

#define I2C_RETRIES   0x701

Sets the count of transfer retries in case a slave device does not acknowledge a transaction.

The argument type is unsigned long.

◆ I2C_SLAVE

#define I2C_SLAVE   0x703

Sets the slave address.

It is an error to set a slave address already used by another slave device.

The argument type is unsigned long.

◆ I2C_SLAVE_FORCE

#define I2C_SLAVE_FORCE   0x706

Forces setting the slave address.

The argument type is unsigned long.

◆ I2C_SMBUS

#define I2C_SMBUS   0x720

Performs an SMBus transfer.

The argument type is a pointer to struct i2c_smbus_ioctl_data.

◆ I2C_TENBIT

#define I2C_TENBIT   0x704

Enables 10-bit addresses if argument is non-zero, otherwise disables 10-bit addresses.

The argument type is unsigned long.

◆ I2C_TIMEOUT

#define I2C_TIMEOUT   0x702

Sets the transfer timeout in 10ms units.

The argument type is unsigned long.