Garbage UART output on RPI 4 with upstream kernel DTB

Matthias Brugger matthias.bgg at gmail.com
Tue Dec 24 13:38:14 CET 2019



On 24/12/2019 12:56, Stefan Wahren wrote:
> Hi Matthias,
> 
> Am 23.12.19 um 21:20 schrieb Matthias Brugger:
>> Hi Stefan,
>>
>> On 23/12/2019 19:51, Stefan Wahren wrote:
>>> Am 20.12.19 um 14:58 schrieb Stefan Wahren:
>>>> Hi,
>>>>
>>>> i tried to run current U-Boot (rpi_4_32b_defconfig) on my RPi 4 with
>>>> bcm2711-rpi-4-b.dtb from the upstream kernel. Unfortunately i only see
>>>> garbage on the debug UART (pin 14 & 15). Using the DTB from the
>>>> downstream kernel has a proper UART output. The config.txt contains
>>>> debug_uart=1
>>>>
>>>> I compared both and identified an offending Linux commit:
>>>> ARM: dts: bcm283x: Remove brcm,bcm2835-pl011 compatible
>>>>
>>>> Unfortunately reverting this patch still doesn't fix the issue. Any ideas?
>>> After hours of playing with the DTB, i finally found the reason why the
>>> upstream kernel DTB doesn't work with U-Boot on RPI 4. The DTS must be
>>> compiled with flag "-@".
>>>
>>> It isn't clear to me, why this is necessary but it would be nice to make
>>> U-Boot work without this.
>>>
>> Can you provide the exact command you are using?
> 
> i didn't call dtc directly via command line. I just added this Makefile
> hack [1] to the Linux upstream tree. This will add a __symbols__ section
> to the DTB which is required for overlays. You can verify this with dtdiff.
> 
> Since the upstream kernel boots without the __symbols__ section, i think
> this garbage output issue could be fixed in u-boot.
> 

Little by little I grasp what you are doing. So you compile the DTB in the
kernel, then pass the blob to u-boot and add it with OF_EMBED? Is that correct?

Regards,
Matthias


More information about the U-Boot mailing list