SemiDrive SSDK Appication Program Interface PTG3.0
sdrv_i2c.h
Go to the documentation of this file.
1
10#ifndef SDRV_I2C_DRV_H_
11#define SDRV_I2C_DRV_H_
12
13#include <types.h>
14#include <sdrv_common.h>
15
19enum {
20 /* transfer stat group */
27};
28
32typedef enum {
36
40typedef enum {
47
52typedef enum {
56
60typedef enum {
64
68typedef struct sdrv_i2c sdrv_i2c_t;
69typedef void (*sdrv_i2c_cb_t)(sdrv_i2c_t *ctrl, void *param,
75 uint32_t clk;
76 paddr_t base;
77 uint32_t irq;
78 uint32_t id;
79 uint32_t inited;
84};
85
90 uint16_t slave_addr;
91 uint8_t *buf;
92 uint16_t len;
94 bool need_stop;
95 uint16_t cur_len;
97 uint32_t trans_errcode;
99 void *cb_param;
100};
101
105struct sdrv_i2c {
108};
109
121{
122 return SDRV_STATUS_OK;
123}
124
136{
137 return SDRV_STATUS_OK;
138}
139
148
161extern status_t sdrv_i2c_write(sdrv_i2c_t *ctrl, uint16_t addr,
162 uint8_t *wbuf, uint16_t wlen,
163 uint32_t timeout, bool need_stop);
164
177extern status_t sdrv_i2c_read(sdrv_i2c_t *ctrl, uint16_t addr,
178 uint8_t *rbuf, uint16_t rlen,
179 uint32_t timeout, bool need_stop);
180
195 uint16_t addr, uint8_t *wbuf, uint16_t wlen,
196 bool need_stop, sdrv_i2c_cb_t cb, void *cb_param);
197
212 uint16_t addr, uint8_t *rbuf, uint16_t rlen,
213 bool need_stop, sdrv_i2c_cb_t cb, void *cb_param);
214
228
239
251 sdrv_i2cdrv_bus_stat_t bus_stat);
252
261
270#endif
SemiDrive driver common header file.
@ SDRV_STATUS_GROUP_I2C
Definition: sdrv_common.h:36
int32_t status_t
Type used for all status and error return values.
Definition: sdrv_common.h:82
@ SDRV_STATUS_OK
Definition: sdrv_common.h:72
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
static status_t sdrv_i2c_set_speedmode(sdrv_i2c_t *ctrl, sdrv_i2cdrv_speed_t speed)
Set i2c controller speed mode.
Definition: sdrv_i2c.h:134
@ SDRV_I2CDRV_TRANS_TIMEOUT
Definition: sdrv_i2c.h:26
@ SDRV_I2CDRV_TRANS_OK
Definition: sdrv_i2c.h:21
@ SDRV_I2CDRV_TRANS_NAK
Definition: sdrv_i2c.h:23
@ SDRV_I2CDRV_TRANS_ERR
Definition: sdrv_i2c.h:24
@ SDRV_I2CDRV_TRANS_GO
Definition: sdrv_i2c.h:22
@ SDRV_I2CDRV_TRANS_ABORT
Definition: sdrv_i2c.h:25
status_t sdrv_i2c_write_async(sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *wbuf, uint16_t wlen, bool need_stop, sdrv_i2c_cb_t cb, void *cb_param)
Write data to slave device use interrupt non-blocking format.
static status_t sdrv_i2c_set_transmode(sdrv_i2c_t *ctrl, sdrv_i2cdrv_tsmode_t tsmode)
Set i2c controller transfer mode.
Definition: sdrv_i2c.h:119
status_t sdrv_i2c_read(sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *rbuf, uint16_t rlen, uint32_t timeout, bool need_stop)
Read data from slave device use poll blocking format.
status_t sdrv_i2cdrv_trans_stat_t
Definition: sdrv_i2c.h:65
status_t sdrv_i2c_unlock_bus(sdrv_i2c_t *ctrl)
Unlock bus stat(only applicable for master).
status_t sdrv_i2c_lock_bus(sdrv_i2c_t *ctrl)
Lock bus stat(only applicable for master).
status_t sdrv_i2c_read_async(sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *rbuf, uint16_t rlen, bool need_stop, sdrv_i2c_cb_t cb, void *cb_param)
Read data from slave device use interrupt non-blocking format.
status_t sdrv_i2c_get_trans_stat(sdrv_i2c_t *ctrl)
Get transfer stat(only applicable for master).
status_t sdrv_i2c_init_ctrl(sdrv_i2c_t *ctrl)
Init the i2c controller.
sdrv_i2cdrv_bus_stat_t sdrv_i2c_get_bus_stat(sdrv_i2c_t *ctrl)
Get bus stat(only applicable for master). @this api will abandon,please use sdrv_i2c_lock_bus/sdrv_i2...
sdrv_i2cdrv_tsmode_t
i2c controller supported transfer mode (only applicable for master mode)
Definition: sdrv_i2c.h:52
@ SDRV_I2CDRV_INTP
Definition: sdrv_i2c.h:54
@ SDRV_I2CDRV_POLL
Definition: sdrv_i2c.h:53
status_t sdrv_i2c_write(sdrv_i2c_t *ctrl, uint16_t addr, uint8_t *wbuf, uint16_t wlen, uint32_t timeout, bool need_stop)
Write data to slave device use poll blocking format.
sdrv_i2cdrv_bus_stat_t
i2c bus stat(only applicable for master mode)
Definition: sdrv_i2c.h:60
@ SDRV_I2CDRV_BUS_BUSY
Definition: sdrv_i2c.h:62
@ SDRV_I2CDRV_BUS_IDLE
Definition: sdrv_i2c.h:61
sdrv_i2cdrv_speed_t
i2c controller supported speed mode
Definition: sdrv_i2c.h:40
@ SDRV_I2CDRV_SSPEED
Definition: sdrv_i2c.h:41
@ SDRV_I2CDRV_FSPEED
Definition: sdrv_i2c.h:42
@ SDRV_I2CDRV_HSPEED
Definition: sdrv_i2c.h:44
@ SDRV_I2CDRV_USPEED
Definition: sdrv_i2c.h:45
@ SDRV_I2CDRV_PSPEED
Definition: sdrv_i2c.h:43
sdrv_i2cdrv_opmode_t
i2c controller supported operation mode
Definition: sdrv_i2c.h:32
@ SDRV_I2CDRV_MASTER
Definition: sdrv_i2c.h:33
@ SDRV_I2CDRV_SLAVE
Definition: sdrv_i2c.h:34
status_t sdrv_i2c_set_bus_stat(sdrv_i2c_t *ctrl, sdrv_i2cdrv_bus_stat_t bus_stat)
Set bus stat(only applicable for master). @this api will abandon,please use sdrv_i2c_lock_bus/sdrv_i2...
void(* sdrv_i2c_cb_t)(sdrv_i2c_t *ctrl, void *param, sdrv_i2cdrv_trans_stat_t stat)
Definition: sdrv_i2c.h:69
Definition: sdrv_i2c.h:74
sdrv_i2cdrv_bus_stat_t bus_stat
Definition: sdrv_i2c.h:83
uint32_t inited
Definition: sdrv_i2c.h:79
uint32_t irq
Definition: sdrv_i2c.h:77
uint32_t clk
Definition: sdrv_i2c.h:75
sdrv_i2cdrv_opmode_t opmode
Definition: sdrv_i2c.h:80
sdrv_i2cdrv_tsmode_t tsmode
Definition: sdrv_i2c.h:81
sdrv_i2cdrv_speed_t speed
Definition: sdrv_i2c.h:82
uint32_t id
Definition: sdrv_i2c.h:78
paddr_t base
Definition: sdrv_i2c.h:76
Definition: sdrv_i2c.h:105
sdrv_i2c_cfg_t * cfg
Definition: sdrv_i2c.h:106
sdrv_i2cdrv_mctrl_t mctrl
Definition: sdrv_i2c.h:107
Definition: sdrv_i2c.h:89
uint8_t * buf
Definition: sdrv_i2c.h:91
bool need_stop
Definition: sdrv_i2c.h:94
int read_flag
Definition: sdrv_i2c.h:93
uint32_t trans_errcode
Definition: sdrv_i2c.h:97
uint16_t len
Definition: sdrv_i2c.h:92
uint16_t cur_len
Definition: sdrv_i2c.h:95
status_t trans_stat
Definition: sdrv_i2c.h:96
void * cb_param
Definition: sdrv_i2c.h:99
uint16_t slave_addr
Definition: sdrv_i2c.h:90
sdrv_i2c_cb_t cb
Definition: sdrv_i2c.h:98