diff options
Diffstat (limited to 'target/linux/sunxi/patches-4.1/140-mmc-sdio-reliability-fix.patch')
-rw-r--r-- | target/linux/sunxi/patches-4.1/140-mmc-sdio-reliability-fix.patch | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/target/linux/sunxi/patches-4.1/140-mmc-sdio-reliability-fix.patch b/target/linux/sunxi/patches-4.1/140-mmc-sdio-reliability-fix.patch index 295865bbe5..76bc222738 100644 --- a/target/linux/sunxi/patches-4.1/140-mmc-sdio-reliability-fix.patch +++ b/target/linux/sunxi/patches-4.1/140-mmc-sdio-reliability-fix.patch @@ -22,11 +22,9 @@ Changes in v2: drivers/mmc/host/sunxi-mmc.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) -diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c -index 4d3e1ff..daa90b7 100644 --- a/drivers/mmc/host/sunxi-mmc.c +++ b/drivers/mmc/host/sunxi-mmc.c -@@ -289,6 +289,24 @@ static int sunxi_mmc_init_host(struct mmc_host *mmc) +@@ -289,6 +289,24 @@ static int sunxi_mmc_init_host(struct mm return 0; } @@ -51,7 +49,7 @@ index 4d3e1ff..daa90b7 100644 static void sunxi_mmc_init_idma_des(struct sunxi_mmc_host *host, struct mmc_data *data) { -@@ -383,6 +401,8 @@ static void sunxi_mmc_send_manual_stop(struct sunxi_mmc_host *host, +@@ -383,6 +401,8 @@ static void sunxi_mmc_send_manual_stop(s u32 arg, cmd_val, ri; unsigned long expire = jiffies + msecs_to_jiffies(1000); @@ -60,7 +58,7 @@ index 4d3e1ff..daa90b7 100644 cmd_val = SDXC_START | SDXC_RESP_EXPIRE | SDXC_STOP_ABORT_CMD | SDXC_CHECK_RESPONSE_CRC; -@@ -597,6 +617,11 @@ static int sunxi_mmc_oclk_onoff(struct sunxi_mmc_host *host, u32 oclk_en) +@@ -597,6 +617,11 @@ static int sunxi_mmc_oclk_onoff(struct s { unsigned long expire = jiffies + msecs_to_jiffies(250); u32 rval; @@ -72,17 +70,17 @@ index 4d3e1ff..daa90b7 100644 rval = mmc_readl(host, REG_CLKCR); rval &= ~(SDXC_CARD_CLOCK_ON | SDXC_LOW_POWER_ON); -@@ -785,6 +810,13 @@ static void sunxi_mmc_request(struct mmc_host *mmc, struct mmc_request *mrq) +@@ -784,6 +809,13 @@ static void sunxi_mmc_request(struct mmc + mmc_request_done(mmc, mrq); return; } - ++ + ret = sunxi_mmc_wait_card_ready(host); + if (ret) { + mrq->cmd->error = ret; + mmc_request_done(mmc, mrq); + return; + } -+ + if (data) { ret = sunxi_mmc_map_dma(host, data); - if (ret < 0) { |