Lines Matching +full:current +full:- +full:lsb
5 * SPDX-License-Identifier: Apache-2.0
19 /** @brief The LSB value for the bus voltage register, in microvolts/LSB. */
30 struct ina230_data *data = dev->data; in ina230_channel_get()
31 const struct ina230_config *const config = dev->config; in ina230_channel_get()
37 bus_uv = data->bus_voltage * config->uv_lsb; in ina230_channel_get()
40 val->val1 = bus_uv / 1000000U; in ina230_channel_get()
41 val->val2 = bus_uv % 1000000U; in ina230_channel_get()
46 current_ua = data->current * config->current_lsb; in ina230_channel_get()
49 val->val1 = current_ua / 1000000L; in ina230_channel_get()
50 val->val2 = current_ua % 1000000L; in ina230_channel_get()
54 power_uw = data->power * config->power_scale * config->current_lsb; in ina230_channel_get()
57 val->val1 = (int32_t)(power_uw / 1000000U); in ina230_channel_get()
58 val->val2 = (int32_t)(power_uw % 1000000U); in ina230_channel_get()
63 return -ENOTSUP; in ina230_channel_get()
71 struct ina230_data *data = dev->data; in ina230_sample_fetch()
72 const struct ina230_config *config = dev->config; in ina230_sample_fetch()
77 return -ENOTSUP; in ina230_sample_fetch()
81 ret = ina23x_reg_read_16(&config->bus, INA230_REG_BUS_VOLT, &data->bus_voltage); in ina230_sample_fetch()
89 ret = ina23x_reg_read_16(&config->bus, INA230_REG_CURRENT, &data->current); in ina230_sample_fetch()
91 LOG_ERR("Failed to read current"); in ina230_sample_fetch()
97 ret = ina23x_reg_read_16(&config->bus, INA230_REG_POWER, &data->power); in ina230_sample_fetch()
110 const struct ina230_config *config = dev->config; in ina230_attr_set()
111 uint16_t data = val->val1; in ina230_attr_set()
115 return ina23x_reg_write(&config->bus, INA230_REG_CONFIG, data); in ina230_attr_set()
117 return ina23x_reg_write(&config->bus, INA230_REG_CALIB, data); in ina230_attr_set()
119 return ina23x_reg_write(&config->bus, INA230_REG_MASK, data); in ina230_attr_set()
121 return ina23x_reg_write(&config->bus, INA230_REG_ALERT, data); in ina230_attr_set()
124 return -ENOTSUP; in ina230_attr_set()
131 const struct ina230_config *config = dev->config; in ina230_attr_get()
137 ret = ina23x_reg_read_16(&config->bus, INA230_REG_CONFIG, &data); in ina230_attr_get()
143 ret = ina23x_reg_read_16(&config->bus, INA230_REG_CALIB, &data); in ina230_attr_get()
149 ret = ina23x_reg_read_16(&config->bus, INA230_REG_MASK, &data); in ina230_attr_get()
155 ret = ina23x_reg_read_16(&config->bus, INA230_REG_ALERT, &data); in ina230_attr_get()
162 return -ENOTSUP; in ina230_attr_get()
165 val->val1 = data; in ina230_attr_get()
166 val->val2 = 0; in ina230_attr_get()
173 const struct ina230_config *config = dev->config; in ina230_calibrate()
177 ret = ina23x_reg_write(&config->bus, INA230_REG_CALIB, config->cal); in ina230_calibrate()
187 const struct ina230_config *const config = dev->config; in ina230_init()
190 if (!device_is_ready(config->bus.bus)) { in ina230_init()
191 LOG_ERR("I2C bus %s is not ready", config->bus.bus->name); in ina230_init()
192 return -ENODEV; in ina230_init()
195 ret = ina23x_reg_write(&config->bus, INA230_REG_CONFIG, config->config); in ina230_init()
208 if (config->trig_enabled) { in ina230_init()
215 ret = ina23x_reg_write(&config->bus, INA230_REG_ALERT, config->alert_limit); in ina230_init()
221 ret = ina23x_reg_write(&config->bus, INA230_REG_MASK, config->mask); in ina230_init()