| /* |
| * Copyright 2021 Grinn |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/sys/byteorder.h> |
| #include "ina23x_common.h" |
| |
| int ina23x_reg_read_24(const struct i2c_dt_spec *bus, uint8_t reg, uint32_t *val) |
| { |
| uint8_t data[3]; |
| int ret; |
| |
| ret = i2c_burst_read_dt(bus, reg, data, sizeof(data)); |
| if (ret < 0) { |
| return ret; |
| } |
| |
| *val = sys_get_be24(data); |
| |
| return ret; |
| } |
| |
| int ina23x_reg_read_16(const struct i2c_dt_spec *bus, uint8_t reg, uint16_t *val) |
| { |
| uint8_t data[2]; |
| int ret; |
| |
| ret = i2c_burst_read_dt(bus, reg, data, sizeof(data)); |
| if (ret < 0) { |
| return ret; |
| } |
| |
| *val = sys_get_be16(data); |
| |
| return ret; |
| } |
| |
| int ina23x_reg_write(const struct i2c_dt_spec *bus, uint8_t reg, uint16_t val) |
| { |
| uint8_t tx_buf[3]; |
| |
| tx_buf[0] = reg; |
| sys_put_be16(val, &tx_buf[1]); |
| |
| return i2c_write_dt(bus, tx_buf, sizeof(tx_buf)); |
| } |