Loading custom DTB on JetPack 5.0 Linux 34.1

Hello,

The r34.1 documentation states: “User can specify a custom DTB for kernel by modifying the FDT tag in /boot/extlinux/extlinux.conf file in rootfs.”

But on the other hand the Kernel Adaptation notes states: “Replacing the Kernel image and the Kernel DTB in /boot directory is not supported.”

Which is true?

My core issue is about adapting this TC358743 HDMI-CSI-2 support to JP 5.0 on NX, I’ve adapted the driver code for kernel 5.1 and tried to use the same DTS, but the driver isn’t being loaded on boot (everything worked great on 4.6.x, as described in that gist).

Thank you.

I have been following this process for JP5 and it works good. Feel free to give it a try.

Thanks @jdluckyday, but I’ve tried everything including building and flashing the DT and even entire kernel. It seems my issue isn’t loading the dtb itself (which gets loaded successfully, either “manually” by changing extlinux.config, or via flash.sh).

After boot, dmesg doesn’t show anything related to the driver, only after sudo modprobe tc358743 it shows the driver’s logging - but then with errors related to signal acquisition - seems like some of the dtsi definitions are invalid for this kernel.

The device dtsi that worked perfectly in JP 4.6, probably requires some tweaking to be compatible with JP 5.0/Kernel 5.10. How should I approach this migration?

Thanks.

Hi Superware,

Please take a look at this comment. I think the definition of host1x is changed in JetPack 5.0 and you have to change them accordingly.

I normally ask the driver to print out some messages (something like printk(">>>> tc358743_probe\n");) in the driver functions during development, so that I know for sure that they’re loaded.

Thanks @jdluckyday, that was it!

But now the driver only works when loaded manually (sudo modprobe tc358743) but not at boot time.

dmesg | grep tc35 shows nothing after boot while it shows logging after modprobe, any idea why it worked in JP4.6 but not in JP5?

@WayneWWW / @kayccc Can you please try to assist?

But on the other hand the Kernel Adaptation notes states : “Replacing the Kernel image and the Kernel DTB in /boot directory is not supported.”

This one is wrong. I will check why this comment is left there…

To update dtb, default path is from FDT field in the extlinux.conf.

Thanks. Any idea regarding this?

@WayneWWW What can cause a driver to load (and function properly) only after sudo modprobe tc358743 but not at boot time?

Please find attached dtsi:
tegra194-xavier-tc358743.dtsi (6.3 KB)

Try to run a conf file under /etc/modprobe.d/ and let it load the driver?

Hi @WayneWWW

  1. What is the correct way to load the driver on boot? What should I do exactly?
  2. What changed between JetPack 4.6.1 and 5.0.1 that causes custom drivers to not load on boot according to the device tree?

Thanks!

You can check /etc/module-load.d and there would be files to put your module names.

The kernel version is totally changed between these two versions. So I have no idea why a specific driver does not auto load according to the device tree. You can try to check whether that driver has anything change in k5.10 first.

Ok, adding the module-driver name to /etc/modules-load.d/modules.conf worked and it’s being loaded at boot. It is strange that all other drivers are being loaded automatically.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.