Zephyr API Documentation 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
addresses.h File Reference
#include <stdint.h>
#include <zephyr/device.h>
#include <zephyr/sys/util.h>

Go to the source code of this file.

Data Structures

struct  i3c_addr_slots
 Structure to keep track of addresses on I3C bus. More...
 

Macros

#define I3C_BROADCAST_ADDR   0x7E
 Broadcast Address on I3C bus.
 
#define I3C_MAX_ADDR   0x7F
 Maximum value of device addresses.
 

Enumerations

enum  i3c_addr_slot_status {
  I3C_ADDR_SLOT_STATUS_FREE = 0U , I3C_ADDR_SLOT_STATUS_RSVD , I3C_ADDR_SLOT_STATUS_I3C_DEV , I3C_ADDR_SLOT_STATUS_I2C_DEV ,
  I3C_ADDR_SLOT_STATUS_MASK = 0x03U
}
 Enum to indicate whether an address is reserved, has I2C/I3C device attached, or no device attached. More...
 

Functions

int i3c_addr_slots_init (const struct device *dev)
 Initialize the I3C address slots struct.
 
void i3c_addr_slots_set (struct i3c_addr_slots *slots, uint8_t dev_addr, enum i3c_addr_slot_status status)
 Set the address status of a device.
 
enum i3c_addr_slot_status i3c_addr_slots_status (struct i3c_addr_slots *slots, uint8_t dev_addr)
 Get the address status of a device.
 
bool i3c_addr_slots_is_free (struct i3c_addr_slots *slots, uint8_t dev_addr)
 Check if the address is free.
 
uint8_t i3c_addr_slots_next_free_find (struct i3c_addr_slots *slots, uint8_t start_addr)
 Find the next free address.
 
static void i3c_addr_slots_mark_free (struct i3c_addr_slots *addr_slots, uint8_t addr)
 Mark the address as free (not used) in device list.
 
static void i3c_addr_slots_mark_rsvd (struct i3c_addr_slots *addr_slots, uint8_t addr)
 Mark the address as reserved in device list.
 
static void i3c_addr_slots_mark_i3c (struct i3c_addr_slots *addr_slots, uint8_t addr)
 Mark the address as I3C device in device list.
 
static void i3c_addr_slots_mark_i2c (struct i3c_addr_slots *addr_slots, uint8_t addr)
 Mark the address as I2C device in device list.