From 631a91bacc9505a0f195f28f9a07b0bf013c1685 Mon Sep 17 00:00:00 2001 From: libing Date: Thu, 17 Apr 2014 18:38:34 +0800 Subject: [PATCH] rk3288-mipi-dsi: add control mipi dsi power domain --- arch/arm/boot/dts/rk3288.dtsi | 8 ++++---- drivers/video/rockchip/transmitter/rk32_mipi_dsi.c | 12 +++++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi index dfd935e35df0..51ea6c43abf7 100755 --- a/arch/arm/boot/dts/rk3288.dtsi +++ b/arch/arm/boot/dts/rk3288.dtsi @@ -700,8 +700,8 @@ rockchip,prop = <0>; reg = <0xff960000 0x4000>; interrupts = ; - 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"; }; @@ -710,8 +710,8 @@ rockchip,prop = <1>; reg = <0xff964000 0x4000>; interrupts = ; - 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"; }; diff --git a/drivers/video/rockchip/transmitter/rk32_mipi_dsi.c b/drivers/video/rockchip/transmitter/rk32_mipi_dsi.c index b27cf2cd7538..d1a965c31360 100755 --- a/drivers/video/rockchip/transmitter/rk32_mipi_dsi.c +++ b/drivers/video/rockchip/transmitter/rk32_mipi_dsi.c @@ -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"); -- 2.34.1