CAN bus problems in JetPack 4.5, but not in JetPack 4.4

Good day,

I have an interesting behavior related to CAN and different JetPacks.

My CAN devices are configured at rc.local and all can driver are loaded OK.
On my custom board (SoM burned with JetPack 4.4) I connect additional CAN device to can0. On Xavier I’m starting:
candump can0
Powering On the external CAN device.
On Xavier shell I can see 1 line printed and also no error displayed in dmesg.

Next, I’m taking the very same SoM on the same HW and same external CAN device, but this time I burn JetPack 4.5. (same rc.local)

The same test now gives me a very different results. First of all no message on candump, but an endless errors in dmesg complaining about mttcan errors.
If I’m connecting another Xavier board to my board and communicating through CAN bus between them - everything is working and looking good.
Meaning not all CAN devices have this problem on JetPack 4.5.
The problem is, that my client need to use the “problematic” CAN device).

Any hints or tips ?

Thanks in advance

Hi NVIDIA,

Please check this issue, we have a customer which ungraded to JP4.5.1 and CANbus stop work for him. Under JP4.4 it works fine. This is urgent.

Please change clock to pllaon:
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/clocks.html#wwpID0E06B0HA
Also, see Update the device-tree for CAN-BUS, PLLAON Clock - #4 by peclatj

Hi,

I managed to solve the problem.

The solution that worked for me:
In file hardware/nvidia/platform/t19x/galen/kernel-dts/common/tegra194-p2888-0001-p2822-0000-common.dtsi I closed the clocks.

clocks-init {
                compatible = "nvidia,clocks-config";
                status = "okay";
                disable {
        /*              clocks = <&aon_clks TEGRA194_CLK_PLLAON>,
                                <&bpmp_clks TEGRA194_CLK_CAN1>,
                                <&bpmp_clks TEGRA194_CLK_CAN2>;   */
                };
        };

After the change, I created a new DTB (tegra194-p2888-0001-p2822-0000.dtb). Copied it to Linux_for_Tegra/kernel/dtb folder
and burned new DTB.
As a result, CAN device started to work.