The Android sparse-image writer is selected and configured only through U-Boot-proper symbols. An SPL storage service therefore cannot reuse it without either pulling it into every SPL build or interpreting the U-Boot-proper fill-buffer setting.
Add opt-in SPL symbols, build the writer through the phase-aware object rule and read the matching phase value with CONFIG_VAL(). Existing U-Boot-proper builds continue to use IMAGE_SPARSE and retain the same fill-buffer default. Signed-off-by: Julien Masson <[email protected]> Signed-off-by: Vitor Sato Eschholz <[email protected]> Signed-off-by: Carlo Caione <[email protected]> --- lib/Kconfig | 11 +++++++++++ lib/Makefile | 3 ++- lib/image-sparse.c | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/Kconfig b/lib/Kconfig index 24e55ade4d3..07ee3c88fd3 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -205,6 +205,9 @@ config VPL_STRTO config IMAGE_SPARSE bool +config SPL_IMAGE_SPARSE + bool + config IMAGE_SPARSE_FILLBUF_SIZE hex "Android sparse image CHUNK_TYPE_FILL buffer size" default 0x80000 @@ -213,6 +216,14 @@ config IMAGE_SPARSE_FILLBUF_SIZE Set the size of the fill buffer used when processing CHUNK_TYPE_FILL chunks. +config SPL_IMAGE_SPARSE_FILLBUF_SIZE + hex "Android sparse image fill buffer size in SPL" + default 0x80000 + depends on SPL_IMAGE_SPARSE + help + Set the size of the fill buffer used when processing CHUNK_TYPE_FILL + chunks in SPL. + config USE_PRIVATE_LIBGCC bool "Use private libgcc" depends on HAVE_PRIVATE_LIBGCC diff --git a/lib/Makefile b/lib/Makefile index 222378a8531..014fda82860 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -44,7 +44,6 @@ obj-$(CONFIG_GENERATE_SMBIOS_TABLE) += smbios.o endif obj-$(CONFIG_SMBIOS_PARSER) += smbios-parser.o -obj-$(CONFIG_IMAGE_SPARSE) += image-sparse.o obj-y += ldiv.o obj-$(CONFIG_XXHASH) += xxhash.o obj-y += net_utils.o @@ -56,6 +55,8 @@ obj-y += list_sort.o obj-$(CONFIG_PMBUS) += pmbus.o endif +obj-$(CONFIG_$(PHASE_)IMAGE_SPARSE) += image-sparse.o + obj-$(CONFIG_$(PHASE_)TPM) += tpm-common.o ifeq ($(CONFIG_$(PHASE_)TPM),y) obj-$(CONFIG_TPM) += tpm_api.o diff --git a/lib/image-sparse.c b/lib/image-sparse.c index 09225692e9b..48e5d8ee869 100644 --- a/lib/image-sparse.c +++ b/lib/image-sparse.c @@ -125,7 +125,7 @@ int write_sparse_image(struct sparse_storage *info, int i; int j; - fill_buf_num_blks = CONFIG_IMAGE_SPARSE_FILLBUF_SIZE / info->blksz; + fill_buf_num_blks = CONFIG_VAL(IMAGE_SPARSE_FILLBUF_SIZE) / info->blksz; /* Read and skip over sparse image header */ sparse_header = (sparse_header_t *)data; -- 2.55.0
