b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | From fa76cd6f0ed305fb2870083842b1ff7bcf027655 Mon Sep 17 00:00:00 2001 |
| 2 | From: Sandor Yu <Sandor.yu@nxp.com> |
| 3 | Date: Mon, 9 Dec 2019 17:52:35 +0800 |
| 4 | Subject: [PATCH] LF-323-1: drm/bridge/cdns: move link training to bridge |
| 5 | enable function |
| 6 | |
| 7 | Move link training and video enable functions from mode_set to |
| 8 | bridge_enable. it is more reasonable. |
| 9 | cdns_dp_mode_set don't needed in HPD thread, DP link training will |
| 10 | resetup in bridge_enable when cable connecting. |
| 11 | |
| 12 | Signed-off-by: Sandor Yu <Sandor.yu@nxp.com> |
| 13 | Reviewed-by: Robby Cai <robby.cai@nxp.com> |
| 14 | --- |
| 15 | drivers/gpu/drm/bridge/cadence/cdns-dp-core.c | 34 +++++++++++++-------------- |
| 16 | 1 file changed, 16 insertions(+), 18 deletions(-) |
| 17 | |
| 18 | --- a/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c |
| 19 | +++ b/drivers/gpu/drm/bridge/cadence/cdns-dp-core.c |
| 20 | @@ -178,19 +178,6 @@ static void cdns_dp_mode_set(struct cdns |
| 21 | return; |
| 22 | } |
| 23 | |
| 24 | - /* Link trainning */ |
| 25 | - ret = cdns_mhdp_train_link(mhdp); |
| 26 | - if (ret) { |
| 27 | - DRM_DEV_ERROR(mhdp->dev, "Failed link train %d\n", ret); |
| 28 | - return; |
| 29 | - } |
| 30 | - |
| 31 | - ret = cdns_mhdp_set_video_status(mhdp, CONTROL_VIDEO_VALID); |
| 32 | - if (ret) { |
| 33 | - DRM_DEV_ERROR(mhdp->dev, "Failed to valid video %d\n", ret); |
| 34 | - return; |
| 35 | - } |
| 36 | - |
| 37 | return; |
| 38 | } |
| 39 | |
| 40 | @@ -339,6 +326,21 @@ static void cdns_dp_bridge_mode_set(stru |
| 41 | |
| 42 | static void cdn_hdp_bridge_enable(struct drm_bridge *bridge) |
| 43 | { |
| 44 | + struct cdns_mhdp_device *mhdp = bridge->driver_private; |
| 45 | + int ret; |
| 46 | + |
| 47 | + /* Link trainning */ |
| 48 | + ret = cdns_mhdp_train_link(mhdp); |
| 49 | + if (ret) { |
| 50 | + DRM_DEV_ERROR(mhdp->dev, "Failed link train %d\n", ret); |
| 51 | + return; |
| 52 | + } |
| 53 | + |
| 54 | + ret = cdns_mhdp_set_video_status(mhdp, CONTROL_VIDEO_VALID); |
| 55 | + if (ret) { |
| 56 | + DRM_DEV_ERROR(mhdp->dev, "Failed to valid video %d\n", ret); |
| 57 | + return; |
| 58 | + } |
| 59 | } |
| 60 | |
| 61 | static void cdn_hdp_bridge_disable(struct drm_bridge *bridge) |
| 62 | @@ -366,11 +368,7 @@ static void hotplug_work_func(struct wor |
| 63 | drm_helper_hpd_irq_event(connector->dev); |
| 64 | |
| 65 | if (connector->status == connector_status_connected) { |
| 66 | - /* reset video mode after cable plugin */ |
| 67 | - mutex_lock(&mhdp->lock); |
| 68 | - cdns_dp_mode_set(mhdp); |
| 69 | - mutex_unlock(&mhdp->lock); |
| 70 | - |
| 71 | + /* Cable connedted */ |
| 72 | DRM_INFO("HDMI/DP Cable Plug In\n"); |
| 73 | enable_irq(mhdp->irq[IRQ_OUT]); |
| 74 | } else if (connector->status == connector_status_disconnected) { |