drivers/can/sja1000: fix Rx buffer pointer issue
When initialising the SJA1000 peripheral on some implementations (SJA1000_FDTOL), "releasing" the buffer when the Rx buffer is empty causes a buffer pointer misalignment. On peripheral initialise, remove the flag to "release" the buffer. This should be safe for all systems using the SJA1000 CAN controller as a "reset" to the peripheral clears the Rx FIFO.
This commit is contained in:
parent
8e30c13441
commit
6953814425
|
@ -282,13 +282,11 @@ static void sja1000_reset(struct can_dev_s *dev)
|
|||
sja1000_putreg(priv, SJA1000_MODE_REG, 0);
|
||||
}
|
||||
|
||||
/* Abort transmission, release RX buffer and clear overrun.
|
||||
/* Abort transmission and clear overrun.
|
||||
* Command register can only be modified when in Operation Mode.
|
||||
*/
|
||||
|
||||
sja1000_putreg(priv, SJA1000_CMD_REG, SJA1000_ABORT_TX_M
|
||||
| SJA1000_RELEASE_BUF_M
|
||||
| SJA1000_CLR_OVERRUN_M);
|
||||
sja1000_write_cmdreg(priv, SJA1000_ABORT_TX_M | SJA1000_CLR_OVERRUN_M);
|
||||
|
||||
#ifdef CONFIG_ARCH_HAVE_MULTICPU
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
|
Loading…
Reference in New Issue