From: Abhinav Kumar <[email protected]>

dp_bridge helpers take drm_bridge as an input and extract the
dp_display object to be used in the dp_display module. Rather than
doing it in a roundabout way, directly pass the dp_display object
to these helpers so that the MST bridge can also re-use the same
helpers.

Signed-off-by: Abhinav Kumar <[email protected]>
Signed-off-by: Yongxing Mou <[email protected]>
Reviewed-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/dp/dp_display.c | 29 +++++++++------------------
 drivers/gpu/drm/msm/dp/dp_display.h |  7 +++++++
 drivers/gpu/drm/msm/dp/dp_drm.c     | 39 ++++++++++++++++++++++++++++++++++++-
 drivers/gpu/drm/msm/dp/dp_drm.h     |  9 ---------
 4 files changed, 54 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 63e5b191f95c..2d5ef087648c 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -738,24 +738,21 @@ static int msm_dp_display_disable(struct 
msm_dp_display_private *dp)
 
 /**
  * msm_dp_bridge_mode_valid - callback to determine if specified mode is valid
- * @bridge: Pointer to drm bridge structure
+ * @dp: Pointer to dp display structure
  * @info: display info
  * @mode: Pointer to drm mode structure
  * Returns: Validity status for specified mode
  */
-enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,
-                                         const struct drm_display_info *info,
-                                         const struct drm_display_mode *mode)
+enum drm_mode_status msm_dp_display_mode_valid(struct msm_dp *dp,
+                                              const struct drm_display_info 
*info,
+                                              const struct drm_display_mode 
*mode)
 {
        const u32 num_components = 3, default_bpp = 24;
        struct msm_dp_display_private *msm_dp_display;
        struct msm_dp_link_info *link_info;
        u32 mode_rate_khz = 0, supported_rate_khz = 0, mode_bpp = 0;
-       struct msm_dp *dp;
        int mode_pclk_khz = mode->clock;
 
-       dp = to_dp_bridge(bridge)->msm_dp_display;
-
        if (!dp || !mode_pclk_khz || !dp->connector) {
                DRM_ERROR("invalid params\n");
                return -EINVAL;
@@ -1406,11 +1403,9 @@ int msm_dp_modeset_init(struct msm_dp *msm_dp_display, 
struct drm_device *dev,
        return 0;
 }
 
-void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
-                                struct drm_atomic_commit *state)
+void msm_dp_display_atomic_enable(struct msm_dp *msm_dp_display,
+                                 struct drm_atomic_commit *state)
 {
-       struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
-       struct msm_dp *msm_dp_display = msm_dp_bridge->msm_dp_display;
        struct drm_crtc *crtc;
        struct drm_crtc_state *crtc_state;
        int rc = 0;
@@ -1419,7 +1414,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge 
*drm_bridge,
        dp = container_of(msm_dp_display, struct msm_dp_display_private, 
msm_dp_display);
 
        crtc = drm_atomic_get_new_crtc_for_encoder(state,
-                                                  drm_bridge->encoder);
+                                                  
msm_dp_display->bridge->encoder);
        if (!crtc)
                return;
        crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
@@ -1449,11 +1444,8 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge 
*drm_bridge,
        drm_dbg_dp(msm_dp_display->drm_dev, "type=%d Done\n", 
msm_dp_display->connector_type);
 }
 
-void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
-                                 struct drm_atomic_commit *state)
+void msm_dp_display_atomic_disable(struct msm_dp *dp)
 {
-       struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
-       struct msm_dp *dp = msm_dp_bridge->msm_dp_display;
        struct msm_dp_display_private *msm_dp_display;
 
        msm_dp_display = container_of(dp, struct msm_dp_display_private, 
msm_dp_display);
@@ -1470,11 +1462,8 @@ static void msm_dp_display_unprepare(struct 
msm_dp_display_private *dp)
        drm_dbg_dp(dp->drm_dev, "type=%d Done\n", 
msm_dp_display->connector_type);
 }
 
-void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
-                                      struct drm_atomic_commit *state)
+void msm_dp_display_atomic_post_disable(struct msm_dp *dp)
 {
-       struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
-       struct msm_dp *dp = msm_dp_bridge->msm_dp_display;
        struct msm_dp_display_private *msm_dp_display;
 
        msm_dp_display = container_of(dp, struct msm_dp_display_private, 
msm_dp_display);
diff --git a/drivers/gpu/drm/msm/dp/dp_display.h 
b/drivers/gpu/drm/msm/dp/dp_display.h
index 0b65e16c790d..5116f7bbbd02 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.h
+++ b/drivers/gpu/drm/msm/dp/dp_display.h
@@ -33,5 +33,12 @@ void msm_dp_display_signal_audio_start(struct msm_dp 
*msm_dp_display);
 void msm_dp_display_signal_audio_complete(struct msm_dp *msm_dp_display);
 void msm_dp_display_set_psr(struct msm_dp *dp, bool enter);
 void msm_dp_display_debugfs_init(struct msm_dp *msm_dp_display, struct dentry 
*dentry, bool is_edp);
+void msm_dp_display_atomic_post_disable(struct msm_dp *dp_display);
+void msm_dp_display_atomic_disable(struct msm_dp *dp_display);
+void msm_dp_display_atomic_enable(struct msm_dp *dp_display,
+                                 struct drm_atomic_commit *state);
+enum drm_mode_status msm_dp_display_mode_valid(struct msm_dp *dp,
+                                              const struct drm_display_info 
*info,
+                                              const struct drm_display_mode 
*mode);
 
 #endif /* _DP_DISPLAY_H_ */
diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c
index 6ac5bac903d9..6b8923d9dff4 100644
--- a/drivers/gpu/drm/msm/dp/dp_drm.c
+++ b/drivers/gpu/drm/msm/dp/dp_drm.c
@@ -49,6 +49,43 @@ static void msm_dp_bridge_debugfs_init(struct drm_bridge 
*bridge, struct dentry
        msm_dp_display_debugfs_init(dp, root, false);
 }
 
+static void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
+                                       struct drm_atomic_commit *state)
+{
+       struct msm_dp_bridge *dp_bridge = to_dp_bridge(drm_bridge);
+       struct msm_dp *dp = dp_bridge->msm_dp_display;
+
+       msm_dp_display_atomic_enable(dp, state);
+}
+
+static void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
+                                        struct drm_atomic_commit *state)
+{
+       struct msm_dp_bridge *dp_bridge = to_dp_bridge(drm_bridge);
+       struct msm_dp *dp = dp_bridge->msm_dp_display;
+
+       msm_dp_display_atomic_disable(dp);
+}
+
+static void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
+                                             struct drm_atomic_commit *state)
+{
+       struct msm_dp_bridge *dp_bridge = to_dp_bridge(drm_bridge);
+       struct msm_dp *dp = dp_bridge->msm_dp_display;
+
+       msm_dp_display_atomic_post_disable(dp);
+}
+
+static enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge 
*drm_bridge,
+                                                    const struct 
drm_display_info *info,
+                                                    const struct 
drm_display_mode *mode)
+{
+       struct msm_dp_bridge *dp_bridge = to_dp_bridge(drm_bridge);
+       struct msm_dp *dp = dp_bridge->msm_dp_display;
+
+       return msm_dp_display_mode_valid(dp, info, mode);
+}
+
 static const struct drm_bridge_funcs msm_dp_bridge_ops = {
        .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
        .atomic_destroy_state   = drm_atomic_helper_bridge_destroy_state,
@@ -115,7 +152,7 @@ static void msm_edp_bridge_atomic_enable(struct drm_bridge 
*drm_bridge,
                return;
        }
 
-       msm_dp_bridge_atomic_enable(drm_bridge, state);
+       msm_dp_display_atomic_enable(dp, state);
 }
 
 static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_drm.h
index 4bd788ea05d5..da412c788503 100644
--- a/drivers/gpu/drm/msm/dp/dp_drm.h
+++ b/drivers/gpu/drm/msm/dp/dp_drm.h
@@ -27,15 +27,6 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, struct 
drm_device *dev,
 
 enum drm_connector_status msm_dp_bridge_detect(struct drm_bridge *bridge,
                                               struct drm_connector *connector);
-void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
-                                struct drm_atomic_commit *state);
-void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
-                                 struct drm_atomic_commit *state);
-void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
-                                      struct drm_atomic_commit *state);
-enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,
-                                         const struct drm_display_info *info,
-                                         const struct drm_display_mode *mode);
 void msm_dp_bridge_hpd_enable(struct drm_bridge *bridge);
 void msm_dp_bridge_hpd_disable(struct drm_bridge *bridge);
 void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,

-- 
2.43.0

Reply via email to