75 lines
2.2 KiB
Diff
75 lines
2.2 KiB
Diff
|
From fa76cd6f0ed305fb2870083842b1ff7bcf027655 Mon Sep 17 00:00:00 2001
|
||
|
From: Sandor Yu <Sandor.yu@nxp.com>
|
||
|
Date: Mon, 9 Dec 2019 17:52:35 +0800
|
||
|
Subject: [PATCH] LF-323-1: drm/bridge/cdns: move link training to bridge
|
||
|
enable function
|
||
|
|
||
|
Move link training and video enable functions from mode_set to
|
||
|
bridge_enable. it is more reasonable.
|
||
|
cdns_dp_mode_set don't needed in HPD thread, DP link training will
|
||
|
resetup in bridge_enable when cable connecting.
|
||
|
|
||
|
Signed-off-by: Sandor Yu <Sandor.yu@nxp.com>
|
||
|
Reviewed-by: Robby Cai <robby.cai@nxp.com>
|
||
|
---
|
||
|
drivers/gpu/drm/bridge/cadence/cdns-dp-core.c | 34 +++++++++++++--------------
|
||
|
1 file changed, 16 insertions(+), 18 deletions(-)
|
||
|
|
||
|
--- a/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c
|
||
|
+++ b/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c
|
||
|
@@ -178,19 +178,6 @@ static void cdns_dp_mode_set(struct cdns
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
- /* Link trainning */
|
||
|
- ret = cdns_mhdp_train_link(mhdp);
|
||
|
- if (ret) {
|
||
|
- DRM_DEV_ERROR(mhdp->dev, "Failed link train %d\n", ret);
|
||
|
- return;
|
||
|
- }
|
||
|
-
|
||
|
- ret = cdns_mhdp_set_video_status(mhdp, CONTROL_VIDEO_VALID);
|
||
|
- if (ret) {
|
||
|
- DRM_DEV_ERROR(mhdp->dev, "Failed to valid video %d\n", ret);
|
||
|
- return;
|
||
|
- }
|
||
|
-
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
@@ -339,6 +326,21 @@ static void cdns_dp_bridge_mode_set(stru
|
||
|
|
||
|
static void cdn_hdp_bridge_enable(struct drm_bridge *bridge)
|
||
|
{
|
||
|
+ struct cdns_mhdp_device *mhdp = bridge->driver_private;
|
||
|
+ int ret;
|
||
|
+
|
||
|
+ /* Link trainning */
|
||
|
+ ret = cdns_mhdp_train_link(mhdp);
|
||
|
+ if (ret) {
|
||
|
+ DRM_DEV_ERROR(mhdp->dev, "Failed link train %d\n", ret);
|
||
|
+ return;
|
||
|
+ }
|
||
|
+
|
||
|
+ ret = cdns_mhdp_set_video_status(mhdp, CONTROL_VIDEO_VALID);
|
||
|
+ if (ret) {
|
||
|
+ DRM_DEV_ERROR(mhdp->dev, "Failed to valid video %d\n", ret);
|
||
|
+ return;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
static void cdn_hdp_bridge_disable(struct drm_bridge *bridge)
|
||
|
@@ -366,11 +368,7 @@ static void hotplug_work_func(struct wor
|
||
|
drm_helper_hpd_irq_event(connector->dev);
|
||
|
|
||
|
if (connector->status == connector_status_connected) {
|
||
|
- /* reset video mode after cable plugin */
|
||
|
- mutex_lock(&mhdp->lock);
|
||
|
- cdns_dp_mode_set(mhdp);
|
||
|
- mutex_unlock(&mhdp->lock);
|
||
|
-
|
||
|
+ /* Cable connedted */
|
||
|
DRM_INFO("HDMI/DP Cable Plug In\n");
|
||
|
enable_irq(mhdp->irq[IRQ_OUT]);
|
||
|
} else if (connector->status == connector_status_disconnected) {
|