Commit 0054ac2c authored by Dmitry Baryshkov's avatar Dmitry Baryshkov

drm/msm: don't store created planes, connectors and encoders

There is no point now in storing arrays of creates planes, connectors
and encoders. Remove them from struct msm_drm_private.
Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
Patchwork: https://patchwork.freedesktop.org/patch/480945/
Link: https://lore.kernel.org/r/20220406101247.483649-4-dmitry.baryshkov@linaro.orgSigned-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
parent fa560afa
...@@ -569,8 +569,6 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev, ...@@ -569,8 +569,6 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
return PTR_ERR(encoder); return PTR_ERR(encoder);
} }
priv->encoders[priv->num_encoders++] = encoder;
memset(&info, 0, sizeof(info)); memset(&info, 0, sizeof(info));
info.intf_type = encoder->encoder_type; info.intf_type = encoder->encoder_type;
...@@ -633,8 +631,6 @@ static int _dpu_kms_initialize_displayport(struct drm_device *dev, ...@@ -633,8 +631,6 @@ static int _dpu_kms_initialize_displayport(struct drm_device *dev,
return rc; return rc;
} }
priv->encoders[priv->num_encoders++] = encoder;
info.num_of_h_tiles = 1; info.num_of_h_tiles = 1;
info.h_tile_instance[0] = i; info.h_tile_instance[0] = i;
info.capabilities = MSM_DISPLAY_CAP_VID_MODE; info.capabilities = MSM_DISPLAY_CAP_VID_MODE;
...@@ -679,6 +675,7 @@ static int _dpu_kms_setup_displays(struct drm_device *dev, ...@@ -679,6 +675,7 @@ static int _dpu_kms_setup_displays(struct drm_device *dev,
return rc; return rc;
} }
#define MAX_PLANES 20
static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms) static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
{ {
struct drm_device *dev; struct drm_device *dev;
...@@ -686,6 +683,7 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms) ...@@ -686,6 +683,7 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
struct drm_plane *cursor_planes[MAX_PLANES] = { NULL }; struct drm_plane *cursor_planes[MAX_PLANES] = { NULL };
struct drm_crtc *crtc; struct drm_crtc *crtc;
struct drm_encoder *encoder; struct drm_encoder *encoder;
unsigned int num_encoders;
struct msm_drm_private *priv; struct msm_drm_private *priv;
struct dpu_mdss_cfg *catalog; struct dpu_mdss_cfg *catalog;
...@@ -704,7 +702,11 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms) ...@@ -704,7 +702,11 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
if (ret) if (ret)
return ret; return ret;
max_crtc_count = min(catalog->mixer_count, priv->num_encoders); num_encoders = 0;
drm_for_each_encoder(encoder, dev)
num_encoders++;
max_crtc_count = min(catalog->mixer_count, num_encoders);
/* Create the planes, keeping track of one primary/cursor per crtc */ /* Create the planes, keeping track of one primary/cursor per crtc */
for (i = 0; i < catalog->sspp_count; i++) { for (i = 0; i < catalog->sspp_count; i++) {
...@@ -729,7 +731,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms) ...@@ -729,7 +731,6 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms)
ret = PTR_ERR(plane); ret = PTR_ERR(plane);
return ret; return ret;
} }
priv->planes[priv->num_planes++] = plane;
if (type == DRM_PLANE_TYPE_CURSOR) if (type == DRM_PLANE_TYPE_CURSOR)
cursor_planes[cursor_planes_idx++] = plane; cursor_planes[cursor_planes_idx++] = plane;
......
...@@ -229,9 +229,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, ...@@ -229,9 +229,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
return PTR_ERR(connector); return PTR_ERR(connector);
} }
priv->encoders[priv->num_encoders++] = encoder;
priv->connectors[priv->num_connectors++] = connector;
break; break;
case DRM_MODE_ENCODER_TMDS: case DRM_MODE_ENCODER_TMDS:
encoder = mdp4_dtv_encoder_init(dev); encoder = mdp4_dtv_encoder_init(dev);
...@@ -252,8 +249,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, ...@@ -252,8 +249,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
} }
} }
priv->encoders[priv->num_encoders++] = encoder;
break; break;
case DRM_MODE_ENCODER_DSI: case DRM_MODE_ENCODER_DSI:
/* only DSI1 supported for now */ /* only DSI1 supported for now */
...@@ -272,7 +267,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms, ...@@ -272,7 +267,6 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
/* TODO: Add DMA_S later? */ /* TODO: Add DMA_S later? */
encoder->possible_crtcs = 1 << DMA_P; encoder->possible_crtcs = 1 << DMA_P;
priv->encoders[priv->num_encoders++] = encoder;
ret = msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder); ret = msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder);
if (ret) { if (ret) {
...@@ -324,7 +318,6 @@ static int modeset_init(struct mdp4_kms *mdp4_kms) ...@@ -324,7 +318,6 @@ static int modeset_init(struct mdp4_kms *mdp4_kms)
ret = PTR_ERR(plane); ret = PTR_ERR(plane);
goto fail; goto fail;
} }
priv->planes[priv->num_planes++] = plane;
} }
for (i = 0; i < ARRAY_SIZE(mdp4_crtcs); i++) { for (i = 0; i < ARRAY_SIZE(mdp4_crtcs); i++) {
......
...@@ -322,7 +322,6 @@ static struct drm_encoder *construct_encoder(struct mdp5_kms *mdp5_kms, ...@@ -322,7 +322,6 @@ static struct drm_encoder *construct_encoder(struct mdp5_kms *mdp5_kms,
struct mdp5_ctl *ctl) struct mdp5_ctl *ctl)
{ {
struct drm_device *dev = mdp5_kms->dev; struct drm_device *dev = mdp5_kms->dev;
struct msm_drm_private *priv = dev->dev_private;
struct drm_encoder *encoder; struct drm_encoder *encoder;
encoder = mdp5_encoder_init(dev, intf, ctl); encoder = mdp5_encoder_init(dev, intf, ctl);
...@@ -331,8 +330,6 @@ static struct drm_encoder *construct_encoder(struct mdp5_kms *mdp5_kms, ...@@ -331,8 +330,6 @@ static struct drm_encoder *construct_encoder(struct mdp5_kms *mdp5_kms,
return encoder; return encoder;
} }
priv->encoders[priv->num_encoders++] = encoder;
return encoder; return encoder;
} }
...@@ -438,6 +435,7 @@ static int modeset_init(struct mdp5_kms *mdp5_kms) ...@@ -438,6 +435,7 @@ static int modeset_init(struct mdp5_kms *mdp5_kms)
struct drm_plane *primary[MAX_BASES] = { NULL }; struct drm_plane *primary[MAX_BASES] = { NULL };
struct drm_plane *cursor[MAX_BASES] = { NULL }; struct drm_plane *cursor[MAX_BASES] = { NULL };
struct drm_encoder *encoder; struct drm_encoder *encoder;
unsigned int num_encoders;
/* /*
* Construct encoders and modeset initialize connector devices * Construct encoders and modeset initialize connector devices
...@@ -449,12 +447,16 @@ static int modeset_init(struct mdp5_kms *mdp5_kms) ...@@ -449,12 +447,16 @@ static int modeset_init(struct mdp5_kms *mdp5_kms)
goto fail; goto fail;
} }
num_encoders = 0;
drm_for_each_encoder(encoder, dev)
num_encoders++;
/* /*
* We should ideally have less number of encoders (set up by parsing * We should ideally have less number of encoders (set up by parsing
* the MDP5 interfaces) than the number of layer mixers present in HW, * the MDP5 interfaces) than the number of layer mixers present in HW,
* but let's be safe here anyway * but let's be safe here anyway
*/ */
num_crtcs = min(priv->num_encoders, mdp5_kms->num_hwmixers); num_crtcs = min(num_encoders, mdp5_kms->num_hwmixers);
/* /*
* Construct planes equaling the number of hw pipes, and CRTCs for the * Construct planes equaling the number of hw pipes, and CRTCs for the
...@@ -479,7 +481,6 @@ static int modeset_init(struct mdp5_kms *mdp5_kms) ...@@ -479,7 +481,6 @@ static int modeset_init(struct mdp5_kms *mdp5_kms)
DRM_DEV_ERROR(dev->dev, "failed to construct plane %d (%d)\n", i, ret); DRM_DEV_ERROR(dev->dev, "failed to construct plane %d (%d)\n", i, ret);
goto fail; goto fail;
} }
priv->planes[priv->num_planes++] = plane;
if (type == DRM_PLANE_TYPE_PRIMARY) if (type == DRM_PLANE_TYPE_PRIMARY)
primary[pi++] = plane; primary[pi++] = plane;
......
...@@ -1541,8 +1541,6 @@ int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev, ...@@ -1541,8 +1541,6 @@ int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev,
dp_priv->panel->connector = dp_display->connector; dp_priv->panel->connector = dp_display->connector;
priv->connectors[priv->num_connectors++] = dp_display->connector;
dp_display->bridge = msm_dp_bridge_init(dp_display, dev, encoder); dp_display->bridge = msm_dp_bridge_init(dp_display, dev, encoder);
if (IS_ERR(dp_display->bridge)) { if (IS_ERR(dp_display->bridge)) {
ret = PTR_ERR(dp_display->bridge); ret = PTR_ERR(dp_display->bridge);
......
...@@ -273,7 +273,6 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev, ...@@ -273,7 +273,6 @@ int msm_dsi_modeset_init(struct msm_dsi *msm_dsi, struct drm_device *dev,
} }
priv->bridges[priv->num_bridges++] = msm_dsi->bridge; priv->bridges[priv->num_bridges++] = msm_dsi->bridge;
priv->connectors[priv->num_connectors++] = msm_dsi->connector;
return 0; return 0;
fail: fail:
......
...@@ -322,7 +322,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi, ...@@ -322,7 +322,6 @@ int msm_hdmi_modeset_init(struct hdmi *hdmi,
} }
priv->bridges[priv->num_bridges++] = hdmi->bridge; priv->bridges[priv->num_bridges++] = hdmi->bridge;
priv->connectors[priv->num_connectors++] = hdmi->connector;
platform_set_drvdata(pdev, hdmi); platform_set_drvdata(pdev, hdmi);
......
...@@ -46,10 +46,7 @@ struct msm_gem_vma; ...@@ -46,10 +46,7 @@ struct msm_gem_vma;
struct msm_disp_state; struct msm_disp_state;
#define MAX_CRTCS 8 #define MAX_CRTCS 8
#define MAX_PLANES 20
#define MAX_ENCODERS 8
#define MAX_BRIDGES 8 #define MAX_BRIDGES 8
#define MAX_CONNECTORS 8
#define FRAC_16_16(mult, div) (((mult) << 16) / (div)) #define FRAC_16_16(mult, div) (((mult) << 16) / (div))
...@@ -182,23 +179,14 @@ struct msm_drm_private { ...@@ -182,23 +179,14 @@ struct msm_drm_private {
struct workqueue_struct *wq; struct workqueue_struct *wq;
unsigned int num_planes;
struct drm_plane *planes[MAX_PLANES];
unsigned int num_crtcs; unsigned int num_crtcs;
struct drm_crtc *crtcs[MAX_CRTCS]; struct drm_crtc *crtcs[MAX_CRTCS];
struct msm_drm_thread event_thread[MAX_CRTCS]; struct msm_drm_thread event_thread[MAX_CRTCS];
unsigned int num_encoders;
struct drm_encoder *encoders[MAX_ENCODERS];
unsigned int num_bridges; unsigned int num_bridges;
struct drm_bridge *bridges[MAX_BRIDGES]; struct drm_bridge *bridges[MAX_BRIDGES];
unsigned int num_connectors;
struct drm_connector *connectors[MAX_CONNECTORS];
/* Properties */ /* Properties */
struct drm_property *plane_property[PLANE_PROP_MAX_NUM]; struct drm_property *plane_property[PLANE_PROP_MAX_NUM];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment