OSDN Git Service

mmc: renesas_sdhi: Parse DT for SDnH
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 10 Nov 2021 19:16:09 +0000 (20:16 +0100)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 19 Nov 2021 10:32:39 +0000 (11:32 +0100)
If there is a SDnH clock provided in DT, let's use it instead of relying
on the fallback.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Link: https://lore.kernel.org/r/20211110191610.5664-21-wsa+renesas@sang-engineering.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/mmc/host/renesas_sdhi_core.c

index 7f842fd..2f5e22e 100644 (file)
@@ -921,6 +921,10 @@ int renesas_sdhi_probe(struct platform_device *pdev,
        if (IS_ERR(priv->clk))
                return dev_err_probe(&pdev->dev, PTR_ERR(priv->clk), "cannot get clock");
 
+       priv->clkh = devm_clk_get_optional(&pdev->dev, "clkh");
+       if (IS_ERR(priv->clkh))
+               return dev_err_probe(&pdev->dev, PTR_ERR(priv->clkh), "cannot get clkh");
+
        /*
         * Some controllers provide a 2nd clock just to run the internal card
         * detection logic. Unfortunately, the existing driver architecture does
@@ -959,7 +963,7 @@ int renesas_sdhi_probe(struct platform_device *pdev,
                dma_priv->dma_buswidth = of_data->dma_buswidth;
                host->bus_shift = of_data->bus_shift;
                /* Fallback for old DTs */
-               if (of_data->sdhi_flags & SDHI_FLAG_NEED_CLKH_FALLBACK)
+               if (!priv->clkh && of_data->sdhi_flags & SDHI_FLAG_NEED_CLKH_FALLBACK)
                        priv->clkh = clk_get_parent(clk_get_parent(priv->clk));
 
        }