浏览代码

Merge "disp: msm: Check for hdr properties of connected receiver"

QCTECMDR Service 1 年之前
父节点
当前提交
92ebed2b71
共有 2 个文件被更改,包括 12 次插入2 次删除
  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;