H6

From linux-sunxi.org
Jump to: navigation, 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
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.

Contents

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.

  • 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.0, OpenCL 1.2
  • 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 [email protected] encoding
    • 3840×1080,1920x2160 3D decoding
    • Complies with RTSP, HTTP,HLS,RTMP,MMS streaming media protocol
  • Display
  • 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 [email protected]
  • 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

Personal tools
Namespaces

Variants
Actions
Navigation
Tools