Hi Frederic, On Tue, Dec 10, 2019 at 11:34 AM KONRAD Frederic < frederic.kon...@adacore.com> wrote:
> > > Le 12/2/19 à 10:09 PM, Niek Linnenbank a écrit : > > Dear QEMU developers, > > > > Hereby I would like to contribute the following set of patches to QEMU > > which add support for the Allwinner H3 System on Chip and the > > Orange Pi PC machine. The following features and devices are supported: > > > > * SMP (Quad Core Cortex A7) > > * Generic Interrupt Controller configuration > > * SRAM mappings > > * Timer device (re-used from Allwinner A10) > > * UART > > * SD/MMC storage controller > > * EMAC ethernet connectivity > > * USB 2.0 interfaces > > * Clock Control Unit > > * System Control module > > * Security Identifier device > > > > Functionality related to graphical output such as HDMI, GPU, > > Display Engine and audio are not included. Recently released > > mainline Linux kernels (4.19 up to latest master) and mainline U-Boot > > are known to work. The SD/MMC code is tested using bonnie++ and > > various tools such as fsck, dd and fdisk. The EMAC is verified with > iperf3 > > using -netdev socket. > > > > To build a Linux mainline kernel that can be booted by the Orange Pi PC > > machine, simply configure the kernel using the sunxi_defconfig > configuration: > > $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make mrproper > > $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make sunxi_defconfig > > > > To be able to use USB storage, you need to manually enable the > corresponding > > configuration item. Start the kconfig configuration tool: > > $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make menuconfig > > > > Navigate to the following item, enable it and save your configuration: > > Device Drivers > USB support > USB Mass Storage support > > > > Build the Linux kernel with: > > $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make -j5 > > > > To boot the newly build linux kernel in QEMU with the Orange Pi PC > machine, use: > > $ qemu-system-arm -M orangepi -m 512 -nic user -nographic \ > > -kernel /path/to/linux/arch/arm/boot/zImage \ > > -append 'console=ttyS0,115200' \ > > -dtb /path/to/linux/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb > > > > Note that this kernel does not have a root filesystem. You may provide it > > with an official Orange Pi PC image [1] either as an SD card or as > > USB mass storage. To boot using the Orange Pi PC Debian image on SD card, > > simply add the -sd argument and provide the proper root= kernel > parameter: > > $ qemu-system-arm -M orangepi -m 512 -nic user -nographic \ > > -kernel /path/to/linux/arch/arm/boot/zImage \ > > -append 'console=ttyS0,115200 root=/dev/mmcblk0p2' \ > > -dtb /path/to/linux/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb \ > > -sd OrangePi_pc_debian_stretch_server_linux5.3.5_v1.0.img > > > > Alternatively, you can also choose to build and boot a recent buildroot > [2] > > using the orangepi_pc_defconfig or Armbian image [3] for Orange Pi PC. > > To attach an USB mass storage device to the machine, simply append to > the command: > > -drive if=none,id=stick,file=myimage.img \ > > -device usb-storage,bus=usb-bus.0,drive=stick > > > > U-Boot mainline can be build and configured using the > orangepi_pc_defconfig > > using similar commands as describe above for Linux. To start U-Boot using > > the Orange Pi PC machine, provide the u-boot binary to the -kernel > argument: > > $ qemu-system-arm -M orangepi -m 512 -nic user -nographic \ > > -kernel /path/to/uboot/u-boot -sd disk.img > > > > Use the following U-boot commands to load and boot a Linux kernel from > SD card: > > -> setenv bootargs console=ttyS0,115200 > > -> ext2load mmc 0 0x42000000 zImage > > -> ext2load mmc 0 0x43000000 sun8i-h2-plus-orangepi-zero.dtb > > -> bootz 0x42000000 - 0x43000000 > > > > Looking forward to your review comments. I will do my best > > to update the patches where needed. > > > > With kind regards, > > > > Niek Linnenbank > > > > [1] http://www.orangepi.org/downloadresources/ > > [2] https://buildroot.org/download.html > > [3] https://www.armbian.com/orange-pi-pc/ > > Works well on my side with vanilla linux-4.9.13 built with gcc-8.3.0 + > busybox > and sun8i-h3-orangepi-one.dtb. > > Tested-by: KONRAD Frederic <frederic.kon...@adacore.com> > > Thank you for testing! Great, I'll add the tag for the next v2 of the patches. Regards, Niek > > > > Niek Linnenbank (10): > > hw: arm: add Allwinner H3 System-on-Chip > > hw: arm: add Xunlong Orange Pi PC machine > > arm: allwinner-h3: add Clock Control Unit > > arm: allwinner-h3: add USB host controller > > arm: allwinner-h3: add System Control module > > arm/arm-powerctl: set NSACR.{CP11,CP10} bits in arm_set_cpu_on() > > arm: allwinner-h3: add CPU Configuration module > > arm: allwinner-h3: add Security Identifier device > > arm: allwinner-h3: add SD/MMC host controller > > arm: allwinner-h3: add EMAC ethernet device > > > > MAINTAINERS | 8 + > > default-configs/arm-softmmu.mak | 1 + > > hw/arm/Kconfig | 9 + > > hw/arm/Makefile.objs | 1 + > > hw/arm/allwinner-h3.c | 316 ++++++++++ > > hw/arm/orangepi.c | 114 ++++ > > hw/misc/Makefile.objs | 4 + > > hw/misc/allwinner-h3-clk.c | 227 ++++++++ > > hw/misc/allwinner-h3-cpucfg.c | 280 +++++++++ > > hw/misc/allwinner-h3-sid.c | 162 ++++++ > > hw/misc/allwinner-h3-syscon.c | 139 +++++ > > hw/misc/trace-events | 5 + > > hw/net/Kconfig | 3 + > > hw/net/Makefile.objs | 1 + > > hw/net/allwinner-h3-emac.c | 786 +++++++++++++++++++++++++ > > hw/net/trace-events | 10 + > > hw/sd/Makefile.objs | 1 + > > hw/sd/allwinner-h3-sdhost.c | 791 ++++++++++++++++++++++++++ > > hw/sd/trace-events | 7 + > > hw/usb/hcd-ehci-sysbus.c | 17 + > > hw/usb/hcd-ehci.h | 1 + > > include/hw/arm/allwinner-h3.h | 130 +++++ > > include/hw/misc/allwinner-h3-clk.h | 41 ++ > > include/hw/misc/allwinner-h3-cpucfg.h | 44 ++ > > include/hw/misc/allwinner-h3-sid.h | 42 ++ > > include/hw/misc/allwinner-h3-syscon.h | 43 ++ > > include/hw/net/allwinner-h3-emac.h | 69 +++ > > include/hw/sd/allwinner-h3-sdhost.h | 73 +++ > > target/arm/arm-powerctl.c | 3 + > > 29 files changed, 3328 insertions(+) > > create mode 100644 hw/arm/allwinner-h3.c > > create mode 100644 hw/arm/orangepi.c > > create mode 100644 hw/misc/allwinner-h3-clk.c > > create mode 100644 hw/misc/allwinner-h3-cpucfg.c > > create mode 100644 hw/misc/allwinner-h3-sid.c > > create mode 100644 hw/misc/allwinner-h3-syscon.c > > create mode 100644 hw/net/allwinner-h3-emac.c > > create mode 100644 hw/sd/allwinner-h3-sdhost.c > > create mode 100644 include/hw/arm/allwinner-h3.h > > create mode 100644 include/hw/misc/allwinner-h3-clk.h > > create mode 100644 include/hw/misc/allwinner-h3-cpucfg.h > > create mode 100644 include/hw/misc/allwinner-h3-sid.h > > create mode 100644 include/hw/misc/allwinner-h3-syscon.h > > create mode 100644 include/hw/net/allwinner-h3-emac.h > > create mode 100644 include/hw/sd/allwinner-h3-sdhost.h > > > -- Niek Linnenbank