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 <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Link: https://patch.msgid.link/20260609-color-format-v17-5-35739b5782cc@collabora.com
Signed-off-by: Daniel Stone <daniels@collabora.com>
This commit is contained in:
Nicolas Frattaroli 2026-06-09 14:43:52 +02:00 committed by Daniel Stone
parent c761e89065
commit 9743ab2c18

View File

@ -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,
};
/* -----------------------------------------------------------------------------