projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
spi: cadence_qspi: Use #define for bits instead of bit shifts
[oweals/u-boot.git]
/
drivers
/
mmc
/
sdhci.c
diff --git
a/drivers/mmc/sdhci.c
b/drivers/mmc/sdhci.c
index b2bf5a03fa84d9c1be6895bb0ef995cb5c7f6b94..766e9eef84a964df4e4762be5b864dd2743dcabf 100644
(file)
--- a/
drivers/mmc/sdhci.c
+++ b/
drivers/mmc/sdhci.c
@@
-87,7
+87,7
@@
static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data,
if (stat & SDHCI_INT_ERROR) {
printf("%s: Error detected in status(0x%X)!\n",
__func__, stat);
if (stat & SDHCI_INT_ERROR) {
printf("%s: Error detected in status(0x%X)!\n",
__func__, stat);
- return -
1
;
+ return -
EIO
;
}
if (stat & rdy) {
if (!(sdhci_readl(host, SDHCI_PRESENT_STATE) & mask))
}
if (stat & rdy) {
if (!(sdhci_readl(host, SDHCI_PRESENT_STATE) & mask))
@@
-110,7
+110,7
@@
static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data,
udelay(10);
else {
printf("%s: Transfer data timeout\n", __func__);
udelay(10);
else {
printf("%s: Transfer data timeout\n", __func__);
- return -
1
;
+ return -
ETIMEDOUT
;
}
} while (!(stat & SDHCI_INT_DATA_END));
return 0;
}
} while (!(stat & SDHCI_INT_DATA_END));
return 0;
@@
-242,6
+242,7
@@
static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
sdhci_writel(host, cmd->cmdarg, SDHCI_ARGUMENT);
#ifdef CONFIG_MMC_SDMA
sdhci_writel(host, cmd->cmdarg, SDHCI_ARGUMENT);
#ifdef CONFIG_MMC_SDMA
+ trans_bytes = ALIGN(trans_bytes, CONFIG_SYS_CACHELINE_SIZE);
flush_cache(start_addr, trans_bytes);
#endif
sdhci_writew(host, SDHCI_MAKE_CMD(cmd->cmdidx, flags), SDHCI_COMMAND);
flush_cache(start_addr, trans_bytes);
#endif
sdhci_writew(host, SDHCI_MAKE_CMD(cmd->cmdidx, flags), SDHCI_COMMAND);
@@
-303,7
+304,7
@@
static int sdhci_set_clock(struct mmc *mmc, unsigned int clock)
if (timeout == 0) {
printf("%s: Timeout to wait cmd & data inhibit\n",
__func__);
if (timeout == 0) {
printf("%s: Timeout to wait cmd & data inhibit\n",
__func__);
- return -
1
;
+ return -
EBUSY
;
}
timeout--;
}
timeout--;
@@
-374,7
+375,7
@@
static int sdhci_set_clock(struct mmc *mmc, unsigned int clock)
if (timeout == 0) {
printf("%s: Internal clock never stabilised.\n",
__func__);
if (timeout == 0) {
printf("%s: Internal clock never stabilised.\n",
__func__);
- return -
1
;
+ return -
EBUSY
;
}
timeout--;
udelay(1000);
}
timeout--;
udelay(1000);
@@
-477,7
+478,7
@@
static int sdhci_init(struct mmc *mmc)
if (!aligned_buffer) {
printf("%s: Aligned buffer alloc failed!!!\n",
__func__);
if (!aligned_buffer) {
printf("%s: Aligned buffer alloc failed!!!\n",
__func__);
- return -
1
;
+ return -
ENOMEM
;
}
}
}
}
@@
-546,7
+547,11
@@
int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host,
return -EINVAL;
}
#endif
return -EINVAL;
}
#endif
- host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
+ if (host->quirks & SDHCI_QUIRK_REG32_RW)
+ host->version =
+ sdhci_readl(host, SDHCI_HOST_VERSION - 2) >> 16;
+ else
+ host->version = sdhci_readw(host, SDHCI_HOST_VERSION);
cfg->name = host->name;
#ifndef CONFIG_DM_MMC_OPS
cfg->name = host->name;
#ifndef CONFIG_DM_MMC_OPS
@@
-603,9
+608,11
@@
int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host,
* In case of Host Controller v3.00, find out whether clock
* multiplier is supported.
*/
* In case of Host Controller v3.00, find out whether clock
* multiplier is supported.
*/
- caps_1 = sdhci_readl(host, SDHCI_CAPABILITIES_1);
- host->clk_mul = (caps_1 & SDHCI_CLOCK_MUL_MASK) >>
- SDHCI_CLOCK_MUL_SHIFT;
+ if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) {
+ caps_1 = sdhci_readl(host, SDHCI_CAPABILITIES_1);
+ host->clk_mul = (caps_1 & SDHCI_CLOCK_MUL_MASK) >>
+ SDHCI_CLOCK_MUL_SHIFT;
+ }
return 0;
}
return 0;
}
@@
-627,7
+634,7
@@
int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk)
host->mmc = mmc_create(&host->cfg, host);
if (host->mmc == NULL) {
printf("%s: mmc create fail!\n", __func__);
host->mmc = mmc_create(&host->cfg, host);
if (host->mmc == NULL) {
printf("%s: mmc create fail!\n", __func__);
- return -
1
;
+ return -
ENOMEM
;
}
return 0;
}
return 0;