xref: /freebsd/sys/contrib/device-tree/Bindings/gpu/arm,mali-utgard.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-utgard.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadottitle: ARM Mali Utgard GPU
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10c66ec88fSEmmanuel Vadot  - Rob Herring <robh@kernel.org>
116be33864SEmmanuel Vadot  - Maxime Ripard <mripard@kernel.org>
12c66ec88fSEmmanuel Vadot  - Heiko Stuebner <heiko@sntech.de>
13c66ec88fSEmmanuel Vadot
14c66ec88fSEmmanuel Vadotproperties:
15c66ec88fSEmmanuel Vadot  $nodename:
16c66ec88fSEmmanuel Vadot    pattern: '^gpu@[a-f0-9]+$'
17c66ec88fSEmmanuel Vadot  compatible:
18c66ec88fSEmmanuel Vadot    oneOf:
19c66ec88fSEmmanuel Vadot      - items:
20c66ec88fSEmmanuel Vadot          - const: allwinner,sun8i-a23-mali
21c66ec88fSEmmanuel Vadot          - const: allwinner,sun7i-a20-mali
22c66ec88fSEmmanuel Vadot          - const: arm,mali-400
23c66ec88fSEmmanuel Vadot      - items:
24c66ec88fSEmmanuel Vadot          - enum:
25c66ec88fSEmmanuel Vadot              - allwinner,sun4i-a10-mali
26c66ec88fSEmmanuel Vadot              - allwinner,sun7i-a20-mali
27c66ec88fSEmmanuel Vadot              - allwinner,sun8i-h3-mali
286be33864SEmmanuel Vadot              - allwinner,sun8i-r40-mali
29c66ec88fSEmmanuel Vadot              - allwinner,sun50i-a64-mali
30c66ec88fSEmmanuel Vadot              - rockchip,rk3036-mali
31c66ec88fSEmmanuel Vadot              - rockchip,rk3066-mali
32*8d13bc63SEmmanuel Vadot              - rockchip,rk3128-mali
33c66ec88fSEmmanuel Vadot              - rockchip,rk3188-mali
34c66ec88fSEmmanuel Vadot              - rockchip,rk3228-mali
35c66ec88fSEmmanuel Vadot              - samsung,exynos4210-mali
36c66ec88fSEmmanuel Vadot              - stericsson,db8500-mali
37f126890aSEmmanuel Vadot              - xlnx,zynqmp-mali
38c66ec88fSEmmanuel Vadot          - const: arm,mali-400
39c66ec88fSEmmanuel Vadot      - items:
40c66ec88fSEmmanuel Vadot          - enum:
41c66ec88fSEmmanuel Vadot              - allwinner,sun50i-h5-mali
42c66ec88fSEmmanuel Vadot              - amlogic,meson8-mali
43c66ec88fSEmmanuel Vadot              - amlogic,meson8b-mali
44c66ec88fSEmmanuel Vadot              - amlogic,meson-gxbb-mali
45c66ec88fSEmmanuel Vadot              - amlogic,meson-gxl-mali
46c66ec88fSEmmanuel Vadot              - hisilicon,hi6220-mali
47c66ec88fSEmmanuel Vadot              - mediatek,mt7623-mali
48c66ec88fSEmmanuel Vadot              - rockchip,rk3328-mali
49c66ec88fSEmmanuel Vadot          - const: arm,mali-450
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel Vadot      # "arm,mali-300"
52c66ec88fSEmmanuel Vadot
53c66ec88fSEmmanuel Vadot  reg:
54c66ec88fSEmmanuel Vadot    maxItems: 1
55c66ec88fSEmmanuel Vadot
56c66ec88fSEmmanuel Vadot  interrupts:
57c66ec88fSEmmanuel Vadot    minItems: 4
58c66ec88fSEmmanuel Vadot    maxItems: 20
59c66ec88fSEmmanuel Vadot
60c66ec88fSEmmanuel Vadot  interrupt-names:
61c66ec88fSEmmanuel Vadot    allOf:
62c66ec88fSEmmanuel Vadot      - additionalItems: true
63c66ec88fSEmmanuel Vadot        minItems: 4
64c66ec88fSEmmanuel Vadot        maxItems: 20
65c66ec88fSEmmanuel Vadot        items:
66c66ec88fSEmmanuel Vadot          # At least enforce the first 2 interrupts
67c66ec88fSEmmanuel Vadot          - const: gp
68c66ec88fSEmmanuel Vadot          - const: gpmmu
69c66ec88fSEmmanuel Vadot      - items:
70c66ec88fSEmmanuel Vadot          # Not ideal as any order and combination are allowed
71c66ec88fSEmmanuel Vadot          enum:
72c66ec88fSEmmanuel Vadot            - gp        # Geometry Processor interrupt
73c66ec88fSEmmanuel Vadot            - gpmmu     # Geometry Processor MMU interrupt
74c66ec88fSEmmanuel Vadot            - pp        # Pixel Processor broadcast interrupt (mali-450 only)
75c66ec88fSEmmanuel Vadot            - pp0       # Pixel Processor X interrupt (X from 0 to 7)
76c66ec88fSEmmanuel Vadot            - ppmmu0    # Pixel Processor X MMU interrupt (X from 0 to 7)
77c66ec88fSEmmanuel Vadot            - pp1
78c66ec88fSEmmanuel Vadot            - ppmmu1
79c66ec88fSEmmanuel Vadot            - pp2
80c66ec88fSEmmanuel Vadot            - ppmmu2
81c66ec88fSEmmanuel Vadot            - pp3
82c66ec88fSEmmanuel Vadot            - ppmmu3
83c66ec88fSEmmanuel Vadot            - pp4
84c66ec88fSEmmanuel Vadot            - ppmmu4
85c66ec88fSEmmanuel Vadot            - pp5
86c66ec88fSEmmanuel Vadot            - ppmmu5
87c66ec88fSEmmanuel Vadot            - pp6
88c66ec88fSEmmanuel Vadot            - ppmmu6
89c66ec88fSEmmanuel Vadot            - pp7
90c66ec88fSEmmanuel Vadot            - ppmmu7
91c66ec88fSEmmanuel Vadot            - pmu       # Power Management Unit interrupt (optional)
92c66ec88fSEmmanuel Vadot            - combined  # stericsson,db8500-mali only
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot  clocks:
95c66ec88fSEmmanuel Vadot    maxItems: 2
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot  clock-names:
98c66ec88fSEmmanuel Vadot    items:
99c66ec88fSEmmanuel Vadot      - const: bus
100c66ec88fSEmmanuel Vadot      - const: core
101c66ec88fSEmmanuel Vadot
102c66ec88fSEmmanuel Vadot  memory-region: true
103c66ec88fSEmmanuel Vadot
104c66ec88fSEmmanuel Vadot  mali-supply: true
105c66ec88fSEmmanuel Vadot
1067ef62cebSEmmanuel Vadot  opp-table:
1077ef62cebSEmmanuel Vadot    type: object
1086be33864SEmmanuel Vadot
109c66ec88fSEmmanuel Vadot  power-domains:
110c66ec88fSEmmanuel Vadot    maxItems: 1
111c66ec88fSEmmanuel Vadot
112c66ec88fSEmmanuel Vadot  resets:
113c66ec88fSEmmanuel Vadot    maxItems: 1
114c66ec88fSEmmanuel Vadot
115c66ec88fSEmmanuel Vadot  operating-points-v2: true
116c66ec88fSEmmanuel Vadot
117c66ec88fSEmmanuel Vadot  "#cooling-cells":
118c66ec88fSEmmanuel Vadot    const: 2
119c66ec88fSEmmanuel Vadot
120c66ec88fSEmmanuel Vadotrequired:
121c66ec88fSEmmanuel Vadot  - compatible
122c66ec88fSEmmanuel Vadot  - reg
123c66ec88fSEmmanuel Vadot  - interrupts
124c66ec88fSEmmanuel Vadot  - interrupt-names
125c66ec88fSEmmanuel Vadot  - clocks
126c66ec88fSEmmanuel Vadot  - clock-names
127c66ec88fSEmmanuel Vadot
128c66ec88fSEmmanuel VadotadditionalProperties: false
129c66ec88fSEmmanuel Vadot
130c66ec88fSEmmanuel VadotallOf:
131c66ec88fSEmmanuel Vadot  - if:
132c66ec88fSEmmanuel Vadot      properties:
133c66ec88fSEmmanuel Vadot        compatible:
134c66ec88fSEmmanuel Vadot          contains:
135c66ec88fSEmmanuel Vadot            enum:
136c66ec88fSEmmanuel Vadot              - allwinner,sun4i-a10-mali
137c66ec88fSEmmanuel Vadot              - allwinner,sun7i-a20-mali
1386be33864SEmmanuel Vadot              - allwinner,sun8i-r40-mali
139c66ec88fSEmmanuel Vadot              - allwinner,sun50i-a64-mali
140c66ec88fSEmmanuel Vadot              - allwinner,sun50i-h5-mali
141c66ec88fSEmmanuel Vadot              - amlogic,meson8-mali
142c66ec88fSEmmanuel Vadot              - amlogic,meson8b-mali
143c66ec88fSEmmanuel Vadot              - hisilicon,hi6220-mali
144c66ec88fSEmmanuel Vadot              - mediatek,mt7623-mali
145c66ec88fSEmmanuel Vadot              - rockchip,rk3036-mali
146c66ec88fSEmmanuel Vadot              - rockchip,rk3066-mali
147c66ec88fSEmmanuel Vadot              - rockchip,rk3188-mali
148c66ec88fSEmmanuel Vadot              - rockchip,rk3228-mali
149c66ec88fSEmmanuel Vadot              - rockchip,rk3328-mali
150c66ec88fSEmmanuel Vadot    then:
151c66ec88fSEmmanuel Vadot      required:
152c66ec88fSEmmanuel Vadot        - resets
153c66ec88fSEmmanuel Vadot
154c66ec88fSEmmanuel Vadotexamples:
155c66ec88fSEmmanuel Vadot  - |
156c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
157c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
158c66ec88fSEmmanuel Vadot
159c66ec88fSEmmanuel Vadot    mali: gpu@1c40000 {
160c66ec88fSEmmanuel Vadot      compatible = "allwinner,sun7i-a20-mali", "arm,mali-400";
161c66ec88fSEmmanuel Vadot      reg = <0x01c40000 0x10000>;
162c66ec88fSEmmanuel Vadot      interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
163c66ec88fSEmmanuel Vadot             <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
164c66ec88fSEmmanuel Vadot             <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
165c66ec88fSEmmanuel Vadot             <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
166c66ec88fSEmmanuel Vadot             <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
167c66ec88fSEmmanuel Vadot             <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
168c66ec88fSEmmanuel Vadot             <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
169c66ec88fSEmmanuel Vadot      interrupt-names = "gp",
170c66ec88fSEmmanuel Vadot            "gpmmu",
171c66ec88fSEmmanuel Vadot            "pp0",
172c66ec88fSEmmanuel Vadot            "ppmmu0",
173c66ec88fSEmmanuel Vadot            "pp1",
174c66ec88fSEmmanuel Vadot            "ppmmu1",
175c66ec88fSEmmanuel Vadot            "pmu";
176c66ec88fSEmmanuel Vadot      clocks = <&ccu 1>, <&ccu 2>;
177c66ec88fSEmmanuel Vadot      clock-names = "bus", "core";
178c66ec88fSEmmanuel Vadot      resets = <&ccu 1>;
179c66ec88fSEmmanuel Vadot      #cooling-cells = <2>;
180c66ec88fSEmmanuel Vadot    };
181c66ec88fSEmmanuel Vadot
182c66ec88fSEmmanuel Vadot...
183