diff --git a/arch/arm/mach-uniphier/Makefile b/arch/arm/mach-uniphier/Makefile
index 7f1abd03dc981eb99ef8655237dd3126f2d30341..ab2c6dc99bea46c04d40e888ea4c05ac2a68a0ea 100644
--- a/arch/arm/mach-uniphier/Makefile
+++ b/arch/arm/mach-uniphier/Makefile
@@ -7,7 +7,6 @@ ifdef CONFIG_SPL_BUILD
 obj-y += spl_board_init.o
 obj-y += memconf.o
 obj-y += bcu/
-obj-$(CONFIG_MICRO_SUPPORT_CARD) += sbc/
 
 else
 
@@ -17,6 +16,9 @@ obj-y += board_init.o
 obj-$(CONFIG_BOARD_LATE_INIT) += board_late_init.o
 obj-y += reset.o
 
+obj-$(CONFIG_MICRO_SUPPORT_CARD) += sbc/ micro-support-card.o
+obj-y += pinctrl-glue.o
+
 endif
 
 obj-y += boards.o
@@ -24,9 +26,7 @@ obj-y += soc_info.o
 obj-y += boot-mode/
 obj-y += clk/
 obj-y += dram/
-obj-y += pinctrl-glue.o
 
-obj-$(CONFIG_MICRO_SUPPORT_CARD) += micro-support-card.o
 obj-$(CONFIG_DEBUG_UART_UNIPHIER) += debug-uart/
 
 obj-$(CONFIG_CPU_V7) += arm32/
diff --git a/arch/arm/mach-uniphier/board_init.c b/arch/arm/mach-uniphier/board_init.c
index d698dd59f1738204880175d76cea623c69253fcc..93330b05c76588f2110194dd1132e52fda9d446b 100644
--- a/arch/arm/mach-uniphier/board_init.c
+++ b/arch/arm/mach-uniphier/board_init.c
@@ -81,6 +81,7 @@ static void uniphier_ld20_misc_init(void)
 struct uniphier_initdata {
 	enum uniphier_soc_id soc_id;
 	bool nand_2cs;
+	void (*sbc_init)(void);
 	void (*pll_init)(void);
 	void (*clk_init)(void);
 	void (*misc_init)(void);
@@ -91,6 +92,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_SLD3,
 		.nand_2cs = true,
+		.sbc_init = uniphier_sbc_init_admulti,
 		.pll_init = uniphier_sld3_pll_init,
 		.clk_init = uniphier_ld4_clk_init,
 	},
@@ -99,6 +101,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD4,
 		.nand_2cs = true,
+		.sbc_init = uniphier_ld4_sbc_init,
 		.pll_init = uniphier_ld4_pll_init,
 		.clk_init = uniphier_ld4_clk_init,
 	},
@@ -107,6 +110,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_PRO4,
 		.nand_2cs = false,
+		.sbc_init = uniphier_sbc_init_savepin,
 		.pll_init = uniphier_pro4_pll_init,
 		.clk_init = uniphier_pro4_clk_init,
 	},
@@ -115,6 +119,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_SLD8,
 		.nand_2cs = true,
+		.sbc_init = uniphier_ld4_sbc_init,
 		.pll_init = uniphier_ld4_pll_init,
 		.clk_init = uniphier_ld4_clk_init,
 	},
@@ -123,6 +128,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_PRO5,
 		.nand_2cs = true,
+		.sbc_init = uniphier_sbc_init_savepin,
 		.clk_init = uniphier_pro5_clk_init,
 	},
 #endif
@@ -130,6 +136,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_PXS2,
 		.nand_2cs = true,
+		.sbc_init = uniphier_pxs2_sbc_init,
 		.clk_init = uniphier_pxs2_clk_init,
 	},
 #endif
@@ -137,6 +144,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD6B,
 		.nand_2cs = true,
+		.sbc_init = uniphier_pxs2_sbc_init,
 		.clk_init = uniphier_pxs2_clk_init,
 	},
 #endif
@@ -144,6 +152,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD11,
 		.nand_2cs = false,
+		.sbc_init = uniphier_ld11_sbc_init,
 		.pll_init = uniphier_ld11_pll_init,
 		.clk_init = uniphier_ld11_clk_init,
 		.misc_init = uniphier_ld11_misc_init,
@@ -153,6 +162,7 @@ struct uniphier_initdata uniphier_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD20,
 		.nand_2cs = false,
+		.sbc_init = uniphier_ld11_sbc_init,
 		.pll_init = uniphier_ld20_pll_init,
 		.misc_init = uniphier_ld20_misc_init,
 	},
@@ -187,6 +197,12 @@ int board_init(void)
 		return -EINVAL;
 	}
 
+	initdata->sbc_init();
+
+	support_card_init();
+
+	led_puts("U0");
+
 	if (IS_ENABLED(CONFIG_NAND_DENALI)) {
 		ret = uniphier_pin_init(initdata->nand_2cs ?
 					"nand2cs_grp" : "nand_grp");
diff --git a/arch/arm/mach-uniphier/spl_board_init.c b/arch/arm/mach-uniphier/spl_board_init.c
index d1e1ea74bc13e5d16f099540e0633c4a1af82c44..f4e1cb9c66a663355ee19915244d563463c14d5e 100644
--- a/arch/arm/mach-uniphier/spl_board_init.c
+++ b/arch/arm/mach-uniphier/spl_board_init.c
@@ -17,7 +17,6 @@ struct uniphier_spl_initdata {
 	enum uniphier_soc_id soc_id;
 	void (*bcu_init)(const struct uniphier_board_data *bd);
 	void (*early_clk_init)(void);
-	void (*sbc_init)(void);
 	int (*dpll_init)(const struct uniphier_board_data *bd);
 	int (*memconf_init)(const struct uniphier_board_data *bd);
 	void (*dram_clk_init)(void);
@@ -30,7 +29,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 		.soc_id = SOC_UNIPHIER_SLD3,
 		.bcu_init = uniphier_sld3_bcu_init,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_sbc_init_admulti,
 		.dpll_init = uniphier_sld3_dpll_init,
 		.memconf_init = uniphier_memconf_3ch_no_disbit_init,
 		.dram_clk_init = uniphier_sld3_dram_clk_init,
@@ -42,7 +40,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 		.soc_id = SOC_UNIPHIER_LD4,
 		.bcu_init = uniphier_ld4_bcu_init,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_ld4_sbc_init,
 		.dpll_init = uniphier_ld4_dpll_init,
 		.memconf_init = uniphier_memconf_2ch_init,
 		.dram_clk_init = uniphier_sld3_dram_clk_init,
@@ -53,7 +50,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_PRO4,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_sbc_init_savepin,
 		.dpll_init = uniphier_pro4_dpll_init,
 		.memconf_init = uniphier_memconf_2ch_init,
 		.dram_clk_init = uniphier_sld3_dram_clk_init,
@@ -65,7 +61,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 		.soc_id = SOC_UNIPHIER_SLD8,
 		.bcu_init = uniphier_ld4_bcu_init,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_ld4_sbc_init,
 		.dpll_init = uniphier_sld8_dpll_init,
 		.memconf_init = uniphier_memconf_2ch_init,
 		.dram_clk_init = uniphier_sld3_dram_clk_init,
@@ -76,7 +71,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_PRO5,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_sbc_init_savepin,
 		.dpll_init = uniphier_pro5_dpll_init,
 		.memconf_init = uniphier_memconf_2ch_init,
 		.dram_clk_init = uniphier_pro5_dram_clk_init,
@@ -87,7 +81,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_PXS2,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_pxs2_sbc_init,
 		.dpll_init = uniphier_pxs2_dpll_init,
 		.memconf_init = uniphier_memconf_3ch_init,
 		.dram_clk_init = uniphier_pxs2_dram_clk_init,
@@ -98,7 +91,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD6B,
 		.early_clk_init = uniphier_sld3_early_clk_init,
-		.sbc_init = uniphier_pxs2_sbc_init,
 		.dpll_init = uniphier_pxs2_dpll_init,
 		.memconf_init = uniphier_memconf_3ch_init,
 		.dram_clk_init = uniphier_pxs2_dram_clk_init,
@@ -109,7 +101,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD11,
 		.early_clk_init = uniphier_ld11_early_clk_init,
-		.sbc_init = uniphier_ld11_sbc_init,
 		.dpll_init = uniphier_ld11_dpll_init,
 		.memconf_init = uniphier_memconf_2ch_init,
 		.dram_clk_init = uniphier_ld11_dram_clk_init,
@@ -120,7 +111,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
 	{
 		.soc_id = SOC_UNIPHIER_LD20,
 		.early_clk_init = uniphier_ld11_early_clk_init,
-		.sbc_init = uniphier_ld11_sbc_init,
 		.dpll_init = uniphier_ld20_dpll_init,
 		.memconf_init = uniphier_memconf_3ch_init,
 		.dram_clk_init = uniphier_ld20_dram_clk_init,
@@ -165,45 +155,31 @@ void spl_board_init(void)
 	if (initdata->bcu_init)
 		initdata->bcu_init(bd);
 
-	initdata->sbc_init();
 
 	initdata->early_clk_init();
 
-	support_card_init();
-
-	led_puts("L0");
 
 #ifdef CONFIG_SPL_SERIAL_SUPPORT
 	preloader_console_init();
 #endif
 
-	led_puts("L1");
-
 	ret = initdata->dpll_init(bd);
 	if (ret) {
 		pr_err("failed to init DPLL\n");
 		hang();
 	}
 
-	led_puts("L2");
-
 	ret = initdata->memconf_init(bd);
 	if (ret) {
 		pr_err("failed to init MEMCONF\n");
 		hang();
 	}
 
-	led_puts("L3");
-
 	initdata->dram_clk_init();
 
-	led_puts("L4");
-
 	ret = initdata->umc_init(bd);
 	if (ret) {
 		pr_err("failed to init DRAM\n");
 		hang();
 	}
-
-	led_puts("L5");
 }