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:
17842b4aecSRob Herring    items:
18842b4aecSRob Herring      - enum:
19842b4aecSRob Herring          - amlogic,meson-g12a-mali
200211b71cSAndreas Färber          - realtek,rtd1619-mali
21ad848dd5SHeiko Stuebner          - rockchip,px30-mali
22842b4aecSRob Herring      - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
23842b4aecSRob Herring
24842b4aecSRob Herring  reg:
25842b4aecSRob Herring    maxItems: 1
26842b4aecSRob Herring
27842b4aecSRob Herring  interrupts:
28842b4aecSRob Herring    items:
29842b4aecSRob Herring      - description: Job interrupt
30842b4aecSRob Herring      - description: MMU interrupt
31842b4aecSRob Herring      - description: GPU interrupt
32842b4aecSRob Herring
33842b4aecSRob Herring  interrupt-names:
34842b4aecSRob Herring    items:
35842b4aecSRob Herring      - const: job
36842b4aecSRob Herring      - const: mmu
37842b4aecSRob Herring      - const: gpu
38842b4aecSRob Herring
39842b4aecSRob Herring  clocks:
40842b4aecSRob Herring    maxItems: 1
41842b4aecSRob Herring
42f3dde260SRob Herring  mali-supply: true
43842b4aecSRob Herring
44842b4aecSRob Herring  operating-points-v2: true
45842b4aecSRob Herring
462c905f6cSJohan Jonker  power-domains:
472c905f6cSJohan Jonker    maxItems: 1
482c905f6cSJohan Jonker
490d9a302dSRob Herring  resets:
500d9a302dSRob Herring    maxItems: 2
510d9a302dSRob Herring
522c905f6cSJohan Jonker  "#cooling-cells":
532c905f6cSJohan Jonker    const: 2
542c905f6cSJohan Jonker
55e33dc2f3SLukasz Luba  dynamic-power-coefficient:
56e33dc2f3SLukasz Luba    $ref: '/schemas/types.yaml#/definitions/uint32'
57e33dc2f3SLukasz Luba    description:
58e33dc2f3SLukasz Luba      A u32 value that represents the running time dynamic
59e33dc2f3SLukasz Luba      power coefficient in units of uW/MHz/V^2. The
60e33dc2f3SLukasz Luba      coefficient can either be calculated from power
61e33dc2f3SLukasz Luba      measurements or derived by analysis.
62e33dc2f3SLukasz Luba
63e33dc2f3SLukasz Luba      The dynamic power consumption of the GPU is
64e33dc2f3SLukasz Luba      proportional to the square of the Voltage (V) and
65e33dc2f3SLukasz Luba      the clock frequency (f). The coefficient is used to
66e33dc2f3SLukasz Luba      calculate the dynamic power as below -
67e33dc2f3SLukasz Luba
68e33dc2f3SLukasz Luba      Pdyn = dynamic-power-coefficient * V^2 * f
69e33dc2f3SLukasz Luba
70e33dc2f3SLukasz Luba      where voltage is in V, frequency is in MHz.
71e33dc2f3SLukasz Luba
72*3f9a3345SKevin Hilman  dma-coherent: true
73*3f9a3345SKevin Hilman
74842b4aecSRob Herringrequired:
75842b4aecSRob Herring  - compatible
76842b4aecSRob Herring  - reg
77842b4aecSRob Herring  - interrupts
78842b4aecSRob Herring  - interrupt-names
79842b4aecSRob Herring  - clocks
80842b4aecSRob Herring
817f464532SRob HerringadditionalProperties: false
827f464532SRob Herring
83842b4aecSRob HerringallOf:
84842b4aecSRob Herring  - if:
85842b4aecSRob Herring      properties:
86842b4aecSRob Herring        compatible:
87842b4aecSRob Herring          contains:
88842b4aecSRob Herring            const: amlogic,meson-g12a-mali
89842b4aecSRob Herring    then:
90842b4aecSRob Herring      required:
91842b4aecSRob Herring        - resets
92842b4aecSRob Herring
93842b4aecSRob Herringexamples:
94842b4aecSRob Herring  - |
95842b4aecSRob Herring    #include <dt-bindings/interrupt-controller/irq.h>
96842b4aecSRob Herring    #include <dt-bindings/interrupt-controller/arm-gic.h>
97842b4aecSRob Herring
98842b4aecSRob Herring    gpu@ffe40000 {
99842b4aecSRob Herring      compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
100842b4aecSRob Herring      reg = <0xffe40000 0x10000>;
101842b4aecSRob Herring      interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
102842b4aecSRob Herring             <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
103842b4aecSRob Herring             <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
104842b4aecSRob Herring      interrupt-names = "job", "mmu", "gpu";
105842b4aecSRob Herring      clocks = <&clk 1>;
106842b4aecSRob Herring      mali-supply = <&vdd_gpu>;
107842b4aecSRob Herring      operating-points-v2 = <&gpu_opp_table>;
108842b4aecSRob Herring      resets = <&reset 0>, <&reset 1>;
109842b4aecSRob Herring    };
110842b4aecSRob Herring
111842b4aecSRob Herring    gpu_opp_table: opp_table0 {
112842b4aecSRob Herring      compatible = "operating-points-v2";
113842b4aecSRob Herring
11451a21e0eSRob Herring      opp-533000000 {
115842b4aecSRob Herring        opp-hz = /bits/ 64 <533000000>;
116842b4aecSRob Herring        opp-microvolt = <1250000>;
117842b4aecSRob Herring      };
11851a21e0eSRob Herring      opp-450000000 {
119842b4aecSRob Herring        opp-hz = /bits/ 64 <450000000>;
120842b4aecSRob Herring        opp-microvolt = <1150000>;
121842b4aecSRob Herring      };
12251a21e0eSRob Herring      opp-400000000 {
123842b4aecSRob Herring        opp-hz = /bits/ 64 <400000000>;
124842b4aecSRob Herring        opp-microvolt = <1125000>;
125842b4aecSRob Herring      };
12651a21e0eSRob Herring      opp-350000000 {
127842b4aecSRob Herring        opp-hz = /bits/ 64 <350000000>;
128842b4aecSRob Herring        opp-microvolt = <1075000>;
129842b4aecSRob Herring      };
13051a21e0eSRob Herring      opp-266000000 {
131842b4aecSRob Herring        opp-hz = /bits/ 64 <266000000>;
132842b4aecSRob Herring        opp-microvolt = <1025000>;
133842b4aecSRob Herring      };
13451a21e0eSRob Herring      opp-160000000 {
135842b4aecSRob Herring        opp-hz = /bits/ 64 <160000000>;
136842b4aecSRob Herring        opp-microvolt = <925000>;
137842b4aecSRob Herring      };
13851a21e0eSRob Herring      opp-100000000 {
139842b4aecSRob Herring        opp-hz = /bits/ 64 <100000000>;
140842b4aecSRob Herring        opp-microvolt = <912500>;
141842b4aecSRob Herring      };
142842b4aecSRob Herring    };
143842b4aecSRob Herring
144842b4aecSRob Herring...
145