mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-08 00:29:36 -04:00
drm: zynqmp_dp: Convert to a hard IRQ
Now that all of the sleeping work is done outside of the IRQ, we can convert it to a hard IRQ. Shared IRQs may be triggered even after calling disable_irq, so use free_irq instead which removes our callback altogether. Signed-off-by: Sean Anderson <sean.anderson@linux.dev> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240809193600.3360015-5-sean.anderson@linux.dev
This commit is contained in:
committed by
Tomi Valkeinen
parent
851daf0cec
commit
948a944ea7
@@ -1831,9 +1831,8 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub)
|
||||
* Now that the hardware is initialized and won't generate spurious
|
||||
* interrupts, request the IRQ.
|
||||
*/
|
||||
ret = devm_request_threaded_irq(dp->dev, dp->irq, NULL,
|
||||
zynqmp_dp_irq_handler, IRQF_ONESHOT,
|
||||
dev_name(dp->dev), dp);
|
||||
ret = devm_request_irq(dp->dev, dp->irq, zynqmp_dp_irq_handler,
|
||||
IRQF_SHARED, dev_name(dp->dev), dp);
|
||||
if (ret < 0)
|
||||
goto err_phy_exit;
|
||||
|
||||
@@ -1858,7 +1857,7 @@ void zynqmp_dp_remove(struct zynqmp_dpsub *dpsub)
|
||||
struct zynqmp_dp *dp = dpsub->dp;
|
||||
|
||||
zynqmp_dp_write(dp, ZYNQMP_DP_INT_DS, ZYNQMP_DP_INT_ALL);
|
||||
disable_irq(dp->irq);
|
||||
devm_free_irq(dp->dev, dp->irq, dp);
|
||||
|
||||
cancel_work_sync(&dp->hpd_irq_work);
|
||||
cancel_work_sync(&dp->hpd_work);
|
||||
|
||||
Reference in New Issue
Block a user