FreeRTOS port on GAP8/RISC-V
|
Data Structures | |
struct | i2c_slave_data |
struct | i2c_itf_data |
Macros | |
#define | I2C_DRIVER_DATA_IMPLEM_SPECIFC |
#define | i2c_req_t |
UART request structure. More... | |
#define | I2C_READ |
#define | I2C_WRITE |
#define | I2C_WRITE_READ |
#define | I2C_WRITE_DUAL |
#define | CMD_BUF_SIZE |
#define | I2C_WRITE_BUF_SIZE |
#define | I2C_READ_BUF_SIZE |
#define | I2C_W_R_BUF_SIZE |
#define | I2C_BUF_START_POS |
#define | I2C_BUF_WRITE_RPT_POS |
#define | I2C_W_R_BUF_WR_POS |
#define | I2C_W_R_BUF_RESTART_POS |
#define | RD_BUF_RPT(bits) |
#define | W_R_BUF_RD(bits) |
#define | RD_BUF_STOP_ID(bits) |
#define | WR_BUF_STOP_ID |
#define | I2C_SLAVE_GET_ITF(slave) |
Typedefs | |
typedef uint32_t | i2c_cmd_t |
Functions | |
int | __pi_i2c_open (struct i2c_slave_data **slave_data, struct pi_i2c_conf *conf) |
void | __pi_i2c_close (struct i2c_slave_data *slave_data) |
void | __pi_i2c_ioctl (struct i2c_slave_data *slave_data, uint32_t cmd, void *arg) |
static void | __i2c_drv_fifo_enqueue (struct i2c_itf_data *data, pi_task_t *pi_task) |
static pi_task_t * | __i2c_drv_fifo_pop (struct i2c_itf_data *data) |
static struct i2c_slave_data * | ___i2c_drv_get_slave (struct i2c_itf_data *itf_data, uint16_t slave_addr, uint8_t ref_cnt) |
static void | __i2c_drv_add_slave (struct i2c_itf_data *itf_data, struct i2c_slave_data *slave_data) |
static void | __i2c_drv_remove_slave (struct i2c_itf_data *itf_data, struct i2c_slave_data *slave_data) |
static uint32_t | __i2c_prepare_timing (uint32_t max_baudrate, uint32_t periph_clock) |
static void * | __i2c_prepare_read_cmd_buffer (uint16_t slave_addr, void *cmd_buf, uint32_t read_size, void *read_buf, int *buf_size_out, pi_i2c_xfer_flags_e flags, int8_t bits) |
static void * | __i2c_prepare_write_cmd_buffer (uint16_t slave_addr, void *cmd_buf, uint32_t write_size, void *write_buf, int *buf_size_out, pi_i2c_xfer_flags_e flags) |
void | __pi_i2c_timeout_abort (void *arg) |
static void | __pi_i2c_timeout_config_set (pi_task_t *task, uint8_t timeout_id, uint8_t udma_chan_id, uint32_t timeout_us, pi_callback_func_t abort_func, void *arg) |
static void | __pi_i2c_read (struct i2c_slave_data *slave_data, void *buffer, uint32_t size, pi_i2c_xfer_flags_e flags, pi_task_t *callback) |
static void | __pi_i2c_write (struct i2c_slave_data *slave_data, void *buffer, uint32_t size, pi_i2c_xfer_flags_e flags, pi_task_t *callback) |
static void | __pi_i2c_write_read (struct i2c_slave_data *slave_data, void *tx_buffer, void *rx_buffer, uint32_t tx_size, uint32_t rx_size, pi_task_t *callback) |
static void | __pi_i2c_write_dual (struct i2c_slave_data *slave_data, void *tx_buffer0, void *tx_buffer1, uint32_t tx_size0, uint32_t tx_size1, pi_task_t *callback) |
#define CMD_BUF_SIZE |
#define I2C_BUF_START_POS |
#define I2C_BUF_WRITE_RPT_POS |
Referenced by __pi_i2c_write_dual().
#define I2C_DRIVER_DATA_IMPLEM_SPECIFC |
#define I2C_READ |
Referenced by __pi_i2c_read(), and __pi_i2c_send_request_from_irq().
#define I2C_READ_BUF_SIZE |
Referenced by __i2c_prepare_read_cmd_buffer().
#define i2c_req_t |
#define I2C_SLAVE_GET_ITF | ( | slave | ) |
#define I2C_W_R_BUF_RESTART_POS |
Referenced by __i2c_open_prepare_w_r_buf().
#define I2C_W_R_BUF_SIZE |
Referenced by __pi_i2c_write_read().
#define I2C_W_R_BUF_WR_POS |
Referenced by __i2c_open_prepare_w_r_buf(), and __pi_i2c_write_read().
#define I2C_WRITE |
Referenced by __pi_i2c_send_request_from_irq(), and __pi_i2c_write().
#define I2C_WRITE_BUF_SIZE |
Referenced by __i2c_prepare_write_cmd_buffer(), and __pi_i2c_write_dual().
#define I2C_WRITE_DUAL |
Referenced by __pi_i2c_send_request_from_irq(), and __pi_i2c_write_dual().
#define I2C_WRITE_READ |
Referenced by __pi_i2c_send_request_from_irq(), and __pi_i2c_write_read().
#define RD_BUF_RPT | ( | bits | ) |
Referenced by __i2c_open_prepare_read_buf(), and __i2c_prepare_read_cmd_buffer().
#define RD_BUF_STOP_ID | ( | bits | ) |
Referenced by __i2c_open_prepare_read_buf(), and __i2c_prepare_read_cmd_buffer().
#define W_R_BUF_RD | ( | bits | ) |
Referenced by __i2c_open_prepare_w_r_buf(), and __pi_i2c_write_read().
#define WR_BUF_STOP_ID |
Referenced by __i2c_open_prepare_write_buf(), __i2c_prepare_write_cmd_buffer(), and __pi_i2c_write_dual().
typedef uint32_t i2c_cmd_t |
|
static |
References i2c_slave_data::next, i2c_slave_data::ref_cnt, i2c_slave_data::slave_addr, and i2c_itf_data::slave_list.
Referenced by __pi_i2c_open().
|
inlinestatic |
References i2c_slave_data::next, and i2c_itf_data::slave_list.
Referenced by __pi_i2c_open().
|
inlinestatic |
References i2c_itf_data::fifo_head, i2c_itf_data::fifo_tail, and pi_task_t::next.
Referenced by __pi_i2c_read(), __pi_i2c_write(), __pi_i2c_write_dual(), and __pi_i2c_write_read().
|
inlinestatic |
References i2c_itf_data::fifo_head, i2c_itf_data::fifo_tail, hal_compiler_barrier(), and pi_task_t::next.
Referenced by __pi_i2c_timeout_abort().
|
inlinestatic |
References i2c_slave_data::next, i2c_slave_data::slave_addr, and i2c_itf_data::slave_list.
Referenced by __pi_i2c_close().
|
inlinestatic |
References I2C_BUF_START_POS, I2C_CMD_LEAD_START, I2C_CMD_NOP, I2C_CMD_RPT, I2C_CMD_STOP, I2C_READ_BUF_SIZE, RD_BUF_RPT, and RD_BUF_STOP_ID.
Referenced by __pi_i2c_read(), and __pi_i2c_send_request_from_irq().
|
inlinestatic |
References I2C_CMD_TIMING, PI_I2C_FAST_MODE, and PI_I2C_STD_MODE.
Referenced by __pi_i2c_open(), and __pi_i2c_slave_open().
|
inlinestatic |
References I2C_BUF_START_POS, I2C_CMD_LEAD_START, I2C_CMD_NOP, I2C_CMD_RPT, I2C_CMD_STOP, I2C_WRITE_BUF_SIZE, and WR_BUF_STOP_ID.
Referenced by __pi_i2c_send_request_from_irq(), and __pi_i2c_write().
void __pi_i2c_close | ( | struct i2c_slave_data * | slave_data | ) |
References __i2c_drv_remove_slave(), i2c_itf_data::cmd_chan_id, disable_irq(), hal_soc_eu_clear_fc_mask(), hal_udma_core_lin_get(), hal_udma_core_lin_reset(), hal_udma_ctrl_cg_enable(), hal_udma_ctrl_reset_enable(), I2C_TRACE, i2c_itf_data::id, i2c_slave_data::itf_data, i2c_itf_data::open_nb, pi_data_free, pi_udma_core_lin_free(), i2c_slave_data::ref_cnt, restore_irq(), i2c_itf_data::rx_chan_id, SOC_EVENT_UDMA_CHAN_LIN, SOC_EVENT_UDMA_I2C_LEAD_EVT, i2c_itf_data::tx_chan_id, and UDMA_I2C_ID.
void __pi_i2c_ioctl | ( | struct i2c_slave_data * | slave_data, |
uint32_t | cmd, | ||
void * | arg | ||
) |
int __pi_i2c_open | ( | struct i2c_slave_data ** | slave_data, |
struct pi_i2c_conf * | conf | ||
) |
References ___i2c_drv_get_slave(), __i2c_drv_add_slave(), __i2c_open_prepare_read_buf(), __i2c_open_prepare_w_r_buf(), __i2c_open_prepare_write_buf(), __i2c_prepare_timing(), i2c_itf_data::cmd_chan_id, CMD_CHANNEL, disable_irq(), hal_soc_eu_clear_fc_mask(), hal_soc_eu_set_fc_mask(), hal_udma_ctrl_cg_disable(), hal_udma_ctrl_reset_disable(), hal_udma_i2c_clr_event_by_id(), hal_udma_i2c_cmd_dest_set(), hal_udma_i2c_enqueue(), hal_udma_i2c_get_event_by_id(), hal_udma_i2c_rx_dest_set(), hal_udma_i2c_set_event_by_id(), hal_udma_i2c_tx_dest_set(), I2C_CMD_EVENT, I2C_FLAG_CMD_EVENT_I, I2C_FLAG_PRESC_DIV10_EVENT_O, I2C_TRACE, memset(), i2c_itf_data::open_nb, pi_data_malloc, pi_fc_event_handler_set(), pi_freq_get(), pi_time_wait_us(), pi_udma_core_lin_alloc(), i2c_itf_data::read_cmd_buf, restore_irq(), i2c_itf_data::rx_chan_id, i2c_itf_data::rx_timeout_id, SOC_EVENT_UDMA_I2C_LEAD_EVT, i2c_itf_data::tx_chan_id, i2c_itf_data::tx_timeout_id, UDMA_I2C_ID, i2c_itf_data::w_r_cmd_buf, and i2c_itf_data::write_cmd_buf.
|
inlinestatic |
References __i2c_drv_fifo_enqueue(), __i2c_prepare_read_cmd_buffer(), __pi_i2c_timeout_abort(), __pi_i2c_timeout_config_set(), CMD_CHANNEL, pi_task_t::data, disable_irq(), i2c_itf_data::end_task, hal_udma_i2c_enqueue(), I2C_READ, i2c_itf_data::id, i2c_slave_data::is_10_bits, i2c_slave_data::itf_data, i2c_itf_data::read_cmd_buf, restore_irq(), i2c_itf_data::rx_chan_id, i2c_itf_data::rx_timeout_id, i2c_slave_data::slave_addr, and pi_task_t::timeout.
Referenced by pi_i2c_read(), and pi_i2c_read_async().
void __pi_i2c_timeout_abort | ( | void * | arg | ) |
References __i2c_drv_fifo_pop(), __pi_i2c_send_request_from_irq(), CMD_CHANNEL, i2c_itf_data::end_task, hal_udma_i2c_channel_stop(), hal_udma_i2c_clr_event_mask(), i2c_itf_data::id, RX_CHANNEL, TX_CHANNEL, UDMA_I2C_STATUS_REG_IDX_STATUS_I2C_SOFT_RESET_EVENT_O_IDX_BIT, UDMA_I2C_STATUS_REG_IDX_STATUS_LEAD_PURGE_EVENT_O_IDX_BIT, and UDMA_I2C_STATUS_REG_IDX_STATUS_LEAD_UNLOCK_EVENT_O_IDX_BIT.
Referenced by __pi_i2c_ioctl(), __pi_i2c_read(), __pi_i2c_send_request_from_irq(), and __pi_i2c_write().
|
inlinestatic |
References pi_task_timeout_callback_set(), and pi_udma_timeout_config_set().
Referenced by __pi_i2c_read(), __pi_i2c_send_request_from_irq(), and __pi_i2c_write().
|
inlinestatic |
References __i2c_drv_fifo_enqueue(), __i2c_prepare_write_cmd_buffer(), __pi_i2c_timeout_abort(), __pi_i2c_timeout_config_set(), CMD_CHANNEL, pi_task_t::data, disable_irq(), i2c_itf_data::end_task, hal_udma_i2c_enqueue(), I2C_WRITE, i2c_itf_data::id, i2c_slave_data::itf_data, restore_irq(), i2c_slave_data::slave_addr, pi_task_t::timeout, i2c_itf_data::tx_chan_id, i2c_itf_data::tx_timeout_id, and i2c_itf_data::write_cmd_buf.
Referenced by pi_i2c_write(), and pi_i2c_write_async().
|
inlinestatic |
Special frame for device requiring uninterupted sequence of write
References __i2c_drv_fifo_enqueue(), CMD_CHANNEL, pi_task_t::data, disable_irq(), i2c_itf_data::end_task, hal_udma_i2c_enqueue(), I2C_BUF_START_POS, I2C_BUF_WRITE_RPT_POS, I2C_CMD_LEAD_START, I2C_CMD_RPT, I2C_CMD_STOP, I2C_WRITE_BUF_SIZE, I2C_WRITE_DUAL, i2c_itf_data::id, i2c_slave_data::is_10_bits, i2c_slave_data::itf_data, restore_irq(), TX_CHANNEL, WR_BUF_STOP_ID, and i2c_itf_data::write_cmd_buf.
Referenced by pi_i2c_write_dual_async().
|
inlinestatic |
Special frame for device requiring uninterupted sequence with restart
References __i2c_drv_fifo_enqueue(), CMD_CHANNEL, pi_task_t::data, disable_irq(), i2c_itf_data::end_task, hal_udma_i2c_enqueue(), I2C_CMD_RPT, I2C_W_R_BUF_SIZE, I2C_W_R_BUF_WR_POS, I2C_WRITE_READ, i2c_itf_data::id, i2c_slave_data::is_10_bits, i2c_slave_data::itf_data, restore_irq(), RX_CHANNEL, TX_CHANNEL, W_R_BUF_RD, and i2c_itf_data::w_r_cmd_buf.
Referenced by __pi_i2c_send_request_from_irq(), pi_i2c_write_read(), and pi_i2c_write_read_async().