
Hi Peter,
On 12 May 2015 at 07:25, Peter Griffin peter.griffin@linaro.org wrote:
HiKey is the first 96boards consumer edition compliant board. It features a hi6220 SoC which has eight ARM A53 cpu's.
This initial port adds support for: -
- Serial
- eMMC / sd card
- USB
- GPIO
It has been tested with Arm Trusted Firmware running u-boot as the BL33 executable.
Are there instructions somewhere on how to do this? Perhaps add a README with details or a few links?
Notes:
eMMC has been tested with basic reading of eMMC partition intto DDR. I have not tested writing / erasing. I suspect due to lack of clock control it won't be running in the most performant high speed mode.
SD card slot has been tested for reading and booting kernels into DDR. It is also currently used for saving the u-boot enviroment.
USB has been tested with ASIX networking adapter to tftpboot kernels into DDR. USB mass storage device enumeration doesn't currently work for an unkown reason.
GPIO has been tested using gpio toggle GPIO4_1-3 to flash LEDs.
Basic SoC datasheet can be found here: - https://github.com/96boards/documentation/blob/master/hikey/ Hi6220V100_Multi-Mode_Application_Processor_Function_Description.pdf
Board schematic can be found here: - https://github.com/96boards/documentation/blob/master/hikey/ 96Boards-Hikey-Rev-A1.pdf
Signed-off-by: Peter Griffin peter.griffin@linaro.org
arch/arm/Kconfig | 5 + board/96boards/hikey64/Kconfig | 12 ++ board/96boards/hikey64/Makefile | 8 + board/96boards/hikey64/hikey.c | 439 ++++++++++++++++++++++++++++++++++++++++ configs/hikey_aemv8a_defconfig | 5 + include/configs/hikey_aemv8a.h | 187 +++++++++++++++++ 6 files changed, 656 insertions(+) create mode 100644 board/96boards/hikey64/Kconfig create mode 100644 board/96boards/hikey64/Makefile create mode 100644 board/96boards/hikey64/hikey.c create mode 100644 configs/hikey_aemv8a_defconfig create mode 100644 include/configs/hikey_aemv8a.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 7ed0e20..0b6de5d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -656,6 +656,10 @@ config TARGET_LS2085A_SIMU select ARM64 select ARMV8_MULTIENTRY
+config TARGET_96BOARDS_HIKEY
bool "Support HiKey 96boards Consumer Edition Platform"
select ARM64
config TARGET_LS1021AQDS bool "Support ls1021aqds" select CPU_V7 @@ -787,6 +791,7 @@ source "board/armadeus/apf27/Kconfig" source "board/armltd/integrator/Kconfig" source "board/armltd/vexpress/Kconfig" source "board/armltd/vexpress64/Kconfig" +source "board/96boards/hikey64/Kconfig" source "board/bachmann/ot1200/Kconfig" source "board/balloon3/Kconfig" source "board/barco/platinum/Kconfig" diff --git a/board/96boards/hikey64/Kconfig b/board/96boards/hikey64/Kconfig new file mode 100644 index 0000000..eb1709b --- /dev/null +++ b/board/96boards/hikey64/Kconfig @@ -0,0 +1,12 @@ +if TARGET_96BOARDS_HIKEY
+config SYS_BOARD
default "hikey64"
+config SYS_VENDOR
default "96boards"
+config SYS_CONFIG_NAME
default "hikey_aemv8a"
+endif diff --git a/board/96boards/hikey64/Makefile b/board/96boards/hikey64/Makefile new file mode 100644 index 0000000..d4ec8c7 --- /dev/null +++ b/board/96boards/hikey64/Makefile @@ -0,0 +1,8 @@ +# +# (C) Copyright 2000-2004 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# SPDX-License-Identifier: GPL-2.0+ +#
+obj-y := hikey.o diff --git a/board/96boards/hikey64/hikey.c b/board/96boards/hikey64/hikey.c new file mode 100644 index 0000000..91e8e6b --- /dev/null +++ b/board/96boards/hikey64/hikey.c @@ -0,0 +1,439 @@ +/*
- (C) Copyright 2015 Linaro
- Peter Griffin peter.griffin@linaro.org
- SPDX-License-Identifier: GPL-2.0+
- */
+#include <common.h> +#include <dm.h> +#include <malloc.h> +#include <errno.h> +#include <netdev.h> +#include <asm/io.h> +#include <asm-generic/gpio.h> +#include <asm/arch/gpio.h> +#include <asm/arch/dwmmc.h> +#include <asm/arch/hi6220.h> +#include <asm/arch/hi6553.h>
+#ifdef CONFIG_DM_GPIO +static const struct hikey_gpio_platdata hi6220_gpio[] = {
{ 0, HI6220_GPIO0_BASE},
{ 1, HI6220_GPIO1_BASE},
{ 2, HI6220_GPIO2_BASE},
{ 3, HI6220_GPIO3_BASE},
{ 4, HI6220_GPIO4_BASE},
{ 5, HI6220_GPIO5_BASE},
{ 6, HI6220_GPIO6_BASE},
{ 7, HI6220_GPIO7_BASE},
{ 8, HI6220_GPIO8_BASE},
{ 9, HI6220_GPIO9_BASE},
{ 10, HI6220_GPIO10_BASE},
{ 11, HI6220_GPIO11_BASE},
{ 12, HI6220_GPIO12_BASE},
{ 13, HI6220_GPIO13_BASE},
{ 14, HI6220_GPIO14_BASE},
{ 15, HI6220_GPIO15_BASE},
{ 16, HI6220_GPIO16_BASE},
{ 17, HI6220_GPIO17_BASE},
{ 18, HI6220_GPIO18_BASE},
{ 19, HI6220_GPIO19_BASE},
+};
+U_BOOT_DEVICES(hi6220_gpios) = {
{ "gpio_hi6220", &hi6220_gpio[0] },
{ "gpio_hi6220", &hi6220_gpio[1] },
{ "gpio_hi6220", &hi6220_gpio[2] },
{ "gpio_hi6220", &hi6220_gpio[3] },
{ "gpio_hi6220", &hi6220_gpio[4] },
{ "gpio_hi6220", &hi6220_gpio[5] },
{ "gpio_hi6220", &hi6220_gpio[6] },
{ "gpio_hi6220", &hi6220_gpio[7] },
{ "gpio_hi6220", &hi6220_gpio[8] },
{ "gpio_hi6220", &hi6220_gpio[9] },
{ "gpio_hi6220", &hi6220_gpio[10] },
{ "gpio_hi6220", &hi6220_gpio[11] },
{ "gpio_hi6220", &hi6220_gpio[12] },
{ "gpio_hi6220", &hi6220_gpio[13] },
{ "gpio_hi6220", &hi6220_gpio[14] },
{ "gpio_hi6220", &hi6220_gpio[15] },
{ "gpio_hi6220", &hi6220_gpio[16] },
{ "gpio_hi6220", &hi6220_gpio[17] },
{ "gpio_hi6220", &hi6220_gpio[18] },
{ "gpio_hi6220", &hi6220_gpio[19] },
+}; +#endif
Can we use device tree for this board? I have just received one so if you don't have the time for this I could give it a try (once I figure out how to get U-Boot onto the board).
Also, do you know anything about the SDRAM controller? I don't see mention of it in the docs and we would need it to create an SPL for this board.
[snip]
Regards, Simon