]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/msm/dp: drop event data
authorDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Sun, 24 May 2026 10:33:34 +0000 (13:33 +0300)
committerDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Fri, 29 May 2026 11:58:52 +0000 (14:58 +0300)
With EV_USER_NOTIFICATION gone event's data is no longer useful. Drop
it, removing also the argument from event handlers.

Reviewed-by: Bjorn Andersson <andersson@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Tested-by: Val Packett <val@packett.cool> # x1e80100-dell-latitude-7455
Tested-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com> # Hamoa IOT EVK, QCS8300 Ride
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/727610/
Link: https://lore.kernel.org/r/20260524-hpd-refactor-v6-6-cf3ab488dd7b@oss.qualcomm.com
drivers/gpu/drm/msm/dp/dp_display.c

index 8bf8c4099bbcb1718ae64900754087977ccdd0f1..588fd9dddfc608c3a5bdb91a3f2ca7568d043471 100644 (file)
@@ -69,7 +69,6 @@ enum {
 
 struct msm_dp_event {
        u32 event_id;
-       u32 data;
        u32 delay;
 };
 
@@ -219,7 +218,7 @@ static struct msm_dp_display_private *dev_get_dp_display_private(struct device *
 }
 
 static int msm_dp_add_event(struct msm_dp_display_private *msm_dp_priv, u32 event,
-                                               u32 data, u32 delay)
+                           u32 delay)
 {
        unsigned long flag;
        struct msm_dp_event *todo;
@@ -237,7 +236,6 @@ static int msm_dp_add_event(struct msm_dp_display_private *msm_dp_priv, u32 even
        todo = &msm_dp_priv->event_list[msm_dp_priv->event_pndx++];
        msm_dp_priv->event_pndx %= DP_EVENT_Q_MAX;
        todo->event_id = event;
-       todo->data = data;
        todo->delay = delay;
        wake_up(&msm_dp_priv->event_q);
        spin_unlock_irqrestore(&msm_dp_priv->event_lock, flag);
@@ -577,7 +575,7 @@ static int msm_dp_display_usbpd_attention_cb(struct device *dev)
        return rc;
 }
 
-static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp, u32 data)
+static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp)
 {
        u32 state;
        int ret;
@@ -603,7 +601,7 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp, u32 data)
 
        if (state == ST_DISCONNECT_PENDING) {
                /* wait until ST_DISCONNECTED */
-               msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 1); /* delay = 1 */
+               msm_dp_add_event(dp, EV_HPD_PLUG_INT, 1);
                mutex_unlock(&dp->event_mutex);
                return 0;
        }
@@ -645,7 +643,7 @@ static void msm_dp_display_handle_plugged_change(struct msm_dp *msm_dp_display,
                                                        plugged);
 }
 
-static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp, u32 data)
+static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp)
 {
        u32 state;
        struct platform_device *pdev = dp->msm_dp_display.pdev;
@@ -707,7 +705,7 @@ static int msm_dp_hpd_unplug_handle(struct msm_dp_display_private *dp, u32 data)
        return 0;
 }
 
-static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp, u32 data)
+static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp)
 {
        u32 state;
 
@@ -725,7 +723,7 @@ static int msm_dp_irq_hpd_handle(struct msm_dp_display_private *dp, u32 data)
 
        if (state == ST_MAINLINK_READY || state == ST_DISCONNECT_PENDING) {
                /* wait until ST_CONNECTED */
-               msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0, 1); /* delay = 1 */
+               msm_dp_add_event(dp, EV_IRQ_HPD_INT, 1);
                mutex_unlock(&dp->event_mutex);
                return 0;
        }
@@ -1080,7 +1078,6 @@ static int hpd_event_thread(void *data)
                        todo_next = &msm_dp_priv->event_list[msm_dp_priv->event_pndx++];
                        msm_dp_priv->event_pndx %= DP_EVENT_Q_MAX;
                        todo_next->event_id = todo->event_id;
-                       todo_next->data = todo->data;
                        todo_next->delay = todo->delay - 1;
 
                        /* clean up older event */
@@ -1106,13 +1103,13 @@ static int hpd_event_thread(void *data)
 
                switch (todo->event_id) {
                case EV_HPD_PLUG_INT:
-                       msm_dp_hpd_plug_handle(msm_dp_priv, todo->data);
+                       msm_dp_hpd_plug_handle(msm_dp_priv);
                        break;
                case EV_HPD_UNPLUG_INT:
-                       msm_dp_hpd_unplug_handle(msm_dp_priv, todo->data);
+                       msm_dp_hpd_unplug_handle(msm_dp_priv);
                        break;
                case EV_IRQ_HPD_INT:
-                       msm_dp_irq_hpd_handle(msm_dp_priv, todo->data);
+                       msm_dp_irq_hpd_handle(msm_dp_priv);
                        break;
                default:
                        break;
@@ -1216,19 +1213,19 @@ static irqreturn_t msm_dp_display_irq_handler(int irq, void *dev_id)
                        dp->msm_dp_display.connector_type, hpd_isr_status);
                /* hpd related interrupts */
                if (hpd_isr_status & DP_DP_HPD_PLUG_INT_MASK)
-                       msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0);
+                       msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0);
 
                if (hpd_isr_status & DP_DP_IRQ_HPD_INT_MASK) {
-                       msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0, 0);
+                       msm_dp_add_event(dp, EV_IRQ_HPD_INT, 0);
                }
 
                if (hpd_isr_status & DP_DP_HPD_REPLUG_INT_MASK) {
-                       msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0);
-                       msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 3);
+                       msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0);
+                       msm_dp_add_event(dp, EV_HPD_PLUG_INT, 3);
                }
 
                if (hpd_isr_status & DP_DP_HPD_UNPLUG_INT_MASK)
-                       msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0);
+                       msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0);
 
                ret = IRQ_HANDLED;
        }
@@ -1653,7 +1650,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
        }
 
        if (dp->is_edp)
-               msm_dp_hpd_plug_handle(msm_dp_display, 0);
+               msm_dp_hpd_plug_handle(msm_dp_display);
 
        mutex_lock(&msm_dp_display->event_mutex);
        if (pm_runtime_resume_and_get(&dp->pdev->dev)) {
@@ -1727,7 +1724,7 @@ void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
        msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display);
 
        if (dp->is_edp)
-               msm_dp_hpd_unplug_handle(msm_dp_display, 0);
+               msm_dp_hpd_unplug_handle(msm_dp_display);
 
        mutex_lock(&msm_dp_display->event_mutex);
 
@@ -1849,7 +1846,7 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
                return;
 
        if (!msm_dp_display->link_ready && status == connector_status_connected)
-               msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0, 0);
+               msm_dp_add_event(dp, EV_HPD_PLUG_INT, 0);
        else if (msm_dp_display->link_ready && status == connector_status_disconnected)
-               msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0, 0);
+               msm_dp_add_event(dp, EV_HPD_UNPLUG_INT, 0);
 }