• Uwe Kleine-König's avatar
    can: flexcan: fix endianess detection · 0e030a37
    Uwe Kleine-König authored
    In commit 88462d2a ("can: flexcan: Remodel FlexCAN register r/w APIs
    for big endian FlexCAN controllers.") the following logic was
    implemented:
    
    	if the dt property "big-endian" is given or
    	   the device is compatible to "fsl,p1010-flexcan":
    		use big-endian mode;
    	else
    		use little-endian mode;
    
    This relies on commit d50f4630 ("arm: dts: Remove p1010-flexcan
    compatible from imx series dts") which was applied a few commits later.
    Without this commit (or an old device tree used for booting a new
    kernel) the flexcan devices on i.MX25, i.MX28, i.MX35 and i.MX53 match
    the 'the device is compatible to "fsl,p1010-flexcan"' test and so are
    switched erroneously to big endian mode.
    
    Instead of the check above put a quirk in devtype data and rely on
    of_match_device yielding the most compatible match
    
    Fixes: 88462d2a ("can: flexcan: Remodel FlexCAN register r/w APIs for big endian FlexCAN controllers.")
    Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Tested-by: default avatarGavin Schenk <g.schenk@eckelmann.de>
    Cc: linux-stable <stable@vger.kernel.org> # >= v4.16
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    0e030a37
flexcan.c 41.5 KB