qemu-arm
[Top][All Lists]
Advanced

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

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


From: Niek Linnenbank
Subject: Re: [PATCH v4 00/20] Add Allwinner H3 SoC and Orange Pi PC Machine
Date: Sun, 19 Jan 2020 12:51:06 +0100



On Sun, Jan 19, 2020, 01:51 Niek Linnenbank <address@hidden> wrote:
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
 * SDRAM controller
 * Real Time Clock
 * 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), mainline U-Boot
and NetBSD 9.0-RC1 are known to work.

For full details on how to use the Orange Pi PC machine, see the file
docs/orangepi.rst which is included as a patch in this series.

The contents of this patch series is available on Github at:

  https://github.com/nieklinnenbank/qemu/tree/allwinner-h3-v3

I forgot to update this link in the cover letter to v4. The correct link is:

https://github.com/nieklinnenbank/qemu/tree/allwinner-h3-v4



The followings are currently known issues in this series:

  - NetBSD 9.0-RC1 reads out year 2050 from RTC, while Linux works fine
     -> This is due to difference in base year defined by the corresponding drivers
  - RTC date & time is not persistent
  - boot0 custom Allwinner bootloader not yet working
  - Watchdog not yet implemented, affects U-Boot 'reset' and shutdown/reboot
     -> This is part of the existing A10 timer that needs to be generalized first

Looking forward to your review comments. I will do my best
to update the patches where needed.

===== CHANGELOG =====
v4:
 * docs/orangepi.rst: correct SDRAM size in board description: 512MB -> 1GiB
 * hw/arm/orangepi.c: correct SDRAM size in commit message: 512MB -> 1GiB
 * hw/arm/orangepi.c: set .nb_cpus in the orangepi_binfo struct static initialisation
 * hw/arm/orangepi.c: remove .board_id from orangepi_binfo struct
 * hw/arm/orangepi.c: move BIOS check to top of orangepi_init()
 * hw/arm/orangepi.c: change clk1-freq argument 24000000 to 24 * 1000 * 1000 for readability
 * hw/arm/orangepi.c: rephrase 1GiB check error message
 * include/hw/arm/allwinner-h3.h: improved comments
 * hw/arm/allwinner-h3.c: remove duplicate initialization and declaration of i variable
 * hw/arm/allwinner-h3.c: use DEVICE(&s->cpus[i]) instead of qemu_get_cpu()
 * hw/arm/allwinner-h3.c: use qdev API instead of object API in CPU initialization part
 * hw/arm/allwinner-h3.c: add note that UARTs are connected to APB2_CLK, for future clocktree API
 * hw/arm/allwinner-h3.c: extend commit message for Boot ROM with description for the 32KiB size
 * hw/rtc/allwinner-rtc.c: correct usage of AwRtcClass->regmap_size for checking r/w offset
 * hw/misc/allwinner-cpucfg.c: remove 64-bit counter, as it is unused by Linux/U-Boot/NetBSD
 * hw/misc/allwinner-cpucfg.c: add CPU_EXCEPTION_LEVEL_ON_RESET constant
 * hw/misc/allwinner-cpucfg.c: break instead of return after logging guest error, for tracing
 * hw/misc/allwinner-cpucfg.c: reduce duplication in switch/case for REG_CPUX_RST_CTRL in write function
 * include/hw/rtc/allwinner-rtc.h: increase AW_RTC_REGS_MAXADDR to 0x200
 * include/hw/rtc/allwinner-rtc.h: change type of AwRtcClass->year_offset to int, to match struct tm
 * tests/acceptance/boot_linux_console.py: remove calls to vm.set_machine()
 * tests/acceptance/boot_linux_console.py: added NetBSD test by Philippe
 * docs/orangepi.rst: removed some unneeded words/typos
 * docs/orangepi.rst: remove usage of -j5 for calling make (not all users have >= 4 SMP cores)
 * include/hw/*/allwinner*.h: moved #include "qemu/osdep.h" and unneeded #includes to .c file

v3: https://lists.gnu.org/archive/html/qemu-devel/2020-01/msg01534.html
    https://github.com/nieklinnenbank/qemu/tree/allwinner-h3-v3

v2: https://lists.gnu.org/archive/html/qemu-devel/2019-12/msg03265.html
    https://github.com/nieklinnenbank/qemu/tree/allwinner-h3-v2

v1: https://lists.gnu.org/archive/html/qemu-devel/2019-12/msg00320.html
    https://github.com/nieklinnenbank/qemu/tree/allwinner-h3-v1

With kind regards,

Niek Linnenbank

Niek Linnenbank (13):
  hw/arm: add Allwinner H3 System-on-Chip
  hw/arm: add Xunlong Orange Pi PC machine
  hw/arm/allwinner-h3: add Clock Control Unit
  hw/arm/allwinner-h3: add USB host controller
  hw/arm/allwinner-h3: add System Control module
  hw/arm/allwinner: add CPU Configuration module
  hw/arm/allwinner: add Security Identifier device
  hw/arm/allwinner: add SD/MMC host controller
  hw/arm/allwinner-h3: add EMAC ethernet device
  hw/arm/allwinner-h3: add Boot ROM support
  hw/arm/allwinner-h3: add SDRAM controller device
  hw/arm/allwinner: add RTC device support
  docs: add Orange Pi PC document

Philippe Mathieu-Daudé (7):
  tests/boot_linux_console: Add a quick test for the OrangePi PC board
  tests/boot_linux_console: Add initrd test for the Orange Pi PC board
  tests/boot_linux_console: Add a SD card test for the OrangePi PC board
  tests/boot_linux_console: Add a SLOW test booting Ubuntu on OrangePi
    PC
  Acceptance tests: Extract _console_interaction()
  Acceptance tests: Add interrupt_interactive_console_until_pattern()
  tests/boot_linux_console: Test booting NetBSD via U-Boot on OrangePi
    PC

 docs/orangepi.rst                         | 199 +++++
 default-configs/arm-softmmu.mak           |   1 +
 hw/usb/hcd-ehci.h                         |   1 +
 include/hw/arm/allwinner-a10.h            |   4 +
 include/hw/arm/allwinner-h3.h             | 163 ++++
 include/hw/misc/allwinner-cpucfg.h        |  52 ++
 include/hw/misc/allwinner-h3-ccu.h        |  66 ++
 include/hw/misc/allwinner-h3-dramc.h      | 106 +++
 include/hw/misc/allwinner-h3-sysctrl.h    |  67 ++
 include/hw/misc/allwinner-sid.h           |  60 ++
 include/hw/net/allwinner-sun8i-emac.h     |  99 +++
 include/hw/rtc/allwinner-rtc.h            | 128 ++++
 include/hw/sd/allwinner-sdhost.h          | 135 ++++
 hw/arm/allwinner-a10.c                    |  19 +
 hw/arm/allwinner-h3.c                     | 476 ++++++++++++
 hw/arm/cubieboard.c                       |  15 +
 hw/arm/orangepi.c                         | 127 ++++
 hw/misc/allwinner-cpucfg.c                | 269 +++++++
 hw/misc/allwinner-h3-ccu.c                | 243 ++++++
 hw/misc/allwinner-h3-dramc.c              | 358 +++++++++
 hw/misc/allwinner-h3-sysctrl.c            | 140 ++++
 hw/misc/allwinner-sid.c                   | 170 +++++
 hw/net/allwinner-sun8i-emac.c             | 871 ++++++++++++++++++++++
 hw/rtc/allwinner-rtc.c                    | 386 ++++++++++
 hw/sd/allwinner-sdhost.c                  | 848 +++++++++++++++++++++
 hw/usb/hcd-ehci-sysbus.c                  |  17 +
 MAINTAINERS                               |   9 +
 hw/arm/Kconfig                            |   9 +
 hw/arm/Makefile.objs                      |   1 +
 hw/misc/Makefile.objs                     |   5 +
 hw/misc/trace-events                      |  19 +
 hw/net/Kconfig                            |   3 +
 hw/net/Makefile.objs                      |   1 +
 hw/net/trace-events                       |  10 +
 hw/rtc/Makefile.objs                      |   1 +
 hw/rtc/trace-events                       |   4 +
 hw/sd/Makefile.objs                       |   1 +
 hw/sd/trace-events                        |   7 +
 tests/acceptance/avocado_qemu/__init__.py |  59 +-
 tests/acceptance/boot_linux_console.py    | 210 ++++++
 40 files changed, 5345 insertions(+), 14 deletions(-)
 create mode 100644 docs/orangepi.rst
 create mode 100644 include/hw/arm/allwinner-h3.h
 create mode 100644 include/hw/misc/allwinner-cpucfg.h
 create mode 100644 include/hw/misc/allwinner-h3-ccu.h
 create mode 100644 include/hw/misc/allwinner-h3-dramc.h
 create mode 100644 include/hw/misc/allwinner-h3-sysctrl.h
 create mode 100644 include/hw/misc/allwinner-sid.h
 create mode 100644 include/hw/net/allwinner-sun8i-emac.h
 create mode 100644 include/hw/rtc/allwinner-rtc.h
 create mode 100644 include/hw/sd/allwinner-sdhost.h
 create mode 100644 hw/arm/allwinner-h3.c
 create mode 100644 hw/arm/orangepi.c
 create mode 100644 hw/misc/allwinner-cpucfg.c
 create mode 100644 hw/misc/allwinner-h3-ccu.c
 create mode 100644 hw/misc/allwinner-h3-dramc.c
 create mode 100644 hw/misc/allwinner-h3-sysctrl.c
 create mode 100644 hw/misc/allwinner-sid.c
 create mode 100644 hw/net/allwinner-sun8i-emac.c
 create mode 100644 hw/rtc/allwinner-rtc.c
 create mode 100644 hw/sd/allwinner-sdhost.c

--
2.17.1

reply via email to

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