summaryrefslogtreecommitdiff
path: root/zephyr/shim
diff options
context:
space:
mode:
authorAaron Massey <aaronmassey@google.com>2021-09-24 11:22:12 -0600
committerCommit Bot <commit-bot@chromium.org>2021-09-24 19:47:45 +0000
commit465c9dc87a353f48b969da0631c4fd2b6df32a4f (patch)
treeeae7fa5a0f92cb81af315eb7912267167ed078e1 /zephyr/shim
parentfc2b67a878f6c57c02569253032fc5d09f6c581e (diff)
downloadchrome-ec-465c9dc87a353f48b969da0631c4fd2b6df32a4f.tar.gz
zephyr: drivers: thermistors are device tree nodes
Thermistor drivers now query the device tree for configuration. Thermistor tests have been updated to be parameterized on all thermistors enabled in the device tree. BRANCH=none BUG=b:184374937 TEST= 1) zmake testall 2) make runhosttests Cq-Depend: chromium:3161332 Signed-off-by: Aaron Massey <aaronmassey@chromium.org> Change-Id: Ic5330cd5c33e79e192428ca857651de9a225856e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3133812 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Tested-by: Aaron Massey <aaronmassey@google.com> Commit-Queue: Aaron Massey <aaronmassey@google.com>
Diffstat (limited to 'zephyr/shim')
-rw-r--r--zephyr/shim/include/config_chip.h20
-rw-r--r--zephyr/shim/src/temp_sensors.c45
-rw-r--r--zephyr/shim/src/thermal.c56
3 files changed, 73 insertions, 48 deletions
diff --git a/zephyr/shim/include/config_chip.h b/zephyr/shim/include/config_chip.h
index 8c8ba3bbf2..a19a2e1775 100644
--- a/zephyr/shim/include/config_chip.h
+++ b/zephyr/shim/include/config_chip.h
@@ -427,26 +427,6 @@
#define CONFIG_THERMISTOR
#endif
-#undef CONFIG_STEINHART_HART_3V0_22K6_47K_4050B
-#ifdef CONFIG_PLATFORM_EC_STEINHART_HART_3V0_22K6_47K_4050B
-#define CONFIG_STEINHART_HART_3V0_22K6_47K_4050B
-#endif
-
-#undef CONFIG_STEINHART_HART_3V3_13K7_47K_4050B
-#ifdef CONFIG_PLATFORM_EC_STEINHART_HART_3V3_13K7_47K_4050B
-#define CONFIG_STEINHART_HART_3V3_13K7_47K_4050B
-#endif
-
-#undef CONFIG_STEINHART_HART_3V3_30K9_47K_4050B
-#ifdef CONFIG_PLATFORM_EC_STEINHART_HART_3V3_30K9_47K_4050B
-#define CONFIG_STEINHART_HART_3V3_30K9_47K_4050B
-#endif
-
-#undef CONFIG_STEINHART_HART_3V3_51K1_47K_4050B
-#ifdef CONFIG_PLATFORM_EC_STEINHART_HART_3V3_51K1_47K_4050B
-#define CONFIG_STEINHART_HART_3V3_51K1_47K_4050B
-#endif
-
#ifdef CONFIG_PLATFORM_EC_I2C
/* Also see shim/include/i2c/i2c.h which defines the ports enum */
#define CONFIG_I2C_CONTROLLER
diff --git a/zephyr/shim/src/temp_sensors.c b/zephyr/shim/src/temp_sensors.c
index 2544169ba3..4d8be4fa42 100644
--- a/zephyr/shim/src/temp_sensors.c
+++ b/zephyr/shim/src/temp_sensors.c
@@ -8,16 +8,45 @@
#include "adc.h"
#include "temp_sensor/thermistor.h"
-#define TEMP_THERMISTOR(node_id) \
- [ZSHIM_TEMP_SENSOR_ID(node_id)] = { \
- .name = DT_LABEL(node_id), \
- .read = DT_STRING_TOKEN(node_id, get_temp_func), \
- .idx = ZSHIM_ADC_ID(DT_PHANDLE(node_id, adc)), \
- .type = TEMP_SENSOR_TYPE_BOARD, \
+#if DT_NODE_EXISTS(DT_PATH(named_temp_sensors))
+static int thermistor_get_temp(const struct temp_sensor_t *sensor,
+ int *temp_ptr)
+{
+ return thermistor_get_temperature(sensor->idx, temp_ptr,
+ sensor->thermistor);
+}
+
+#define GET_THERMISTOR_DATUM(node_sample_id) \
+ [DT_PROP(node_sample_id, \
+ sample_index)] = { .mv = DT_PROP(node_sample_id, milivolt), \
+ .temp = DT_PROP(node_sample_id, temp) },
+
+#define DEFINE_THERMISTOR_DATA(node_id) \
+ static const struct thermistor_data_pair DT_CAT( \
+ node_id, _thermistor_data)[] = { \
+ DT_FOREACH_CHILD(node_id, GET_THERMISTOR_DATUM) \
+ };
+
+#define GET_THERMISTOR_INFO(node_id) \
+ (&(struct thermistor_info){ \
+ .scaling_factor = DT_PROP(node_id, scaling_factor), \
+ .num_pairs = DT_PROP(node_id, num_pairs), \
+ .data = DT_CAT(node_id, _thermistor_data), \
+ })
+
+#define TEMP_THERMISTOR(node_id) \
+ [ZSHIM_TEMP_SENSOR_ID(node_id)] = { \
+ .name = DT_LABEL(node_id), \
+ .read = &thermistor_get_temp, \
+ .idx = ZSHIM_ADC_ID(DT_PHANDLE(node_id, adc)), \
+ .type = TEMP_SENSOR_TYPE_BOARD, \
+ .thermistor = \
+ GET_THERMISTOR_INFO(DT_PHANDLE(node_id, thermistor)), \
},
-#if DT_NODE_EXISTS(DT_PATH(named_temp_sensors))
+DT_FOREACH_STATUS_OKAY(cros_ec_thermistor, DEFINE_THERMISTOR_DATA)
+
const struct temp_sensor_t temp_sensors[] = {
- DT_FOREACH_CHILD(DT_PATH(named_temp_sensors), TEMP_THERMISTOR)
+ DT_FOREACH_STATUS_OKAY(cros_ec_temp_sensor, TEMP_THERMISTOR)
};
#endif /* named_temp_sensors */
diff --git a/zephyr/shim/src/thermal.c b/zephyr/shim/src/thermal.c
index ecac9242f8..c31e2bfcc6 100644
--- a/zephyr/shim/src/thermal.c
+++ b/zephyr/shim/src/thermal.c
@@ -7,26 +7,42 @@
#include "temp_sensor/temp_sensor.h"
#include "ec_commands.h"
-#define THERMAL_CONFIG(node_id) \
- [ZSHIM_TEMP_SENSOR_ID(node_id)] = { \
- .temp_host = { \
- [EC_TEMP_THRESH_WARN] = \
- C_TO_K(DT_PROP(node_id, temp_host_warn)), \
- [EC_TEMP_THRESH_HIGH] = \
- C_TO_K(DT_PROP(node_id, temp_host_high)), \
- [EC_TEMP_THRESH_HALT] = \
- C_TO_K(DT_PROP(node_id, temp_host_halt)), \
- }, \
- .temp_host_release = { \
- [EC_TEMP_THRESH_WARN] = C_TO_K( \
- DT_PROP(node_id, temp_host_release_warn)), \
- [EC_TEMP_THRESH_HIGH] = C_TO_K( \
- DT_PROP(node_id, temp_host_release_high)), \
- [EC_TEMP_THRESH_HALT] = C_TO_K( \
- DT_PROP(node_id, temp_host_release_halt)), \
- }, \
- .temp_fan_off = C_TO_K(DT_PROP(node_id, temp_fan_off)), \
- .temp_fan_max = C_TO_K(DT_PROP(node_id, temp_fan_max)), \
+#define THERMAL_CONFIG(node_id) \
+ [ZSHIM_TEMP_SENSOR_ID(node_id)] = { \
+ .temp_host = { \
+ [EC_TEMP_THRESH_WARN] = \
+ C_TO_K(DT_PROP_OR(node_id, \
+ temp_host_warn, \
+ -273)), \
+ [EC_TEMP_THRESH_HIGH] = \
+ C_TO_K(DT_PROP_OR(node_id, \
+ temp_host_high, \
+ -273)), \
+ [EC_TEMP_THRESH_HALT] = \
+ C_TO_K(DT_PROP_OR(node_id, \
+ temp_host_halt, \
+ -273)), \
+ }, \
+ .temp_host_release = { \
+ [EC_TEMP_THRESH_WARN] = C_TO_K( \
+ DT_PROP_OR(node_id, \
+ temp_host_release_warn, \
+ -273)), \
+ [EC_TEMP_THRESH_HIGH] = C_TO_K( \
+ DT_PROP_OR(node_id, \
+ temp_host_release_high, \
+ -273)), \
+ [EC_TEMP_THRESH_HALT] = C_TO_K( \
+ DT_PROP_OR(node_id, \
+ temp_host_release_halt, \
+ -273)), \
+ }, \
+ .temp_fan_off = C_TO_K(DT_PROP_OR(node_id, \
+ temp_fan_off, \
+ -273)), \
+ .temp_fan_max = C_TO_K(DT_PROP_OR(node_id, \
+ temp_fan_max, \
+ -273)), \
},
struct ec_thermal_config thermal_params[] = {