]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
can: rcar_canfd: Invert global vs. channel teardown
authorGeert Uytterhoeven <geert+renesas@glider.be>
Mon, 24 Nov 2025 10:28:27 +0000 (10:28 +0000)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 26 Nov 2025 10:21:55 +0000 (11:21 +0100)
Global state is initialized and torn down before per-channel state.
Invert the order to restore symmetry.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Vincent Mailhol <mailhol@kernel.org>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://patch.msgid.link/20251124102837.106973-3-biju.das.jz@bp.renesas.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/rcar/rcar_canfd.c

index cbcc971cda9ae51cfcb5a4f6ae282ea91f2db654..15358eefa8fa37657ed6013afb7125eafda21863 100644 (file)
@@ -2203,14 +2203,14 @@ static void rcar_canfd_remove(struct platform_device *pdev)
        struct rcar_canfd_global *gpriv = platform_get_drvdata(pdev);
        u32 ch;
 
-       rcar_canfd_reset_controller(gpriv);
-       rcar_canfd_disable_global_interrupts(gpriv);
-
        for_each_set_bit(ch, &gpriv->channels_mask, gpriv->info->max_channels) {
                rcar_canfd_disable_channel_interrupts(gpriv->ch[ch]);
                rcar_canfd_channel_remove(gpriv, ch);
        }
 
+       rcar_canfd_disable_global_interrupts(gpriv);
+       rcar_canfd_reset_controller(gpriv);
+
        /* Enter global sleep mode */
        rcar_canfd_set_bit(gpriv->base, RCANFD_GCTR, RCANFD_GCTR_GSLPR);
        clk_disable_unprepare(gpriv->clkp);