xref: /freebsd/sys/contrib/device-tree/Bindings/gpu/arm,mali-midgard.yaml (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/gpu/arm,mali-midgard.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadottitle: ARM Mali Midgard GPU
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10c66ec88fSEmmanuel Vadot  - Rob Herring <robh@kernel.org>
11c66ec88fSEmmanuel Vadot
12c66ec88fSEmmanuel Vadotproperties:
13c66ec88fSEmmanuel Vadot  $nodename:
14c66ec88fSEmmanuel Vadot    pattern: '^gpu@[a-f0-9]+$'
15c66ec88fSEmmanuel Vadot  compatible:
16c66ec88fSEmmanuel Vadot    oneOf:
17c66ec88fSEmmanuel Vadot      - items:
18c66ec88fSEmmanuel Vadot          - enum:
19c66ec88fSEmmanuel Vadot              - samsung,exynos5250-mali
20c66ec88fSEmmanuel Vadot          - const: arm,mali-t604
21c66ec88fSEmmanuel Vadot      - items:
22c66ec88fSEmmanuel Vadot          - enum:
23c66ec88fSEmmanuel Vadot              - samsung,exynos5420-mali
24c66ec88fSEmmanuel Vadot          - const: arm,mali-t628
25c66ec88fSEmmanuel Vadot      - items:
26c66ec88fSEmmanuel Vadot          - enum:
27c66ec88fSEmmanuel Vadot              - allwinner,sun50i-h6-mali
28c66ec88fSEmmanuel Vadot          - const: arm,mali-t720
29c66ec88fSEmmanuel Vadot      - items:
30c66ec88fSEmmanuel Vadot          - enum:
31c66ec88fSEmmanuel Vadot              - amlogic,meson-gxm-mali
32c66ec88fSEmmanuel Vadot              - realtek,rtd1295-mali
33c66ec88fSEmmanuel Vadot          - const: arm,mali-t820
34c66ec88fSEmmanuel Vadot      - items:
35c66ec88fSEmmanuel Vadot          - enum:
36c66ec88fSEmmanuel Vadot              - arm,juno-mali
37c66ec88fSEmmanuel Vadot          - const: arm,mali-t624
38c66ec88fSEmmanuel Vadot      - items:
39c66ec88fSEmmanuel Vadot          - enum:
40c66ec88fSEmmanuel Vadot              - rockchip,rk3288-mali
41c66ec88fSEmmanuel Vadot              - samsung,exynos5433-mali
42c66ec88fSEmmanuel Vadot          - const: arm,mali-t760
43c66ec88fSEmmanuel Vadot      - items:
44c66ec88fSEmmanuel Vadot          - enum:
45*8d13bc63SEmmanuel Vadot              - samsung,exynos7-mali
46*8d13bc63SEmmanuel Vadot          - const: samsung,exynos5433-mali
47*8d13bc63SEmmanuel Vadot          - const: arm,mali-t760
48*8d13bc63SEmmanuel Vadot      - items:
49*8d13bc63SEmmanuel Vadot          - enum:
50c66ec88fSEmmanuel Vadot              - rockchip,rk3399-mali
51c66ec88fSEmmanuel Vadot          - const: arm,mali-t860
52c66ec88fSEmmanuel Vadot
53c66ec88fSEmmanuel Vadot          # "arm,mali-t830"
54c66ec88fSEmmanuel Vadot          # "arm,mali-t880"
55c66ec88fSEmmanuel Vadot
56c66ec88fSEmmanuel Vadot  reg:
57c66ec88fSEmmanuel Vadot    maxItems: 1
58c66ec88fSEmmanuel Vadot
59c66ec88fSEmmanuel Vadot  interrupts:
60c66ec88fSEmmanuel Vadot    items:
61c66ec88fSEmmanuel Vadot      - description: Job interrupt
62c66ec88fSEmmanuel Vadot      - description: MMU interrupt
63c66ec88fSEmmanuel Vadot      - description: GPU interrupt
64c66ec88fSEmmanuel Vadot
65c66ec88fSEmmanuel Vadot  interrupt-names:
66c66ec88fSEmmanuel Vadot    items:
67c66ec88fSEmmanuel Vadot      - const: job
68c66ec88fSEmmanuel Vadot      - const: mmu
69c66ec88fSEmmanuel Vadot      - const: gpu
70c66ec88fSEmmanuel Vadot
71c66ec88fSEmmanuel Vadot  clocks:
72c66ec88fSEmmanuel Vadot    minItems: 1
73c66ec88fSEmmanuel Vadot    maxItems: 2
74c66ec88fSEmmanuel Vadot
75c66ec88fSEmmanuel Vadot  clock-names:
76c66ec88fSEmmanuel Vadot    minItems: 1
77c66ec88fSEmmanuel Vadot    items:
78c66ec88fSEmmanuel Vadot      - const: core
79c66ec88fSEmmanuel Vadot      - const: bus
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadot  mali-supply: true
827ef62cebSEmmanuel Vadot  opp-table:
837ef62cebSEmmanuel Vadot    type: object
84c66ec88fSEmmanuel Vadot
85c66ec88fSEmmanuel Vadot  power-domains:
86c66ec88fSEmmanuel Vadot    maxItems: 1
87c66ec88fSEmmanuel Vadot
88c66ec88fSEmmanuel Vadot  resets:
89c66ec88fSEmmanuel Vadot    minItems: 1
90c66ec88fSEmmanuel Vadot    maxItems: 2
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot  operating-points-v2: true
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot  "#cooling-cells":
95c66ec88fSEmmanuel Vadot    const: 2
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot  dma-coherent: true
98c66ec88fSEmmanuel Vadot
995def4c47SEmmanuel Vadot  dynamic-power-coefficient:
100f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
1015def4c47SEmmanuel Vadot    description:
1025def4c47SEmmanuel Vadot      A u32 value that represents the running time dynamic
1035def4c47SEmmanuel Vadot      power coefficient in units of uW/MHz/V^2. The
1045def4c47SEmmanuel Vadot      coefficient can either be calculated from power
1055def4c47SEmmanuel Vadot      measurements or derived by analysis.
1065def4c47SEmmanuel Vadot
1075def4c47SEmmanuel Vadot      The dynamic power consumption of the GPU is
1085def4c47SEmmanuel Vadot      proportional to the square of the Voltage (V) and
1095def4c47SEmmanuel Vadot      the clock frequency (f). The coefficient is used to
1105def4c47SEmmanuel Vadot      calculate the dynamic power as below -
1115def4c47SEmmanuel Vadot
1125def4c47SEmmanuel Vadot      Pdyn = dynamic-power-coefficient * V^2 * f
1135def4c47SEmmanuel Vadot
1145def4c47SEmmanuel Vadot      where voltage is in V, frequency is in MHz.
1155def4c47SEmmanuel Vadot
116c66ec88fSEmmanuel Vadotrequired:
117c66ec88fSEmmanuel Vadot  - compatible
118c66ec88fSEmmanuel Vadot  - reg
119c66ec88fSEmmanuel Vadot  - interrupts
120c66ec88fSEmmanuel Vadot  - interrupt-names
121c66ec88fSEmmanuel Vadot  - clocks
122c66ec88fSEmmanuel Vadot
123c66ec88fSEmmanuel VadotadditionalProperties: false
124c66ec88fSEmmanuel Vadot
125c66ec88fSEmmanuel VadotallOf:
126c66ec88fSEmmanuel Vadot  - if:
127c66ec88fSEmmanuel Vadot      properties:
128c66ec88fSEmmanuel Vadot        compatible:
129c66ec88fSEmmanuel Vadot          contains:
130c66ec88fSEmmanuel Vadot            const: allwinner,sun50i-h6-mali
131c66ec88fSEmmanuel Vadot    then:
132c66ec88fSEmmanuel Vadot      properties:
133c66ec88fSEmmanuel Vadot        clocks:
134c66ec88fSEmmanuel Vadot          minItems: 2
135c66ec88fSEmmanuel Vadot      required:
136c66ec88fSEmmanuel Vadot        - clock-names
137c66ec88fSEmmanuel Vadot        - resets
138c66ec88fSEmmanuel Vadot  - if:
139c66ec88fSEmmanuel Vadot      properties:
140c66ec88fSEmmanuel Vadot        compatible:
141c66ec88fSEmmanuel Vadot          contains:
142c66ec88fSEmmanuel Vadot            const: amlogic,meson-gxm-mali
143c66ec88fSEmmanuel Vadot    then:
144c66ec88fSEmmanuel Vadot      properties:
145c66ec88fSEmmanuel Vadot        resets:
146c66ec88fSEmmanuel Vadot          minItems: 2
147c66ec88fSEmmanuel Vadot      required:
148c66ec88fSEmmanuel Vadot        - resets
149c66ec88fSEmmanuel Vadot
150c66ec88fSEmmanuel Vadotexamples:
151c66ec88fSEmmanuel Vadot  - |
152c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
153c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
154c66ec88fSEmmanuel Vadot
155c66ec88fSEmmanuel Vadot    gpu@ffa30000 {
156c66ec88fSEmmanuel Vadot      compatible = "rockchip,rk3288-mali", "arm,mali-t760";
157c66ec88fSEmmanuel Vadot      reg = <0xffa30000 0x10000>;
158c66ec88fSEmmanuel Vadot      interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
159c66ec88fSEmmanuel Vadot             <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
160c66ec88fSEmmanuel Vadot             <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
161c66ec88fSEmmanuel Vadot      interrupt-names = "job", "mmu", "gpu";
162c66ec88fSEmmanuel Vadot      clocks = <&cru 0>;
163c66ec88fSEmmanuel Vadot      mali-supply = <&vdd_gpu>;
164c66ec88fSEmmanuel Vadot      operating-points-v2 = <&gpu_opp_table>;
165c66ec88fSEmmanuel Vadot      power-domains = <&power 0>;
166c66ec88fSEmmanuel Vadot      #cooling-cells = <2>;
167c66ec88fSEmmanuel Vadot    };
168c66ec88fSEmmanuel Vadot
169354d7675SEmmanuel Vadot    gpu_opp_table: opp-table {
170c66ec88fSEmmanuel Vadot      compatible = "operating-points-v2";
171c66ec88fSEmmanuel Vadot
172c66ec88fSEmmanuel Vadot      opp-533000000 {
173c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <533000000>;
174c66ec88fSEmmanuel Vadot        opp-microvolt = <1250000>;
175c66ec88fSEmmanuel Vadot      };
176c66ec88fSEmmanuel Vadot      opp-450000000 {
177c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <450000000>;
178c66ec88fSEmmanuel Vadot        opp-microvolt = <1150000>;
179c66ec88fSEmmanuel Vadot      };
180c66ec88fSEmmanuel Vadot      opp-400000000 {
181c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <400000000>;
182c66ec88fSEmmanuel Vadot        opp-microvolt = <1125000>;
183c66ec88fSEmmanuel Vadot      };
184c66ec88fSEmmanuel Vadot      opp-350000000 {
185c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <350000000>;
186c66ec88fSEmmanuel Vadot        opp-microvolt = <1075000>;
187c66ec88fSEmmanuel Vadot      };
188c66ec88fSEmmanuel Vadot      opp-266000000 {
189c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <266000000>;
190c66ec88fSEmmanuel Vadot        opp-microvolt = <1025000>;
191c66ec88fSEmmanuel Vadot      };
192c66ec88fSEmmanuel Vadot      opp-160000000 {
193c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <160000000>;
194c66ec88fSEmmanuel Vadot        opp-microvolt = <925000>;
195c66ec88fSEmmanuel Vadot      };
196c66ec88fSEmmanuel Vadot      opp-100000000 {
197c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <100000000>;
198c66ec88fSEmmanuel Vadot        opp-microvolt = <912500>;
199c66ec88fSEmmanuel Vadot      };
200c66ec88fSEmmanuel Vadot    };
201c66ec88fSEmmanuel Vadot
202c66ec88fSEmmanuel Vadot...
203