dts: renamed FIT_EMBED to MULTI_DTB_FIT and moved it to the dts Kconfig

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 <jjhiblot@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Jean-Jacques Hiblot 2017-09-15 12:57:24 +02:00 committed by Tom Rini
parent 84570a0c11
commit 11955590a2
14 changed files with 45 additions and 28 deletions

View File

@ -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)

View File

@ -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"))

View File

@ -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();

View File

@ -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"))

View File

@ -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"))

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

15
doc/README.multi-dtb-fit Normal file
View File

@ -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().

View File

@ -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
@ -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

View File

@ -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)) {