xref: /freebsd/sys/contrib/device-tree/Bindings/display/brcm,bcm-vc4.txt (revision d4eeb02986980bf33dd56c41ceb9fc5f180c0d47)
1Broadcom VC4 (VideoCore4) GPU
2
3The VC4 device present on the Raspberry Pi includes a display system
4with HDMI output and the HVS (Hardware Video Scaler) for compositing
5display planes.
6
7Required properties for VC4:
8- compatible:	Should be "brcm,bcm2835-vc4" or "brcm,cygnus-vc4"
9
10Required 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
17Required 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
23Required 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
33Optional 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
41Required 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
49Required 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
56Required 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
62Optional properties for V3D:
63- clocks:	The clock the unit runs on
64
65Required 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
77Required 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
85Example:
86pixelvalve@7e807000 {
87	compatible = "brcm,bcm2835-pixelvalve2";
88	reg = <0x7e807000 0x100>;
89	interrupts = <2 10>; /* pixelvalve */
90};
91
92hvs@7e400000 {
93	compatible = "brcm,bcm2835-hvs";
94	reg = <0x7e400000 0x6000>;
95	interrupts = <2 1>;
96};
97
98hdmi: 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
110dpi: 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
126dsi1: 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
149vec: vec@7e806000 {
150	compatible = "brcm,bcm2835-vec";
151	reg = <0x7e806000 0x1000>;
152	clocks = <&clocks BCM2835_CLOCK_VEC>;
153	interrupts = <2 27>;
154};
155
156v3d: v3d@7ec00000 {
157	compatible = "brcm,bcm2835-v3d";
158	reg = <0x7ec00000 0x1000>;
159	interrupts = <1 10>;
160};
161
162vc4: gpu {
163	compatible = "brcm,bcm2835-vc4";
164};
165
166panel: panel {
167	compatible = "ontat,yx700wv03", "simple-panel";
168
169	port {
170		panel_in: endpoint {
171			remote-endpoint = <&dpi_out>;
172		};
173	};
174};
175