Skip to content

Commit

Permalink
dts: renamed FIT_EMBED to MULTI_DTB_FIT and moved it to the dts Kconfig
Browse files Browse the repository at this point in the history
CONFIG_FIT_EMBED might be confused with CONFIG_OF_EMBED, rename it
MULTI_DTB_FIT as it is able to get a DTB from a FIT image containing
multiple DTBs. Also move the option to the Kconfig dedicated to the DTS
options and create a README for this feature.

Signed-off-by: Jean-Jacques Hiblot <[email protected]>
Reviewed-by: Tom Rini <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
  • Loading branch information
Jean-Jacques Hiblot authored and trini committed Oct 6, 2017
1 parent 84570a0 commit 1195559
Show file tree
Hide file tree
Showing 14 changed files with 45 additions and 28 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -878,7 +878,7 @@ dts/dt.dtb: u-boot
quiet_cmd_copy = COPY $@
cmd_copy = cp $< $@

ifeq ($(CONFIG_FIT_EMBED),y)
ifeq ($(CONFIG_MULTI_DTB_FIT),y)

fit-dtb.blob: dts/dt.dtb FORCE
$(call if_changed,mkimage)
Expand Down
2 changes: 1 addition & 1 deletion board/ti/ks2_evm/board_k2e.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ int get_num_eth_ports(void)
}
#endif

#if defined(CONFIG_FIT_EMBED)
#if defined(CONFIG_MULTI_DTB_FIT)
int board_fit_config_name_match(const char *name)
{
if (!strcmp(name, "keystone-k2e-evm"))
Expand Down
2 changes: 1 addition & 1 deletion board/ti/ks2_evm/board_k2g.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ int board_mmc_init(bd_t *bis)
}
#endif

#if defined(CONFIG_FIT_EMBED)
#if defined(CONFIG_MULTI_DTB_FIT)
int board_fit_config_name_match(const char *name)
{
bool eeprom_read = board_ti_was_eeprom_read();
Expand Down
2 changes: 1 addition & 1 deletion board/ti/ks2_evm/board_k2hk.c
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ int board_early_init_f(void)
}
#endif

#if defined(CONFIG_FIT_EMBED)
#if defined(CONFIG_MULTI_DTB_FIT)
int board_fit_config_name_match(const char *name)
{
if (!strcmp(name, "keystone-k2hk-evm"))
Expand Down
2 changes: 1 addition & 1 deletion board/ti/ks2_evm/board_k2l.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ int board_early_init_f(void)
}
#endif

#if defined(CONFIG_FIT_EMBED)
#if defined(CONFIG_MULTI_DTB_FIT)
int board_fit_config_name_match(const char *name)
{
if (!strcmp(name, "keystone-k2l-evm"))
Expand Down
16 changes: 0 additions & 16 deletions common/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -403,22 +403,6 @@ config SYS_STDIO_DEREGISTER

endmenu

config DTB_RESELECT
bool "Support swapping dtbs at a later point in boot"
depends on FIT_EMBED
help
It is possible during initial boot you may need to use a generic
dtb until you can fully determine the board your running on. This
config allows boards to implement a function at a later point
during boot to switch to the "correct" dtb.

config FIT_EMBED
bool "Support a FIT image embedded in the U-boot image"
help
This option provides hooks to allow U-boot to parse an
appended FIT image and enable board specific code to then select
the correct DTB to be used.

config DEFAULT_FDT_FILE
string "Default fdt file"
help
Expand Down
2 changes: 1 addition & 1 deletion common/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ obj-y += image.o
obj-$(CONFIG_ANDROID_BOOT_IMAGE) += image-android.o
obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += image-fdt.o
obj-$(CONFIG_$(SPL_TPL_)FIT) += image-fit.o
obj-$(CONFIG_FIT_EMBED) += boot_fit.o common_fit.o
obj-$(CONFIG_$(SPL_)MULTI_DTB_FIT) += boot_fit.o common_fit.o
obj-$(CONFIG_$(SPL_TPL_)FIT_SIGNATURE) += image-sig.o
obj-$(CONFIG_IO_TRACE) += iotrace.o
obj-y += memsize.o
Expand Down
2 changes: 1 addition & 1 deletion configs/k2e_evm_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
CONFIG_OF_BOARD_SETUP=y
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_DTB_RESELECT=y
CONFIG_FIT_EMBED=y
CONFIG_MULTI_DTB_FIT=y
CONFIG_VERSION_VARIABLE=y
CONFIG_BOARD_EARLY_INIT_F=y
CONFIG_SPL=y
Expand Down
2 changes: 1 addition & 1 deletion configs/k2g_evm_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
CONFIG_OF_BOARD_SETUP=y
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_DTB_RESELECT=y
CONFIG_FIT_EMBED=y
CONFIG_MULTI_DTB_FIT=y
CONFIG_VERSION_VARIABLE=y
CONFIG_BOARD_EARLY_INIT_F=y
CONFIG_SPL=y
Expand Down
2 changes: 1 addition & 1 deletion configs/k2hk_evm_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
CONFIG_OF_BOARD_SETUP=y
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_DTB_RESELECT=y
CONFIG_FIT_EMBED=y
CONFIG_MULTI_DTB_FIT=y
CONFIG_VERSION_VARIABLE=y
CONFIG_BOARD_EARLY_INIT_F=y
CONFIG_SPL=y
Expand Down
2 changes: 1 addition & 1 deletion configs/k2l_evm_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="keystone-k2l-evm"
CONFIG_OF_BOARD_SETUP=y
CONFIG_SYS_CONSOLE_INFO_QUIET=y
CONFIG_DTB_RESELECT=y
CONFIG_FIT_EMBED=y
CONFIG_MULTI_DTB_FIT=y
CONFIG_VERSION_VARIABLE=y
CONFIG_BOARD_EARLY_INIT_F=y
CONFIG_SPL=y
Expand Down
15 changes: 15 additions & 0 deletions doc/README.multi-dtb-fit
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
MULTI DTB FIT

The purpose of this feature is to enable u-boot to select its DTB from a FIT
appended at the end of the binary.

Usually the DTB is selected by the SPL and passed down to U-Boot. But some
platforms don't use the SPL. In this case MULTI_DTB_FIT can used to provide
U-Boot with a choice of DTBs.
The relevant DTBs are packed into a FIT (list provided by CONFIG__OF_LIST). The
FIT is automatically generated at the end of the compilation and appended to
u-boot.bin so that U-Boot can locate it and select the correct DTB from inside
the FIT.
The selection is done using board_fit_config_name_match() (same as what the SPL
uses to select the DTB for U-Boot). The selection happens during fdtdec_setup()
which is called during before relocation by board_init_f().
20 changes: 19 additions & 1 deletion dts/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ config DEFAULT_DEVICE_TREE

config OF_LIST
string "List of device tree files to include for DT control"
depends on SPL_LOAD_FIT || FIT_EMBED
depends on SPL_LOAD_FIT || MULTI_DTB_FIT
default DEFAULT_DEVICE_TREE
help
This option specifies a list of device tree files to use for DT
Expand All @@ -112,6 +112,24 @@ config OF_LIST
device tree files (without the directory or .dtb suffix)
separated by <space>.


config DTB_RESELECT
bool "Support swapping dtbs at a later point in boot"
depends on MULTI_DTB_FIT
help
It is possible during initial boot you may need to use a generic
dtb until you can fully determine the board your running on. This
config allows boards to implement a function at a later point
during boot to switch to the "correct" dtb.

config MULTI_DTB_FIT
bool "Support embedding several DTBs in a FIT image for u-boot"
help
This option provides hooks to allow U-boot to parse an
appended FIT image and enable board specific code to then select
the correct DTB to be used. Use this if you need to support
multiple DTBs but don't use the SPL.

config OF_SPL_REMOVE_PROPS
string "List of device tree properties to drop for SPL"
depends on SPL_OF_CONTROL
Expand Down
2 changes: 1 addition & 1 deletion lib/fdtdec.c
Original file line number Diff line number Diff line change
Expand Up @@ -1217,7 +1217,7 @@ int fdtdec_setup(void)
else
gd->fdt_blob = (ulong *)&__bss_end;

# elif defined CONFIG_FIT_EMBED
# elif defined CONFIG_MULTI_DTB_FIT
gd->fdt_blob = locate_dtb_in_fit(&_end);

if (gd->fdt_blob == NULL || gd->fdt_blob <= ((void *)&_end)) {
Expand Down

0 comments on commit 1195559

Please sign in to comment.