diff options
author | Aaron Massey <aaronmassey@google.com> | 2021-09-24 11:22:12 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-09-24 19:47:45 +0000 |
commit | 465c9dc87a353f48b969da0631c4fd2b6df32a4f (patch) | |
tree | eae7fa5a0f92cb81af315eb7912267167ed078e1 /zephyr/shim | |
parent | fc2b67a878f6c57c02569253032fc5d09f6c581e (diff) | |
download | chrome-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.h | 20 | ||||
-rw-r--r-- | zephyr/shim/src/temp_sensors.c | 45 | ||||
-rw-r--r-- | zephyr/shim/src/thermal.c | 56 |
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[] = { |