Bridle API 4.1.99
A Zephyr based application framework
Loading...
Searching...
No Matches
SC18IM604 I2C Controller

I2C controller part of an SC18IM604 bridge. More...

Data Structures

struct  i2c_sc18is604_config
 SC18IM604 I2C controller configuration data. More...
 
struct  i2c_sc18is604_xfr_cb_work
 Data structure for tracking a asynchronous I2C transfer. More...
 

Macros

#define I2C_SC18IS604_DEFINE(inst)
 

Functions

int await_signal (struct k_poll_signal *signal, int *result, k_timeout_t timeout)
 Await a signal being raised.
 
static void i2c_sc18is604_interrupt_work_fn_initial (struct k_work *work)
 
static void i2c_sc18is604_interrupt_work_fn_final (struct k_work *work)
 
static void i2c_sc18is604_interrupt_callback (const struct device *dev, struct gpio_callback *cb, gpio_port_pins_t pins)
 
static int i2c_sc18is604_set_clock_speed (const struct device *dev, uint32_t speed)
 
static int i2c_sc18is604_write_message (const struct device *dev, uint8_t *data, size_t len, uint16_t addr)
 
static int i2c_sc18is604_read_message (const struct device *dev, uint8_t *data, size_t len, uint16_t addr)
 
static int i2c_sc18is604_configure (const struct device *dev, uint32_t config)
 
static int i2c_sc18is604_get_config (const struct device *dev, uint32_t *config)
 
static int i2c_sc18is604_transfer_msg (const struct device *dev, struct i2c_msg *msg, uint16_t addr)
 
static int i2c_sc18is604_transfer (const struct device *dev, struct i2c_msg *msgs, uint8_t num_msgs, uint16_t addr)
 
static int i2c_sc18is604_init (const struct device *dev)
 
 DT_INST_FOREACH_STATUS_OKAY (I2C_SC18IS604_DEFINE)
 

Variables

static const struct i2c_driver_api i2c_sc18is604_api
 
int i2c_sc18is604_transfer_cb (const struct device *dev, struct i2c_msg *msgs, uint8_t num_msgs, uint16_t addr, i2c_callback_t cb, void *userdata)
 Transfer I2C messages asynchronously.
 

Detailed Description

I2C controller part of an SC18IM604 bridge.

Since
3.7
Version
1.0.0

The I2C controller part based on the MFD interface to the SC18IM604 SPI to I2C and GPIO controller bridge.

Macro Definition Documentation

◆ I2C_SC18IS604_DEFINE

#define I2C_SC18IS604_DEFINE (   inst)

#include <drivers/i2c/i2c_sc18is604.c>

Value:
\
K_THREAD_STACK_DEFINE(i2c_sc18is604_wq_stack_##inst, \
CONFIG_I2C_SC18IS604_WORKQUEUE_STACK_SIZE); \
static const struct i2c_sc18is604_config i2c_sc18is604_config_##inst = { \
.parent_dev = DEVICE_DT_GET(DT_INST_BUS(inst)), \
}; \
\
static struct i2c_sc18is604_data i2c_sc18is604_data_##inst = { \
.work_queue_stack = i2c_sc18is604_wq_stack_##inst, \
}; \
\
PM_DEVICE_DT_INST_DEFINE(inst, i2c_sc18is604_pm_device_pm_action); \
\
I2C_DEVICE_DT_INST_DEFINE(inst, i2c_sc18is604_init, PM_DEVICE_DT_INST_GET(inst), \
&i2c_sc18is604_data_##inst, &i2c_sc18is604_config_##inst, \
POST_KERNEL, CONFIG_I2C_SC18IS604_INIT_PRIORITY, \
static int i2c_sc18is604_init(const struct device *dev)
Definition i2c_sc18is604.c:354
static const struct i2c_driver_api i2c_sc18is604_api
Definition i2c_sc18is604.c:345
SC18IM604 I2C controller configuration data.
Definition i2c_sc18is604.h:34
const struct device * parent_dev
Parent MFD device for real operations on hardware.
Definition i2c_sc18is604.h:36
SC18IS604 I2C controller data.
Definition i2c_sc18is604.h:45

Function Documentation

◆ await_signal()

int await_signal ( struct k_poll_signal *  signal,
int *  result,
k_timeout_t  timeout 
)

#include <drivers/i2c/i2c_sc18is604.c>

Await a signal being raised.

Parameters
signalThe signal to await.
[out]resultThe result attached to the raised signal.
timeoutTimeout before awaiting the signal is aborted.
Return values
1If the signal was raised.
0If the signal was not raised within the timeout.
Returns
Negative error code if some failure occurs during k_poll().

◆ DT_INST_FOREACH_STATUS_OKAY()

DT_INST_FOREACH_STATUS_OKAY ( I2C_SC18IS604_DEFINE  )

◆ i2c_sc18is604_configure()

static int i2c_sc18is604_configure ( const struct device *  dev,
uint32_t  config 
)
static

◆ i2c_sc18is604_get_config()

static int i2c_sc18is604_get_config ( const struct device *  dev,
uint32_t *  config 
)
static

◆ i2c_sc18is604_init()

static int i2c_sc18is604_init ( const struct device *  dev)
static

◆ i2c_sc18is604_interrupt_callback()

static void i2c_sc18is604_interrupt_callback ( const struct device *  dev,
struct gpio_callback *  cb,
gpio_port_pins_t  pins 
)
static

◆ i2c_sc18is604_interrupt_work_fn_final()

static void i2c_sc18is604_interrupt_work_fn_final ( struct k_work *  work)
static

◆ i2c_sc18is604_interrupt_work_fn_initial()

static void i2c_sc18is604_interrupt_work_fn_initial ( struct k_work *  work)
static

◆ i2c_sc18is604_read_message()

static int i2c_sc18is604_read_message ( const struct device *  dev,
uint8_t *  data,
size_t  len,
uint16_t  addr 
)
static

◆ i2c_sc18is604_set_clock_speed()

static int i2c_sc18is604_set_clock_speed ( const struct device *  dev,
uint32_t  speed 
)
inlinestatic

◆ i2c_sc18is604_transfer()

static int i2c_sc18is604_transfer ( const struct device *  dev,
struct i2c_msg *  msgs,
uint8_t  num_msgs,
uint16_t  addr 
)
static

◆ i2c_sc18is604_transfer_cb()

int i2c_sc18is604_transfer_cb ( const struct device *  dev,
struct i2c_msg *  msgs,
uint8_t  num_msgs,
uint16_t  addr,
i2c_callback_t  cb,
void *  userdata 
)

#include <drivers/i2c/i2c_sc18is604.h>

Transfer I2C messages asynchronously.

Parameters
devAn SC18IS604 I2C controller.
msgsI2C messages to be transmitted. Pointer must remain valid for the duration of the transfer.
num_msgsNumber of messages to be transmitted.
addrI2C address of the target device.
cbCallback to be invoked on transfer completion (or failure).
userdataUser data passed to callback.

◆ i2c_sc18is604_transfer_msg()

static int i2c_sc18is604_transfer_msg ( const struct device *  dev,
struct i2c_msg *  msg,
uint16_t  addr 
)
static

◆ i2c_sc18is604_write_message()

static int i2c_sc18is604_write_message ( const struct device *  dev,
uint8_t *  data,
size_t  len,
uint16_t  addr 
)
static

Variable Documentation

◆ i2c_sc18is604_api

const struct i2c_driver_api i2c_sc18is604_api
static

#include <drivers/i2c/i2c_sc18is604.c>

Initial value:
= {
.get_config = i2c_sc18is604_get_config,
}
static int i2c_sc18is604_transfer(const struct device *dev, struct i2c_msg *msgs, uint8_t num_msgs, uint16_t addr)
Definition i2c_sc18is604.c:318
static int i2c_sc18is604_get_config(const struct device *dev, uint32_t *config)
Definition i2c_sc18is604.c:290
static int i2c_sc18is604_configure(const struct device *dev, uint32_t config)
Definition i2c_sc18is604.c:248