1 /*
2  * Copyright 2021 The Chromium OS Authors
3  * Copyright (c) 2021 Grinn
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INA230_H_
8 #define ZEPHYR_INCLUDE_DT_BINDINGS_INA230_H_
9 
10 #include <zephyr/dt-bindings/dt-util.h>
11 
12 /* Mask/Enable bits that asserts the ALERT pin */
13 #define INA230_SHUNT_VOLTAGE_OVER    BIT(15)
14 #define INA230_SHUNT_VOLTAGE_UNDER   BIT(14)
15 #define INA230_BUS_VOLTAGE_OVER      BIT(13)
16 #define INA230_BUS_VOLTAGE_UNDER     BIT(12)
17 #define INA230_OVER_LIMIT_POWER      BIT(11)
18 #define INA230_CONVERSION_READY      BIT(10)
19 #define INA230_ALERT_FUNCTION_FLAG   BIT(4)
20 #define INA230_CONVERSION_READY_FLAG BIT(3)
21 #define INA230_MATH_OVERFLOW_FLAG    BIT(2)
22 #define INA230_ALERT_POLARITY        BIT(1)
23 #define INA230_ALERT_LATCH_ENABLE    BIT(0)
24 
25 /* Operating Mode */
26 #define INA230_OPER_MODE_POWER_DOWN             0x00
27 #define INA230_OPER_MODE_SHUNT_VOLTAGE_TRIG     0x01
28 #define INA230_OPER_MODE_BUS_VOLTAGE_TRIG       0x02
29 #define INA230_OPER_MODE_SHUNT_BUS_VOLTAGE_TRIG 0x03
30 #define INA230_OPER_MODE_SHUNT_VOLTAGE_CONT     0x05
31 #define INA230_OPER_MODE_BUS_VOLTAGE_CONT       0x06
32 #define INA230_OPER_MODE_SHUNT_BUS_VOLTAGE_CONT 0x07
33 
34 /* Conversion time for bus and shunt in micro-seconds */
35 #define INA230_CONV_TIME_140  0x00
36 #define INA230_CONV_TIME_204  0x01
37 #define INA230_CONV_TIME_332  0x02
38 #define INA230_CONV_TIME_588  0x03
39 #define INA230_CONV_TIME_1100 0x04
40 #define INA230_CONV_TIME_2116 0x05
41 #define INA230_CONV_TIME_4156 0x06
42 #define INA230_CONV_TIME_8244 0x07
43 
44 /* Averaging Mode */
45 #define INA230_AVG_MODE_1    0x00
46 #define INA230_AVG_MODE_4    0x01
47 #define INA230_AVG_MODE_16   0x02
48 #define INA230_AVG_MODE_64   0x03
49 #define INA230_AVG_MODE_128  0x04
50 #define INA230_AVG_MODE_256  0x05
51 #define INA230_AVG_MODE_512  0x06
52 #define INA230_AVG_MODE_1024 0x07
53 
54 /**
55  * @brief Macro for creating the INA230 configuration value
56  *
57  * @param mode  Operating mode.
58  * @param svct  Conversion time for shunt voltage.
59  * @param bvct  Conversion time for bus voltage.
60  * @param avg   Averaging mode.
61  */
62 #define INA230_CONFIG(mode, \
63 		      svct, \
64 		      bvct, \
65 		      avg)  \
66 	(((avg) << 9) | ((bvct) << 6) | ((svct) << 3) | (mode))
67 
68 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_INA230_H_ */
69