summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/msm_mdss_io_8974.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/msm_mdss_io_8974.c b/drivers/video/fbdev/msm/msm_mdss_io_8974.c
index 3dc2e952b5dd..e6151b4c75a1 100644
--- a/drivers/video/fbdev/msm/msm_mdss_io_8974.c
+++ b/drivers/video/fbdev/msm/msm_mdss_io_8974.c
@@ -947,8 +947,11 @@ static void mdss_dsi_8996_phy_power_off(
{
int ln;
void __iomem *base;
+ u32 data;
- MIPI_OUTP(ctrl->phy_io.base + DSIPHY_CMN_CTRL_0, 0x7f);
+ /* Turn off PLL power */
+ data = MIPI_INP(ctrl->phy_io.base + DSIPHY_CMN_CTRL_0);
+ MIPI_OUTP(ctrl->phy_io.base + DSIPHY_CMN_CTRL_0, data & ~BIT(7));
/* 4 lanes + clk lane configuration */
for (ln = 0; ln < 5; ln++) {
@@ -1004,6 +1007,7 @@ static void mdss_dsi_8996_phy_power_on(
void __iomem *base;
struct mdss_dsi_phy_ctrl *pd;
char *ip;
+ u32 data;
pd = &(((ctrl->panel_data).panel_info.mipi).dsi_phy_db);
@@ -1023,6 +1027,10 @@ static void mdss_dsi_8996_phy_power_on(
}
mdss_dsi_8996_phy_regulator_enable(ctrl);
+
+ /* Turn on PLL power */
+ data = MIPI_INP(ctrl->phy_io.base + DSIPHY_CMN_CTRL_0);
+ MIPI_OUTP(ctrl->phy_io.base + DSIPHY_CMN_CTRL_0, data | BIT(7));
}
static void mdss_dsi_phy_power_on(
@@ -1126,6 +1134,7 @@ static void mdss_dsi_8996_phy_config(struct mdss_dsi_ctrl_pdata *ctrl)
mdss_dsi_8996_pll_source_standalone(ctrl);
}
+ MIPI_OUTP(ctrl->phy_io.base + DSIPHY_CMN_CTRL_0, 0x7f);
wmb(); /* make sure registers committed */
}