On 12/11/2024 3:41 PM, Dmitry Baryshkov wrote:
All other submodules pass arguments directly. Drop struct
msm_dp_panel_in that is used to wrap dp_panel's submodule args and pass
all data to msm_dp_panel_get() directly.

Reviewed-by: Stephen Boyd <swb...@chromium.org>
Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
  drivers/gpu/drm/msm/dp/dp_display.c |  9 +--------
  drivers/gpu/drm/msm/dp/dp_panel.c   | 15 ++++++++-------
  drivers/gpu/drm/msm/dp/dp_panel.h   | 10 ++--------
  3 files changed, 11 insertions(+), 23 deletions(-)


Change not necessarily tied to catalog cleanup, and can be sent independently IMO.

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 
cb02d5d5b404925707c737ed75e9e83fbec34f83..a2cdcdac042d63a59ff71aefcecb7f8b22f01167
 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -722,9 +722,6 @@ static int msm_dp_init_sub_modules(struct 
msm_dp_display_private *dp)
  {
        int rc = 0;
        struct device *dev = &dp->msm_dp_display.pdev->dev;
-       struct msm_dp_panel_in panel_in = {
-               .dev = dev,
-       };
        struct phy *phy;
phy = devm_phy_get(dev, "dp");
@@ -765,11 +762,7 @@ static int msm_dp_init_sub_modules(struct 
msm_dp_display_private *dp)
                goto error_link;
        }
- panel_in.aux = dp->aux;
-       panel_in.catalog = dp->catalog;
-       panel_in.link = dp->link;
-
-       dp->panel = msm_dp_panel_get(&panel_in);
+       dp->panel = msm_dp_panel_get(dev, dp->aux, dp->link, dp->catalog);
        if (IS_ERR(dp->panel)) {
                rc = PTR_ERR(dp->panel);
                DRM_ERROR("failed to initialize panel, rc = %d\n", rc);
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.c 
b/drivers/gpu/drm/msm/dp/dp_panel.c
index 
25869e2ac93aba0bffeddae9f95917d81870d8cb..49bbcde8cf60ac1b297310a50191135d79b092fb
 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.c
+++ b/drivers/gpu/drm/msm/dp/dp_panel.c
@@ -659,25 +659,26 @@ static int msm_dp_panel_parse_dt(struct msm_dp_panel 
*msm_dp_panel)
        return 0;
  }
-struct msm_dp_panel *msm_dp_panel_get(struct msm_dp_panel_in *in)
+struct msm_dp_panel *msm_dp_panel_get(struct device *dev, struct drm_dp_aux 
*aux,
+                             struct msm_dp_link *link, struct msm_dp_catalog 
*catalog)
  {

so this API, takes a filled input panel, makes a msm_dp_panel out of it by filling out more information on top of what was already passed in and returns a msm_dp_panel.

So IOW, converts a msm_dp_panel_in to msm_dp_panel.

What is the gain by passing individual params rather than passing them as a struct instead? Isnt it better to have it within that struct to show the conversion and moreover we dont have to pass in 4 arguments instead of 1.


        struct msm_dp_panel_private *panel;
        struct msm_dp_panel *msm_dp_panel;
        int ret;
- if (!in->dev || !in->catalog || !in->aux || !in->link) {
+       if (!dev || !catalog || !aux || !link) {
                DRM_ERROR("invalid input\n");
                return ERR_PTR(-EINVAL);
        }
- panel = devm_kzalloc(in->dev, sizeof(*panel), GFP_KERNEL);
+       panel = devm_kzalloc(dev, sizeof(*panel), GFP_KERNEL);
        if (!panel)
                return ERR_PTR(-ENOMEM);
- panel->dev = in->dev;
-       panel->aux = in->aux;
-       panel->catalog = in->catalog;
-       panel->link = in->link;
+       panel->dev = dev;
+       panel->aux = aux;
+       panel->catalog = catalog;
+       panel->link = link;
msm_dp_panel = &panel->msm_dp_panel;
        msm_dp_panel->max_bw_code = DP_LINK_BW_8_1;
diff --git a/drivers/gpu/drm/msm/dp/dp_panel.h 
b/drivers/gpu/drm/msm/dp/dp_panel.h
index 
f305b1151118b53762368905b70d951a366ba1a8..a4719a3bbbddd18304227a006e82a5ce9ad7bbf3
 100644
--- a/drivers/gpu/drm/msm/dp/dp_panel.h
+++ b/drivers/gpu/drm/msm/dp/dp_panel.h
@@ -21,13 +21,6 @@ struct msm_dp_display_mode {
        bool out_fmt_is_yuv_420;
  };
-struct msm_dp_panel_in {
-       struct device *dev;
-       struct drm_dp_aux *aux;
-       struct msm_dp_link *link;
-       struct msm_dp_catalog *catalog;
-};
-
  struct msm_dp_panel_psr {
        u8 version;
        u8 capabilities;
@@ -94,6 +87,7 @@ static inline bool is_lane_count_valid(u32 lane_count)
                lane_count == 4);
  }
-struct msm_dp_panel *msm_dp_panel_get(struct msm_dp_panel_in *in);
+struct msm_dp_panel *msm_dp_panel_get(struct device *dev, struct drm_dp_aux 
*aux,
+                             struct msm_dp_link *link, struct msm_dp_catalog 
*catalog);
  void msm_dp_panel_put(struct msm_dp_panel *msm_dp_panel);
  #endif /* _DP_PANEL_H_ */

Reply via email to