| /* |
| * Copyright 2021 The Chromium OS Authors |
| * Copyright (c) 2021 Grinn |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_DRIVERS_SENSOR_INA23X_INA230_H_ |
| #define ZEPHYR_DRIVERS_SENSOR_INA23X_INA230_H_ |
| |
| #include <zephyr/drivers/gpio.h> |
| #include <zephyr/drivers/i2c.h> |
| |
| #define INA230_REG_CONFIG 0x00 |
| #define INA230_REG_SHUNT_VOLT 0x01 |
| #define INA230_REG_BUS_VOLT 0x02 |
| #define INA230_REG_POWER 0x03 |
| #define INA230_REG_CURRENT 0x04 |
| #define INA230_REG_CALIB 0x05 |
| #define INA230_REG_MASK 0x06 |
| #define INA230_REG_ALERT 0x07 |
| |
| struct ina230_data { |
| const struct device *dev; |
| uint16_t current; |
| uint16_t bus_voltage; |
| uint16_t power; |
| #ifdef CONFIG_INA230_TRIGGER |
| const struct device *gpio; |
| struct gpio_callback gpio_cb; |
| struct k_work work; |
| sensor_trigger_handler_t handler_alert; |
| #endif /* CONFIG_INA230_TRIGGER */ |
| }; |
| |
| struct ina230_config { |
| struct i2c_dt_spec bus; |
| uint16_t config; |
| uint16_t current_lsb; |
| uint16_t rshunt; |
| #ifdef CONFIG_INA230_TRIGGER |
| bool trig_enabled; |
| uint16_t mask; |
| const struct gpio_dt_spec gpio_alert; |
| uint16_t alert_limit; |
| #endif /* CONFIG_INA230_TRIGGER */ |
| }; |
| |
| int ina230_trigger_mode_init(const struct device *dev); |
| int ina230_trigger_set(const struct device *dev, |
| const struct sensor_trigger *trig, |
| sensor_trigger_handler_t handler); |
| |
| #endif /* ZEPHYR_DRIVERS_SENSOR_INA23X_INA230_H_ */ |