From 38ec7ee48e843696a812b3dff26b7913747076a0 Mon Sep 17 00:00:00 2001 From: kfx Date: Thu, 2 Sep 2010 12:28:42 +0800 Subject: [PATCH] fix 'sdio_probe return error when host controller's status is data_busy. data_busy occurs when wifi module is NOT inserted.' --- drivers/mmc/host/rk2818-sdmmc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/mmc/host/rk2818-sdmmc.c b/drivers/mmc/host/rk2818-sdmmc.c index 6cd5b6f22295..726c778bfa3e 100755 --- a/drivers/mmc/host/rk2818-sdmmc.c +++ b/drivers/mmc/host/rk2818-sdmmc.c @@ -1893,6 +1893,13 @@ static int rk2818_sdmmc_probe(struct platform_device *pdev) writel(SDMMC_INT_CMD_DONE | SDMMC_INT_DTO | RK2818_MCI_ERROR_FLAGS | SDMMC_INT_CD, host->regs + SDMMC_INTMASK); + if((strncmp(host->dma_name, "sdio", strlen("sdio")) == 0) && + (readl(host->regs + SDMMC_STATUS) & SDMMC_STAUTS_DATA_BUSY)) + { + dev_err(host->dev, "sdio is busy, fail to init sdio.please check if wifi_d0's level is high?\n"); + ret = -EINVAL; + return ret; + } #if 0 /* Assume card is present initially */ if(rk2818_sdmmc_get_cd(host->mmc) == 0 &&strncmp(host->dma_name, "sdio", strlen("sdio")) == 0) @@ -1938,7 +1945,7 @@ static int rk2818_sdmmc_probe(struct platform_device *pdev) #endif writel(SDMMC_CTRL_INT_ENABLE, host->regs + SDMMC_CTRL); // enable mci interrupt - dev_dbg(&pdev->dev, "RK2818 MMC controller used as %s, at irq %d\n", + dev_info(&pdev->dev, "RK2818 MMC controller used as %s, at irq %d\n", host->dma_name, host->irq); return 0; err_remove_host: -- 2.34.1