aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/can/flexcan.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index 320bef2dba42..dcd69c9374ae 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -827,14 +827,16 @@ static void flexcan_chip_stop(struct net_device *dev)
827 struct flexcan_regs __iomem *regs = priv->base; 827 struct flexcan_regs __iomem *regs = priv->base;
828 u32 reg; 828 u32 reg;
829 829
830 /* Disable all interrupts */
831 flexcan_write(0, &regs->imask1);
832
833 /* Disable + halt module */ 830 /* Disable + halt module */
834 reg = flexcan_read(&regs->mcr); 831 reg = flexcan_read(&regs->mcr);
835 reg |= FLEXCAN_MCR_MDIS | FLEXCAN_MCR_HALT; 832 reg |= FLEXCAN_MCR_MDIS | FLEXCAN_MCR_HALT;
836 flexcan_write(reg, &regs->mcr); 833 flexcan_write(reg, &regs->mcr);
837 834
835 /* Disable all interrupts */
836 flexcan_write(0, &regs->imask1);
837 flexcan_write(priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_ALL,
838 &regs->ctrl);
839
838 if (priv->reg_xceiver) 840 if (priv->reg_xceiver)
839 regulator_disable(priv->reg_xceiver); 841 regulator_disable(priv->reg_xceiver);
840 priv->can.state = CAN_STATE_STOPPED; 842 priv->can.state = CAN_STATE_STOPPED;