]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
can: rcar_canfd: Share config code in rcar_canfd_set_bittiming()
authorGeert Uytterhoeven <geert+renesas@glider.be>
Wed, 11 Jun 2025 15:37:37 +0000 (17:37 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 13 Jun 2025 07:34:09 +0000 (09:34 +0200)
The configuration register format for nominal bit timings in CAN-FD mode
and the format for bit timings in CAN mode on CAN-FD controllers with
shared Classical CAN registers are the same.

Restructure the code to make this clear, also reducing kernel size by 80
bytes.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Link: https://patch.msgid.link/b7643a3c49777989d02145a85b85cf773ec2123f.1749655315.git.geert+renesas@glider.be
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/rcar/rcar_canfd.c

index c292694ae4d27ac47538fe19324568f3ff1b93a5..9ee49ef57e4f9c8eae1a0020c2febe3e39d533c1 100644 (file)
@@ -1474,13 +1474,17 @@ static void rcar_canfd_set_bittiming(struct net_device *ndev)
        tseg1 = bt->prop_seg + bt->phase_seg1 - 1;
        tseg2 = bt->phase_seg2 - 1;
 
-       if (priv->can.ctrlmode & CAN_CTRLMODE_FD) {
-               /* CAN FD only mode */
+       if ((priv->can.ctrlmode & CAN_CTRLMODE_FD) || gpriv->info->shared_can_regs) {
                cfg = (RCANFD_NCFG_NTSEG1(gpriv, tseg1) | RCANFD_NCFG_NBRP(brp) |
                       RCANFD_NCFG_NSJW(gpriv, sjw) | RCANFD_NCFG_NTSEG2(gpriv, tseg2));
+       } else {
+               cfg = (RCANFD_CFG_TSEG1(tseg1) | RCANFD_CFG_BRP(brp) |
+                      RCANFD_CFG_SJW(sjw) | RCANFD_CFG_TSEG2(tseg2));
+       }
 
-               rcar_canfd_write(priv->base, RCANFD_CCFG(ch), cfg);
+       rcar_canfd_write(priv->base, RCANFD_CCFG(ch), cfg);
 
+       if (priv->can.ctrlmode & CAN_CTRLMODE_FD) {
                /* Data bit timing settings */
                brp = dbt->brp - 1;
                sjw = dbt->sjw - 1;
@@ -1491,21 +1495,6 @@ static void rcar_canfd_set_bittiming(struct net_device *ndev)
                       RCANFD_DCFG_DSJW(gpriv, sjw) | RCANFD_DCFG_DTSEG2(gpriv, tseg2));
 
                rcar_canfd_write(priv->base, rcar_canfd_f_dcfg(gpriv, ch), cfg);
-       } else {
-               /* Classical CAN only mode */
-               if (gpriv->info->shared_can_regs) {
-                       cfg = (RCANFD_NCFG_NTSEG1(gpriv, tseg1) |
-                              RCANFD_NCFG_NBRP(brp) |
-                              RCANFD_NCFG_NSJW(gpriv, sjw) |
-                              RCANFD_NCFG_NTSEG2(gpriv, tseg2));
-               } else {
-                       cfg = (RCANFD_CFG_TSEG1(tseg1) |
-                              RCANFD_CFG_BRP(brp) |
-                              RCANFD_CFG_SJW(sjw) |
-                              RCANFD_CFG_TSEG2(tseg2));
-               }
-
-               rcar_canfd_write(priv->base, RCANFD_CCFG(ch), cfg);
        }
 }