xref: /src/sys/contrib/device-tree/Bindings/remoteproc/qcom,sm8350-pas.yaml (revision 8a62a2a5659d1839d8799b4274c04469d7f17c78)
1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/remoteproc/qcom,sm8350-pas.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SM8350/SM8450 Peripheral Authentication Service
8
9maintainers:
10  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11
12description:
13  Qualcomm SM8350/SM8450 SoC Peripheral Authentication Service loads and boots
14  firmware on the Qualcomm DSP Hexagon cores.
15
16properties:
17  compatible:
18    oneOf:
19      - enum:
20          - qcom,sar2130p-adsp-pas
21          - qcom,sm8350-adsp-pas
22          - qcom,sm8350-cdsp-pas
23          - qcom,sm8350-slpi-pas
24          - qcom,sm8350-mpss-pas
25          - qcom,sm8450-adsp-pas
26          - qcom,sm8450-cdsp-pas
27          - qcom,sm8450-mpss-pas
28          - qcom,sm8450-slpi-pas
29      - items:
30          - const: qcom,sc8280xp-slpi-pas
31          - const: qcom,sm8350-slpi-pas
32
33  reg:
34    maxItems: 1
35
36  clocks:
37    items:
38      - description: XO clock
39
40  clock-names:
41    items:
42      - const: xo
43
44  qcom,qmp:
45    $ref: /schemas/types.yaml#/definitions/phandle
46    description: Reference to the AOSS side-channel message RAM.
47
48  smd-edge: false
49
50  memory-region:
51    maxItems: 1
52    description: Reference to the reserved-memory for the Hexagon core
53
54  firmware-name:
55    maxItems: 1
56    description: Firmware name for the Hexagon core
57
58required:
59  - compatible
60  - reg
61  - memory-region
62
63allOf:
64  - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
65  - if:
66      properties:
67        compatible:
68          contains:
69            enum:
70              - qcom,sar2130p-adsp-pas
71              - qcom,sm8350-adsp-pas
72              - qcom,sm8350-cdsp-pas
73              - qcom,sm8350-slpi-pas
74              - qcom,sm8450-adsp-pas
75              - qcom,sm8450-cdsp-pas
76              - qcom,sm8450-slpi-pas
77    then:
78      properties:
79        interrupts:
80          maxItems: 5
81        interrupt-names:
82          maxItems: 5
83    else:
84      properties:
85        interrupts:
86          minItems: 6
87        interrupt-names:
88          minItems: 6
89
90  - if:
91      properties:
92        compatible:
93          enum:
94            - qcom,sm8350-mpss-pas
95            - qcom,sm8450-mpss-pas
96    then:
97      properties:
98        power-domains:
99          items:
100            - description: CX power domain
101            - description: MSS power domain
102        power-domain-names:
103          items:
104            - const: cx
105            - const: mss
106
107  - if:
108      properties:
109        compatible:
110          contains:
111            enum:
112              - qcom,sar2130p-adsp-pas
113              - qcom,sm8350-adsp-pas
114              - qcom,sm8350-slpi-pas
115              - qcom,sm8450-adsp-pas
116              - qcom,sm8450-slpi-pas
117    then:
118      properties:
119        power-domains:
120          items:
121            - description: LCX power domain
122            - description: LMX power domain
123        power-domain-names:
124          items:
125            - const: lcx
126            - const: lmx
127
128  - if:
129      properties:
130        compatible:
131          enum:
132            - qcom,sm8350-cdsp-pas
133            - qcom,sm8450-cdsp-pas
134    then:
135      properties:
136        power-domains:
137          items:
138            - description: CX power domain
139            - description: MXC power domain
140        power-domain-names:
141          items:
142            - const: cx
143            - const: mxc
144
145unevaluatedProperties: false
146
147examples:
148  - |
149    #include <dt-bindings/clock/qcom,rpmh.h>
150    #include <dt-bindings/interrupt-controller/irq.h>
151    #include <dt-bindings/mailbox/qcom-ipcc.h>
152    #include <dt-bindings/power/qcom,rpmhpd.h>
153
154    remoteproc@30000000 {
155        compatible = "qcom,sm8450-adsp-pas";
156        reg = <0x030000000 0x100>;
157
158        clocks = <&rpmhcc RPMH_CXO_CLK>;
159        clock-names = "xo";
160
161        firmware-name = "qcom/sm8450/adsp.mbn";
162
163        interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
164                              <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
165                              <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
166                              <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
167                              <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
168        interrupt-names = "wdog", "fatal", "ready",
169                          "handover", "stop-ack";
170
171        memory-region = <&adsp_mem>;
172
173        power-domains = <&rpmhpd RPMHPD_LCX>,
174                        <&rpmhpd RPMHPD_LMX>;
175        power-domain-names = "lcx", "lmx";
176
177        qcom,qmp = <&aoss_qmp>;
178        qcom,smem-states = <&smp2p_adsp_out 0>;
179        qcom,smem-state-names = "stop";
180
181        glink-edge {
182            interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
183                                         IPCC_MPROC_SIGNAL_GLINK_QMP
184                                         IRQ_TYPE_EDGE_RISING>;
185            mboxes = <&ipcc IPCC_CLIENT_LPASS IPCC_MPROC_SIGNAL_GLINK_QMP>;
186
187            label = "lpass";
188            qcom,remote-pid = <2>;
189
190            /* ... */
191        };
192    };
193