Showing results for 
Search instead for 
Did you mean: 

STM32MP157D DTS v2 simple-bus node not enabling? No UART, MMC, or any other peripherals getting initialized

Associate II

I'm trying to boot an STM32MP157 using the v5.4-stm32mp branch of ST's Linux kernel, and it doesn't appear that peripherals under the simple-bus node in the DTS file are getting probed.

I copied the stm32mp157d-dk1.dts file as a starting point, but since my board doesn't have a PMIC, I commented out the PMIC element and instead pass a dummy regulator to the SDMMC peripherals. With no other changes, I got absolutely no output from the console. When I enabled earlyprintk support, I got output that stopped at "printk: console [tty0] enabled." I thought, "hmm, that's weird. Why isn't it loading my UART driver?" I edited the boot arguments to pass console=ttySTM0,115200 to the kernel (obviously it should be getting picked up from the device tree file), and this fixed the console printing issue, but I now have the attached log file.

As you can see, the device tree is getting loaded, and the memory pools / CPU settings are handled. However, none of the STM32 peripheral drivers are getting loaded. No interrupt controller, pin controller, USARTs, RNG, RTC, MMC, or anything else.

I decompiled my device tree to make sure I didn't have a freaky include problem — nope, everything is there with "status = okay"

If I get a mainline Linux kernel (which uses a completely different device tree file structure from the STM32 V2 release), and make the same DTS changes, I have no problems booting up.

My theory is that some how the simple-bus node that all these peripherals sit under isn't enabled or something, which is causing the child nodes not to register?

By the way, if I use the good DTB on the mainline kernel, it doesn't have this driver loading issue.