diff options
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/fsl_esdhc.c | 8 | ||||
-rw-r--r-- | drivers/mmc/mmc.c | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c index ddd1b4c6f3..f038acc863 100644 --- a/drivers/mmc/fsl_esdhc.c +++ b/drivers/mmc/fsl_esdhc.c @@ -419,7 +419,6 @@ static int esdhc_init(struct mmc *mmc) struct fsl_esdhc *regs = (struct fsl_esdhc *)cfg->esdhc_base; int timeout = 1000; int ret = 0; - u8 card_absent; /* Reset the entire host controller */ esdhc_write32(®s->sysctl, SYSCTL_RSTA); @@ -447,7 +446,8 @@ static int esdhc_init(struct mmc *mmc) esdhc_clrsetbits32(®s->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16); /* Check if there is a callback for detecting the card */ - if (board_mmc_getcd(&card_absent, mmc)) { + ret = board_mmc_getcd(mmc); + if (ret < 0) { timeout = 1000; while (!(esdhc_read32(®s->prsstat) & PRSSTAT_CINS) && --timeout) @@ -456,8 +456,10 @@ static int esdhc_init(struct mmc *mmc) if (timeout <= 0) ret = NO_CARD_ERR; } else { - if (card_absent) + if (ret == 0) ret = NO_CARD_ERR; + else + ret = 0; } return ret; diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 98abf1c8e8..11c6aa67c1 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -40,11 +40,11 @@ static struct list_head mmc_devices; static int cur_dev_num = -1; -int __board_mmc_getcd(u8 *cd, struct mmc *mmc) { +int __board_mmc_getcd(struct mmc *mmc) { return -1; } -int board_mmc_getcd(u8 *cd, struct mmc *mmc)__attribute__((weak, +int board_mmc_getcd(struct mmc *mmc)__attribute__((weak, alias("__board_mmc_getcd"))); int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data) |