RTEMS: Linux I2C User-Space API

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Files | Data Structures | Macros
Linux I2C User-Space API
Device Drivers » Inter-Integrated Circuit (I2C) Driver

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.
#define | I2C_TIMEOUT 0x702
| Sets the transfer timeout in 10ms units.
#define | I2C_SLAVE 0x703
| Sets the slave address.
#define | I2C_SLAVE_FORCE 0x706
| Forces setting the slave address.
#define | I2C_TENBIT 0x704
| Enables 10-bit addresses if argument is non-zero, otherwise disables 10-bit addresses.
#define | I2C_FUNCS 0x705
| Gets the I2C controller functionality information.
#define | I2C_RDWR 0x707
| Performs a combined read/write transfer.
#define | I2C_PEC 0x708
| Enables System Management Bus (SMBus) Packet Error Checking (PEC) if argument is non-zero, otherwise disables PEC.
#define | I2C_SMBUS 0x720
| Performs an SMBus transfer.

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

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

- /usr/src/linux/include/uapi/linux/i2c.h,
- /usr/src/linux/include/uapi/linux/i2c-dev.h
- https://www.kernel.org/doc/Documentation/i2c/i2c-protocol
- https://www.kernel.org/doc/Documentation/i2c/dev-interface

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