From afafb7ecd07704fb58cfda27671381e1a41a63c3 Mon Sep 17 00:00:00 2001 From: Zheng Yang Date: Thu, 14 Sep 2017 10:37:37 +0800 Subject: [PATCH] drm: rockchip: hdmi: attach HDR_SOURCE_METADATA property HDR_SOURCE_METADATA property is used to set source hdr metadata, which will be sent to sink though HDMI DRM infoframe. Change-Id: If3500cb505c16c2f0caf66b8e64b4d80b93b228f Signed-off-by: Zheng Yang --- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c index ad708e399457..2be241936ca8 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c @@ -800,6 +800,10 @@ dw_hdmi_rockchip_attatch_properties(struct drm_connector *connector, hdmi->outputmode_capacity = prop; drm_object_attach_property(&connector->base, prop, 0); } + + prop = connector->dev->mode_config.hdr_source_metadata_property; + if (version >= 0x211a) + drm_object_attach_property(&connector->base, prop, 0); } static void @@ -841,6 +845,7 @@ dw_hdmi_rockchip_set_property(struct drm_connector *connector, void *data) { struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data; + struct drm_mode_config *config = &connector->dev->mode_config; if (property == hdmi->color_depth_property) { hdmi->colordepth = val; @@ -848,6 +853,8 @@ dw_hdmi_rockchip_set_property(struct drm_connector *connector, } else if (property == hdmi->hdmi_output_property) { hdmi->hdmi_output = val; return 0; + } else if (property == config->hdr_source_metadata_property) { + return 0; } DRM_ERROR("failed to set rockchip hdmi connector property\n"); @@ -863,6 +870,8 @@ dw_hdmi_rockchip_get_property(struct drm_connector *connector, { struct rockchip_hdmi *hdmi = (struct rockchip_hdmi *)data; struct drm_display_info *info = &connector->display_info; + struct drm_mode_config *config = &connector->dev->mode_config; + const struct drm_connector_state *conn_state = connector->state; if (property == hdmi->color_depth_property) { *val = hdmi->colordepth; @@ -898,6 +907,9 @@ dw_hdmi_rockchip_get_property(struct drm_connector *connector, info->color_formats & DRM_COLOR_FORMAT_YCRCB420) *val |= BIT(DRM_HDMI_OUTPUT_YCBCR420); return 0; + } else if (property == config->hdr_source_metadata_property) { + *val = conn_state->blob_id; + return 0; } DRM_ERROR("failed to get rockchip hdmi connector property\n");