#define IFI_CANFD_STCMD_LOOPBACK               BIT(18)
 #define IFI_CANFD_STCMD_DISABLE_CANFD          BIT(24)
 #define IFI_CANFD_STCMD_ENABLE_ISO             BIT(25)
+#define IFI_CANFD_STCMD_ENABLE_7_9_8_8_TIMING  BIT(26)
 #define IFI_CANFD_STCMD_NORMAL_MODE            ((u32)BIT(31))
 
 #define IFI_CANFD_RXSTCMD                      0x4
 #define IFI_CANFD_TIME_TIMEB_OFF               0
 #define IFI_CANFD_TIME_TIMEA_OFF               8
 #define IFI_CANFD_TIME_PRESCALE_OFF            16
-#define IFI_CANFD_TIME_SJW_OFF_ISO             25
-#define IFI_CANFD_TIME_SJW_OFF_BOSCH           28
-#define IFI_CANFD_TIME_SET_SJW_BOSCH           BIT(6)
-#define IFI_CANFD_TIME_SET_TIMEB_BOSCH         BIT(7)
-#define IFI_CANFD_TIME_SET_PRESC_BOSCH         BIT(14)
-#define IFI_CANFD_TIME_SET_TIMEA_BOSCH         BIT(15)
+#define IFI_CANFD_TIME_SJW_OFF_7_9_8_8         25
+#define IFI_CANFD_TIME_SJW_OFF_4_12_6_6                28
+#define IFI_CANFD_TIME_SET_SJW_4_12_6_6                BIT(6)
+#define IFI_CANFD_TIME_SET_TIMEB_4_12_6_6      BIT(7)
+#define IFI_CANFD_TIME_SET_PRESC_4_12_6_6      BIT(14)
+#define IFI_CANFD_TIME_SET_TIMEA_4_12_6_6      BIT(15)
 
 #define IFI_CANFD_TDELAY                       0x1c
 
 static const struct can_bittiming_const ifi_canfd_bittiming_const = {
        .name           = KBUILD_MODNAME,
        .tseg1_min      = 1,    /* Time segment 1 = prop_seg + phase_seg1 */
-       .tseg1_max      = 64,
+       .tseg1_max      = 256,
        .tseg2_min      = 2,    /* Time segment 2 = phase_seg2 */
-       .tseg2_max      = 64,
-       .sjw_max        = 16,
+       .tseg2_max      = 256,
+       .sjw_max        = 128,
        .brp_min        = 2,
-       .brp_max        = 256,
+       .brp_max        = 512,
        .brp_inc        = 1,
 };
 
 static const struct can_bittiming_const ifi_canfd_data_bittiming_const = {
        .name           = KBUILD_MODNAME,
        .tseg1_min      = 1,    /* Time segment 1 = prop_seg + phase_seg1 */
-       .tseg1_max      = 64,
+       .tseg1_max      = 256,
        .tseg2_min      = 2,    /* Time segment 2 = phase_seg2 */
-       .tseg2_max      = 64,
-       .sjw_max        = 16,
+       .tseg2_max      = 256,
+       .sjw_max        = 128,
        .brp_min        = 2,
-       .brp_max        = 256,
+       .brp_max        = 512,
        .brp_inc        = 1,
 };
 
        const struct can_bittiming *bt = &priv->can.bittiming;
        const struct can_bittiming *dbt = &priv->can.data_bittiming;
        u16 brp, sjw, tseg1, tseg2;
-       u32 noniso_arg = 0;
-       u32 time_off;
-
-       if ((priv->can.ctrlmode & CAN_CTRLMODE_FD) &&
-           !(priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO)) {
-               time_off = IFI_CANFD_TIME_SJW_OFF_ISO;
-       } else {
-               noniso_arg = IFI_CANFD_TIME_SET_TIMEB_BOSCH |
-                            IFI_CANFD_TIME_SET_TIMEA_BOSCH |
-                            IFI_CANFD_TIME_SET_PRESC_BOSCH |
-                            IFI_CANFD_TIME_SET_SJW_BOSCH;
-               time_off = IFI_CANFD_TIME_SJW_OFF_BOSCH;
-       }
 
        /* Configure bit timing */
        brp = bt->brp - 2;
        writel((tseg2 << IFI_CANFD_TIME_TIMEB_OFF) |
               (tseg1 << IFI_CANFD_TIME_TIMEA_OFF) |
               (brp << IFI_CANFD_TIME_PRESCALE_OFF) |
-              (sjw << time_off) |
-              noniso_arg,
+              (sjw << IFI_CANFD_TIME_SJW_OFF_7_9_8_8),
               priv->base + IFI_CANFD_TIME);
 
        /* Configure data bit timing */
        writel((tseg2 << IFI_CANFD_TIME_TIMEB_OFF) |
               (tseg1 << IFI_CANFD_TIME_TIMEA_OFF) |
               (brp << IFI_CANFD_TIME_PRESCALE_OFF) |
-              (sjw << time_off) |
-              noniso_arg,
+              (sjw << IFI_CANFD_TIME_SJW_OFF_7_9_8_8),
               priv->base + IFI_CANFD_FTIME);
 }
 
 
        /* Reset the IP */
        writel(IFI_CANFD_STCMD_HARDRESET, priv->base + IFI_CANFD_STCMD);
-       writel(0, priv->base + IFI_CANFD_STCMD);
+       writel(IFI_CANFD_STCMD_ENABLE_7_9_8_8_TIMING,
+              priv->base + IFI_CANFD_STCMD);
 
        ifi_canfd_set_bittiming(ndev);
        ifi_canfd_set_filters(ndev);
        writel((u32)(~IFI_CANFD_INTERRUPT_SET_IRQ),
               priv->base + IFI_CANFD_INTERRUPT);
 
-       stcmd = IFI_CANFD_STCMD_ENABLE | IFI_CANFD_STCMD_NORMAL_MODE;
+       stcmd = IFI_CANFD_STCMD_ENABLE | IFI_CANFD_STCMD_NORMAL_MODE |
+               IFI_CANFD_STCMD_ENABLE_7_9_8_8_TIMING;
 
        if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
                stcmd |= IFI_CANFD_STCMD_BUSMONITOR;