1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2023 Carl Zeiss Meditec AG
3  * SPDX-FileCopyrightText: Copyright (c) 2024 Jilay Sandeep Pandya
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_DRIVERS_SENSOR_ADLTC2990_H
8 #define ZEPHYR_DRIVERS_SENSOR_ADLTC2990_H
9 
10 #include <zephyr/types.h>
11 #include <zephyr/device.h>
12 #include <zephyr/drivers/gpio.h>
13 #include <zephyr/drivers/i2c.h>
14 #include <zephyr/drivers/sensor.h>
15 
16 enum adltc2990_monitor_pins {
17 	V1,
18 	V2,
19 	V3,
20 	V4,
21 	INTERNAL_TEMPERATURE,
22 	SUPPLY_VOLTAGE
23 };
24 
25 enum adltc2990_monitoring_type {
26 	NOTHING,
27 	VOLTAGE_DIFFERENTIAL,
28 	VOLTAGE_SINGLEENDED,
29 	TEMPERATURE
30 };
31 
32 union voltage_divider_resistors {
33 	struct {
34 		uint32_t v1_r1_r2[2];
35 		uint32_t v2_r1_r2[2];
36 	};
37 	struct {
38 		uint32_t v3_r1_r2[2];
39 		uint32_t v4_r1_r2[2];
40 	};
41 };
42 
43 struct pins_configuration {
44 	uint32_t pins_current_resistor;
45 	union voltage_divider_resistors voltage_divider_resistors;
46 };
47 
48 struct adltc2990_data {
49 	uint8_t acq_format;
50 	int32_t internal_temperature;
51 	int32_t supply_voltage;
52 	int32_t pins_v1_v2_values[2];
53 	int32_t pins_v3_v4_values[2];
54 };
55 
56 struct adltc2990_config {
57 	struct i2c_dt_spec bus;
58 	uint8_t temp_format;
59 	uint8_t measurement_mode[2];
60 	struct pins_configuration pins_v1_v2;
61 	struct pins_configuration pins_v3_v4;
62 };
63 
64 #endif /* ZEPHYR_DRIVERS_SENSOR_ADLTC2990_H */
65