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/src/temp_sensors.c | |
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/src/temp_sensors.c')
-rw-r--r-- | zephyr/shim/src/temp_sensors.c | 45 |
1 files changed, 37 insertions, 8 deletions
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 */ |