Skip to content

VC4 display support

Eric Anholt edited this page Dec 3, 2016 · 10 revisions

HDMI

HDMI display output is supported. Audio output works in the downstream tree through the VCHIQ audio driver that manages HDMI audio from the firmware side. There is a drm-vc4-hdmi-audio branch working toward enabling open source support for HDMI audio.

Power management is not supported (all clocks and the power domain are on continuously starting from boot).

TV underscan compensation is not currently supported. The current workaround is to ensure that the TV's underscan mode is disabled (which improves image quality).

DSI

Raspberry Pi supports only the official DSI panel. While DSI is a standard, connectors are not standard, and this panel is the only one with appropriate cabling.

DSI is supported in the downstream 4.4 tree in a limited fashion. Power management is not supported, so the display and its backlight is kept on continuously and the HVS is used to implement screen blanking.

DSI is not supported in the upstream kernel tree due to the hackish nature of the current DSI support. There is a branch working on support for it, which brings up a white screen currently. We had some debugging with a scope while at the foundation that suggested the bridge wasn't generating H/Vsync signals. Note that this branch requires the following config.txt lines:

ignore_lcd=2                 # Don't display anything at startup.
disable_touchscreen=1        # Don't mess with the I2C line
mask_gpu_interrupt1=0x1000   # Keep firmware from stealing DSI interrupts

Note for debugging: Gordon Hollingworth reports that the Atmel bridge will wedge regularly if you try to read back its registers, and that's been my experience as well.

Once we figure out what's going wrong with bringing the display up, it will also need a native touchscreen driver on our i2c-gpio node, since the firmware's touchscreen wants to use the hardware I2C controller.

DPI

DPI is fully supported, including power management. Each panel needs individual support in the kernel, since panels typically have custom backlight control or power lines.

One panel, the Adafruit 7" DPI panel, is supported in the upstream tree. It can be enabled with a patch to the device tree, as in this commit

VEC (Composite TV out)

VEC is not supported. The bcm2835-cprman driver supports the clock, and the VC4 driver support just needs to be written.

SPI-attached panels

SPI panels won't be directly controlled by the VC4 driver, since they're driven by the SPI bus that's quite separate from the display pipeline.

See Noralf Tronnes's work for support for these panels. However, we may want to build support for doing HVS scanout to a buffer so that SPI can DMA out of that to the panel. Depending on the SPI protocol, we may even be able to use the direct HVS DMA support.