mmc: set correct block size value in bfin sdh driver
Wait data transfer till the data end bit other than the data block end bit is set. Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
This commit is contained in:
parent
be9f643ae6
commit
282a82e8a1
|
|
@ -138,9 +138,9 @@ static int sdh_setup_data(struct mmc *mmc, struct mmc_data *data)
|
||||||
if (data->flags & MMC_DATA_WRITE)
|
if (data->flags & MMC_DATA_WRITE)
|
||||||
return UNUSABLE_ERR;
|
return UNUSABLE_ERR;
|
||||||
#ifndef RSI_BLKSZ
|
#ifndef RSI_BLKSZ
|
||||||
data_ctl |= ((ffs(data_size) - 1) << 4);
|
data_ctl |= ((ffs(data->blocksize) - 1) << 4);
|
||||||
#else
|
#else
|
||||||
bfin_write_SDH_BLK_SIZE(data_size);
|
bfin_write_SDH_BLK_SIZE(data->blocksize);
|
||||||
#endif
|
#endif
|
||||||
data_ctl |= DTX_DIR;
|
data_ctl |= DTX_DIR;
|
||||||
bfin_write_SDH_DATA_CTL(data_ctl);
|
bfin_write_SDH_DATA_CTL(data_ctl);
|
||||||
|
|
@ -189,7 +189,8 @@ static int bfin_sdh_request(struct mmc *mmc, struct mmc_cmd *cmd,
|
||||||
do {
|
do {
|
||||||
udelay(1);
|
udelay(1);
|
||||||
status = bfin_read_SDH_STATUS();
|
status = bfin_read_SDH_STATUS();
|
||||||
} while (!(status & (DAT_BLK_END | DAT_END | DAT_TIME_OUT | DAT_CRC_FAIL | RX_OVERRUN)));
|
} while (!(status & (DAT_END | DAT_TIME_OUT | DAT_CRC_FAIL |
|
||||||
|
RX_OVERRUN)));
|
||||||
|
|
||||||
if (status & DAT_TIME_OUT) {
|
if (status & DAT_TIME_OUT) {
|
||||||
bfin_write_SDH_STATUS_CLR(DAT_TIMEOUT_STAT);
|
bfin_write_SDH_STATUS_CLR(DAT_TIMEOUT_STAT);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue