90#define I2C_BUS_OBTAIN 0x800
97#define I2C_BUS_RELEASE 0x801
104#define I2C_BUS_GET_CONTROL 0x802
111#define I2C_BUS_SET_CLOCK 0x803
118#define I2C_BUS_CLOCK_DEFAULT 100000
327#define I2C_BUS_NOBLOCK (1u << 0)
342#define I2C_DEV_IO_CONTROL 0x900
362 ssize_t (*
write)(
i2c_dev *dev,
const void *buf,
size_t n, off_t offset);
447 const char *bus_path,
RTEMS Port of Linux I2C API.
void i2c_bus_destroy(i2c_bus *bus)
Destroys a bus control.
Definition i2c-bus.c:318
int i2c_bus_transfer(i2c_bus *bus, i2c_msg *msgs, uint32_t msg_count)
Transfers I2C messages.
Definition i2c-bus.c:83
void i2c_bus_destroy_and_free(i2c_bus *bus)
Destroys a bus control and frees its memory.
Definition i2c-bus.c:323
void i2c_bus_obtain(i2c_bus *bus)
Obtains the bus.
Definition i2c-bus.c:33
int i2c_bus_do_transfer(i2c_bus *bus, i2c_msg *msgs, uint32_t msg_count, uint32_t flags)
Transfers I2C messages with optional flags.
Definition i2c-bus.c:43
int i2c_bus_init(i2c_bus *bus)
Initializes a bus control.
Definition i2c-bus.c:329
int i2c_bus_register(i2c_bus *bus, const char *bus_path)
Registers a bus control.
Definition i2c-bus.c:264
i2c_bus * i2c_bus_alloc_and_init(size_t size)
Allocates a bus control from the heap and initializes it.
Definition i2c-bus.c:336
int i2c_bus_try_obtain(i2c_bus *bus)
Try to obtain the bus.
Definition i2c-bus.c:28
void i2c_bus_release(i2c_bus *bus)
Releases the bus.
Definition i2c-bus.c:38
int i2c_dev_init(i2c_dev *dev, const char *bus_path, uint16_t address)
Initializes a device control.
Definition i2c-dev.c:260
void i2c_dev_destroy(i2c_dev *dev)
Destroys a device control.
Definition i2c-dev.c:245
i2c_dev * i2c_dev_alloc_and_init(size_t size, const char *bus_path, uint16_t address)
Allocates a device control from the heap and initializes it.
Definition i2c-dev.c:265
int i2c_dev_register(i2c_dev *dev, const char *dev_path)
Registers a device control.
Definition i2c-dev.c:134
void i2c_dev_destroy_and_free(i2c_dev *dev)
Destroys a device control and frees its memory.
Definition i2c-dev.c:254
Watchdog_Interval rtems_interval
This type represents clock tick intervals.
Definition types.h:114
RTEMS Port of Linux I2C Device API.
This header file defines the RTEMS Classic API.
This header file defines macros to set errno and return minus one.
I2C bus control.
Definition i2c.h:123
unsigned long functionality
Controller functionality.
Definition i2c.h:188
int(*) set_clock(i2c_bus *bus, unsigned long clock)
Sets the bus clock.
Definition i2c.h:146
unsigned long retries
Transfer retry count.
Definition i2c.h:178
rtems_interval timeout
Transaction timeout in ticks.
Definition i2c.h:183
uint16_t default_address
Default slave device address.
Definition i2c.h:163
bool use_pec
Use SMBus PEC.
Definition i2c.h:173
rtems_recursive_mutex mutex
Mutex to protect the bus access.
Definition i2c.h:158
bool ten_bit_address
Use 10-bit addresses.
Definition i2c.h:168
void(*) destroy(i2c_bus *bus)
Destroys the bus.
Definition i2c.h:153
int(*) transfer(i2c_bus *bus, i2c_msg *msgs, uint32_t msg_count)
Transfers I2C messages.
Definition i2c.h:135
I2C slave device control.
Definition i2c.h:347
int(*) ioctl(i2c_dev *dev, ioctl_command_t command, void *arg)
Device IO control.
Definition i2c.h:370
void(*) destroy(i2c_dev *dev)
Destroys the device.
Definition i2c.h:385
i2c_bus * bus
The bus control.
Definition i2c.h:390
ssize_t(*) write(i2c_dev *dev, const void *buf, size_t n, off_t offset)
Writes to the device.
Definition i2c.h:362
off_t(*) get_size(i2c_dev *dev)
Gets the file size.
Definition i2c.h:375
uint16_t address
The device address.
Definition i2c.h:395
blksize_t(*) get_block_size(i2c_dev *dev)
Gets the file block size.
Definition i2c.h:380
ssize_t(*) read(i2c_dev *dev, void *buf, size_t n, off_t offset)
Reads from the device.
Definition i2c.h:354
int bus_fd
File descriptor of the bus.
Definition i2c.h:403
I2C transfer message.
Definition i2c.h:151
Argument type for I2C_RDWR IO control call.
Definition i2c-dev.h:138
This header file provides the API of Self-Contained Objects.