mipi: rk3368 support power domain - pd_mipi_dsi.
authorxubilv <xbl@rock-chips.com>
Wed, 25 Mar 2015 10:03:40 +0000 (18:03 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 25 Mar 2015 11:57:40 +0000 (19:57 +0800)
Signed-off-by: xubilv <xbl@rock-chips.com>
arch/arm64/boot/dts/rk3368.dtsi
drivers/video/rockchip/transmitter/rk32_mipi_dsi.c

index e6ac58903182cedac0a30432fd7c8c956d27641c..53858947744e649e60c8e5382c3d061ab4b482e9 100755 (executable)
                reg = <0x0 0xff960000 0x0 0x4000>, <0x0 0xff968000 0x0 0x4000>;
                reg-names = "mipi_dsi_host" ,"mipi_dsi_phy";
                interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&clk_gates4 14>, <&clk_gates22 10>, <&clk_gates17 3>;
-               clock-names = "clk_mipi_24m", "pclk_mipi_dsi", "pclk_mipi_dsi_host";
+               clocks = <&clk_gates4 14>, <&clk_gates22 10>, <&clk_gates17 3>, <&pd_mipidsi>;
+               clock-names = "clk_mipi_24m", "pclk_mipi_dsi", "pclk_mipi_dsi_host", "pd_mipi_dsi";
                status = "okay";
        };
 
index 7f624934d0ee80af0eb840882af7b3adc4e496c3..c5e39ef6f3e93cadb45463c0a91b7b8c430ec0b6 100755 (executable)
@@ -442,7 +442,8 @@ static int rk312x_phy_power_up(struct dsi *dsi)
        if (dsi->ops.id == DWC_DSI_VERSION_RK312x) {
                clk_prepare_enable(dsi->h2p_hclk);
                clk_prepare_enable(dsi->dsi_pd);
-       }
+       } else
+               clk_prepare_enable(dsi->dsi_pd);
 
        udelay(10);
 
@@ -503,7 +504,8 @@ static int rk312x_phy_power_down(struct dsi *dsi)
        if (dsi->ops.id == DWC_DSI_VERSION_RK312x) {
                clk_disable_unprepare(dsi->h2p_hclk);
                clk_disable_unprepare(dsi->dsi_pd);
-       }
+       } else
+               clk_disable_unprepare(dsi->dsi_pd);
        return 0;
 }
 
@@ -1748,6 +1750,12 @@ static int rk32_mipi_dsi_probe(struct platform_device *pdev)
                        dev_err(&pdev->dev, "get pclk_mipi_dsi_host clock fail\n");
                        return PTR_ERR(dsi->dsi_host_pclk);
                }
+
+               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");
+                       return PTR_ERR(dsi->dsi_pd);
+               }
        }
 
        if (dsi->ops.id == DWC_DSI_VERSION_RK312x) {