mmc: mtk-sd: add source_cg clock support
authorFabien Parent <fparent@baylibre.com>
Sun, 24 Mar 2019 15:46:32 +0000 (16:46 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 23 Apr 2019 21:57:25 +0000 (17:57 -0400)
Some MediaTek SoC need an additional clock "source_cg". Enable
this new clock. We reuse the same clock name as in the kernel.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Acked-by: Ryder Lee <ryder.lee@mediatek.com>
drivers/mmc/mtk-sd.c

index d3f07783688596c0850968350a956a7b346e3b21..eed98b769c4a000c4d830f091b39b6caf061f9aa 100644 (file)
@@ -247,6 +247,7 @@ struct msdc_host {
        struct msdc_compatible *dev_comp;
 
        struct clk src_clk;     /* for SD/MMC bus clock */
+       struct clk src_clk_cg;  /* optional, MSDC source clock control gate */
        struct clk h_clk;       /* MSDC core clock */
 
        u32 src_clk_freq;       /* source clock */
@@ -1269,6 +1270,8 @@ static void msdc_ungate_clock(struct msdc_host *host)
 {
        clk_enable(&host->src_clk);
        clk_enable(&host->h_clk);
+       if (host->src_clk_cg.dev)
+               clk_enable(&host->src_clk_cg);
 }
 
 static int msdc_drv_probe(struct udevice *dev)
@@ -1332,6 +1335,8 @@ static int msdc_ofdata_to_platdata(struct udevice *dev)
        if (ret < 0)
                return ret;
 
+       clk_get_by_name(dev, "source_cg", &host->src_clk_cg); /* optional */
+
 #if IS_ENABLED(DM_GPIO)
        gpio_request_by_name(dev, "wp-gpios", 0, &host->gpio_wp, GPIOD_IS_IN);
        gpio_request_by_name(dev, "cd-gpios", 0, &host->gpio_cd, GPIOD_IS_IN);