zephyr/drivers/sensor/ti/ina23x/ina23x_common.c

50 lines
839 B
C

/*
* Copyright 2021 Grinn
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "ina23x_common.h"
#include <zephyr/sys/byteorder.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));
}