[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 00/10] Add Allwinner H3 SoC and Orange Pi PC Machine

From: KONRAD Frederic
Subject: Re: [PATCH 00/10] Add Allwinner H3 SoC and Orange Pi PC Machine
Date: Tue, 10 Dec 2019 11:34:54 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1

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 
  -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 <address@hidden>

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]