Commit a877e768 authored by Amit Kucheria's avatar Amit Kucheria Committed by Daniel Lezcano
Browse files

dt-bindings: thermal: tsens: Convert over to a yaml schema



Older IP only supports the 'uplow' interrupt, but newer IP supports
'uplow' and 'critical' interrupts. Document interrupt support in the
tsens driver by converting over to a YAML schema.

Suggested-by: default avatarStephen Boyd <swboyd@chromium.org>
Signed-off-by: default avatarAmit Kucheria <amit.kucheria@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/d519be4c7198f47c3661f7326d1a724b97dc4973.1572526427.git.amit.kucheria@linaro.org
parent 7c938f48
Loading
Loading
Loading
Loading
+0 −55
Original line number Diff line number Diff line
* QCOM SoC Temperature Sensor (TSENS)

Required properties:
- compatible:
  Must be one of the following:
    - "qcom,msm8916-tsens" (MSM8916)
    - "qcom,msm8974-tsens" (MSM8974)
    - "qcom,msm8996-tsens" (MSM8996)
    - "qcom,qcs404-tsens", "qcom,tsens-v1" (QCS404)
    - "qcom,msm8998-tsens", "qcom,tsens-v2" (MSM8998)
    - "qcom,sdm845-tsens", "qcom,tsens-v2" (SDM845)
  The generic "qcom,tsens-v2" property must be used as a fallback for any SoC
  with version 2 of the TSENS IP. MSM8996 is the only exception because the
  generic property did not exist when support was added.
  Similarly, the generic "qcom,tsens-v1" property must be used as a fallback for
  any SoC with version 1 of the TSENS IP.

- reg: Address range of the thermal registers.
  New platforms containing v2.x.y of the TSENS IP must specify the SROT and TM
  register spaces separately, with order being TM before SROT.
  See Example 2, below.

- #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description.
- #qcom,sensors: Number of sensors in tsens block
- Refer to Documentation/devicetree/bindings/nvmem/nvmem.txt to know how to specify
nvmem cells

Example 1 (legacy support before a fallback tsens-v2 property was introduced):
tsens: thermal-sensor@900000 {
		compatible = "qcom,msm8916-tsens";
		reg = <0x4a8000 0x2000>;
		nvmem-cells = <&tsens_caldata>, <&tsens_calsel>;
		nvmem-cell-names = "caldata", "calsel";
		#thermal-sensor-cells = <1>;
	};

Example 2 (for any platform containing v2 of the TSENS IP):
tsens0: thermal-sensor@c263000 {
		compatible = "qcom,sdm845-tsens", "qcom,tsens-v2";
		reg = <0xc263000 0x1ff>, /* TM */
			<0xc222000 0x1ff>; /* SROT */
		#qcom,sensors = <13>;
		#thermal-sensor-cells = <1>;
	};

Example 3 (for any platform containing v1 of the TSENS IP):
tsens: 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";
		#qcom,sensors = <10>;
		#thermal-sensor-cells = <1>;
	};
+168 −0
Original line number Diff line number Diff line
# 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:
  - Amit Kucheria <amit.kucheria@linaro.org>

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:
      - description: v0.1 of TSENS
        items:
          - enum:
              - qcom,msm8916-tsens
              - qcom,msm8974-tsens
          - const: qcom,tsens-v0_1

      - description: v1 of TSENS
        items:
          - enum:
              - qcom,qcs404-tsens
          - const: qcom,tsens-v1

      - description: v2 of TSENS
        items:
          - enum:
              - qcom,msm8996-tsens
              - qcom,msm8998-tsens
              - qcom,sdm845-tsens
          - const: qcom,tsens-v2

  reg:
    maxItems: 2
    items:
      - description: TM registers
      - description: SROT registers

  nvmem-cells:
    minItems: 1
    maxItems: 2
    description:
      Reference to an nvmem node for the calibration data

  nvmem-cells-names:
    minItems: 1
    maxItems: 2
    items:
      - enum:
        - caldata
        - calsel

  "#qcom,sensors":
    allOf:
      - $ref: /schemas/types.yaml#/definitions/uint32
      - minimum: 1
      - maximum: 16
    description:
      Number of sensors enabled on this platform

  "#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

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8916-tsens
              - qcom,msm8974-tsens
              - qcom,qcs404-tsens
              - qcom,tsens-v0_1
              - qcom,tsens-v1
    then:
      properties:
        interrupts:
          items:
            - description: Combined interrupt if upper or lower threshold crossed
        interrupt-names:
          items:
            - const: uplow

    else:
      properties:
        interrupts:
          items:
            - description: Combined interrupt if upper or lower threshold crossed
            - description: Interrupt if critical threshold crossed
        interrupt-names:
          items:
            - const: uplow
            - const: critical

required:
  - compatible
  - reg
  - "#qcom,sensors"
  - interrupts
  - interrupt-names
  - "#thermal-sensor-cells"

examples:
  - |
    #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>;
           nvmem-cell-names = "caldata", "calsel";

           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>;
    };
...
+1 −0
Original line number Diff line number Diff line
@@ -13516,6 +13516,7 @@ L: linux-pm@vger.kernel.org
L:	linux-arm-msm@vger.kernel.org
S:	Maintained
F:	drivers/thermal/qcom/
F:	Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
QUALCOMM VENUS VIDEO ACCELERATOR DRIVER
M:	Stanimir Varbanov <stanimir.varbanov@linaro.org>