1# SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/cache/qcom,llcc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Last Level Cache Controller
8
9maintainers:
10  - Bjorn Andersson <andersson@kernel.org>
11
12description: |
13  LLCC (Last Level Cache Controller) provides last level of cache memory in SoC,
14  that can be shared by multiple clients. Clients here are different cores in the
15  SoC, the idea is to minimize the local caches at the clients and migrate to
16  common pool of memory. Cache memory is divided into partitions called slices
17  which are assigned to clients. Clients can query the slice details, activate
18  and deactivate them.
19
20properties:
21  compatible:
22    enum:
23      - qcom,qdu1000-llcc
24      - qcom,sc7180-llcc
25      - qcom,sc7280-llcc
26      - qcom,sc8180x-llcc
27      - qcom,sc8280xp-llcc
28      - qcom,sdm845-llcc
29      - qcom,sm6350-llcc
30      - qcom,sm7150-llcc
31      - qcom,sm8150-llcc
32      - qcom,sm8250-llcc
33      - qcom,sm8350-llcc
34      - qcom,sm8450-llcc
35      - qcom,sm8550-llcc
36      - qcom,sm8650-llcc
37      - qcom,x1e80100-llcc
38
39  reg:
40    minItems: 2
41    maxItems: 9
42
43  reg-names:
44    minItems: 2
45    maxItems: 9
46
47  interrupts:
48    maxItems: 1
49
50  nvmem-cells:
51    items:
52      - description: Reference to an nvmem node for multi channel DDR
53
54  nvmem-cell-names:
55    items:
56      - const: multi-chan-ddr
57
58required:
59  - compatible
60  - reg
61  - reg-names
62
63allOf:
64  - if:
65      properties:
66        compatible:
67          contains:
68            enum:
69              - qcom,qdu1000-llcc
70              - qcom,sc7180-llcc
71              - qcom,sm6350-llcc
72    then:
73      properties:
74        reg:
75          items:
76            - description: LLCC0 base register region
77            - description: LLCC broadcast base register region
78        reg-names:
79          items:
80            - const: llcc0_base
81            - const: llcc_broadcast_base
82
83  - if:
84      properties:
85        compatible:
86          contains:
87            enum:
88              - qcom,sc7280-llcc
89    then:
90      properties:
91        reg:
92          items:
93            - description: LLCC0 base register region
94            - description: LLCC1 base register region
95            - description: LLCC broadcast base register region
96        reg-names:
97          items:
98            - const: llcc0_base
99            - const: llcc1_base
100            - const: llcc_broadcast_base
101
102  - if:
103      properties:
104        compatible:
105          contains:
106            enum:
107              - qcom,sc8180x-llcc
108              - qcom,sc8280xp-llcc
109              - qcom,x1e80100-llcc
110    then:
111      properties:
112        reg:
113          items:
114            - description: LLCC0 base register region
115            - description: LLCC1 base register region
116            - description: LLCC2 base register region
117            - description: LLCC3 base register region
118            - description: LLCC4 base register region
119            - description: LLCC5 base register region
120            - description: LLCC6 base register region
121            - description: LLCC7 base register region
122            - description: LLCC broadcast base register region
123        reg-names:
124          items:
125            - const: llcc0_base
126            - const: llcc1_base
127            - const: llcc2_base
128            - const: llcc3_base
129            - const: llcc4_base
130            - const: llcc5_base
131            - const: llcc6_base
132            - const: llcc7_base
133            - const: llcc_broadcast_base
134
135  - if:
136      properties:
137        compatible:
138          contains:
139            enum:
140              - qcom,sdm845-llcc
141              - qcom,sm8150-llcc
142              - qcom,sm8250-llcc
143              - qcom,sm8350-llcc
144              - qcom,sm8450-llcc
145              - qcom,sm8550-llcc
146    then:
147      properties:
148        reg:
149          items:
150            - description: LLCC0 base register region
151            - description: LLCC1 base register region
152            - description: LLCC2 base register region
153            - description: LLCC3 base register region
154            - description: LLCC broadcast base register region
155        reg-names:
156          items:
157            - const: llcc0_base
158            - const: llcc1_base
159            - const: llcc2_base
160            - const: llcc3_base
161            - const: llcc_broadcast_base
162
163additionalProperties: false
164
165examples:
166  - |
167    #include <dt-bindings/interrupt-controller/arm-gic.h>
168
169    soc {
170        #address-cells = <2>;
171        #size-cells = <2>;
172
173        system-cache-controller@1100000 {
174            compatible = "qcom,sdm845-llcc";
175            reg = <0 0x01100000 0 0x50000>, <0 0x01180000 0 0x50000>,
176                <0 0x01200000 0 0x50000>, <0 0x01280000 0 0x50000>,
177                <0 0x01300000 0 0x50000>;
178            reg-names = "llcc0_base", "llcc1_base", "llcc2_base",
179                "llcc3_base", "llcc_broadcast_base";
180            interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
181        };
182    };
183