From 9743ab2c18204572400dbd8f579ccb85a14d2ad7 Mon Sep 17 00:00:00 2001 From: Nicolas Frattaroli Date: Tue, 9 Jun 2026 14:43:52 +0200 Subject: [PATCH] drm/display: bridge_connector: Use HDMI color format for HDMI conns For bridge connectors which contain an HDMI bridge at some stage, the HDMI state helpers' format selection logic should be involved. Add an implementation for the drm_bridge_funcs color_format function, which translates from the HDMI state's output format to a connector format for bridge connectors involving an HDMI bridge, but return the connector state's color_format member unchanged otherwise. Reviewed-by: Dmitry Baryshkov Reviewed-by: Daniel Stone Signed-off-by: Nicolas Frattaroli Link: https://patch.msgid.link/20260609-color-format-v17-5-35739b5782cc@collabora.com Signed-off-by: Daniel Stone --- .../gpu/drm/display/drm_bridge_connector.c | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c index cafa498c3848..92f8a2d7aab4 100644 --- a/drivers/gpu/drm/display/drm_bridge_connector.c +++ b/drivers/gpu/drm/display/drm_bridge_connector.c @@ -283,6 +283,29 @@ drm_bridge_connector_create_state(struct drm_connector *connector) return conn_state; } +static enum drm_connector_color_format +drm_bridge_connector_color_format(const struct drm_connector_state *conn_state) +{ + struct drm_bridge_connector *bridge_connector = + to_drm_bridge_connector(conn_state->connector); + + if (bridge_connector->bridge_hdmi) { + switch (conn_state->hdmi.output_format) { + default: + case DRM_OUTPUT_COLOR_FORMAT_RGB444: + return DRM_CONNECTOR_COLOR_FORMAT_RGB444; + case DRM_OUTPUT_COLOR_FORMAT_YCBCR444: + return DRM_CONNECTOR_COLOR_FORMAT_YCBCR444; + case DRM_OUTPUT_COLOR_FORMAT_YCBCR422: + return DRM_CONNECTOR_COLOR_FORMAT_YCBCR422; + case DRM_OUTPUT_COLOR_FORMAT_YCBCR420: + return DRM_CONNECTOR_COLOR_FORMAT_YCBCR420; + } + } + + return conn_state->color_format; +} + static const struct drm_connector_funcs drm_bridge_connector_funcs = { .detect = drm_bridge_connector_detect, .force = drm_bridge_connector_force, @@ -292,6 +315,7 @@ static const struct drm_connector_funcs drm_bridge_connector_funcs = { .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, .debugfs_init = drm_bridge_connector_debugfs_init, .oob_hotplug_event = drm_bridge_connector_oob_hotplug_event, + .color_format = drm_bridge_connector_color_format, }; /* -----------------------------------------------------------------------------