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