[U-Boot] [PATCH 1/1] arm: mmc: omap: spl size reduction by removing write/erase ops

Balaji T K balajitk at ti.com
Thu Feb 2 14:04:36 CET 2012


spl for OMAP4 does not use mmc read/write.
Add CONFIG_MMC_NO_ERASE, CONFIG_MMC_NO_WRITE to platforms where mmc
write/erase operation is not needed in spl.
Use these CONFIGS to remove write/erase code in mmc.c and omap_hsmmc.c
This reduces the spl size by ~1128 Bytes

Signed-off-by: Balaji T K <balajitk at ti.com>
---
 drivers/mmc/mmc.c              |   17 +++++++++++++++++
 drivers/mmc/omap_hsmmc.c       |    2 ++
 include/configs/omap4_common.h |    4 ++++
 3 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 21665ec..852c896 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -31,6 +31,7 @@
 #include <malloc.h>
 #include <linux/list.h>
 #include <div64.h>
+#include <asm/errno.h>
 
 /* Set block count limit because of 16 bit register limit on some hardware*/
 #ifndef CONFIG_SYS_MMC_MAX_BLK_COUNT
@@ -175,6 +176,7 @@ struct mmc *find_mmc_device(int dev_num)
 	return NULL;
 }
 
+#ifndef CONFIG_MMC_NO_ERASE
 static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt)
 {
 	struct mmc_cmd cmd;
@@ -256,7 +258,15 @@ mmc_berase(int dev_num, unsigned long start, lbaint_t blkcnt)
 
 	return blk;
 }
+#else
+static unsigned long
+mmc_berase(int dev_num, unsigned long start, lbaint_t blkcnt)
+{
+	return -ENOSYS;
+}
+#endif
 
+#ifndef CONFIG_MMC_NO_WRITE
 static ulong
 mmc_write_blocks(struct mmc *mmc, ulong start, lbaint_t blkcnt, const void*src)
 {
@@ -336,6 +346,13 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void*src)
 
 	return blkcnt;
 }
+#else
+static ulong
+mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt, const void *src)
+{
+	return -ENOSYS;
+}
+#endif
 
 int mmc_read_blocks(struct mmc *mmc, void *dst, ulong start, lbaint_t blkcnt)
 {
diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
index c38b9e6..ce36481 100644
--- a/drivers/mmc/omap_hsmmc.c
+++ b/drivers/mmc/omap_hsmmc.c
@@ -360,6 +360,7 @@ static int mmc_read_data(struct hsmmc *mmc_base, char *buf, unsigned int size)
 static int mmc_write_data(struct hsmmc *mmc_base, const char *buf,
 				unsigned int size)
 {
+#ifndef CONFIG_MMC_NO_WRITE
 	unsigned int *input_buf = (unsigned int *)buf;
 	unsigned int mmc_stat;
 	unsigned int count;
@@ -406,6 +407,7 @@ static int mmc_write_data(struct hsmmc *mmc_base, const char *buf,
 			break;
 		}
 	}
+#endif
 	return 0;
 }
 
diff --git a/include/configs/omap4_common.h b/include/configs/omap4_common.h
index a989721..0ae2ab3 100644
--- a/include/configs/omap4_common.h
+++ b/include/configs/omap4_common.h
@@ -109,6 +109,10 @@
 #define CONFIG_SYS_MMC_SET_DEV		1
 #define CONFIG_DOS_PARTITION		1
 
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_MMC_NO_WRITE		1
+#define CONFIG_MMC_NO_ERASE		1
+#endif
 
 /* USB */
 #define CONFIG_MUSB_UDC			1
-- 
1.7.0.4



More information about the U-Boot mailing list