ARM – Pi2 – Kernel 4.4-rc5 – U-Boot Fail, and Workaround..

Recently attempted to update the Pi2 to Kernel 4.4-rc5, and encountered a problem..

The more recent proprietary Raspberry Pi 2 kernels have switched to using ‘DTB Overlays’ to control various components, but these are – currently – unsupported by U-Boot..

Booting the kernel with U-Boot results in mmc errors, and register dump:

timeout waiting for hardware interrupt.
mmc0: cmd op 25 arg 0x399f800 flags 0xb5 - resp 00000900 00000000 00000000 00000000, err 0
mmc0: data blocks 8 blksz 200 - err 0
mmc0: stop op 12 arg 0x0 flags 0x49d - resp 00000000 00000000 00000000 00000000, err 0
mmc0: =========== REGISTER DUMP ===========
mmc0: SDCMD 0x00000099
mmc0: SDARG 0x0399f800
mmc0: SDTOUT 0x017d7840
mmc0: SDCDIV 0x00000003
mmc0: SDRSP0 0x00000900
mmc0: SDRSP1 0x00001918
mmc0: SDRSP2 0xffffffff
mmc0: SDRSP3 0x0002c01f
mmc0: SDHSTS 0x00000000
mmc0: SDVDD 0x00000001
mmc0: SDEDM 0x00010801
mmc0: SDHCFG 0x0000050e
mmc0: SDHBCT 0x00000200
mmc0: SDHBLC 0x00000001
mmc0: ===========================================

The DTB Overlays only function with the old primitive bootloader – using parameters in config.txt..

After trying many options in the kernel config for mmc drivers, I eventually found a (nasty hack?) workaround..

I tried substituting an older known/good version of bcm2709-rpi-2-b.dtb (from Pi2 Kernel 4.0.5-rc4) for the ‘new’ one, and it booted OK..

Fedora 23
Kernel 4.4.0-rc5-v7 on an armv7l (ttyAMA0)
]# uname -a
Linux rgpi2 4.4.0-rc5-v7 #2 SMP PREEMPT Sat Dec 19 21:17:19 PST 2015 armv7l armv7l armv7l GNU/Linux

It makes some sense to control optional components using DTB Overlays, but odd that they seem to be used for major fixed components as well?

Robert Gadsdon.  December 20, 2015.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.