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; |
