Skip to content

Commit e10e1a4

Browse files
lumagRob Clark
authored andcommitted
drm/msm: move KMS driver data to msm_kms
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]> Patchwork: https://patchwork.freedesktop.org/patch/662580/ Signed-off-by: Rob Clark <[email protected]>
1 parent 0bb2335 commit e10e1a4

File tree

10 files changed

+55
-57
lines changed

10 files changed

+55
-57
lines changed

drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ bool dpu_encoder_needs_periph_flush(struct dpu_encoder_phys *phys_enc)
264264
mode = &phys_enc->cached_mode;
265265

266266
return phys_enc->hw_intf->cap->type == INTF_DP &&
267-
msm_dp_needs_periph_flush(priv->dp[disp_info->h_tile_instance[0]], mode);
267+
msm_dp_needs_periph_flush(priv->kms->dp[disp_info->h_tile_instance[0]], mode);
268268
}
269269

270270
/**
@@ -283,9 +283,9 @@ bool dpu_encoder_is_widebus_enabled(const struct drm_encoder *drm_enc)
283283
index = disp_info->h_tile_instance[0];
284284

285285
if (disp_info->intf_type == INTF_DP)
286-
return msm_dp_wide_bus_available(priv->dp[index]);
286+
return msm_dp_wide_bus_available(priv->kms->dp[index]);
287287
else if (disp_info->intf_type == INTF_DSI)
288-
return msm_dsi_wide_bus_enabled(priv->dsi[index]);
288+
return msm_dsi_wide_bus_enabled(priv->kms->dsi[index]);
289289

290290
return false;
291291
}
@@ -647,7 +647,7 @@ struct drm_dsc_config *dpu_encoder_get_dsc_config(struct drm_encoder *drm_enc)
647647
int index = dpu_enc->disp_info.h_tile_instance[0];
648648

649649
if (dpu_enc->disp_info.intf_type == INTF_DSI)
650-
return msm_dsi_get_dsc_config(priv->dsi[index]);
650+
return msm_dsi_get_dsc_config(priv->kms->dsi[index]);
651651

652652
return NULL;
653653
}
@@ -709,7 +709,8 @@ void dpu_encoder_update_topology(struct drm_encoder *drm_enc,
709709
if (fb && MSM_FORMAT_IS_YUV(msm_framebuffer_format(fb)))
710710
topology->num_cdm++;
711711
} else if (disp_info->intf_type == INTF_DP) {
712-
if (msm_dp_is_yuv_420_enabled(priv->dp[disp_info->h_tile_instance[0]], adj_mode))
712+
if (msm_dp_is_yuv_420_enabled(priv->kms->dp[disp_info->h_tile_instance[0]],
713+
adj_mode))
713714
topology->num_cdm++;
714715
}
715716
}

drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
583583
struct msm_display_info info;
584584
int i, rc = 0;
585585

586-
if (!(priv->dsi[0] || priv->dsi[1]))
586+
if (!(priv->kms->dsi[0] || priv->kms->dsi[1]))
587587
return rc;
588588

589589
/*
@@ -594,26 +594,26 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
594594
*
595595
* TODO: Support swapping DSI0 and DSI1 in the bonded setup.
596596
*/
597-
for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) {
597+
for (i = 0; i < ARRAY_SIZE(priv->kms->dsi); i++) {
598598
int other = (i + 1) % 2;
599599

600-
if (!priv->dsi[i])
600+
if (!priv->kms->dsi[i])
601601
continue;
602602

603-
if (msm_dsi_is_bonded_dsi(priv->dsi[i]) &&
604-
!msm_dsi_is_master_dsi(priv->dsi[i]))
603+
if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]) &&
604+
!msm_dsi_is_master_dsi(priv->kms->dsi[i]))
605605
continue;
606606

607607
memset(&info, 0, sizeof(info));
608608
info.intf_type = INTF_DSI;
609609

610610
info.h_tile_instance[info.num_of_h_tiles++] = i;
611-
if (msm_dsi_is_bonded_dsi(priv->dsi[i]))
611+
if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]))
612612
info.h_tile_instance[info.num_of_h_tiles++] = other;
613613

614-
info.is_cmd_mode = msm_dsi_is_cmd_mode(priv->dsi[i]);
614+
info.is_cmd_mode = msm_dsi_is_cmd_mode(priv->kms->dsi[i]);
615615

616-
rc = dpu_kms_dsi_set_te_source(&info, priv->dsi[i]);
616+
rc = dpu_kms_dsi_set_te_source(&info, priv->kms->dsi[i]);
617617
if (rc) {
618618
DPU_ERROR("failed to identify TE source for dsi display\n");
619619
return rc;
@@ -625,15 +625,15 @@ static int _dpu_kms_initialize_dsi(struct drm_device *dev,
625625
return PTR_ERR(encoder);
626626
}
627627

628-
rc = msm_dsi_modeset_init(priv->dsi[i], dev, encoder);
628+
rc = msm_dsi_modeset_init(priv->kms->dsi[i], dev, encoder);
629629
if (rc) {
630630
DPU_ERROR("modeset_init failed for dsi[%d], rc = %d\n",
631631
i, rc);
632632
break;
633633
}
634634

635-
if (msm_dsi_is_bonded_dsi(priv->dsi[i]) && priv->dsi[other]) {
636-
rc = msm_dsi_modeset_init(priv->dsi[other], dev, encoder);
635+
if (msm_dsi_is_bonded_dsi(priv->kms->dsi[i]) && priv->kms->dsi[other]) {
636+
rc = msm_dsi_modeset_init(priv->kms->dsi[other], dev, encoder);
637637
if (rc) {
638638
DPU_ERROR("modeset_init failed for dsi[%d], rc = %d\n",
639639
other, rc);
@@ -655,8 +655,8 @@ static int _dpu_kms_initialize_displayport(struct drm_device *dev,
655655
int rc;
656656
int i;
657657

658-
for (i = 0; i < ARRAY_SIZE(priv->dp); i++) {
659-
if (!priv->dp[i])
658+
for (i = 0; i < ARRAY_SIZE(priv->kms->dp); i++) {
659+
if (!priv->kms->dp[i])
660660
continue;
661661

662662
memset(&info, 0, sizeof(info));
@@ -671,7 +671,7 @@ static int _dpu_kms_initialize_displayport(struct drm_device *dev,
671671
}
672672

673673
yuv_supported = !!dpu_kms->catalog->cdm;
674-
rc = msm_dp_modeset_init(priv->dp[i], dev, encoder, yuv_supported);
674+
rc = msm_dp_modeset_init(priv->kms->dp[i], dev, encoder, yuv_supported);
675675
if (rc) {
676676
DPU_ERROR("modeset_init failed for DP, rc = %d\n", rc);
677677
return rc;
@@ -689,7 +689,7 @@ static int _dpu_kms_initialize_hdmi(struct drm_device *dev,
689689
struct msm_display_info info;
690690
int rc;
691691

692-
if (!priv->hdmi)
692+
if (!priv->kms->hdmi)
693693
return 0;
694694

695695
memset(&info, 0, sizeof(info));
@@ -703,7 +703,7 @@ static int _dpu_kms_initialize_hdmi(struct drm_device *dev,
703703
return PTR_ERR(encoder);
704704
}
705705

706-
rc = msm_hdmi_modeset_init(priv->hdmi, dev, encoder);
706+
rc = msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder);
707707
if (rc) {
708708
DPU_ERROR("modeset_init failed for DP, rc = %d\n", rc);
709709
return rc;

drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
250250
/* DTV can be hooked to DMA_E: */
251251
encoder->possible_crtcs = 1 << 1;
252252

253-
if (priv->hdmi) {
253+
if (priv->kms->hdmi) {
254254
/* Construct bridge/connector for HDMI: */
255-
ret = msm_hdmi_modeset_init(priv->hdmi, dev, encoder);
255+
ret = msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder);
256256
if (ret) {
257257
DRM_DEV_ERROR(dev->dev, "failed to initialize HDMI: %d\n", ret);
258258
return ret;
@@ -264,7 +264,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
264264
/* only DSI1 supported for now */
265265
dsi_id = 0;
266266

267-
if (!priv->dsi[dsi_id])
267+
if (!priv->kms->dsi[dsi_id])
268268
break;
269269

270270
encoder = mdp4_dsi_encoder_init(dev);
@@ -278,7 +278,7 @@ static int mdp4_modeset_init_intf(struct mdp4_kms *mdp4_kms,
278278
/* TODO: Add DMA_S later? */
279279
encoder->possible_crtcs = 1 << DMA_P;
280280

281-
ret = msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder);
281+
ret = msm_dsi_modeset_init(priv->kms->dsi[dsi_id], dev, encoder);
282282
if (ret) {
283283
DRM_DEV_ERROR(dev->dev, "failed to initialize DSI: %d\n",
284284
ret);

drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
312312
DRM_DEV_INFO(dev->dev, "Skipping eDP interface %d\n", intf->num);
313313
break;
314314
case INTF_HDMI:
315-
if (!priv->hdmi)
315+
if (!priv->kms->hdmi)
316316
break;
317317

318318
ctl = mdp5_ctlm_request(ctlm, intf->num);
@@ -327,22 +327,22 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
327327
break;
328328
}
329329

330-
ret = msm_hdmi_modeset_init(priv->hdmi, dev, encoder);
330+
ret = msm_hdmi_modeset_init(priv->kms->hdmi, dev, encoder);
331331
break;
332332
case INTF_DSI:
333333
{
334334
const struct mdp5_cfg_hw *hw_cfg =
335335
mdp5_cfg_get_hw_config(mdp5_kms->cfg);
336336
int dsi_id = get_dsi_id_from_intf(hw_cfg, intf->num);
337337

338-
if ((dsi_id >= ARRAY_SIZE(priv->dsi)) || (dsi_id < 0)) {
338+
if ((dsi_id >= ARRAY_SIZE(priv->kms->dsi)) || (dsi_id < 0)) {
339339
DRM_DEV_ERROR(dev->dev, "failed to find dsi from intf %d\n",
340340
intf->num);
341341
ret = -EINVAL;
342342
break;
343343
}
344344

345-
if (!priv->dsi[dsi_id])
345+
if (!priv->kms->dsi[dsi_id])
346346
break;
347347

348348
ctl = mdp5_ctlm_request(ctlm, intf->num);
@@ -357,9 +357,10 @@ static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
357357
break;
358358
}
359359

360-
ret = msm_dsi_modeset_init(priv->dsi[dsi_id], dev, encoder);
360+
ret = msm_dsi_modeset_init(priv->kms->dsi[dsi_id], dev, encoder);
361361
if (!ret)
362-
mdp5_encoder_set_intf_mode(encoder, msm_dsi_is_cmd_mode(priv->dsi[dsi_id]));
362+
mdp5_encoder_set_intf_mode(encoder,
363+
msm_dsi_is_cmd_mode(priv->kms->dsi[dsi_id]));
363364

364365
break;
365366
}

drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,18 +127,18 @@ void msm_disp_snapshot_capture_state(struct msm_disp_state *disp_state)
127127
priv = drm_dev->dev_private;
128128
kms = priv->kms;
129129

130-
for (i = 0; i < ARRAY_SIZE(priv->dp); i++) {
131-
if (!priv->dp[i])
130+
for (i = 0; i < ARRAY_SIZE(kms->dp); i++) {
131+
if (!kms->dp[i])
132132
continue;
133133

134-
msm_dp_snapshot(disp_state, priv->dp[i]);
134+
msm_dp_snapshot(disp_state, kms->dp[i]);
135135
}
136136

137-
for (i = 0; i < ARRAY_SIZE(priv->dsi); i++) {
138-
if (!priv->dsi[i])
137+
for (i = 0; i < ARRAY_SIZE(kms->dsi); i++) {
138+
if (!kms->dsi[i])
139139
continue;
140140

141-
msm_dsi_snapshot(disp_state, priv->dsi[i]);
141+
msm_dsi_snapshot(disp_state, kms->dsi[i]);
142142
}
143143

144144
if (kms->funcs->snapshot)

drivers/gpu/drm/msm/dp/dp_display.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,7 @@ static int msm_dp_display_bind(struct device *dev, struct device *master,
292292
struct drm_device *drm = priv->dev;
293293

294294
dp->msm_dp_display.drm_dev = drm;
295-
priv->dp[dp->id] = &dp->msm_dp_display;
296-
297-
295+
priv->kms->dp[dp->id] = &dp->msm_dp_display;
298296

299297
dp->drm_dev = drm;
300298
dp->aux->drm_dev = drm;
@@ -328,7 +326,7 @@ static void msm_dp_display_unbind(struct device *dev, struct device *master,
328326
msm_dp_aux_unregister(dp->aux);
329327
dp->drm_dev = NULL;
330328
dp->aux->drm_dev = NULL;
331-
priv->dp[dp->id] = NULL;
329+
priv->kms->dp[dp->id] = NULL;
332330
}
333331

334332
static const struct component_ops msm_dp_display_comp_ops = {

drivers/gpu/drm/msm/dsi/dsi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
136136
msm_dsi->next_bridge = ext_bridge;
137137
}
138138

139-
priv->dsi[msm_dsi->id] = msm_dsi;
139+
priv->kms->dsi[msm_dsi->id] = msm_dsi;
140140

141141
return 0;
142142
}
@@ -148,7 +148,7 @@ static void dsi_unbind(struct device *dev, struct device *master,
148148
struct msm_dsi *msm_dsi = dev_get_drvdata(dev);
149149

150150
msm_dsi_tx_buf_free(msm_dsi->host);
151-
priv->dsi[msm_dsi->id] = NULL;
151+
priv->kms->dsi[msm_dsi->id] = NULL;
152152
}
153153

154154
static const struct component_ops dsi_ops = {

drivers/gpu/drm/msm/hdmi/hdmi.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <drm/drm_of.h>
1616
#include <drm/display/drm_hdmi_state_helper.h>
1717

18+
#include "msm_kms.h"
1819
#include "hdmi.h"
1920

2021
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)
244245
err = msm_hdmi_init(hdmi);
245246
if (err)
246247
return err;
247-
priv->hdmi = hdmi;
248+
priv->kms->hdmi = hdmi;
248249

249250
return 0;
250251
}
@@ -254,9 +255,9 @@ static void msm_hdmi_unbind(struct device *dev, struct device *master,
254255
{
255256
struct msm_drm_private *priv = dev_get_drvdata(master);
256257

257-
if (priv->hdmi) {
258-
msm_hdmi_destroy(priv->hdmi);
259-
priv->hdmi = NULL;
258+
if (priv->kms->hdmi) {
259+
msm_hdmi_destroy(priv->kms->hdmi);
260+
priv->kms->hdmi = NULL;
260261
}
261262
}
262263

drivers/gpu/drm/msm/msm_drv.h

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,16 +86,6 @@ struct msm_drm_private {
8686
/* subordinate devices, if present: */
8787
struct platform_device *gpu_pdev;
8888

89-
/* possibly this should be in the kms component, but it is
90-
* shared by both mdp4 and mdp5..
91-
*/
92-
struct hdmi *hdmi;
93-
94-
/* DSI is shared by mdp4 and mdp5 */
95-
struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT];
96-
97-
struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT];
98-
9989
/* when we have more than one 'msm_gpu' these need to be an array: */
10090
struct msm_gpu *gpu;
10191

@@ -367,6 +357,7 @@ static inline const char *msm_dsi_get_te_source(struct msm_dsi *msm_dsi)
367357
}
368358
#endif
369359

360+
struct msm_dp;
370361
#ifdef CONFIG_DRM_MSM_DP
371362
int __init msm_dp_register(void);
372363
void __exit msm_dp_unregister(void);

drivers/gpu/drm/msm/msm_kms.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ struct msm_kms {
131131
const struct msm_kms_funcs *funcs;
132132
struct drm_device *dev;
133133

134+
struct hdmi *hdmi;
135+
136+
struct msm_dsi *dsi[MSM_DSI_CONTROLLER_COUNT];
137+
138+
struct msm_dp *dp[MSM_DP_CONTROLLER_COUNT];
139+
134140
/* irq number to be passed on to msm_irq_install */
135141
int irq;
136142
bool irq_requested;

0 commit comments

Comments
 (0)