This patch series adds initial support for Raspberry Pi 2 (bcm2836). It is heavily based on the original (out of tree) work of Gregory Estrade, Stefan Weil and others to support Raspberry Pi 1. Thanks are also due to Peter Crosthwaite for the code reviews and feedback.
At the end of this series, it is possible to boot a recent raspbian kernel to a serial console using an invocation such as: qemu-system-arm -M raspi2 -kernel raspbian-boot/kernel7.img -sd 2015-09-24-raspbian-jessie.vhd -append "rw earlyprintk loglevel=8 console=ttyAMA0 root=/dev/mmcblk0p2 rootwait" -serial stdio (where raspbian-boot is the boot partition from the matching image, and after commenting-out or removing /etc/ld.so.preload to avoid an unimplemented setend instruction). I plan to add DMA, USB, framebuffer, timers, and other system devices (power, mphi, aux/uart1) in future patches. In the meantime, the complete code is available at: https://github.com/0xabu/qemu Although this series includes many of the peripherals common to Pi1 (aka bcm2835 aka Pi0), it's not yet possible to boot a Pi1, because it requires additional peripherals, so I'll also add that SoC and machine in a later patch. v2 changes: * cleanup based on reviews of mbox and ic devices by Peter Crosthwaite (see specific notes on each patch) * removed custom SD controller in favour of sdhci v3 changes: * cleanup/tweaks to mbox, ic, peripherals and bcm2836_control devices from v2 review * changed how I allocate and pass ram from the board through to the SoC * cleanup raspi_platform.h * s/_/-/ in device/property/type names v4 changes: * refactoring in bcm2836_control * minor cleanup / style tweaks in other device emulations * use qemu MAC address in bcm2835_property * avoid use of smp_cpus outside raspi.c * made setup blobs relocatable, and merged with highbank's copy in common code v5 changes: * minor cleanup / style tweaks only Cheers, Andrew Andrew Baumann (8): bcm2835_mbox: add BCM2835 mailboxes bcm2835_property: add bcm2835 property channel bcm2835_ic: add bcm2835 interrupt controller bcm2835_peripherals: add rollup device for bcm2835 peripherals bcm2836_control: add bcm2836 ARM control logic bcm2836: add bcm2836 SoC device arm/boot: move highbank secure board setup code to common routine raspi: add raspberry pi 2 machine default-configs/arm-softmmu.mak | 1 + hw/arm/Makefile.objs | 1 + hw/arm/bcm2835_peripherals.c | 204 +++++++++++++++++++++ hw/arm/bcm2836.c | 165 +++++++++++++++++ hw/arm/boot.c | 51 ++++++ hw/arm/highbank.c | 37 +--- hw/arm/raspi.c | 152 ++++++++++++++++ hw/intc/Makefile.objs | 1 + hw/intc/bcm2835_ic.c | 236 +++++++++++++++++++++++++ hw/intc/bcm2836_control.c | 303 +++++++++++++++++++++++++++++++ hw/misc/Makefile.objs | 2 + hw/misc/bcm2835_mbox.c | 333 +++++++++++++++++++++++++++++++++++ hw/misc/bcm2835_property.c | 287 ++++++++++++++++++++++++++++++ include/hw/arm/arm.h | 5 + include/hw/arm/bcm2835_peripherals.h | 42 +++++ include/hw/arm/bcm2836.h | 35 ++++ include/hw/arm/raspi_platform.h | 128 ++++++++++++++ include/hw/intc/bcm2835_ic.h | 33 ++++ include/hw/intc/bcm2836_control.h | 51 ++++++ include/hw/misc/bcm2835_mbox.h | 38 ++++ include/hw/misc/bcm2835_mbox_defs.h | 27 +++ include/hw/misc/bcm2835_property.h | 31 ++++ 22 files changed, 2128 insertions(+), 35 deletions(-) create mode 100644 hw/arm/bcm2835_peripherals.c create mode 100644 hw/arm/bcm2836.c create mode 100644 hw/arm/raspi.c create mode 100644 hw/intc/bcm2835_ic.c create mode 100644 hw/intc/bcm2836_control.c create mode 100644 hw/misc/bcm2835_mbox.c create mode 100644 hw/misc/bcm2835_property.c create mode 100644 include/hw/arm/bcm2835_peripherals.h create mode 100644 include/hw/arm/bcm2836.h create mode 100644 include/hw/arm/raspi_platform.h create mode 100644 include/hw/intc/bcm2835_ic.h create mode 100644 include/hw/intc/bcm2836_control.h create mode 100644 include/hw/misc/bcm2835_mbox.h create mode 100644 include/hw/misc/bcm2835_mbox_defs.h create mode 100644 include/hw/misc/bcm2835_property.h -- 2.5.3