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