rk32 edp:add power domain support
authoryxj <yxj@rock-chips.com>
Thu, 17 Apr 2014 06:16:30 +0000 (14:16 +0800)
committeryxj <yxj@rock-chips.com>
Thu, 17 Apr 2014 06:16:30 +0000 (14:16 +0800)
drivers/video/rockchip/transmitter/rk32_dp.c
drivers/video/rockchip/transmitter/rk32_dp.h

index 8de29482f2411a4acdc09a32056597f44cfb8a7e..86b596bc16073421115430d7f14dfb2ed3b1beac 100644 (file)
@@ -44,6 +44,7 @@ static struct rk32_edp *rk32_edp;
 static int rk32_edp_clk_enable(struct rk32_edp *edp)
 {
        if (!edp->clk_on) {
+               clk_enable(edp->pd);
                clk_enable(edp->pclk);
                clk_enable(edp->clk_edp);
                clk_enable(edp->clk_24m);
@@ -59,6 +60,7 @@ static int rk32_edp_clk_disable(struct rk32_edp *edp)
                clk_disable(edp->pclk);
                clk_disable(edp->clk_edp);
                clk_disable(edp->clk_24m);
+               clk_disable(edp->pd);
                edp->clk_on = false;
        }
 
@@ -1319,6 +1321,10 @@ static int rk32_edp_probe(struct platform_device *pdev)
                return PTR_ERR(edp->regs);
        }
 
+       edp->pd = devm_clk_get(&pdev->dev,"pd_edp");
+       if (IS_ERR(edp->pd)) {
+               dev_err(&pdev->dev, "cannot get pd\n");
+       }
        edp->clk_edp = devm_clk_get(&pdev->dev,"clk_edp");
        if (IS_ERR(edp->clk_edp)) {
                dev_err(&pdev->dev, "cannot get clk_edp\n");
@@ -1336,7 +1342,7 @@ static int rk32_edp_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "cannot get pclk\n");
                return PTR_ERR(edp->pclk);
        }
-
+       clk_prepare(edp->pd);
        clk_prepare(edp->pclk);
        clk_prepare(edp->clk_edp);
        clk_prepare(edp->clk_24m);
index dc48e5c4eba5f4e39a4984062504f10ae0a361d8..de90cf29dc452206f127400d2cb39f52307daba3 100644 (file)
@@ -514,6 +514,7 @@ struct rk32_edp {
        struct device           *dev;
        void __iomem            *regs;
        unsigned int            irq;
+       struct clk              *pd;
        struct clk              *clk_edp;  /*clk for edp controller*/
        struct clk              *clk_24m;  /*clk for edp phy*/
        struct clk              *pclk;     /*clk for phb bus*/