linux/drivers/net/can
Marek Vasut 6cc6426605 can: ifi: Add obscure bit swap for EFF frame IDs
In case of CAN2.0 EFF frame, the controller handles frame IDs in a
rather bizzare way. The ID is split into an extended part, IDX[28:11]
and standard part, ID[10:0]. In the TX path, the core first sends the
top 11 bits of the IDX, followed by ID and finally the rest of IDX.
In the RX path, the core stores the ID the LSbit part of IDX field,
followed by the LSbit parts of real IDX. The MSbit parts of IDX are
stored in ID field of the register.

This patch implements the necessary bit shuffling to mitigate this
obscure behavior. In case two of these controllers are connected
together, the RX and TX bit swapping nullifies itself and the issue
does not manifest. The issue only manifests when talking to another
different CAN controller.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Oliver Hartkopp <socketcan@hartkopp.net>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Reviewed-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-03-10 10:19:09 +01:00
..
c_can can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
cc770 can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
ifi_canfd can: ifi: Add obscure bit swap for EFF frame IDs 2016-03-10 10:19:09 +01:00
m_can can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
mscan can: constify of_device_id array 2015-03-17 15:00:23 -04:00
sja1000 can: sja1000: of: add compatibility with Technologic Systems version 2016-02-20 14:56:00 +01:00
softing
spi can: mcp251x: avoid write to error flag register if it's unnecessary 2016-03-04 08:45:17 +01:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-03-08 12:34:12 -05:00
at91_can.c can: at91: remove at91_can_data 2015-10-13 17:42:35 +02:00
bfin_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
dev.c can: Use correct type in sizeof() in nla_put() 2015-10-30 14:33:26 +01:00
flexcan.c can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
grcan.c can: grcan: don't touch skb after netif_rx() 2015-07-15 09:04:27 +02:00
janz-ican3.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
Kconfig can: ifi: Add IFI CANFD IP support 2016-02-20 14:56:15 +01:00
led.c can: add combined rx/tx LED trigger support 2015-03-22 23:50:11 +01:00
Makefile can: ifi: Add IFI CANFD IP support 2016-02-20 14:56:15 +01:00
pch_can.c can: fix assignment of error location in CAN error messages 2015-11-23 09:37:34 +01:00
rcar_can.c can: rcar: add gen[12] fallback compatibility strings 2016-02-26 08:43:18 +01:00
slcan.c can: slcan: don't touch skb after netif_rx_ni() 2015-07-15 09:04:27 +02:00
sun4i_can.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
ti_hecc.c can: remove obsolete assignment for CAN protocol error type 2015-11-23 09:37:38 +01:00
vcan.c can: replace timestamp as unique skb attribute 2015-07-12 21:13:22 +02:00
xilinx_can.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-12-03 21:09:12 -05:00