2019-11-01 00:07:31 +05:30
# SPDX-License-Identifier: (GPL-2.0 OR MIT)
# Copyright 2019 Linaro Ltd.
%YAML 1.2
---
$id : http://devicetree.org/schemas/thermal/qcom-tsens.yaml#
$schema : http://devicetree.org/meta-schemas/core.yaml#
title : QCOM SoC Temperature Sensor (TSENS)
maintainers :
2020-06-30 11:52:32 +05:30
- Amit Kucheria <amitk@kernel.org>
2019-11-01 00:07:31 +05:30
description : |
QCOM SoCs have TSENS IP to allow temperature measurement. There are currently
three distinct major versions of the IP that is supported by a single driver.
The IP versions are named v0.1, v1 and v2 in the driver, where v0.1 captures
everything before v1 when there was no versioning information.
properties :
compatible :
oneOf :
2021-04-20 20:33:43 +02:00
- description : msm9860 TSENS based
items :
- enum :
- qcom,ipq8064-tsens
2019-11-01 00:07:31 +05:30
- description : v0.1 of TSENS
items :
- enum :
2021-03-19 23:08:01 +01:00
- qcom,mdm9607-tsens
2019-11-01 00:07:31 +05:30
- qcom,msm8916-tsens
2020-06-29 22:49:25 +08:00
- qcom,msm8939-tsens
2019-11-01 00:07:31 +05:30
- qcom,msm8974-tsens
- const : qcom,tsens-v0_1
- description : v1 of TSENS
items :
- enum :
2019-10-05 12:41:32 +02:00
- qcom,msm8976-tsens
2019-11-01 00:07:31 +05:30
- qcom,qcs404-tsens
- const : qcom,tsens-v1
- description : v2 of TSENS
items :
- enum :
- qcom,msm8996-tsens
- qcom,msm8998-tsens
2020-01-06 18:59:29 +05:30
- qcom,sc7180-tsens
2019-11-01 00:07:31 +05:30
- qcom,sdm845-tsens
2020-06-09 12:14:54 +05:30
- qcom,sm8150-tsens
- qcom,sm8250-tsens
2021-03-24 13:43:08 +01:00
- qcom,sm8350-tsens
2019-11-01 00:07:31 +05:30
- const : qcom,tsens-v2
reg :
items :
- description : TM registers
- description : SROT registers
2020-03-24 12:05:13 -06:00
interrupts :
minItems : 1
items :
- description : Combined interrupt if upper or lower threshold crossed
- description : Interrupt if critical threshold crossed
interrupt-names :
minItems : 1
items :
- const : uplow
- const : critical
2019-11-01 00:07:31 +05:30
nvmem-cells :
minItems : 1
maxItems : 2
description :
Reference to an nvmem node for the calibration data
2020-03-24 12:05:12 -06:00
nvmem-cell-names :
2019-11-01 00:07:31 +05:30
minItems : 1
maxItems : 2
items :
2020-03-24 12:05:12 -06:00
- const : calib
2021-04-20 20:33:43 +02:00
- enum :
- calib_backup
- calib_sel
2019-11-01 00:07:31 +05:30
"#qcom,sensors" :
description :
Number of sensors enabled on this platform
2020-04-15 19:55:49 -05:00
$ref : /schemas/types.yaml#/definitions/uint32
minimum : 1
maximum : 16
2019-11-01 00:07:31 +05:30
"#thermal-sensor-cells" :
const : 1
description :
Number of cells required to uniquely identify the thermal sensors. Since
we have multiple sensors this is set to 1
2021-04-20 20:33:43 +02:00
required :
- compatible
- interrupts
- interrupt-names
- "#thermal-sensor-cells"
- "#qcom,sensors"
2019-11-01 00:07:31 +05:30
allOf :
- if :
properties :
compatible :
contains :
enum :
2021-04-20 20:33:43 +02:00
- qcom,ipq8064-tsens
2021-03-19 23:08:01 +01:00
- qcom,mdm9607-tsens
2019-11-01 00:07:31 +05:30
- qcom,msm8916-tsens
- qcom,msm8974-tsens
2019-10-05 12:41:32 +02:00
- qcom,msm8976-tsens
2019-11-01 00:07:31 +05:30
- qcom,qcs404-tsens
- qcom,tsens-v0_1
- qcom,tsens-v1
then :
properties :
interrupts :
2020-03-24 12:05:13 -06:00
maxItems : 1
2019-11-01 00:07:31 +05:30
interrupt-names :
2020-03-24 12:05:13 -06:00
maxItems : 1
2019-11-01 00:07:31 +05:30
else :
properties :
interrupts :
2020-03-24 12:05:13 -06:00
minItems : 2
2019-11-01 00:07:31 +05:30
interrupt-names :
2020-03-24 12:05:13 -06:00
minItems : 2
2019-11-01 00:07:31 +05:30
2021-04-20 20:33:43 +02:00
- if :
properties :
compatible :
contains :
enum :
- qcom,tsens-v0_1
- qcom,tsens-v1
- qcom,tsens-v2
then :
required :
- reg
2019-11-01 00:07:31 +05:30
2020-03-24 12:05:13 -06:00
additionalProperties : false
2019-11-01 00:07:31 +05:30
examples :
2021-04-20 20:33:43 +02:00
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
// Example msm9860 based SoC (ipq8064) :
gcc : clock-controller {
/* ... */
tsens : thermal-sensor {
compatible = "qcom,ipq8064-tsens";
nvmem-cells = <&tsens_calib>, <&tsens_calib_backup>;
nvmem-cell-names = "calib", "calib_backup";
interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "uplow";
#qcom,sensors = <11>;
#thermal-sensor-cells = <1>;
};
};
2019-11-01 00:07:31 +05:30
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
// Example 1 (legacy : for pre v1 IP) :
tsens1 : thermal-sensor@900000 {
compatible = "qcom,msm8916-tsens", "qcom,tsens-v0_1";
reg = <0x4a9000 0x1000>, /* TM */
<0x4a8000 0x1000>; /* SROT */
nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
2020-03-24 12:05:12 -06:00
nvmem-cell-names = "calib", "calib_sel";
2019-11-01 00:07:31 +05:30
interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "uplow";
#qcom,sensors = <5>;
#thermal-sensor-cells = <1>;
};
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
// Example 2 (for any platform containing v1 of the TSENS IP) :
tsens2 : thermal-sensor@4a9000 {
compatible = "qcom,qcs404-tsens", "qcom,tsens-v1";
reg = <0x004a9000 0x1000>, /* TM */
<0x004a8000 0x1000>; /* SROT */
nvmem-cells = <&tsens_caldata>;
nvmem-cell-names = "calib";
interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "uplow";
#qcom,sensors = <10>;
#thermal-sensor-cells = <1>;
};
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
// Example 3 (for any platform containing v2 of the TSENS IP) :
tsens3 : thermal-sensor@c263000 {
compatible = "qcom,sdm845-tsens", "qcom,tsens-v2";
reg = <0xc263000 0x1ff>,
<0xc222000 0x1ff>;
interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 508 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "uplow", "critical";
#qcom,sensors = <13>;
#thermal-sensor-cells = <1>;
};
...