rk3288-mipi-dsi: add control mipi dsi power domain
authorlibing <libing@rock-chips.com>
Thu, 17 Apr 2014 10:38:34 +0000 (18:38 +0800)
committerlibing <libing@rock-chips.com>
Thu, 17 Apr 2014 10:39:56 +0000 (18:39 +0800)
arch/arm/boot/dts/rk3288.dtsi
drivers/video/rockchip/transmitter/rk32_mipi_dsi.c

index dfd935e35df0271c1a5542712315b073802797f4..51ea6c43abf7ee23d7fbff7acfb1e370fe4740fa 100755 (executable)
                rockchip,prop = <0>;
                reg = <0xff960000 0x4000>;
                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&clk_gates5 15>, <&clk_gates16 4>;
-               clock-names = "clk_mipi_24m", "pclk_mipi_dsi";
+               clocks = <&clk_gates5 15>, <&clk_gates16 4> , <&pd_mipidsi>;
+               clock-names = "clk_mipi_24m", "pclk_mipi_dsi", "pd_mipi_dsi";
                status = "disabled";
        };
 
                rockchip,prop = <1>;
                reg = <0xff964000 0x4000>;
                interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&clk_gates5 15>, <&clk_gates16 5>;
-               clock-names = "clk_mipi_24m", "pclk_mipi_dsi";
+               clocks = <&clk_gates5 15>, <&clk_gates16 5>, <&pd_mipidsi>;
+               clock-names = "clk_mipi_24m", "pclk_mipi_dsi", "pd_mipi_dsi";
                status = "disabled"; 
        };
        
index b27cf2cd75387285cd40a74ffdc7a108fad6027c..d1a965c313608bdf93d11acb0f2214c12c593ce9 100755 (executable)
@@ -178,6 +178,7 @@ static int rk32_phy_power_up(struct dsi *dsi)
     //enable ref clock
     clk_prepare_enable(dsi->phy.refclk); 
     clk_prepare_enable(dsi->dsi_pclk);
+    clk_prepare_enable(dsi->dsi_pd);
     udelay(10);
 
        switch(dsi->host.lane) {
@@ -206,6 +207,7 @@ static int rk32_phy_power_down(struct dsi *dsi)
     rk32_dsi_set_bits(dsi, 0, phy_shutdownz);
     clk_disable_unprepare(dsi->phy.refclk); 
     clk_disable_unprepare(dsi->dsi_pclk);
+    clk_disable_unprepare(dsi->dsi_pd);
     
     return 0;
 }
@@ -1288,7 +1290,7 @@ static int rk32_mipi_dsi_probe(struct platform_device *pdev)
 
     dsi->phy.refclk  = devm_clk_get(&pdev->dev, "clk_mipi_24m"); 
        if (unlikely(IS_ERR(dsi->phy.refclk))) {
-               dev_err(&pdev->dev, "get mipi_ref clock fail\n");
+               dev_err(&pdev->dev, "get clk_mipi_24m clock fail\n");
                ret = PTR_ERR(dsi->phy.refclk);
                //goto probe_err6;
        }
@@ -1300,6 +1302,14 @@ static int rk32_mipi_dsi_probe(struct platform_device *pdev)
        //goto probe_err7;
    }
 
+    dsi->dsi_pd = devm_clk_get(&pdev->dev, "pd_mipi_dsi");
+    if (unlikely(IS_ERR(dsi->dsi_pd))) {
+        dev_err(&pdev->dev, "get pd_mipi_dsi clock fail\n");
+        ret = PTR_ERR(dsi->dsi_pd);
+        //goto probe_err7;
+    }
+
+
        dsi->host.irq = platform_get_irq(pdev, 0);
        if (dsi->host.irq < 0) {
                dev_err(&pdev->dev, "no irq resource?\n");