[v8 04/13] drm/i915/display: Handle Colorspace property for lspcon

Uma Shankar uma.shankar at intel.com
Tue Oct 13 22:53:03 UTC 2020


For LSPCON based devices, we need to set HDMI colorspaces instead
of DP counterparts. Fixed the same by checking for lspcon and
accordingly choosing the relevant colorspace structs.

Signed-off-by: Uma Shankar <uma.shankar at intel.com>
---
 drivers/gpu/drm/i915/display/intel_connector.c | 10 +++++++++-
 drivers/gpu/drm/i915/display/intel_dp.c        |  7 ++++---
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_connector.c b/drivers/gpu/drm/i915/display/intel_connector.c
index 406e96785c76..873d4c4d27c6 100644
--- a/drivers/gpu/drm/i915/display/intel_connector.c
+++ b/drivers/gpu/drm/i915/display/intel_connector.c
@@ -281,6 +281,10 @@ intel_attach_aspect_ratio_property(struct drm_connector *connector)
 void
 intel_attach_colorspace_property(struct drm_connector *connector)
 {
+	struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector));
+	struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
+	struct intel_lspcon *lspcon = &dig_port->lspcon;
+
 	switch (connector->connector_type) {
 	case DRM_MODE_CONNECTOR_HDMIA:
 	case DRM_MODE_CONNECTOR_HDMIB:
@@ -289,8 +293,12 @@ intel_attach_colorspace_property(struct drm_connector *connector)
 		break;
 	case DRM_MODE_CONNECTOR_DisplayPort:
 	case DRM_MODE_CONNECTOR_eDP:
-		if (drm_mode_create_dp_colorspace_property(connector))
+		if (lspcon->hdr_supported) {
+			if (drm_mode_create_hdmi_colorspace_property(connector))
+				return;
+		} else if (drm_mode_create_dp_colorspace_property(connector)) {
 			return;
+		}
 		break;
 	default:
 		MISSING_CASE(connector->connector_type);
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 5fe83640fcd3..88c44d39a1fa 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6692,10 +6692,13 @@ intel_dp_connector_register(struct drm_connector *connector)
 		drm_dp_cec_register_connector(&intel_dp->aux, connector);
 
 	lspcon_detect_hdr_capability(lspcon);
-	if (lspcon->hdr_supported)
+	if (lspcon->hdr_supported) {
 		drm_object_attach_property(&connector->base,
 					   connector->dev->mode_config.hdr_output_metadata_property,
 					   0);
+	}
+
+	intel_attach_colorspace_property(connector);
 
 	return ret;
 }
@@ -7088,8 +7091,6 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
 	else if (INTEL_GEN(dev_priv) >= 5)
 		drm_connector_attach_max_bpc_property(connector, 6, 12);
 
-	intel_attach_colorspace_property(connector);
-
 	if (IS_GEMINILAKE(dev_priv) || INTEL_GEN(dev_priv) >= 11)
 		drm_object_attach_property(&connector->base,
 					   connector->dev->mode_config.hdr_output_metadata_property,
-- 
2.26.2



More information about the Intel-gfx-trybot mailing list