Explorar el Código

disp: msm: Check for hdr properties of connected receiver

This change checks for hdr capability of connected receiver based on
vsc support of the same. If vsc support is not present, the parsing of
hdr extented block is avoided.

Change-Id: I5db5d1fe3e287123241ade10b698bb32f430ec43
Signed-off-by: Soutrik Mukhopadhyay <[email protected]>
Soutrik Mukhopadhyay hace 1 año
padre
commit
856ef8009f
Se han modificado 2 ficheros con 12 adiciones y 2 borrados
  1. 6 1
      msm/dp/dp_panel.c
  2. 6 1
      msm/sde_edid_parser.c

+ 6 - 1
msm/dp/dp_panel.c

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2024, Qualcomm Innovation Center, Inc. All rights reserved.
  * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
  */
 
@@ -1576,6 +1576,8 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
 	struct dp_panel_private *panel;
 	struct drm_dp_link *link_info;
 	struct drm_dp_aux *drm_aux;
+	struct drm_connector *connector;
+	struct sde_connector *sde_conn;
 	u8 *dpcd, rx_feature, temp;
 	u32 dfp_count = 0, offset = DP_DPCD_REV;
 
@@ -1596,6 +1598,8 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
 	panel->vscext_supported = false;
 	panel->vscext_chaining_supported = false;
 
+	connector = dp_panel->connector;
+	sde_conn = to_sde_connector(connector);
 	rlen = drm_dp_dpcd_read(drm_aux, DP_TRAINING_AUX_RD_INTERVAL, &temp, 1);
 	if (rlen != 1) {
 		DP_ERR("error reading DP_TRAINING_AUX_RD_INTERVAL\n");
@@ -1637,6 +1641,7 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
 		panel->vscext_chaining_supported = !!(rx_feature &
 				VSC_EXT_VESA_SDP_CHAINING_SUPPORTED);
 
+		sde_conn->hdr_supported = panel->vsc_supported;
 		DP_DEBUG("vsc=%d, vscext=%d, vscext_chaining=%d\n",
 				panel->vsc_supported, panel->vscext_supported,
 				panel->vscext_chaining_supported);

+ 6 - 1
msm/sde_edid_parser.c

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
  */
 
@@ -255,6 +255,11 @@ sde_edid_parse_hdr_db(struct drm_connector *connector, const u8 *db)
 	if (!db)
 		return;
 
+	if (!c_conn->hdr_supported) {
+		SDE_INFO("connected receiver does not support HDR\n");
+		return;
+	}
+
 	len = db[0] & 0x1f;
 	/* Byte 3: Electro-Optical Transfer Functions */
 	c_conn->hdr_eotf = db[2] & 0x3F;