The drmm_connector_hdmi_init function can figure out what DRM color formats are supported by a particular connector based on the supported HDMI format bitmask that's passed in.
Use it to register the drm color format property. Signed-off-by: Nicolas Frattaroli <[email protected]> --- drivers/gpu/drm/drm_connector.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 13151d9bfb82..7c38123f99cd 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -578,6 +578,7 @@ int drmm_connector_hdmi_init(struct drm_device *dev, unsigned long supported_formats, unsigned int max_bpc) { + u32 supported_drm_formats = 0; int ret; if (!vendor || !product) @@ -621,6 +622,18 @@ int drmm_connector_hdmi_init(struct drm_device *dev, if (max_bpc > 8) drm_connector_attach_hdr_output_metadata_property(connector); + if (supported_formats & BIT(HDMI_COLORSPACE_RGB)) + supported_drm_formats |= DRM_COLOR_FORMAT_RGB444; + if (supported_formats & BIT(HDMI_COLORSPACE_YUV444)) + supported_drm_formats |= DRM_COLOR_FORMAT_YCBCR444; + if (supported_formats & BIT(HDMI_COLORSPACE_YUV422)) + supported_drm_formats |= DRM_COLOR_FORMAT_YCBCR422; + if (supported_formats & BIT(HDMI_COLORSPACE_YUV420)) + supported_drm_formats |= DRM_COLOR_FORMAT_YCBCR420; + + if (!drm_mode_create_color_format_property(connector, supported_drm_formats)) + drm_connector_attach_color_format_property(connector); + connector->hdmi.funcs = hdmi_funcs; return 0; -- 2.52.0
