mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
mmc: read ssr only if MMC write support is enabled
The content of ssr is useful only for erase operations. on ARM, removing sd_read_ssr() saves around 300 bytes. Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
This commit is contained in:
parent
d6400c3f85
commit
5b2e72f327
2 changed files with 16 additions and 11 deletions
|
@ -22,14 +22,6 @@
|
|||
#include <div64.h>
|
||||
#include "mmc_private.h"
|
||||
|
||||
static const unsigned int sd_au_size[] = {
|
||||
0, SZ_16K / 512, SZ_32K / 512,
|
||||
SZ_64K / 512, SZ_128K / 512, SZ_256K / 512,
|
||||
SZ_512K / 512, SZ_1M / 512, SZ_2M / 512,
|
||||
SZ_4M / 512, SZ_8M / 512, (SZ_8M + SZ_4M) / 512,
|
||||
SZ_16M / 512, (SZ_16M + SZ_8M) / 512, SZ_32M / 512, SZ_64M / 512,
|
||||
};
|
||||
|
||||
static int mmc_set_signal_voltage(struct mmc *mmc, uint signal_voltage);
|
||||
static int mmc_power_cycle(struct mmc *mmc);
|
||||
static int mmc_select_mode_and_width(struct mmc *mmc, uint card_caps);
|
||||
|
@ -1376,8 +1368,17 @@ int sd_select_bus_width(struct mmc *mmc, int w)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||
static int sd_read_ssr(struct mmc *mmc)
|
||||
{
|
||||
static const unsigned int sd_au_size[] = {
|
||||
0, SZ_16K / 512, SZ_32K / 512,
|
||||
SZ_64K / 512, SZ_128K / 512, SZ_256K / 512,
|
||||
SZ_512K / 512, SZ_1M / 512, SZ_2M / 512,
|
||||
SZ_4M / 512, SZ_8M / 512, (SZ_8M + SZ_4M) / 512,
|
||||
SZ_16M / 512, (SZ_16M + SZ_8M) / 512, SZ_32M / 512,
|
||||
SZ_64M / 512,
|
||||
};
|
||||
int err, i;
|
||||
struct mmc_cmd cmd;
|
||||
ALLOC_CACHE_ALIGN_BUFFER(uint, ssr, 16);
|
||||
|
@ -1431,7 +1432,7 @@ retry_ssr:
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
/* frequency bases */
|
||||
/* divided by 10 to be nice to platforms without floating point */
|
||||
static const int fbase[] = {
|
||||
|
@ -1689,12 +1690,14 @@ static int sd_select_mode_and_width(struct mmc *mmc, uint card_caps)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||
err = sd_read_ssr(mmc);
|
||||
if (!err)
|
||||
pr_warn("unable to read ssr\n");
|
||||
#endif
|
||||
if (!err)
|
||||
return 0;
|
||||
|
||||
pr_warn("bad ssr\n");
|
||||
|
||||
error:
|
||||
/* revert to a safer bus speed */
|
||||
mmc_select_mode(mmc, SD_LEGACY);
|
||||
|
|
|
@ -588,7 +588,9 @@ struct mmc {
|
|||
uint write_bl_len;
|
||||
uint erase_grp_size; /* in 512-byte sectors */
|
||||
uint hc_wp_grp_size; /* in 512-byte sectors */
|
||||
#if CONFIG_IS_ENABLED(MMC_WRITE)
|
||||
struct sd_ssr ssr; /* SD status register */
|
||||
#endif
|
||||
u64 capacity;
|
||||
u64 capacity_user;
|
||||
u64 capacity_boot;
|
||||
|
|
Loading…
Reference in a new issue