Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/device-tree/Bindings/display/brcm,bcm-vc4.txt
48377 views
1
Broadcom VC4 (VideoCore4) GPU
2
3
The VC4 device present on the Raspberry Pi includes a display system
4
with HDMI output and the HVS (Hardware Video Scaler) for compositing
5
display planes.
6
7
Required properties for VC4:
8
- compatible: Should be "brcm,bcm2835-vc4" or "brcm,cygnus-vc4"
9
10
Required properties for Pixel Valve:
11
- compatible: Should be one of "brcm,bcm2835-pixelvalve0",
12
"brcm,bcm2835-pixelvalve1", or "brcm,bcm2835-pixelvalve2"
13
- reg: Physical base address and length of the PV's registers
14
- interrupts: The interrupt number
15
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
16
17
Required properties for HVS:
18
- compatible: Should be "brcm,bcm2835-hvs"
19
- reg: Physical base address and length of the HVS's registers
20
- interrupts: The interrupt number
21
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
22
23
Required properties for HDMI
24
- compatible: Should be "brcm,bcm2835-hdmi"
25
- reg: Physical base address and length of the two register ranges
26
("HDMI" and "HD", in that order)
27
- interrupts: The interrupt numbers
28
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
29
- ddc: phandle of the I2C controller used for DDC EDID probing
30
- clocks: a) hdmi: The HDMI state machine clock
31
b) pixel: The pixel clock.
32
33
Optional properties for HDMI:
34
- hpd-gpios: The GPIO pin for HDMI hotplug detect (if it doesn't appear
35
as an interrupt/status bit in the HDMI controller
36
itself). See bindings/pinctrl/brcm,bcm2835-gpio.txt
37
- dmas: Should contain one entry pointing to the DMA channel used to
38
transfer audio data
39
- dma-names: Should contain "audio-rx"
40
41
Required properties for DPI:
42
- compatible: Should be "brcm,bcm2835-dpi"
43
- reg: Physical base address and length of the registers
44
- clocks: a) core: The core clock the unit runs on
45
b) pixel: The pixel clock that feeds the pixelvalve
46
- port: Port node with a single endpoint connecting to the panel
47
device, as defined in [1]
48
49
Required properties for VEC:
50
- compatible: Should be "brcm,bcm2835-vec"
51
- reg: Physical base address and length of the registers
52
- clocks: The core clock the unit runs on
53
- interrupts: The interrupt number
54
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
55
56
Required properties for V3D:
57
- compatible: Should be "brcm,bcm2835-v3d" or "brcm,cygnus-v3d"
58
- reg: Physical base address and length of the V3D's registers
59
- interrupts: The interrupt number
60
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
61
62
Optional properties for V3D:
63
- clocks: The clock the unit runs on
64
65
Required properties for DSI:
66
- compatible: Should be "brcm,bcm2835-dsi0" or "brcm,bcm2835-dsi1"
67
- reg: Physical base address and length of the DSI block's registers
68
- interrupts: The interrupt number
69
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
70
- clocks: a) phy: The DSI PLL clock feeding the DSI analog PHY
71
b) escape: The DSI ESC clock from CPRMAN
72
c) pixel: The DSI pixel clock from CPRMAN
73
- clock-output-names:
74
The 3 clocks output from the DSI analog PHY: dsi[01]_byte,
75
dsi[01]_ddr2, and dsi[01]_ddr
76
77
Required properties for the TXP (writeback) block:
78
- compatible: Should be "brcm,bcm2835-txp"
79
- reg: Physical base address and length of the TXP block's registers
80
- interrupts: The interrupt number
81
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
82
83
[1] Documentation/devicetree/bindings/media/video-interfaces.txt
84
85
Example:
86
pixelvalve@7e807000 {
87
compatible = "brcm,bcm2835-pixelvalve2";
88
reg = <0x7e807000 0x100>;
89
interrupts = <2 10>; /* pixelvalve */
90
};
91
92
hvs@7e400000 {
93
compatible = "brcm,bcm2835-hvs";
94
reg = <0x7e400000 0x6000>;
95
interrupts = <2 1>;
96
};
97
98
hdmi: hdmi@7e902000 {
99
compatible = "brcm,bcm2835-hdmi";
100
reg = <0x7e902000 0x600>,
101
<0x7e808000 0x100>;
102
interrupts = <2 8>, <2 9>;
103
ddc = <&i2c2>;
104
hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
105
clocks = <&clocks BCM2835_PLLH_PIX>,
106
<&clocks BCM2835_CLOCK_HSM>;
107
clock-names = "pixel", "hdmi";
108
};
109
110
dpi: dpi@7e208000 {
111
compatible = "brcm,bcm2835-dpi";
112
reg = <0x7e208000 0x8c>;
113
clocks = <&clocks BCM2835_CLOCK_VPU>,
114
<&clocks BCM2835_CLOCK_DPI>;
115
clock-names = "core", "pixel";
116
#address-cells = <1>;
117
#size-cells = <0>;
118
119
port {
120
dpi_out: endpoint@0 {
121
remote-endpoint = <&panel_in>;
122
};
123
};
124
};
125
126
dsi1: dsi@7e700000 {
127
compatible = "brcm,bcm2835-dsi1";
128
reg = <0x7e700000 0x8c>;
129
interrupts = <2 12>;
130
#address-cells = <1>;
131
#size-cells = <0>;
132
#clock-cells = <1>;
133
134
clocks = <&clocks BCM2835_PLLD_DSI1>,
135
<&clocks BCM2835_CLOCK_DSI1E>,
136
<&clocks BCM2835_CLOCK_DSI1P>;
137
clock-names = "phy", "escape", "pixel";
138
139
clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
140
141
pitouchscreen: panel@0 {
142
compatible = "raspberrypi,touchscreen";
143
reg = <0>;
144
145
<...>
146
};
147
};
148
149
vec: vec@7e806000 {
150
compatible = "brcm,bcm2835-vec";
151
reg = <0x7e806000 0x1000>;
152
clocks = <&clocks BCM2835_CLOCK_VEC>;
153
interrupts = <2 27>;
154
};
155
156
v3d: v3d@7ec00000 {
157
compatible = "brcm,bcm2835-v3d";
158
reg = <0x7ec00000 0x1000>;
159
interrupts = <1 10>;
160
};
161
162
vc4: gpu {
163
compatible = "brcm,bcm2835-vc4";
164
};
165
166
panel: panel {
167
compatible = "ontat,yx700wv03", "simple-panel";
168
169
port {
170
panel_in: endpoint {
171
remote-endpoint = <&dpi_out>;
172
};
173
};
174
};
175
176