From 1b53cc574b4902858a6596d0dc82e358ca0ffe11 Mon Sep 17 00:00:00 2001 From: Shashank Babu Chinta Venkata Date: Thu, 6 Jan 2022 11:00:08 -0800 Subject: [PATCH] disp: msm: dsi: add API for handling PHY programming during 0p9 collapse Add HW recommended programming sequence for when PHY is allowed to turn off during idle. Change-Id: Iaeafa17d9821913b42ae669dbd21f244783f4cdd Signed-off-by: Shashank Babu Chinta Venkata --- msm/dsi/dsi_catalog.c | 3 +++ msm/dsi/dsi_catalog.h | 1 + msm/dsi/dsi_phy_hw_v5_0.c | 8 ++++++++ 3 files changed, 12 insertions(+) diff --git a/msm/dsi/dsi_catalog.c b/msm/dsi/dsi_catalog.c index 836bfddb..6193f621 100644 --- a/msm/dsi/dsi_catalog.c +++ b/msm/dsi/dsi_catalog.c @@ -190,6 +190,7 @@ static void dsi_catalog_phy_3_0_init(struct dsi_phy_hw *phy) phy->ops.dyn_refresh_ops.dyn_refresh_trigger_sel = NULL; phy->ops.dyn_refresh_ops.cache_phy_timings = dsi_phy_hw_v3_0_cache_phy_timings; + phy->ops.phy_idle_off = NULL; } /** @@ -230,6 +231,7 @@ static void dsi_catalog_phy_4_0_init(struct dsi_phy_hw *phy) dsi_phy_hw_v4_0_cache_phy_timings; phy->ops.set_continuous_clk = dsi_phy_hw_v4_0_set_continuous_clk; phy->ops.commit_phy_timing = dsi_phy_hw_v4_0_commit_phy_timing; + phy->ops.phy_idle_off = NULL; } /** @@ -259,6 +261,7 @@ static void dsi_catalog_phy_5_0_init(struct dsi_phy_hw *phy) phy->ops.dyn_refresh_ops.cache_phy_timings = dsi_phy_hw_v5_0_cache_phy_timings; phy->ops.set_continuous_clk = dsi_phy_hw_v5_0_set_continuous_clk; phy->ops.commit_phy_timing = dsi_phy_hw_v5_0_commit_phy_timing; + phy->ops.phy_idle_off = dsi_phy_hw_v5_0_phy_idle_off; } /** diff --git a/msm/dsi/dsi_catalog.h b/msm/dsi/dsi_catalog.h index f878484f..c1a0bf96 100644 --- a/msm/dsi/dsi_catalog.h +++ b/msm/dsi/dsi_catalog.h @@ -308,6 +308,7 @@ void dsi_phy_hw_v5_0_dyn_refresh_pipe_delay(struct dsi_phy_hw *phy, int dsi_phy_hw_v5_0_cache_phy_timings(struct dsi_phy_per_lane_cfgs *timings, u32 *dst, u32 size); +void dsi_phy_hw_v5_0_phy_idle_off(struct dsi_phy_hw *phy); void dsi_ctrl_hw_22_configure_cmddma_window(struct dsi_ctrl_hw *ctrl, struct dsi_ctrl_cmd_dma_info *cmd, u32 line_no, u32 window); diff --git a/msm/dsi/dsi_phy_hw_v5_0.c b/msm/dsi/dsi_phy_hw_v5_0.c index 3ce77bd8..7562d7b4 100644 --- a/msm/dsi/dsi_phy_hw_v5_0.c +++ b/msm/dsi/dsi_phy_hw_v5_0.c @@ -879,3 +879,11 @@ void dsi_phy_hw_v5_0_set_continuous_clk(struct dsi_phy_hw *phy, bool enable) wmb(); /* make sure request is set */ } + +void dsi_phy_hw_v5_0_phy_idle_off(struct dsi_phy_hw *phy) +{ + /* enable clamping of PADS */ + DSI_W32(phy, DSIPHY_CMN_CTRL_4, 0x1); + DSI_W32(phy, DSIPHY_CMN_CTRL_3, 0x0); + wmb(); +}