summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zephyr/dts/bindings/temp/temp-3v0-22k6-47k-4050b.yaml6
-rw-r--r--zephyr/dts/bindings/temp/temp-3v3-13k7-47k-4050b.yaml6
-rw-r--r--zephyr/dts/bindings/temp/temp-3v3-30k9-47k-4050b.yaml6
-rw-r--r--zephyr/dts/bindings/temp/temp-3v3-51k1-47k-4050b.yaml6
-rw-r--r--zephyr/dts/bindings/temp/temp_sensor.yaml11
-rw-r--r--zephyr/dts/bindings/temp/thermistor.yaml26
-rw-r--r--zephyr/projects/volteer/boards/arm/volteer/volteer.dts4
-rw-r--r--zephyr/shim/include/temp_sensor/temp_sensor.h12
-rw-r--r--zephyr/shim/src/temp_sensors.c37
-rw-r--r--zephyr/shim/src/thermal.c2
10 files changed, 79 insertions, 37 deletions
diff --git a/zephyr/dts/bindings/temp/temp-3v0-22k6-47k-4050b.yaml b/zephyr/dts/bindings/temp/temp-3v0-22k6-47k-4050b.yaml
index b2a3c4c88a..09390a3656 100644
--- a/zephyr/dts/bindings/temp/temp-3v0-22k6-47k-4050b.yaml
+++ b/zephyr/dts/bindings/temp/temp-3v0-22k6-47k-4050b.yaml
@@ -7,3 +7,9 @@ description: Thermistor 3v0-22k6-47k-4050b
compatible: "temp-3v0-22k6-47k-4050b"
include: [temp_sensor.yaml, thermistor.yaml]
+
+properties:
+ get-temp-func:
+ enum:
+ - get_temp_3v0_22k6_47k_4050b
+ default: get_temp_3v0_22k6_47k_4050b
diff --git a/zephyr/dts/bindings/temp/temp-3v3-13k7-47k-4050b.yaml b/zephyr/dts/bindings/temp/temp-3v3-13k7-47k-4050b.yaml
index 7928fcd54a..76b6dfaa30 100644
--- a/zephyr/dts/bindings/temp/temp-3v3-13k7-47k-4050b.yaml
+++ b/zephyr/dts/bindings/temp/temp-3v3-13k7-47k-4050b.yaml
@@ -7,3 +7,9 @@ description: Thermistor 3v3-13k7-47k-4050b
compatible: "temp-3v3-13k7-47k-4050b"
include: [temp_sensor.yaml, thermistor.yaml]
+
+properties:
+ get-temp-func:
+ enum:
+ - get_temp_3v3_13k7_47k_4050b
+ default: get_temp_3v3_13k7_47k_4050b
diff --git a/zephyr/dts/bindings/temp/temp-3v3-30k9-47k-4050b.yaml b/zephyr/dts/bindings/temp/temp-3v3-30k9-47k-4050b.yaml
index d8745e7abd..4d45a0eb51 100644
--- a/zephyr/dts/bindings/temp/temp-3v3-30k9-47k-4050b.yaml
+++ b/zephyr/dts/bindings/temp/temp-3v3-30k9-47k-4050b.yaml
@@ -7,3 +7,9 @@ description: Thermistor 3v3-30k9-47k-4050b
compatible: "temp-3v3-30k9-47k-4050b"
include: [temp_sensor.yaml, thermistor.yaml]
+
+properties:
+ get-temp-func:
+ enum:
+ - get_temp_3v3_30k9_47k_4050b
+ default: get_temp_3v3_30k9_47k_4050b
diff --git a/zephyr/dts/bindings/temp/temp-3v3-51k1-47k-4050b.yaml b/zephyr/dts/bindings/temp/temp-3v3-51k1-47k-4050b.yaml
index da53437c01..0b8343f909 100644
--- a/zephyr/dts/bindings/temp/temp-3v3-51k1-47k-4050b.yaml
+++ b/zephyr/dts/bindings/temp/temp-3v3-51k1-47k-4050b.yaml
@@ -7,3 +7,9 @@ description: Thermistor 3v3-51k1-47k-4050b
compatible: "temp-3v3-51k1-47k-4050b"
include: [temp_sensor.yaml, thermistor.yaml]
+
+properties:
+ get-temp-func:
+ enum:
+ - get_temp_3v3_51k1_47k_4050b
+ default: get_temp_3v3_51k1_47k_4050b
diff --git a/zephyr/dts/bindings/temp/temp_sensor.yaml b/zephyr/dts/bindings/temp/temp_sensor.yaml
index b96e9c3262..753cfab967 100644
--- a/zephyr/dts/bindings/temp/temp_sensor.yaml
+++ b/zephyr/dts/bindings/temp/temp_sensor.yaml
@@ -14,6 +14,17 @@ properties:
Human-readable string describing the device (used as
device_get_binding() argument)
+ enum-name:
+ type: string
+ required: true
+ description:
+ Enum values used in the source code to refer to the temperature sensors
+ enum:
+ - TEMP_SENSOR_CHARGER
+ - TEMP_SENSOR_DDR_SOC
+ - TEMP_SENSOR_FAN
+ - TEMP_SENSOR_PP3300_REGULATOR
+
temp_fan_off:
required: false
type: int
diff --git a/zephyr/dts/bindings/temp/thermistor.yaml b/zephyr/dts/bindings/temp/thermistor.yaml
index 80503ce4df..66a07de945 100644
--- a/zephyr/dts/bindings/temp/thermistor.yaml
+++ b/zephyr/dts/bindings/temp/thermistor.yaml
@@ -5,7 +5,25 @@
# Common properties for thermistors
properties:
- adc:
- required: true
- type: phandle
- description: named-adc child node connected to the thermistor
+ adc:
+ required: true
+ type: phandle
+ description: named-adc child node connected to the thermistor
+
+ get-temp-func:
+ type: string
+ required: false
+ description: >
+ Name of the board-provided function which reads the temperature. If you
+ have different values and need to add a new function, you can add that
+ here.
+
+ The name is get_temp_<v>_<rs>_<rn>_<b>:
+
+ v: voltage of resistor-divider circuit
+ rs: value of the resistor that is in series with the thermistor
+ rn: nominal resistance of thermistor at 25C
+ b: B value for temperature range 25C to 100C
+
+ See https://www.electronics-tutorials.ws/io/thermistors.html for more
+ information.
diff --git a/zephyr/projects/volteer/boards/arm/volteer/volteer.dts b/zephyr/projects/volteer/boards/arm/volteer/volteer.dts
index f2b3fbb940..1d1e694f0d 100644
--- a/zephyr/projects/volteer/boards/arm/volteer/volteer.dts
+++ b/zephyr/projects/volteer/boards/arm/volteer/volteer.dts
@@ -99,6 +99,7 @@
charger {
compatible = "temp-3v3-30k9-47k-4050b";
label = "TEMP_SENSOR_CHARGER";
+ enum-name = "TEMP_SENSOR_CHARGER";
temp_fan_off = <40>;
temp_fan_max = <55>;
temp_host_high = <75>;
@@ -109,6 +110,7 @@
pp3300_regulator {
compatible = "temp-3v3-30k9-47k-4050b";
label = "TEMP_SENSOR_PP3300_REGULATOR";
+ enum-name = "TEMP_SENSOR_PP3300_REGULATOR";
temp_fan_off = <40>;
temp_fan_max = <55>;
temp_host_high = <75>;
@@ -119,6 +121,7 @@
ddr_soc {
compatible = "temp-3v3-30k9-47k-4050b";
label = "TEMP_SENSOR_DDR_SOC";
+ enum-name = "TEMP_SENSOR_DDR_SOC";
temp_fan_off = <35>;
temp_fan_max = <50>;
temp_host_high = <70>;
@@ -129,6 +132,7 @@
fan {
compatible = "temp-3v3-30k9-47k-4050b";
label = "TEMP_SENSOR_FAN";
+ enum-name = "TEMP_SENSOR_FAN";
temp_fan_off = <35>;
temp_fan_max = <50>;
temp_host_high = <70>;
diff --git a/zephyr/shim/include/temp_sensor/temp_sensor.h b/zephyr/shim/include/temp_sensor/temp_sensor.h
index 020d622ae1..3107b7b638 100644
--- a/zephyr/shim/include/temp_sensor/temp_sensor.h
+++ b/zephyr/shim/include/temp_sensor/temp_sensor.h
@@ -9,13 +9,21 @@
#include <devicetree.h>
#ifdef CONFIG_PLATFORM_EC_TEMP_SENSOR
-#define NODE_ID_AND_COMMA(node_id) node_id,
+
+#define ZSHIM_TEMP_SENSOR_ID(node_id) \
+ DT_ENUM_UPPER_TOKEN(node_id, enum_name)
+#define TEMP_SENSOR_ID_WITH_COMMA(node_id) ZSHIM_TEMP_SENSOR_ID(node_id),
+
enum temp_sensor_id {
#if DT_NODE_EXISTS(DT_PATH(named_temp_sensors))
- DT_FOREACH_CHILD(DT_PATH(named_temp_sensors), NODE_ID_AND_COMMA)
+ DT_FOREACH_CHILD(DT_PATH(named_temp_sensors),
+ TEMP_SENSOR_ID_WITH_COMMA)
#endif /* named_temp_sensors */
TEMP_SENSOR_COUNT
};
+
+#undef TEMP_SENSOR_ID_WITH_COMMA
+
#endif /* CONFIG_PLATFORM_EC_TEMP_SENSOR */
#endif /* ZEPHYR_SHIM_INCLUDE_TEMP_SENSOR_TEMP_SENSOR_H_ */
diff --git a/zephyr/shim/src/temp_sensors.c b/zephyr/shim/src/temp_sensors.c
index c43dfd8082..dfe259f126 100644
--- a/zephyr/shim/src/temp_sensors.c
+++ b/zephyr/shim/src/temp_sensors.c
@@ -8,39 +8,16 @@
#include "adc.h"
#include "../driver/temp_sensor/thermistor.h"
-#define TEMP_THERMISTOR(node_id, fn) \
- [node_id] = { \
- .name = DT_LABEL(node_id), \
- .read = fn, \
- .idx = DT_PHANDLE(node_id, adc), \
- .type = TEMP_SENSOR_TYPE_BOARD, \
+#define TEMP_THERMISTOR(node_id) \
+ [ZSHIM_TEMP_SENSOR_ID(node_id)] = { \
+ .name = DT_LABEL(node_id), \
+ .read = DT_ENUM_TOKEN(node_id, get_temp_func), \
+ .idx = DT_PHANDLE(node_id, adc), \
+ .type = TEMP_SENSOR_TYPE_BOARD, \
},
-#define TEMP_3V3_30K9_47K_4050B(node_id) \
- TEMP_THERMISTOR(node_id, get_temp_3v3_30k9_47k_4050b)
-
-#define TEMP_3V0_22K6_47K_4050B(node_id) \
- TEMP_THERMISTOR(node_id, get_temp_3v0_22k6_47k_4050b)
-
-#define TEMP_3V3_51K1_47K_4050B(node_id) \
- TEMP_THERMISTOR(node_id, get_temp_3v3_51k1_47k_4050b)
-
-#define TEMP_3V3_13K7_47K_4050B(node_id) \
- TEMP_THERMISTOR(node_id, get_temp_3v3_13k7_47k_4050b)
-
-#define TEMP_DEVICE_INST(inst, compat, expr) expr(DT_INST(inst, compat))
-
-#define TEMP_DEVICE(compat, expr) \
- UTIL_LISTIFY(DT_NUM_INST_STATUS_OKAY(compat), TEMP_DEVICE_INST, \
- compat, expr)
-
#if DT_NODE_EXISTS(DT_PATH(named_temp_sensors))
-
const struct temp_sensor_t temp_sensors[] = {
- TEMP_DEVICE(temp_3v3_13k7_47k_4050b, TEMP_3V3_13K7_47K_4050B)
- TEMP_DEVICE(temp_3v3_51k1_47k_4050b, TEMP_3V3_51K1_47K_4050B)
- TEMP_DEVICE(temp_3v0_22k6_47k_4050b, TEMP_3V0_22K6_47K_4050B)
- TEMP_DEVICE(temp_3v3_30k9_47k_4050b, TEMP_3V3_30K9_47K_4050B)
+ DT_FOREACH_CHILD(DT_PATH(named_temp_sensors), TEMP_THERMISTOR)
};
-
#endif /* named_temp_sensors */
diff --git a/zephyr/shim/src/thermal.c b/zephyr/shim/src/thermal.c
index 2dd754b663..ecac9242f8 100644
--- a/zephyr/shim/src/thermal.c
+++ b/zephyr/shim/src/thermal.c
@@ -8,7 +8,7 @@
#include "ec_commands.h"
#define THERMAL_CONFIG(node_id) \
- [node_id] = { \
+ [ZSHIM_TEMP_SENSOR_ID(node_id)] = { \
.temp_host = { \
[EC_TEMP_THRESH_WARN] = \
C_TO_K(DT_PROP(node_id, temp_host_warn)), \