diff --git a/bsp/lpc54114-lite/drivers/drv_i2c.c b/bsp/lpc54114-lite/drivers/drv_i2c.c index a624e86292dc44ff6c590f779be7e9ffec35927d..1291e3ab2d4a504a5064e95bfd291e48e4f5b29d 100644 --- a/bsp/lpc54114-lite/drivers/drv_i2c.c +++ b/bsp/lpc54114-lite/drivers/drv_i2c.c @@ -84,12 +84,12 @@ static rt_ssize_t master_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg m static rt_ssize_t slave_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num) { - return 0; + return -RT_ENOSYS; } static rt_err_t i2c_bus_control(struct rt_i2c_bus_device *bus, rt_uint32_t cmd, rt_uint32_t arg) { - return RT_EOK; + return -RT_EINVAL; } static const struct rt_i2c_bus_device_ops ops = diff --git a/components/drivers/i2c/i2c_core.c b/components/drivers/i2c/i2c_core.c index 7e90ac30ec9a7431c4e50fbdb01fb5b3be473d66..01ca1636c3cab3a82d659022d5b41b24b18022e5 100644 --- a/components/drivers/i2c/i2c_core.c +++ b/components/drivers/i2c/i2c_core.c @@ -56,6 +56,7 @@ rt_ssize_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, rt_uint32_t num) { rt_ssize_t ret; + rt_err_t err; if (bus->ops->master_xfer) { @@ -67,18 +68,23 @@ rt_ssize_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, msgs[ret].addr, msgs[ret].len); } #endif - - rt_mutex_take(&bus->lock, RT_WAITING_FOREVER); + err = rt_mutex_take(&bus->lock, RT_WAITING_FOREVER); + if (err != RT_EOK) + { + return (rt_ssize_t)err; + } ret = bus->ops->master_xfer(bus, msgs, num); - rt_mutex_release(&bus->lock); - + err = rt_mutex_release(&bus->lock); + if (err != RT_EOK) + { + return (rt_ssize_t)err; + } return ret; } else { LOG_E("I2C bus operation not supported"); - - return -RT_ERROR; + return -RT_EINVAL; } } @@ -91,14 +97,12 @@ rt_err_t rt_i2c_control(struct rt_i2c_bus_device *bus, if(bus->ops->i2c_bus_control) { ret = bus->ops->i2c_bus_control(bus, cmd, arg); - return ret; } else { LOG_E("I2C bus operation not supported"); - - return -RT_ERROR; + return -RT_EINVAL; } } diff --git a/components/drivers/include/drivers/i2c.h b/components/drivers/include/drivers/i2c.h index e7f9faa16a0c08a83e898d37546c3cde2b200c3f..1a5396c538f52ba15ecc9dd271e27beb5767bcb1 100644 --- a/components/drivers/include/drivers/i2c.h +++ b/components/drivers/include/drivers/i2c.h @@ -97,8 +97,6 @@ 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 } #endif