[PATCH 1/1] ARM: vexpress_ca9x4: Reintroduce board in order to use with QEMU.
Tom Rini
trini at konsulko.com
Wed Sep 8 15:57:44 CEST 2021
On Tue, Sep 07, 2021 at 08:37:51AM +0200, Kristian Amlie wrote:
> vexpress_ca9x4 is seemingly the only board except for qemu_arm which
> is able to run U-Boot correctly, using the `-M vexpress-a9` option to
> QEMU. Building for qemu_arm and running qemu-system-arm with the `-M
> virt` argument has a number of downsides, most importantly that it
> only supports virtio storage drivers. This significantly reduces its
> usefulness in testing memory card and Flash solutions, especially when
> the tested images are from a third party source.
>
> So therefore we reintroduce the vexpress_ca9x4 board in this commit,
> with the explicit goal of using it with QEMU.
>
> A number of differences to note from the original:
>
> * Since the board was apparently unmaintained, I have now set myself
> as the maintainer.
>
> * The board has been converted to use the driver model, which was the
> reason it was removed in the first place.
>
> * The vexpress_ca15_tc2 and vexpress_ca5x2 boards, which were removed
> in the same commit, are not necessary for the QEMU use case, and
> have been omitted.
>
> * An `mmc0` alias was introduced in the dts file. The mmc is not
> detected correctly without this, now that it's based on the device
> tree instead of the board's init function.
>
> * A couple of other nodes were removed because they were problematic
> when trying to run the UEFI bootmgr. Once again, the primary use
> case here is QEMU, and these nodes are not needed for that to work.
>
> * Unnecessary board init code has been removed, thanks to driver model
> and device tree.
>
> * `CONFIG_OF_EMBED` has been enabled. I know this goes against
> recommended practice, but there doesn't seem to be any other way to
> pass the dtb to U-Boot in the QEMU scenario. Using the -dtb argument
> does not work, I suppose because U-Boot doesn't use the same
> mechanics as the kernel when it's booting.
This is something that should get looked at and figured out, but is
separate. I thought this did work on Pi for example.
> * Load addresses have been changed to fit QEMU use case.
>
> People wanting to get a more detailed, yet somewhat isolated, diff
> between this and the original, can run this command:
>
> git diff c6c26a05b89f25a06e7562f8c2071b60fd0c9eac~1 -- \
> $( git diff-tree --diff-filter=A -r --name-only HEAD~1 HEAD)
>
> (Make sure to either check out this commit first, or replace HEAD with
> the commit ID of this commit)
>
> Signed-off-by: Kristian Amlie <kristian.amlie at northern.tech>
I'm glad to see this come back. A request:
[snip]
> diff --git a/include/configs/vexpress_ca9x4.h b/include/configs/vexpress_ca9x4.h
> new file mode 100644
> index 0000000000..8157a5868d
> --- /dev/null
> +++ b/include/configs/vexpress_ca9x4.h
> @@ -0,0 +1,16 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + * (C) Copyright 2011 Linaro
> + * Ryan Harkin, <ryan.harkin at linaro.org>
> + *
> + * Configuration for Versatile Express. Parts were derived from other ARM
> + * configurations.
> + */
> +
> +#ifndef __VEXPRESS_CA9X4_H
> +#define __VEXPRESS_CA9X4_H
> +
> +#define CONFIG_VEXPRESS_ORIGINAL_MEMORY_MAP
> +#include "vexpress_common.h"
CONFIG_VEXPRESS_ORIGINAL_MEMORY_MAP looks to just be polluting the
CONFIG namespace, it's only then used..
> +
> +#endif /* VEXPRESS_CA9X4_H */
> diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h
> index b131480e5b..99a5dd064a 100644
> --- a/include/configs/vexpress_common.h
> +++ b/include/configs/vexpress_common.h
> @@ -169,29 +169,10 @@
> func(DHCP, dhcp, na)
> #include <config_distro_bootcmd.h>
>
> -#ifdef CONFIG_VEXPRESS_ORIGINAL_MEMORY_MAP
> -#define CONFIG_PLATFORM_ENV_SETTINGS \
> - "loadaddr=0x80008000\0" \
> - "ramdisk_addr_r=0x61000000\0" \
> - "kernel_addr=0x44100000\0" \
> - "ramdisk_addr=0x44800000\0" \
> - "maxramdisk=0x1800000\0" \
> - "pxefile_addr_r=0x88000000\0" \
> - "scriptaddr=0x88000000\0" \
> - "kernel_addr_r=0x80008000\0"
> -#elif defined(CONFIG_VEXPRESS_EXTENDED_MEMORY_MAP)
> -#define CONFIG_PLATFORM_ENV_SETTINGS \
> - "loadaddr=0xa0008000\0" \
> - "ramdisk_addr_r=0x81000000\0" \
> - "kernel_addr=0x0c100000\0" \
> - "ramdisk_addr=0x0c800000\0" \
> - "maxramdisk=0x1800000\0" \
> - "pxefile_addr_r=0xa8000000\0" \
> - "scriptaddr=0xa8000000\0" \
> - "kernel_addr_r=0xa0008000\0"
> -#endif
> #define CONFIG_EXTRA_ENV_SETTINGS \
> - CONFIG_PLATFORM_ENV_SETTINGS \
> + "kernel_addr_r=0x60100000\0" \
> + "fdt_addr_r=0x60000000\0" \
> + "bootargs=console=tty0 console=ttyAMA0,38400n8\0" \
> BOOTENV \
> "console=ttyAMA0,38400n8\0" \
> "dram=1024M\0" \
around here, to modify what the default environment is. Can you please
do a patch (a follow-up to this is fine) to rename it to just
VEXPRESS_ORIGINAL_MEMORY_MAP ? Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210908/271ccf3f/attachment.sig>
More information about the U-Boot
mailing list