* [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
@ 2016-01-28 16:39 Simon Glass
2016-02-16 11:34 ` Masahiro Yamada
[not found] ` <1453999186-18747-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
0 siblings, 2 replies; 11+ messages in thread
From: Simon Glass @ 2016-01-28 16:39 UTC (permalink / raw)
To: U-Boot Mailing List
Cc: Hans de Goede, Tom Rini, Simon Glass, Masahiro Yamada,
Devicetree Compiler, Marek Vasut, Jerry Van Baren,
Joe Hershberger, Ian Campbell
We need a way to support more than one board per binary in U-Boot with
device tree. Various methods have been discussed. The one that seems to make
the most sense is to adjust SPL so that it can load a FIT which contains
U-Boot and several device tree binaries. This is how things with with Linux:
load a FIT and select the correct device tree to pass to Linux.
This series:
- Adjusts the build system to optionally build a u-boot.img in FIT format
that includes the U-Boot binary and >1 device tree files
- Adjusts SPL to support loading this
- Adds a way for SPL to determine which device tree to select (by calling a
board-specific function)
- Adjusts SPL to pass this selected device tree to U-Boot when it starts
It would be painful to require an .its file for each board just to support
this feature. In any case various people have commented that it would be
nice not to have to write this file in general. Therefore, this series
enhances mkimage to automatically generate a FIT without a .its file. So far
it understands how to add a main image and a number of device tree files. It
does not support hashing or verified boot as yet.
One problem with the FIT format as it stands is that all the data is inline.
This means that the entire file must be read in order to figure out what
device-tree files are available. It is then possible to copy the images into
place.
This is not really suitable for SPL since copying can be slow, and reading
unnecessary data would make the FIT format less efficient than the legacy
format.
Therefore this series adds a new feature to FIT which allows the images to
be stored immediately after the FIT itself ends. This makes the FIT very
small. It can be read quickly and in its entirety. Then the images can be
loaded one by one as needed. This allows SPL to support FITs containing lots
of images very efficiently.
To achieve this, mkimage is enhanced to convert between the 'normal' and
'external' version of a FIT file. The latter is only used for the SPL loader.
The main difference is that viewing an 'external' FIT will not show the
contents of each image.
This series also includes a few other tidy-ups, such as moving mkimage's
tricky argument-processing code to use getopt().
NOTE: There are a few problems remaining with the Kconfig conversion. I'm
still fiddling with this but thought it best to send this series out for
comment in the meantime.
This series is available at u-boot-fdt/spl-working.
Simon Glass (26):
mkimage: Move argument processing into its own function
mkimage: Convert to use getopt()
mkimage: Sort the option processing code by option
mkimage: Move usage() up to the top
mkimage: Show an error message when usage() is called
mkimage: Make 'params' static
libfdt: Add a function to write a property placeholder
Correct defconfig ordering
Move CONFIG_OF_LIBFDT to Kconfig
Kconfig: Move CONFIG_FIT and CONFIG_OF_*_SETUP to Kconfig
fdt: Adjust DEFAULT_DEVICE_TREE to device on OF_CONTROL
fdt: Allow libfdt to be used in SPL
sunxi: Display the board model on start-up
tools: Include fdt_sw.o in libfdt for mkimage
mkimage: Allow a FIT to include an image of any type
tools: Add a function to obtain the size of a file
image: Add functions to obtain short names
mkimage: Support automatic creating of a FIT without a .its
mkimage: Support adding device tree files to a FIT
mkimage: Support placing data outside the FIT
mkimage: Bring data into the FIT before processing
spl: Add a way for boards to select which device tree to load
spl: Add an option to load a FIT containing U-Boot
spl: Add a way to specify a list of device trees to include
spl: Support loading a FIT from MMC
RFC: sunxi: Enable SPL FIT support
Kconfig | 11 +
Makefile | 10 +-
arch/arm/cpu/armv7/sunxi/board.c | 5 +
cmd/disk.c | 6 +-
common/Kconfig | 28 ++
common/Makefile | 6 +-
common/bootm.c | 14 +-
common/image-fdt.c | 8 +-
common/image-fit.c | 3 +-
common/image.c | 50 +-
common/spl/Makefile | 1 +
common/spl/spl_fit.c | 192 ++++++++
common/spl/spl_mmc.c | 75 ++-
configs/10m50_defconfig | 1 +
configs/3c120_defconfig | 1 +
configs/A10-OLinuXino-Lime_defconfig | 1 +
configs/A10s-OLinuXino-M_defconfig | 1 +
configs/A13-OLinuXinoM_defconfig | 1 +
configs/A13-OLinuXino_defconfig | 1 +
configs/A20-OLinuXino-Lime2_defconfig | 1 +
configs/A20-OLinuXino-Lime_defconfig | 1 +
configs/A20-OLinuXino_MICRO_defconfig | 1 +
configs/A20-Olimex-SOM-EVB_defconfig | 1 +
configs/Ainol_AW1_defconfig | 1 +
configs/Ampe_A76_defconfig | 1 +
configs/Auxtek-T003_defconfig | 1 +
configs/Auxtek-T004_defconfig | 1 +
configs/B4420QDS_NAND_defconfig | 3 +
configs/B4420QDS_SPIFLASH_defconfig | 3 +
configs/B4420QDS_defconfig | 3 +
configs/B4860QDS_NAND_defconfig | 3 +
configs/B4860QDS_SECURE_BOOT_defconfig | 3 +
configs/B4860QDS_SPIFLASH_defconfig | 3 +
configs/B4860QDS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/B4860QDS_defconfig | 3 +
configs/BSC9131RDB_NAND_SYSCLK100_defconfig | 3 +
configs/BSC9131RDB_NAND_defconfig | 3 +
configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig | 3 +
configs/BSC9131RDB_SPIFLASH_defconfig | 3 +
configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig | 3 +
configs/BSC9132QDS_NAND_DDRCLK100_defconfig | 3 +
configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig | 3 +
configs/BSC9132QDS_NAND_DDRCLK133_defconfig | 3 +
configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig | 3 +
configs/BSC9132QDS_NOR_DDRCLK100_defconfig | 3 +
configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig | 3 +
configs/BSC9132QDS_NOR_DDRCLK133_defconfig | 3 +
.../BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig | 3 +
configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig | 3 +
.../BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig | 3 +
configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig | 3 +
.../BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig | 3 +
configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig | 3 +
.../BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig | 3 +
configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig | 3 +
configs/Bananapi_defconfig | 1 +
configs/Bananapro_defconfig | 1 +
configs/C29XPCIE_NAND_defconfig | 3 +
configs/C29XPCIE_NOR_SECBOOT_defconfig | 3 +
configs/C29XPCIE_SPIFLASH_SECBOOT_defconfig | 3 +
configs/C29XPCIE_SPIFLASH_defconfig | 3 +
configs/C29XPCIE_defconfig | 3 +
configs/CHIP_defconfig | 1 +
configs/CPCI4052_defconfig | 2 +
configs/CSQ_CS908_defconfig | 1 +
configs/Chuwi_V7_CW0825_defconfig | 1 +
configs/Colombus_defconfig | 1 +
configs/Cubieboard2_defconfig | 1 +
configs/Cubieboard_defconfig | 1 +
configs/Cubietruck_defconfig | 1 +
configs/Cyrus_P5020_defconfig | 3 +
configs/Cyrus_P5040_defconfig | 3 +
configs/Empire_electronix_d709_defconfig | 1 +
configs/Hummingbird_A31_defconfig | 1 +
configs/Hyundai_A7HD_defconfig | 1 +
configs/Lamobo_R1_defconfig | 1 +
configs/Linksprite_pcDuino3_Nano_defconfig | 1 +
configs/Linksprite_pcDuino3_defconfig | 4 +
configs/Linksprite_pcDuino_defconfig | 1 +
configs/MK808C_defconfig | 1 +
configs/MPC8308RDB_defconfig | 3 +
configs/MPC8313ERDB_33_defconfig | 2 +
configs/MPC8313ERDB_66_defconfig | 2 +
configs/MPC8313ERDB_NAND_33_defconfig | 2 +
configs/MPC8313ERDB_NAND_66_defconfig | 2 +
configs/MPC8315ERDB_defconfig | 2 +
configs/MPC8323ERDB_defconfig | 2 +
configs/MPC832XEMDS_ATM_defconfig | 2 +
configs/MPC832XEMDS_HOST_33_defconfig | 2 +
configs/MPC832XEMDS_HOST_66_defconfig | 2 +
configs/MPC832XEMDS_SLAVE_defconfig | 2 +
configs/MPC832XEMDS_defconfig | 2 +
configs/MPC8349EMDS_defconfig | 2 +
configs/MPC8349ITXGP_defconfig | 2 +
configs/MPC8349ITX_LOWBOOT_defconfig | 2 +
configs/MPC8349ITX_defconfig | 2 +
configs/MPC837XEMDS_HOST_defconfig | 2 +
configs/MPC837XEMDS_defconfig | 2 +
configs/MPC837XERDB_defconfig | 2 +
configs/MPC8536DS_36BIT_defconfig | 2 +
configs/MPC8536DS_SDCARD_defconfig | 2 +
configs/MPC8536DS_SPIFLASH_defconfig | 2 +
configs/MPC8536DS_defconfig | 2 +
configs/MPC8540ADS_defconfig | 2 +
configs/MPC8541CDS_defconfig | 2 +
configs/MPC8541CDS_legacy_defconfig | 2 +
configs/MPC8544DS_defconfig | 2 +
configs/MPC8548CDS_36BIT_defconfig | 2 +
configs/MPC8548CDS_defconfig | 2 +
configs/MPC8548CDS_legacy_defconfig | 2 +
configs/MPC8555CDS_defconfig | 2 +
configs/MPC8555CDS_legacy_defconfig | 2 +
configs/MPC8560ADS_defconfig | 2 +
configs/MPC8568MDS_defconfig | 2 +
configs/MPC8569MDS_ATM_defconfig | 2 +
configs/MPC8569MDS_defconfig | 2 +
configs/MPC8572DS_36BIT_defconfig | 3 +
configs/MPC8572DS_defconfig | 3 +
configs/MPC8610HPCD_defconfig | 2 +
configs/MPC8641HPCN_36BIT_defconfig | 2 +
configs/MPC8641HPCN_defconfig | 2 +
configs/MSI_Primo73_defconfig | 1 +
configs/MSI_Primo81_defconfig | 1 +
configs/Marsboard_A10_defconfig | 1 +
configs/Mele_A1000G_quad_defconfig | 1 +
configs/Mele_A1000_defconfig | 1 +
configs/Mele_I7_defconfig | 1 +
configs/Mele_M3_defconfig | 1 +
configs/Mele_M5_defconfig | 1 +
configs/Mele_M9_defconfig | 1 +
configs/Mini-X_defconfig | 1 +
configs/MiniFAP_defconfig | 2 +
configs/O2D300_defconfig | 2 +
configs/O2DNT2_RAMBOOT_defconfig | 2 +
configs/O2DNT2_defconfig | 2 +
configs/O2D_defconfig | 2 +
configs/O2I_defconfig | 2 +
configs/O2MNT_O2M110_defconfig | 2 +
configs/O2MNT_O2M112_defconfig | 2 +
configs/O2MNT_O2M113_defconfig | 2 +
configs/O2MNT_defconfig | 2 +
configs/O3DNT_defconfig | 2 +
configs/Orangepi_defconfig | 1 +
configs/Orangepi_mini_defconfig | 1 +
configs/P1010RDB-PA_36BIT_NAND_SECBOOT_defconfig | 3 +
configs/P1010RDB-PA_36BIT_NAND_defconfig | 3 +
configs/P1010RDB-PA_36BIT_NOR_SECBOOT_defconfig | 3 +
configs/P1010RDB-PA_36BIT_NOR_defconfig | 3 +
configs/P1010RDB-PA_36BIT_SDCARD_defconfig | 3 +
.../P1010RDB-PA_36BIT_SPIFLASH_SECBOOT_defconfig | 3 +
configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig | 3 +
configs/P1010RDB-PA_NAND_SECBOOT_defconfig | 3 +
configs/P1010RDB-PA_NAND_defconfig | 3 +
configs/P1010RDB-PA_NOR_SECBOOT_defconfig | 3 +
configs/P1010RDB-PA_NOR_defconfig | 3 +
configs/P1010RDB-PA_SDCARD_defconfig | 3 +
configs/P1010RDB-PA_SPIFLASH_SECBOOT_defconfig | 3 +
configs/P1010RDB-PA_SPIFLASH_defconfig | 3 +
configs/P1010RDB-PB_36BIT_NAND_SECBOOT_defconfig | 3 +
configs/P1010RDB-PB_36BIT_NAND_defconfig | 3 +
configs/P1010RDB-PB_36BIT_NOR_SECBOOT_defconfig | 3 +
configs/P1010RDB-PB_36BIT_NOR_defconfig | 3 +
configs/P1010RDB-PB_36BIT_SDCARD_defconfig | 3 +
.../P1010RDB-PB_36BIT_SPIFLASH_SECBOOT_defconfig | 3 +
configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig | 3 +
configs/P1010RDB-PB_NAND_SECBOOT_defconfig | 3 +
configs/P1010RDB-PB_NAND_defconfig | 3 +
configs/P1010RDB-PB_NOR_SECBOOT_defconfig | 3 +
configs/P1010RDB-PB_NOR_defconfig | 3 +
configs/P1010RDB-PB_SDCARD_defconfig | 3 +
configs/P1010RDB-PB_SPIFLASH_SECBOOT_defconfig | 3 +
configs/P1010RDB-PB_SPIFLASH_defconfig | 3 +
configs/P1020MBG-PC_36BIT_SDCARD_defconfig | 3 +
configs/P1020MBG-PC_36BIT_defconfig | 3 +
configs/P1020MBG-PC_SDCARD_defconfig | 3 +
configs/P1020MBG-PC_defconfig | 3 +
configs/P1020RDB-PC_36BIT_NAND_defconfig | 3 +
configs/P1020RDB-PC_36BIT_SDCARD_defconfig | 3 +
configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig | 3 +
configs/P1020RDB-PC_36BIT_defconfig | 3 +
configs/P1020RDB-PC_NAND_defconfig | 3 +
configs/P1020RDB-PC_SDCARD_defconfig | 3 +
configs/P1020RDB-PC_SPIFLASH_defconfig | 3 +
configs/P1020RDB-PC_defconfig | 3 +
configs/P1020RDB-PD_NAND_defconfig | 3 +
configs/P1020RDB-PD_SDCARD_defconfig | 3 +
configs/P1020RDB-PD_SPIFLASH_defconfig | 3 +
configs/P1020RDB-PD_defconfig | 3 +
configs/P1020UTM-PC_36BIT_SDCARD_defconfig | 3 +
configs/P1020UTM-PC_36BIT_defconfig | 3 +
configs/P1020UTM-PC_SDCARD_defconfig | 3 +
configs/P1020UTM-PC_defconfig | 3 +
configs/P1021RDB-PC_36BIT_NAND_defconfig | 3 +
configs/P1021RDB-PC_36BIT_SDCARD_defconfig | 3 +
configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig | 3 +
configs/P1021RDB-PC_36BIT_defconfig | 3 +
configs/P1021RDB-PC_NAND_defconfig | 3 +
configs/P1021RDB-PC_SDCARD_defconfig | 3 +
configs/P1021RDB-PC_SPIFLASH_defconfig | 3 +
configs/P1021RDB-PC_defconfig | 3 +
configs/P1022DS_36BIT_NAND_defconfig | 3 +
configs/P1022DS_36BIT_SDCARD_defconfig | 3 +
configs/P1022DS_36BIT_SPIFLASH_defconfig | 3 +
configs/P1022DS_36BIT_defconfig | 3 +
configs/P1022DS_NAND_defconfig | 3 +
configs/P1022DS_SDCARD_defconfig | 3 +
configs/P1022DS_SPIFLASH_defconfig | 3 +
configs/P1022DS_defconfig | 3 +
configs/P1023RDB_defconfig | 3 +
configs/P1024RDB_36BIT_defconfig | 3 +
configs/P1024RDB_NAND_defconfig | 3 +
configs/P1024RDB_SDCARD_defconfig | 3 +
configs/P1024RDB_SPIFLASH_defconfig | 3 +
configs/P1024RDB_defconfig | 3 +
configs/P1025RDB_36BIT_defconfig | 3 +
configs/P1025RDB_NAND_defconfig | 3 +
configs/P1025RDB_SDCARD_defconfig | 3 +
configs/P1025RDB_SPIFLASH_defconfig | 3 +
configs/P1025RDB_defconfig | 3 +
configs/P2020RDB-PC_36BIT_NAND_defconfig | 3 +
configs/P2020RDB-PC_36BIT_SDCARD_defconfig | 3 +
configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig | 3 +
configs/P2020RDB-PC_36BIT_defconfig | 3 +
configs/P2020RDB-PC_NAND_defconfig | 3 +
configs/P2020RDB-PC_SDCARD_defconfig | 3 +
configs/P2020RDB-PC_SPIFLASH_defconfig | 3 +
configs/P2020RDB-PC_defconfig | 3 +
configs/P2041RDB_NAND_defconfig | 3 +
configs/P2041RDB_SDCARD_defconfig | 3 +
configs/P2041RDB_SECURE_BOOT_defconfig | 3 +
configs/P2041RDB_SPIFLASH_defconfig | 3 +
configs/P2041RDB_SRIO_PCIE_BOOT_defconfig | 3 +
configs/P2041RDB_defconfig | 3 +
configs/P3041DS_NAND_SECURE_BOOT_defconfig | 3 +
configs/P3041DS_NAND_defconfig | 3 +
configs/P3041DS_SDCARD_defconfig | 3 +
configs/P3041DS_SECURE_BOOT_defconfig | 3 +
configs/P3041DS_SPIFLASH_defconfig | 3 +
configs/P3041DS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/P3041DS_defconfig | 3 +
configs/P4080DS_SDCARD_defconfig | 3 +
configs/P4080DS_SECURE_BOOT_defconfig | 3 +
configs/P4080DS_SPIFLASH_defconfig | 3 +
configs/P4080DS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/P4080DS_defconfig | 3 +
configs/P5020DS_NAND_SECURE_BOOT_defconfig | 3 +
configs/P5020DS_NAND_defconfig | 3 +
configs/P5020DS_SDCARD_defconfig | 3 +
configs/P5020DS_SECURE_BOOT_defconfig | 3 +
configs/P5020DS_SPIFLASH_defconfig | 3 +
configs/P5020DS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/P5020DS_defconfig | 3 +
configs/P5040DS_NAND_SECURE_BOOT_defconfig | 3 +
configs/P5040DS_NAND_defconfig | 3 +
configs/P5040DS_SDCARD_defconfig | 3 +
configs/P5040DS_SECURE_BOOT_defconfig | 3 +
configs/P5040DS_SPIFLASH_defconfig | 3 +
configs/P5040DS_defconfig | 3 +
configs/PLU405_defconfig | 2 +
configs/PMC405DE_defconfig | 2 +
configs/PMC440_defconfig | 2 +
configs/Sinlinx_SinA33_defconfig | 1 +
configs/Sinovoip_BPI_M2_defconfig | 1 +
configs/T1023RDB_NAND_defconfig | 3 +
configs/T1023RDB_SDCARD_defconfig | 3 +
configs/T1023RDB_SECURE_BOOT_defconfig | 3 +
configs/T1023RDB_SPIFLASH_defconfig | 3 +
configs/T1023RDB_defconfig | 3 +
configs/T1024QDS_DDR4_SECURE_BOOT_defconfig | 3 +
configs/T1024QDS_DDR4_defconfig | 3 +
configs/T1024QDS_NAND_defconfig | 3 +
configs/T1024QDS_SDCARD_defconfig | 3 +
configs/T1024QDS_SECURE_BOOT_defconfig | 3 +
configs/T1024QDS_SPIFLASH_defconfig | 3 +
configs/T1024QDS_defconfig | 3 +
configs/T1024RDB_NAND_defconfig | 3 +
configs/T1024RDB_SDCARD_defconfig | 3 +
configs/T1024RDB_SECURE_BOOT_defconfig | 3 +
configs/T1024RDB_SPIFLASH_defconfig | 3 +
configs/T1024RDB_defconfig | 3 +
configs/T1040D4RDB_NAND_defconfig | 3 +
configs/T1040D4RDB_SDCARD_defconfig | 3 +
configs/T1040D4RDB_SECURE_BOOT_defconfig | 3 +
configs/T1040D4RDB_SPIFLASH_defconfig | 3 +
configs/T1040D4RDB_defconfig | 3 +
configs/T1040QDS_DDR4_defconfig | 3 +
configs/T1040QDS_SECURE_BOOT_defconfig | 3 +
configs/T1040QDS_defconfig | 3 +
configs/T1040RDB_NAND_defconfig | 3 +
configs/T1040RDB_SDCARD_defconfig | 3 +
configs/T1040RDB_SECURE_BOOT_defconfig | 3 +
configs/T1040RDB_SPIFLASH_defconfig | 3 +
configs/T1040RDB_defconfig | 3 +
configs/T1042D4RDB_NAND_defconfig | 3 +
configs/T1042D4RDB_SDCARD_defconfig | 3 +
configs/T1042D4RDB_SECURE_BOOT_defconfig | 3 +
configs/T1042D4RDB_SPIFLASH_defconfig | 3 +
configs/T1042D4RDB_defconfig | 3 +
configs/T1042RDB_PI_NAND_defconfig | 3 +
configs/T1042RDB_PI_SDCARD_defconfig | 3 +
configs/T1042RDB_PI_SPIFLASH_defconfig | 3 +
configs/T1042RDB_PI_defconfig | 3 +
configs/T1042RDB_SECURE_BOOT_defconfig | 3 +
configs/T1042RDB_defconfig | 3 +
configs/T2080QDS_NAND_defconfig | 3 +
configs/T2080QDS_SDCARD_defconfig | 3 +
configs/T2080QDS_SECURE_BOOT_defconfig | 3 +
configs/T2080QDS_SPIFLASH_defconfig | 3 +
configs/T2080QDS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/T2080QDS_defconfig | 3 +
configs/T2080RDB_NAND_defconfig | 3 +
configs/T2080RDB_SDCARD_defconfig | 3 +
configs/T2080RDB_SECURE_BOOT_defconfig | 3 +
configs/T2080RDB_SPIFLASH_defconfig | 3 +
configs/T2080RDB_SRIO_PCIE_BOOT_defconfig | 3 +
configs/T2080RDB_defconfig | 3 +
configs/T2081QDS_NAND_defconfig | 3 +
configs/T2081QDS_SDCARD_defconfig | 3 +
configs/T2081QDS_SPIFLASH_defconfig | 3 +
configs/T2081QDS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/T2081QDS_defconfig | 3 +
configs/T4160QDS_NAND_defconfig | 3 +
configs/T4160QDS_SDCARD_defconfig | 3 +
configs/T4160QDS_SECURE_BOOT_defconfig | 3 +
configs/T4160QDS_defconfig | 3 +
configs/T4160RDB_defconfig | 3 +
configs/T4240QDS_NAND_defconfig | 3 +
configs/T4240QDS_SDCARD_defconfig | 3 +
configs/T4240QDS_SECURE_BOOT_defconfig | 3 +
configs/T4240QDS_SRIO_PCIE_BOOT_defconfig | 3 +
configs/T4240QDS_defconfig | 3 +
configs/T4240RDB_SDCARD_defconfig | 3 +
configs/T4240RDB_defconfig | 3 +
configs/TQM5200S_HIGHBOOT_defconfig | 2 +
configs/TQM5200S_defconfig | 2 +
configs/TQM5200_B_HIGHBOOT_defconfig | 2 +
configs/TQM5200_B_defconfig | 2 +
configs/TQM5200_STK100_defconfig | 2 +
configs/TQM5200_defconfig | 2 +
configs/TQM823L_LCD_defconfig | 2 +
configs/TQM823L_defconfig | 2 +
configs/TQM823M_defconfig | 2 +
configs/TQM834x_defconfig | 2 +
configs/TQM850L_defconfig | 2 +
configs/TQM850M_defconfig | 2 +
configs/TQM855L_defconfig | 2 +
configs/TQM855M_defconfig | 2 +
configs/TQM860L_defconfig | 2 +
configs/TQM860M_defconfig | 2 +
configs/TQM862L_defconfig | 2 +
configs/TQM862M_defconfig | 2 +
configs/TQM866M_defconfig | 2 +
configs/TQM885D_defconfig | 2 +
configs/TTTech_defconfig | 2 +
configs/TWR-P1025_defconfig | 3 +
configs/UCP1020_SPIFLASH_defconfig | 3 +
configs/UCP1020_defconfig | 3 +
configs/UTOO_P66_defconfig | 1 +
configs/VOM405_defconfig | 2 +
configs/Wexler_TAB7200_defconfig | 1 +
configs/Wits_Pro_A20_DKT_defconfig | 1 +
configs/Wobo_i5_defconfig | 1 +
configs/Yones_Toptech_BD1078_defconfig | 1 +
configs/a3m071_defconfig | 3 +
configs/a4m072_defconfig | 2 +
configs/a4m2k_defconfig | 3 +
configs/ac14xx_defconfig | 3 +
configs/acadia_defconfig | 2 +
configs/alt_defconfig | 1 +
configs/am335x_baltos_defconfig | 2 +
configs/am335x_boneblack_defconfig | 2 +
configs/am335x_evm_defconfig | 2 +
configs/am335x_evm_nor_defconfig | 2 +
configs/am335x_evm_norboot_defconfig | 2 +
configs/am335x_evm_spiboot_defconfig | 2 +
configs/am335x_evm_usbspl_defconfig | 2 +
configs/am335x_gp_evm_defconfig | 3 +-
configs/am335x_igep0033_defconfig | 1 +
configs/am335x_sl50_defconfig | 2 +
configs/am3517_evm_defconfig | 1 +
configs/am437x_sk_evm_defconfig | 6 +-
configs/am43xx_evm_defconfig | 1 +
configs/am43xx_evm_ethboot_defconfig | 1 +
configs/am43xx_evm_qspiboot_defconfig | 1 +
configs/am43xx_evm_usbhost_boot_defconfig | 1 +
configs/am57xx_evm_nodt_defconfig | 1 +
configs/apalis_t30_defconfig | 2 +-
configs/apf27_defconfig | 1 +
configs/apx4devkit_defconfig | 1 +
configs/arches_defconfig | 1 +
configs/aria_defconfig | 2 +
configs/aristainetos2_defconfig | 2 +
configs/aristainetos2b_defconfig | 2 +
configs/aristainetos_defconfig | 2 +
configs/armadillo-800eva_defconfig | 1 +
configs/arndale_defconfig | 1 +
configs/aspenite_defconfig | 1 +
configs/at91rm9200ek_defconfig | 1 +
configs/at91rm9200ek_ram_defconfig | 1 +
configs/at91sam9260ek_dataflash_cs0_defconfig | 1 +
configs/at91sam9260ek_dataflash_cs1_defconfig | 1 +
configs/at91sam9260ek_nandflash_defconfig | 1 +
configs/at91sam9261ek_dataflash_cs0_defconfig | 1 +
configs/at91sam9261ek_dataflash_cs3_defconfig | 1 +
configs/at91sam9261ek_nandflash_defconfig | 1 +
configs/at91sam9263ek_dataflash_cs0_defconfig | 1 +
configs/at91sam9263ek_dataflash_defconfig | 1 +
configs/at91sam9263ek_nandflash_defconfig | 1 +
configs/at91sam9263ek_norflash_boot_defconfig | 1 +
configs/at91sam9263ek_norflash_defconfig | 1 +
configs/at91sam9g10ek_dataflash_cs0_defconfig | 1 +
configs/at91sam9g10ek_dataflash_cs3_defconfig | 1 +
configs/at91sam9g10ek_nandflash_defconfig | 1 +
configs/at91sam9g20ek_2mmc_defconfig | 1 +
configs/at91sam9g20ek_2mmc_nandflash_defconfig | 1 +
configs/at91sam9g20ek_dataflash_cs0_defconfig | 1 +
configs/at91sam9g20ek_dataflash_cs1_defconfig | 1 +
configs/at91sam9g20ek_nandflash_defconfig | 1 +
configs/at91sam9m10g45ek_mmc_defconfig | 1 +
configs/at91sam9m10g45ek_nandflash_defconfig | 1 +
configs/at91sam9n12ek_mmc_defconfig | 1 +
configs/at91sam9n12ek_nandflash_defconfig | 1 +
configs/at91sam9n12ek_spiflash_defconfig | 1 +
configs/at91sam9rlek_dataflash_defconfig | 1 +
configs/at91sam9rlek_mmc_defconfig | 1 +
configs/at91sam9rlek_nandflash_defconfig | 1 +
configs/at91sam9x5ek_dataflash_defconfig | 1 +
configs/at91sam9x5ek_mmc_defconfig | 1 +
configs/at91sam9x5ek_nandflash_defconfig | 1 +
configs/at91sam9x5ek_spiflash_defconfig | 1 +
configs/at91sam9xeek_dataflash_cs0_defconfig | 1 +
configs/at91sam9xeek_dataflash_cs1_defconfig | 1 +
configs/at91sam9xeek_nandflash_defconfig | 1 +
configs/axm_defconfig | 1 +
configs/ba10_tv_box_defconfig | 1 +
configs/bamboo_defconfig | 2 +
configs/bayleybay_defconfig | 5 +-
configs/bcm911360_entphn-ns_defconfig | 1 +
configs/bcm911360_entphn_defconfig | 1 +
configs/bcm911360k_defconfig | 1 +
configs/bcm958300k-ns_defconfig | 1 +
configs/bcm958300k_defconfig | 1 +
configs/bcm958305k_defconfig | 1 +
configs/bcm958622hr_defconfig | 1 +
configs/beaver_defconfig | 1 +
configs/bg0900_defconfig | 1 +
configs/birdland_bav335a_defconfig | 2 +
configs/birdland_bav335b_defconfig | 2 +
configs/bubinga_defconfig | 2 +
configs/caddy2_defconfig | 2 +
configs/cairo_defconfig | 1 +
configs/cam5200_defconfig | 2 +
configs/cam5200_niosflash_defconfig | 2 +
configs/canyonlands_defconfig | 1 +
configs/cardhu_defconfig | 1 +
configs/cgtqmx6eval_defconfig | 5 +-
configs/charon_defconfig | 2 +
configs/chromebook_link_defconfig | 5 +-
configs/chromebox_panther_defconfig | 5 +-
configs/cm5200_defconfig | 2 +
configs/cm_fx6_defconfig | 2 +
configs/cm_t335_defconfig | 1 +
configs/cm_t3517_defconfig | 1 +
configs/cm_t35_defconfig | 1 +
configs/cm_t43_defconfig | 1 +
configs/cm_t54_defconfig | 2 +
configs/colibri_pxa270_defconfig | 1 +
configs/colibri_t20_defconfig | 1 +
configs/colibri_t30_defconfig | 1 +
configs/colibri_vf_defconfig | 1 +
.../controlcenterd_36BIT_SDCARD_DEVELOP_defconfig | 3 +
configs/controlcenterd_36BIT_SDCARD_defconfig | 3 +
configs/coreboot-x86_defconfig | 5 +-
configs/corvus_defconfig | 1 +
configs/crownbay_defconfig | 5 +-
configs/d2net_v2_defconfig | 1 +
configs/da850_am18xxevm_defconfig | 1 +
configs/da850evm_defconfig | 1 +
configs/da850evm_direct_nor_defconfig | 1 +
configs/dalmore_defconfig | 1 +
configs/devconcenter_defconfig | 3 +
configs/devkit3250_defconfig | 1 +
configs/devkit8000_defconfig | 1 +
configs/digsy_mtc_RAMBOOT_defconfig | 2 +
configs/digsy_mtc_defconfig | 2 +
configs/digsy_mtc_rev5_RAMBOOT_defconfig | 2 +
configs/digsy_mtc_rev5_defconfig | 2 +
configs/dlvision-10g_defconfig | 3 +
configs/dlvision_defconfig | 3 +
configs/dns325_defconfig | 1 +
configs/dockstar_defconfig | 1 +
configs/dra72_evm_defconfig | 4 +-
configs/dra74_evm_defconfig | 6 +-
configs/dra7xx_evm_defconfig | 1 +
configs/dra7xx_evm_qspiboot_defconfig | 1 +
configs/dra7xx_evm_uart3_defconfig | 1 +
configs/draco_defconfig | 1 +
configs/dreamplug_defconfig | 1 +
configs/duovero_defconfig | 1 +
configs/e2220-1170_defconfig | 1 +
configs/eco5pk_defconfig | 2 +
configs/efi-x86_defconfig | 2 +-
configs/evb-rk3036_defconfig | 25 +-
configs/firefly-rk3288_defconfig | 2 +-
configs/flea3_defconfig | 1 +
configs/fo300_defconfig | 2 +
configs/ga10h_v1_1_defconfig | 1 +
configs/galileo_defconfig | 5 +-
configs/gdppc440etx_defconfig | 2 +
configs/glacier_defconfig | 1 +
configs/glacier_ramboot_defconfig | 1 +
configs/goflexhome_defconfig | 1 +
configs/gose_defconfig | 1 +
configs/gplugd_defconfig | 1 +
configs/gt90h_v4_defconfig | 1 +
configs/guruplug_defconfig | 1 +
configs/gwventana_defconfig | 3 +
configs/h2200_defconfig | 1 +
configs/h8_homlet_v2_defconfig | 6 -
configs/haleakala_defconfig | 2 +
configs/harmony_defconfig | 1 +
configs/highbank_defconfig | 3 +
configs/hikey_defconfig | 1 +
configs/hrcon_defconfig | 3 +
configs/hrcon_dh_defconfig | 3 +
configs/i12-tvbox_defconfig | 1 +
configs/iNet_3F_defconfig | 1 +
configs/iNet_3W_defconfig | 1 +
configs/iNet_86VS_defconfig | 1 +
configs/ib62x0_defconfig | 1 +
configs/icon_defconfig | 2 +
configs/iconnect_defconfig | 1 +
configs/ids8313_defconfig | 2 +
configs/igep0020_defconfig | 3 +-
configs/igep0020_nand_defconfig | 3 +-
configs/igep0030_defconfig | 1 +
configs/igep0030_nand_defconfig | 1 +
configs/igep0032_defconfig | 3 +-
configs/inet1_defconfig | 1 +
configs/inet97fv2_defconfig | 1 +
configs/inet98v_rev2_defconfig | 1 +
configs/inet9f_rev03_defconfig | 1 +
configs/inetspace_v2_defconfig | 1 +
configs/integratorap_cm720t_defconfig | 1 +
configs/integratorap_cm920t_defconfig | 1 +
configs/integratorap_cm926ejs_defconfig | 1 +
configs/integratorap_cm946es_defconfig | 1 +
configs/integratorcp_cm1136_defconfig | 1 +
configs/integratorcp_cm920t_defconfig | 1 +
configs/integratorcp_cm926ejs_defconfig | 1 +
configs/integratorcp_cm946es_defconfig | 1 +
configs/intip_defconfig | 3 +
configs/io64_defconfig | 3 +
configs/io_defconfig | 3 +
configs/iocon_defconfig | 2 +
configs/ipek01_defconfig | 2 +
configs/jesurun_q5_defconfig | 1 +
configs/jetson-tk1_defconfig | 1 +
configs/k2e_evm_defconfig | 1 +
configs/k2g_evm_defconfig | 1 +
configs/k2hk_evm_defconfig | 1 +
configs/k2l_evm_defconfig | 1 +
configs/katmai_defconfig | 2 +
configs/kilauea_defconfig | 2 +
configs/km_kirkwood_128m16_defconfig | 1 +
configs/km_kirkwood_defconfig | 1 +
configs/km_kirkwood_pci_defconfig | 1 +
configs/kmcoge4_defconfig | 3 +
configs/kmcoge5ne_defconfig | 2 +
configs/kmcoge5un_defconfig | 1 +
configs/kmeter1_defconfig | 2 +
configs/kmlion1_defconfig | 3 +
configs/kmnusa_defconfig | 1 +
configs/kmopti2_defconfig | 2 +
configs/kmsugp1_defconfig | 1 +
configs/kmsupx5_defconfig | 2 +
configs/kmsuv31_defconfig | 1 +
configs/kmtegr1_defconfig | 2 +
configs/kmtepr2_defconfig | 2 +
configs/kmvect1_defconfig | 2 +
configs/koelsch_defconfig | 1 +
configs/kwb_defconfig | 1 +
configs/kylin-rk3036_defconfig | 16 +-
configs/kzm9g_defconfig | 1 +
configs/lager_defconfig | 1 +
configs/ls1021aqds_ddr4_nor_defconfig | 2 +
configs/ls1021aqds_ddr4_nor_lpuart_defconfig | 2 +
configs/ls1021aqds_nand_defconfig | 2 +
configs/ls1021aqds_nor_SECURE_BOOT_defconfig | 2 +
configs/ls1021aqds_nor_defconfig | 2 +
configs/ls1021aqds_nor_lpuart_defconfig | 2 +
configs/ls1021aqds_qspi_defconfig | 1 +
configs/ls1021aqds_sdcard_defconfig | 2 +
configs/ls1021atwr_nor_SECURE_BOOT_defconfig | 2 +
configs/ls1021atwr_nor_defconfig | 1 +
configs/ls1021atwr_nor_lpuart_defconfig | 1 +
configs/ls1021atwr_qspi_defconfig | 1 +
configs/ls1021atwr_sdcard_ifc_defconfig | 2 +
configs/ls1021atwr_sdcard_qspi_defconfig | 1 +
configs/ls1043aqds_defconfig | 6 +-
configs/ls1043aqds_nand_defconfig | 7 +-
configs/ls1043aqds_nor_ddr3_defconfig | 3 +
configs/ls1043aqds_sdcard_ifc_defconfig | 7 +-
configs/ls1043ardb_SECURE_BOOT_defconfig | 8 +-
configs/ls1043ardb_defconfig | 8 +-
configs/ls1043ardb_nand_defconfig | 8 +-
configs/ls1043ardb_sdcard_defconfig | 8 +-
configs/ls2080a_emu_defconfig | 3 +
configs/ls2080a_simu_defconfig | 3 +
configs/ls2080aqds_defconfig | 2 +
configs/ls2080aqds_nand_defconfig | 3 +
configs/ls2080ardb_defconfig | 2 +
configs/ls2080ardb_nand_defconfig | 3 +
configs/ls2085a_emu_defconfig | 3 +
configs/ls2085a_simu_defconfig | 3 +
configs/ls2085aqds_defconfig | 2 +
configs/ls2085aqds_nand_defconfig | 3 +
configs/ls2085ardb_defconfig | 2 +
configs/ls2085ardb_nand_defconfig | 3 +
configs/lschlv2_defconfig | 1 +
configs/lsxhl_defconfig | 1 +
configs/luan_defconfig | 2 +
configs/lwmon5_defconfig | 3 +
configs/m28evk_defconfig | 2 +
configs/m53evk_defconfig | 2 +
configs/makalu_defconfig | 2 +
configs/marsboard_defconfig | 1 +
configs/mcx_defconfig | 2 +
configs/mecp5123_defconfig | 2 +
configs/medcom-wide_defconfig | 2 +
configs/meesc_dataflash_defconfig | 2 +
configs/meesc_defconfig | 2 +
configs/mgcoge3ne_defconfig | 3 +
configs/mgcoge3un_defconfig | 1 +
configs/mgcoge_defconfig | 3 +
configs/microblaze-generic_defconfig | 1 +
configs/minnowmax_defconfig | 5 +-
configs/mixtile_loftq_defconfig | 1 +
configs/mk802_a10s_defconfig | 1 +
configs/mk802_defconfig | 1 +
configs/mk802ii_defconfig | 1 +
configs/motionpro_defconfig | 2 +
configs/mpc5121ads_defconfig | 2 +
configs/mpc5121ads_rev2_defconfig | 2 +
configs/mpc8308_p1m_defconfig | 2 +
configs/mt_ventoux_defconfig | 2 +
configs/munices_defconfig | 2 +
configs/mx23_olinuxino_defconfig | 1 +
configs/mx23evk_defconfig | 1 +
configs/mx25pdk_defconfig | 1 +
configs/mx28evk_auart_console_defconfig | 1 +
configs/mx28evk_defconfig | 1 +
configs/mx28evk_nand_defconfig | 1 +
configs/mx28evk_spi_defconfig | 1 +
configs/mx35pdk_defconfig | 1 +
configs/mx51evk_defconfig | 1 +
configs/mx53ard_defconfig | 1 +
configs/mx53evk_defconfig | 1 +
configs/mx53loco_defconfig | 1 +
configs/mx53smd_defconfig | 1 +
configs/mx6cuboxi_defconfig | 1 +
configs/mx6dlarm2_defconfig | 1 +
configs/mx6dlarm2_lpddr2_defconfig | 1 +
configs/mx6dlsabreauto_defconfig | 1 +
configs/mx6dlsabresd_defconfig | 1 +
configs/mx6qarm2_defconfig | 1 +
configs/mx6qarm2_lpddr2_defconfig | 1 +
configs/mx6qpsabreauto_defconfig | 1 +
configs/mx6qsabreauto_defconfig | 1 +
configs/mx6qsabrelite_defconfig | 1 +
configs/mx6qsabresd_defconfig | 1 +
configs/mx6sabresd_spl_defconfig | 1 +
configs/mx6slevk_defconfig | 1 +
configs/mx6slevk_spinor_defconfig | 1 +
configs/mx6slevk_spl_defconfig | 1 +
configs/mx6sxsabresd_defconfig | 1 +
configs/mx6sxsabresd_spl_defconfig | 1 +
configs/mx6ul_14x14_evk_defconfig | 1 +
configs/mx6ul_9x9_evk_defconfig | 1 +
configs/mx7dsabresd_defconfig | 1 +
configs/nas220_defconfig | 1 +
configs/neo_defconfig | 3 +
configs/net2big_v2_defconfig | 1 +
configs/netspace_lite_v2_defconfig | 1 +
configs/netspace_max_v2_defconfig | 1 +
configs/netspace_mini_v2_defconfig | 1 +
configs/netspace_v2_defconfig | 1 +
configs/nitrogen6dl2g_defconfig | 1 +
configs/nitrogen6dl_defconfig | 1 +
configs/nitrogen6q2g_defconfig | 1 +
configs/nitrogen6q_defconfig | 1 +
configs/nitrogen6s1g_defconfig | 1 +
configs/nitrogen6s_defconfig | 1 +
configs/novena_defconfig | 2 +
configs/nsa310s_defconfig | 9 +-
configs/nyan-big_defconfig | 2 +
configs/odroid-xu3_defconfig | 1 +
configs/odroid_defconfig | 1 +
configs/omap3_beagle_defconfig | 1 +
configs/omap3_ha_defconfig | 1 +
configs/omap3_logic_defconfig | 1 +
configs/omap3_overo_defconfig | 1 +
configs/omap3_pandora_defconfig | 1 +
configs/omap3_zoom1_defconfig | 1 +
configs/omap4_panda_defconfig | 1 +
configs/omap4_sdp4430_defconfig | 1 +
configs/omap5_uevm_defconfig | 1 +
configs/omapl138_lcdk_defconfig | 1 +
configs/openrd_base_defconfig | 1 +
configs/openrd_client_defconfig | 1 +
configs/openrd_ultimate_defconfig | 1 +
configs/orangepi_pc_defconfig | 2 +-
configs/ot1200_defconfig | 1 +
configs/ot1200_spl_defconfig | 1 +
configs/p2371-0000_defconfig | 1 +
configs/p2371-2180_defconfig | 3 +-
configs/p2571_defconfig | 1 +
configs/paz00_defconfig | 1 +
configs/pcm030_LOWBOOT_defconfig | 2 +
configs/pcm030_defconfig | 2 +
configs/pcm051_rev1_defconfig | 1 +
configs/pcm051_rev3_defconfig | 1 +
configs/pcm052_defconfig | 1 +
configs/pdm360ng_defconfig | 3 +
configs/peach-pi_defconfig | 1 +
configs/peach-pit_defconfig | 1 +
configs/pengwyn_defconfig | 1 +
configs/pepper_defconfig | 1 +
configs/picosam9g45_defconfig | 1 +
configs/platinum_picon_defconfig | 1 +
configs/platinum_titanium_defconfig | 1 +
configs/plutux_defconfig | 2 +
configs/pogo_e02_defconfig | 1 +
configs/porter_defconfig | 1 +
configs/portl2_defconfig | 1 +
configs/pov_protab2_ips9_defconfig | 1 +
configs/pxm2_defconfig | 2 +
configs/q8_a13_tablet_defconfig | 1 +
configs/q8_a23_tablet_800x480_defconfig | 1 +
configs/q8_a33_tablet_1024x600_defconfig | 1 +
configs/q8_a33_tablet_800x480_defconfig | 1 +
configs/qemu-ppce500_defconfig | 3 +
configs/qemu-x86_defconfig | 5 +-
configs/r7-tv-dongle_defconfig | 1 +
configs/rainier_defconfig | 2 +
configs/rainier_ramboot_defconfig | 2 +
configs/rastaban_defconfig | 1 +
configs/redwood_defconfig | 2 +
configs/riotboard_defconfig | 1 +
configs/rock2_defconfig | 2 +-
configs/rpi_2_defconfig | 2 +
configs/rpi_defconfig | 2 +
configs/rut_defconfig | 2 +
configs/sama5d2_xplained_mmc_defconfig | 1 +
configs/sama5d2_xplained_spiflash_defconfig | 1 +
configs/sama5d3_xplained_mmc_defconfig | 1 +
configs/sama5d3_xplained_nandflash_defconfig | 1 +
configs/sama5d3xek_mmc_defconfig | 1 +
configs/sama5d3xek_nandflash_defconfig | 1 +
configs/sama5d3xek_spiflash_defconfig | 1 +
configs/sama5d4_xplained_mmc_defconfig | 1 +
configs/sama5d4_xplained_nandflash_defconfig | 1 +
configs/sama5d4_xplained_spiflash_defconfig | 1 +
configs/sama5d4ek_mmc_defconfig | 1 +
configs/sama5d4ek_nandflash_defconfig | 1 +
configs/sama5d4ek_spiflash_defconfig | 1 +
configs/sandbox_defconfig | 8 +-
configs/sansa_fuze_plus_defconfig | 1 +
configs/sbc8349_PCI_33_defconfig | 2 +
configs/sbc8349_PCI_66_defconfig | 2 +
configs/sbc8349_defconfig | 2 +
configs/sbc8548_PCI_33_PCIE_defconfig | 2 +
configs/sbc8548_PCI_33_defconfig | 2 +
configs/sbc8548_PCI_66_PCIE_defconfig | 2 +
configs/sbc8548_PCI_66_defconfig | 2 +
configs/sbc8548_defconfig | 2 +
configs/sbc8641d_defconfig | 2 +
configs/sc_sps_1_defconfig | 1 +
configs/seaboard_defconfig | 1 +
configs/secomx6quq7_defconfig | 1 +
configs/sequoia_defconfig | 2 +
configs/sequoia_ramboot_defconfig | 2 +
configs/sheevaplug_defconfig | 1 +
configs/silk_defconfig | 1 +
configs/smartweb_defconfig | 2 +
configs/smdk5250_defconfig | 1 +
configs/smdk5420_defconfig | 1 +
configs/snapper9260_defconfig | 1 +
configs/snapper9g20_defconfig | 1 +
configs/sniper_defconfig | 1 +
configs/snow_defconfig | 1 +
configs/socfpga_arria5_defconfig | 8 +-
configs/socfpga_cyclone5_defconfig | 8 +-
configs/socfpga_de0_nano_soc_defconfig | 4 +-
configs/socfpga_mcvevk_defconfig | 4 +-
configs/socfpga_sockit_defconfig | 6 +-
configs/socfpga_socrates_defconfig | 6 +-
configs/socfpga_sr1500_defconfig | 10 +-
configs/socrates_defconfig | 3 +
configs/spring_defconfig | 1 +
configs/stm32f429-discovery_defconfig | 1 +
configs/stout_defconfig | 1 +
configs/strider_con_defconfig | 3 +
configs/strider_cpu_defconfig | 3 +
configs/sunxi_Gemei_G9_defconfig | 1 +
configs/suvd3_defconfig | 2 +
configs/sycamore_defconfig | 2 +
configs/t3corp_defconfig | 3 +
configs/tao3530_defconfig | 1 +
configs/taurus_defconfig | 1 +
configs/tbs2910_defconfig | 2 +
configs/tec-ng_defconfig | 2 +
configs/tec_defconfig | 2 +
configs/thuban_defconfig | 1 +
configs/ti814x_evm_defconfig | 1 +
configs/ti816x_evm_defconfig | 1 +
configs/titanium_defconfig | 1 +
configs/tqma6q_mba6_mmc_defconfig | 3 +
configs/tqma6q_mba6_spi_defconfig | 3 +
configs/tqma6s_mba6_mmc_defconfig | 3 +
configs/tqma6s_mba6_spi_defconfig | 3 +
configs/tqma6s_wru4_mmc_defconfig | 3 +
configs/trats2_defconfig | 1 +
configs/trats_defconfig | 1 +
configs/tricorder_defconfig | 1 +
configs/tricorder_flash_defconfig | 1 +
configs/trimslice_defconfig | 1 +
configs/ts4800_defconfig | 1 +
configs/tseries_mmc_defconfig | 2 +
configs/tseries_nand_defconfig | 2 +
configs/tseries_spi_defconfig | 2 +
configs/tuge1_defconfig | 2 +
configs/tuxx1_defconfig | 2 +
configs/twister_defconfig | 2 +
configs/udoo_defconfig | 1 +
configs/uniphier_ld4_sld8_defconfig | 1 -
configs/uniphier_pro4_defconfig | 1 -
configs/uniphier_pro5_defconfig | 1 -
configs/uniphier_pxs2_ld6b_defconfig | 1 -
configs/usb_a9263_dataflash_defconfig | 1 +
configs/usbarmory_defconfig | 1 +
configs/ve8313_defconfig | 2 +
configs/venice2_defconfig | 1 +
configs/ventana_defconfig | 1 +
configs/vexpress_aemv8a_dram_defconfig | 1 +
configs/vexpress_aemv8a_juno_defconfig | 1 +
configs/vexpress_aemv8a_semi_defconfig | 1 +
configs/vexpress_ca15_tc2_defconfig | 1 +
configs/vexpress_ca5x2_defconfig | 1 +
configs/vexpress_ca9x4_defconfig | 1 +
configs/vf610twr_defconfig | 1 +
configs/vf610twr_nand_defconfig | 1 +
configs/vme8349_defconfig | 2 +
configs/walnut_defconfig | 2 +
configs/wandboard_defconfig | 1 +
configs/warp_defconfig | 1 +
configs/whistler_defconfig | 1 +
configs/wtk_defconfig | 2 +
configs/x600_defconfig | 1 +
configs/xfi3_defconfig | 1 +
configs/xpedite1000_defconfig | 1 +
configs/xpedite517x_defconfig | 3 +
configs/xpedite520x_defconfig | 3 +
configs/xpedite537x_defconfig | 3 +
configs/xpedite550x_defconfig | 3 +
configs/yellowstone_defconfig | 2 +
configs/yosemite_defconfig | 2 +
configs/yucca_defconfig | 2 +
configs/zynq_zybo_defconfig | 4 +-
doc/mkimage.1 | 46 +-
doc/uImage.FIT/source_file_format.txt | 20 +-
dts/Kconfig | 11 +
include/common.h | 4 +-
include/config_distro_defaults.h | 2 -
include/configs/10m50_devboard.h | 2 -
include/configs/3c120_devboard.h | 2 -
include/configs/B4860QDS.h | 3 -
include/configs/BSC9131RDB.h | 3 -
include/configs/BSC9132QDS.h | 3 -
include/configs/C29XPCIE.h | 3 -
include/configs/CPCI4052.h | 2 -
include/configs/MPC8308RDB.h | 3 -
include/configs/MPC8313ERDB.h | 2 -
include/configs/MPC8315ERDB.h | 2 -
include/configs/MPC8323ERDB.h | 2 -
include/configs/MPC832XEMDS.h | 2 -
include/configs/MPC8349EMDS.h | 2 -
include/configs/MPC8349ITX.h | 2 -
include/configs/MPC837XEMDS.h | 2 -
include/configs/MPC837XERDB.h | 2 -
include/configs/MPC8536DS.h | 2 -
include/configs/MPC8540ADS.h | 2 -
include/configs/MPC8541CDS.h | 2 -
include/configs/MPC8544DS.h | 2 -
include/configs/MPC8548CDS.h | 2 -
include/configs/MPC8555CDS.h | 2 -
include/configs/MPC8560ADS.h | 2 -
include/configs/MPC8568MDS.h | 2 -
include/configs/MPC8569MDS.h | 2 -
include/configs/MPC8572DS.h | 3 -
include/configs/MPC8610HPCD.h | 2 -
include/configs/MPC8641HPCN.h | 2 -
include/configs/P1010RDB.h | 3 -
include/configs/P1022DS.h | 3 -
include/configs/P1023RDB.h | 3 -
include/configs/P2041RDB.h | 3 -
include/configs/PLU405.h | 2 -
include/configs/PMC405DE.h | 2 -
include/configs/PMC440.h | 2 -
include/configs/T102xQDS.h | 3 -
include/configs/T102xRDB.h | 3 -
include/configs/T1040QDS.h | 3 -
include/configs/T104xRDB.h | 3 -
include/configs/T208xQDS.h | 3 -
include/configs/T208xRDB.h | 3 -
include/configs/T4240RDB.h | 3 -
include/configs/TQM5200.h | 2 -
include/configs/TQM823L.h | 2 -
include/configs/TQM823M.h | 2 -
include/configs/TQM834x.h | 2 -
include/configs/TQM850L.h | 2 -
include/configs/TQM850M.h | 2 -
include/configs/TQM855L.h | 2 -
include/configs/TQM855M.h | 2 -
include/configs/TQM860L.h | 2 -
include/configs/TQM860M.h | 2 -
include/configs/TQM862L.h | 2 -
include/configs/TQM862M.h | 2 -
include/configs/TQM866M.h | 2 -
include/configs/TQM885D.h | 2 -
include/configs/UCP1020.h | 3 -
include/configs/VOM405.h | 2 -
include/configs/a3m071.h | 3 -
include/configs/a4m072.h | 2 -
include/configs/ac14xx.h | 3 -
include/configs/am335x_evm.h | 1 -
include/configs/am335x_sl50.h | 1 -
include/configs/am3517_evm.h | 2 -
include/configs/amcc-common.h | 2 -
include/configs/apf27.h | 2 -
include/configs/arcangel4.h | 3 -
include/configs/aria.h | 2 -
include/configs/aristainetos-common.h | 1 -
include/configs/armadillo-800eva.h | 1 -
include/configs/at91-sama5_common.h | 2 -
include/configs/at91rm9200ek.h | 1 -
include/configs/at91sam9260ek.h | 2 -
include/configs/at91sam9261ek.h | 3 -
include/configs/at91sam9263ek.h | 2 -
include/configs/at91sam9m10g45ek.h | 2 -
include/configs/at91sam9n12ek.h | 2 -
include/configs/at91sam9rlek.h | 2 -
include/configs/at91sam9x5ek.h | 2 -
include/configs/axs101.h | 2 -
include/configs/baltos.h | 1 -
include/configs/bav335x.h | 1 -
include/configs/bcm_ep_board.h | 3 -
include/configs/cm5200.h | 2 -
include/configs/cm_fx6.h | 1 -
include/configs/cm_t35.h | 2 -
include/configs/cm_t3517.h | 1 -
include/configs/cm_t54.h | 2 -
include/configs/colibri_pxa270.h | 1 -
include/configs/colibri_vf.h | 1 -
include/configs/controlcenterd.h | 3 -
include/configs/corenet_ds.h | 3 -
include/configs/corvus.h | 1 -
include/configs/cyrus.h | 3 -
include/configs/da850evm.h | 1 -
include/configs/devkit3250.h | 1 -
include/configs/digsy_mtc.h | 2 -
include/configs/dlvision-10g.h | 1 -
include/configs/dlvision.h | 1 -
include/configs/dns325.h | 5 -
include/configs/exynos5-common.h | 1 -
include/configs/flea3.h | 1 -
include/configs/gw_ventana.h | 2 -
include/configs/h2200.h | 1 -
include/configs/highbank.h | 2 -
include/configs/hikey.h | 3 -
include/configs/hrcon.h | 3 -
include/configs/ids8313.h | 2 -
include/configs/integrator-common.h | 1 -
include/configs/intip.h | 1 -
include/configs/io.h | 1 -
include/configs/io64.h | 1 -
include/configs/ipek01.h | 2 -
include/configs/jupiter.h | 2 -
include/configs/km/km-powerpc.h | 2 -
include/configs/km/km_arm.h | 3 -
include/configs/km/kmp204x-common.h | 3 -
include/configs/km82xx.h | 1 -
include/configs/kwb.h | 1 -
include/configs/kzm9g.h | 1 -
include/configs/lacie_kw.h | 5 -
include/configs/ls1021aqds.h | 2 -
include/configs/ls1021atwr.h | 2 -
include/configs/ls1043a_common.h | 3 -
include/configs/ls1043aqds.h | 2 -
include/configs/ls2080a_common.h | 3 -
include/configs/lsxl.h | 1 -
include/configs/lwmon5.h | 3 -
include/configs/m28evk.h | 1 -
include/configs/m53evk.h | 2 -
include/configs/manroland/common.h | 2 -
include/configs/mcx.h | 2 -
include/configs/mecp5123.h | 2 -
include/configs/medcom-wide.h | 1 -
include/configs/meesc.h | 2 -
include/configs/microblaze-generic.h | 2 -
include/configs/motionpro.h | 2 -
include/configs/mpc5121ads.h | 2 -
include/configs/mpc8308_p1m.h | 2 -
include/configs/munices.h | 2 -
include/configs/mv-common.h | 2 -
include/configs/mv-plug-common.h | 5 -
include/configs/mx25pdk.h | 1 -
include/configs/mx31ads.h | 2 -
include/configs/mx35pdk.h | 1 -
include/configs/mx51evk.h | 2 -
include/configs/mx53ard.h | 1 -
include/configs/mx53evk.h | 2 -
include/configs/mx53loco.h | 2 -
include/configs/mx53smd.h | 2 -
include/configs/mx6_common.h | 1 -
include/configs/mx6ul_14x14_evk.h | 1 -
include/configs/mx7_common.h | 1 -
include/configs/mxs.h | 3 -
include/configs/nas220.h | 6 -
include/configs/neo.h | 1 -
include/configs/novena.h | 1 -
include/configs/nyan-big.h | 2 -
include/configs/o2dnt-common.h | 2 -
include/configs/odroid.h | 1 -
include/configs/omapl138_lcdk.h | 1 -
include/configs/openrisc-generic.h | 1 -
include/configs/p1_p2_rdb_pc.h | 3 -
include/configs/p1_twr.h | 3 -
include/configs/pcm030.h | 2 -
include/configs/pcm052.h | 1 -
include/configs/pdm360ng.h | 3 -
include/configs/picosam9g45.h | 2 -
include/configs/plutux.h | 1 -
include/configs/pxm2.h | 1 -
include/configs/qemu-ppce500.h | 3 -
include/configs/rcar-gen2-common.h | 1 -
include/configs/rk3288_common.h | 1 -
include/configs/rpi-common.h | 1 -
include/configs/rut.h | 1 -
include/configs/s5p_goni.h | 3 -
include/configs/sandbox.h | 1 -
include/configs/sbc8349.h | 2 -
include/configs/sbc8548.h | 2 -
include/configs/sbc8641d.h | 2 -
include/configs/siemens-am33x-common.h | 1 -
include/configs/smartweb.h | 2 -
include/configs/smdkc100.h | 3 -
include/configs/snapper9260.h | 1 -
include/configs/socfpga_common.h | 2 -
include/configs/socrates.h | 4 -
include/configs/stm32f429-discovery.h | 2 -
include/configs/strider.h | 3 -
include/configs/stv0991.h | 2 -
include/configs/sunxi-common.h | 2 +-
include/configs/t3corp.h | 1 -
include/configs/t4qds.h | 3 -
include/configs/tam3517-common.h | 2 -
include/configs/tao3530.h | 2 -
include/configs/taurus.h | 1 -
include/configs/tb100.h | 2 -
include/configs/tbs2910.h | 1 -
include/configs/tec-ng.h | 1 -
include/configs/tec.h | 1 -
include/configs/tegra-common.h | 1 -
include/configs/thunderx_88xx.h | 3 -
include/configs/ti814x_evm.h | 1 -
include/configs/ti816x_evm.h | 1 -
include/configs/ti_armv7_common.h | 1 -
include/configs/ti_armv7_keystone2.h | 1 -
include/configs/tqma6.h | 3 -
include/configs/trats.h | 1 -
include/configs/trats2.h | 1 -
include/configs/tricorder.h | 2 -
include/configs/ts4800.h | 2 -
include/configs/tseries.h | 2 -
include/configs/uniphier.h | 3 -
include/configs/usb_a9263.h | 1 -
include/configs/usbarmory.h | 1 -
include/configs/ve8313.h | 2 -
include/configs/vexpress_aemv8a.h | 3 -
include/configs/vf610twr.h | 1 -
include/configs/vme8349.h | 2 -
include/configs/x600.h | 1 -
include/configs/x86-common.h | 2 -
include/configs/xilinx_zynqmp.h | 1 -
include/configs/xpedite1000.h | 1 -
include/configs/xpedite517x.h | 3 -
include/configs/xpedite520x.h | 3 -
include/configs/xpedite537x.h | 3 -
include/configs/xpedite550x.h | 3 -
include/configs/zynq-common.h | 3 -
include/image.h | 58 ++-
include/libfdt.h | 16 +
include/spl.h | 18 +
lib/Kconfig | 20 +
lib/Makefile | 4 +-
lib/libfdt/fdt_sw.c | 16 +-
tools/Makefile | 2 +-
tools/fit_image.c | 502 ++++++++++++++++++++-
tools/imagetool.c | 22 +
tools/imagetool.h | 24 +
tools/mkimage.c | 405 +++++++++--------
1112 files changed, 3000 insertions(+), 831 deletions(-)
create mode 100644 common/spl/spl_fit.c
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 07/26] libfdt: Add a function to write a property placeholder
[not found] ` <1453999186-18747-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2016-01-28 16:39 ` Simon Glass
[not found] ` <1453999186-18747-8-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-02-17 11:00 ` [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot Belisko Marek
1 sibling, 1 reply; 11+ messages in thread
From: Simon Glass @ 2016-01-28 16:39 UTC (permalink / raw)
To: U-Boot Mailing List
Cc: Hans de Goede, Tom Rini, Simon Glass, Devicetree Compiler
The existing function to add a new property to a tree being built requires
that the entire contents of the new property be passed in. For some
applications it is more convenient to be able to add the property contents
later, perhaps by reading from a file. This avoids double-buffering of the
contents.
Add a new function to support this and adust the existing fdt_property() to
use it.
Signed-off-by: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
---
include/libfdt.h | 16 ++++++++++++++++
lib/libfdt/fdt_sw.c | 16 ++++++++++++++--
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/include/libfdt.h b/include/libfdt.h
index e48c21a..c3f37ee 100644
--- a/include/libfdt.h
+++ b/include/libfdt.h
@@ -1181,6 +1181,22 @@ static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
{
return fdt_property_u32(fdt, name, val);
}
+
+/**
+ * fdt_property_val - add a new property and return a pointer to its value
+ *
+ * @fdt: pointer to the device tree blob
+ * @name: name of property to add
+ * @len: length of property value in bytes
+ * @valp: returns a pointer to where where the value should be placed
+ *
+ * returns:
+ * 0, on success
+ * -FDT_ERR_BADMAGIC,
+ * -FDT_ERR_NOSPACE, standard meanings
+ */
+int fdt_property_val(void *fdt, const char *name, int len, void **valp);
+
#define fdt_property_string(fdt, name, str) \
fdt_property(fdt, name, str, strlen(str)+1)
int fdt_end_node(void *fdt);
diff --git a/lib/libfdt/fdt_sw.c b/lib/libfdt/fdt_sw.c
index 320a914..9c1df3d 100644
--- a/lib/libfdt/fdt_sw.c
+++ b/lib/libfdt/fdt_sw.c
@@ -175,7 +175,7 @@ static int _fdt_find_add_string(void *fdt, const char *s)
return offset;
}
-int fdt_property(void *fdt, const char *name, const void *val, int len)
+int fdt_property_val(void *fdt, const char *name, int len, void **valp)
{
struct fdt_property *prop;
int nameoff;
@@ -193,7 +193,19 @@ int fdt_property(void *fdt, const char *name, const void *val, int len)
prop->tag = cpu_to_fdt32(FDT_PROP);
prop->nameoff = cpu_to_fdt32(nameoff);
prop->len = cpu_to_fdt32(len);
- memcpy(prop->data, val, len);
+ *valp = prop->data;
+ return 0;
+}
+
+int fdt_property(void *fdt, const char *name, const void *val, int len)
+{
+ void *ptr;
+ int ret;
+
+ ret = fdt_property_val(fdt, name, len, &ptr);
+ if (ret)
+ return ret;
+ memcpy(ptr, val, len);
return 0;
}
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 07/26] libfdt: Add a function to write a property placeholder
[not found] ` <1453999186-18747-8-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
@ 2016-01-29 5:29 ` David Gibson
[not found] ` <20160129052917.GM23043-1s0os16eZneny3qCrzbmXA@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: David Gibson @ 2016-01-29 5:29 UTC (permalink / raw)
To: Simon Glass
Cc: U-Boot Mailing List, Hans de Goede, Tom Rini, Devicetree Compiler
[-- Attachment #1: Type: text/plain, Size: 3133 bytes --]
On Thu, Jan 28, 2016 at 09:39:27AM -0700, Simon Glass wrote:
> The existing function to add a new property to a tree being built requires
> that the entire contents of the new property be passed in. For some
> applications it is more convenient to be able to add the property contents
> later, perhaps by reading from a file. This avoids double-buffering of the
> contents.
>
> Add a new function to support this and adust the existing fdt_property() to
> use it.
>
> Signed-off-by: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
So, obviously such a patch should really go towards upstream libfdt.
I'm happy enough with the concept, but I don't like the name.
I'd prefer fdt_property_reserve() - the idea being that it reserves
space for the property but doesn't fill it in.
> ---
>
> include/libfdt.h | 16 ++++++++++++++++
> lib/libfdt/fdt_sw.c | 16 ++++++++++++++--
> 2 files changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/include/libfdt.h b/include/libfdt.h
> index e48c21a..c3f37ee 100644
> --- a/include/libfdt.h
> +++ b/include/libfdt.h
> @@ -1181,6 +1181,22 @@ static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
> {
> return fdt_property_u32(fdt, name, val);
> }
> +
> +/**
> + * fdt_property_val - add a new property and return a pointer to its value
> + *
> + * @fdt: pointer to the device tree blob
> + * @name: name of property to add
> + * @len: length of property value in bytes
> + * @valp: returns a pointer to where where the value should be placed
> + *
> + * returns:
> + * 0, on success
> + * -FDT_ERR_BADMAGIC,
> + * -FDT_ERR_NOSPACE, standard meanings
> + */
> +int fdt_property_val(void *fdt, const char *name, int len, void **valp);
> +
> #define fdt_property_string(fdt, name, str) \
> fdt_property(fdt, name, str, strlen(str)+1)
> int fdt_end_node(void *fdt);
> diff --git a/lib/libfdt/fdt_sw.c b/lib/libfdt/fdt_sw.c
> index 320a914..9c1df3d 100644
> --- a/lib/libfdt/fdt_sw.c
> +++ b/lib/libfdt/fdt_sw.c
> @@ -175,7 +175,7 @@ static int _fdt_find_add_string(void *fdt, const char *s)
> return offset;
> }
>
> -int fdt_property(void *fdt, const char *name, const void *val, int len)
> +int fdt_property_val(void *fdt, const char *name, int len, void **valp)
> {
> struct fdt_property *prop;
> int nameoff;
> @@ -193,7 +193,19 @@ int fdt_property(void *fdt, const char *name, const void *val, int len)
> prop->tag = cpu_to_fdt32(FDT_PROP);
> prop->nameoff = cpu_to_fdt32(nameoff);
> prop->len = cpu_to_fdt32(len);
> - memcpy(prop->data, val, len);
> + *valp = prop->data;
> + return 0;
> +}
> +
> +int fdt_property(void *fdt, const char *name, const void *val, int len)
> +{
> + void *ptr;
> + int ret;
> +
> + ret = fdt_property_val(fdt, name, len, &ptr);
> + if (ret)
> + return ret;
> + memcpy(ptr, val, len);
> return 0;
> }
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 07/26] libfdt: Add a function to write a property placeholder
[not found] ` <20160129052917.GM23043-1s0os16eZneny3qCrzbmXA@public.gmane.org>
@ 2016-01-29 18:23 ` Simon Glass
[not found] ` <CAPnjgZ3jOaYuZOeafhnH0dq52uRa8iXjq=kC_8qtnB7Knq9GCA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Simon Glass @ 2016-01-29 18:23 UTC (permalink / raw)
To: David Gibson
Cc: U-Boot Mailing List, Hans de Goede, Tom Rini, Devicetree Compiler
Hi David,
On 28 January 2016 at 22:29, David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org> wrote:
> On Thu, Jan 28, 2016 at 09:39:27AM -0700, Simon Glass wrote:
>> The existing function to add a new property to a tree being built requires
>> that the entire contents of the new property be passed in. For some
>> applications it is more convenient to be able to add the property contents
>> later, perhaps by reading from a file. This avoids double-buffering of the
>> contents.
>>
>> Add a new function to support this and adust the existing fdt_property() to
>> use it.
>>
>> Signed-off-by: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
>
> So, obviously such a patch should really go towards upstream libfdt.
>
> I'm happy enough with the concept, but I don't like the name.
>
> I'd prefer fdt_property_reserve() - the idea being that it reserves
> space for the property but doesn't fill it in.
Sounds good. I'll work up a patch. I tend to sync with upstream one a
quarter or so.
>
>> ---
>>
>> include/libfdt.h | 16 ++++++++++++++++
>> lib/libfdt/fdt_sw.c | 16 ++++++++++++++--
>> 2 files changed, 30 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/libfdt.h b/include/libfdt.h
>> index e48c21a..c3f37ee 100644
>> --- a/include/libfdt.h
>> +++ b/include/libfdt.h
>> @@ -1181,6 +1181,22 @@ static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
>> {
>> return fdt_property_u32(fdt, name, val);
>> }
>> +
>> +/**
>> + * fdt_property_val - add a new property and return a pointer to its value
>> + *
>> + * @fdt: pointer to the device tree blob
>> + * @name: name of property to add
>> + * @len: length of property value in bytes
>> + * @valp: returns a pointer to where where the value should be placed
>> + *
>> + * returns:
>> + * 0, on success
>> + * -FDT_ERR_BADMAGIC,
>> + * -FDT_ERR_NOSPACE, standard meanings
>> + */
>> +int fdt_property_val(void *fdt, const char *name, int len, void **valp);
>> +
>> #define fdt_property_string(fdt, name, str) \
>> fdt_property(fdt, name, str, strlen(str)+1)
>> int fdt_end_node(void *fdt);
>> diff --git a/lib/libfdt/fdt_sw.c b/lib/libfdt/fdt_sw.c
>> index 320a914..9c1df3d 100644
>> --- a/lib/libfdt/fdt_sw.c
>> +++ b/lib/libfdt/fdt_sw.c
>> @@ -175,7 +175,7 @@ static int _fdt_find_add_string(void *fdt, const char *s)
>> return offset;
>> }
>>
>> -int fdt_property(void *fdt, const char *name, const void *val, int len)
>> +int fdt_property_val(void *fdt, const char *name, int len, void **valp)
>> {
>> struct fdt_property *prop;
>> int nameoff;
>> @@ -193,7 +193,19 @@ int fdt_property(void *fdt, const char *name, const void *val, int len)
>> prop->tag = cpu_to_fdt32(FDT_PROP);
>> prop->nameoff = cpu_to_fdt32(nameoff);
>> prop->len = cpu_to_fdt32(len);
>> - memcpy(prop->data, val, len);
>> + *valp = prop->data;
>> + return 0;
>> +}
>> +
>> +int fdt_property(void *fdt, const char *name, const void *val, int len)
>> +{
>> + void *ptr;
>> + int ret;
>> +
>> + ret = fdt_property_val(fdt, name, len, &ptr);
>> + if (ret)
>> + return ret;
>> + memcpy(ptr, val, len);
>> return 0;
>> }
>>
Regards,
Simon
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 07/26] libfdt: Add a function to write a property placeholder
[not found] ` <CAPnjgZ3jOaYuZOeafhnH0dq52uRa8iXjq=kC_8qtnB7Knq9GCA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2016-01-31 9:55 ` David Gibson
0 siblings, 0 replies; 11+ messages in thread
From: David Gibson @ 2016-01-31 9:55 UTC (permalink / raw)
To: Simon Glass
Cc: U-Boot Mailing List, Hans de Goede, Tom Rini, Devicetree Compiler
[-- Attachment #1: Type: text/plain, Size: 3886 bytes --]
On Fri, Jan 29, 2016 at 11:23:31AM -0700, Simon Glass wrote:
> Hi David,
>
> On 28 January 2016 at 22:29, David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org> wrote:
> > On Thu, Jan 28, 2016 at 09:39:27AM -0700, Simon Glass wrote:
> >> The existing function to add a new property to a tree being built requires
> >> that the entire contents of the new property be passed in. For some
> >> applications it is more convenient to be able to add the property contents
> >> later, perhaps by reading from a file. This avoids double-buffering of the
> >> contents.
> >>
> >> Add a new function to support this and adust the existing fdt_property() to
> >> use it.
> >>
> >> Signed-off-by: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
> >
> > So, obviously such a patch should really go towards upstream libfdt.
> >
> > I'm happy enough with the concept, but I don't like the name.
> >
> > I'd prefer fdt_property_reserve() - the idea being that it reserves
> > space for the property but doesn't fill it in.
>
> Sounds good. I'll work up a patch. I tend to sync with upstream one a
> quarter or so.
Ok.
Actually, on further consideration, fdt_property_placeholder() is a
better name again.
>
> >
> >> ---
> >>
> >> include/libfdt.h | 16 ++++++++++++++++
> >> lib/libfdt/fdt_sw.c | 16 ++++++++++++++--
> >> 2 files changed, 30 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/include/libfdt.h b/include/libfdt.h
> >> index e48c21a..c3f37ee 100644
> >> --- a/include/libfdt.h
> >> +++ b/include/libfdt.h
> >> @@ -1181,6 +1181,22 @@ static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val)
> >> {
> >> return fdt_property_u32(fdt, name, val);
> >> }
> >> +
> >> +/**
> >> + * fdt_property_val - add a new property and return a pointer to its value
> >> + *
> >> + * @fdt: pointer to the device tree blob
> >> + * @name: name of property to add
> >> + * @len: length of property value in bytes
> >> + * @valp: returns a pointer to where where the value should be placed
> >> + *
> >> + * returns:
> >> + * 0, on success
> >> + * -FDT_ERR_BADMAGIC,
> >> + * -FDT_ERR_NOSPACE, standard meanings
> >> + */
> >> +int fdt_property_val(void *fdt, const char *name, int len, void **valp);
> >> +
> >> #define fdt_property_string(fdt, name, str) \
> >> fdt_property(fdt, name, str, strlen(str)+1)
> >> int fdt_end_node(void *fdt);
> >> diff --git a/lib/libfdt/fdt_sw.c b/lib/libfdt/fdt_sw.c
> >> index 320a914..9c1df3d 100644
> >> --- a/lib/libfdt/fdt_sw.c
> >> +++ b/lib/libfdt/fdt_sw.c
> >> @@ -175,7 +175,7 @@ static int _fdt_find_add_string(void *fdt, const char *s)
> >> return offset;
> >> }
> >>
> >> -int fdt_property(void *fdt, const char *name, const void *val, int len)
> >> +int fdt_property_val(void *fdt, const char *name, int len, void **valp)
> >> {
> >> struct fdt_property *prop;
> >> int nameoff;
> >> @@ -193,7 +193,19 @@ int fdt_property(void *fdt, const char *name, const void *val, int len)
> >> prop->tag = cpu_to_fdt32(FDT_PROP);
> >> prop->nameoff = cpu_to_fdt32(nameoff);
> >> prop->len = cpu_to_fdt32(len);
> >> - memcpy(prop->data, val, len);
> >> + *valp = prop->data;
> >> + return 0;
> >> +}
> >> +
> >> +int fdt_property(void *fdt, const char *name, const void *val, int len)
> >> +{
> >> + void *ptr;
> >> + int ret;
> >> +
> >> + ret = fdt_property_val(fdt, name, len, &ptr);
> >> + if (ret)
> >> + return ret;
> >> + memcpy(ptr, val, len);
> >> return 0;
> >> }
> >>
>
> Regards,
> Simon
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
2016-01-28 16:39 [PATCH 00/26] spl: Support loading a FIT image containing U-Boot Simon Glass
@ 2016-02-16 11:34 ` Masahiro Yamada
[not found] ` <CAK7LNARoFApxsiEw0Qtqw_s4dbN9TWLjrJ8c0zt69gjnnrdeWg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[not found] ` <1453999186-18747-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
1 sibling, 1 reply; 11+ messages in thread
From: Masahiro Yamada @ 2016-02-16 11:34 UTC (permalink / raw)
To: Simon Glass
Cc: Tom Rini, U-Boot Mailing List, Joe Hershberger, Jerry Van Baren,
Ian Campbell, Devicetree Compiler
Hi Simon,
2016-01-29 1:39 GMT+09:00 Simon Glass <sjg@chromium.org>:
> We need a way to support more than one board per binary in U-Boot with
> device tree. Various methods have been discussed. The one that seems to make
> the most sense is to adjust SPL so that it can load a FIT which contains
> U-Boot and several device tree binaries. This is how things with with Linux:
> load a FIT and select the correct device tree to pass to Linux.
I've just skimmed over the git-logs, but I am confused.
Please makes it clearer why this is useful.
In your way, how SPL is handled?
SPL is much more board-specific than U-Boot proper.
So, I assume SPL would remain as a per-board image
even after achieving one U-Boot proper for multi-boards.
Let's say we want to support Board-A, Board-B, Board-C with one U-Boot proper.
The U-Boot proper + FIT (including DTB-A, DTB-B, DTB-C) would be
generated by one-shot
and by one defconfig.
But, we would still have to do
make board_a_defconfig && make
make board_b_defconfig && make
make board_c_defconfig && make
to generate SPL for each of the three.
Is this correct?
Supposing my guess is correct, this series would not contribute
to decreasing the number of defconfig files.
Please explain which problem you are solving with this series.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
[not found] ` <CAK7LNARoFApxsiEw0Qtqw_s4dbN9TWLjrJ8c0zt69gjnnrdeWg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2016-02-16 12:17 ` Tom Rini
2016-02-16 12:30 ` Masahiro Yamada
0 siblings, 1 reply; 11+ messages in thread
From: Tom Rini @ 2016-02-16 12:17 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Simon Glass, U-Boot Mailing List, Joe Hershberger,
Jerry Van Baren, Ian Campbell, Devicetree Compiler
[-- Attachment #1: Type: text/plain, Size: 2160 bytes --]
On Tue, Feb 16, 2016 at 08:34:59PM +0900, Masahiro Yamada wrote:
> Hi Simon,
>
>
> 2016-01-29 1:39 GMT+09:00 Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>:
> > We need a way to support more than one board per binary in U-Boot with
> > device tree. Various methods have been discussed. The one that seems to make
> > the most sense is to adjust SPL so that it can load a FIT which contains
> > U-Boot and several device tree binaries. This is how things with with Linux:
> > load a FIT and select the correct device tree to pass to Linux.
>
> I've just skimmed over the git-logs, but I am confused.
>
>
> Please makes it clearer why this is useful.
> In your way, how SPL is handled?
>
> SPL is much more board-specific than U-Boot proper.
> So, I assume SPL would remain as a per-board image
> even after achieving one U-Boot proper for multi-boards.
>
> Let's say we want to support Board-A, Board-B, Board-C with one U-Boot proper.
>
> The U-Boot proper + FIT (including DTB-A, DTB-B, DTB-C) would be
> generated by one-shot
> and by one defconfig.
>
>
> But, we would still have to do
>
> make board_a_defconfig && make
> make board_b_defconfig && make
> make board_c_defconfig && make
>
> to generate SPL for each of the three.
> Is this correct?
>
>
> Supposing my guess is correct, this series would not contribute
> to decreasing the number of defconfig files.
>
>
>
> Please explain which problem you are solving with this series.
It won't be just one board. We need this so that we can replicate
existing (and very useful) functionality. Today, am335x_evm_config
supports Beaglebone White, Beaglebone Black (could be faked enough for
U-Boot), AM335x GP EVM, AM335x EVM SK and if you tweak the default UART
AM335x IDK EVM. Each of these is different enough that they have their
own DT that we will need to pass up to U-Boot, and their own config
file. With Simon's series we'll be able to move am335x_evm_config up to
DM in SPL and possibly even remove some of the am335x_evm subconfigs we
have today, once those specific options also move to Kconfig.
--
Tom
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
2016-02-16 12:17 ` [U-Boot] " Tom Rini
@ 2016-02-16 12:30 ` Masahiro Yamada
[not found] ` <CAK7LNAS01SnJMefoZVSsqP7jS9bvkRFYZwK5uLoEG1+q_0uzzQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Masahiro Yamada @ 2016-02-16 12:30 UTC (permalink / raw)
To: Tom Rini
Cc: Joe Hershberger, U-Boot Mailing List, Jerry Van Baren,
Ian Campbell, Devicetree Compiler
2016-02-16 21:17 GMT+09:00 Tom Rini <trini-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>:
> On Tue, Feb 16, 2016 at 08:34:59PM +0900, Masahiro Yamada wrote:
>> Hi Simon,
>>
>>
>> 2016-01-29 1:39 GMT+09:00 Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>:
>> > We need a way to support more than one board per binary in U-Boot with
>> > device tree. Various methods have been discussed. The one that seems to make
>> > the most sense is to adjust SPL so that it can load a FIT which contains
>> > U-Boot and several device tree binaries. This is how things with with Linux:
>> > load a FIT and select the correct device tree to pass to Linux.
>>
>> I've just skimmed over the git-logs, but I am confused.
>>
>>
>> Please makes it clearer why this is useful.
>> In your way, how SPL is handled?
>>
>> SPL is much more board-specific than U-Boot proper.
>> So, I assume SPL would remain as a per-board image
>> even after achieving one U-Boot proper for multi-boards.
>>
>> Let's say we want to support Board-A, Board-B, Board-C with one U-Boot proper.
>>
>> The U-Boot proper + FIT (including DTB-A, DTB-B, DTB-C) would be
>> generated by one-shot
>> and by one defconfig.
>>
>>
>> But, we would still have to do
>>
>> make board_a_defconfig && make
>> make board_b_defconfig && make
>> make board_c_defconfig && make
>>
>> to generate SPL for each of the three.
>> Is this correct?
>>
>>
>> Supposing my guess is correct, this series would not contribute
>> to decreasing the number of defconfig files.
>>
>>
>>
>> Please explain which problem you are solving with this series.
>
> It won't be just one board. We need this so that we can replicate
> existing (and very useful) functionality. Today, am335x_evm_config
> supports Beaglebone White, Beaglebone Black (could be faked enough for
> U-Boot), AM335x GP EVM, AM335x EVM SK and if you tweak the default UART
> AM335x IDK EVM. Each of these is different enough that they have their
> own DT that we will need to pass up to U-Boot, and their own config
> file. With Simon's series we'll be able to move am335x_evm_config up to
> DM in SPL and possibly even remove some of the am335x_evm subconfigs we
> have today, once those specific options also move to Kconfig.
So, this series is useful to merge some boards
that are different enough to have their own DT,
but that are similar enough to share one SPL binary, correct?
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
[not found] ` <CAK7LNAS01SnJMefoZVSsqP7jS9bvkRFYZwK5uLoEG1+q_0uzzQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2016-02-16 13:33 ` Tom Rini
0 siblings, 0 replies; 11+ messages in thread
From: Tom Rini @ 2016-02-16 13:33 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Joe Hershberger, U-Boot Mailing List, Jerry Van Baren,
Ian Campbell, Devicetree Compiler
[-- Attachment #1: Type: text/plain, Size: 2924 bytes --]
On Tue, Feb 16, 2016 at 09:30:44PM +0900, Masahiro Yamada wrote:
> 2016-02-16 21:17 GMT+09:00 Tom Rini <trini-OWPKS81ov/FWk0Htik3J/w@public.gmane.org>:
> > On Tue, Feb 16, 2016 at 08:34:59PM +0900, Masahiro Yamada wrote:
> >> Hi Simon,
> >>
> >>
> >> 2016-01-29 1:39 GMT+09:00 Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>:
> >> > We need a way to support more than one board per binary in U-Boot with
> >> > device tree. Various methods have been discussed. The one that seems to make
> >> > the most sense is to adjust SPL so that it can load a FIT which contains
> >> > U-Boot and several device tree binaries. This is how things with with Linux:
> >> > load a FIT and select the correct device tree to pass to Linux.
> >>
> >> I've just skimmed over the git-logs, but I am confused.
> >>
> >>
> >> Please makes it clearer why this is useful.
> >> In your way, how SPL is handled?
> >>
> >> SPL is much more board-specific than U-Boot proper.
> >> So, I assume SPL would remain as a per-board image
> >> even after achieving one U-Boot proper for multi-boards.
> >>
> >> Let's say we want to support Board-A, Board-B, Board-C with one U-Boot proper.
> >>
> >> The U-Boot proper + FIT (including DTB-A, DTB-B, DTB-C) would be
> >> generated by one-shot
> >> and by one defconfig.
> >>
> >>
> >> But, we would still have to do
> >>
> >> make board_a_defconfig && make
> >> make board_b_defconfig && make
> >> make board_c_defconfig && make
> >>
> >> to generate SPL for each of the three.
> >> Is this correct?
> >>
> >>
> >> Supposing my guess is correct, this series would not contribute
> >> to decreasing the number of defconfig files.
> >>
> >>
> >>
> >> Please explain which problem you are solving with this series.
> >
> > It won't be just one board. We need this so that we can replicate
> > existing (and very useful) functionality. Today, am335x_evm_config
> > supports Beaglebone White, Beaglebone Black (could be faked enough for
> > U-Boot), AM335x GP EVM, AM335x EVM SK and if you tweak the default UART
> > AM335x IDK EVM. Each of these is different enough that they have their
> > own DT that we will need to pass up to U-Boot, and their own config
> > file. With Simon's series we'll be able to move am335x_evm_config up to
> > DM in SPL and possibly even remove some of the am335x_evm subconfigs we
> > have today, once those specific options also move to Kconfig.
>
> So, this series is useful to merge some boards
> that are different enough to have their own DT,
> but that are similar enough to share one SPL binary, correct?
Yes. It _may_ even be useful later on to support a more broad set of
boards than we do today (ie it's not impossible that one binary could
support the TI AM43xx EVMs as well, or all TI EVMs that have the EEPROM
that identifies the model, for some narrow scope of boot devices).
--
Tom
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
[not found] ` <1453999186-18747-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-01-28 16:39 ` [PATCH 07/26] libfdt: Add a function to write a property placeholder Simon Glass
@ 2016-02-17 11:00 ` Belisko Marek
[not found] ` <CAAfyv34var5T==6z35BQnzWa7O1J=0OHHAp3QMaMkfUei7PAYA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
1 sibling, 1 reply; 11+ messages in thread
From: Belisko Marek @ 2016-02-17 11:00 UTC (permalink / raw)
To: Simon Glass
Cc: U-Boot Mailing List, Tom Rini, Joe Hershberger, Jerry Van Baren,
Ian Campbell, Devicetree Compiler
Hi Simon,
On Thu, Jan 28, 2016 at 5:39 PM, Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> wrote:
> We need a way to support more than one board per binary in U-Boot with
> device tree. Various methods have been discussed. The one that seems to make
> the most sense is to adjust SPL so that it can load a FIT which contains
> U-Boot and several device tree binaries. This is how things with with Linux:
> load a FIT and select the correct device tree to pass to Linux.
Some time ago I rise question [0] to load FIT kernel directly in SPL
using falcon mode.
I did look at your patches and I have a feeling that with small
adaptions it should be possible?
Am I right or it's impossible? (Trying to use it on am33xx boards). Many thanks.
>
> This series:
>
> - Adjusts the build system to optionally build a u-boot.img in FIT format
> that includes the U-Boot binary and >1 device tree files
> - Adjusts SPL to support loading this
> - Adds a way for SPL to determine which device tree to select (by calling a
> board-specific function)
> - Adjusts SPL to pass this selected device tree to U-Boot when it starts
>
> It would be painful to require an .its file for each board just to support
> this feature. In any case various people have commented that it would be
> nice not to have to write this file in general. Therefore, this series
> enhances mkimage to automatically generate a FIT without a .its file. So far
> it understands how to add a main image and a number of device tree files. It
> does not support hashing or verified boot as yet.
>
> One problem with the FIT format as it stands is that all the data is inline.
> This means that the entire file must be read in order to figure out what
> device-tree files are available. It is then possible to copy the images into
> place.
>
> This is not really suitable for SPL since copying can be slow, and reading
> unnecessary data would make the FIT format less efficient than the legacy
> format.
>
> Therefore this series adds a new feature to FIT which allows the images to
> be stored immediately after the FIT itself ends. This makes the FIT very
> small. It can be read quickly and in its entirety. Then the images can be
> loaded one by one as needed. This allows SPL to support FITs containing lots
> of images very efficiently.
>
> To achieve this, mkimage is enhanced to convert between the 'normal' and
> 'external' version of a FIT file. The latter is only used for the SPL loader.
> The main difference is that viewing an 'external' FIT will not show the
> contents of each image.
>
> This series also includes a few other tidy-ups, such as moving mkimage's
> tricky argument-processing code to use getopt().
>
> NOTE: There are a few problems remaining with the Kconfig conversion. I'm
> still fiddling with this but thought it best to send this series out for
> comment in the meantime.
>
> This series is available at u-boot-fdt/spl-working.
>
[0] - http://lists.denx.de/pipermail/u-boot/2015-February/203938.html
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot-0aAXYlwwYIKGBzrmiIFOJg@public.gmane.org
> http://lists.denx.de/mailman/listinfo/u-boot
BR,
marek
--
as simple and primitive as possible
-------------------------------------------------
Marek Belisko - OPEN-NANDRA
Freelance Developer
Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
Tel: +421 915 052 184
skype: marekwhite
twitter: #opennandra
web: http://open-nandra.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot
[not found] ` <CAAfyv34var5T==6z35BQnzWa7O1J=0OHHAp3QMaMkfUei7PAYA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2016-02-19 20:55 ` Simon Glass
0 siblings, 0 replies; 11+ messages in thread
From: Simon Glass @ 2016-02-19 20:55 UTC (permalink / raw)
To: Belisko Marek
Cc: U-Boot Mailing List, Tom Rini, Joe Hershberger, Jerry Van Baren,
Ian Campbell, Devicetree Compiler
Hi,
On 17 February 2016 at 04:00, Belisko Marek <marek.belisko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Hi Simon,
>
>
> On Thu, Jan 28, 2016 at 5:39 PM, Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> wrote:
>> We need a way to support more than one board per binary in U-Boot with
>> device tree. Various methods have been discussed. The one that seems to make
>> the most sense is to adjust SPL so that it can load a FIT which contains
>> U-Boot and several device tree binaries. This is how things with with Linux:
>> load a FIT and select the correct device tree to pass to Linux.
> Some time ago I rise question [0] to load FIT kernel directly in SPL
> using falcon mode.
> I did look at your patches and I have a feeling that with small
> adaptions it should be possible?
> Am I right or it's impossible? (Trying to use it on am33xx boards). Many thanks.
Yes it should be possible. You will probably need to modify the device
tree before booting Linux.
In this case however I am not really using the full existing FIT code.
It would be easier to use it and it is possible to build full FIT
support in SPL. I did it for a project a few years ago but did not
upstream it. It does add a bit to the size though.
Regards,
Simon
>>
>> This series:
>>
>> - Adjusts the build system to optionally build a u-boot.img in FIT format
>> that includes the U-Boot binary and >1 device tree files
>> - Adjusts SPL to support loading this
>> - Adds a way for SPL to determine which device tree to select (by calling a
>> board-specific function)
>> - Adjusts SPL to pass this selected device tree to U-Boot when it starts
>>
>> It would be painful to require an .its file for each board just to support
>> this feature. In any case various people have commented that it would be
>> nice not to have to write this file in general. Therefore, this series
>> enhances mkimage to automatically generate a FIT without a .its file. So far
>> it understands how to add a main image and a number of device tree files. It
>> does not support hashing or verified boot as yet.
>>
>> One problem with the FIT format as it stands is that all the data is inline.
>> This means that the entire file must be read in order to figure out what
>> device-tree files are available. It is then possible to copy the images into
>> place.
>>
>> This is not really suitable for SPL since copying can be slow, and reading
>> unnecessary data would make the FIT format less efficient than the legacy
>> format.
>>
>> Therefore this series adds a new feature to FIT which allows the images to
>> be stored immediately after the FIT itself ends. This makes the FIT very
>> small. It can be read quickly and in its entirety. Then the images can be
>> loaded one by one as needed. This allows SPL to support FITs containing lots
>> of images very efficiently.
>>
>> To achieve this, mkimage is enhanced to convert between the 'normal' and
>> 'external' version of a FIT file. The latter is only used for the SPL loader.
>> The main difference is that viewing an 'external' FIT will not show the
>> contents of each image.
>>
>> This series also includes a few other tidy-ups, such as moving mkimage's
>> tricky argument-processing code to use getopt().
>>
>> NOTE: There are a few problems remaining with the Kconfig conversion. I'm
>> still fiddling with this but thought it best to send this series out for
>> comment in the meantime.
>>
>> This series is available at u-boot-fdt/spl-working.
>>
>
> [0] - http://lists.denx.de/pipermail/u-boot/2015-February/203938.html
>>
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot-0aAXYlwwYIKGBzrmiIFOJg@public.gmane.org
>> http://lists.denx.de/mailman/listinfo/u-boot
>
>
> BR,
>
> marek
>
> --
> as simple and primitive as possible
> -------------------------------------------------
> Marek Belisko - OPEN-NANDRA
> Freelance Developer
>
> Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
> Tel: +421 915 052 184
> skype: marekwhite
> twitter: #opennandra
> web: http://open-nandra.com
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2016-02-19 20:55 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-28 16:39 [PATCH 00/26] spl: Support loading a FIT image containing U-Boot Simon Glass
2016-02-16 11:34 ` Masahiro Yamada
[not found] ` <CAK7LNARoFApxsiEw0Qtqw_s4dbN9TWLjrJ8c0zt69gjnnrdeWg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-16 12:17 ` [U-Boot] " Tom Rini
2016-02-16 12:30 ` Masahiro Yamada
[not found] ` <CAK7LNAS01SnJMefoZVSsqP7jS9bvkRFYZwK5uLoEG1+q_0uzzQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-16 13:33 ` Tom Rini
[not found] ` <1453999186-18747-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-01-28 16:39 ` [PATCH 07/26] libfdt: Add a function to write a property placeholder Simon Glass
[not found] ` <1453999186-18747-8-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2016-01-29 5:29 ` David Gibson
[not found] ` <20160129052917.GM23043-1s0os16eZneny3qCrzbmXA@public.gmane.org>
2016-01-29 18:23 ` Simon Glass
[not found] ` <CAPnjgZ3jOaYuZOeafhnH0dq52uRa8iXjq=kC_8qtnB7Knq9GCA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-01-31 9:55 ` David Gibson
2016-02-17 11:00 ` [U-Boot] [PATCH 00/26] spl: Support loading a FIT image containing U-Boot Belisko Marek
[not found] ` <CAAfyv34var5T==6z35BQnzWa7O1J=0OHHAp3QMaMkfUei7PAYA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-02-19 20:55 ` Simon Glass
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).