diff options
| author | xieyangrun <[email protected]> | 2020-09-23 17:17:20 +0800 |
|---|---|---|
| committer | xieyangrun <[email protected]> | 2020-09-23 17:17:20 +0800 |
| commit | 54c6e7d1459c2e4e6e4e6249e1700837c3d863a3 (patch) | |
| tree | 395aef985b25f406449088ccd2bdf8446d97bd94 /components/drivers/include | |
| parent | d92fbba3c1dfd304b377da2d6d48e317c10fc3c4 (diff) | |
[dirver/i2c] i2c driver support bus lock, STOP control
Diffstat (limited to 'components/drivers/include')
| -rw-r--r-- | components/drivers/include/drivers/i2c.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/components/drivers/include/drivers/i2c.h b/components/drivers/include/drivers/i2c.h index 17d57288cd..d93e82fc2b 100644 --- a/components/drivers/include/drivers/i2c.h +++ b/components/drivers/include/drivers/i2c.h @@ -23,6 +23,7 @@ extern "C" { #define RT_I2C_NO_START (1u << 4) #define RT_I2C_IGNORE_NACK (1u << 5) #define RT_I2C_NO_READ_ACK (1u << 6) /* when I2C reading, we do not ACK */ +#define RT_I2C_NO_STOP (1u << 7) struct rt_i2c_msg { @@ -83,6 +84,17 @@ rt_size_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus, rt_uint16_t flags, rt_uint8_t *buf, rt_uint32_t count); + +rt_inline rt_err_t rt_i2c_bus_lock(struct rt_i2c_bus_device *bus, rt_tick_t timeout) +{ + return rt_mutex_take(&bus->lock, timeout); +} + +rt_inline rt_err_t rt_i2c_bus_unlock(struct rt_i2c_bus_device *bus) +{ + return rt_mutex_release(&bus->lock); +} + int rt_i2c_core_init(void); #ifdef __cplusplus |
