Call drm_bridge_hpd_notify() instead of drm_helper_hpd_irq_event(). This
way, we can directly call hpd_notify() via the bridge connector.

Signed-off-by: Jessica Zhang <jessica.zh...@oss.qualcomm.com>
---
 drivers/gpu/drm/msm/dp/dp_display.c | 17 +++++------------
 drivers/gpu/drm/msm/dp/dp_display.h |  1 +
 drivers/gpu/drm/msm/dp/dp_drm.c     |  2 ++
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 55fe8c95657e..8779bcd1b27c 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -333,17 +333,6 @@ static const struct component_ops msm_dp_display_comp_ops 
= {
        .unbind = msm_dp_display_unbind,
 };
 
-static void msm_dp_display_send_hpd_event(struct msm_dp *msm_dp_display)
-{
-       struct msm_dp_display_private *dp;
-       struct drm_connector *connector;
-
-       dp = container_of(msm_dp_display, struct msm_dp_display_private, 
msm_dp_display);
-
-       connector = dp->msm_dp_display.connector;
-       drm_helper_hpd_irq_event(connector->dev);
-}
-
 static int msm_dp_display_send_hpd_notification(struct msm_dp_display_private 
*dp,
                                            bool hpd)
 {
@@ -367,7 +356,11 @@ static int msm_dp_display_send_hpd_notification(struct 
msm_dp_display_private *d
 
        drm_dbg_dp(dp->drm_dev, "type=%d hpd=%d\n",
                        dp->msm_dp_display.connector_type, hpd);
-       msm_dp_display_send_hpd_event(&dp->msm_dp_display);
+
+       drm_bridge_hpd_notify(dp->msm_dp_display.bridge,
+                             hpd ?
+                             connector_status_connected :
+                             connector_status_disconnected);
 
        return 0;
 }
diff --git a/drivers/gpu/drm/msm/dp/dp_display.h 
b/drivers/gpu/drm/msm/dp/dp_display.h
index cc6e2cab36e9..60094061c102 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.h
+++ b/drivers/gpu/drm/msm/dp/dp_display.h
@@ -16,6 +16,7 @@ struct msm_dp {
        struct platform_device *pdev;
        struct drm_connector *connector;
        struct drm_bridge *next_bridge;
+       struct drm_bridge *bridge;
        bool link_ready;
        bool audio_enabled;
        bool power_on;
diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c
index e4622c85fb66..f935093c4df4 100644
--- a/drivers/gpu/drm/msm/dp/dp_drm.c
+++ b/drivers/gpu/drm/msm/dp/dp_drm.c
@@ -340,6 +340,8 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, 
struct drm_device *dev,
                }
        }
 
+       msm_dp_display->bridge = bridge;
+
        return 0;
 }
 

-- 
2.50.1

Reply via email to