]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mailbox: imx: Clear the right interrupts at shutdown
authorDaniel Baluta <daniel.baluta@nxp.com>
Wed, 9 Oct 2019 08:07:19 +0000 (16:07 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 4 Jan 2020 18:18:28 +0000 (19:18 +0100)
[ Upstream commit 5f0af07e89199ac51cdd4f25bc303bdc703f4e9c ]

Make sure to only clear enabled interrupts keeping count
of the connection type.

Suggested-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/mailbox/imx-mailbox.c

index 9f74dee1a58c71aa2749f1e1d81f6110d751c366..d28bbd47ff8828dbf0d2dfb9afa84fd35a09d7cd 100644 (file)
@@ -217,8 +217,19 @@ static void imx_mu_shutdown(struct mbox_chan *chan)
        if (cp->type == IMX_MU_TYPE_TXDB)
                tasklet_kill(&cp->txdb_tasklet);
 
-       imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_TIEn(cp->idx) |
-                      IMX_MU_xCR_RIEn(cp->idx) | IMX_MU_xCR_GIEn(cp->idx));
+       switch (cp->type) {
+       case IMX_MU_TYPE_TX:
+               imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_TIEn(cp->idx));
+               break;
+       case IMX_MU_TYPE_RX:
+               imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_RIEn(cp->idx));
+               break;
+       case IMX_MU_TYPE_RXDB:
+               imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_GIEn(cp->idx));
+               break;
+       default:
+               break;
+       }
 
        free_irq(priv->irq, chan);
 }