Remove special handling of replug interrupt and instead treat replug event
as a sequential unplug followed by a plugin event. This is needed to meet
the requirements of DP Link Layer CTS test case 4.2.1.3.

Changes in V2:
-- add fixes statement

Fixes: f21c8a276c2d ("drm/msm/dp: handle irq_hpd with sink_count = 0 correctly")

Signed-off-by: Kuogee Hsieh <khs...@codeaurora.org>
---
 drivers/gpu/drm/msm/dp/dp_display.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 78c5301..d089ada 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -1146,9 +1146,6 @@ static int hpd_event_thread(void *data)
                case EV_IRQ_HPD_INT:
                        dp_irq_hpd_handle(dp_priv, todo->data);
                        break;
-               case EV_HPD_REPLUG_INT:
-                       /* do nothing */
-                       break;
                case EV_USER_NOTIFICATION:
                        dp_display_send_hpd_notification(dp_priv,
                                                todo->data);
@@ -1192,10 +1189,8 @@ static irqreturn_t dp_display_irq_handler(int irq, void 
*dev_id)
 
        if (hpd_isr_status & 0x0F) {
                /* hpd related interrupts */
-               if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK ||
-                       hpd_isr_status & DP_DP_HPD_REPLUG_INT_MASK) {
+               if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK)
                        dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0);
-               }
 
                if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) {
                        /* stop sentinel connect pending checking */
@@ -1203,8 +1198,10 @@ static irqreturn_t dp_display_irq_handler(int irq, void 
*dev_id)
                        dp_add_event(dp, EV_IRQ_HPD_INT, 0, 0);
                }
 
-               if (hpd_isr_status & DP_DP_HPD_REPLUG_INT_MASK)
-                       dp_add_event(dp, EV_HPD_REPLUG_INT, 0, 0);
+               if (hpd_isr_status & DP_DP_HPD_REPLUG_INT_MASK) {
+                       dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0);
+                       dp_add_event(dp, EV_HPD_PLUG_INT, 0, 3);
+               }
 
                if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK)
                        dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0);
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

Reply via email to