11c46589dSDavid Heidelberg# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
21c46589dSDavid Heidelberg%YAML 1.2
31c46589dSDavid Heidelberg---
41c46589dSDavid Heidelberg$id: http://devicetree.org/schemas/firmware/qcom,scm.yaml#
51c46589dSDavid Heidelberg$schema: http://devicetree.org/meta-schemas/core.yaml#
61c46589dSDavid Heidelberg
71c46589dSDavid Heidelbergtitle: QCOM Secure Channel Manager (SCM)
81c46589dSDavid Heidelberg
91c46589dSDavid Heidelbergdescription: |
101c46589dSDavid Heidelberg  Qualcomm processors include an interface to communicate to the secure firmware.
111c46589dSDavid Heidelberg  This interface allows for clients to request different types of actions.
121c46589dSDavid Heidelberg  These can include CPU power up/down, HDCP requests, loading of firmware,
131c46589dSDavid Heidelberg  and other assorted actions.
141c46589dSDavid Heidelberg
151c46589dSDavid Heidelbergmaintainers:
161c46589dSDavid Heidelberg  - Bjorn Andersson <bjorn.andersson@linaro.org>
171c46589dSDavid Heidelberg  - Robert Marko <robimarko@gmail.com>
181c46589dSDavid Heidelberg  - Guru Das Srinagesh <quic_gurus@quicinc.com>
191c46589dSDavid Heidelberg
201c46589dSDavid Heidelbergproperties:
211c46589dSDavid Heidelberg  compatible:
221c46589dSDavid Heidelberg    items:
231c46589dSDavid Heidelberg      - enum:
241c46589dSDavid Heidelberg          - qcom,scm-apq8064
251c46589dSDavid Heidelberg          - qcom,scm-apq8084
261c46589dSDavid Heidelberg          - qcom,scm-ipq4019
271c46589dSDavid Heidelberg          - qcom,scm-ipq6018
281c46589dSDavid Heidelberg          - qcom,scm-ipq806x
291c46589dSDavid Heidelberg          - qcom,scm-ipq8074
30*81ac3914SPoovendhan Selvaraj          - qcom,scm-ipq9574
311c46589dSDavid Heidelberg          - qcom,scm-mdm9607
321c46589dSDavid Heidelberg          - qcom,scm-msm8226
331c46589dSDavid Heidelberg          - qcom,scm-msm8660
341c46589dSDavid Heidelberg          - qcom,scm-msm8916
351c46589dSDavid Heidelberg          - qcom,scm-msm8953
361c46589dSDavid Heidelberg          - qcom,scm-msm8960
371c46589dSDavid Heidelberg          - qcom,scm-msm8974
381c46589dSDavid Heidelberg          - qcom,scm-msm8976
391c46589dSDavid Heidelberg          - qcom,scm-msm8994
401c46589dSDavid Heidelberg          - qcom,scm-msm8996
411c46589dSDavid Heidelberg          - qcom,scm-msm8998
425b8db5b4SMelody Olvera          - qcom,scm-qdu1000
4327d71e80SBartosz Golaszewski          - qcom,scm-sa8775p
441c46589dSDavid Heidelberg          - qcom,scm-sc7180
451c46589dSDavid Heidelberg          - qcom,scm-sc7280
461c46589dSDavid Heidelberg          - qcom,scm-sc8280xp
47aa9f4740SRichard Acayan          - qcom,scm-sdm670
481c46589dSDavid Heidelberg          - qcom,scm-sdm845
491c46589dSDavid Heidelberg          - qcom,scm-sdx55
501c46589dSDavid Heidelberg          - qcom,scm-sdx65
51f2567b73SAdam Skladowski          - qcom,scm-sm6115
521c46589dSDavid Heidelberg          - qcom,scm-sm6125
531c46589dSDavid Heidelberg          - qcom,scm-sm6350
54fa2d6ed1SKonrad Dybcio          - qcom,scm-sm6375
551c46589dSDavid Heidelberg          - qcom,scm-sm8150
561c46589dSDavid Heidelberg          - qcom,scm-sm8250
571c46589dSDavid Heidelberg          - qcom,scm-sm8350
581c46589dSDavid Heidelberg          - qcom,scm-sm8450
59b9fd3353SAbel Vesa          - qcom,scm-sm8550
601c46589dSDavid Heidelberg          - qcom,scm-qcs404
611c46589dSDavid Heidelberg      - const: qcom,scm
621c46589dSDavid Heidelberg
631c46589dSDavid Heidelberg  clocks:
641c46589dSDavid Heidelberg    minItems: 1
651c46589dSDavid Heidelberg    maxItems: 3
661c46589dSDavid Heidelberg
671c46589dSDavid Heidelberg  clock-names:
681c46589dSDavid Heidelberg    minItems: 1
691c46589dSDavid Heidelberg    maxItems: 3
701c46589dSDavid Heidelberg
711c46589dSDavid Heidelberg  interconnects:
721c46589dSDavid Heidelberg    maxItems: 1
731c46589dSDavid Heidelberg
741c46589dSDavid Heidelberg  interconnect-names:
751c46589dSDavid Heidelberg    maxItems: 1
761c46589dSDavid Heidelberg
771c46589dSDavid Heidelberg  '#reset-cells':
781c46589dSDavid Heidelberg    const: 1
791c46589dSDavid Heidelberg
80afb37e25SGuru Das Srinagesh  interrupts:
81afb37e25SGuru Das Srinagesh    description:
82afb37e25SGuru Das Srinagesh      The wait-queue interrupt that firmware raises as part of handshake
83afb37e25SGuru Das Srinagesh      protocol to handle sleeping SCM calls.
84afb37e25SGuru Das Srinagesh    maxItems: 1
85afb37e25SGuru Das Srinagesh
861c46589dSDavid Heidelberg  qcom,dload-mode:
871c46589dSDavid Heidelberg    $ref: /schemas/types.yaml#/definitions/phandle-array
881c46589dSDavid Heidelberg    items:
891c46589dSDavid Heidelberg      - items:
901c46589dSDavid Heidelberg          - description: phandle to TCSR hardware block
911c46589dSDavid Heidelberg          - description: offset of the download mode control register
921c46589dSDavid Heidelberg    description: TCSR hardware block
931c46589dSDavid Heidelberg
941c46589dSDavid HeidelbergallOf:
95c5b8840cSKrzysztof Kozlowski  # Clocks
96c5b8840cSKrzysztof Kozlowski  - if:
97c5b8840cSKrzysztof Kozlowski      properties:
98c5b8840cSKrzysztof Kozlowski        compatible:
99c5b8840cSKrzysztof Kozlowski          contains:
100c5b8840cSKrzysztof Kozlowski            enum:
101c5b8840cSKrzysztof Kozlowski              - qcom,scm-apq8064
102c5b8840cSKrzysztof Kozlowski              - qcom,scm-apq8084
103c5b8840cSKrzysztof Kozlowski              - qcom,scm-mdm9607
104c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8226
105c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8660
106c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8916
107c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8953
108c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8960
109c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8974
110c5b8840cSKrzysztof Kozlowski              - qcom,scm-msm8976
111c5b8840cSKrzysztof Kozlowski              - qcom,scm-sm6375
112c5b8840cSKrzysztof Kozlowski    then:
113c5b8840cSKrzysztof Kozlowski      required:
114c5b8840cSKrzysztof Kozlowski        - clocks
115c5b8840cSKrzysztof Kozlowski        - clock-names
116c5b8840cSKrzysztof Kozlowski    else:
117c5b8840cSKrzysztof Kozlowski      properties:
118c5b8840cSKrzysztof Kozlowski        clock-names: false
119c5b8840cSKrzysztof Kozlowski        clocks: false
120c5b8840cSKrzysztof Kozlowski
1211c46589dSDavid Heidelberg  - if:
1221c46589dSDavid Heidelberg      properties:
1231c46589dSDavid Heidelberg        compatible:
1241c46589dSDavid Heidelberg          contains:
1251c46589dSDavid Heidelberg            enum:
1261c46589dSDavid Heidelberg              - qcom,scm-apq8064
1271c46589dSDavid Heidelberg              - qcom,scm-msm8660
1281c46589dSDavid Heidelberg              - qcom,scm-msm8960
129fa2d6ed1SKonrad Dybcio              - qcom,scm-sm6375
1301c46589dSDavid Heidelberg    then:
1311c46589dSDavid Heidelberg      properties:
1321c46589dSDavid Heidelberg        clock-names:
1331c46589dSDavid Heidelberg          items:
1341c46589dSDavid Heidelberg            - const: core
1351c46589dSDavid Heidelberg
1361c46589dSDavid Heidelberg        clocks:
1371c46589dSDavid Heidelberg          maxItems: 1
1381c46589dSDavid Heidelberg
1391c46589dSDavid Heidelberg  - if:
1401c46589dSDavid Heidelberg      properties:
1411c46589dSDavid Heidelberg        compatible:
1421c46589dSDavid Heidelberg          contains:
1431c46589dSDavid Heidelberg            enum:
1441c46589dSDavid Heidelberg              - qcom,scm-apq8084
1451c46589dSDavid Heidelberg              - qcom,scm-mdm9607
1468f3945a9SKrzysztof Kozlowski              - qcom,scm-msm8226
1471c46589dSDavid Heidelberg              - qcom,scm-msm8916
1481c46589dSDavid Heidelberg              - qcom,scm-msm8953
1491c46589dSDavid Heidelberg              - qcom,scm-msm8974
1501c46589dSDavid Heidelberg              - qcom,scm-msm8976
1511c46589dSDavid Heidelberg    then:
1521c46589dSDavid Heidelberg      properties:
1531c46589dSDavid Heidelberg        clock-names:
1541c46589dSDavid Heidelberg          items:
1551c46589dSDavid Heidelberg            - const: core
1561c46589dSDavid Heidelberg            - const: bus
1571c46589dSDavid Heidelberg            - const: iface
1581c46589dSDavid Heidelberg
1591c46589dSDavid Heidelberg        clocks:
1601c46589dSDavid Heidelberg          minItems: 3
1611c46589dSDavid Heidelberg          maxItems: 3
1621c46589dSDavid Heidelberg
163c5b8840cSKrzysztof Kozlowski  # Interconnects
164c5b8840cSKrzysztof Kozlowski  - if:
165c5b8840cSKrzysztof Kozlowski      not:
166c5b8840cSKrzysztof Kozlowski        properties:
167c5b8840cSKrzysztof Kozlowski          compatible:
168c5b8840cSKrzysztof Kozlowski            contains:
169c5b8840cSKrzysztof Kozlowski              enum:
170c5b8840cSKrzysztof Kozlowski                - qcom,scm-sm8450
171b9fd3353SAbel Vesa                - qcom,scm-sm8550
172c5b8840cSKrzysztof Kozlowski    then:
173c5b8840cSKrzysztof Kozlowski      properties:
174c5b8840cSKrzysztof Kozlowski        interconnects: false
1751c46589dSDavid Heidelberg
176afb37e25SGuru Das Srinagesh  # Interrupts
177afb37e25SGuru Das Srinagesh  - if:
178afb37e25SGuru Das Srinagesh      not:
179afb37e25SGuru Das Srinagesh        properties:
180afb37e25SGuru Das Srinagesh          compatible:
181afb37e25SGuru Das Srinagesh            contains:
182afb37e25SGuru Das Srinagesh              enum:
183afb37e25SGuru Das Srinagesh                - qcom,scm-sm8450
184b9fd3353SAbel Vesa                - qcom,scm-sm8550
185afb37e25SGuru Das Srinagesh    then:
186afb37e25SGuru Das Srinagesh      properties:
187afb37e25SGuru Das Srinagesh        interrupts: false
188afb37e25SGuru Das Srinagesh
1891c46589dSDavid Heidelbergrequired:
1901c46589dSDavid Heidelberg  - compatible
1911c46589dSDavid Heidelberg
1921c46589dSDavid HeidelbergadditionalProperties: false
1931c46589dSDavid Heidelberg
1941c46589dSDavid Heidelbergexamples:
1951c46589dSDavid Heidelberg  - |
1961c46589dSDavid Heidelberg    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
1971c46589dSDavid Heidelberg
1981c46589dSDavid Heidelberg    firmware {
1991c46589dSDavid Heidelberg        scm {
2001c46589dSDavid Heidelberg            compatible = "qcom,scm-msm8916", "qcom,scm";
2011c46589dSDavid Heidelberg            clocks = <&gcc GCC_CRYPTO_CLK>,
2021c46589dSDavid Heidelberg                     <&gcc GCC_CRYPTO_AXI_CLK>,
2031c46589dSDavid Heidelberg                     <&gcc GCC_CRYPTO_AHB_CLK>;
2041c46589dSDavid Heidelberg            clock-names = "core", "bus", "iface";
2051c46589dSDavid Heidelberg        };
2061c46589dSDavid Heidelberg    };
207