Hi Biju, On Fri, 12 Sept 2025 at 09:54, Biju Das <biju.das.jz@xxxxxxxxxxxxxx> wrote: > With adaption to RZ/G3E for ram_clk [1] > --- a/drivers/net/can/rcar/rcar_canfd.c > +++ b/drivers/net/can/rcar/rcar_canfd.c > @@ -1983,10 +1984,18 @@ static int rcar_canfd_global_init(struct rcar_canfd_global *gpriv) > goto fail_reset2; > } > > + /* Enable RAM clock */ > + err = clk_prepare_enable(gpriv->clk_ram); > + if (err) { > + dev_err(dev, > + "failed to enable ram clock, error %d\n", err); > + goto fail_clk; > + } > + > err = rcar_canfd_reset_controller(gpriv); > if (err) { > dev_err(dev, "reset controller failed: %pe\n", ERR_PTR(err)); > - goto fail_clk; > + goto fail_ram_clk; > } > > /* Controller in Global reset & Channel reset mode */ > @@ -2026,6 +2035,8 @@ static int rcar_canfd_global_init(struct rcar_canfd_global *gpriv) > rcar_canfd_disable_global_interrupts(gpriv); > fail_clk: > clk_disable_unprepare(gpriv->clkp); > +fail_ram_clk: > + clk_disable_unprepare(gpriv->clk_ram); Should be inserted above fail_clk. > fail_reset2: > reset_control_assert(gpriv->rstc2); > fail_reset1: > @@ -2045,6 +2056,7 @@ static void rcar_canfd_global_deinit(struct rcar_canfd_global *gpriv, bool full) > } > > clk_disable_unprepare(gpriv->clkp); > + clk_disable_unprepare(gpriv->clk_ram); Wrong order. > reset_control_assert(gpriv->rstc2); > reset_control_assert(gpriv->rstc1); > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds