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
unsigned long retries
Transfer retry count.
Definition: i2c.h:178
rtems_interval timeout
Transaction timeout in ticks.
Definition: i2c.h:183
void(* destroy)(i2c_bus *bus)
Destroys the bus.
Definition: i2c.h:153
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
int(* set_clock)(i2c_bus *bus, unsigned long clock)
Sets the bus clock.
Definition: i2c.h:146
int(* transfer)(i2c_bus *bus, i2c_msg *msgs, uint32_t msg_count)
Transfers I2C messages.
Definition: i2c.h:135
bool ten_bit_address
Use 10-bit addresses.
Definition: i2c.h:168
I2C slave device control.
Definition: i2c.h:347
ssize_t(* read)(i2c_dev *dev, void *buf, size_t n, off_t offset)
Reads from the device.
Definition: i2c.h:354
off_t(* get_size)(i2c_dev *dev)
Gets the file size.
Definition: i2c.h:375
int(* ioctl)(i2c_dev *dev, ioctl_command_t command, void *arg)
Device IO control.
Definition: i2c.h:370
i2c_bus * bus
The bus control.
Definition: i2c.h:390
blksize_t(* get_block_size)(i2c_dev *dev)
Gets the file block size.
Definition: i2c.h:380
void(* destroy)(i2c_dev *dev)
Destroys the device.
Definition: i2c.h:385
uint16_t address
The device address.
Definition: i2c.h:395
int bus_fd
File descriptor of the bus.
Definition: i2c.h:403
ssize_t(* write)(i2c_dev *dev, const void *buf, size_t n, off_t offset)
Writes to the device.
Definition: i2c.h:362
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.