mirror of
https://github.com/apache/nuttx.git
synced 2026-05-29 04:19:37 +08:00
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:
committed by
Xiang Xiao
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);
|
||||
|
||||
Reference in New Issue
Block a user