]> www.infradead.org Git - users/willy/linux.git/commitdiff
drm/msm/dsi: make save/restore_state phy-level functions
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Wed, 31 Mar 2021 10:57:24 +0000 (13:57 +0300)
committerRob Clark <robdclark@chromium.org>
Wed, 7 Apr 2021 18:05:45 +0000 (11:05 -0700)
Morph msm_dsi_pll_save/restore_state() into msm_dsi_phy_save/restore_state(),
thus removing last bits of knowledge about msm_dsi_pll from dsi_manager.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <abhinavk@codeaurora.org>
Tested-by: Stephen Boyd <swboyd@chromium.org> # on sc7180 lazor
Link: https://lore.kernel.org/r/20210331105735.3690009-14-dmitry.baryshkov@linaro.org
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/dsi/dsi.h
drivers/gpu/drm/msm/dsi/dsi_manager.c
drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
drivers/gpu/drm/msm/dsi/phy/dsi_phy.h
drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c
drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c
drivers/gpu/drm/msm/dsi/phy/dsi_pll.c
drivers/gpu/drm/msm/dsi/phy/dsi_pll.h

index 0970f05cd47f2b98e48ea29463d086eec2976675..7f99e12efd52f0a1cf0970f38d9194bb6781cc40 100644 (file)
@@ -92,21 +92,6 @@ static inline bool msm_dsi_device_connected(struct msm_dsi *msm_dsi)
 
 struct drm_encoder *msm_dsi_get_encoder(struct msm_dsi *msm_dsi);
 
-/* dsi pll */
-struct msm_dsi_pll;
-#ifdef CONFIG_DRM_MSM_DSI_PLL
-void msm_dsi_pll_save_state(struct msm_dsi_pll *pll);
-int msm_dsi_pll_restore_state(struct msm_dsi_pll *pll);
-#else
-static inline void msm_dsi_pll_save_state(struct msm_dsi_pll *pll)
-{
-}
-static inline int msm_dsi_pll_restore_state(struct msm_dsi_pll *pll)
-{
-       return 0;
-}
-#endif
-
 /* dsi host */
 struct msm_dsi_host;
 int msm_dsi_host_xfer_prepare(struct mipi_dsi_host *host,
@@ -182,11 +167,12 @@ int msm_dsi_phy_enable(struct msm_dsi_phy *phy, int src_pll_id,
 void msm_dsi_phy_disable(struct msm_dsi_phy *phy);
 void msm_dsi_phy_get_shared_timings(struct msm_dsi_phy *phy,
                        struct msm_dsi_phy_shared_timings *shared_timing);
-struct msm_dsi_pll *msm_dsi_phy_get_pll(struct msm_dsi_phy *phy);
 void msm_dsi_phy_set_usecase(struct msm_dsi_phy *phy,
                             enum msm_dsi_phy_usecase uc);
 int msm_dsi_phy_get_clk_provider(struct msm_dsi_phy *phy,
        struct clk **byte_clk_provider, struct clk **pixel_clk_provider);
+void msm_dsi_phy_pll_save_state(struct msm_dsi_phy *phy);
+int msm_dsi_phy_pll_restore_state(struct msm_dsi_phy *phy);
 
 #endif /* __DSI_CONNECTOR_H__ */
 
index 86e36be58701514bb13e99123fe94e756bda2b26..e116e5ff5d247f07be6ff767bc860be106b8e117 100644 (file)
@@ -498,7 +498,6 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
        struct msm_dsi *msm_dsi1 = dsi_mgr_get_dsi(DSI_1);
        struct mipi_dsi_host *host = msm_dsi->host;
        struct drm_panel *panel = msm_dsi->panel;
-       struct msm_dsi_pll *src_pll;
        bool is_dual_dsi = IS_DUAL_DSI();
        int ret;
 
@@ -532,9 +531,8 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
                                                                id, ret);
        }
 
-       /* Save PLL status if it is a clock source */
-       src_pll = msm_dsi_phy_get_pll(msm_dsi->phy);
-       msm_dsi_pll_save_state(src_pll);
+       /* Save PHY status if it is a clock source */
+       msm_dsi_phy_pll_save_state(msm_dsi->phy);
 
        ret = msm_dsi_host_power_off(host);
        if (ret)
index 46561435a27d346c69ad5321a0f0d449c0da6639..a1360e2dad3b0c2d87b57e709586bee6a8940d05 100644 (file)
@@ -799,9 +799,9 @@ int msm_dsi_phy_enable(struct msm_dsi_phy *phy, int src_pll_id,
         * source.
         */
        if (phy->usecase != MSM_DSI_PHY_SLAVE) {
-               ret = msm_dsi_pll_restore_state(phy->pll);
+               ret = msm_dsi_phy_pll_restore_state(phy);
                if (ret) {
-                       DRM_DEV_ERROR(dev, "%s: failed to restore pll state, %d\n",
+                       DRM_DEV_ERROR(dev, "%s: failed to restore phy state, %d\n",
                                __func__, ret);
                        goto pll_restor_fail;
                }
@@ -838,14 +838,6 @@ void msm_dsi_phy_get_shared_timings(struct msm_dsi_phy *phy,
               sizeof(*shared_timings));
 }
 
-struct msm_dsi_pll *msm_dsi_phy_get_pll(struct msm_dsi_phy *phy)
-{
-       if (!phy)
-               return NULL;
-
-       return phy->pll;
-}
-
 void msm_dsi_phy_set_usecase(struct msm_dsi_phy *phy,
                             enum msm_dsi_phy_usecase uc)
 {
@@ -863,3 +855,26 @@ int msm_dsi_phy_get_clk_provider(struct msm_dsi_phy *phy,
 
        return -EINVAL;
 }
+
+void msm_dsi_phy_pll_save_state(struct msm_dsi_phy *phy)
+{
+       if (phy->cfg->pll_ops.save_state) {
+               phy->cfg->pll_ops.save_state(phy->pll);
+               phy->pll->state_saved = true;
+       }
+}
+
+int msm_dsi_phy_pll_restore_state(struct msm_dsi_phy *phy)
+{
+       int ret;
+
+       if (phy->cfg->pll_ops.restore_state && phy->pll->state_saved) {
+               ret = phy->cfg->pll_ops.restore_state(phy->pll);
+               if (ret)
+                       return ret;
+
+               phy->pll->state_saved = false;
+       }
+
+       return 0;
+}
index 2c5196844ba9ef46749a3687c80abdcc9c0e3593..8133732e0c7f7622dc8658f27fd6917309ec1f9f 100644 (file)
@@ -6,6 +6,7 @@
 #ifndef __DSI_PHY_H__
 #define __DSI_PHY_H__
 
+#include <linux/clk-provider.h>
 #include <linux/regulator/consumer.h>
 
 #include "dsi.h"
 #define dsi_phy_read(offset) msm_readl((offset))
 #define dsi_phy_write(offset, data) msm_writel((data), (offset))
 
+struct msm_dsi_pll {
+       struct clk_hw   clk_hw;
+       bool            pll_on;
+       bool            state_saved;
+
+       const struct msm_dsi_phy_cfg *cfg;
+};
+
+#define hw_clk_to_pll(x) container_of(x, struct msm_dsi_pll, clk_hw)
+
 struct msm_dsi_phy_ops {
        int (*pll_init)(struct msm_dsi_phy *phy);
        int (*enable)(struct msm_dsi_phy *phy, int src_pll_id,
index 6300b92c65eb611a86578501e47d289a78bf7fa7..d81cea661f5cd53fa305ae0da6e2be0d4b1b161e 100644 (file)
@@ -782,7 +782,7 @@ static int dsi_pll_10nm_init(struct msm_dsi_phy *phy)
        phy->pll = pll;
 
        /* TODO: Remove this when we have proper display handover support */
-       msm_dsi_pll_save_state(pll);
+       msm_dsi_phy_pll_save_state(phy);
 
        return 0;
 }
index c482e51d1bee9fd0815848ae3c1468b1b9795fc3..d725ceb0b90c30d9ccd99620094a91ea84aa6bb1 100644 (file)
@@ -807,7 +807,7 @@ static int dsi_pll_7nm_init(struct msm_dsi_phy *phy)
        phy->pll = pll;
 
        /* TODO: Remove this when we have proper display handover support */
-       msm_dsi_pll_save_state(pll);
+       msm_dsi_phy_pll_save_state(phy);
 
        return 0;
 }
index 96de79b94f1b02c5004c2453c693caa99485e9fc..652c2d6bfeec168d78cb2f708c675b3a90b8d640 100644 (file)
@@ -56,29 +56,3 @@ void msm_dsi_pll_helper_clk_unprepare(struct clk_hw *hw)
 
        pll->pll_on = false;
 }
-
-/*
- * DSI PLL API
- */
-void msm_dsi_pll_save_state(struct msm_dsi_pll *pll)
-{
-       if (pll->cfg->pll_ops.save_state) {
-               pll->cfg->pll_ops.save_state(pll);
-               pll->state_saved = true;
-       }
-}
-
-int msm_dsi_pll_restore_state(struct msm_dsi_pll *pll)
-{
-       int ret;
-
-       if (pll->cfg->pll_ops.restore_state && pll->state_saved) {
-               ret = pll->cfg->pll_ops.restore_state(pll);
-               if (ret)
-                       return ret;
-
-               pll->state_saved = false;
-       }
-
-       return 0;
-}
index c94f079b8275e6a83a93c91a1ab42edd8d804633..eca13cf67c2146e975701b6e79f4df6f160af50b 100644 (file)
@@ -6,21 +6,10 @@
 #ifndef __DSI_PLL_H__
 #define __DSI_PLL_H__
 
-#include <linux/clk-provider.h>
 #include <linux/delay.h>
 
 #include "dsi.h"
 
-struct msm_dsi_pll {
-       struct clk_hw   clk_hw;
-       bool            pll_on;
-       bool            state_saved;
-
-       const struct msm_dsi_phy_cfg *cfg;
-};
-
-#define hw_clk_to_pll(x) container_of(x, struct msm_dsi_pll, clk_hw)
-
 static inline void pll_write(void __iomem *reg, u32 data)
 {
        msm_writel(data, reg);