update rk29 sdmmc
authorlhh <lhh@rock-chips.com>
Fri, 10 Dec 2010 06:23:18 +0000 (14:23 +0800)
committerlhh <lhh@rock-chips.com>
Fri, 10 Dec 2010 06:23:18 +0000 (14:23 +0800)
drivers/mmc/host/rk29_sdmmc.c

index a1a26b9b74cd7550e4514154523cbf3dedb0723b..99c268f835684b74df3c040ef83acab7be13b834 100755 (executable)
@@ -520,7 +520,7 @@ static void rk29_sdmmc_start_request(struct rk29_sdmmc *host)
        struct mmc_command      *cmd;
        struct mmc_data         *data;
        u32                     cmdflags;
-       int time_out =60;
+       int time_out=60, time_out2=3;
        unsigned long flags;
        
        mrq = host->mrq;
@@ -535,6 +535,10 @@ static void rk29_sdmmc_start_request(struct rk29_sdmmc *host)
                         /* wait till resets clear */
                        while (rk29_sdmmc_read(host->regs, SDMMC_CTRL) & ( SDMMC_CTRL_FIFO_RESET));
                        local_irq_restore(flags);
+                       time_out2--;
+                       if(!time_out2)
+                               break;
+                       
                }
        }
        /*¼ì²éFIFO,Èç¹û²»Îª¿Õ£¬Çå¿Õ*/
@@ -686,7 +690,7 @@ static void rk29_sdmmc_request_end(struct rk29_sdmmc *host, struct mmc_request *
 {
        struct mmc_host         *prev_mmc = host->mmc;
        unsigned long flags;
-       int time_out =60;
+       int time_out =60, time_out2=3;
        
        WARN_ON(host->cmd || host->data);
        host->curr_mrq = NULL;
@@ -702,6 +706,8 @@ static void rk29_sdmmc_request_end(struct rk29_sdmmc *host, struct mmc_request *
                         /* wait till resets clear */
                        while (rk29_sdmmc_read(host->regs, SDMMC_CTRL) & ( SDMMC_CTRL_FIFO_RESET));
                        local_irq_restore(flags);
+                       if(!time_out2)
+                               break;
                }
        }
        /*¼ì²éFIFO,Èç¹û²»Îª¿Õ£¬Çå¿Õ*/