mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-14 12:37:32 +00:00
drm/msm/dp: replug event is converted into an unplug followed by an plug events
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
Changes in V3:
-- delete EV_HPD_REPLUG_INT
Fixes: f21c8a276c
("drm/msm/dp: handle irq_hpd with sink_count = 0 correctly")
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
Reviewed-by: Stephen Boyd <swboyd@chromium.org>
Link: https://lore.kernel.org/r/1628196295-7382-5-git-send-email-khsieh@codeaurora.org
Signed-off-by: Rob Clark <robdclark@chromium.org>
This commit is contained in:
parent
0b324564ff
commit
7e10bf4278
1 changed files with 5 additions and 9 deletions
|
@ -55,7 +55,6 @@ enum {
|
|||
EV_HPD_INIT_SETUP,
|
||||
EV_HPD_PLUG_INT,
|
||||
EV_IRQ_HPD_INT,
|
||||
EV_HPD_REPLUG_INT,
|
||||
EV_HPD_UNPLUG_INT,
|
||||
EV_USER_NOTIFICATION,
|
||||
EV_CONNECT_PENDING_TIMEOUT,
|
||||
|
@ -1110,9 +1109,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);
|
||||
|
@ -1157,10 +1153,8 @@ static irqreturn_t dp_display_irq_handler(int irq, void *dev_id)
|
|||
DRM_DEBUG_DP("hpd isr status=%#x\n", hpd_isr_status);
|
||||
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 */
|
||||
|
@ -1168,8 +1162,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);
|
||||
|
|
Loading…
Reference in a new issue