[PATCH RFC 0/5] drm/meson: Add support for HDMI2.0 YUV420 4k60

From: Neil Armstrong
Date: Fri Mar 29 2019 - 06:42:47 EST


The Synopsys DW-HDMI CSC does not support downsampling to YUV420, so
the encoder must downsamle before, feeding the controller with a YUV420
pixel stream.

The encoder must declare the new bus format enc encoding the bridge, in
order to take it in account.

To solve this, a new format_set() bridge op is added, permitting setting
a new input bus format and encoding to the bridge chain.

This solves YUV420 setup, but also solved setting 10bit, 12bit or 16bit
input bus format in order to support HDMI >8bit depths.

The DW-HDMI controller is updated to dynamically select a coherent output
bus format depending on the input bus format and on the internal CSC
supported modes.

The DW-HDMI is also updated to support the connector display_info bus_formats
entry to permit forcing a specific output bus format to force, for example,
an YUV444 output format instead of the default RGB output bus format.

Only the meson DRM dw_hdmi glue allows ycbcr420 modes, so no breakage
is expected here.

The remaining patches adds support for 4:2:0 output and clock setup for
the meson DW-HDMI glue, and how YUV444 output can be forced.

Neil Armstrong (5):
drm/bridge: dw-hdmi: allow ycbcr420 modes for >= 0x200a
drm/bridge: add encoder support to specify bridge input format
drm/bridge: dw-hdmi: Add support for dynamic output format setup
drm/meson: Add YUV420 output support
drm/meson: Output in YUV444 if sink supports it

drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 127 ++++++++++++++++++++--
drivers/gpu/drm/drm_bridge.c | 35 ++++++
drivers/gpu/drm/meson/meson_dw_hdmi.c | 111 ++++++++++++++++---
drivers/gpu/drm/meson/meson_vclk.c | 93 ++++++++++++----
drivers/gpu/drm/meson/meson_vclk.h | 7 +-
drivers/gpu/drm/meson/meson_venc.c | 6 +-
drivers/gpu/drm/meson/meson_venc.h | 11 ++
drivers/gpu/drm/meson/meson_venc_cvbs.c | 3 +-
include/drm/bridge/dw_hdmi.h | 1 +
include/drm/drm_bridge.h | 19 ++++
10 files changed, 358 insertions(+), 55 deletions(-)

--
2.21.0