From patchwork Mon Apr 27 18:17:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Przywara X-Patchwork-Id: 238681 List-Id: U-Boot discussion From: andre.przywara at arm.com (Andre Przywara) Date: Mon, 27 Apr 2020 19:17:57 +0100 Subject: [PATCH v3 0/7] Arm Juno board OF_CONTROL upgrade Message-ID: <20200427181804.15787-1-andre.przywara@arm.com> Hi, another small update, fixing the Raspberry Pi breakage from the previous version. Only patch 2/7 has changed. I added Linus' Reviewed-by: to patch 7/7 and dropped Simon's R-b: to patch 2/7, because of the changes. Cheers, Andre ------------ 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 Changelog v2 ... v3: - cope with platforms not defining CONFIG_PL011_CLOCK Changelog v1 ... v2: - drop fdt_high and initrd_high variables - rename initrd_addr to ramdisk_addr_r 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 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 | 47 +++++++++++++------- include/configs/vexpress_aemv8a.h | 41 ++++++++--------- 6 files changed, 132 insertions(+), 44 deletions(-)