Hi,
The Juno port in U-Boot didn't see much love lately, so it has fallen
a bit behind. We already get a build warning for using an old network
driver, but there is more:
- The port is using hardcoded information, even though we have quite
decent DTs available to find things at runtime.
- There is no support for USB or PCI, which pretty much limits the board
to load a kernel from flash (yuck!) or TFTP (at least!).
- Probably because of this, newer features like UEFI support don't work
properly.
- There are minor things like less-than-ideal default load addresses and
missing reset support.
This series is the first part of fixing this. The main part is to switch
the board port to use OF_CONTROL, so U-Boot will use a DT to configure
itself at runtime. This requires some update to the PL011 driver first
(patch 2/7), and allows us to simply enable USB in the defconfig (patch
6/7). USB requires two "usb reset" calls after the initial "usb start" to
recognise any devices, not sure why this is.
But eventually I am able to load grub from a USB hard drive and do a full
featured Ubuntu UEFI boot from there (with a distro kernel).
Patches 1, 3, and 7 are mere fixes, patch 4/7 does the actual OF_CONTROL
conversion.
I also have some proper DM_PCI compliant driver in an advanced state,
which allows to load from a SATA hard disk. Unfortunately there is no
sky2 network driver in U-Boot, so the Gigabit Ethernet chip connected
to PCI will not work easily.
I will post this once this is cleaned up and tested.
Converting the smc network driver to DM_ETH is on my list as well, but
the code is shared with some U-Boot *application* code, also used by
some PowerPC boards, so that's not really a low hanging fruit.
But it would remove the deprecation warning.
Cheers,
Andre
P.S. In case you want to test this without flashing it, you can
chainload U-Boot from an existing U-Boot installation:
$ mkimage -A arm64 -O u-boot -T standalone -C none -a 0xe0000000 -e 0xe0000000
-d u-boot.bin -n U-Boot /srv/tftp/u-boot-juno.img
VExpress64# tftpboot 0xe0000000 u-boot-juno.img
VExpress64# bootm 0xe0000000
Andre Przywara (7):
arm: juno: Fix Juno address variables
uart: pl011: Add proper DM clock support
arm: juno: Fix UART clock rate
arm: juno: Enable OF_CONTROL
arm: juno: Use PSCI based reset
arm: juno: enable USB
arm: vexpress64: Remove unneeded CONFIG_ check
arch/arm/Kconfig | 11 ++++++
board/armltd/vexpress64/Kconfig | 7 ++++
board/armltd/vexpress64/vexpress64.c | 61 ++++++++++++++++++++++++++++++++--
configs/vexpress_aemv8a_juno_defconfig | 9 +++--
drivers/serial/serial_pl01x.c | 10 +++++-
include/configs/vexpress_aemv8a.h | 35 ++++++++++---------
6 files changed, 108 insertions(+), 25 deletions(-)