Skip to content

Commit 04b96b6

Browse files
Bruce Wangrobclark
authored andcommitted
drm/msm/dpu: Remove unneeded checks in dpu_crtc.c
Removes impossible checks in dpu_crtc.c. Variable assignments are moved up to be initializations where possible. Some variables are no longer used, these are removed. v3: reverted back to original patch Reviewed-by: Sean Paul <seanpaul@chromium.org> Reviewed-by: Jordan Crouse <jcrouse@codeaurora.org> Signed-off-by: Bruce Wang <bzwang@chromium.org> Signed-off-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Rob Clark <robdclark@gmail.com>
1 parent ad444e5 commit 04b96b6

File tree

1 file changed

+22
-145
lines changed

1 file changed

+22
-145
lines changed

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

Lines changed: 22 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,7 @@ static inline int _dpu_crtc_get_mixer_width(struct dpu_crtc_state *cstate,
5555

5656
static inline struct dpu_kms *_dpu_crtc_get_kms(struct drm_crtc *crtc)
5757
{
58-
struct msm_drm_private *priv;
59-
60-
if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
61-
DPU_ERROR("invalid crtc\n");
62-
return NULL;
63-
}
64-
priv = crtc->dev->dev_private;
65-
if (!priv || !priv->kms) {
66-
DPU_ERROR("invalid kms\n");
67-
return NULL;
68-
}
58+
struct msm_drm_private *priv = crtc->dev->dev_private;
6959

7060
return to_dpu_kms(priv->kms);
7161
}
@@ -177,28 +167,17 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
177167
struct drm_plane *plane;
178168
struct drm_framebuffer *fb;
179169
struct drm_plane_state *state;
180-
struct dpu_crtc_state *cstate;
170+
struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state);
181171
struct dpu_plane_state *pstate = NULL;
182172
struct dpu_format *format;
183-
struct dpu_hw_ctl *ctl;
184-
struct dpu_hw_mixer *lm;
185-
struct dpu_hw_stage_cfg *stage_cfg;
173+
struct dpu_hw_ctl *ctl = mixer->lm_ctl;
174+
struct dpu_hw_stage_cfg *stage_cfg = &dpu_crtc->stage_cfg;
186175

187176
u32 flush_mask;
188177
uint32_t stage_idx, lm_idx;
189178
int zpos_cnt[DPU_STAGE_MAX + 1] = { 0 };
190179
bool bg_alpha_enable = false;
191180

192-
if (!dpu_crtc || !mixer) {
193-
DPU_ERROR("invalid dpu_crtc or mixer\n");
194-
return;
195-
}
196-
197-
ctl = mixer->lm_ctl;
198-
lm = mixer->hw_lm;
199-
stage_cfg = &dpu_crtc->stage_cfg;
200-
cstate = to_dpu_crtc_state(crtc->state);
201-
202181
drm_atomic_crtc_for_each_plane(plane, crtc) {
203182
state = plane->state;
204183
if (!state)
@@ -217,10 +196,6 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
217196
state->fb ? state->fb->base.id : -1);
218197

219198
format = to_dpu_format(msm_framebuffer_format(pstate->base.fb));
220-
if (!format) {
221-
DPU_ERROR("invalid format\n");
222-
return;
223-
}
224199

225200
if (pstate->stage == DPU_STAGE_BASE && format->alpha_enable)
226201
bg_alpha_enable = true;
@@ -261,21 +236,13 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc,
261236
*/
262237
static void _dpu_crtc_blend_setup(struct drm_crtc *crtc)
263238
{
264-
struct dpu_crtc *dpu_crtc;
265-
struct dpu_crtc_state *cstate;
266-
struct dpu_crtc_mixer *mixer;
239+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
240+
struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state);
241+
struct dpu_crtc_mixer *mixer = cstate->mixers;
267242
struct dpu_hw_ctl *ctl;
268243
struct dpu_hw_mixer *lm;
269-
270244
int i;
271245

272-
if (!crtc)
273-
return;
274-
275-
dpu_crtc = to_dpu_crtc(crtc);
276-
cstate = to_dpu_crtc_state(crtc->state);
277-
mixer = cstate->mixers;
278-
279246
DPU_DEBUG("%s\n", dpu_crtc->name);
280247

281248
for (i = 0; i < cstate->num_mixers; i++) {
@@ -377,34 +344,13 @@ static void dpu_crtc_vblank_cb(void *data)
377344

378345
static void dpu_crtc_frame_event_work(struct kthread_work *work)
379346
{
380-
struct msm_drm_private *priv;
381-
struct dpu_crtc_frame_event *fevent;
382-
struct drm_crtc *crtc;
383-
struct dpu_crtc *dpu_crtc;
384-
struct dpu_kms *dpu_kms;
347+
struct dpu_crtc_frame_event *fevent = container_of(work,
348+
struct dpu_crtc_frame_event, work);
349+
struct drm_crtc *crtc = fevent->crtc;
350+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
385351
unsigned long flags;
386352
bool frame_done = false;
387353

388-
if (!work) {
389-
DPU_ERROR("invalid work handle\n");
390-
return;
391-
}
392-
393-
fevent = container_of(work, struct dpu_crtc_frame_event, work);
394-
if (!fevent->crtc || !fevent->crtc->state) {
395-
DPU_ERROR("invalid crtc\n");
396-
return;
397-
}
398-
399-
crtc = fevent->crtc;
400-
dpu_crtc = to_dpu_crtc(crtc);
401-
402-
dpu_kms = _dpu_crtc_get_kms(crtc);
403-
if (!dpu_kms) {
404-
DPU_ERROR("invalid kms handle\n");
405-
return;
406-
}
407-
priv = dpu_kms->dev->dev_private;
408354
DPU_ATRACE_BEGIN("crtc_frame_event");
409355

410356
DRM_DEBUG_KMS("crtc%d event:%u ts:%lld\n", crtc->base.id, fevent->event,
@@ -470,11 +416,6 @@ static void dpu_crtc_frame_event_cb(void *data, u32 event)
470416
unsigned long flags;
471417
u32 crtc_id;
472418

473-
if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
474-
DPU_ERROR("invalid parameters\n");
475-
return;
476-
}
477-
478419
/* Nothing to do on idle event */
479420
if (event & DPU_ENCODER_FRAME_EVENT_IDLE)
480421
return;
@@ -583,23 +524,12 @@ static void _dpu_crtc_setup_mixers(struct drm_crtc *crtc)
583524
static void _dpu_crtc_setup_lm_bounds(struct drm_crtc *crtc,
584525
struct drm_crtc_state *state)
585526
{
586-
struct dpu_crtc *dpu_crtc;
587-
struct dpu_crtc_state *cstate;
588-
struct drm_display_mode *adj_mode;
589-
u32 crtc_split_width;
527+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
528+
struct dpu_crtc_state *cstate = to_dpu_crtc_state(state);
529+
struct drm_display_mode *adj_mode = &state->adjusted_mode;
530+
u32 crtc_split_width = _dpu_crtc_get_mixer_width(cstate, adj_mode);
590531
int i;
591532

592-
if (!crtc || !state) {
593-
DPU_ERROR("invalid args\n");
594-
return;
595-
}
596-
597-
dpu_crtc = to_dpu_crtc(crtc);
598-
cstate = to_dpu_crtc_state(state);
599-
600-
adj_mode = &state->adjusted_mode;
601-
crtc_split_width = _dpu_crtc_get_mixer_width(cstate, adj_mode);
602-
603533
for (i = 0; i < cstate->num_mixers; i++) {
604534
struct drm_rect *r = &cstate->lm_bounds[i];
605535
r->x1 = crtc_split_width * i;
@@ -693,11 +623,6 @@ static void dpu_crtc_atomic_flush(struct drm_crtc *crtc,
693623
unsigned long flags;
694624
struct dpu_crtc_state *cstate;
695625

696-
if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
697-
DPU_ERROR("invalid crtc\n");
698-
return;
699-
}
700-
701626
if (!crtc->state->enable) {
702627
DPU_DEBUG("crtc%d -> enable %d, skip atomic_flush\n",
703628
crtc->base.id, crtc->state->enable);
@@ -790,15 +715,9 @@ static void dpu_crtc_destroy_state(struct drm_crtc *crtc,
790715

791716
static int _dpu_crtc_wait_for_frame_done(struct drm_crtc *crtc)
792717
{
793-
struct dpu_crtc *dpu_crtc;
718+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
794719
int ret, rc = 0;
795720

796-
if (!crtc) {
797-
DPU_ERROR("invalid argument\n");
798-
return -EINVAL;
799-
}
800-
dpu_crtc = to_dpu_crtc(crtc);
801-
802721
if (!atomic_read(&dpu_crtc->frame_pending)) {
803722
DPU_DEBUG("no frames pending\n");
804723
return 0;
@@ -819,29 +738,12 @@ static int _dpu_crtc_wait_for_frame_done(struct drm_crtc *crtc)
819738
void dpu_crtc_commit_kickoff(struct drm_crtc *crtc)
820739
{
821740
struct drm_encoder *encoder;
822-
struct drm_device *dev;
823-
struct dpu_crtc *dpu_crtc;
824-
struct msm_drm_private *priv;
825-
struct dpu_kms *dpu_kms;
826-
struct dpu_crtc_state *cstate;
741+
struct drm_device *dev = crtc->dev;
742+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
743+
struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc);
744+
struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state);
827745
int ret;
828746

829-
if (!crtc) {
830-
DPU_ERROR("invalid argument\n");
831-
return;
832-
}
833-
dev = crtc->dev;
834-
dpu_crtc = to_dpu_crtc(crtc);
835-
dpu_kms = _dpu_crtc_get_kms(crtc);
836-
837-
if (!dpu_kms || !dpu_kms->dev || !dpu_kms->dev->dev_private) {
838-
DPU_ERROR("invalid argument\n");
839-
return;
840-
}
841-
842-
priv = dpu_kms->dev->dev_private;
843-
cstate = to_dpu_crtc_state(crtc->state);
844-
845747
/*
846748
* If no mixers has been allocated in dpu_crtc_atomic_check(),
847749
* it means we are trying to start a CRTC whose state is disabled:
@@ -969,24 +871,9 @@ static int _dpu_crtc_vblank_enable_no_lock(
969871
*/
970872
static void _dpu_crtc_set_suspend(struct drm_crtc *crtc, bool enable)
971873
{
972-
struct dpu_crtc *dpu_crtc;
973-
struct msm_drm_private *priv;
974-
struct dpu_kms *dpu_kms;
874+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
975875
int ret = 0;
976876

977-
if (!crtc || !crtc->dev || !crtc->dev->dev_private) {
978-
DPU_ERROR("invalid crtc\n");
979-
return;
980-
}
981-
dpu_crtc = to_dpu_crtc(crtc);
982-
priv = crtc->dev->dev_private;
983-
984-
if (!priv->kms) {
985-
DPU_ERROR("invalid crtc kms\n");
986-
return;
987-
}
988-
dpu_kms = to_dpu_kms(priv->kms);
989-
990877
DRM_DEBUG_KMS("crtc%d suspend = %d\n", crtc->base.id, enable);
991878

992879
mutex_lock(&dpu_crtc->crtc_lock);
@@ -1079,16 +966,8 @@ static void dpu_crtc_reset(struct drm_crtc *crtc)
1079966
static void dpu_crtc_handle_power_event(u32 event_type, void *arg)
1080967
{
1081968
struct drm_crtc *crtc = arg;
1082-
struct dpu_crtc *dpu_crtc;
969+
struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
1083970
struct drm_encoder *encoder;
1084-
struct dpu_crtc_state *cstate;
1085-
1086-
if (!crtc) {
1087-
DPU_ERROR("invalid crtc\n");
1088-
return;
1089-
}
1090-
dpu_crtc = to_dpu_crtc(crtc);
1091-
cstate = to_dpu_crtc_state(dpu_crtc->base.state);
1092971

1093972
mutex_lock(&dpu_crtc->crtc_lock);
1094973

@@ -1673,8 +1552,6 @@ static int _dpu_crtc_init_debugfs(struct drm_crtc *crtc)
16731552
dpu_crtc = to_dpu_crtc(crtc);
16741553

16751554
dpu_kms = _dpu_crtc_get_kms(crtc);
1676-
if (!dpu_kms)
1677-
return -EINVAL;
16781555

16791556
dpu_crtc->debugfs_root = debugfs_create_dir(dpu_crtc->name,
16801557
crtc->dev->primary->debugfs_root);

0 commit comments

Comments
 (0)