qemu/hw/arm
Niek Linnenbank a80beb160d hw/arm/allwinner-h3: add Boot ROM support
A real Allwinner H3 SoC contains a Boot ROM which is the
first code that runs right after the SoC is powered on.
The Boot ROM is responsible for loading user code (e.g. a bootloader)
from any of the supported external devices and writing the downloaded
code to internal SRAM. After loading the SoC begins executing the code
written to SRAM.

This commits adds emulation of the Boot ROM firmware setup functionality
by loading user code from SD card in the A1 SRAM. While the A1 SRAM is
64KiB, we limit the size to 32KiB because the real H3 Boot ROM also rejects
sizes larger than 32KiB. For reference, this behaviour is documented
by the Linux Sunxi project wiki at:

  https://linux-sunxi.org/BROM#U-Boot_SPL_limitations

Signed-off-by: Niek Linnenbank <nieklinnenbank@gmail.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20200311221854.30370-11-nieklinnenbank@gmail.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2020-03-12 16:27:33 +00:00
..
allwinner-a10.c hw/arm/allwinner: add SD/MMC host controller 2020-03-12 16:27:33 +00:00
allwinner-h3.c hw/arm/allwinner-h3: add Boot ROM support 2020-03-12 16:27:33 +00:00
armsse.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
armv7m.c hw/core/loader: Let load_elf() populate a field with CPU-specific flags 2020-01-29 19:28:52 +01:00
aspeed.c arm/aspeed: use memdev for RAM 2020-02-19 16:49:54 +00:00
aspeed_ast2600.c hw/arm: ast2600: Wire up EHCI controllers 2020-02-13 14:14:55 +00:00
aspeed_soc.c hw/arm: ast2400/ast2500: Wire up EHCI controllers 2020-02-13 14:14:55 +00:00
bcm2835_peripherals.c hw/arm/bcm2835_peripherals: Use the SYS_timer 2019-10-25 13:09:27 +01:00
bcm2836.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
boot.c Remove unnecessary cast when using the address_space API 2020-02-20 14:47:08 +01:00
collie.c arm/collie: use memdev for RAM 2020-02-19 16:49:54 +00:00
cubieboard.c hw/arm/allwinner: add SD/MMC host controller 2020-03-12 16:27:33 +00:00
digic.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
digic_boards.c arm/digic_boards: use memdev for RAM 2020-02-19 16:49:54 +00:00
exynos4_boards.c Machine + x86 queue, 2019-09-03 2019-09-04 14:44:54 +01:00
exynos4210.c hw/arm/exynos4210: Connect serial port DMA busy signals with pl330 2020-01-23 16:34:15 +00:00
fsl-imx6.c i.MX: Add support for WDT on i.MX6 2020-02-13 14:14:52 +00:00
fsl-imx6ul.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
fsl-imx7.c hw/arm: Replace global smp variables with machine smp properties 2019-07-05 17:08:03 -03:00
fsl-imx25.c hw/arm/fsl-imx25: Wire up USB controllers 2020-03-12 16:27:33 +00:00
fsl-imx31.c hw/arm/fsl-imx: Add the cpu as child of the SoC object 2019-09-03 16:20:34 +01:00
gumstix.c hw/arm/gumstix: Simplify since the machines are little-endian only 2020-03-05 16:09:14 +00:00
highbank.c arm/highbank: use memdev for RAM 2020-02-19 16:49:54 +00:00
imx25_pdk.c hw/arm/fsl-imx25: Wire up eSDHC controllers 2020-03-12 16:27:33 +00:00
integratorcp.c hw/arm/integratorcp: Map the audio codec controller 2020-02-28 16:14:57 +00:00
Kconfig hw/arm/allwinner-h3: add EMAC ethernet device 2020-03-12 16:27:33 +00:00
kzm.c arm/kzm: use memdev for RAM 2020-02-19 16:49:55 +00:00
mainstone.c hw/arm/mainstone: Simplify since the machines are little-endian only 2020-03-05 16:09:15 +00:00
Makefile.objs hw/arm: add Xunlong Orange Pi PC machine 2020-03-12 16:27:33 +00:00
mcimx6ul-evk.c arm/mcimx6ul-evk: use memdev for RAM 2020-02-19 16:49:55 +00:00
mcimx7d-sabre.c arm/mcimx7d-sabre: use memdev for RAM 2020-02-19 16:49:55 +00:00
microbit.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
mps2-tz.c arm/mps2-tz: use memdev for RAM 2020-02-19 16:49:55 +00:00
mps2.c arm/mps2: use memdev for RAM 2020-02-19 16:49:55 +00:00
msf2-soc.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
msf2-som.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
musca.c hw: Move PL031 device from hw/timer/ to hw/rtc/ subdirectory 2019-10-24 20:10:27 +02:00
musicpal.c hw/arm/musicpal: Simplify since the machines are little-endian only 2020-03-05 16:09:15 +00:00
netduino2.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
netduinoplus2.c hw/arm: Add the Netduino Plus 2 2020-01-17 14:09:29 +00:00
nrf51_soc.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
nseries.c arm/nseries: use memdev for RAM 2020-02-19 16:49:56 +00:00
omap1.c omap-gpio: remove PROP_PTR 2020-01-07 17:24:29 +04:00
omap2.c omap-gpio: remove PROP_PTR 2020-01-07 17:24:29 +04:00
omap_sx1.c hw/arm/omap_sx1: Simplify since the machines are little-endian only 2020-03-05 16:09:15 +00:00
orangepi.c hw/arm/allwinner-h3: add Boot ROM support 2020-03-12 16:27:33 +00:00
palm.c arm/palm: use memdev for RAM 2020-02-19 16:49:56 +00:00
pxa2xx.c hw/arm/pxa2xx: move timer_new from init() into realize() to avoid memleaks 2020-03-05 16:09:15 +00:00
pxa2xx_gpio.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
pxa2xx_pic.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
raspi.c arm/raspi: use memdev for RAM 2020-02-19 16:49:56 +00:00
realview.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
sabrelite.c arm/sabrelite: use memdev for RAM 2020-02-19 16:49:56 +00:00
sbsa-ref.c hw/arm: Use TYPE_PL011 to create serial port 2020-02-28 16:14:57 +00:00
smmu-common.c hw/arm/smmu-common: Simplify smmu_find_smmu_pcibus() logic 2020-03-05 16:09:14 +00:00
smmu-internal.h hw/arm/smmu-common: VMSAv8-64 page table walk 2018-05-04 18:05:51 +01:00
smmuv3-internal.h hw/arm/smmuv3: Use correct bit positions in EVT_SET_ADDR2 macro 2019-12-20 14:03:00 +00:00
smmuv3.c hw: Remove unnecessary cast when calling dma_memory_read() 2020-02-20 14:47:08 +01:00
spitz.c hw/arm/spitz: move timer_new from init() into realize() to avoid memleaks 2020-03-05 16:09:16 +00:00
stellaris.c stellaris: delay timer_new to avoid memleaks 2020-02-07 14:04:28 +00:00
stm32f205_soc.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
stm32f405_soc.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
strongarm.c hw/arm/strongarm: move timer_new from init() into realize() to avoid memleaks 2020-03-05 16:09:16 +00:00
strongarm.h hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
sysbus-fdt.c hw/arm/virt: vTPM support 2020-03-05 12:18:16 -05:00
tosa.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
trace-events trace-events: Fix attribution of trace points to source 2019-03-22 16:18:07 +00:00
versatilepb.c arm/versatilepb: use memdev for RAM 2020-02-19 16:49:56 +00:00
vexpress.c arm/vexpress: use memdev for RAM 2020-02-19 16:49:56 +00:00
virt-acpi-build.c arm/acpi: simplify the description of PCI _CRS 2020-02-13 14:14:53 +00:00
virt.c hw/arm/virt: vTPM support 2020-03-05 12:18:16 -05:00
xilinx_zynq.c hw/arm/xilinx_zynq: Fix USB port instantiation 2020-02-28 16:14:57 +00:00
xlnx-versal-virt.c hw/arm: versal: Generate xlnx-versal-virt zdma FDT nodes 2020-03-05 16:09:14 +00:00
xlnx-versal.c hw/arm: versal: Add support for the LPD ADMAs 2020-03-05 16:09:13 +00:00
xlnx-zcu102.c arm/xlnx-zcu102: use memdev for RAM 2020-02-19 16:49:57 +00:00
xlnx-zynqmp.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00
z2.c hw/arm/z2: Simplify since the machines are little-endian only 2020-03-05 16:09:15 +00:00