mmc: Separate "mmc swrite" from fastboot

Introduce CONFIG_IMAGE_SPARSE and CONFIG_CMD_MMC_SWRITE so the "mmc
swrite" command is separated from the fastboot code.

Move image-sparse from common to lib so it's clear it's library code.

Rename CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE to CONFIG_IMAGE_SPARSE_FILLBUF_SIZE
and migrate it to Kconfig.

Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Acked-by: Jassi Brar <jaswinder.singh@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
lime2-spi
Alex Kiernan 6 years ago committed by Marek Vasut
parent 4085b90303
commit c232d14d11
  1. 8
      cmd/Kconfig
  2. 12
      cmd/mmc.c
  3. 1
      common/Makefile
  4. 1
      drivers/fastboot/Kconfig
  5. 11
      lib/Kconfig
  6. 1
      lib/Makefile
  7. 6
      lib/image-sparse.c
  8. 1
      scripts/config_whitelist.txt

@ -833,6 +833,14 @@ config CMD_MMC_RPMB
Enable the commands for reading, writing and programming the Enable the commands for reading, writing and programming the
key for the Replay Protection Memory Block partition in eMMC. key for the Replay Protection Memory Block partition in eMMC.
config CMD_MMC_SWRITE
bool "mmc swrite"
depends on CMD_MMC && MMC_WRITE
select IMAGE_SPARSE
help
Enable support for the "mmc swrite" command to write Android sparse
images to eMMC.
config CMD_NAND config CMD_NAND
bool "nand" bool "nand"
default y if NAND_SUNXI default y if NAND_SUNXI

@ -308,8 +308,7 @@ static int do_mmc_read(cmd_tbl_t *cmdtp, int flag,
return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE; return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
} }
#if CONFIG_IS_ENABLED(MMC_WRITE) #if CONFIG_IS_ENABLED(CMD_MMC_SWRITE)
#if defined(CONFIG_FASTBOOT_FLASH)
static lbaint_t mmc_sparse_write(struct sparse_storage *info, lbaint_t blk, static lbaint_t mmc_sparse_write(struct sparse_storage *info, lbaint_t blk,
lbaint_t blkcnt, const void *buffer) lbaint_t blkcnt, const void *buffer)
{ {
@ -374,6 +373,7 @@ static int do_mmc_sparse_write(cmd_tbl_t *cmdtp, int flag,
} }
#endif #endif
#if CONFIG_IS_ENABLED(MMC_WRITE)
static int do_mmc_write(cmd_tbl_t *cmdtp, int flag, static int do_mmc_write(cmd_tbl_t *cmdtp, int flag,
int argc, char * const argv[]) int argc, char * const argv[])
{ {
@ -868,11 +868,11 @@ static cmd_tbl_t cmd_mmc[] = {
U_BOOT_CMD_MKENT(read, 4, 1, do_mmc_read, "", ""), U_BOOT_CMD_MKENT(read, 4, 1, do_mmc_read, "", ""),
#if CONFIG_IS_ENABLED(MMC_WRITE) #if CONFIG_IS_ENABLED(MMC_WRITE)
U_BOOT_CMD_MKENT(write, 4, 0, do_mmc_write, "", ""), U_BOOT_CMD_MKENT(write, 4, 0, do_mmc_write, "", ""),
#if defined(CONFIG_FASTBOOT_FLASH)
U_BOOT_CMD_MKENT(swrite, 3, 0, do_mmc_sparse_write, "", ""),
#endif
U_BOOT_CMD_MKENT(erase, 3, 0, do_mmc_erase, "", ""), U_BOOT_CMD_MKENT(erase, 3, 0, do_mmc_erase, "", ""),
#endif #endif
#if CONFIG_IS_ENABLED(CMD_MMC_SWRITE)
U_BOOT_CMD_MKENT(swrite, 3, 0, do_mmc_sparse_write, "", ""),
#endif
U_BOOT_CMD_MKENT(rescan, 1, 1, do_mmc_rescan, "", ""), U_BOOT_CMD_MKENT(rescan, 1, 1, do_mmc_rescan, "", ""),
U_BOOT_CMD_MKENT(part, 1, 1, do_mmc_part, "", ""), U_BOOT_CMD_MKENT(part, 1, 1, do_mmc_part, "", ""),
U_BOOT_CMD_MKENT(dev, 3, 0, do_mmc_dev, "", ""), U_BOOT_CMD_MKENT(dev, 3, 0, do_mmc_dev, "", ""),
@ -927,7 +927,7 @@ U_BOOT_CMD(
"info - display info of the current MMC device\n" "info - display info of the current MMC device\n"
"mmc read addr blk# cnt\n" "mmc read addr blk# cnt\n"
"mmc write addr blk# cnt\n" "mmc write addr blk# cnt\n"
#if defined(CONFIG_FASTBOOT_FLASH) #if CONFIG_IS_ENABLED(CMD_MMC_SWRITE)
"mmc swrite addr blk#\n" "mmc swrite addr blk#\n"
#endif #endif
"mmc erase blk# cnt\n" "mmc erase blk# cnt\n"

@ -29,7 +29,6 @@ obj-$(CONFIG_CMD_BOOTI) += bootm.o bootm_os.o
obj-$(CONFIG_CMD_BEDBUG) += bedbug.o obj-$(CONFIG_CMD_BEDBUG) += bedbug.o
obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += fdt_support.o obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += fdt_support.o
obj-$(CONFIG_FASTBOOT_FLASH) += image-sparse.o
obj-$(CONFIG_MII) += miiphyutil.o obj-$(CONFIG_MII) += miiphyutil.o
obj-$(CONFIG_CMD_MII) += miiphyutil.o obj-$(CONFIG_CMD_MII) += miiphyutil.o
obj-$(CONFIG_PHYLIB) += miiphyutil.o obj-$(CONFIG_PHYLIB) += miiphyutil.o

@ -57,6 +57,7 @@ config FASTBOOT_FLASH
bool "Enable FASTBOOT FLASH command" bool "Enable FASTBOOT FLASH command"
default y if ARCH_SUNXI default y if ARCH_SUNXI
depends on MMC || (NAND && CMD_MTDPARTS) depends on MMC || (NAND && CMD_MTDPARTS)
select IMAGE_SPARSE
help help
The fastboot protocol includes a "flash" command for writing The fastboot protocol includes a "flash" command for writing
the downloaded image to a non-volatile storage device. Define the downloaded image to a non-volatile storage device. Define

@ -61,6 +61,17 @@ config SPL_STRTO
config TPL_STRTO config TPL_STRTO
bool bool
config IMAGE_SPARSE
bool
config IMAGE_SPARSE_FILLBUF_SIZE
hex "Android sparse image CHUNK_TYPE_FILL buffer size"
default 0x80000
depends on IMAGE_SPARSE
help
Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
chunks.
config USE_PRIVATE_LIBGCC config USE_PRIVATE_LIBGCC
bool "Use private libgcc" bool "Use private libgcc"
depends on HAVE_PRIVATE_LIBGCC depends on HAVE_PRIVATE_LIBGCC

@ -29,6 +29,7 @@ obj-$(CONFIG_FIT) += fdtdec_common.o
obj-$(CONFIG_TEST_FDTDEC) += fdtdec_test.o obj-$(CONFIG_TEST_FDTDEC) += fdtdec_test.o
obj-$(CONFIG_GZIP_COMPRESSED) += gzip.o obj-$(CONFIG_GZIP_COMPRESSED) += gzip.o
obj-$(CONFIG_GENERATE_SMBIOS_TABLE) += smbios.o obj-$(CONFIG_GENERATE_SMBIOS_TABLE) += smbios.o
obj-$(CONFIG_IMAGE_SPARSE) += image-sparse.o
obj-y += initcall.o obj-y += initcall.o
obj-$(CONFIG_LMB) += lmb.o obj-$(CONFIG_LMB) += lmb.o
obj-y += ldiv.o obj-y += ldiv.o

@ -44,10 +44,6 @@
#include <linux/math64.h> #include <linux/math64.h>
#ifndef CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE
#define CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE (1024 * 512)
#endif
static void default_log(const char *ignored, char *response) {} static void default_log(const char *ignored, char *response) {}
int write_sparse_image(struct sparse_storage *info, int write_sparse_image(struct sparse_storage *info,
@ -69,7 +65,7 @@ int write_sparse_image(struct sparse_storage *info,
int i; int i;
int j; int j;
fill_buf_num_blks = CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE / info->blksz; fill_buf_num_blks = CONFIG_IMAGE_SPARSE_FILLBUF_SIZE / info->blksz;
/* Read and skip over sparse image header */ /* Read and skip over sparse image header */
sparse_header = (sparse_header_t *)data; sparse_header = (sparse_header_t *)data;

@ -589,7 +589,6 @@ CONFIG_EXYNOS_RELOCATE_CODE_BASE
CONFIG_EXYNOS_SPL CONFIG_EXYNOS_SPL
CONFIG_EXYNOS_TMU CONFIG_EXYNOS_TMU
CONFIG_FACTORYSET CONFIG_FACTORYSET
CONFIG_FASTBOOT_FLASH_FILLBUF_SIZE
CONFIG_FAST_FLASH_BIT CONFIG_FAST_FLASH_BIT
CONFIG_FB_ADDR CONFIG_FB_ADDR
CONFIG_FB_BACKLIGHT CONFIG_FB_BACKLIGHT

Loading…
Cancel
Save