ARM: uniphier: check DT to determine whether to initialize SBC

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>
This commit is contained in:
Masahiro Yamada
2019-07-10 20:07:37 +09:00
parent 92d6524b4f
commit f7f390576d
7 changed files with 33 additions and 1 deletions

View File

@@ -18,13 +18,14 @@ ifndef CONFIG_SYSRESET
obj-y += reset.o obj-y += reset.o
endif 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-y += pinctrl-glue.o
obj-$(CONFIG_MMC) += mmc-first-dev.o obj-$(CONFIG_MMC) += mmc-first-dev.o
obj-y += fdt-fixup.o obj-y += fdt-fixup.o
endif endif
obj-y += sbc/
obj-y += soc-info.o obj-y += soc-info.o
obj-y += boot-device/ obj-y += boot-device/
obj-y += clk/ obj-y += clk/

View File

@@ -1,5 +1,8 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
obj- += dummy.o
ifndef CONFIG_SPL_BUILD
obj-y += sbc.o obj-y += sbc.o
obj-$(CONFIG_ARCH_UNIPHIER_LD4) += sbc-ld4.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_LD11) += sbc-ld11.o
obj-$(CONFIG_ARCH_UNIPHIER_LD20) += sbc-ld11.o obj-$(CONFIG_ARCH_UNIPHIER_LD20) += sbc-ld11.o
obj-$(CONFIG_ARCH_UNIPHIER_PXS3) += sbc-pxs2.o obj-$(CONFIG_ARCH_UNIPHIER_PXS3) += sbc-pxs2.o
endif

View File

@@ -12,6 +12,9 @@
void uniphier_ld11_sbc_init(void) void uniphier_ld11_sbc_init(void)
{ {
if (!uniphier_sbc_is_enabled())
return;
uniphier_sbc_init_savepin(); uniphier_sbc_init_savepin();
/* necessary for ROM boot ?? */ /* necessary for ROM boot ?? */

View File

@@ -13,6 +13,9 @@ void uniphier_ld4_sbc_init(void)
{ {
u32 tmp; u32 tmp;
if (!uniphier_sbc_is_enabled())
return;
uniphier_sbc_init_savepin(); uniphier_sbc_init_savepin();
/* system bus output enable */ /* system bus output enable */

View File

@@ -10,6 +10,9 @@
void uniphier_pxs2_sbc_init(void) void uniphier_pxs2_sbc_init(void)
{ {
if (!uniphier_sbc_is_enabled())
return;
uniphier_sbc_init_savepin(); uniphier_sbc_init_savepin();
/* necessary for ROM boot ?? */ /* necessary for ROM boot ?? */

View File

@@ -84,4 +84,6 @@ static inline int boot_is_swapped(void)
} }
#endif #endif
int uniphier_sbc_is_enabled(void);
#endif /* ARCH_SBC_REGS_H */ #endif /* ARCH_SBC_REGS_H */

View File

@@ -5,7 +5,9 @@
* Author: Masahiro Yamada <yamada.masahiro@socionext.com> * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
*/ */
#include <common.h>
#include <linux/io.h> #include <linux/io.h>
#include <asm/global_data.h>
#include "../init.h" #include "../init.h"
#include "sbc-regs.h" #include "sbc-regs.h"
@@ -31,6 +33,20 @@
#define SBCTRL2_SAVEPIN_MEM_VALUE 0x34000009 #define SBCTRL2_SAVEPIN_MEM_VALUE 0x34000009
#define SBCTRL4_SAVEPIN_MEM_VALUE 0x02110210 #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) static void __uniphier_sbc_init(int savepin)
{ {
/* /*