Data for HDMI, DSI and DP blocks only makes sense for the KMS parts of
the driver. Move corresponding data pointers from struct msm_drm_private
to struct msm_kms.

Suggested-by: Abhinav Kumar <[email protected]>
Signed-off-by: Dmitry Baryshkov <[email protected]>
---
 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c       | 11 ++++----
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c           | 32 +++++++++++------------
 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c          |  8 +++---
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c          | 13 ++++-----
 drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c | 12 ++++-----
 drivers/gpu/drm/msm/dp/dp_display.c               |  6 ++---
 drivers/gpu/drm/msm/dsi/dsi.c                     |  4 +--
 drivers/gpu/drm/msm/hdmi/hdmi.c                   |  9 ++++---
 drivers/gpu/drm/msm/msm_drv.h                     | 11 +-------
 drivers/gpu/drm/msm/msm_kms.h                     |  6 +++++
 10 files changed, 55 insertions(+), 57 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
index 
f7abe8ba73ef0899ff1985ebf26571b7c459a52f..05e5f3463e30c9a6bd5b740580720ae2bf6b3246
 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
@@ -264,7 +264,7 @@ bool dpu_encoder_needs_periph_flush(struct dpu_encoder_phys 
*phys_enc)
        mode = &phys_enc->cached_mode;
 
        return phys_enc->hw_intf->cap->type == INTF_DP &&
-              
msm_dp_needs_periph_flush(priv->dp[disp_info->h_tile_instance[0]], mode);
+              
msm_dp_needs_periph_flush(priv->kms->dp[disp_info->h_tile_instance[0]], mode);
 }
 
 /**
@@ -283,9 +283,9 @@ bool dpu_encoder_is_widebus_enabled(const struct 
drm_encoder *drm_enc)
        index = disp_info->h_tile_instance[0];
 
        if (disp_info->intf_type == INTF_DP)
-               return msm_dp_wide_bus_available(priv->dp[index]);
+               return msm_dp_wide_bus_available(priv->kms->dp[index]);
        else if (disp_info->intf_type == INTF_DSI)
-               return msm_dsi_wide_bus_enabled(priv->dsi[index]);
+               return msm_dsi_wide_bus_enabled(priv->kms->dsi[index]);
 
        return false;
 }
@@ -647,7 +647,7 @@ struct drm_dsc_config *dpu_encoder_get_dsc_config(struct 
drm_encoder *drm_enc)
        int index = dpu_enc->disp_info.h_tile_instance[0];
 
        if (dpu_enc->disp_info.intf_type == INTF_DSI)
-               return msm_dsi_get_dsc_config(priv->dsi[index]);
+               return msm_dsi_get_dsc_config(priv->kms->dsi[index]);
 
        return NULL;
 }
@@ -709,7 +709,8 @@ void dpu_encoder_update_topology(struct drm_encoder 
*drm_enc,
                if (fb && MSM_FORMAT_IS_YUV(msm_framebuffer_format(fb)))
                        topology->num_cdm++;
        } else if (disp_info->intf_type == INTF_DP) {
-               if 
(msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], adj_mode))
+               if 
(msm_dp_is_yuv_420_enabled(priv->kms->dp[disp_info->h_tile_instance[0]],
+                                             adj_mode))
                        topology->num_cdm++;
        }
 }
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c 
b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
index 
7025f521b70e501eefa69ddcdba64d38e0ca5465..12dcb32b472497f9e59619db4e810abfbf610c7c
 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
@@ -583,7 +583,7 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
        struct msm_display_info info;
        int i, rc = 0;
 
-       if (!(priv->dsi[0] || priv->dsi[1]))
+       if (!(priv->kms->dsi[0] || priv->kms->dsi[1]))
                return rc;
 
        /*
@@ -594,26 +594,26 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
         *
         * TODO: Support swapping DSI0 and DSI1 in the bonded setup.
         */
-       for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) {
+       for (i = 0; i < ARRAY_SIZE(priv->kms->dsi); i++) {
                int other = (i + 1) % 2;
 
-               if (!priv->dsi[i])
+               if (!priv->kms->dsi[i])
                        continue;
 
-               if (msm_dsi_is_bonded_dsi(priv->dsi[i]) &&
-                   !msm_dsi_is_master_dsi(priv->dsi[i]))
+               if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]) &&
+                   !msm_dsi_is_master_dsi(priv->kms->dsi[i]))
                        continue;
 
                memset(&info, 0, sizeof(info));
                info.intf_type = INTF_DSI;
 
                info.h_tile_instance[info.num_of_h_tiles++] = i;
-               if (msm_dsi_is_bonded_dsi(priv->dsi[i]))
+               if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]))
                        info.h_tile_instance[info.num_of_h_tiles++] = other;
 
-               info.is_cmd_mode = msm_dsi_is_cmd_mode(priv->dsi[i]);
+               info.is_cmd_mode = msm_dsi_is_cmd_mode(priv->kms->dsi[i]);
 
-               rc = dpu_kms_dsi_set_te_source(&info, priv->dsi[i]);
+               rc = dpu_kms_dsi_set_te_source(&info, priv->kms->dsi[i]);
                if (rc) {
                        DPU_ERROR("failed to identify TE source for dsi 
display\n");
                        return rc;
@@ -625,15 +625,15 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
                        return PTR_ERR(encoder);
                }
 
-               rc = msm_dsi_modeset_init(priv->dsi[i], dev, encoder);
+               rc = msm_dsi_modeset_init(priv->kms->dsi[i], dev, encoder);
                if (rc) {
                        DPU_ERROR("modeset_init failed for dsi[%d], rc = %d\n",
                                i, rc);
                        break;
                }
 
-               if (msm_dsi_is_bonded_dsi(priv->dsi[i]) && priv->dsi[other]) {
-                       rc = msm_dsi_modeset_init(priv->dsi[other], dev, 
encoder);
+               if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]) && 
priv->kms->dsi[other]) {
+                       rc = msm_dsi_modeset_init(priv->kms->dsi[other], dev, 
encoder);
                        if (rc) {
                                DPU_ERROR("modeset_init failed for dsi[%d], rc 
= %d\n",
                                        other, rc);
@@ -655,8 +655,8 @@ static int _dpu_kms_initialize_displayport(struct 
drm_device *dev,
        int rc;
        int i;
 
-       for (i = 0; i < ARRAY_SIZE(priv->dp); i++) {
-               if (!priv->dp[i])
+       for (i = 0; i < ARRAY_SIZE(priv->kms->dp); i++) {
+               if (!priv->kms->dp[i])
                        continue;
 
                memset(&info, 0, sizeof(info));
@@ -671,7 +671,7 @@ static int _dpu_kms_initialize_displayport(struct 
drm_device *dev,
                }
 
                yuv_supported = !!dpu_kms->catalog->cdm;
-               rc = msm_dp_modeset_init(priv->dp[i], dev, encoder, 
yuv_supported);
+               rc = msm_dp_modeset_init(priv->kms->dp[i], dev, encoder, 
yuv_supported);
                if (rc) {
                        DPU_ERROR("modeset_init failed for DP, rc = %d\n", rc);
                        return rc;
@@ -689,7 +689,7 @@ static int _dpu_kms_initialize_hdmi(struct drm_device *dev,
        struct msm_display_info info;
        int rc;
 
-       if (!priv->hdmi)
+       if (!priv->kms->hdmi)
                return 0;
 
        memset(&info, 0, sizeof(info));
@@ -703,7 +703,7 @@ static int _dpu_kms_initialize_hdmi(struct drm_device *dev,
                return PTR_ERR(encoder);
        }
 
-       rc = msm_hdmi_modeset_init(priv->hdmi, dev, encoder);
+       rc = msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder);
        if (rc) {
                DPU_ERROR("modeset_init failed for DP, rc = %d\n", rc);
                return rc;
diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c 
b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
index 
1aa7d65afbd0b4e8a231d1d4ff7a7120e8b7391e..0952c7f18abdca4a7e24e5af8a7132456bfec129
 100644
--- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c
@@ -250,9 +250,9 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
                /* DTV can be hooked to DMA_E: */
                encoder->possible_crtcs = 1 << 1;
 
-               if (priv->hdmi) {
+               if (priv->kms->hdmi) {
                        /* Construct bridge/connector for HDMI: */
-                       ret = msm_hdmi_modeset_init(priv->hdmi, dev, encoder);
+                       ret = msm_hdmi_modeset_init(priv->kms->hdmi, dev, 
encoder);
                        if (ret) {
                                DRM_DEV_ERROR(dev->dev, "failed to initialize 
HDMI: %d\n", ret);
                                return ret;
@@ -264,7 +264,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
                /* only DSI1 supported for now */
                dsi_id = 0;
 
-               if (!priv->dsi[dsi_id])
+               if (!priv->kms->dsi[dsi_id])
                        break;
 
                encoder = mdp4_dsi_encoder_init(dev);
@@ -278,7 +278,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
                /* TODO: Add DMA_S later? */
                encoder->possible_crtcs = 1 << DMA_P;
 
-               ret = msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder);
+               ret = msm_dsi_modeset_init(priv->kms->dsi[dsi_id], dev, 
encoder);
                if (ret) {
                        DRM_DEV_ERROR(dev->dev, "failed to initialize DSI: 
%d\n",
                                ret);
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c 
b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index 
4c9e79fc00e9d8ca8de294c83559e72a2e48d1d2..5b6ca8dd929e1870b7228af93da03886524f5f20
 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -312,7 +312,7 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
                DRM_DEV_INFO(dev->dev, "Skipping eDP interface %d\n", 
intf->num);
                break;
        case INTF_HDMI:
-               if (!priv->hdmi)
+               if (!priv->kms->hdmi)
                        break;
 
                ctl = mdp5_ctlm_request(ctlm, intf->num);
@@ -327,7 +327,7 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
                        break;
                }
 
-               ret = msm_hdmi_modeset_init(priv->hdmi, dev, encoder);
+               ret = msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder);
                break;
        case INTF_DSI:
        {
@@ -335,14 +335,14 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
                                        mdp5_cfg_get_hw_config(mdp5_kms->cfg);
                int dsi_id = get_dsi_id_from_intf(hw_cfg, intf->num);
 
-               if ((dsi_id >= ARRAY_SIZE(priv->dsi)) || (dsi_id < 0)) {
+               if ((dsi_id >= ARRAY_SIZE(priv->kms->dsi)) || (dsi_id < 0)) {
                        DRM_DEV_ERROR(dev->dev, "failed to find dsi from intf 
%d\n",
                                intf->num);
                        ret = -EINVAL;
                        break;
                }
 
-               if (!priv->dsi[dsi_id])
+               if (!priv->kms->dsi[dsi_id])
                        break;
 
                ctl = mdp5_ctlm_request(ctlm, intf->num);
@@ -357,9 +357,10 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
                        break;
                }
 
-               ret = msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder);
+               ret = msm_dsi_modeset_init(priv->kms->dsi[dsi_id], dev, 
encoder);
                if (!ret)
-                       mdp5_encoder_set_intf_mode(encoder, 
msm_dsi_is_cmd_mode(priv->dsi[dsi_id]));
+                       mdp5_encoder_set_intf_mode(encoder,
+                                                  
msm_dsi_is_cmd_mode(priv->kms->dsi[dsi_id]));
 
                break;
        }
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 
07a2c1e872193bc96172c84142bd4ecc93a95a1c..071bcdea80f7114308e5a1e1a989ad0f064a09d2
 100644
--- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
+++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
@@ -127,18 +127,18 @@ void msm_disp_snapshot_capture_state(struct 
msm_disp_state *disp_state)
        priv = drm_dev->dev_private;
        kms = priv->kms;
 
-       for (i = 0; i < ARRAY_SIZE(priv->dp); i++) {
-               if (!priv->dp[i])
+       for (i = 0; i < ARRAY_SIZE(kms->dp); i++) {
+               if (!kms->dp[i])
                        continue;
 
-               msm_dp_snapshot(disp_state, priv->dp[i]);
+               msm_dp_snapshot(disp_state, kms->dp[i]);
        }
 
-       for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) {
-               if (!priv->dsi[i])
+       for (i = 0; i < ARRAY_SIZE(kms->dsi); i++) {
+               if (!kms->dsi[i])
                        continue;
 
-               msm_dsi_snapshot(disp_state, priv->dsi[i]);
+               msm_dsi_snapshot(disp_state, kms->dsi[i]);
        }
 
        if (kms->funcs->snapshot)
diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index 
2006e7fe78848531bd121c07ebb449decab66029..d87d47cc7ec3eb757ac192c411000bc50b824c59
 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -292,9 +292,7 @@ static int msm_dp_display_bind(struct device *dev, struct 
device *master,
        struct drm_device *drm = priv->dev;
 
        dp->msm_dp_display.drm_dev = drm;
-       priv->dp[dp->id] = &dp->msm_dp_display;
-
-
+       priv->kms->dp[dp->id] = &dp->msm_dp_display;
 
        dp->drm_dev = drm;
        dp->aux->drm_dev = drm;
@@ -328,7 +326,7 @@ static void msm_dp_display_unbind(struct device *dev, 
struct device *master,
        msm_dp_aux_unregister(dp->aux);
        dp->drm_dev = NULL;
        dp->aux->drm_dev = NULL;
-       priv->dp[dp->id] = NULL;
+       priv->kms->dp[dp->id] = NULL;
 }
 
 static const struct component_ops msm_dp_display_comp_ops = {
diff --git a/drivers/gpu/drm/msm/dsi/dsi.c b/drivers/gpu/drm/msm/dsi/dsi.c
index 
2962158776135d6e3c5b119bf4341c135c8f5248..d8bb40ef820e2b8c8ac933ca01e1dc46f087a218
 100644
--- a/drivers/gpu/drm/msm/dsi/dsi.c
+++ b/drivers/gpu/drm/msm/dsi/dsi.c
@@ -136,7 +136,7 @@ static int dsi_bind(struct device *dev, struct device 
*master, void *data)
                msm_dsi->next_bridge = ext_bridge;
        }
 
-       priv->dsi[msm_dsi->id] = msm_dsi;
+       priv->kms->dsi[msm_dsi->id] = msm_dsi;
 
        return 0;
 }
@@ -148,7 +148,7 @@ static void dsi_unbind(struct device *dev, struct device 
*master,
        struct msm_dsi *msm_dsi = dev_get_drvdata(dev);
 
        msm_dsi_tx_buf_free(msm_dsi->host);
-       priv->dsi[msm_dsi->id] = NULL;
+       priv->kms->dsi[msm_dsi->id] = NULL;
 }
 
 static const struct component_ops dsi_ops = {
diff --git a/drivers/gpu/drm/msm/hdmi/hdmi.c b/drivers/gpu/drm/msm/hdmi/hdmi.c
index 
2fd388b892dcb3d83cf57b4616b7a65f9ff674d1..5afac09c0d3347f85a3449207b3c876aae4dd1e2
 100644
--- a/drivers/gpu/drm/msm/hdmi/hdmi.c
+++ b/drivers/gpu/drm/msm/hdmi/hdmi.c
@@ -15,6 +15,7 @@
 #include <drm/drm_of.h>
 #include <drm/display/drm_hdmi_state_helper.h>
 
+#include "msm_kms.h"
 #include "hdmi.h"
 
 void msm_hdmi_set_mode(struct hdmi *hdmi, bool power_on)
@@ -244,7 +245,7 @@ static int msm_hdmi_bind(struct device *dev, struct device 
*master, void *data)
        err = msm_hdmi_init(hdmi);
        if (err)
                return err;
-       priv->hdmi = hdmi;
+       priv->kms->hdmi = hdmi;
 
        return 0;
 }
@@ -254,9 +255,9 @@ static void msm_hdmi_unbind(struct device *dev, struct 
device *master,
 {
        struct msm_drm_private *priv = dev_get_drvdata(master);
 
-       if (priv->hdmi) {
-               msm_hdmi_destroy(priv->hdmi);
-               priv->hdmi = NULL;
+       if (priv->kms->hdmi) {
+               msm_hdmi_destroy(priv->kms->hdmi);
+               priv->kms->hdmi = NULL;
        }
 }
 
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h
index 
88ce305792fd89f280b39bd92888a18abd0343e3..e7872b752c6c8e5869927634184733796afa1967
 100644
--- a/drivers/gpu/drm/msm/msm_drv.h
+++ b/drivers/gpu/drm/msm/msm_drv.h
@@ -86,16 +86,6 @@ struct msm_drm_private {
        /* subordinate devices, if present: */
        struct platform_device *gpu_pdev;
 
-       /* possibly this should be in the kms component, but it is
-        * shared by both mdp4 and mdp5..
-        */
-       struct hdmi *hdmi;
-
-       /* DSI is shared by mdp4 and mdp5 */
-       struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT];
-
-       struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT];
-
        /* when we have more than one 'msm_gpu' these need to be an array: */
        struct msm_gpu *gpu;
 
@@ -367,6 +357,7 @@ static inline const char *msm_dsi_get_te_source(struct 
msm_dsi *msm_dsi)
 }
 #endif
 
+struct msm_dp;
 #ifdef CONFIG_DRM_MSM_DP
 int __init msm_dp_register(void);
 void __exit msm_dp_unregister(void);
diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
index 
7ecf420d0f16cd68f8f7fd99c52e994fe604851f..f4eb486531890f3351cf83670be801e8fd3631bb
 100644
--- a/drivers/gpu/drm/msm/msm_kms.h
+++ b/drivers/gpu/drm/msm/msm_kms.h
@@ -131,6 +131,12 @@ struct msm_kms {
        const struct msm_kms_funcs *funcs;
        struct drm_device *dev;
 
+       struct hdmi *hdmi;
+
+       struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT];
+
+       struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT];
+
        /* irq number to be passed on to msm_irq_install */
        int irq;
        bool irq_requested;

-- 
2.39.5

Reply via email to