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