Broadcom VC4 (VideoCore4) GPU

The VC4 device present on the Raspberry Pi includes a display system
with HDMI output and the HVS (Hardware Video Scaler) for compositing
display planes.

Required properties for VC4:
- compatible:	Should be "brcm,bcm2835-vc4"

Required properties for Pixel Valve:
- compatible:	Should be one of "brcm,bcm2835-pixelvalve0",
		  "brcm,bcm2835-pixelvalve1", or "brcm,bcm2835-pixelvalve2"
- reg:		Physical base address and length of the PV's registers
- interrupts:	The interrupt number
		  See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt

Required properties for HVS:
- compatible:	Should be "brcm,bcm2835-hvs"
- reg:		Physical base address and length of the HVS's registers
- interrupts:	The interrupt number
		  See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt

Required properties for HDMI
- compatible:	Should be "brcm,bcm2835-hdmi"
- reg:		Physical base address and length of the two register ranges
		  ("HDMI" and "HD", in that order)
- interrupts:	The interrupt numbers
		  See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
- ddc:		phandle of the I2C controller used for DDC EDID probing
- clocks:	a) hdmi: The HDMI state machine clock
		b) pixel: The pixel clock.

Optional properties for HDMI:
- hpd-gpios:	The GPIO pin for HDMI hotplug detect (if it doesn't appear
		  as an interrupt/status bit in the HDMI controller
		  itself).  See bindings/pinctrl/brcm,bcm2835-gpio.txt

Required properties for DPI:
- compatible:	Should be "brcm,bcm2835-dpi"
- reg:		Physical base address and length of the registers
- clocks:	a) core: The core clock the unit runs on
		b) pixel: The pixel clock that feeds the pixelvalve
- port:		Port node with a single endpoint connecting to the panel
		  device, as defined in [1]

Required properties for V3D:
- compatible:	Should be "brcm,bcm2835-v3d"
- reg:		Physical base address and length of the V3D's registers
- interrupts:	The interrupt number
		  See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt

[1] Documentation/devicetree/bindings/media/video-interfaces.txt

Example:
pixelvalve@7e807000 {
	compatible = "brcm,bcm2835-pixelvalve2";
	reg = <0x7e807000 0x100>;
	interrupts = <2 10>; /* pixelvalve */
};

hvs@7e400000 {
	compatible = "brcm,bcm2835-hvs";
	reg = <0x7e400000 0x6000>;
	interrupts = <2 1>;
};

hdmi: hdmi@7e902000 {
	compatible = "brcm,bcm2835-hdmi";
	reg = <0x7e902000 0x600>,
	      <0x7e808000 0x100>;
	interrupts = <2 8>, <2 9>;
	ddc = <&i2c2>;
	hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
	clocks = <&clocks BCM2835_PLLH_PIX>,
		 <&clocks BCM2835_CLOCK_HSM>;
	clock-names = "pixel", "hdmi";
};

dpi: dpi@7e208000 {
	compatible = "brcm,bcm2835-dpi";
	reg = <0x7e208000 0x8c>;
	clocks = <&clocks BCM2835_CLOCK_VPU>,
	         <&clocks BCM2835_CLOCK_DPI>;
	clock-names = "core", "pixel";
	#address-cells = <1>;
	#size-cells = <0>;

	port {
		dpi_out: endpoint@0 {
			remote-endpoint = <&panel_in>;
		};
	};
};

v3d: v3d@7ec00000 {
	compatible = "brcm,bcm2835-v3d";
	reg = <0x7ec00000 0x1000>;
	interrupts = <1 10>;
};

vc4: gpu {
	compatible = "brcm,bcm2835-vc4";
};

panel: panel {
	compatible = "ontat,yx700wv03", "simple-panel";

	port {
		panel_in: endpoint {
			remote-endpoint = <&dpi_out>;
		};
	};
};
