summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--board/hisilicon/hikey/Kconfig7
-rw-r--r--board/hisilicon/hikey/hikey.c43
-rw-r--r--configs/hikey_defconfig1
-rw-r--r--include/configs/hikey.h11
5 files changed, 56 insertions, 8 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5a8d4b2052..0b07e08db6 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -604,6 +604,7 @@ config TARGET_HIKEY
select ARM64
select DM
select DM_GPIO
+ select DM_SERIAL
help
Support for HiKey 96boards platform. It features a HI6220
SoC, with 8xA53 CPU, mali450 gpu, and 1GB RAM.
@@ -612,7 +613,6 @@ config TARGET_LS1021AQDS
bool "Support ls1021aqds"
select CPU_V7
select SUPPORT_SPL
-
config TARGET_LS1021ATWR
bool "Support ls1021atwr"
select CPU_V7
diff --git a/board/hisilicon/hikey/Kconfig b/board/hisilicon/hikey/Kconfig
index f7f1055e17..9171502a19 100644
--- a/board/hisilicon/hikey/Kconfig
+++ b/board/hisilicon/hikey/Kconfig
@@ -12,4 +12,11 @@ config SYS_SOC
config SYS_CONFIG_NAME
default "hikey"
+config CONS_INDEX
+ int "UART used for console"
+ range 1 4
+ default 4
+ help
+ The hi6220 SoC has 5 UARTs. For example to use UART0 enter 1 here.
+
endif
diff --git a/board/hisilicon/hikey/hikey.c b/board/hisilicon/hikey/hikey.c
index 9948747217..c4ae40bfb4 100644
--- a/board/hisilicon/hikey/hikey.c
+++ b/board/hisilicon/hikey/hikey.c
@@ -6,6 +6,7 @@
*/
#include <common.h>
#include <dm.h>
+#include <dm/platform_data/serial_pl01x.h>
#include <errno.h>
#include <malloc.h>
#include <netdev.h>
@@ -69,6 +70,48 @@ U_BOOT_DEVICES(hi6220_gpios) = {
DECLARE_GLOBAL_DATA_PTR;
+static const struct pl01x_serial_platdata serial_platdata = {
+#if CONFIG_CONS_INDEX == 1
+ .base = HI6220_UART0_BASE,
+#elif CONFIG_CONS_INDEX == 4
+ .base = HI6220_UART3_BASE,
+#else
+#error "Unsuported console index value."
+#endif
+ .type = TYPE_PL011,
+ .clock = 19200000
+};
+
+U_BOOT_DEVICE(hikey_seriala) = {
+ .name = "serial_pl01x",
+ .platdata = &serial_platdata,
+};
+
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_uart_init(void)
+{
+ switch (CONFIG_CONS_INDEX) {
+ case 1:
+ hi6220_pinmux_config(PERIPH_ID_UART0);
+ break;
+ case 4:
+ hi6220_pinmux_config(PERIPH_ID_UART3);
+ break;
+ default:
+ debug("%s: Unsupported UART selected\n", __func__);
+ return -1;
+ }
+
+ return 0;
+}
+
+int board_early_init_f(void)
+{
+ board_uart_init();
+ return 0;
+}
+#endif
+
struct peri_sc_periph_regs *peri_sc =
(struct peri_sc_periph_regs *)HI6220_PERI_BASE;
diff --git a/configs/hikey_defconfig b/configs/hikey_defconfig
index 64a5929e9e..70aa7085fd 100644
--- a/configs/hikey_defconfig
+++ b/configs/hikey_defconfig
@@ -1,2 +1,3 @@
CONFIG_ARM=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
# CONFIG_CMD_IMLS is not set
diff --git a/include/configs/hikey.h b/include/configs/hikey.h
index ae8187ad1c..b7c22e8c48 100644
--- a/include/configs/hikey.h
+++ b/include/configs/hikey.h
@@ -31,6 +31,8 @@
/* Flat Device Tree Definitions */
#define CONFIG_OF_LIBFDT
+#define CONFIG_BOARD_EARLY_INIT_F
+
/* Physical Memory Map */
/* CONFIG_SYS_TEXT_BASE needs to align with where ATF loads bl33.bin */
@@ -59,13 +61,8 @@
/* Size of malloc() pool */
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + SZ_8M)
-/* PL011 Serial Configuration */
-#define CONFIG_PL011_SERIAL
-
-#define CONFIG_PL011_CLOCK 19200000
-#define CONFIG_PL01x_PORTS {(void *)0xF8015000}
-#define CONFIG_CONS_INDEX 0
-
+/* Serial port PL010/PL011 through the device model */
+#define CONFIG_PL01X_SERIAL
#define CONFIG_BAUDRATE 115200
#define CONFIG_CMD_USB