SPL mmc refactor and alternate boot device feature
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest13 patches 0 repliesNew
- v213 patches 0 repliesSuperseded
- v10 of 12 patches 0 repliesSuperseded
Changes in v4 from the cover letter
- Rebased over current mainline. Rerun compile test for arm and powerpc
- Fixed typo in a commit message
- Moved announce_boot_device() code to after #ifndef BOOT_DEVICE_NONE
- Replaced one puts with printf
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/13 | spl: nand: remove code duplicationcommon/ | +16 | 2 replies | |
| 2/13 | spl: mmc: add break statements in spl_mmc_load_image()common/ | +7 | 1 reply | |
| 3/13 | spl: mmc: refactor device location code to its own functioncommon/ | +55 | 2 replies | |
| 4/13 | spl: mmc: remove #ifdef CONFIG_SPL_OS_BOOT checkcommon/ common/ common/ | +21 | 1 reply | |
| 5/13 | spl: mmc: get rid of #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION checkcommon/ | +9 | 1 reply | |
| 6/13 | spl: mmc: move fs boot into its own functioncommon/ | +51 | 1 reply | |
| 7/13 | spl: mmc: get rid of emmc boot code duplicationcommon/ | +18 | 1 reply | |
| 8/13 | spl: change return values of spl_*_load_image()arch/ arch/ common/ +10 more | +123 | 1 reply | |
| 9/13 | common: spl: move image load to its own functioncommon/ | +50 | 1 reply | |
| 10/13 | spl: add support for alternative boot devicecommon/ | +29 | 3 replies | |
| 10/13 | spl: add support for alternative boot device | +0 | 4 replies | |
| 11/13 | spl: announce boot devicescommon/ | +79 | 2 replies | |
| 12/13 | arm: mx6: cm-fx6: define fallback boot devices for splboard/ include/ | +10 | 1 reply | |
| 13/13 | spl: mmc: add support for BOOT_DEVICE_MMC2arch/ common/ common/ +1 more | +36 | 1 reply |
Reviews trailers per patch
All 14 patches have a Reviewed-by or Acked-by.
| Patch | Scott Wood | Simon Glass | Tom Rini | Stefano Babic | Heiko Schocher |
|---|---|---|---|---|---|
| 1/13 | A-b | R-b | R-b | ||
| 2/13 | R-b | R-b | |||
| 3/13 | R-b | R-b | |||
| 4/13 | R-b | R-b | |||
| 5/13 | R-b | R-b | |||
| 6/13 | R-b | R-b | |||
| 7/13 | R-b | R-b | |||
| 8/13 | R-b | R-b | |||
| 9/13 | R-b | R-b | |||
| 10/13 | R-b | R-b | |||
| 10/13 | R-b | R-b | |||
| 11/13 | R-b | R-b | |||
| 12/13 | R-b | R-b | |||
| 13/13 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.
Cover letter [U-Boot] [PATCH V4 00/13] SPL mmc refactor and alternate boot device feature
This series has two parts: patches 1-7 perform refactors aimed at reducing the ifdef complexity of SPL mmc code (and some nand as well). This refactor also addresses a few design issues I noticed while working on the refactor.
Image size comparison for arm modules can be seen here:
http://patchwork.ozlabs.org/patch/534387/
Since the changes in V2 are minimal, the V1 results should still be valid for the V2 as well.
The rest of the series introduces a new SPL feature that allows board code to define a list of boot devices that SPL will try before failing (instead of the only one device it attempts now). This feature is useful for implementing fallbacks, as well as reacting to bootROM sequences. For example:
On CM-FX6, if boot from the alternate boot device (MMC) fails, the bootROM proceeds to try boot from SPI flash. If the SPI flash boot is succesful, SPL will still try to load U-Boot from MMC, instead of from the actual boot device SPI flash), and probably fail and hang. The alternate boot feature makes it possible for SPL to follow the MMC boot attempt with boot from the SPI flash. The CM-FX6 based miniature PC Utilite depends on this capability for its SPI flash boot to work, since SPI flash boot is only attempted if MMC boot fails.
Finally, patch 13 makes SPL look at the specific BOOT_DEVICE_MMCx, and search for the correct mmc device, instead of always going for mmc0.
This series was compile tested for arm and powerpc (patches 1-12). Patch 13 compile tested for sunxi.
Tested on CM-FX6.
Changes in V4:
- Rebased over current mainline. Rerun compile test for arm and powerpc
- Fixed typo in a commit message
- Moved announce_boot_device() code to after #ifndef BOOT_DEVICE_NONE
- Replaced one puts with printf
Changes in V3:
- Added documentation for spl_board_load_image().
- Reworked announce_boot_device() to make the code less repititive by utilizing a table of boot_device --> name.
Changes in V2:
- Per request I went over the changes to see if they should cause documentation updates or board updates, but found none to be necessary.
- Slight modification in patch 2 (and consequentially patch 8): removal of hang() in default switch case, and enclosing of default case in #ifdef LIBCONFIG to avoid compiler complaints if LIBCONFIG support not compiled in.
- Patch 13 is a new patch which makes SPL look at the value of BOOT_DEVICE_MMCx instead of always working with mmc0. A hack in sunxi boards that attempted to circumvent this issue is thus removed.
- Rebased over current mainline.
Nikita Kiryanov (13):
spl: nand: remove code duplication
spl: mmc: add break statements in spl_mmc_load_image()
spl: mmc: refactor device location code to its own function
spl: mmc: remove #ifdef CONFIG_SPL_OS_BOOT check
spl: mmc: get rid of #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
check
spl: mmc: move fs boot into its own function
spl: mmc: get rid of emmc boot code duplication
spl: change return values of spl_*_load_image()
common: spl: move image load to its own function
spl: add support for alternative boot device
spl: announce boot devices
arm: mx6: cm-fx6: define fallback boot devices for spl
spl: mmc: add support for BOOT_DEVICE_MMC2
arch/arm/cpu/armv7/sunxi/board.c | 14 +- arch/arm/include/asm/spl.h | 10 +- board/compulab/cm_fx6/spl.c | 19 +-- common/spl/spl.c | 194 +++++++++++++++++++------- common/spl/spl_ext.c | 6 + common/spl/spl_fat.c | 6 + common/spl/spl_mmc.c | 290 ++++++++++++++++++++++++--------------- common/spl/spl_nand.c | 47 ++++--- common/spl/spl_net.c | 9 +- common/spl/spl_nor.c | 6 +- common/spl/spl_onenand.c | 4 +- common/spl/spl_sata.c | 11 +- common/spl/spl_usb.c | 17 ++- common/spl/spl_ymodem.c | 5 +- drivers/mtd/spi/spi_spl_load.c | 17 ++- include/configs/cm_fx6.h | 1 - include/spl.h | 18 +-- 17 files changed, 446 insertions(+), 228 deletions(-)
Signature · 1 line
1.9.1