With every cross-module query of the DSI, DP and HDMI sub-blocks now going through the msm_display interface, struct msm_kms no longer needs to know their concrete types.
Store the sub-blocks as struct msm_display pointers in struct msm_kms; each sub-driver registers &obj->display. The msm_*_get_display() accessors are no longer needed and are removed, and callers use kms->dsi[]/dp[]/hdmi directly. No functional change intended. Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Dmitry Baryshkov <[email protected]> --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 6 +++--- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 2 +- drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c | 6 +++--- drivers/gpu/drm/msm/dp/dp_display.c | 7 +------ drivers/gpu/drm/msm/dsi/dsi.c | 7 +------ drivers/gpu/drm/msm/hdmi/hdmi.c | 7 +------ drivers/gpu/drm/msm/msm_drv.h | 15 --------------- drivers/gpu/drm/msm/msm_kms.c | 11 +++++------ drivers/gpu/drm/msm/msm_kms.h | 6 +++--- 10 files changed, 19 insertions(+), 50 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index 569f3759d02c..aa8a9b7c1beb 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -261,11 +261,11 @@ static struct msm_display *dpu_encoder_get_display(struct drm_device *dev, switch (disp_info->intf_type) { case INTF_DP: - return msm_dp_get_display(priv->kms->dp[index]); + return priv->kms->dp[index]; case INTF_DSI: - return msm_dsi_get_display(priv->kms->dsi[index]); + return priv->kms->dsi[index]; case INTF_HDMI: - return msm_hdmi_get_display(priv->kms->hdmi); + return priv->kms->hdmi; default: return NULL; } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 2eeaef963e1a..ec5e02c395f6 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -603,7 +603,7 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev, if (!priv->kms->dsi[i]) continue; - display = msm_dsi_get_display(priv->kms->dsi[i]); + display = priv->kms->dsi[i]; if (!display->funcs->needs_encoder(display)) continue; diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c index e372d295b80f..c91915030111 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -361,7 +361,7 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms, break; } - display = msm_dsi_get_display(priv->kms->dsi[dsi_id]); + display = priv->kms->dsi[dsi_id]; priv->kms->dsi_encoder[dsi_id] = encoder; mdp5_encoder_set_intf_mode(encoder, display->funcs->is_cmd_mode(display)); diff --git a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c index b42a92c2ffad..d376c3cdd8b5 100644 --- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c +++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c @@ -140,18 +140,18 @@ void msm_disp_snapshot_capture_state(struct msm_disp_state *disp_state) kms = priv->kms; for (i = 0; i < ARRAY_SIZE(kms->dp); i++) { - display = msm_dp_get_display(kms->dp[i]); + display = kms->dp[i]; if (display) display->funcs->snapshot(display, disp_state); } for (i = 0; i < ARRAY_SIZE(kms->dsi); i++) { - display = msm_dsi_get_display(kms->dsi[i]); + display = kms->dsi[i]; if (display) display->funcs->snapshot(display, disp_state); } - display = msm_hdmi_get_display(kms->hdmi); + display = kms->hdmi; if (display) display->funcs->snapshot(display, disp_state); diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 914cf9dd0f21..1baeb9401cfa 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -215,7 +215,7 @@ static int msm_dp_display_bind(struct device *dev, struct device *master, dp->msm_dp_display.drm_dev = drm; dp->msm_dp_display.display.funcs = &msm_dp_display_funcs; - priv->kms->dp[dp->id] = &dp->msm_dp_display; + priv->kms->dp[dp->id] = &dp->msm_dp_display.display; dp->drm_dev = drm; dp->aux->drm_dev = drm; @@ -1406,11 +1406,6 @@ static const struct msm_display_funcs msm_dp_display_funcs = { .needs_encoder = msm_dp_display_needs_encoder, }; -struct msm_display *msm_dp_get_display(struct msm_dp *msm_dp_display) -{ - return msm_dp_display ? &msm_dp_display->display : NULL; -} - void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, struct drm_atomic_commit *state) { diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c index 69e57ab47258..3bcea5f5b5a3 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.c +++ b/drivers/gpu/drm/msm/dsi/dsi.c @@ -170,7 +170,7 @@ static int dsi_bind(struct device *dev, struct device *master, void *data) } msm_dsi->display.funcs = &msm_dsi_display_funcs; - priv->kms->dsi[msm_dsi->id] = msm_dsi; + priv->kms->dsi[msm_dsi->id] = &msm_dsi->display; return 0; } @@ -319,8 +319,3 @@ static const struct msm_display_funcs msm_dsi_display_funcs = { .needs_encoder = msm_dsi_needs_encoder, }; -struct msm_display *msm_dsi_get_display(struct msm_dsi *msm_dsi) -{ - return msm_dsi ? &msm_dsi->display : NULL; -} - diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c index 0327098287d1..1d5a4b63f3c8 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi.c @@ -276,11 +276,6 @@ static const struct msm_display_funcs msm_hdmi_display_funcs = { .needs_encoder = msm_hdmi_needs_encoder, }; -struct msm_display *msm_hdmi_get_display(struct hdmi *hdmi) -{ - return hdmi ? &hdmi->display : NULL; -} - /* * The hdmi device: */ @@ -315,7 +310,7 @@ static int msm_hdmi_bind(struct device *dev, struct device *master, void *data) if (err) return err; hdmi->display.funcs = &msm_hdmi_display_funcs; - priv->kms->hdmi = hdmi; + priv->kms->hdmi = &hdmi->display; return 0; } diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 378d2cc80b66..3d9ae49cba49 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -324,14 +324,9 @@ struct msm_display { struct hdmi; #ifdef CONFIG_DRM_MSM_HDMI -struct msm_display *msm_hdmi_get_display(struct hdmi *hdmi); void __init msm_hdmi_register(void); void __exit msm_hdmi_unregister(void); #else -static inline struct msm_display *msm_hdmi_get_display(struct hdmi *hdmi) -{ - return NULL; -} static inline void __init msm_hdmi_register(void) {} static inline void __exit msm_hdmi_unregister(void) {} #endif @@ -342,7 +337,6 @@ int dsi_dev_attach(struct platform_device *pdev); void dsi_dev_detach(struct platform_device *pdev); void __init msm_dsi_register(void); void __exit msm_dsi_unregister(void); -struct msm_display *msm_dsi_get_display(struct msm_dsi *msm_dsi); #else static inline void __init msm_dsi_register(void) { @@ -350,17 +344,12 @@ static inline void __init msm_dsi_register(void) static inline void __exit msm_dsi_unregister(void) { } -static inline struct msm_display *msm_dsi_get_display(struct msm_dsi *msm_dsi) -{ - return NULL; -} #endif struct msm_dp; #ifdef CONFIG_DRM_MSM_DP int __init msm_dp_register(void); void __exit msm_dp_unregister(void); -struct msm_display *msm_dp_get_display(struct msm_dp *dp_display); #else static inline int __init msm_dp_register(void) @@ -370,10 +359,6 @@ static inline int __init msm_dp_register(void) static inline void __exit msm_dp_unregister(void) { } -static inline struct msm_display *msm_dp_get_display(struct msm_dp *dp_display) -{ - return NULL; -} #endif diff --git a/drivers/gpu/drm/msm/msm_kms.c b/drivers/gpu/drm/msm/msm_kms.c index 3f855f9b3d06..1a081e15a0a8 100644 --- a/drivers/gpu/drm/msm/msm_kms.c +++ b/drivers/gpu/drm/msm/msm_kms.c @@ -286,21 +286,20 @@ static int msm_kms_init_connectors(struct drm_device *ddev) int i, ret; for (i = 0; i < ARRAY_SIZE(kms->dsi); i++) { - ret = msm_display_modeset_init(msm_dsi_get_display(kms->dsi[i]), - ddev, kms->dsi_encoder[i]); + ret = msm_display_modeset_init(kms->dsi[i], ddev, + kms->dsi_encoder[i]); if (ret) goto fail; } for (i = 0; i < ARRAY_SIZE(kms->dp); i++) { - ret = msm_display_modeset_init(msm_dp_get_display(kms->dp[i]), - ddev, kms->dp_encoder[i]); + ret = msm_display_modeset_init(kms->dp[i], ddev, + kms->dp_encoder[i]); if (ret) goto fail; } - ret = msm_display_modeset_init(msm_hdmi_get_display(kms->hdmi), - ddev, kms->hdmi_encoder); + ret = msm_display_modeset_init(kms->hdmi, ddev, kms->hdmi_encoder); if (ret) goto fail; diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h index 06646091604a..cbb9c9dcc193 100644 --- a/drivers/gpu/drm/msm/msm_kms.h +++ b/drivers/gpu/drm/msm/msm_kms.h @@ -139,13 +139,13 @@ struct msm_kms { const struct msm_kms_funcs *funcs; struct drm_device *dev; - struct hdmi *hdmi; + struct msm_display *hdmi; struct drm_encoder *hdmi_encoder; - struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT]; + struct msm_display *dsi[MSM_DSI_CONTROLLER_COUNT]; struct drm_encoder *dsi_encoder[MSM_DSI_CONTROLLER_COUNT]; - struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT]; + struct msm_display *dp[MSM_DP_CONTROLLER_COUNT]; struct drm_encoder *dp_encoder[MSM_DP_CONTROLLER_COUNT]; /* irq number to be passed on to msm_irq_install */ -- 2.47.3
