]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/mmc/host/sdhci.c
KARO: cleanup after merge of Freescale 3.10.17 stuff
[karo-tx-linux.git] / drivers / mmc / host / sdhci.c
index 447eef8217c7b4753cbad777a102af97d53d7daa..47055f3f01b8580e01ff147232d106bc14db3667 100644 (file)
@@ -1823,7 +1823,6 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
        struct sdhci_host *host = mmc_priv(mmc);
        u16 ctrl;
        int tuning_loop_counter = MAX_TUNING_LOOP;
-       unsigned long timeout;
        int err = 0;
        unsigned long flags;
 
@@ -1882,14 +1881,10 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
         * Issue CMD19 repeatedly till Execute Tuning is set to 0 or the number
         * of loops reaches 40 times or a timeout of 150ms occurs.
         */
-       timeout = 150;
        do {
                struct mmc_command cmd = {0};
                struct mmc_request mrq = {NULL};
 
-               if (!tuning_loop_counter && !timeout)
-                       break;
-
                cmd.opcode = opcode;
                cmd.arg = 0;
                cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC;
@@ -1897,6 +1892,9 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
                cmd.data = NULL;
                cmd.error = 0;
 
+               if (tuning_loop_counter-- == 0)
+                       break;
+
                mrq.cmd = &cmd;
                host->mrq = &mrq;
 
@@ -1954,8 +1952,6 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
                host->tuning_done = 0;
 
                ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
-               tuning_loop_counter--;
-               timeout--;
 
                /* eMMC spec does not require a delay between tuning cycles */
                if (opcode == MMC_SEND_TUNING_BLOCK)
@@ -1966,17 +1962,15 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode)
         * The Host Driver has exhausted the maximum number of loops allowed,
         * so use fixed sampling frequency.
         */
-       if (!tuning_loop_counter || !timeout) {
+       if (tuning_loop_counter < 0) {
                ctrl &= ~SDHCI_CTRL_TUNED_CLK;
                sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);
+       }
+       if (!(ctrl & SDHCI_CTRL_TUNED_CLK)) {
+               pr_info(DRIVER_NAME ": Tuning procedure"
+                       " failed, falling back to fixed sampling"
+                       " clock\n");
                err = -EIO;
-       } else {
-               if (!(ctrl & SDHCI_CTRL_TUNED_CLK)) {
-                       pr_info(DRIVER_NAME ": Tuning procedure"
-                               " failed, falling back to fixed sampling"
-                               " clock\n");
-                       err = -EIO;
-               }
        }
 
 out: