summaryrefslogtreecommitdiff
path: root/zephyr/shim/src/temp_sensors.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/shim/src/temp_sensors.c')
-rw-r--r--zephyr/shim/src/temp_sensors.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/zephyr/shim/src/temp_sensors.c b/zephyr/shim/src/temp_sensors.c
index ae3a367252..439ea917f9 100644
--- a/zephyr/shim/src/temp_sensors.c
+++ b/zephyr/shim/src/temp_sensors.c
@@ -6,6 +6,7 @@
#include "adc.h"
#include "charger/chg_rt9490.h"
#include "driver/charger/rt9490.h"
+#include "driver/temp_sensor/f75303.h"
#include "hooks.h"
#include "temp_sensor.h"
#include "temp_sensor/pct2075.h"
@@ -198,6 +199,42 @@ const struct tmp112_sensor_t tmp112_sensors[TMP112_COUNT] = {
DT_FOREACH_STATUS_OKAY(TMP112_COMPAT, DEFINE_TMP112_DATA)
};
+#if DT_HAS_COMPAT_STATUS_OKAY(F75303_COMPAT)
+/* The function maybe unused because a temperature sensor can be added to dts
+ * without a reference in the cros_ec_temp_sensors node.
+ */
+__maybe_unused static int f75303_get_temp(const struct temp_sensor_t *sensor,
+ int *temp_ptr)
+{
+ return f75303_get_val_k(sensor->idx, temp_ptr);
+}
+#endif /* f75303_COMPAT */
+
+#define DEFINE_F75303_DATA(node_id) \
+ [F75303_SENSOR_ID(node_id)] = { \
+ .i2c_port = I2C_PORT_BY_DEV(node_id), \
+ .i2c_addr_flags = DT_REG_ADDR(node_id), \
+ },
+
+#define GET_ZEPHYR_TEMP_SENSOR_F75303(named_id) \
+ (&(const struct zephyr_temp_sensor){ \
+ .read = &f75303_get_temp, \
+ .thermistor = NULL, \
+ .update_temperature = f75303_update_temperature, \
+ FILL_POWER_GOOD(named_id) })
+
+#define TEMP_F75303(named_id, sensor_id) \
+ [TEMP_SENSOR_ID(named_id)] = { \
+ .name = DT_NODE_FULL_NAME(sensor_id), \
+ .idx = F75303_SENSOR_ID(sensor_id), \
+ .type = TEMP_SENSOR_TYPE_BOARD, \
+ .zephyr_info = GET_ZEPHYR_TEMP_SENSOR_F75303(named_id), \
+ }
+
+const struct f75303_sensor_t f75303_sensors[F75303_IDX_COUNT] = {
+ DT_FOREACH_STATUS_OKAY(F75303_COMPAT, DEFINE_F75303_DATA)
+};
+
/* There can be only one thermistor on RT9490 with current driver */
#define ADD_ONE(node_id) 1 +
#if DT_FOREACH_STATUS_OKAY_VARGS(RT9490_CHG_COMPAT, TEMP_RT9490_FN, \
@@ -235,7 +272,8 @@ const struct tmp112_sensor_t tmp112_sensors[TMP112_COUNT] = {
CHECK_COMPAT(PCT2075_COMPAT, named_id, sensor_id, TEMP_PCT2075) \
CHECK_COMPAT(SB_TSI_COMPAT, named_id, sensor_id, TEMP_SB_TSI) \
CHECK_COMPAT(TMP112_COMPAT, named_id, sensor_id, TEMP_TMP112) \
- CHECK_COMPAT(RT9490_CHG_COMPAT, named_id, sensor_id, TEMP_RT9490)
+ CHECK_COMPAT(RT9490_CHG_COMPAT, named_id, sensor_id, TEMP_RT9490) \
+ CHECK_COMPAT(F75303_COMPAT, named_id, sensor_id, TEMP_F75303)
#define TEMP_SENSOR_ENTRY(named_id) \
TEMP_SENSOR_FIND(named_id, DT_PHANDLE(named_id, sensor))