int present;
present = dw_mci_get_cd(mmc);
+ dw_mci_ctrl_all_reset(host);
while (present != slot->last_detect_state) {
dev_dbg(&slot->mmc->class_dev, "card %s\n",
present ? "inserted" : "removed");
static void dw_mci_dealwith_timeout(struct dw_mci *host)
{
- u32 ret, i, regs;
+ u32 regs;
u32 sdio_int;
switch(host->state){
set_bit(EVENT_DATA_COMPLETE, &host->pending_events);
host->state = STATE_DATA_BUSY;
if (!dw_mci_ctrl_all_reset(host)) {
- ret = -ENODEV;
return ;
}
mci_writel(host, INTMASK, regs);
mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE);
- for (i = 0; i < host->num_slots; i++) {
- struct dw_mci_slot *slot = host->slot[i];
- if (!slot)
- continue;
- if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
- dw_mci_set_ios(slot->mmc, &slot->mmc->ios);
- dw_mci_setup_bus(slot, true);
- }
- }
mci_writel(host, RINTSTS, 0xFFFFFFFF);
tasklet_schedule(&host->tasklet);
break;