Update the device-tree for CAN-BUS, PLLAON Clock

Have a done some “progress”, in the sens that, I have found that I should have put the “tegra194-a02-bpmp-p2888-a04.dtb” in the folder “bootloader/t186ref” in order to be flashed on the device and not just the “bootloader” folder.

I have change my strategy, I have given up compiling the kernel, what I’m doing now:

Delete everything
Download a fresh copy of JetPack 4.6 using sdkmanager
De-compiling the two dts files “tegra194-a02-bpmp-p2888-a04.dtb” and “tegra194-p2888-0001-p2822-0000.dtb” using the “dtc” command:

dtc -I dtb -O dts tegra194-p2888-0001-p2822-0000.dtb -o tegra194-p2888-0001-p2822-0000.dts
dtc -I dtb -O dts tegra194-a02-bpmp-p2888-a04.dtb -o tegra194-a02-bpmp-p2888-a04.dts

Changing the following things in tegra194-a02-bpmp-p2888-a04.dts

clock@can1 {
	allow_fractional_divider = <0x1>;
	allowed-parents = <0x121 0x5b 0x13a 0x5e>;
	clk-id = <0x9>;
};

clock@can2 {
	allow_fractional_divider = <0x1>;
	allowed-parents = <0x121 0x5b 0x13a 0x5e>;
	clk-id = <0xb>;
};

And in tegra194-p2888-0001-p2822-0000.dts

mttcan@c310000 {
	compatible = "nvidia,tegra194-mttcan";
	reg = <0x0 0xc310000 0x0 0x400 0x0 0xc311000 0x0 0x32 0x0 0xc312000 0x0 0x1000>;
	reg-names = "can-regs", "glue-regs", "msg-ram";
	interrupts = <0x0 0x28 0x4>;
	pll_source = "pllaon";
	clocks = <0x4 0x11c 0x4 0xa 0x4 0x9 0x4 0x5e>;
	clock-names = "can_core", "can_host", "can", "pllaon";
	resets = <0x5 0x4>;
	reset-names = "can";
	mram-params = <0x0 0x10 0x10 0x20 0x0 0x0 0x10 0x10 0x10>;
	tx-config = <0x0 0x10 0x0 0x40>;
	rx-config = <0x40 0x40 0x40>;
	status = "okay";
	linux,phandle = <0x187>;
	phandle = <0x187>;
};

mttcan@c320000 {
	compatible = "nvidia,tegra194-mttcan";
	reg = <0x0 0xc320000 0x0 0x400 0x0 0xc321000 0x0 0x32 0x0 0xc322000 0x0 0x1000>;
	reg-names = "can-regs", "glue-regs", "msg-ram";
	interrupts = <0x0 0x2a 0x4>;
	pll_source = "pllaon";
	clocks = <0x4 0x11d 0x4 0xc 0x4 0xb 0x4 0x5e>;
	clock-names = "can_core", "can_host", "can", "pllaon";
	resets = <0x5 0x5>;
	reset-names = "can";
	mram-params = <0x0 0x10 0x10 0x20 0x0 0x0 0x10 0x10 0x10>;
	tx-config = <0x0 0x10 0x0 0x40>;
	rx-config = <0x40 0x40 0x40>;
	status = "okay";
	linux,phandle = <0x188>;
	phandle = <0x188>;
};

...

clocks-init {
	compatible = "nvidia,clocks-config";
	status = "okay";
	disable {
		clocks = <0x14f 0x9 0x4 0xb>;
	};
};

Then recompile them into dtb

dtc -I dts -O dtb tegra194-p2888-0001-p2822-0000.dts -o tegra194-p2888-0001-p2822-0000.dtb
dtc -I dts -O dtb tegra194-a02-bpmp-p2888-a04.dts -o tegra194-a02-bpmp-p2888-a04.dtb

Then replace the existing file “tegra194-p2888-0001-p2822-0000.dtb” in the “kernel/dtb” folder and “tegra194-a02-bpmp-p2888-a04.dtb” in the “bootloader/t186ref”

Then flash the jetson with the command:
sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1

Once it is done, setup the ubuntu (language, keyboard etc…)

Then login and type:
sudo modprobe mttcan

And everything freeze. Then the device reboot itself after ~2 minutes.

Thank you for you help.