50 lines
839 B
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));
|
|
}
|