[U-Boot] [PATCH 2/3] rockchip: Add RV1108 SPL support

zhihuan he huan.he at rock-chips.com
Fri Jan 12 02:45:02 UTC 2018


add rv1108 set for supporting spl.

Signed-off-by: zhihuan he <huan.he at rock-chips.com>
---

 arch/arm/mach-rockchip/Kconfig            |  2 +
 arch/arm/mach-rockchip/Makefile           |  1 +
 arch/arm/mach-rockchip/rv1108-board-spl.c | 80 +++++++++++++++++++++++++++++++
 configs/evb-rv1108_defconfig              | 14 ++++++
 include/configs/rv1108_common.h           | 11 +++++
 5 files changed, 108 insertions(+)
 create mode 100644 arch/arm/mach-rockchip/rv1108-board-spl.c

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 967290f..b7d3bf1 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -139,6 +139,8 @@ config ROCKCHIP_RK3399
 config ROCKCHIP_RV1108
 	bool "Support Rockchip RV1108"
 	select CPU_V7
+	select SUPPORT_SPL
+	select SPL
 	help
 	  The Rockchip RV1108 is a ARM-based SoC with a single-core Cortex-A7
 	  and a DSP.
diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
index e1b0519..5f213b0 100644
--- a/arch/arm/mach-rockchip/Makefile
+++ b/arch/arm/mach-rockchip/Makefile
@@ -14,6 +14,7 @@ obj-tpl-$(CONFIG_ROCKCHIP_BROM_HELPER) += bootrom.o
 obj-tpl-$(CONFIG_ROCKCHIP_RK3288) += rk3288-board-tpl.o
 obj-tpl-$(CONFIG_ROCKCHIP_RK3368) += rk3368-board-tpl.o
 
+obj-spl-$(CONFIG_ROCKCHIP_RV1108) += rv1108-board-spl.o
 obj-spl-$(CONFIG_ROCKCHIP_RK3036) += rk3036-board-spl.o
 obj-spl-$(CONFIG_ROCKCHIP_RK3188) += rk3188-board-spl.o
 obj-spl-$(CONFIG_ROCKCHIP_RK322X) += rk322x-board-spl.o
diff --git a/arch/arm/mach-rockchip/rv1108-board-spl.c b/arch/arm/mach-rockchip/rv1108-board-spl.c
new file mode 100644
index 0000000..75ac4e9
--- /dev/null
+++ b/arch/arm/mach-rockchip/rv1108-board-spl.c
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2017 Rockchip Electronics Co., Ltd
+ * Author: zhihuan he <huan.he at rock-chips.com>
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <debug_uart.h>
+#include <asm/io.h>
+#include <asm/arch/bootrom.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/sdram.h>
+#include <asm/arch/timer.h>
+#include <asm/arch/grf_rv1108.h>
+#include <asm/arch/sdram_rv1108.h>
+
+#define GRF_BASE		0x10300000
+
+struct rv1108_grf * const grf = (void *)GRF_BASE;
+
+static void write_cntfrq(u32 cntfrq)
+{
+	asm __volatile__ ("mcr p15, 0, %0, c14, c0, 0\n" : : "r"(cntfrq));
+}
+
+void board_timer_init(void)
+{
+	/* Initialize CNTFRQ */
+	write_cntfrq(CONFIG_SYS_TIMER_RATE);
+
+	/* Enable STimer1 for core */
+	rockchip_timer_init();
+}
+
+void board_debug_uart_init(void)
+{
+#if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0x10230000)
+	rk_clrsetreg(&grf->gpio3a_iomux,	/* UART0 */
+		     GPIO3A6_MASK | GPIO3A5_MASK,
+		     GPIO3A6_UART1_SOUT << GPIO3A6_SHIFT |
+		     GPIO3A5_UART1_SIN << GPIO3A5_SHIFT);
+#else
+	rk_clrsetreg(&grf->gpio2d_iomux,	/* UART2 */
+		     GPIO2D2_MASK | GPIO2D1_MASK,
+		     GPIO2D2_UART2_SOUT_M0 << GPIO2D2_SHIFT |
+		     GPIO2D1_UART2_SIN_M0 << GPIO2D1_SHIFT);
+#endif
+}
+
+void board_init_f(ulong dummy)
+{
+	board_timer_init();
+#define EARLY_UART
+#ifdef EARLY_UART
+	/*
+	 * Debug UART can be used from here if required:
+	 *
+	 * debug_uart_init();
+	 * printch('a');
+	 * printhex8(0x1234);
+	 * printascii("string");
+	 */
+	debug_uart_init();
+	printascii("U-Boot SPL board init\n");
+#endif
+	rv1108_sdram_init();
+	printascii("U-Boot SPL sdram init\n");
+	/* return to maskrom */
+	back_to_bootrom(BROM_BOOT_NEXTSTAGE);
+}
+
+void board_init_r(gd_t *id, ulong dest_addr)
+{
+	/*
+	 * Function attribute is no-return
+	 * This Function never executes
+	 */
+	while (1)
+		;
+}
diff --git a/configs/evb-rv1108_defconfig b/configs/evb-rv1108_defconfig
index a59d89e..a650ffd 100644
--- a/configs/evb-rv1108_defconfig
+++ b/configs/evb-rv1108_defconfig
@@ -1,11 +1,19 @@
 CONFIG_ARM=y
+# CONFIG_SPL_USE_ARCH_MEMCPY is not set
+# CONFIG_SPL_USE_ARCH_MEMSET is not set
 CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_ROCKCHIP_RV1108=y
+CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
+CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_TARGET_EVB_RV1108=y
+CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rv1108-evb"
 CONFIG_DEBUG_UART=y
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x0
 # CONFIG_USE_BOOTCOMMAND is not set
 # CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_SPL_STACK_R=y
 CONFIG_FASTBOOT_BUF_ADDR=0x62000000
 CONFIG_FASTBOOT_BUF_SIZE=0x08000000
 CONFIG_FASTBOOT_FLASH=y
@@ -16,6 +24,9 @@ CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
+# CONFIG_SPL_DOS_PARTITION is not set
+# CONFIG_SPL_ISO_PARTITION is not set
+# CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
@@ -35,9 +46,11 @@ CONFIG_PINCTRL_ROCKCHIP_RV1108=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_BAUDRATE=1500000
 # CONFIG_SPL_SERIAL_PRESENT is not set
+# CONFIG_SPL_DM_SERIAL is not set
 CONFIG_DEBUG_UART_BASE=0x10210000
 CONFIG_DEBUG_UART_CLOCK=24000000
 CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_DEBUG_UART_BOARD_INIT=y
 CONFIG_SYSRESET=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
@@ -51,4 +64,5 @@ CONFIG_USB_GADGET_MANUFACTURER="Rockchip"
 CONFIG_USB_GADGET_VENDOR_NUM=0x2207
 CONFIG_USB_GADGET_PRODUCT_NUM=0x110a
 CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_SPL_TINY_MEMSET=y
 CONFIG_ERRNO_STR=y
diff --git a/include/configs/rv1108_common.h b/include/configs/rv1108_common.h
index 549839d..6ffb684 100644
--- a/include/configs/rv1108_common.h
+++ b/include/configs/rv1108_common.h
@@ -22,6 +22,8 @@
 #define CONFIG_SYS_NS16550_MEM32
 
 #define CONFIG_SYS_SDRAM_BASE		0x60000000
+#define SDRAM_MAX_SIZE			0x80000000
+
 #define CONFIG_NR_DRAM_BANKS		1
 #define CONFIG_SYS_TEXT_BASE		CONFIG_SYS_SDRAM_BASE
 #define CONFIG_SYS_INIT_SP_ADDR		(CONFIG_SYS_TEXT_BASE + 0x100000)
@@ -30,4 +32,13 @@
 /* rockchip ohci host driver */
 #define CONFIG_USB_OHCI_NEW
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	1
+
+/* SPL support */
+#define CONFIG_SPL_STACK		0x10081ff0
+#define CONFIG_SPL_TEXT_BASE		0x10080800
+#define CONFIG_SPL_MAX_SIZE		(0x1100)
+/*  BSS setup */
+#define CONFIG_SPL_BSS_START_ADDR	0x10081b00
+#define CONFIG_SPL_BSS_MAX_SIZE		0x200
+
 #endif
-- 
2.0.0




More information about the U-Boot mailing list