summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/lvds.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/tegra/dc/lvds.c')
-rw-r--r--drivers/video/tegra/dc/lvds.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/video/tegra/dc/lvds.c b/drivers/video/tegra/dc/lvds.c
index e204806f8fe4..45ab77f92dc1 100644
--- a/drivers/video/tegra/dc/lvds.c
+++ b/drivers/video/tegra/dc/lvds.c
@@ -69,6 +69,7 @@ static void tegra_dc_lvds_enable(struct tegra_dc *dc)
tegra_dc_io_start(dc);
tegra_sor_clk_enable(lvds->sor);
+ clk_prepare_enable(lvds->clk);
/* Power on panel */
tegra_sor_pad_cal_power(lvds->sor, true);
@@ -81,7 +82,7 @@ static void tegra_dc_lvds_enable(struct tegra_dc *dc)
static void tegra_dc_lvds_disable(struct tegra_dc *dc)
{
struct tegra_dc_lvds_data *lvds = tegra_dc_get_outdata(dc);
-
+ clk_disable_unprepare(lvds->clk);
/* Power down SOR */
tegra_dc_sor_disable(lvds->sor, true);
}
@@ -91,7 +92,7 @@ static void tegra_dc_lvds_suspend(struct tegra_dc *dc)
{
struct tegra_dc_lvds_data *lvds = tegra_dc_get_outdata(dc);
- tegra_dc_lvds_disable(dc);
+ clk_prepare_enable(lvds->clk);
lvds->suspended = true;
}
@@ -102,7 +103,7 @@ static void tegra_dc_lvds_resume(struct tegra_dc *dc)
if (!lvds->suspended)
return;
- tegra_dc_lvds_enable(dc);
+ clk_disable_unprepare(lvds->clk);
}
static long tegra_dc_lvds_setup_clk(struct tegra_dc *dc, struct clk *clk)
@@ -120,6 +121,8 @@ static long tegra_dc_lvds_setup_clk(struct tegra_dc *dc, struct clk *clk)
tegra_sor_setup_clk(lvds->sor, clk, true);
+ lvds->clk = clk;
+
return tegra_dc_pclk_round_rate(dc, lvds->sor->dc->mode.pclk);
}