
Hey all,
The following patch series merges the davinci and omap-common SPL frameworks into a single framework, CONFIG_SPL_FRAMEWORK along with a few small cleanups to the code to make it a little smaller and more flexible. The end result is that davinci can now opt in on SPL-boots-Linux by just setting the right defines and other platforms would just need to adapt to this framework. In my testing, davinci gains between 300 and 700 bytes for this (not enabling the SPL OS feature) and omap4/5/etc lose just a little bit (from the printf->puts changes). I've tested this on omap3_beagle (xM and classic) and omap4_panda. I don't have any davinci platforms that were previously using SPL so I can't boot-test those changes but since everyone sets CONFIG_SPL_MAX_SIZE, we're OK in that department.
To make this series easier to test I've placed it on http://github.com/trini/u-boot WIP/spl-improvements
I've looked a little into re-reducing the size and the biggest problem I see is that SPI a lot of informational prints that we don't need, strictly speaking, but are nice in a normal U-Boot context. I'm unsure of the best way to quiet these as I don't like the idea of sprinkling http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54303 and I'm sending another email to discuss that.
Oh, and I've switched to using patman for this series now, please let me know if I made the tool do something silly :)
-- Tom
Changes in v2: - Add CONFIG_SYS_SPL_MALLOC_START / SIZE defines from Christian Riesch - Add arch/arm/cpu/arm926ejs/davinci/config.mk to build u-boot.ais - Fix checkpatch warning (u32* boot_params_ptr -> u32 *boot_params_ptr) - Place files into common/spl (due to gcc bug #54303) and include/spl.h - Reorder all of the patches that used to follow this to precede.
Tom Rini (18): Makefile: Move SPL files to clobber, remove from clean spl_mmc: Make FAT checks / calls guarded with CONFIG_SPL_FAT_SUPPORT omap-common: SPL: Add CONFIG_SPL_DISPLAY_PRINT / spl_display_print() omap-common: Fix typo in save_boot_params() in lowlevel_init.S ARM: SPL: Rename omap_boot_device to spl_boot_device ARM: SPL: Rename omap_boot_mode to spl_boot_mode() ARM: SPL: Remove NAND_MODE_HW_ECC from spl_nand.c ARM: SPL: Only call mem_malloc_init if configured ARM: SPL: Add <asm/spl.h> and <asm/arch/spl.h> ARM: SPL: Make spl_mmc.c more generic ARM: SPL: Clean up spl.c / spl_nand.c slightly ARM: SPL: Start hooking in the current SPI SPL support ARM: SPL: Move gpmc_init() to spl_board_init() SPL: Move the omap SPL framework to common/spl ARM: SPL: Convert davinci to CONFIG_SPL_FRAMEWORK da850_am18xxevm: Add README.da850_am18xxevm SPL: Enhance drivers/mtd/nand/nand_spl_load.c SPL: Enhance spi_spl_load to match the other load functions
Makefile | 12 +-- README | 9 ++ arch/arm/cpu/arm926ejs/davinci/config.mk | 16 +++ arch/arm/cpu/arm926ejs/davinci/spl.c | 47 ++------- arch/arm/cpu/armv7/am33xx/board.c | 2 +- arch/arm/cpu/armv7/omap-common/Makefile | 13 --- arch/arm/cpu/armv7/omap-common/boot-common.c | 27 ++++- arch/arm/cpu/armv7/omap-common/hwinit-common.c | 7 +- arch/arm/cpu/armv7/omap-common/lowlevel_init.S | 6 +- arch/arm/cpu/armv7/omap-common/spl_nand.c | 111 -------------------- arch/arm/cpu/armv7/omap3/board.c | 28 +++-- arch/arm/include/asm/arch-am33xx/spl.h | 31 ++++++ arch/arm/include/asm/arch-davinci/spl.h | 28 +++++ arch/arm/include/asm/arch-omap3/spl.h | 34 ++++++ arch/arm/include/asm/arch-omap4/spl.h | 35 ++++++ arch/arm/include/asm/arch-omap4/sys_proto.h | 1 - arch/arm/include/asm/arch-omap5/spl.h | 35 ++++++ arch/arm/include/asm/arch-omap5/sys_proto.h | 1 - arch/arm/include/asm/omap_common.h | 77 -------------- arch/arm/include/asm/spl.h | 29 +++++ board/davinci/da8xxevm/README.da850_am18xxevm | 53 ++++++++++ board/overo/overo.c | 10 -- common/spl/Makefile | 37 +++++++ .../arm/cpu/armv7/omap-common => common/spl}/spl.c | 43 ++++---- .../armv7/omap-common => common/spl}/spl_ymodem.c | 3 +- doc/README.SPL | 1 - drivers/mmc/Makefile | 5 + .../armv7/omap-common => drivers/mmc}/spl_mmc.c | 24 ++--- drivers/mtd/nand/Makefile | 7 +- drivers/mtd/nand/nand_spl_load.c | 89 +++++++++++----- drivers/mtd/spi/spi_spl_load.c | 23 ++-- include/configs/am335x_evm.h | 1 + include/configs/am3517_crane.h | 2 + include/configs/am3517_evm.h | 2 + include/configs/cam_enc_4xx.h | 3 +- include/configs/da850evm.h | 5 + include/configs/devkit8000.h | 1 + include/configs/hawkboard.h | 3 +- include/configs/mcx.h | 2 + include/configs/omap3_beagle.h | 1 + include/configs/omap3_evm_common.h | 1 + include/configs/omap3_overo.h | 1 + include/configs/omap4_common.h | 2 + include/configs/omap5_evm.h | 2 + include/configs/tam3517-common.h | 2 + include/configs/tricorder.h | 1 + include/spl.h | 69 ++++++++++++ spl/Makefile | 1 + 48 files changed, 588 insertions(+), 355 deletions(-) create mode 100644 arch/arm/cpu/arm926ejs/davinci/config.mk delete mode 100644 arch/arm/cpu/armv7/omap-common/spl_nand.c create mode 100644 arch/arm/include/asm/arch-am33xx/spl.h create mode 100644 arch/arm/include/asm/arch-davinci/spl.h create mode 100644 arch/arm/include/asm/arch-omap3/spl.h create mode 100644 arch/arm/include/asm/arch-omap4/spl.h create mode 100644 arch/arm/include/asm/arch-omap5/spl.h create mode 100644 arch/arm/include/asm/spl.h create mode 100644 board/davinci/da8xxevm/README.da850_am18xxevm create mode 100644 common/spl/Makefile rename {arch/arm/cpu/armv7/omap-common => common/spl}/spl.c (87%) rename {arch/arm/cpu/armv7/omap-common => common/spl}/spl_ymodem.c (96%) rename {arch/arm/cpu/armv7/omap-common => drivers/mmc}/spl_mmc.c (91%) create mode 100644 include/spl.h