H6

From linux-sunxi.org
Jump to navigation Jump to search
H6
AllwinnerH6.jpg
Manufacturer Allwinner
Process 28nm
CPU Quad-Core ARM Cortex-A53 @ 1.8GHz
Memory LPDDR2/LPDDR3/DDR3/DDR4
GPU Mali-T720 MP2 @ 600Mhz
Connectivity
Video HDMI 2.0 with HDCP 2.2, TV CVBS, RGB LCD
Audio I2S, PCM, TDM
Network GBit MAC, integrated 10/100M PHY
Storage MMC, NAND
USB 1x OTG, 1x Host 2.0, 1x Host 3.0
Other

PCIE 2.0 1x

BGA451 Package, 15mm x 15mm, 0.65mm pitch
Release Date June 2017
Website Product Page

Allwinner H6 (sun50iw6p1) SoC features a Quad-Core Cortex-A53 ARM CPU, and a Mali-T720 MP2 GPU from ARM. The Allwinner H6 is an OTT SoC.

Overview

See Mainlining Effort and Mainline U-Boot for support status. The initial support for the SoC will be added in kernel 4.17

Differences / New features (compared to H5)

High level differences

  • addition of PCIe support (broken, see below)
    • single lane PCIe 2.0
    • totally undocumented software interface
  • addition of USB 3.0 host
  • Mali T720 instead of Mali 450
  • DDR4 DRAM support
  • addition of IOMMU
    • though only connected to display controller and video codecs
  • (New?) Audio Hub component

Programming model/driver level differences

  • heavily changed memory map (UART0 at 0x05000000, for instance)
    • SRAM locations moved around as well (SRAM A1 at 0x2000 now)
  • bus clock gates and device reset control now grouped by devices and merged into one register (high 16 bits reset, low 16 bits clock gates)
  • DMA controller changed (more than 32 ports, but still limited to 32 bit addresses)
  • no GPIO port A and B

Errata

  • The PCIe implementation is broken.

Allwinner H6 has a quirky PCIe controller that doesn't map the PCIe address space properly (only 64k accessible at one time) to CPU, and accessing the PCIe config space, I/O space or memory space will need to be wrapped. As Linux doesn't wrap PCIe memory space access, it's not possible to do a proper PCIe controller driver for H6. The BSP kernel modifies the driver to wrap the access, so it's also not generic, and only devices with modified driver will work.

Possible workaround: http://linux-sunxi.org/User:Icenowy/Aw-el2-barebone

  • The Watchdog implementation is broken.

Some Allwinner H6 not all has a quirky Watchdog that doesn't make the SoC reboot.

H6 SoC Features

  • CPU
    • ARM Cortex-A53 Quad-Core
    • 512KB L2-Cache (shared between four cores)
    • 32 KB (Instruction) / 32KiB (Data) L1-Cache per core
    • SIMD NEON, VFP4
    • Virtualization
  • GPU
    • ARM Mali-T720 MP2
    • Featuring 2 unified shader cores
    • Complies with OpenGL ES 3.1, OpenCL 1.1
  • Memory
    • DDR3/DDR4/LPDDR2/LPDDR3 controller
    • NAND Flash controller and 64-bit ECC, supports full disk encryption
    • 3 MMC controllers, in which MMC2 (eMMC controller) supports full disk encryption
  • Video
    • Ultra HD 4k and Full HD 1080p video decoding of MPEG-2, MPEG-4 SP/ASP GMC, H.263, H.264, H.265, WMV9/VC-1, and VP8
    • BD Directory, BD ISO and BD m2ts video decoding
    • H.264 High Profile 1080P@60fps encoding
    • 3840×1080,1920x2160 3D decoding
    • Complies with RTSP, HTTP,HLS,RTMP,MMS streaming media protocol
  • Display
    • Integrated HDMI V2.0 with HDCP2.2 4K@60fps
    • TV CVBS output
    • RGB LCD output
  • Camera
    • Integrated parallel 8-bit I/F YUV422 sensor
    • Support CCIR656 protocol fot NTSC and PAL
    • 5M CMOS sensor support
    • Support video capture resolution up to 1080p@30fps
  • Audio
    • Two audio digital-to-analog(DAC) channels 92dB SNR
    • Two differential microphone inputs (one low-noise)
    • Stereo Linein input
    • TDM Digital Microphone input
  • Embedded Controller:
  • Thermal Sensor Controller (TSC) providing over-temperature protection interrupt and over-temperature alarm interrupt
  • AXP805 PMIC
  • package: FBGA451, 15 mm x 15 mm, 0.65 mm Pitch

Documentation


Register guide

Software

Original SDK

A beta version of the H6 BSP was released on 2018/01/30...

SDK tarballs are also available from pine64, mirrored on our own dl server as well.

Boot0

U-boot

Allwinner

Sunxi Community

Mainline U-Boot

Kernel code

Allwinner

Sunxi Community

Mainline

GPL Violations

As is customary, even the H6 SDKs/BSPs come with a range of binaries included in GPL licensed code.

H6-lichee-v1.1

The tarball for this can be found on the pine64 website.

kernel

In the subdirectory linux-3.10, a patched linux-3.10.65, the following binaries can be found:


# --------------------------- Nand Drivers ---------------------------
libnand-xxx are Legacy Codes and will be removed in next release SDK. 
For source codes of these blobs, please visit : https://github.com/allwinner-zh/linux-3.4-sunxi/tree/master/modules/nand

./modules/nand/sun50iw2p1/libnand_sun50iw2p1
./modules/nand/common0/libnand
./modules/nand/sun50iw1p1/libnand_sun50iw1p1
./modules/nand/sun8iw10p1/libnand_sun8iw10p1
./modules/nand/sun8iw5p1/libnand
./modules/nand/sun8iw11p1/libnand_sun8iw11p1
# --------------------------------------------------------------------
# ------------------------- HDMI 1.0 Drivers -------------------------
./drivers/video/sunxi/disp2/hdmi/libhdmi_sun8iw11  # This blob is no longer used and its source code is included in the Hdmi 2.0 code
./drivers/video/sunxi/disp2/hdmi/libhdmi_sun50iw1 # Same as libhdmi_sun50iw1.
# --------------------------------------------------------------------

# -------------------------- ARISC Drivers  --------------------------
Legacy Codes for old platform, not for H6, should be removed in next release SDK. 

./drivers/arisc/binary/arisc_sun8iw5p1.bin 
./drivers/arisc/binary/arisc_sun50iw1p1.code
# --------------------------------------------------------------------

# --------------------------- Power Manager Subsystem ---------------------------

./drivers/soc/allwinner/pm/standby/standby.xn # It's a linker script, not a blob.

Legacy Codes for old platform, not for H6, should be removed in next release SDK. 

./drivers/soc/allwinner/pm/resume1/sun8i_resume1_scatter.scat # It's a linker script, not a blob.
./drivers/soc/allwinner/pm/resume1/gen_check_code # It's a host tool, it l is used to shape the binary file which build from the pm project. It's deprecated.
./drivers/soc/allwinner/pm_legacy/standby/sun9i_resume1_scatter.scat # It's a linker script, not a blob.
./drivers/soc/allwinner/pm_legacy/standby/sun8i_resume1_scatter.scat # It's a linker script, not a blob.
./drivers/soc/allwinner/pm_legacy/standby/standby.xn # It's a linker script, not a blob.
./drivers/soc/allwinner/pm_legacy/standby/gen_check_code # Same as pm/resume1/gen_check_code
# ----------------------------------------------------------------------------------

# ------------------------- Camera Relative -------------------------
Legacy Codes for old platform, not for H6, should be removed in next release SDK. 
./drivers/media/platform/sunxi-vfe/lib/libisp_32
./drivers/media/platform/sunxi-vfe/lib/lib_mipicsi2_v1
./drivers/media/platform/sunxi-vfe/lib/lib_mipicsi2_v2
./drivers/media/platform/sunxi-vfe/lib/libisp_64
# -------------------------------------------------------------------

U-Boot

u-boot-2011.09 are legacy source codes, H6 didn’t use it. It should be removed in next release SDK.

In the subdirectories bootloader/uboot_2011_sunxi_spl, and uboot_2014_sunxi_spl a bunch of dram binaries can be seen which likely must be included in the u-boot builds listed in under lichee/brandy/.

In the subdirectory lichee/brandy/u-boot-2011.09/, a patched u-boot 2011-09-rc1, the following binaries can be found:


./nand_sunxi/sun8iw3/libnand-sun8iw3
./nand_sunxi/sun8iw1/libnand-sun8iw1
./nand_sunxi/sun8iw5/libnand-sun8iw5
./nand_sunxi/sun8iw8/libnand-sun8iw8
./nand_sunxi/sun9iw1/libnand-sun9iw1
./nand_sunxi/sun7i/libnand-sun7i
./nand_sunxi/sun8iw9/libnand-sun8iw9
./nand_sunxi/sun8iw7/libnand-sun8iw7
./nand_sunxi/sun5i/libnand-sun5i
./nand_sunxi/sun8iw6/libnand-sun8iw6
./board/sunxi/sun9iw1/box_standby/cpus_pm/cpus_pm_binary.code
./board/sunxi/sun8iw7/box_standby/cpus_pm/cpus_pm_binary.code
./board/sunxi/sun8iw6/box_standby/cpus_pm/cpus_pm_binary.code
./arch/arm/cpu/armv7/sun8iw5/dram/libdram
./arch/arm/cpu/armv7/sun8iw8/dram/libdram
./arch/arm/cpu/armv7/sun9iw1/dram/libdram
./arch/arm/cpu/armv7/sun8iw7/dram/libchipid
./arch/arm/cpu/armv7/sun8iw7/dram/libdram
./arch/arm/cpu/armv7/sun8iw6/dram/libdram-homlet
./arch/arm/cpu/armv7/sun8iw6/dram/libdram-pad
./drivers/video_sunxi/sunxi_v1/obj_video
./drivers/video_sunxi/sunxi_v2/de_bsp/hdmi/aw/libhdcp
./drivers/video_sunxi/sunxi_v2/de_bsp/de/lowlevel_sun9iw1/libdsi
./drivers/video_sunxi/sunxi_v2/de_bsp/de/lowlevel_sun9iw1/libedp
./drivers/video_sunxi/sunxi_v2/obj_video
./drivers/video_sunxi/sunxi_v3/obj_video

In the subdirectory lichee/brandy/u-boot-2014.07/, a patched u-boot 2014-07, the following binaries can be found:

libnand-xxx are Legacy Codes and will be removed in next release SDK. 
For source code of these blobs, please visit : https://github.com/allwinner-zh/bootloader/tree/master/u-boot-2011.09/nand_spl ,
and https://github.com/allwinner-zh/bootloader/tree/master/u-boot-2011.09/nand_sunxi

./nand_sunxi/sun50iw2p1/libnand-sun50iw2p1
./nand_sunxi/sun50iw3p1/libnand-sun50iw3p1
./nand_sunxi/sun50iw1p1/libnand-sun50iw1p1
./nand_sunxi/sun8iw10p1/libnand-sun8iw10p1
./nand_sunxi/sun8iw11p1/libnand-sun8iw11p1
./nand_sunxi/sun8iw12p1/libnand-sun8iw12p1
./nand_sunxi/sun50iw6p1/libnand-sun50iw6p1

./drivers/video/sunxi/disp2/hdmi/libhdmi_sun8iw11 # This blob is no longer used and its source code is included in the Hdmi 2.0 code
./drivers/video/sunxi/disp2/hdmi/libhdmi_sun50iw1 # Same as libhdmi_sun8iw11

Devices