Merge tag 'pstore-v4.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/kees...
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / display / brcm,bcm-vc4.txt
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"
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"
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 Required properties for DSI:
63 - compatible:   Should be "brcm,bcm2835-dsi0" or "brcm,bcm2835-dsi1"
64 - reg:          Physical base address and length of the DSI block's registers
65 - interrupts:   The interrupt number
66                   See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
67 - clocks:       a) phy: The DSI PLL clock feeding the DSI analog PHY
68                 b) escape: The DSI ESC clock from CPRMAN
69                 c) pixel: The DSI pixel clock from CPRMAN
70 - clock-output-names:
71                 The 3 clocks output from the DSI analog PHY: dsi[01]_byte,
72                 dsi[01]_ddr2, and dsi[01]_ddr
73
74 [1] Documentation/devicetree/bindings/media/video-interfaces.txt
75
76 Example:
77 pixelvalve@7e807000 {
78         compatible = "brcm,bcm2835-pixelvalve2";
79         reg = <0x7e807000 0x100>;
80         interrupts = <2 10>; /* pixelvalve */
81 };
82
83 hvs@7e400000 {
84         compatible = "brcm,bcm2835-hvs";
85         reg = <0x7e400000 0x6000>;
86         interrupts = <2 1>;
87 };
88
89 hdmi: hdmi@7e902000 {
90         compatible = "brcm,bcm2835-hdmi";
91         reg = <0x7e902000 0x600>,
92               <0x7e808000 0x100>;
93         interrupts = <2 8>, <2 9>;
94         ddc = <&i2c2>;
95         hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
96         clocks = <&clocks BCM2835_PLLH_PIX>,
97                  <&clocks BCM2835_CLOCK_HSM>;
98         clock-names = "pixel", "hdmi";
99 };
100
101 dpi: dpi@7e208000 {
102         compatible = "brcm,bcm2835-dpi";
103         reg = <0x7e208000 0x8c>;
104         clocks = <&clocks BCM2835_CLOCK_VPU>,
105                  <&clocks BCM2835_CLOCK_DPI>;
106         clock-names = "core", "pixel";
107         #address-cells = <1>;
108         #size-cells = <0>;
109
110         port {
111                 dpi_out: endpoint@0 {
112                         remote-endpoint = <&panel_in>;
113                 };
114         };
115 };
116
117 dsi1: dsi@7e700000 {
118         compatible = "brcm,bcm2835-dsi1";
119         reg = <0x7e700000 0x8c>;
120         interrupts = <2 12>;
121         #address-cells = <1>;
122         #size-cells = <0>;
123         #clock-cells = <1>;
124
125         clocks = <&clocks BCM2835_PLLD_DSI1>,
126                  <&clocks BCM2835_CLOCK_DSI1E>,
127                  <&clocks BCM2835_CLOCK_DSI1P>;
128         clock-names = "phy", "escape", "pixel";
129
130         clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
131
132         pitouchscreen: panel@0 {
133                 compatible = "raspberrypi,touchscreen";
134                 reg = <0>;
135
136                 <...>
137         };
138 };
139
140 vec: vec@7e806000 {
141         compatible = "brcm,bcm2835-vec";
142         reg = <0x7e806000 0x1000>;
143         clocks = <&clocks BCM2835_CLOCK_VEC>;
144         interrupts = <2 27>;
145 };
146
147 v3d: v3d@7ec00000 {
148         compatible = "brcm,bcm2835-v3d";
149         reg = <0x7ec00000 0x1000>;
150         interrupts = <1 10>;
151 };
152
153 vc4: gpu {
154         compatible = "brcm,bcm2835-vc4";
155 };
156
157 panel: panel {
158         compatible = "ontat,yx700wv03", "simple-panel";
159
160         port {
161                 panel_in: endpoint {
162                         remote-endpoint = <&dpi_out>;
163                 };
164         };
165 };