rk3368 lcdc: add power domain control for lcdc
authorhjc <hjc@rock-chips.com>
Thu, 19 Mar 2015 08:47:22 +0000 (16:47 +0800)
committerhjc <hjc@rock-chips.com>
Thu, 19 Mar 2015 09:02:59 +0000 (17:02 +0800)
Signed-off-by: hjc <hjc@rock-chips.com>
arch/arm64/boot/dts/rk3368.dtsi
drivers/video/rockchip/lcdc/rk3368_lcdc.c

index b78cfcd3bde3553d6454296dfca8ca185247c372..f33094081d1d61bcf2398966d607df1abe37ec04 100755 (executable)
                 *pinctrl-1 = <&lcdc_gpio>;
                 */
                 status = "disabled";
-                clocks = <&clk_gates16 5>, <&dclk_vop0>, <&clk_gates16 6>, <&clk_npll>;
-                clock-names = "aclk_lcdc", "dclk_lcdc", "hclk_lcdc", "sclk_pll";
+                clocks = <&clk_gates16 5>, <&dclk_vop0>, <&clk_gates16 6>, <&clk_npll>, <&pd_vop>;
+                clock-names = "aclk_lcdc", "dclk_lcdc", "hclk_lcdc", "sclk_pll", "pd_lcdc";
        };
 
        adc: adc@ff100000 {
index 151ee9457678cef113cd6e02174c6f8fa35832fd..526dc6dc667a88ebcddeba5e9d21c9679c95326c 100755 (executable)
@@ -152,7 +152,7 @@ static int rk3368_lcdc_clk_enable(struct lcdc_device *lcdc_dev)
                clk_prepare_enable(lcdc_dev->hclk);
                clk_prepare_enable(lcdc_dev->dclk);
                clk_prepare_enable(lcdc_dev->aclk);
-               /*clk_prepare_enable(lcdc_dev->pd);*/
+               clk_prepare_enable(lcdc_dev->pd);
                spin_lock(&lcdc_dev->reg_lock);
                lcdc_dev->clk_on = 1;
                spin_unlock(&lcdc_dev->reg_lock);
@@ -175,7 +175,7 @@ static int rk3368_lcdc_clk_disable(struct lcdc_device *lcdc_dev)
                clk_disable_unprepare(lcdc_dev->dclk);
                clk_disable_unprepare(lcdc_dev->hclk);
                clk_disable_unprepare(lcdc_dev->aclk);
-               /*clk_disable_unprepare(lcdc_dev->pd);*/
+               clk_disable_unprepare(lcdc_dev->pd);
        }
 
        return 0;
@@ -416,9 +416,9 @@ static int rk3368_lcdc_pre_init(struct rk_lcdc_driver *dev_drv)
        lcdc_dev->hclk = devm_clk_get(lcdc_dev->dev, "hclk_lcdc");
        lcdc_dev->aclk = devm_clk_get(lcdc_dev->dev, "aclk_lcdc");
        lcdc_dev->dclk = devm_clk_get(lcdc_dev->dev, "dclk_lcdc");
-       /*lcdc_dev->pd = devm_clk_get(lcdc_dev->dev, "pd_lcdc");*/
+       lcdc_dev->pd = devm_clk_get(lcdc_dev->dev, "pd_lcdc");
 
-       if (/*IS_ERR(lcdc_dev->pd) || */(IS_ERR(lcdc_dev->aclk)) ||
+       if (IS_ERR(lcdc_dev->pd) || (IS_ERR(lcdc_dev->aclk)) ||
            (IS_ERR(lcdc_dev->dclk)) || (IS_ERR(lcdc_dev->hclk))) {
                dev_err(lcdc_dev->dev, "failed to get lcdc%d clk source\n",
                        lcdc_dev->id);