mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
mmc: compile out erase and write mmc commands if write operations are not enabled
Also remove erase_grp_size and write_bl_len from struct mmc as they are not used anymore. On ARM, removing them saves about 100 bytes of code space in SPL. Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
parent
5b2e72f327
commit
e6fa5a5461
3 changed files with 24 additions and 2 deletions
|
@ -45,8 +45,10 @@ static void print_mmcinfo(struct mmc *mmc)
|
||||||
printf("Bus Width: %d-bit%s\n", mmc->bus_width,
|
printf("Bus Width: %d-bit%s\n", mmc->bus_width,
|
||||||
mmc->ddr_mode ? " DDR" : "");
|
mmc->ddr_mode ? " DDR" : "");
|
||||||
|
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
puts("Erase Group Size: ");
|
puts("Erase Group Size: ");
|
||||||
print_size(((u64)mmc->erase_grp_size) << 9, "\n");
|
print_size(((u64)mmc->erase_grp_size) << 9, "\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!IS_SD(mmc) && mmc->version >= MMC_VERSION_4_41) {
|
if (!IS_SD(mmc) && mmc->version >= MMC_VERSION_4_41) {
|
||||||
bool has_enh = (mmc->part_support & ENHNCD_SUPPORT) != 0;
|
bool has_enh = (mmc->part_support & ENHNCD_SUPPORT) != 0;
|
||||||
|
@ -302,6 +304,8 @@ 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)
|
||||||
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[])
|
||||||
{
|
{
|
||||||
|
@ -360,6 +364,8 @@ static int do_mmc_erase(cmd_tbl_t *cmdtp, int flag,
|
||||||
|
|
||||||
return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
|
return (n == cnt) ? CMD_RET_SUCCESS : CMD_RET_FAILURE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int do_mmc_rescan(cmd_tbl_t *cmdtp, int flag,
|
static int do_mmc_rescan(cmd_tbl_t *cmdtp, int flag,
|
||||||
int argc, char * const argv[])
|
int argc, char * const argv[])
|
||||||
{
|
{
|
||||||
|
@ -792,8 +798,10 @@ static int do_mmc_bkops_enable(cmd_tbl_t *cmdtp, int flag,
|
||||||
static cmd_tbl_t cmd_mmc[] = {
|
static cmd_tbl_t cmd_mmc[] = {
|
||||||
U_BOOT_CMD_MKENT(info, 1, 0, do_mmcinfo, "", ""),
|
U_BOOT_CMD_MKENT(info, 1, 0, do_mmcinfo, "", ""),
|
||||||
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)
|
||||||
U_BOOT_CMD_MKENT(write, 4, 0, do_mmc_write, "", ""),
|
U_BOOT_CMD_MKENT(write, 4, 0, do_mmc_write, "", ""),
|
||||||
U_BOOT_CMD_MKENT(erase, 3, 0, do_mmc_erase, "", ""),
|
U_BOOT_CMD_MKENT(erase, 3, 0, do_mmc_erase, "", ""),
|
||||||
|
#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, "", ""),
|
||||||
|
|
|
@ -2066,9 +2066,11 @@ static int mmc_startup_v4(struct mmc *mmc)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ext_csd[EXT_CSD_ERASE_GROUP_DEF] & 0x01) {
|
if (ext_csd[EXT_CSD_ERASE_GROUP_DEF] & 0x01) {
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
/* Read out group size from ext_csd */
|
/* Read out group size from ext_csd */
|
||||||
mmc->erase_grp_size =
|
mmc->erase_grp_size =
|
||||||
ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] * 1024;
|
ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] * 1024;
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* if high capacity and partition setting completed
|
* if high capacity and partition setting completed
|
||||||
* SEC_COUNT is valid even if it is smaller than 2 GiB
|
* SEC_COUNT is valid even if it is smaller than 2 GiB
|
||||||
|
@ -2082,7 +2084,9 @@ static int mmc_startup_v4(struct mmc *mmc)
|
||||||
capacity *= MMC_MAX_BLOCK_LEN;
|
capacity *= MMC_MAX_BLOCK_LEN;
|
||||||
mmc->capacity_user = capacity;
|
mmc->capacity_user = capacity;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
|
else {
|
||||||
/* Calculate the group size from the csd value. */
|
/* Calculate the group size from the csd value. */
|
||||||
int erase_gsz, erase_gmul;
|
int erase_gsz, erase_gmul;
|
||||||
|
|
||||||
|
@ -2091,7 +2095,7 @@ static int mmc_startup_v4(struct mmc *mmc)
|
||||||
mmc->erase_grp_size = (erase_gsz + 1)
|
mmc->erase_grp_size = (erase_gsz + 1)
|
||||||
* (erase_gmul + 1);
|
* (erase_gmul + 1);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
mmc->hc_wp_grp_size = 1024
|
mmc->hc_wp_grp_size = 1024
|
||||||
* ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE]
|
* ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE]
|
||||||
* ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
|
* ext_csd[EXT_CSD_HC_WP_GRP_SIZE];
|
||||||
|
@ -2222,11 +2226,13 @@ static int mmc_startup(struct mmc *mmc)
|
||||||
|
|
||||||
mmc->dsr_imp = ((cmd.response[1] >> 12) & 0x1);
|
mmc->dsr_imp = ((cmd.response[1] >> 12) & 0x1);
|
||||||
mmc->read_bl_len = 1 << ((cmd.response[1] >> 16) & 0xf);
|
mmc->read_bl_len = 1 << ((cmd.response[1] >> 16) & 0xf);
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
|
|
||||||
if (IS_SD(mmc))
|
if (IS_SD(mmc))
|
||||||
mmc->write_bl_len = mmc->read_bl_len;
|
mmc->write_bl_len = mmc->read_bl_len;
|
||||||
else
|
else
|
||||||
mmc->write_bl_len = 1 << ((cmd.response[3] >> 22) & 0xf);
|
mmc->write_bl_len = 1 << ((cmd.response[3] >> 22) & 0xf);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (mmc->high_capacity) {
|
if (mmc->high_capacity) {
|
||||||
csize = (mmc->csd[1] & 0x3f) << 16
|
csize = (mmc->csd[1] & 0x3f) << 16
|
||||||
|
@ -2248,8 +2254,10 @@ static int mmc_startup(struct mmc *mmc)
|
||||||
if (mmc->read_bl_len > MMC_MAX_BLOCK_LEN)
|
if (mmc->read_bl_len > MMC_MAX_BLOCK_LEN)
|
||||||
mmc->read_bl_len = MMC_MAX_BLOCK_LEN;
|
mmc->read_bl_len = MMC_MAX_BLOCK_LEN;
|
||||||
|
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
if (mmc->write_bl_len > MMC_MAX_BLOCK_LEN)
|
if (mmc->write_bl_len > MMC_MAX_BLOCK_LEN)
|
||||||
mmc->write_bl_len = MMC_MAX_BLOCK_LEN;
|
mmc->write_bl_len = MMC_MAX_BLOCK_LEN;
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((mmc->dsr_imp) && (0xffffffff != mmc->dsr)) {
|
if ((mmc->dsr_imp) && (0xffffffff != mmc->dsr)) {
|
||||||
cmd.cmdidx = MMC_CMD_SET_DSR;
|
cmd.cmdidx = MMC_CMD_SET_DSR;
|
||||||
|
@ -2273,7 +2281,9 @@ static int mmc_startup(struct mmc *mmc)
|
||||||
/*
|
/*
|
||||||
* For SD, its erase group is always one sector
|
* For SD, its erase group is always one sector
|
||||||
*/
|
*/
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
mmc->erase_grp_size = 1;
|
mmc->erase_grp_size = 1;
|
||||||
|
#endif
|
||||||
mmc->part_config = MMCPART_NOAVAILABLE;
|
mmc->part_config = MMCPART_NOAVAILABLE;
|
||||||
|
|
||||||
err = mmc_startup_v4(mmc);
|
err = mmc_startup_v4(mmc);
|
||||||
|
@ -2304,7 +2314,9 @@ static int mmc_startup(struct mmc *mmc)
|
||||||
/* Fix the block length for DDR mode */
|
/* Fix the block length for DDR mode */
|
||||||
if (mmc->ddr_mode) {
|
if (mmc->ddr_mode) {
|
||||||
mmc->read_bl_len = MMC_MAX_BLOCK_LEN;
|
mmc->read_bl_len = MMC_MAX_BLOCK_LEN;
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
mmc->write_bl_len = MMC_MAX_BLOCK_LEN;
|
mmc->write_bl_len = MMC_MAX_BLOCK_LEN;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fill in device description */
|
/* fill in device description */
|
||||||
|
|
|
@ -585,8 +585,10 @@ struct mmc {
|
||||||
uint tran_speed;
|
uint tran_speed;
|
||||||
uint legacy_speed; /* speed for the legacy mode provided by the card */
|
uint legacy_speed; /* speed for the legacy mode provided by the card */
|
||||||
uint read_bl_len;
|
uint read_bl_len;
|
||||||
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
uint write_bl_len;
|
uint write_bl_len;
|
||||||
uint erase_grp_size; /* in 512-byte sectors */
|
uint erase_grp_size; /* in 512-byte sectors */
|
||||||
|
#endif
|
||||||
uint hc_wp_grp_size; /* in 512-byte sectors */
|
uint hc_wp_grp_size; /* in 512-byte sectors */
|
||||||
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||||
struct sd_ssr ssr; /* SD status register */
|
struct sd_ssr ssr; /* SD status register */
|
||||||
|
|
Loading…
Reference in a new issue