Device tree migration from kernel 4.x to 5.x

I have a highly customized device tree for BeagleBone Black, which is loaded by u-boot and perfectly works with 4.x kernels. Now I’m trying to migrate to 5.x kernels, and realized that my dtb/dtbo files won’t work ― the kernel gets stuck at the very beginning.

What would be the best strategy to migrate my DTS code? Is there a place I can find any description on principle differences?

Thanks!

1 Like

v4.x to v5.x. shouldn’t have too many changes…

This repo has device tree’s from v4.4.x → 5.14.x

Regards,

Thanks Robert!
Since my DT code is significantly deviated from the original, it’s not easy to compare. Well, I’ll have to do it anyway.

Here is what I get with 5.4 kernel and the DT from 4.14 until it gets stuck:

 Starting kernel ...

 [    0.000409] timer_probe: no matching timers found
 [    0.044680] omap_hwmod: emif: no dt node
 [    0.063499] platform 44e07000.gpio: Cannot lookup hwmod 'gpio1'
 [    0.063652] omap_gpio 44e07000.gpio: Could not get gpio dbck. Disable debounce
 [    0.064348] platform 4804c000.gpio: Cannot lookup hwmod 'gpio2'
 [    0.064506] omap_gpio 4804c000.gpio: Could not get gpio dbck. Disable debounce
 [    0.065073] platform 481ac000.gpio: Cannot lookup hwmod 'gpio3'
 [    0.065192] omap_gpio 481ac000.gpio: Could not get gpio dbck. Disable debounce
 [    0.065730] platform 481ae000.gpio: Cannot lookup hwmod 'gpio4'
 [    0.065852] omap_gpio 481ae000.gpio: Could not get gpio dbck. Disable debounce
 [    0.066371] platform 44e09000.serial: Cannot lookup hwmod 'uart1'
 [    0.066612] platform 48022000.serial: Cannot lookup hwmod 'uart2'
 [    0.066832] platform 48024000.serial: Cannot lookup hwmod 'uart3'
 [    0.067060] platform 481a8000.serial: Cannot lookup hwmod 'uart5'
 [    0.067339] platform 44e0b000.i2c: Cannot lookup hwmod 'i2c1'
 [    0.067567] platform 4819c000.i2c: Cannot lookup hwmod 'i2c3'
 [    0.067784] platform 48060000.mmc: Cannot lookup hwmod 'mmc1'
 [    0.068004] platform 481d8000.mmc: Cannot lookup hwmod 'mmc2'
 [    0.071248] platform 4a100000.ethernet: Cannot lookup hwmod 'cpgmac0'
 [    0.960005] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
 [    1.093183] OF: graph: no port node found in /ocp/lcdc@4830e000
 [    1.100448] OF: graph: no port node found in /ocp/lcdc@4830e000
 [    1.107075] OF: graph: no port node found in /ocp/lcdc@4830e000
 [    1.192211] omap_voltage_late_init: Voltage driver support not added
 [    1.199214] PM: Cannot get wkup_m3_ipc handle
 [    1.225217] pm33xx pm33xx: PM: am33xx_pm_alloc_sram: Unable to get sram pool for ocmcram

The 5.10 kernel shows nothing at all.

Most of those “hwmod”'s are gone… Are you at-least building your *.dts against the newer am335x<>.dtsi files? Unless you want to share your *.dts file, this will be too fun…

Regards,

Are you at-least building your *.dts against the newer am335x<>.dtsi files?

I tried, but got errors. I think, it’s easier to do it from scratch.

Just tried 5.10 from your GIT repository, and am335x-boneblack-uboot.dtb and overlays/BB-BONE-eMMC1-01-00A0.dtbo are enough to get it running. I’ll work on the rest.

Thanks!

I cannot get kernel’s logo displayed, the LCD is not active, I guess, the problem is this, but I have no idea how to fix it:

[    1.083753][   T75] OF: graph: no port node found in /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0

After booting it is okay, the framebuffer works as expected.