MLK-21494 can: flexcan: add branch for "fd-non-iso on"
authorJoakim Zhang <qiangqing.zhang@nxp.com>
Thu, 18 Apr 2019 10:26:33 +0000 (18:26 +0800)
committerJoakim Zhang <qiangqing.zhang@nxp.com>
Fri, 19 Apr 2019 08:50:16 +0000 (16:50 +0800)
CAN driver will keep ISOFD state after setting "fd on" or "fd on
fd-non-iso off", you can't switch to NONISOFD mode, this patch intends
to add branch for "fd-non-iso on".

Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
drivers/net/can/flexcan.c

index 962c5f7..fb5797f 100644 (file)
@@ -1362,10 +1362,11 @@ static int flexcan_chip_start(struct net_device *dev)
                reg_mcr = priv->read(&regs->mcr);
                priv->write(reg_mcr | FLEXCAN_MCR_FDEN, &regs->mcr);
 
-               if (!(priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO)) {
-                       reg_ctrl2 = priv->read(&regs->ctrl2);
+               reg_ctrl2 = priv->read(&regs->ctrl2);
+               if (!(priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO))
                        priv->write(reg_ctrl2 | FLEXCAN_CTRL2_ISOCANFDEN, &regs->ctrl2);
-               }
+               else
+                       priv->write(reg_ctrl2 & ~FLEXCAN_CTRL2_ISOCANFDEN, &regs->ctrl2);
        }
 
        if (priv->devtype_data->quirks & FLEXCAN_QUIRK_USE_OFF_TIMESTAMP) {