int bmg160_update_byte(struct device *dev, u8_t reg_addr, u8_t mask, u8_t value) { const struct bmg160_device_config *dev_cfg = dev->config->config_info; struct bmg160_device_data *bmg160 = dev->driver_data; int ret = 0; bmg160_bus_config(dev); k_sem_take(&bmg160->sem, K_FOREVER); if (i2c_reg_update_byte(bmg160->i2c, dev_cfg->i2c_addr, reg_addr, mask, value) < 0) { ret = -EIO; } k_sem_give(&bmg160->sem); return ret; }
int bmg160_update_byte(struct device *dev, uint8_t reg_addr, uint8_t mask, uint8_t value) { struct bmg160_device_config *dev_cfg = dev->config->config_info; struct bmg160_device_data *bmg160 = dev->driver_data; int ret = 0; bmg160_bus_config(dev); nano_sem_take(&bmg160->sem, TICKS_UNLIMITED); if (i2c_reg_update_byte(bmg160->i2c, dev_cfg->i2c_addr, reg_addr, mask, value) < 0) { ret = -EIO; } nano_sem_give(&bmg160->sem); return ret; }
static int bmg160_write(struct device *dev, u8_t reg_addr, u8_t *data, u8_t len) { const struct bmg160_device_config *dev_cfg = dev->config->config_info; struct bmg160_device_data *bmg160 = dev->driver_data; int ret = 0; bmg160_bus_config(dev); k_sem_take(&bmg160->sem, K_FOREVER); if (i2c_burst_write(bmg160->i2c, dev_cfg->i2c_addr, reg_addr, data, len) < 0) { ret = -EIO; } k_sem_give(&bmg160->sem); return ret; }
static int bmg160_write(struct device *dev, uint8_t reg_addr, uint8_t *data, uint8_t len) { struct bmg160_device_config *dev_cfg = dev->config->config_info; struct bmg160_device_data *bmg160 = dev->driver_data; int ret = 0; bmg160_bus_config(dev); nano_sem_take(&bmg160->sem, TICKS_UNLIMITED); if (i2c_burst_write(bmg160->i2c, dev_cfg->i2c_addr, reg_addr, data, len) < 0) { ret = -EIO; } nano_sem_give(&bmg160->sem); return ret; }