OSDN Git Service

mmc: sh_mobile_sdhi: improve prerequisite for hw_reset
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 12 Dec 2016 19:51:21 +0000 (20:51 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 13 Feb 2017 12:19:49 +0000 (13:19 +0100)
We need a SCC unit for hw_reset. Those units can only be described in
of_data. So, of_data and a valid SCC offset are prerequisites for
enabling the hw_reset capability. Merge the two 'if' conditions into one
and add a check for an scc offset.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sh_mobile_sdhi.c

index a6887cf..0a22b45 100644 (file)
@@ -666,27 +666,25 @@ static int sh_mobile_sdhi_probe(struct platform_device *pdev)
        if (ret < 0)
                goto efree;
 
-       if (host->mmc->caps & MMC_CAP_UHS_SDR104) {
+       if (of_data && of_data->scc_offset && host->mmc->caps & MMC_CAP_UHS_SDR104) {
+               const struct sh_mobile_sdhi_scc *taps = of_data->taps;
+               bool hit = false;
+
                host->mmc->caps |= MMC_CAP_HW_RESET;
 
-               if (of_data) {
-                       const struct sh_mobile_sdhi_scc *taps = of_data->taps;
-                       bool hit = false;
-
-                       for (i = 0; i < of_data->taps_num; i++) {
-                               if (taps[i].clk_rate == 0 ||
-                                   taps[i].clk_rate == host->mmc->f_max) {
-                                       host->scc_tappos = taps->tap;
-                                       hit = true;
-                                       break;
-                               }
+               for (i = 0; i < of_data->taps_num; i++) {
+                       if (taps[i].clk_rate == 0 ||
+                           taps[i].clk_rate == host->mmc->f_max) {
+                               host->scc_tappos = taps->tap;
+                               hit = true;
+                               break;
                        }
+               }
 
-                       if (!hit)
-                               dev_warn(&host->pdev->dev, "Unknown clock rate for SDR104\n");
+               if (!hit)
+                       dev_warn(&host->pdev->dev, "Unknown clock rate for SDR104\n");
 
-                       priv->scc_ctl = host->ctl + of_data->scc_offset;
-               }
+               priv->scc_ctl = host->ctl + of_data->scc_offset;
        }
 
        i = 0;