Browse Source

disp: msm: dp: optimize sim function handling in dp_debug

Remove edid/dpcd simulation function from dp_debug and calls to
sim bridge instead to simplify dp_debug module. Also add mst edid
support and mst hpd simulation from aux level.

Move selected mode from dp_debug module to dp_panel module to
simplify mst handling and decouple dp_debug from main dp driver.

Remove custom edid/dpcd mode from dp_panel and dp_aux module.
Remove mst connector list handling from dp_display module.

Change-Id: Ife1d2deb0e353f0a9695b7b90e5bf3459e1c81f7
Signed-off-by: Xiaowen Wu <[email protected]>
Signed-off-by: Karim Henain <[email protected]>
Signed-off-by: Sudarsan Ramesh <[email protected]>
Xiaowen Wu 5 years ago
parent
commit
67ce55687b
10 changed files with 324 additions and 810 deletions
  1. 26 134
      msm/dp/dp_aux.c
  2. 1 4
      msm/dp/dp_aux.h
  3. 235 352
      msm/dp/dp_debug.c
  4. 0 18
      msm/dp/dp_debug.h
  5. 2 170
      msm/dp/dp_display.c
  6. 0 17
      msm/dp/dp_display.h
  7. 11 1
      msm/dp/dp_drm.c
  8. 28 13
      msm/dp/dp_mst_drm.c
  9. 12 98
      msm/dp/dp_panel.c
  10. 9 3
      msm/dp/dp_panel.h

+ 26 - 134
msm/dp/dp_aux.c

@@ -29,6 +29,7 @@ struct dp_aux_private {
 	struct dp_aux_bridge *aux_bridge;
 	struct dp_aux_bridge *aux_bridge;
 	struct dp_aux_bridge *sim_bridge;
 	struct dp_aux_bridge *sim_bridge;
 	bool bridge_in_transfer;
 	bool bridge_in_transfer;
+	bool sim_in_transfer;
 
 
 	bool cmd_busy;
 	bool cmd_busy;
 	bool native;
 	bool native;
@@ -43,9 +44,6 @@ struct dp_aux_private {
 	u32 retry_cnt;
 	u32 retry_cnt;
 
 
 	atomic_t aborted;
 	atomic_t aborted;
-
-	u8 *dpcd;
-	u8 *edid;
 };
 };
 
 
 #ifdef CONFIG_DYNAMIC_DEBUG
 #ifdef CONFIG_DYNAMIC_DEBUG
@@ -477,114 +475,6 @@ static inline bool dp_aux_is_sideband_msg(u32 address, size_t size)
 			(address >= 0x2000 && address + size < 0x2200);
 			(address >= 0x2000 && address + size < 0x2200);
 }
 }
 
 
-static ssize_t dp_aux_transfer_debug(struct drm_dp_aux *drm_aux,
-		struct drm_dp_aux_msg *msg)
-{
-	u32 timeout;
-	ssize_t ret;
-	struct dp_aux_private *aux = container_of(drm_aux,
-		struct dp_aux_private, drm_aux);
-
-	mutex_lock(&aux->mutex);
-
-	ret = dp_aux_transfer_ready(aux, msg, false);
-	if (ret)
-		goto end;
-
-	aux->aux_error_num = DP_AUX_ERR_NONE;
-
-	if (!aux->dpcd || !aux->edid) {
-		DP_ERR("invalid aux/dpcd structure\n");
-		goto end;
-	}
-
-	if ((msg->address + msg->size) > SZ_4K &&
-		!dp_aux_is_sideband_msg(msg->address, msg->size)) {
-		DP_DEBUG("invalid dpcd access: addr=0x%x, size=0x%lx\n",
-				msg->address, msg->size);
-		goto address_error;
-	}
-
-	if (aux->native) {
-		mutex_lock(aux->dp_aux.access_lock);
-		aux->dp_aux.reg = msg->address;
-		aux->dp_aux.read = aux->read;
-		aux->dp_aux.size = msg->size;
-
-		if (!aux->read)
-			memcpy(aux->dpcd + msg->address,
-				msg->buffer, msg->size);
-
-		reinit_completion(&aux->comp);
-		mutex_unlock(aux->dp_aux.access_lock);
-
-		timeout = wait_for_completion_timeout(&aux->comp, HZ * 2);
-		if (!timeout) {
-			DP_ERR("%s timeout: 0x%x\n",
-				aux->read ? "read" : "write",
-				msg->address);
-			atomic_set(&aux->aborted, 1);
-			ret = -ETIMEDOUT;
-			goto end;
-		}
-
-		mutex_lock(aux->dp_aux.access_lock);
-		if (dp_aux_is_sideband_msg(msg->address, msg->size)) {
-			if (!aux->sim_bridge || !aux->sim_bridge->transfer) {
-				DP_ERR("no mst bridge available\n");
-				atomic_set(&aux->aborted, 1);
-				ret = -ETIMEDOUT;
-				goto end;
-			}
-
-			ret = aux->sim_bridge->transfer(aux->sim_bridge,
-				drm_aux, msg);
-		} else if (aux->read) {
-			memcpy(msg->buffer, aux->dpcd + msg->address,
-				msg->size);
-		}
-		mutex_unlock(aux->dp_aux.access_lock);
-
-		aux->aux_error_num = DP_AUX_ERR_NONE;
-	} else {
-		if (aux->read && msg->address == 0x50) {
-			memcpy(msg->buffer,
-				aux->edid + aux->offset - 16,
-				msg->size);
-		}
-	}
-
-	if (aux->aux_error_num == DP_AUX_ERR_NONE) {
-		dp_aux_hex_dump(drm_aux, msg);
-
-		if (!aux->read)
-			memset(msg->buffer, 0, msg->size);
-
-		msg->reply = aux->native ?
-			DP_AUX_NATIVE_REPLY_ACK : DP_AUX_I2C_REPLY_ACK;
-	} else {
-		/* Reply defer to retry */
-		msg->reply = aux->native ?
-			DP_AUX_NATIVE_REPLY_DEFER : DP_AUX_I2C_REPLY_DEFER;
-	}
-
-	ret = msg->size;
-	goto end;
-
-address_error:
-	memset(msg->buffer, 0, msg->size);
-	ret = msg->size;
-end:
-	if (ret == -ETIMEDOUT)
-		aux->dp_aux.state |= DP_STATE_AUX_TIMEOUT;
-	aux->dp_aux.reg = 0xFFFF;
-	aux->dp_aux.read = true;
-	aux->dp_aux.size = 0;
-
-	mutex_unlock(&aux->mutex);
-	return ret;
-}
-
 /*
 /*
  * This function does the real job to process an AUX transaction.
  * This function does the real job to process an AUX transaction.
  * It will call aux_reset() function to reset the AUX channel,
  * It will call aux_reset() function to reset the AUX channel,
@@ -664,6 +554,28 @@ static ssize_t dp_aux_bridge_transfer(struct drm_dp_aux *drm_aux,
 	return size;
 	return size;
 }
 }
 
 
+static ssize_t dp_aux_transfer_debug(struct drm_dp_aux *drm_aux,
+		struct drm_dp_aux_msg *msg)
+{
+	struct dp_aux_private *aux = container_of(drm_aux,
+			struct dp_aux_private, drm_aux);
+	ssize_t size;
+
+	if (aux->sim_in_transfer) {
+		if (aux->aux_bridge && aux->aux_bridge->transfer)
+			size = dp_aux_bridge_transfer(drm_aux, msg);
+		else
+			size = dp_aux_transfer(drm_aux, msg);
+	} else {
+		aux->sim_in_transfer = true;
+		size = aux->sim_bridge->transfer(aux->sim_bridge,
+				drm_aux, msg);
+		aux->sim_in_transfer = false;
+	}
+
+	return size;
+}
+
 static void dp_aux_reset_phy_config_indices(struct dp_aux_cfg *aux_cfg)
 static void dp_aux_reset_phy_config_indices(struct dp_aux_cfg *aux_cfg)
 {
 {
 	int i = 0;
 	int i = 0;
@@ -758,24 +670,8 @@ static void dp_aux_deregister(struct dp_aux *dp_aux)
 	drm_dp_aux_unregister(&aux->drm_aux);
 	drm_dp_aux_unregister(&aux->drm_aux);
 }
 }
 
 
-static void dp_aux_dpcd_updated(struct dp_aux *dp_aux)
-{
-	struct dp_aux_private *aux;
-
-	if (!dp_aux) {
-		DP_ERR("invalid input\n");
-		return;
-	}
-
-	aux = container_of(dp_aux, struct dp_aux_private, dp_aux);
-
-	/* make sure wait has started */
-	usleep_range(20, 30);
-	complete(&aux->comp);
-}
-
-static void dp_aux_set_sim_mode(struct dp_aux *dp_aux, bool en,
-		u8 *edid, u8 *dpcd, struct dp_aux_bridge *sim_bridge)
+static void dp_aux_set_sim_mode(struct dp_aux *dp_aux,
+		struct dp_aux_bridge *sim_bridge)
 {
 {
 	struct dp_aux_private *aux;
 	struct dp_aux_private *aux;
 
 
@@ -788,11 +684,9 @@ static void dp_aux_set_sim_mode(struct dp_aux *dp_aux, bool en,
 
 
 	mutex_lock(&aux->mutex);
 	mutex_lock(&aux->mutex);
 
 
-	aux->edid = edid;
-	aux->dpcd = dpcd;
 	aux->sim_bridge = sim_bridge;
 	aux->sim_bridge = sim_bridge;
 
 
-	if (en) {
+	if (sim_bridge) {
 		atomic_set(&aux->aborted, 0);
 		atomic_set(&aux->aborted, 0);
 		aux->drm_aux.transfer = dp_aux_transfer_debug;
 		aux->drm_aux.transfer = dp_aux_transfer_debug;
 	} else if (aux->aux_bridge && aux->aux_bridge->transfer) {
 	} else if (aux->aux_bridge && aux->aux_bridge->transfer) {
@@ -884,7 +778,6 @@ struct dp_aux *dp_aux_get(struct device *dev, struct dp_catalog_aux *catalog,
 	aux->aux_bridge = aux_bridge;
 	aux->aux_bridge = aux_bridge;
 	dp_aux = &aux->dp_aux;
 	dp_aux = &aux->dp_aux;
 	aux->retry_cnt = 0;
 	aux->retry_cnt = 0;
-	aux->dp_aux.reg = 0xFFFF;
 
 
 	dp_aux->isr     = dp_aux_isr;
 	dp_aux->isr     = dp_aux_isr;
 	dp_aux->init    = dp_aux_init;
 	dp_aux->init    = dp_aux_init;
@@ -893,7 +786,6 @@ struct dp_aux *dp_aux_get(struct device *dev, struct dp_catalog_aux *catalog,
 	dp_aux->drm_aux_deregister = dp_aux_deregister;
 	dp_aux->drm_aux_deregister = dp_aux_deregister;
 	dp_aux->reconfig = dp_aux_reconfig;
 	dp_aux->reconfig = dp_aux_reconfig;
 	dp_aux->abort = dp_aux_abort_transaction;
 	dp_aux->abort = dp_aux_abort_transaction;
-	dp_aux->dpcd_updated = dp_aux_dpcd_updated;
 	dp_aux->set_sim_mode = dp_aux_set_sim_mode;
 	dp_aux->set_sim_mode = dp_aux_set_sim_mode;
 	dp_aux->aux_switch = dp_aux_configure_aux_switch;
 	dp_aux->aux_switch = dp_aux_configure_aux_switch;
 
 

+ 1 - 4
msm/dp/dp_aux.h

@@ -36,8 +36,6 @@ enum dp_aux_error {
 };
 };
 
 
 struct dp_aux {
 struct dp_aux {
-	u32 reg;
-	u32 size;
 	u32 state;
 	u32 state;
 
 
 	bool read;
 	bool read;
@@ -52,8 +50,7 @@ struct dp_aux {
 	void (*deinit)(struct dp_aux *aux);
 	void (*deinit)(struct dp_aux *aux);
 	void (*reconfig)(struct dp_aux *aux);
 	void (*reconfig)(struct dp_aux *aux);
 	void (*abort)(struct dp_aux *aux, bool abort);
 	void (*abort)(struct dp_aux *aux, bool abort);
-	void (*dpcd_updated)(struct dp_aux *aux);
-	void (*set_sim_mode)(struct dp_aux *aux, bool en, u8 *edid, u8 *dpcd,
+	void (*set_sim_mode)(struct dp_aux *aux,
 		struct dp_aux_bridge *sim_bridge);
 		struct dp_aux_bridge *sim_bridge);
 	int (*aux_switch)(struct dp_aux *aux, bool enable, int orientation);
 	int (*aux_switch)(struct dp_aux *aux, bool enable, int orientation);
 };
 };

File diff suppressed because it is too large
+ 235 - 352
msm/dp/dp_debug.c


+ 0 - 18
msm/dp/dp_debug.h

@@ -48,57 +48,39 @@
 
 
 /**
 /**
  * struct dp_debug
  * struct dp_debug
- * @debug_en: specifies whether debug mode enabled
  * @sim_mode: specifies whether sim mode enabled
  * @sim_mode: specifies whether sim mode enabled
  * @psm_enabled: specifies whether psm enabled
  * @psm_enabled: specifies whether psm enabled
  * @hdcp_disabled: specifies if hdcp is disabled
  * @hdcp_disabled: specifies if hdcp is disabled
  * @hdcp_wait_sink_sync: used to wait for sink synchronization before HDCP auth
  * @hdcp_wait_sink_sync: used to wait for sink synchronization before HDCP auth
- * @aspect_ratio: used to filter out aspect_ratio value
- * @vdisplay: used to filter out vdisplay value
- * @hdisplay: used to filter out hdisplay value
- * @vrefresh: used to filter out vrefresh value
  * @tpg_state: specifies whether tpg feature is enabled
  * @tpg_state: specifies whether tpg feature is enabled
  * @max_pclk_khz: max pclk supported
  * @max_pclk_khz: max pclk supported
  * @force_encryption: enable/disable forced encryption for HDCP 2.2
  * @force_encryption: enable/disable forced encryption for HDCP 2.2
  * @skip_uevent: skip hotplug uevent to the user space
  * @skip_uevent: skip hotplug uevent to the user space
  * @hdcp_status: string holding hdcp status information
  * @hdcp_status: string holding hdcp status information
- * @dp_mst_connector_list: list containing all dp mst connectors
- * @mst_hpd_sim: specifies whether simulated hpd enabled
  * @mst_sim_add_con: specifies whether new sim connector is to be added
  * @mst_sim_add_con: specifies whether new sim connector is to be added
  * @mst_sim_remove_con: specifies whether sim connector is to be removed
  * @mst_sim_remove_con: specifies whether sim connector is to be removed
  * @mst_sim_remove_con_id: specifies id of sim connector to be removed
  * @mst_sim_remove_con_id: specifies id of sim connector to be removed
- * @mst_port_cnt: number of mst ports to be added during hpd
  * @connect_notification_delay_ms: time (in ms) to wait for any attention
  * @connect_notification_delay_ms: time (in ms) to wait for any attention
  *              messages before sending the connect notification uevent
  *              messages before sending the connect notification uevent
  * @disconnect_delay_ms: time (in ms) to wait before turning off the mainlink
  * @disconnect_delay_ms: time (in ms) to wait before turning off the mainlink
  *              in response to HPD low of cable disconnect event
  *              in response to HPD low of cable disconnect event
  */
  */
 struct dp_debug {
 struct dp_debug {
-	bool debug_en;
 	bool sim_mode;
 	bool sim_mode;
 	bool psm_enabled;
 	bool psm_enabled;
 	bool hdcp_disabled;
 	bool hdcp_disabled;
 	bool hdcp_wait_sink_sync;
 	bool hdcp_wait_sink_sync;
-	int aspect_ratio;
-	int vdisplay;
-	int hdisplay;
-	int vrefresh;
 	bool tpg_state;
 	bool tpg_state;
 	u32 max_pclk_khz;
 	u32 max_pclk_khz;
 	bool force_encryption;
 	bool force_encryption;
 	bool skip_uevent;
 	bool skip_uevent;
 	char hdcp_status[SZ_128];
 	char hdcp_status[SZ_128];
-	struct dp_mst_connector dp_mst_connector_list;
-	bool mst_hpd_sim;
 	bool mst_sim_add_con;
 	bool mst_sim_add_con;
 	bool mst_sim_remove_con;
 	bool mst_sim_remove_con;
 	int mst_sim_remove_con_id;
 	int mst_sim_remove_con_id;
-	u32 mst_port_cnt;
 	unsigned long connect_notification_delay_ms;
 	unsigned long connect_notification_delay_ms;
 	u32 disconnect_delay_ms;
 	u32 disconnect_delay_ms;
 
 
-	struct dp_mst_connector mst_connector_cache;
-	u8 *(*get_edid)(struct dp_debug *dp_debug);
 	void (*abort)(struct dp_debug *dp_debug);
 	void (*abort)(struct dp_debug *dp_debug);
 	void (*set_mst_con)(struct dp_debug *dp_debug, int con_id);
 	void (*set_mst_con)(struct dp_debug *dp_debug, int con_id);
 };
 };

+ 2 - 170
msm/dp/dp_display.c

@@ -1599,7 +1599,7 @@ static void dp_display_attention_work(struct work_struct *work)
 		goto exit;
 		goto exit;
 	}
 	}
 
 
-	if (dp->debug->mst_hpd_sim || !dp_display_state_is(DP_STATE_READY)) {
+	if (!dp_display_state_is(DP_STATE_READY)) {
 		mutex_unlock(&dp->session_lock);
 		mutex_unlock(&dp->session_lock);
 		goto mst_attention;
 		goto mst_attention;
 	}
 	}
@@ -1740,8 +1740,7 @@ static int dp_display_usbpd_attention_cb(struct device *dev)
 		return 0;
 		return 0;
 	}
 	}
 
 
-	if ((dp->hpd->hpd_irq && dp_display_state_is(DP_STATE_READY)) ||
-			dp->debug->mst_hpd_sim) {
+	if (dp->hpd->hpd_irq && dp_display_state_is(DP_STATE_READY)) {
 		queue_work(dp->wq, &dp->attention_work);
 		queue_work(dp->wq, &dp->attention_work);
 		complete_all(&dp->attention_comp);
 		complete_all(&dp->attention_comp);
 	} else if (dp->process_hpd_connect ||
 	} else if (dp->process_hpd_connect ||
@@ -2796,72 +2795,6 @@ static int dp_display_validate_topology(struct dp_display_private *dp,
 	return 0;
 	return 0;
 }
 }
 
 
-static void dp_display_validate_mst_connectors(struct dp_debug *debug,
-		struct dp_panel *dp_panel, struct drm_display_mode *mode,
-		enum drm_mode_status *mode_status, bool *use_default)
-{
-	struct dp_mst_connector *mst_connector;
-	int hdis, vdis, vref, ar, _hdis, _vdis, _vref, _ar;
-	bool in_list = false;
-
-	/*
-	 * If the connector exists in the mst connector list and if debug is
-	 * enabled for that connector, use the mst connector settings from the
-	 * list for validation. Otherwise, use non-mst default settings.
-	 */
-	mutex_lock(&debug->dp_mst_connector_list.lock);
-
-	if (list_empty(&debug->dp_mst_connector_list.list)) {
-		mutex_unlock(&debug->dp_mst_connector_list.lock);
-		*use_default = true;
-		return;
-	}
-
-	list_for_each_entry(mst_connector, &debug->dp_mst_connector_list.list,
-			list) {
-		if (mst_connector->con_id != dp_panel->connector->base.id)
-			continue;
-
-		in_list = true;
-
-		if (!mst_connector->debug_en) {
-			mutex_unlock(&debug->dp_mst_connector_list.lock);
-			*use_default = false;
-			*mode_status = MODE_OK;
-			return;
-		}
-
-		hdis = mst_connector->hdisplay;
-		vdis = mst_connector->vdisplay;
-		vref = mst_connector->vrefresh;
-		ar = mst_connector->aspect_ratio;
-
-		_hdis = mode->hdisplay;
-		_vdis = mode->vdisplay;
-		_vref = drm_mode_vrefresh(mode);
-		_ar = mode->picture_aspect_ratio;
-
-		if (hdis == _hdis && vdis == _vdis && vref == _vref &&
-				ar == _ar) {
-			mutex_unlock(&debug->dp_mst_connector_list.lock);
-			*use_default = false;
-			*mode_status = MODE_OK;
-			return;
-		}
-
-		break;
-	}
-
-	mutex_unlock(&debug->dp_mst_connector_list.lock);
-
-	if (in_list) {
-		*use_default = false;
-		return;
-	}
-
-	*use_default = true;
-}
-
 static enum drm_mode_status dp_display_validate_mode(
 static enum drm_mode_status dp_display_validate_mode(
 		struct dp_display *dp_display,
 		struct dp_display *dp_display,
 		void *panel, struct drm_display_mode *mode,
 		void *panel, struct drm_display_mode *mode,
@@ -2873,7 +2806,6 @@ static enum drm_mode_status dp_display_validate_mode(
 	enum drm_mode_status mode_status = MODE_BAD;
 	enum drm_mode_status mode_status = MODE_BAD;
 	struct dp_display_mode dp_mode;
 	struct dp_display_mode dp_mode;
 	int rc = 0;
 	int rc = 0;
-	bool use_default = true;
 
 
 	if (!dp_display || !mode || !panel ||
 	if (!dp_display || !mode || !panel ||
 			!avail_res || !avail_res->max_mixer_width) {
 			!avail_res || !avail_res->max_mixer_width) {
@@ -2919,17 +2851,6 @@ static enum drm_mode_status dp_display_validate_mode(
 	if (rc)
 	if (rc)
 		goto end;
 		goto end;
 
 
-	dp_display_validate_mst_connectors(debug, dp_panel, mode, &mode_status,
-			&use_default);
-	if (!use_default)
-		goto end;
-
-	if (debug->debug_en && (mode->hdisplay != debug->hdisplay ||
-			mode->vdisplay != debug->vdisplay ||
-			drm_mode_vrefresh(mode) != debug->vrefresh ||
-			mode->picture_aspect_ratio != debug->aspect_ratio))
-		goto end;
-
 	mode_status = MODE_OK;
 	mode_status = MODE_OK;
 end:
 end:
 	mutex_unlock(&dp->session_lock);
 	mutex_unlock(&dp->session_lock);
@@ -3281,8 +3202,6 @@ static int dp_display_mst_connector_install(struct dp_display *dp_display,
 	struct dp_panel_in panel_in;
 	struct dp_panel_in panel_in;
 	struct dp_panel *dp_panel;
 	struct dp_panel *dp_panel;
 	struct dp_display_private *dp;
 	struct dp_display_private *dp;
-	struct dp_mst_connector *mst_connector;
-	struct dp_mst_connector *cached_connector;
 
 
 	if (!dp_display || !connector) {
 	if (!dp_display || !connector) {
 		DP_ERR("invalid input\n");
 		DP_ERR("invalid input\n");
@@ -3326,38 +3245,6 @@ static int dp_display_mst_connector_install(struct dp_display *dp_display,
 	DP_MST_DEBUG("dp mst connector installed. conn:%d\n",
 	DP_MST_DEBUG("dp mst connector installed. conn:%d\n",
 			connector->base.id);
 			connector->base.id);
 
 
-	mutex_lock(&dp->debug->dp_mst_connector_list.lock);
-
-	mst_connector = kmalloc(sizeof(struct dp_mst_connector),
-			GFP_KERNEL);
-	if (!mst_connector) {
-		mutex_unlock(&dp->debug->dp_mst_connector_list.lock);
-		rc = -ENOMEM;
-		goto end;
-	}
-
-	cached_connector = &dp->debug->mst_connector_cache;
-	if (cached_connector->debug_en) {
-		mst_connector->debug_en = true;
-		mst_connector->hdisplay = cached_connector->hdisplay;
-		mst_connector->vdisplay = cached_connector->vdisplay;
-		mst_connector->vrefresh = cached_connector->vrefresh;
-		mst_connector->aspect_ratio = cached_connector->aspect_ratio;
-		memset(cached_connector, 0, sizeof(*cached_connector));
-		dp->debug->set_mst_con(dp->debug, connector->base.id);
-	} else {
-		mst_connector->debug_en = false;
-	}
-
-	mst_connector->conn = connector;
-	mst_connector->con_id = connector->base.id;
-	mst_connector->state = connector_status_unknown;
-	INIT_LIST_HEAD(&mst_connector->list);
-
-	list_add(&mst_connector->list,
-			&dp->debug->dp_mst_connector_list.list);
-
-	mutex_unlock(&dp->debug->dp_mst_connector_list.lock);
 end:
 end:
 	mutex_unlock(&dp->session_lock);
 	mutex_unlock(&dp->session_lock);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state, rc);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state, rc);
@@ -3372,7 +3259,6 @@ static int dp_display_mst_connector_uninstall(struct dp_display *dp_display,
 	struct sde_connector *sde_conn;
 	struct sde_connector *sde_conn;
 	struct dp_panel *dp_panel;
 	struct dp_panel *dp_panel;
 	struct dp_display_private *dp;
 	struct dp_display_private *dp;
-	struct dp_mst_connector *con_to_remove, *temp_con;
 
 
 	if (!dp_display || !connector) {
 	if (!dp_display || !connector) {
 		DP_ERR("invalid input\n");
 		DP_ERR("invalid input\n");
@@ -3404,64 +3290,12 @@ static int dp_display_mst_connector_uninstall(struct dp_display *dp_display,
 	DP_MST_DEBUG("dp mst connector uninstalled. conn:%d\n",
 	DP_MST_DEBUG("dp mst connector uninstalled. conn:%d\n",
 			connector->base.id);
 			connector->base.id);
 
 
-	mutex_lock(&dp->debug->dp_mst_connector_list.lock);
-
-	list_for_each_entry_safe(con_to_remove, temp_con,
-			&dp->debug->dp_mst_connector_list.list, list) {
-		if (con_to_remove->conn == connector) {
-			/*
-			 * cache any debug info if enabled that can be applied
-			 * on new connectors.
-			 */
-			if (con_to_remove->debug_en)
-				memcpy(&dp->debug->mst_connector_cache,
-						con_to_remove,
-						sizeof(*con_to_remove));
-
-			list_del(&con_to_remove->list);
-			kfree(con_to_remove);
-		}
-	}
-
-	mutex_unlock(&dp->debug->dp_mst_connector_list.lock);
 	mutex_unlock(&dp->session_lock);
 	mutex_unlock(&dp->session_lock);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, dp->state);
 
 
 	return rc;
 	return rc;
 }
 }
 
 
-static int dp_display_mst_get_connector_info(struct dp_display *dp_display,
-			struct drm_connector *connector,
-			struct dp_mst_connector *mst_conn)
-{
-	struct dp_display_private *dp;
-	struct dp_mst_connector *conn, *temp_conn;
-
-	if (!connector || !mst_conn) {
-		DP_ERR("invalid input\n");
-		return -EINVAL;
-	}
-
-	dp = container_of(dp_display, struct dp_display_private, dp_display);
-
-	mutex_lock(&dp->session_lock);
-	if (!dp->mst.drm_registered) {
-		DP_DEBUG("drm mst not registered\n");
-		mutex_unlock(&dp->session_lock);
-		return -EPERM;
-	}
-
-	mutex_lock(&dp->debug->dp_mst_connector_list.lock);
-	list_for_each_entry_safe(conn, temp_conn,
-			&dp->debug->dp_mst_connector_list.list, list) {
-		if (conn->con_id == connector->base.id)
-			memcpy(mst_conn, conn, sizeof(*mst_conn));
-	}
-	mutex_unlock(&dp->debug->dp_mst_connector_list.lock);
-	mutex_unlock(&dp->session_lock);
-	return 0;
-}
-
 static int dp_display_mst_connector_update_edid(struct dp_display *dp_display,
 static int dp_display_mst_connector_update_edid(struct dp_display *dp_display,
 			struct drm_connector *connector,
 			struct drm_connector *connector,
 			struct edid *edid)
 			struct edid *edid)
@@ -3710,8 +3544,6 @@ static int dp_display_probe(struct platform_device *pdev)
 	g_dp_display->set_stream_info = dp_display_set_stream_info;
 	g_dp_display->set_stream_info = dp_display_set_stream_info;
 	g_dp_display->update_pps = dp_display_update_pps;
 	g_dp_display->update_pps = dp_display_update_pps;
 	g_dp_display->convert_to_dp_mode = dp_display_convert_to_dp_mode;
 	g_dp_display->convert_to_dp_mode = dp_display_convert_to_dp_mode;
-	g_dp_display->mst_get_connector_info =
-					dp_display_mst_get_connector_info;
 	g_dp_display->mst_get_fixed_topology_port =
 	g_dp_display->mst_get_fixed_topology_port =
 					dp_display_mst_get_fixed_topology_port;
 					dp_display_mst_get_fixed_topology_port;
 	g_dp_display->wakeup_phy_layer =
 	g_dp_display->wakeup_phy_layer =

+ 0 - 17
msm/dp/dp_display.h

@@ -11,7 +11,6 @@
 
 
 #include "dp_panel.h"
 #include "dp_panel.h"
 
 
-#define DP_MST_SIM_MAX_PORTS	8
 
 
 enum dp_drv_state {
 enum dp_drv_state {
 	PM_DEFAULT,
 	PM_DEFAULT,
@@ -38,19 +37,6 @@ struct dp_mst_caps {
 	struct drm_dp_aux *drm_aux;
 	struct drm_dp_aux *drm_aux;
 };
 };
 
 
-struct dp_mst_connector {
-	bool debug_en;
-	int con_id;
-	int hdisplay;
-	int vdisplay;
-	int vrefresh;
-	int aspect_ratio;
-	struct drm_connector *conn;
-	struct mutex lock;
-	struct list_head list;
-	enum drm_connector_status state;
-};
-
 struct dp_display {
 struct dp_display {
 	struct drm_device *drm_dev;
 	struct drm_device *drm_dev;
 	struct dp_bridge *bridge;
 	struct dp_bridge *bridge;
@@ -100,9 +86,6 @@ struct dp_display {
 			struct edid *edid);
 			struct edid *edid);
 	int (*mst_connector_update_link_info)(struct dp_display *dp_display,
 	int (*mst_connector_update_link_info)(struct dp_display *dp_display,
 			struct drm_connector *connector);
 			struct drm_connector *connector);
-	int (*mst_get_connector_info)(struct dp_display *dp_display,
-			struct drm_connector *connector,
-			struct dp_mst_connector *mst_conn);
 	int (*mst_get_fixed_topology_port)(struct dp_display *dp_display,
 	int (*mst_get_fixed_topology_port)(struct dp_display *dp_display,
 			u32 strm_id, u32 *port_num);
 			u32 strm_id, u32 *port_num);
 	int (*get_mst_caps)(struct dp_display *dp_display,
 	int (*get_mst_caps)(struct dp_display *dp_display,

+ 11 - 1
msm/dp/dp_drm.c

@@ -654,10 +654,11 @@ enum drm_mode_status dp_connector_mode_valid(struct drm_connector *connector,
 		struct drm_display_mode *mode, void *display,
 		struct drm_display_mode *mode, void *display,
 		const struct msm_resource_caps_info *avail_res)
 		const struct msm_resource_caps_info *avail_res)
 {
 {
-	int rc = 0;
+	int rc = 0, vrefresh;
 	struct dp_display *dp_disp;
 	struct dp_display *dp_disp;
 	struct sde_connector *sde_conn;
 	struct sde_connector *sde_conn;
 	struct msm_resource_caps_info avail_dp_res;
 	struct msm_resource_caps_info avail_dp_res;
+	struct dp_panel *dp_panel;
 
 
 	if (!mode || !display || !connector) {
 	if (!mode || !display || !connector) {
 		DP_ERR("invalid params\n");
 		DP_ERR("invalid params\n");
@@ -671,6 +672,9 @@ enum drm_mode_status dp_connector_mode_valid(struct drm_connector *connector,
 	}
 	}
 
 
 	dp_disp = display;
 	dp_disp = display;
+	dp_panel = sde_conn->drv_panel;
+
+	vrefresh = drm_mode_vrefresh(mode);
 
 
 	rc = dp_disp->get_available_dp_resources(dp_disp, avail_res,
 	rc = dp_disp->get_available_dp_resources(dp_disp, avail_res,
 			&avail_dp_res);
 			&avail_dp_res);
@@ -679,6 +683,12 @@ enum drm_mode_status dp_connector_mode_valid(struct drm_connector *connector,
 		return MODE_ERROR;
 		return MODE_ERROR;
 	}
 	}
 
 
+	if (dp_panel->mode_override && (mode->hdisplay != dp_panel->hdisplay ||
+			mode->vdisplay != dp_panel->vdisplay ||
+			vrefresh != dp_panel->vrefresh ||
+			mode->picture_aspect_ratio != dp_panel->aspect_ratio))
+		return MODE_BAD;
+
 	return dp_disp->validate_mode(dp_disp, sde_conn->drv_panel,
 	return dp_disp->validate_mode(dp_disp, sde_conn->drv_panel,
 			mode, &avail_dp_res);
 			mode, &avail_dp_res);
 }
 }

+ 28 - 13
msm/dp/dp_mst_drm.c

@@ -896,25 +896,27 @@ dp_mst_connector_detect(struct drm_connector *connector, bool force,
 	struct sde_connector *c_conn = to_sde_connector(connector);
 	struct sde_connector *c_conn = to_sde_connector(connector);
 	struct dp_display *dp_display = c_conn->display;
 	struct dp_display *dp_display = c_conn->display;
 	struct dp_mst_private *mst = dp_display->dp_mst_prv_info;
 	struct dp_mst_private *mst = dp_display->dp_mst_prv_info;
-	enum drm_connector_status status;
-	struct dp_mst_connector mst_conn;
+	struct dp_panel *dp_panel;
 	struct drm_modeset_acquire_ctx ctx;
 	struct drm_modeset_acquire_ctx ctx;
+	enum drm_connector_status status;
 
 
 	DP_MST_DEBUG("enter:\n");
 	DP_MST_DEBUG("enter:\n");
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_ENTRY);
 
 
+	if (!c_conn->drv_panel || !c_conn->mst_port) {
+		DP_DEBUG("conn %d is invalid\n");
+		return connector_status_disconnected;
+	}
+
+	dp_panel = c_conn->drv_panel;
+
+	if (dp_panel->mst_hide)
+		return connector_status_disconnected;
+
 	drm_modeset_acquire_init(&ctx, 0);
 	drm_modeset_acquire_init(&ctx, 0);
 
 
 	status = mst->mst_fw_cbs->detect_port_ctx(connector,
 	status = mst->mst_fw_cbs->detect_port_ctx(connector,
-			&ctx, &mst->mst_mgr,
-			c_conn->mst_port);
-
-	memset(&mst_conn, 0, sizeof(mst_conn));
-	dp_display->mst_get_connector_info(dp_display, connector, &mst_conn);
-	if (mst_conn.conn == connector &&
-			mst_conn.state != connector_status_unknown) {
-		status = mst_conn.state;
-	}
+			&ctx, &mst->mst_mgr, c_conn->mst_port);
 
 
 	DP_MST_INFO("conn:%d status:%d\n", connector->base.id, status);
 	DP_MST_INFO("conn:%d status:%d\n", connector->base.id, status);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, connector->base.id, status);
 	SDE_EVT32_EXTERNAL(SDE_EVTLOG_FUNC_EXIT, connector->base.id, status);
@@ -989,10 +991,11 @@ enum drm_mode_status dp_mst_connector_mode_valid(
 	struct sde_connector *c_conn;
 	struct sde_connector *c_conn;
 	struct drm_dp_mst_port *mst_port;
 	struct drm_dp_mst_port *mst_port;
 	struct dp_display_mode dp_mode;
 	struct dp_display_mode dp_mode;
+	struct dp_panel *dp_panel;
 	uint16_t full_pbn, required_pbn;
 	uint16_t full_pbn, required_pbn;
 	int available_slots, required_slots;
 	int available_slots, required_slots;
 	struct dp_mst_bridge_state *dp_bridge_state;
 	struct dp_mst_bridge_state *dp_bridge_state;
-	int i, slots_in_use = 0, active_enc_cnt = 0;
+	int i, vrefresh, slots_in_use = 0, active_enc_cnt = 0;
 	const u32 tot_slots = 63;
 	const u32 tot_slots = 63;
 
 
 	if (!connector || !mode || !display) {
 	if (!connector || !mode || !display) {
@@ -1003,6 +1006,18 @@ enum drm_mode_status dp_mst_connector_mode_valid(
 	mst = dp_display->dp_mst_prv_info;
 	mst = dp_display->dp_mst_prv_info;
 	c_conn = to_sde_connector(connector);
 	c_conn = to_sde_connector(connector);
 	mst_port = c_conn->mst_port;
 	mst_port = c_conn->mst_port;
+	dp_panel = c_conn->drv_panel;
+
+	if (!dp_panel || !mst_port)
+		return MODE_ERROR;
+
+	vrefresh = drm_mode_vrefresh(mode);
+
+	if (dp_panel->mode_override && (mode->hdisplay != dp_panel->hdisplay ||
+			mode->vdisplay != dp_panel->vdisplay ||
+			vrefresh != dp_panel->vrefresh ||
+			mode->picture_aspect_ratio != dp_panel->aspect_ratio))
+		return MODE_BAD;
 
 
 	/* dp bridge state is protected by drm_mode_config.connection_mutex */
 	/* dp bridge state is protected by drm_mode_config.connection_mutex */
 	for (i = 0; i < MAX_DP_MST_DRM_BRIDGES; i++) {
 	for (i = 0; i < MAX_DP_MST_DRM_BRIDGES; i++) {
@@ -1036,7 +1051,7 @@ enum drm_mode_status dp_mst_connector_mode_valid(
 		return MODE_BAD;
 		return MODE_BAD;
 	}
 	}
 
 
-	return dp_connector_mode_valid(connector, mode, display, avail_res);
+	return dp_display->validate_mode(dp_display, dp_panel, mode, avail_res);
 }
 }
 
 
 int dp_mst_connector_get_info(struct drm_connector *connector,
 int dp_mst_connector_get_info(struct drm_connector *connector,

+ 12 - 98
msm/dp/dp_panel.c

@@ -69,8 +69,6 @@ struct dp_panel_private {
 	struct dp_link *link;
 	struct dp_link *link;
 	struct dp_parser *parser;
 	struct dp_parser *parser;
 	struct dp_catalog_panel *catalog;
 	struct dp_catalog_panel *catalog;
-	bool custom_edid;
-	bool custom_dpcd;
 	bool panel_on;
 	bool panel_on;
 	bool vsc_supported;
 	bool vsc_supported;
 	bool vscext_supported;
 	bool vscext_supported;
@@ -1489,11 +1487,6 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
 	panel->vscext_supported = false;
 	panel->vscext_supported = false;
 	panel->vscext_chaining_supported = false;
 	panel->vscext_chaining_supported = false;
 
 
-	if (panel->custom_dpcd) {
-		DP_DEBUG("skip dpcd read in debug mode\n");
-		goto skip_dpcd_read;
-	}
-
 	rlen = drm_dp_dpcd_read(drm_aux, DP_TRAINING_AUX_RD_INTERVAL, &temp, 1);
 	rlen = drm_dp_dpcd_read(drm_aux, DP_TRAINING_AUX_RD_INTERVAL, &temp, 1);
 	if (rlen != 1) {
 	if (rlen != 1) {
 		DP_ERR("error reading DP_TRAINING_AUX_RD_INTERVAL\n");
 		DP_ERR("error reading DP_TRAINING_AUX_RD_INTERVAL\n");
@@ -1527,26 +1520,22 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel, bool multi_func)
 	if (rlen != 1) {
 	if (rlen != 1) {
 		DP_DEBUG("failed to read DPRX_FEATURE_ENUMERATION_LIST\n");
 		DP_DEBUG("failed to read DPRX_FEATURE_ENUMERATION_LIST\n");
 		rx_feature = 0;
 		rx_feature = 0;
-	}
-
-skip_dpcd_read:
-	if (panel->custom_dpcd)
-		rx_feature = dp_panel->dpcd[DP_RECEIVER_CAP_SIZE + 1];
-
-	panel->vsc_supported = !!(rx_feature &
-		VSC_SDP_EXTENSION_FOR_COLORIMETRY_SUPPORTED);
-	panel->vscext_supported = !!(rx_feature & VSC_EXT_VESA_SDP_SUPPORTED);
-	panel->vscext_chaining_supported = !!(rx_feature &
-			VSC_EXT_VESA_SDP_CHAINING_SUPPORTED);
+	} else {
+		panel->vsc_supported = !!(rx_feature &
+				VSC_SDP_EXTENSION_FOR_COLORIMETRY_SUPPORTED);
+		panel->vscext_supported = !!(rx_feature &
+		 		VSC_EXT_VESA_SDP_SUPPORTED);
+		panel->vscext_chaining_supported = !!(rx_feature &
+				VSC_EXT_VESA_SDP_CHAINING_SUPPORTED);
 
 
-	DP_DEBUG("vsc=%d, vscext=%d, vscext_chaining=%d\n",
-		panel->vsc_supported, panel->vscext_supported,
-		panel->vscext_chaining_supported);
+		DP_DEBUG("vsc=%d, vscext=%d, vscext_chaining=%d\n",
+				panel->vsc_supported, panel->vscext_supported,
+				panel->vscext_chaining_supported);
+	}
 
 
 	link_info->revision = dpcd[DP_DPCD_REV];
 	link_info->revision = dpcd[DP_DPCD_REV];
 	panel->major = (link_info->revision >> 4) & 0x0f;
 	panel->major = (link_info->revision >> 4) & 0x0f;
 	panel->minor = link_info->revision & 0x0f;
 	panel->minor = link_info->revision & 0x0f;
-
 	/* override link params updated in dp_panel_init_panel_info */
 	/* override link params updated in dp_panel_init_panel_info */
 	link_info->rate = min_t(unsigned long, panel->parser->max_lclk_khz,
 	link_info->rate = min_t(unsigned long, panel->parser->max_lclk_khz,
 			drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE]));
 			drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE]));
@@ -1617,74 +1606,6 @@ static int dp_panel_set_default_link_params(struct dp_panel *dp_panel)
 	return 0;
 	return 0;
 }
 }
 
 
-static bool dp_panel_validate_edid(struct edid *edid, size_t edid_size)
-{
-	if (!edid || (edid_size < EDID_LENGTH))
-		return false;
-
-	if (EDID_LENGTH * (edid->extensions + 1) > edid_size) {
-		DP_ERR("edid size does not match allocated.\n");
-		return false;
-	}
-
-	if (!drm_edid_is_valid(edid)) {
-		DP_ERR("invalid edid.\n");
-		return false;
-	}
-	return true;
-}
-
-static int dp_panel_set_edid(struct dp_panel *dp_panel, u8 *edid,
-		size_t edid_size)
-{
-	struct dp_panel_private *panel;
-
-	if (!dp_panel) {
-		DP_ERR("invalid input\n");
-		return -EINVAL;
-	}
-
-	panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
-
-	if (edid && dp_panel_validate_edid((struct edid *)edid, edid_size)) {
-		dp_panel->edid_ctrl->edid = (struct edid *)edid;
-		panel->custom_edid = true;
-	} else {
-		panel->custom_edid = false;
-		dp_panel->edid_ctrl->edid = NULL;
-	}
-
-	DP_DEBUG("%d\n", panel->custom_edid);
-	return 0;
-}
-
-static int dp_panel_set_dpcd(struct dp_panel *dp_panel, u8 *dpcd)
-{
-	struct dp_panel_private *panel;
-	u8 *dp_dpcd;
-
-	if (!dp_panel) {
-		DP_ERR("invalid input\n");
-		return -EINVAL;
-	}
-
-	dp_dpcd = dp_panel->dpcd;
-
-	panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
-
-	if (dpcd) {
-		memcpy(dp_dpcd, dpcd, DP_RECEIVER_CAP_SIZE +
-				DP_RECEIVER_EXT_CAP_SIZE + 1);
-		panel->custom_dpcd = true;
-	} else {
-		panel->custom_dpcd = false;
-	}
-
-	DP_DEBUG("%d\n", panel->custom_dpcd);
-
-	return 0;
-}
-
 static int dp_panel_read_edid(struct dp_panel *dp_panel,
 static int dp_panel_read_edid(struct dp_panel *dp_panel,
 	struct drm_connector *connector)
 	struct drm_connector *connector)
 {
 {
@@ -1699,11 +1620,6 @@ static int dp_panel_read_edid(struct dp_panel *dp_panel,
 
 
 	panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
 	panel = container_of(dp_panel, struct dp_panel_private, dp_panel);
 
 
-	if (panel->custom_edid) {
-		DP_DEBUG("skip edid read in debug mode\n");
-		goto end;
-	}
-
 	sde_get_edid(connector, &panel->aux->drm_aux->ddc,
 	sde_get_edid(connector, &panel->aux->drm_aux->ddc,
 		(void **)&dp_panel->edid_ctrl);
 		(void **)&dp_panel->edid_ctrl);
 	if (!dp_panel->edid_ctrl->edid) {
 	if (!dp_panel->edid_ctrl->edid) {
@@ -2347,7 +2263,7 @@ static int dp_panel_deinit_panel_info(struct dp_panel *dp_panel, u32 flags)
 	shdr_if_sdp = &panel->catalog->shdr_if_sdp;
 	shdr_if_sdp = &panel->catalog->shdr_if_sdp;
 	vsc_colorimetry = &panel->catalog->vsc_colorimetry;
 	vsc_colorimetry = &panel->catalog->vsc_colorimetry;
 
 
-	if (!panel->custom_edid && dp_panel->edid_ctrl->edid)
+	if (dp_panel->edid_ctrl->edid)
 		sde_free_edid((void **)&dp_panel->edid_ctrl);
 		sde_free_edid((void **)&dp_panel->edid_ctrl);
 
 
 	dp_panel_set_stream_info(dp_panel, DP_STREAM_MAX, 0, 0, 0, 0);
 	dp_panel_set_stream_info(dp_panel, DP_STREAM_MAX, 0, 0, 0, 0);
@@ -3083,8 +2999,6 @@ struct dp_panel *dp_panel_get(struct dp_panel_in *in)
 	dp_panel->get_mode_bpp = dp_panel_get_mode_bpp;
 	dp_panel->get_mode_bpp = dp_panel_get_mode_bpp;
 	dp_panel->get_modes = dp_panel_get_modes;
 	dp_panel->get_modes = dp_panel_get_modes;
 	dp_panel->handle_sink_request = dp_panel_handle_sink_request;
 	dp_panel->handle_sink_request = dp_panel_handle_sink_request;
-	dp_panel->set_edid = dp_panel_set_edid;
-	dp_panel->set_dpcd = dp_panel_set_dpcd;
 	dp_panel->tpg_config = dp_panel_tpg_config;
 	dp_panel->tpg_config = dp_panel_tpg_config;
 	dp_panel->spd_config = dp_panel_spd_config;
 	dp_panel->spd_config = dp_panel_spd_config;
 	dp_panel->setup_hdr = dp_panel_setup_hdr;
 	dp_panel->setup_hdr = dp_panel_setup_hdr;

+ 9 - 3
msm/dp/dp_panel.h

@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
 /*
- * Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
  */
  */
 
 
 #ifndef _DP_PANEL_H_
 #ifndef _DP_PANEL_H_
@@ -151,6 +151,14 @@ struct dp_panel {
 	bool dsc_continuous_pps;
 	bool dsc_continuous_pps;
 	bool mst_state;
 	bool mst_state;
 
 
+	/* override debug option */
+	bool mst_hide;
+	bool mode_override;
+	int hdisplay;
+	int vdisplay;
+	int vrefresh;
+	int aspect_ratio;
+
 	s64 fec_overhead_fp;
 	s64 fec_overhead_fp;
 
 
 	int (*init)(struct dp_panel *dp_panel);
 	int (*init)(struct dp_panel *dp_panel);
@@ -163,8 +171,6 @@ struct dp_panel {
 	int (*get_modes)(struct dp_panel *dp_panel,
 	int (*get_modes)(struct dp_panel *dp_panel,
 		struct drm_connector *connector, struct dp_display_mode *mode);
 		struct drm_connector *connector, struct dp_display_mode *mode);
 	void (*handle_sink_request)(struct dp_panel *dp_panel);
 	void (*handle_sink_request)(struct dp_panel *dp_panel);
-	int (*set_edid)(struct dp_panel *dp_panel, u8 *edid, size_t edid_size);
-	int (*set_dpcd)(struct dp_panel *dp_panel, u8 *dpcd);
 	int (*setup_hdr)(struct dp_panel *dp_panel,
 	int (*setup_hdr)(struct dp_panel *dp_panel,
 		struct drm_msm_ext_hdr_metadata *hdr_meta,
 		struct drm_msm_ext_hdr_metadata *hdr_meta,
 			bool dhdr_update, u64 core_clk_rate, bool flush);
 			bool dhdr_update, u64 core_clk_rate, bool flush);

Some files were not shown because too many files changed in this diff