409 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0 OR MIT)2# Copyright 2019 Linaro Ltd.3%YAML 1.24---5$id: http://devicetree.org/schemas/thermal/qcom-tsens.yaml#6$schema: http://devicetree.org/meta-schemas/core.yaml#7 8title: QCOM SoC Temperature Sensor (TSENS)9 10maintainers:11 - Amit Kucheria <amitk@kernel.org>12 13description: |14 QCOM SoCs have TSENS IP to allow temperature measurement. There are currently15 three distinct major versions of the IP that is supported by a single driver.16 The IP versions are named v0.1, v1 and v2 in the driver, where v0.1 captures17 everything before v1 when there was no versioning information.18 19properties:20 compatible:21 oneOf:22 - description: msm8960 TSENS based23 items:24 - enum:25 - qcom,ipq8064-tsens26 - qcom,msm8960-tsens27 28 - description: v0.1 of TSENS29 items:30 - enum:31 - qcom,mdm9607-tsens32 - qcom,msm8226-tsens33 - qcom,msm8909-tsens34 - qcom,msm8916-tsens35 - qcom,msm8939-tsens36 - qcom,msm8974-tsens37 - const: qcom,tsens-v0_138 39 - description: v1 of TSENS40 items:41 - enum:42 - qcom,msm8956-tsens43 - qcom,msm8976-tsens44 - qcom,qcs404-tsens45 - const: qcom,tsens-v146 47 - description: v2 of TSENS48 items:49 - enum:50 - qcom,msm8953-tsens51 - qcom,msm8996-tsens52 - qcom,msm8998-tsens53 - qcom,qcm2290-tsens54 - qcom,sa8255p-tsens55 - qcom,sa8775p-tsens56 - qcom,sc7180-tsens57 - qcom,sc7280-tsens58 - qcom,sc8180x-tsens59 - qcom,sc8280xp-tsens60 - qcom,sdm630-tsens61 - qcom,sdm845-tsens62 - qcom,sm6115-tsens63 - qcom,sm6350-tsens64 - qcom,sm6375-tsens65 - qcom,sm8150-tsens66 - qcom,sm8250-tsens67 - qcom,sm8350-tsens68 - qcom,sm8450-tsens69 - qcom,sm8550-tsens70 - qcom,sm8650-tsens71 - qcom,x1e80100-tsens72 - const: qcom,tsens-v273 74 - description: v2 of TSENS with combined interrupt75 enum:76 - qcom,ipq8074-tsens77 78 - description: v2 of TSENS with combined interrupt79 items:80 - enum:81 - qcom,ipq9574-tsens82 - const: qcom,ipq8074-tsens83 84 reg:85 items:86 - description: TM registers87 - description: SROT registers88 89 interrupts:90 minItems: 191 maxItems: 292 93 interrupt-names:94 minItems: 195 maxItems: 296 97 nvmem-cells:98 oneOf:99 - minItems: 1100 maxItems: 2101 description:102 Reference to an nvmem node for the calibration data103 - minItems: 5104 maxItems: 35105 description: |106 Reference to nvmem cells for the calibration mode, two calibration107 bases and two cells per each sensor108 # special case for msm8974 / apq8084109 - maxItems: 51110 description: |111 Reference to nvmem cells for the calibration mode, two calibration112 bases and two cells per each sensor, main and backup copies, plus use_backup cell113 114 nvmem-cell-names:115 oneOf:116 - minItems: 1117 items:118 - const: calib119 - enum:120 - calib_backup121 - calib_sel122 - minItems: 5123 items:124 - const: mode125 - const: base1126 - const: base2127 - pattern: '^s[0-9]+_p1$'128 - pattern: '^s[0-9]+_p2$'129 - pattern: '^s[0-9]+_p1$'130 - pattern: '^s[0-9]+_p2$'131 - pattern: '^s[0-9]+_p1$'132 - pattern: '^s[0-9]+_p2$'133 - pattern: '^s[0-9]+_p1$'134 - pattern: '^s[0-9]+_p2$'135 - pattern: '^s[0-9]+_p1$'136 - pattern: '^s[0-9]+_p2$'137 - pattern: '^s[0-9]+_p1$'138 - pattern: '^s[0-9]+_p2$'139 - pattern: '^s[0-9]+_p1$'140 - pattern: '^s[0-9]+_p2$'141 - pattern: '^s[0-9]+_p1$'142 - pattern: '^s[0-9]+_p2$'143 - pattern: '^s[0-9]+_p1$'144 - pattern: '^s[0-9]+_p2$'145 - pattern: '^s[0-9]+_p1$'146 - pattern: '^s[0-9]+_p2$'147 - pattern: '^s[0-9]+_p1$'148 - pattern: '^s[0-9]+_p2$'149 - pattern: '^s[0-9]+_p1$'150 - pattern: '^s[0-9]+_p2$'151 - pattern: '^s[0-9]+_p1$'152 - pattern: '^s[0-9]+_p2$'153 - pattern: '^s[0-9]+_p1$'154 - pattern: '^s[0-9]+_p2$'155 - pattern: '^s[0-9]+_p1$'156 - pattern: '^s[0-9]+_p2$'157 - pattern: '^s[0-9]+_p1$'158 - pattern: '^s[0-9]+_p2$'159 # special case for msm8974 / apq8084160 - items:161 - const: mode162 - const: base1163 - const: base2164 - const: use_backup165 - const: mode_backup166 - const: base1_backup167 - const: base2_backup168 - const: s0_p1169 - const: s0_p2170 - const: s1_p1171 - const: s1_p2172 - const: s2_p1173 - const: s2_p2174 - const: s3_p1175 - const: s3_p2176 - const: s4_p1177 - const: s4_p2178 - const: s5_p1179 - const: s5_p2180 - const: s6_p1181 - const: s6_p2182 - const: s7_p1183 - const: s7_p2184 - const: s8_p1185 - const: s8_p2186 - const: s9_p1187 - const: s9_p2188 - const: s10_p1189 - const: s10_p2190 - const: s0_p1_backup191 - const: s0_p2_backup192 - const: s1_p1_backup193 - const: s1_p2_backup194 - const: s2_p1_backup195 - const: s2_p2_backup196 - const: s3_p1_backup197 - const: s3_p2_backup198 - const: s4_p1_backup199 - const: s4_p2_backup200 - const: s5_p1_backup201 - const: s5_p2_backup202 - const: s6_p1_backup203 - const: s6_p2_backup204 - const: s7_p1_backup205 - const: s7_p2_backup206 - const: s8_p1_backup207 - const: s8_p2_backup208 - const: s9_p1_backup209 - const: s9_p2_backup210 - const: s10_p1_backup211 - const: s10_p2_backup212 213 "#qcom,sensors":214 description:215 Number of sensors enabled on this platform216 $ref: /schemas/types.yaml#/definitions/uint32217 minimum: 1218 maximum: 16219 220 "#thermal-sensor-cells":221 const: 1222 223required:224 - compatible225 - interrupts226 - interrupt-names227 - "#qcom,sensors"228 229allOf:230 - $ref: thermal-sensor.yaml#231 232 - if:233 properties:234 compatible:235 contains:236 enum:237 - qcom,ipq8064-tsens238 - qcom,msm8960-tsens239 - qcom,tsens-v0_1240 - qcom,tsens-v1241 then:242 properties:243 interrupts:244 items:245 - description: Combined interrupt if upper or lower threshold crossed246 interrupt-names:247 items:248 - const: uplow249 250 - if:251 properties:252 compatible:253 contains:254 const: qcom,tsens-v2255 then:256 properties:257 interrupts:258 items:259 - description: Combined interrupt if upper or lower threshold crossed260 - description: Interrupt if critical threshold crossed261 interrupt-names:262 items:263 - const: uplow264 - const: critical265 266 - if:267 properties:268 compatible:269 contains:270 enum:271 - qcom,ipq8074-tsens272 then:273 properties:274 interrupts:275 items:276 - description: Combined interrupt if upper, lower or critical thresholds crossed277 interrupt-names:278 items:279 - const: combined280 281 - if:282 properties:283 compatible:284 contains:285 enum:286 - qcom,ipq8074-tsens287 - qcom,tsens-v0_1288 - qcom,tsens-v1289 - qcom,tsens-v2290 291 then:292 required:293 - reg294 295unevaluatedProperties: false296 297examples:298 - |299 #include <dt-bindings/interrupt-controller/arm-gic.h>300 thermal-sensor {301 compatible = "qcom,ipq8064-tsens";302 303 nvmem-cells = <&tsens_calib>, <&tsens_calib_backup>;304 nvmem-cell-names = "calib", "calib_backup";305 interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;306 interrupt-names = "uplow";307 308 #qcom,sensors = <11>;309 #thermal-sensor-cells = <1>;310 };311 312 - |313 #include <dt-bindings/interrupt-controller/arm-gic.h>314 // Example 1 (new calibration data: for pre v1 IP):315 thermal-sensor@4a9000 {316 compatible = "qcom,msm8916-tsens", "qcom,tsens-v0_1";317 reg = <0x4a9000 0x1000>, /* TM */318 <0x4a8000 0x1000>; /* SROT */319 320 nvmem-cells = <&tsens_mode>,321 <&tsens_base1>, <&tsens_base2>,322 <&tsens_s0_p1>, <&tsens_s0_p2>,323 <&tsens_s1_p1>, <&tsens_s1_p2>,324 <&tsens_s2_p1>, <&tsens_s2_p2>,325 <&tsens_s4_p1>, <&tsens_s4_p2>,326 <&tsens_s5_p1>, <&tsens_s5_p2>;327 nvmem-cell-names = "mode",328 "base1", "base2",329 "s0_p1", "s0_p2",330 "s1_p1", "s1_p2",331 "s2_p1", "s2_p2",332 "s4_p1", "s4_p2",333 "s5_p1", "s5_p2";334 335 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;336 interrupt-names = "uplow";337 338 #qcom,sensors = <5>;339 #thermal-sensor-cells = <1>;340 };341 342 - |343 #include <dt-bindings/interrupt-controller/arm-gic.h>344 // Example 1 (legacy: for pre v1 IP):345 tsens1: thermal-sensor@4a9000 {346 compatible = "qcom,msm8916-tsens", "qcom,tsens-v0_1";347 reg = <0x4a9000 0x1000>, /* TM */348 <0x4a8000 0x1000>; /* SROT */349 350 nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;351 nvmem-cell-names = "calib", "calib_sel";352 353 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;354 interrupt-names = "uplow";355 356 #qcom,sensors = <5>;357 #thermal-sensor-cells = <1>;358 };359 360 - |361 #include <dt-bindings/interrupt-controller/arm-gic.h>362 // Example 2 (for any platform containing v1 of the TSENS IP):363 tsens2: thermal-sensor@4a9000 {364 compatible = "qcom,qcs404-tsens", "qcom,tsens-v1";365 reg = <0x004a9000 0x1000>, /* TM */366 <0x004a8000 0x1000>; /* SROT */367 368 nvmem-cells = <&tsens_caldata>;369 nvmem-cell-names = "calib";370 371 interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>;372 interrupt-names = "uplow";373 374 #qcom,sensors = <10>;375 #thermal-sensor-cells = <1>;376 };377 378 - |379 #include <dt-bindings/interrupt-controller/arm-gic.h>380 // Example 3 (for any platform containing v2 of the TSENS IP):381 tsens3: thermal-sensor@c263000 {382 compatible = "qcom,sdm845-tsens", "qcom,tsens-v2";383 reg = <0xc263000 0x1ff>,384 <0xc222000 0x1ff>;385 386 interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>,387 <GIC_SPI 508 IRQ_TYPE_LEVEL_HIGH>;388 interrupt-names = "uplow", "critical";389 390 #qcom,sensors = <13>;391 #thermal-sensor-cells = <1>;392 };393 394 - |395 #include <dt-bindings/interrupt-controller/arm-gic.h>396 // Example 4 (for any IPQ8074 based SoC-s):397 tsens4: thermal-sensor@4a9000 {398 compatible = "qcom,ipq8074-tsens";399 reg = <0x4a9000 0x1000>,400 <0x4a8000 0x1000>;401 402 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;403 interrupt-names = "combined";404 405 #qcom,sensors = <16>;406 #thermal-sensor-cells = <1>;407 };408...409