| 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) { |