1842b4aecSRob Herring# SPDX-License-Identifier: GPL-2.0-only
2842b4aecSRob Herring%YAML 1.2
3842b4aecSRob Herring---
4842b4aecSRob Herring$id: http://devicetree.org/schemas/gpu/arm,mali-bifrost.yaml#
5842b4aecSRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
6842b4aecSRob Herring
7842b4aecSRob Herringtitle: ARM Mali Bifrost GPU
8842b4aecSRob Herring
9842b4aecSRob Herringmaintainers:
10842b4aecSRob Herring  - Rob Herring <robh@kernel.org>
11842b4aecSRob Herring
12842b4aecSRob Herringproperties:
13842b4aecSRob Herring  $nodename:
14842b4aecSRob Herring    pattern: '^gpu@[a-f0-9]+$'
15842b4aecSRob Herring
16842b4aecSRob Herring  compatible:
175d82e74aSAlyssa Rosenzweig    oneOf:
185d82e74aSAlyssa Rosenzweig      - items:
19842b4aecSRob Herring          - enum:
20842b4aecSRob Herring              - amlogic,meson-g12a-mali
21a7a596cdSNicolas Boichat              - mediatek,mt8183-mali
220211b71cSAndreas Färber              - realtek,rtd1619-mali
23570df0a5SBiju Das              - renesas,r9a07g044-mali
245dc6ce76SLad Prabhakar              - renesas,r9a07g054-mali
25ad848dd5SHeiko Stuebner              - rockchip,px30-mali
2651ca8fcbSEzequiel Garcia              - rockchip,rk3568-mali
27842b4aecSRob Herring          - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
285d82e74aSAlyssa Rosenzweig      - items:
295d82e74aSAlyssa Rosenzweig          - enum:
305d82e74aSAlyssa Rosenzweig              - mediatek,mt8192-mali
315d82e74aSAlyssa Rosenzweig          - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable
32842b4aecSRob Herring
33842b4aecSRob Herring  reg:
34842b4aecSRob Herring    maxItems: 1
35842b4aecSRob Herring
36842b4aecSRob Herring  interrupts:
37570df0a5SBiju Das    minItems: 3
38842b4aecSRob Herring    items:
39842b4aecSRob Herring      - description: Job interrupt
40842b4aecSRob Herring      - description: MMU interrupt
41842b4aecSRob Herring      - description: GPU interrupt
42570df0a5SBiju Das      - description: Event interrupt
43842b4aecSRob Herring
44842b4aecSRob Herring  interrupt-names:
45570df0a5SBiju Das    minItems: 3
46842b4aecSRob Herring    items:
47842b4aecSRob Herring      - const: job
48842b4aecSRob Herring      - const: mmu
49842b4aecSRob Herring      - const: gpu
50570df0a5SBiju Das      - const: event
51842b4aecSRob Herring
52842b4aecSRob Herring  clocks:
53570df0a5SBiju Das    minItems: 1
54570df0a5SBiju Das    maxItems: 3
55570df0a5SBiju Das
56570df0a5SBiju Das  clock-names: true
57842b4aecSRob Herring
58f3dde260SRob Herring  mali-supply: true
59842b4aecSRob Herring
60a7a596cdSNicolas Boichat  sram-supply: true
61a7a596cdSNicolas Boichat
62842b4aecSRob Herring  operating-points-v2: true
63842b4aecSRob Herring
642c905f6cSJohan Jonker  power-domains:
65a7a596cdSNicolas Boichat    minItems: 1
66eccda274SAngeloGioacchino Del Regno    maxItems: 5
672c905f6cSJohan Jonker
68aeb73790SAngeloGioacchino Del Regno  power-domain-names:
69aeb73790SAngeloGioacchino Del Regno    minItems: 2
70aeb73790SAngeloGioacchino Del Regno    maxItems: 5
71aeb73790SAngeloGioacchino Del Regno
720d9a302dSRob Herring  resets:
73570df0a5SBiju Das    minItems: 1
74570df0a5SBiju Das    maxItems: 3
75570df0a5SBiju Das
76570df0a5SBiju Das  reset-names: true
770d9a302dSRob Herring
782c905f6cSJohan Jonker  "#cooling-cells":
792c905f6cSJohan Jonker    const: 2
802c905f6cSJohan Jonker
81e33dc2f3SLukasz Luba  dynamic-power-coefficient:
82e33dc2f3SLukasz Luba    $ref: '/schemas/types.yaml#/definitions/uint32'
83e33dc2f3SLukasz Luba    description:
84e33dc2f3SLukasz Luba      A u32 value that represents the running time dynamic
85e33dc2f3SLukasz Luba      power coefficient in units of uW/MHz/V^2. The
86e33dc2f3SLukasz Luba      coefficient can either be calculated from power
87e33dc2f3SLukasz Luba      measurements or derived by analysis.
88e33dc2f3SLukasz Luba
89e33dc2f3SLukasz Luba      The dynamic power consumption of the GPU is
90e33dc2f3SLukasz Luba      proportional to the square of the Voltage (V) and
91e33dc2f3SLukasz Luba      the clock frequency (f). The coefficient is used to
92e33dc2f3SLukasz Luba      calculate the dynamic power as below -
93e33dc2f3SLukasz Luba
94e33dc2f3SLukasz Luba      Pdyn = dynamic-power-coefficient * V^2 * f
95e33dc2f3SLukasz Luba
96e33dc2f3SLukasz Luba      where voltage is in V, frequency is in MHz.
97e33dc2f3SLukasz Luba
983f9a3345SKevin Hilman  dma-coherent: true
993f9a3345SKevin Hilman
100842b4aecSRob Herringrequired:
101842b4aecSRob Herring  - compatible
102842b4aecSRob Herring  - reg
103842b4aecSRob Herring  - interrupts
104842b4aecSRob Herring  - interrupt-names
105842b4aecSRob Herring  - clocks
106842b4aecSRob Herring
1077f464532SRob HerringadditionalProperties: false
1087f464532SRob Herring
109842b4aecSRob HerringallOf:
110842b4aecSRob Herring  - if:
111842b4aecSRob Herring      properties:
112842b4aecSRob Herring        compatible:
113842b4aecSRob Herring          contains:
114842b4aecSRob Herring            const: amlogic,meson-g12a-mali
115842b4aecSRob Herring    then:
116e82b8453SAngeloGioacchino Del Regno      properties:
117e82b8453SAngeloGioacchino Del Regno        power-domains:
118e82b8453SAngeloGioacchino Del Regno          maxItems: 1
119aeb73790SAngeloGioacchino Del Regno        power-domain-names: false
120842b4aecSRob Herring      required:
121842b4aecSRob Herring        - resets
122a7a596cdSNicolas Boichat  - if:
123a7a596cdSNicolas Boichat      properties:
124a7a596cdSNicolas Boichat        compatible:
125a7a596cdSNicolas Boichat          contains:
1265dc6ce76SLad Prabhakar            enum:
1275dc6ce76SLad Prabhakar              - renesas,r9a07g044-mali
1285dc6ce76SLad Prabhakar              - renesas,r9a07g054-mali
129570df0a5SBiju Das    then:
130570df0a5SBiju Das      properties:
131570df0a5SBiju Das        interrupts:
132570df0a5SBiju Das          minItems: 4
133570df0a5SBiju Das        interrupt-names:
134570df0a5SBiju Das          minItems: 4
135570df0a5SBiju Das        clocks:
136570df0a5SBiju Das          minItems: 3
137570df0a5SBiju Das        clock-names:
138570df0a5SBiju Das          items:
139570df0a5SBiju Das            - const: gpu
140570df0a5SBiju Das            - const: bus
141570df0a5SBiju Das            - const: bus_ace
142e82b8453SAngeloGioacchino Del Regno        power-domains:
143e82b8453SAngeloGioacchino Del Regno          maxItems: 1
144aeb73790SAngeloGioacchino Del Regno        power-domain-names: false
145570df0a5SBiju Das        resets:
146570df0a5SBiju Das          minItems: 3
147570df0a5SBiju Das        reset-names:
148570df0a5SBiju Das          items:
149570df0a5SBiju Das            - const: rst
150570df0a5SBiju Das            - const: axi_rst
151570df0a5SBiju Das            - const: ace_rst
152570df0a5SBiju Das      required:
153570df0a5SBiju Das        - clock-names
154570df0a5SBiju Das        - power-domains
155570df0a5SBiju Das        - resets
156570df0a5SBiju Das        - reset-names
157570df0a5SBiju Das  - if:
158570df0a5SBiju Das      properties:
159570df0a5SBiju Das        compatible:
160570df0a5SBiju Das          contains:
161a7a596cdSNicolas Boichat            const: mediatek,mt8183-mali
162a7a596cdSNicolas Boichat    then:
163a7a596cdSNicolas Boichat      properties:
164a7a596cdSNicolas Boichat        power-domains:
165a7a596cdSNicolas Boichat          minItems: 3
166eccda274SAngeloGioacchino Del Regno          maxItems: 3
167a7a596cdSNicolas Boichat        power-domain-names:
168a7a596cdSNicolas Boichat          items:
169a7a596cdSNicolas Boichat            - const: core0
170a7a596cdSNicolas Boichat            - const: core1
171a7a596cdSNicolas Boichat            - const: core2
172a7a596cdSNicolas Boichat
173a7a596cdSNicolas Boichat      required:
174a7a596cdSNicolas Boichat        - sram-supply
175a7a596cdSNicolas Boichat        - power-domains
176a7a596cdSNicolas Boichat        - power-domain-names
177a7a596cdSNicolas Boichat    else:
178a7a596cdSNicolas Boichat      properties:
179a7a596cdSNicolas Boichat        sram-supply: false
180f1775c26SAlex Bee  - if:
181f1775c26SAlex Bee      properties:
182f1775c26SAlex Bee        compatible:
183f1775c26SAlex Bee          contains:
184*13a8fc8aSAngeloGioacchino Del Regno            const: mediatek,mt8192-mali
185*13a8fc8aSAngeloGioacchino Del Regno    then:
186*13a8fc8aSAngeloGioacchino Del Regno      properties:
187*13a8fc8aSAngeloGioacchino Del Regno        power-domains:
188*13a8fc8aSAngeloGioacchino Del Regno          minItems: 5
189*13a8fc8aSAngeloGioacchino Del Regno        power-domain-names:
190*13a8fc8aSAngeloGioacchino Del Regno          items:
191*13a8fc8aSAngeloGioacchino Del Regno            - const: core0
192*13a8fc8aSAngeloGioacchino Del Regno            - const: core1
193*13a8fc8aSAngeloGioacchino Del Regno            - const: core2
194*13a8fc8aSAngeloGioacchino Del Regno            - const: core3
195*13a8fc8aSAngeloGioacchino Del Regno            - const: core4
196*13a8fc8aSAngeloGioacchino Del Regno      required:
197*13a8fc8aSAngeloGioacchino Del Regno        - power-domains
198*13a8fc8aSAngeloGioacchino Del Regno        - power-domain-names
199*13a8fc8aSAngeloGioacchino Del Regno  - if:
200*13a8fc8aSAngeloGioacchino Del Regno      properties:
201*13a8fc8aSAngeloGioacchino Del Regno        compatible:
202*13a8fc8aSAngeloGioacchino Del Regno          contains:
203f1775c26SAlex Bee            const: rockchip,rk3568-mali
204f1775c26SAlex Bee    then:
205f1775c26SAlex Bee      properties:
206f1775c26SAlex Bee        clocks:
207f1775c26SAlex Bee          minItems: 2
208f1775c26SAlex Bee        clock-names:
209f1775c26SAlex Bee          items:
210f1775c26SAlex Bee            - const: gpu
211f1775c26SAlex Bee            - const: bus
212e82b8453SAngeloGioacchino Del Regno        power-domains:
213e82b8453SAngeloGioacchino Del Regno          maxItems: 1
214aeb73790SAngeloGioacchino Del Regno        power-domain-names: false
215f1775c26SAlex Bee      required:
216f1775c26SAlex Bee        - clock-names
217842b4aecSRob Herring
218842b4aecSRob Herringexamples:
219842b4aecSRob Herring  - |
220842b4aecSRob Herring    #include <dt-bindings/interrupt-controller/irq.h>
221842b4aecSRob Herring    #include <dt-bindings/interrupt-controller/arm-gic.h>
222842b4aecSRob Herring
223842b4aecSRob Herring    gpu@ffe40000 {
224842b4aecSRob Herring      compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
225842b4aecSRob Herring      reg = <0xffe40000 0x10000>;
226842b4aecSRob Herring      interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
227842b4aecSRob Herring             <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
228842b4aecSRob Herring             <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
229842b4aecSRob Herring      interrupt-names = "job", "mmu", "gpu";
230842b4aecSRob Herring      clocks = <&clk 1>;
231842b4aecSRob Herring      mali-supply = <&vdd_gpu>;
232842b4aecSRob Herring      operating-points-v2 = <&gpu_opp_table>;
233842b4aecSRob Herring      resets = <&reset 0>, <&reset 1>;
234842b4aecSRob Herring    };
235842b4aecSRob Herring
23629fc7695SRob Herring    gpu_opp_table: opp-table {
237842b4aecSRob Herring      compatible = "operating-points-v2";
238842b4aecSRob Herring
23951a21e0eSRob Herring      opp-533000000 {
240842b4aecSRob Herring        opp-hz = /bits/ 64 <533000000>;
241842b4aecSRob Herring        opp-microvolt = <1250000>;
242842b4aecSRob Herring      };
24351a21e0eSRob Herring      opp-450000000 {
244842b4aecSRob Herring        opp-hz = /bits/ 64 <450000000>;
245842b4aecSRob Herring        opp-microvolt = <1150000>;
246842b4aecSRob Herring      };
24751a21e0eSRob Herring      opp-400000000 {
248842b4aecSRob Herring        opp-hz = /bits/ 64 <400000000>;
249842b4aecSRob Herring        opp-microvolt = <1125000>;
250842b4aecSRob Herring      };
25151a21e0eSRob Herring      opp-350000000 {
252842b4aecSRob Herring        opp-hz = /bits/ 64 <350000000>;
253842b4aecSRob Herring        opp-microvolt = <1075000>;
254842b4aecSRob Herring      };
25551a21e0eSRob Herring      opp-266000000 {
256842b4aecSRob Herring        opp-hz = /bits/ 64 <266000000>;
257842b4aecSRob Herring        opp-microvolt = <1025000>;
258842b4aecSRob Herring      };
25951a21e0eSRob Herring      opp-160000000 {
260842b4aecSRob Herring        opp-hz = /bits/ 64 <160000000>;
261842b4aecSRob Herring        opp-microvolt = <925000>;
262842b4aecSRob Herring      };
26351a21e0eSRob Herring      opp-100000000 {
264842b4aecSRob Herring        opp-hz = /bits/ 64 <100000000>;
265842b4aecSRob Herring        opp-microvolt = <912500>;
266842b4aecSRob Herring      };
267842b4aecSRob Herring    };
268842b4aecSRob Herring
269842b4aecSRob Herring...
270