CAN FD controllers (M-CAN tcan4x5x as well as Microchip mcp251xfd) fails on iMX6 eCSPI interface
From: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Date: 2021-03-22 08:41:51
Hello everybody,
my colleague at Elektroline.cz works on design of iMX6
based system with CAN FD support realized by tcan4x5x
chip connected to eCSPI. It seems that there are problems
with eCSPI DMA stucks and other troubles. When the same
chip (or even Microchip's mcp251xfd) is connected to
other (less industry sound platforms) as Allwinner etc...
drivers seems to work reliably, but tests on iMX6 results
in failures. They consider fast redesign to slCAN connected
second Microchip MCU to resolve critical problem for the
project now....
The setup on 5.7 kernel partially wrks
Linux RAPTOR 5.7.8 #2 SMP Fri Oct 30 18:55:02 CET 2020 armv7l GNU/Linux
&ecspi1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_raptor_ecspi1>;
cs-gpios = <&gpio2 30 0> ;
status = "okay";
tcan4550: tcan4x5x@0 {
compatible = "ti,tcan4x5x";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <16000000>;
bosch,mram-cfg = <0x0 0 0 32 0 0 1 1>;
interrupt-parent = <&gpio5>;
interrupts = <4 GPIO_ACTIVE_LOW>;
device-wake-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>;
};
};
Transmit test
cangen can1 -g 5 -I 123 -n100
OK
cangen can1 -g 3 -I 123 -n100
write: No buffer space available
[ 857.829179] tcan4x5x spi0.0 can1: hard_xmit called while tx busy
[ 857.836124] tcan4x5x spi0.0 can1: hard_xmit called while tx busy
[ 857.842537] tcan4x5x spi0.0 can1: hard_xmit called while tx busy
[ 857.852634] NOHZ: local_softirq_pending 08
[ 857.862952] NOHZ: local_softirq_pending 08
Receive test
cangen can0 -g 5 -I 123 -n100
OK
cangen can0 -g 3 -I 123 -n100
[ 1161.348615] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.355672] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.362845] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.369976] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.377074] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.384021] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.391211] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.398338] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.405299] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.412445] tcan4x5x spi0.0 can1: msg lost in rxf0
[ 1161.419680] tcan4x5x spi0.0 can1: msg lost in rxf0
...
the 5.10 RT (preffered) and non-RT seems to be completely broken
Linux RAPTOR 5.10.19 #6 SMP Tue Mar 9 13:29:28 CET 2021 armv7l GNU/Linux
&ecspi1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_raptor_ecspi1>;
cs-gpios = <&gpio2 30 0> ;
status = "okay";
tcan4550: tcan4x5x@0 {
compatible = "ti,tcan4x5x";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <16000000>;
bosch,mram-cfg = <0x0 0 0 32 0 0 1 1>;
interrupt-parent = <&gpio5>;
interrupts = <4 GPIO_ACTIVE_LOW>;
device-wake-gpios = <&gpio2 16 GPIO_ACTIVE_LOW>;
};
};
Transmit test, only one message transmited.
cangen can1 -g 100 -I 123 -n100
write: No buffer space available
candump can0
can0 123 [8] 06 56 C6 01 AF E3 B6 4A
Receive test no messages received
[ 332.449605] tcan4x5x spi0.0 can1: msg lost in rxf0
We can rebuild kernel, test patches, try to investgate what happens.
All suggestions what to test and what can be cause welcomed.
Thanks in advance,
Pavel
--
Pavel Pisa
phone: +420 603531357
e-mail: pisa@cmp.felk.cvut.cz
Department of Control Engineering FEE CVUT
Karlovo namesti 13, 121 35, Prague 2
university: http://dce.fel.cvut.cz/
company: https://www.pikron.com/
personal: http://cmp.felk.cvut.cz/~pisa
projects: https://www.openhub.net/accounts/ppisa
CAN related:http://canbus.pages.fel.cvut.cz/