175 lines
5.1 KiB
Plaintext
175 lines
5.1 KiB
Plaintext
|
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" or "brcm,cygnus-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
|
||
|
- dmas: Should contain one entry pointing to the DMA channel used to
|
||
|
transfer audio data
|
||
|
- dma-names: Should contain "audio-rx"
|
||
|
|
||
|
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 VEC:
|
||
|
- compatible: Should be "brcm,bcm2835-vec"
|
||
|
- reg: Physical base address and length of the registers
|
||
|
- clocks: The core clock the unit runs on
|
||
|
- interrupts: The interrupt number
|
||
|
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
|
||
|
|
||
|
Required properties for V3D:
|
||
|
- compatible: Should be "brcm,bcm2835-v3d" or "brcm,cygnus-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
|
||
|
|
||
|
Optional properties for V3D:
|
||
|
- clocks: The clock the unit runs on
|
||
|
|
||
|
Required properties for DSI:
|
||
|
- compatible: Should be "brcm,bcm2835-dsi0" or "brcm,bcm2835-dsi1"
|
||
|
- reg: Physical base address and length of the DSI block's registers
|
||
|
- interrupts: The interrupt number
|
||
|
See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
|
||
|
- clocks: a) phy: The DSI PLL clock feeding the DSI analog PHY
|
||
|
b) escape: The DSI ESC clock from CPRMAN
|
||
|
c) pixel: The DSI pixel clock from CPRMAN
|
||
|
- clock-output-names:
|
||
|
The 3 clocks output from the DSI analog PHY: dsi[01]_byte,
|
||
|
dsi[01]_ddr2, and dsi[01]_ddr
|
||
|
|
||
|
Required properties for the TXP (writeback) block:
|
||
|
- compatible: Should be "brcm,bcm2835-txp"
|
||
|
- reg: Physical base address and length of the TXP block'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>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
dsi1: dsi@7e700000 {
|
||
|
compatible = "brcm,bcm2835-dsi1";
|
||
|
reg = <0x7e700000 0x8c>;
|
||
|
interrupts = <2 12>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
#clock-cells = <1>;
|
||
|
|
||
|
clocks = <&clocks BCM2835_PLLD_DSI1>,
|
||
|
<&clocks BCM2835_CLOCK_DSI1E>,
|
||
|
<&clocks BCM2835_CLOCK_DSI1P>;
|
||
|
clock-names = "phy", "escape", "pixel";
|
||
|
|
||
|
clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
|
||
|
|
||
|
pitouchscreen: panel@0 {
|
||
|
compatible = "raspberrypi,touchscreen";
|
||
|
reg = <0>;
|
||
|
|
||
|
<...>
|
||
|
};
|
||
|
};
|
||
|
|
||
|
vec: vec@7e806000 {
|
||
|
compatible = "brcm,bcm2835-vec";
|
||
|
reg = <0x7e806000 0x1000>;
|
||
|
clocks = <&clocks BCM2835_CLOCK_VEC>;
|
||
|
interrupts = <2 27>;
|
||
|
};
|
||
|
|
||
|
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>;
|
||
|
};
|
||
|
};
|
||
|
};
|