Package: u-boot-rpi
Version: 2020.10+dfsg-1+b1
Severity: important

Appears "standard" device trees for the Raspberry PI 4B connect the
serial pins to the mini-UART.  This is troublesome due to the mini-UART's
baud rate changing when the processor clock changes.

Often Raspberry PI devices have an initial boot phase where the
processor clock is locked at maximum for a period, and then decreased.
If/when that decrease occurs, the baud rate changes and suddenly serial
communication becomes corrupt.

3 strategies come to mind for U-Boot:

1>  Dynamically modify the baud rate register as the processor clock
changes.  If the processor clock is increased, decrease the baud rate
register.  If the processor clock is decreased, increase the baud rate
register.
2>  Peg the processor clock at maximum until EFI boot mode is exited.
3>  Peg the processor clock at minimum until EFI boot mode is exited.

The first is ideal, but requires U-Boot to monitor the processor clock
as it changes dynamically.  The next two are suboptimal, but not too
likely to cause problems.

The likely cause for a bootloader (GRUB) to remain active is user
interaction via the serial port.  In this case a stable baud rate is
crucial.  GRUB is likely to issue halt instructions while waiting and
this should keep processor temperature down.  As such I feel pegging the
processor clock to max is better than pegging to minimum.  Once an OS
takes over, EFI boot services should be exited and then it is no longer
a U-Boot issue.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sig...@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445

Reply via email to