mmc: add a Kconfig option to enable the support for MMC write operations

This allows using CONFIG_IS_ENABLED(MMC_WRITE) to compile out code
needed only if write support is required.
The option is added for u-boot and for SPL

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
Jean-Jacques Hiblot
2018-01-04 15:23:32 +01:00
committed by Jaehoon Chung
parent 58a6fb7b04
commit d6400c3f85
6 changed files with 21 additions and 7 deletions

View File

@ -110,7 +110,7 @@ static ulong get_load_addr(void)
/******************************************************************** /********************************************************************
* eMMC services * eMMC services
********************************************************************/ ********************************************************************/
#ifdef CONFIG_DM_MMC #if CONFIG_IS_ENABLED(DM_MMC) && CONFIG_IS_ENABLED(MMC_WRITE)
static int mmc_burn_image(size_t image_size) static int mmc_burn_image(size_t image_size)
{ {
struct mmc *mmc; struct mmc *mmc;

View File

@ -301,6 +301,7 @@ config SPL_ENV_SUPPORT
config SPL_SAVEENV config SPL_SAVEENV
bool "Support save environment" bool "Support save environment"
depends on SPL_ENV_SUPPORT depends on SPL_ENV_SUPPORT
select SPL_MMC_WRITE if ENV_IS_IN_MMC
help help
Enable save environment support in SPL after setenv. By default Enable save environment support in SPL after setenv. By default
the saveenv option is not provided in SPL, but some boards need the saveenv option is not provided in SPL, but some boards need
@ -415,6 +416,14 @@ config SPL_MMC_SUPPORT
this option to build the drivers in drivers/mmc as part of an SPL this option to build the drivers in drivers/mmc as part of an SPL
build. build.
config SPL_MMC_WRITE
bool "MMC/SD/SDIO card support for write operations in SPL"
depends on SPL_MMC_SUPPORT
default n
help
Enable write access to MMC and SD Cards in SPL
config SPL_MPC8XXX_INIT_DDR_SUPPORT config SPL_MPC8XXX_INIT_DDR_SUPPORT
bool "Support MPC8XXX DDR init" bool "Support MPC8XXX DDR init"
help help

View File

@ -10,6 +10,13 @@ config MMC
If you want MMC/SD/SDIO support, you should say Y here and If you want MMC/SD/SDIO support, you should say Y here and
also to your specific host controller driver. also to your specific host controller driver.
config MMC_WRITE
bool "support for MMC/SD write operations"
depends on MMC
default y
help
Enable write access to MMC and SD Cards
config DM_MMC config DM_MMC
bool "Enable MMC controllers using Driver Model" bool "Enable MMC controllers using Driver Model"
depends on DM depends on DM

View File

@ -7,6 +7,7 @@
obj-y += mmc.o obj-y += mmc.o
obj-$(CONFIG_$(SPL_)DM_MMC) += mmc-uclass.o obj-$(CONFIG_$(SPL_)DM_MMC) += mmc-uclass.o
obj-$(CONFIG_$(SPL_)MMC_WRITE) += mmc_write.o
ifndef CONFIG_$(SPL_)BLK ifndef CONFIG_$(SPL_)BLK
obj-y += mmc_legacy.o obj-y += mmc_legacy.o
@ -16,9 +17,6 @@ obj-$(CONFIG_SUPPORT_EMMC_BOOT) += mmc_boot.o
ifdef CONFIG_SPL_BUILD ifdef CONFIG_SPL_BUILD
obj-$(CONFIG_SPL_MMC_BOOT) += fsl_esdhc_spl.o obj-$(CONFIG_SPL_MMC_BOOT) += fsl_esdhc_spl.o
obj-$(CONFIG_SPL_SAVEENV) += mmc_write.o
else
obj-y += mmc_write.o
endif endif
obj-$(CONFIG_ARM_PL180_MMCI) += arm_pl180_mmci.o obj-$(CONFIG_ARM_PL180_MMCI) += arm_pl180_mmci.o

View File

@ -370,7 +370,7 @@ static int mmc_blk_probe(struct udevice *dev)
static const struct blk_ops mmc_blk_ops = { static const struct blk_ops mmc_blk_ops = {
.read = mmc_bread, .read = mmc_bread,
#ifndef CONFIG_SPL_BUILD #if CONFIG_IS_ENABLED(MMC_WRITE)
.write = mmc_bwrite, .write = mmc_bwrite,
.erase = mmc_berase, .erase = mmc_berase,
#endif #endif

View File

@ -28,7 +28,7 @@ ulong mmc_bread(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt,
void *dst); void *dst);
#endif #endif
#if !(defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_SAVEENV)) #if CONFIG_IS_ENABLED(MMC_WRITE)
#if CONFIG_IS_ENABLED(BLK) #if CONFIG_IS_ENABLED(BLK)
ulong mmc_bwrite(struct udevice *dev, lbaint_t start, lbaint_t blkcnt, ulong mmc_bwrite(struct udevice *dev, lbaint_t start, lbaint_t blkcnt,
@ -40,7 +40,7 @@ ulong mmc_bwrite(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt,
ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt); ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt);
#endif #endif
#else /* CONFIG_SPL_BUILD and CONFIG_SPL_SAVEENV is not defined */ #else /* CONFIG_SPL_MMC_WRITE is not defined */
/* declare dummies to reduce code size. */ /* declare dummies to reduce code size. */