can: flexcan: activate individual RX masking and initialize reg_rximr
Modern flexcan IP cores support two RX modes. One is using the 6 fames deep hardware FIFO, the other is using up to 64 mailboxes (in non FIFO mode). For now only the HW FIFO mode is activated. In order to make use of the RX mailboxes the individual RX masking feature has to be activated, otherwise matching mailboxes are overwritten during the reception process. This however switches on the individual RX masking, which uses reg_rximr registers for masking. This patch activates the individual RX masking feature unconditionally and initializes the mask registers (reg_rximr) with 0x0 == "don't care", which switches off any filtering. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
30164759db
commit
4bd888a80b
|
@ -779,6 +779,7 @@ static int flexcan_chip_start(struct net_device *dev)
|
|||
* only supervisor access
|
||||
* enable warning int
|
||||
* disable local echo
|
||||
* enable individual RX masking
|
||||
* choose format C
|
||||
* set max mailbox number
|
||||
*/
|
||||
|
@ -786,7 +787,8 @@ static int flexcan_chip_start(struct net_device *dev)
|
|||
reg_mcr &= ~FLEXCAN_MCR_MAXMB(0xff);
|
||||
reg_mcr |= FLEXCAN_MCR_FRZ | FLEXCAN_MCR_FEN | FLEXCAN_MCR_HALT |
|
||||
FLEXCAN_MCR_SUPV | FLEXCAN_MCR_WRN_EN | FLEXCAN_MCR_SRX_DIS |
|
||||
FLEXCAN_MCR_IDAM_C | FLEXCAN_MCR_MAXMB(priv->tx_mb_idx);
|
||||
FLEXCAN_MCR_IRMQ | FLEXCAN_MCR_IDAM_C |
|
||||
FLEXCAN_MCR_MAXMB(priv->tx_mb_idx);
|
||||
netdev_dbg(dev, "%s: writing mcr=0x%08x", __func__, reg_mcr);
|
||||
flexcan_write(reg_mcr, ®s->mcr);
|
||||
|
||||
|
@ -845,6 +847,10 @@ static int flexcan_chip_start(struct net_device *dev)
|
|||
if (priv->devtype_data->quirks & FLEXCAN_QUIRK_DISABLE_RXFG)
|
||||
flexcan_write(0x0, ®s->rxfgmask);
|
||||
|
||||
/* clear acceptance filters */
|
||||
for (i = 0; i < ARRAY_SIZE(regs->mb); i++)
|
||||
flexcan_write(0, ®s->rximr[i]);
|
||||
|
||||
/* On Vybrid, disable memory error detection interrupts
|
||||
* and freeze mode.
|
||||
* This also works around errata e5295 which generates
|
||||
|
|
Loading…
Reference in New Issue