#define RCANFD_DCFG_DBRP(x)            (((x) & 0xff) << 0)
 
 /* RSCFDnCFDCmFDCFG */
-#define RCANFD_FDCFG_CLOE              BIT(30)
-#define RCANFD_FDCFG_FDOE              BIT(28)
+#define RCANFD_V3U_FDCFG_CLOE          BIT(30)
+#define RCANFD_V3U_FDCFG_FDOE          BIT(28)
 #define RCANFD_FDCFG_TDCE              BIT(9)
 #define RCANFD_FDCFG_TDCOC             BIT(8)
 #define RCANFD_FDCFG_TDCO(x)           (((x) & 0x7f) >> 16)
 #define RCANFD_C_RPGACC(r)             (0x1900 + (0x04 * (r)))
 
 /* R-Car V3U Classical and CAN FD mode specific register map */
-#define RCANFD_V3U_CFDCFG              (0x1314)
 #define RCANFD_V3U_DCFG(m)             (0x1400 + (0x20 * (m)))
+#define RCANFD_V3U_FDCFG(m)            (0x1404 + (0x20 * (m)))
 
 #define RCANFD_V3U_GAFL_OFFSET         (0x1800)
 
 static void rcar_canfd_set_mode(struct rcar_canfd_global *gpriv)
 {
        if (is_v3u(gpriv)) {
-               if (gpriv->fdmode)
-                       rcar_canfd_set_bit(gpriv->base, RCANFD_V3U_CFDCFG,
-                                          RCANFD_FDCFG_FDOE);
-               else
-                       rcar_canfd_set_bit(gpriv->base, RCANFD_V3U_CFDCFG,
-                                          RCANFD_FDCFG_CLOE);
+               u32 ch, val = gpriv->fdmode ? RCANFD_V3U_FDCFG_FDOE
+                                           : RCANFD_V3U_FDCFG_CLOE;
+
+               for_each_set_bit(ch, &gpriv->channels_mask,
+                                gpriv->info->max_channels)
+                       rcar_canfd_set_bit(gpriv->base, RCANFD_V3U_FDCFG(ch),
+                                          val);
        } else {
                if (gpriv->fdmode)
                        rcar_canfd_set_bit(gpriv->base, RCANFD_GRMCFG,