On Sun, Jan 19, 2020, 01:51 Niek Linnenbank <nieklinnenb...@gmail.com> 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 >