diff options
-rw-r--r-- | drivers/net/can/flexcan.c | 8 |
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, ®s->imask1); | ||
832 | |||
833 | /* Disable + halt module */ | 830 | /* Disable + halt module */ |
834 | reg = flexcan_read(®s->mcr); | 831 | reg = flexcan_read(®s->mcr); |
835 | reg |= FLEXCAN_MCR_MDIS | FLEXCAN_MCR_HALT; | 832 | reg |= FLEXCAN_MCR_MDIS | FLEXCAN_MCR_HALT; |
836 | flexcan_write(reg, ®s->mcr); | 833 | flexcan_write(reg, ®s->mcr); |
837 | 834 | ||
835 | /* Disable all interrupts */ | ||
836 | flexcan_write(0, ®s->imask1); | ||
837 | flexcan_write(priv->reg_ctrl_default & ~FLEXCAN_CTRL_ERR_ALL, | ||
838 | ®s->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; |