A23

Allwinner A23 (sun8i) SoC features a Dual-Core Cortex-A7 ARM CPU, and a Mali400 MP2 GPU from ARM. It is a lower power cut-down version of the A20.

=Overview=

The A23 is not supported in the linux-sunxi 3.4 kernel and in u-boot-sunxi, but there is basic support in the mainline Linux kernel (since kernel 3.17/3.18) and in mainline u-boot (since v2015.04).

=A23 SoC Features=
 * CPU
 * ARM Cortex-A7 Dual-Core
 * 256KiB L2-Cache (shared between two cores)
 * 32KiB (Instruction) / 32KiB (Data) L1-Cache per core
 * SIMD NEON, VFP4
 * Virtualization
 * Large Physical Address Extensions (LPAE) 1TB
 * GPU
 * ARM Mali400 MP2
 * Featuring 1 vertex shader (GP) and 2 fragment shaders (PP).
 * Complies with OpenGL ES 2.0
 * Memory
 * DDR3/DDR3L controller
 * NAND Flash controller and 64-bit ECC
 * Video
 * HD H.264 2160P video decoding
 * Full HD video decoding
 * BD Directory, BD ISO and BD m2ts video decoding
 * H.264 High Profile 1080P@30fps encoding
 * 3840×1080@30fps 3D decoding
 * Complies with RTSP, HTTP,HLS,RTMP,MMS streaming media protocol
 * Display
 * CPU/RGB/LVDS LCD interface 1920×1080 resolution
 * MIPI DSI interface up to 1280x800 resolution
 * Camera
 * Integrated parallel 8-bit I/F YUV sensor
 * Integrated 24-bit parallel YUV 444 I/F
 * 5M/8M CMOS sensor support
 * Dual-sensor support
 * Audio
 * Integrated HI-FI 100dB Audio Codec
 * Dual MIC noise cancellation
 * PMIC
 * X-Powers AXP223, designed for the A23, connected via Allwinner's Reduced Serial Bus (RSB)

= Documentation =

Some other documents were found online:
 * A23 User Manual v1.0 (PDF, 696 pages, 2013-08-30)
 * A23 Datasheet v1.0 (PDF, 35 pages, 2013-08-30)


 * A23 SDRAM support list
 * A23 NAND support list
 * A23 PCB design notes (Chinese)
 * A23 Tablet reference design schematics

= Software =

Original SDK

 * SDK (4GB tarball)
 * SDK (unpacked)

The SDK contains customized sources for U-boot, Linux, Android and buildroot. It also has a gnueabi cross compile toolchain.

SDK Content

 * Linux Kernel: A23/lichee/linux-3.4
 * Buildroot: A23/lichee/buildroot
 * U-boot: A23/lichee/brandy/u-boot-2011.09
 * ARM gnueabi cross compile toolchain: A23/lichee/brandy/gcc-linaro/
 * Android: A23/android
 * Various Allwinner tools: A23/lichee/tools

Use the "pack" script under "A23/lichee/tools/pack" to build an image. (not tested)

Boot0
Boot0 initializes the DRAM, basic clocks and loads U-boot from NAND or MMC. There is no boot1 on A23. Boot0 directly loads U-boot.

Allwinner has in the meantime published the source code for boot0 in their github repository.

Binaries of boot0 can be found in the SDK: A23/lichee/tools/pack/chips/sun8iw3p1/bin

fes1_sun8iw3p1.bin is for FEL mode.

U-boot
There are 3 U-boot sources available.

Allwinner
Allwinner's SDK contains a customized U-boot, based on v2011.09. This works with either NAND or MMC. It contains drivers for LCD display, MMC, NAND, normal UARTs, USB OTG, RSB, PMIC, and the ability to update various images.

Sunxi Community
u-boot-sunxi has basic support for A23, which includes UART console (including R_UART) and MMC. Disclaimer: no one has actually booted a kernel with this yet.

Work still needed:
 * SPL (DRAM initialization code)
 * Reduced_Serial_Bus driver (to talk to AXP PMIC).

Mainline U-Boot
mainline u-boot has support for the A23 (incl. SPL and AXP223 PMIC support) since v2015.04.

Allwinner
There is a kernel tree currently available which contains a quick backport of the A23-v1.0 SDK, it is called "a23sdk_frankenkernel".

This tree contains:
 * The Android 3.4.39 kernel
 * loads of nasty backports on top:
 * direct commits from upstream or android trees
 * commits from upstream or android trees with changes to certain files removed
 * the remaining diff to the A23-v1.0 SDK packed on top:
 * with fixed encodings (to UTF-8), where possible, as some allwinner side encoding mess-up has destroyed data
 * fixed file permissions
 * remaining changes which could not easily be tracked back to upstream or android tree commits

TODO:
 * remove useless/dead files:
 * vexpress and realview ael.
 * changes to other architectures.
 * pointless scripts
 * other obviously useless files.
 * Separate out some drivers to their original versions so allwinner specific changes become visible:
 * the 3 mali kernel driver versions
 * the many added wireless drivers
 * build and run testing.

Sunxi Community
Patches for basic A23 support on mainline have been posted on the mailing list. You can also find them here.

GPL violations
The v1.0 SDK contains many binaries and is therefor violating the GPLv2 quite directly:


 * Kernel:
 * kernel/drivers/devfreq/dramfreq/mdfs/mdfs.code
 * kernel/drivers/arisc/binary/arisc_sun8iw1p1.code
 * kernel/drivers/arisc/binary/arisc_sun9iw1p1.code
 * drivers/media/video/sunxi-vfe/lib/libisp
 * modules/nand/sun8iw1p1/libnand_sun8iw1p1
 * modules/nand/sun8iw3p1/libnand_sun8iw3p1
 * modules/nand/sun9iw1p1/libnand_sun9iw1p1
 * drivers/input/touchscreen/aw5x06/libAW5306
 * drivers/input/touchscreen/gslx680new/gsl_point_id_20130415
 * U-boot:
 * nand_sunxi/sun8iw3/libnand-sun8iw3

We are still waiting on action from Allwinner to resolve this.

= Devices = = See also =
 * A20

=References=

= External links =
 * Product Page