ARM: uniphier: check DT to determine whether to initialize SBC
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 10 Jul 2019 11:07:37 +0000 (20:07 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 10 Jul 2019 13:41:57 +0000 (22:41 +0900)
If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot initialize SBC
(System Bus Controller), which may not be really necessary.

Check the "socionext,uniphier-system-bus" node in DT run-time.
If and only if it is found and its "status" property is okay,
initialize the SBC block.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
arch/arm/mach-uniphier/Makefile
arch/arm/mach-uniphier/sbc/Makefile
arch/arm/mach-uniphier/sbc/sbc-ld11.c
arch/arm/mach-uniphier/sbc/sbc-ld4.c
arch/arm/mach-uniphier/sbc/sbc-pxs2.c
arch/arm/mach-uniphier/sbc/sbc-regs.h
arch/arm/mach-uniphier/sbc/sbc.c

index d0c39d427379103df3a5eb6aeec9dbb5e2ffee77..caa79d1e53e6abe9219120b0a229724a4f383383 100644 (file)
@@ -18,13 +18,14 @@ ifndef CONFIG_SYSRESET
 obj-y += reset.o
 endif
 
-obj-$(CONFIG_MICRO_SUPPORT_CARD) += sbc/ micro-support-card.o
+obj-$(CONFIG_MICRO_SUPPORT_CARD) += micro-support-card.o
 obj-y += pinctrl-glue.o
 obj-$(CONFIG_MMC) += mmc-first-dev.o
 obj-y += fdt-fixup.o
 
 endif
 
+obj-y += sbc/
 obj-y += soc-info.o
 obj-y += boot-device/
 obj-y += clk/
index 912e05a725d61c6d3154bca239f4cb6b70794428..4efdd419f046c8ed4d05f94fc9d51991675f03cc 100644 (file)
@@ -1,5 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0+
 
+obj-                                   += dummy.o
+
+ifndef CONFIG_SPL_BUILD
 obj-y                                  += sbc.o
 
 obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += sbc-ld4.o
@@ -9,3 +12,4 @@ obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += sbc-pxs2.o
 obj-$(CONFIG_ARCH_UNIPHIER_LD11)       += sbc-ld11.o
 obj-$(CONFIG_ARCH_UNIPHIER_LD20)       += sbc-ld11.o
 obj-$(CONFIG_ARCH_UNIPHIER_PXS3)       += sbc-pxs2.o
+endif
index 44d8a1e3bd94bd98e375af44be4152b7654cd03e..21972ac9494bc462780a34955935b8919e7f06c8 100644 (file)
@@ -12,6 +12,9 @@
 
 void uniphier_ld11_sbc_init(void)
 {
+       if (!uniphier_sbc_is_enabled())
+               return;
+
        uniphier_sbc_init_savepin();
 
        /* necessary for ROM boot ?? */
index d08b571e23c12df24bd9dad689cb9f08575497dc..72e9743c8f8a634e7f5f99104ed2ee461fa2627d 100644 (file)
@@ -13,6 +13,9 @@ void uniphier_ld4_sbc_init(void)
 {
        u32 tmp;
 
+       if (!uniphier_sbc_is_enabled())
+               return;
+
        uniphier_sbc_init_savepin();
 
        /* system bus output enable */
index 8c167ef0698b4f5965c0520d1a4f225d056fc6e6..3275f22ce96c7eaedc2c8f07250639155dd16b76 100644 (file)
@@ -10,6 +10,9 @@
 
 void uniphier_pxs2_sbc_init(void)
 {
+       if (!uniphier_sbc_is_enabled())
+               return;
+
        uniphier_sbc_init_savepin();
 
        /* necessary for ROM boot ?? */
index 853015acbcab39407d7a0d210ccd23cfb7079e06..e866816472b50669eaf16b903a07bc1a81eb395e 100644 (file)
@@ -84,4 +84,6 @@ static inline int boot_is_swapped(void)
 }
 #endif
 
+int uniphier_sbc_is_enabled(void);
+
 #endif /* ARCH_SBC_REGS_H */
index df01e5c01d516bfc7fe22cf75c6d104a4b07001f..6cf8cf2af80f013495b46bd3f7ce6641cfaa4e99 100644 (file)
@@ -5,7 +5,9 @@
  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
  */
 
+#include <common.h>
 #include <linux/io.h>
+#include <asm/global_data.h>
 
 #include "../init.h"
 #include "sbc-regs.h"
 #define SBCTRL2_SAVEPIN_MEM_VALUE      0x34000009
 #define SBCTRL4_SAVEPIN_MEM_VALUE      0x02110210
 
+int uniphier_sbc_is_enabled(void)
+{
+       DECLARE_GLOBAL_DATA_PTR;
+       const void *fdt = gd->fdt_blob;
+       int offset;
+
+       offset = fdt_node_offset_by_compatible(fdt, 0,
+                                              "socionext,uniphier-system-bus");
+       if (offset < 0)
+               return 0;
+
+       return fdtdec_get_is_enabled(fdt, offset);
+}
+
 static void __uniphier_sbc_init(int savepin)
 {
        /*