Lines Matching full:crtc
47 static struct dpu_kms *_dpu_crtc_get_kms(struct drm_crtc *crtc) in _dpu_crtc_get_kms() argument
49 struct msm_drm_private *priv = crtc->dev->dev_private; in _dpu_crtc_get_kms()
54 static struct drm_encoder *get_encoder_from_crtc(struct drm_crtc *crtc) in get_encoder_from_crtc() argument
56 struct drm_device *dev = crtc->dev; in get_encoder_from_crtc()
60 if (encoder->crtc == crtc) in get_encoder_from_crtc()
80 static int dpu_crtc_verify_crc_source(struct drm_crtc *crtc, in dpu_crtc_verify_crc_source() argument
84 struct dpu_crtc_state *crtc_state = to_dpu_crtc_state(crtc->state); in dpu_crtc_verify_crc_source()
87 DRM_DEBUG_DRIVER("Invalid source %s for CRTC%d\n", src_name, crtc->index); in dpu_crtc_verify_crc_source()
98 drm_for_each_encoder_mask(drm_enc, crtc->dev, crtc->state->encoder_mask) in dpu_crtc_verify_crc_source()
121 static void dpu_crtc_setup_encoder_misr(struct drm_crtc *crtc) in dpu_crtc_setup_encoder_misr() argument
125 drm_for_each_encoder_mask(drm_enc, crtc->dev, crtc->state->encoder_mask) in dpu_crtc_setup_encoder_misr()
129 static int dpu_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name) in dpu_crtc_set_crc_source() argument
134 struct drm_device *drm_dev = crtc->dev; in dpu_crtc_set_crc_source()
141 DRM_DEBUG_DRIVER("Invalid CRC source %s for CRTC%d\n", src_name, crtc->index); in dpu_crtc_set_crc_source()
145 ret = drm_modeset_lock(&crtc->mutex, NULL); in dpu_crtc_set_crc_source()
151 crtc_state = to_dpu_crtc_state(crtc->state); in dpu_crtc_set_crc_source()
160 ret = drm_crtc_vblank_get(crtc); in dpu_crtc_set_crc_source()
166 drm_crtc_vblank_put(crtc); in dpu_crtc_set_crc_source()
178 dpu_crtc_setup_encoder_misr(crtc); in dpu_crtc_set_crc_source()
183 drm_modeset_unlock(&crtc->mutex); in dpu_crtc_set_crc_source()
188 static u32 dpu_crtc_get_vblank_counter(struct drm_crtc *crtc) in dpu_crtc_get_vblank_counter() argument
190 struct drm_encoder *encoder = get_encoder_from_crtc(crtc); in dpu_crtc_get_vblank_counter()
192 DRM_ERROR("no encoder found for crtc %d\n", crtc->index); in dpu_crtc_get_vblank_counter()
199 static int dpu_crtc_get_lm_crc(struct drm_crtc *crtc, in dpu_crtc_get_lm_crc() argument
226 return drm_crtc_add_crc_entry(crtc, true, in dpu_crtc_get_lm_crc()
227 drm_crtc_accurate_vblank_count(crtc), crcs); in dpu_crtc_get_lm_crc()
230 static int dpu_crtc_get_encoder_crc(struct drm_crtc *crtc) in dpu_crtc_get_encoder_crc() argument
236 drm_for_each_encoder_mask(drm_enc, crtc->dev, crtc->state->encoder_mask) { in dpu_crtc_get_encoder_crc()
248 return drm_crtc_add_crc_entry(crtc, true, in dpu_crtc_get_encoder_crc()
249 drm_crtc_accurate_vblank_count(crtc), crcs); in dpu_crtc_get_encoder_crc()
252 static int dpu_crtc_get_crc(struct drm_crtc *crtc) in dpu_crtc_get_crc() argument
254 struct dpu_crtc_state *crtc_state = to_dpu_crtc_state(crtc->state); in dpu_crtc_get_crc()
263 return dpu_crtc_get_lm_crc(crtc, crtc_state); in dpu_crtc_get_crc()
265 return dpu_crtc_get_encoder_crc(crtc); in dpu_crtc_get_crc()
270 static bool dpu_crtc_get_scanout_position(struct drm_crtc *crtc, in dpu_crtc_get_scanout_position() argument
276 unsigned int pipe = crtc->index; in dpu_crtc_get_scanout_position()
280 encoder = get_encoder_from_crtc(crtc); in dpu_crtc_get_scanout_position()
282 DRM_ERROR("no encoder found for crtc %d\n", pipe); in dpu_crtc_get_scanout_position()
369 static void _dpu_crtc_program_lm_output_roi(struct drm_crtc *crtc) in _dpu_crtc_program_lm_output_roi() argument
374 crtc_state = to_dpu_crtc_state(crtc->state); in _dpu_crtc_program_lm_output_roi()
393 static void _dpu_crtc_blend_setup_pipe(struct drm_crtc *crtc, in _dpu_crtc_blend_setup_pipe() argument
413 trace_dpu_crtc_setup_mixer(DRMID(crtc), DRMID(plane), in _dpu_crtc_blend_setup_pipe()
418 DRM_DEBUG_ATOMIC("crtc %d stage:%d - plane %d sspp %d fb %d multirect_idx %d\n", in _dpu_crtc_blend_setup_pipe()
419 crtc->base.id, in _dpu_crtc_blend_setup_pipe()
434 static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, in _dpu_crtc_blend_setup_mixer() argument
441 struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); in _dpu_crtc_blend_setup_mixer()
451 drm_atomic_crtc_for_each_plane(plane, crtc) { in _dpu_crtc_blend_setup_mixer()
468 _dpu_crtc_blend_setup_pipe(crtc, plane, in _dpu_crtc_blend_setup_mixer()
476 _dpu_crtc_blend_setup_pipe(crtc, plane, in _dpu_crtc_blend_setup_mixer()
498 _dpu_crtc_program_lm_output_roi(crtc); in _dpu_crtc_blend_setup_mixer()
502 * _dpu_crtc_blend_setup - configure crtc mixers
503 * @crtc: Pointer to drm crtc structure
505 static void _dpu_crtc_blend_setup(struct drm_crtc *crtc) in _dpu_crtc_blend_setup() argument
507 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in _dpu_crtc_blend_setup()
508 struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); in _dpu_crtc_blend_setup()
527 _dpu_crtc_blend_setup_mixer(crtc, dpu_crtc, mixer, &stage_cfg); in _dpu_crtc_blend_setup()
556 * @crtc: Pointer to drm crtc structure
558 static void _dpu_crtc_complete_flip(struct drm_crtc *crtc) in _dpu_crtc_complete_flip() argument
560 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in _dpu_crtc_complete_flip()
561 struct drm_device *dev = crtc->dev; in _dpu_crtc_complete_flip()
568 trace_dpu_crtc_complete_flip(DRMID(crtc)); in _dpu_crtc_complete_flip()
569 drm_crtc_send_vblank_event(crtc, dpu_crtc->event); in _dpu_crtc_complete_flip()
576 * dpu_crtc_get_intf_mode - get interface mode of the given crtc
577 * @crtc: Pointert to crtc
579 enum dpu_intf_mode dpu_crtc_get_intf_mode(struct drm_crtc *crtc) in dpu_crtc_get_intf_mode() argument
585 * check. When called from debugfs, the crtc->mutex must be held to in dpu_crtc_get_intf_mode()
586 * read crtc->state. However reading crtc->state from atomic check isn't in dpu_crtc_get_intf_mode()
592 WARN_ON(!drm_modeset_is_locked(&crtc->mutex)); in dpu_crtc_get_intf_mode()
595 drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) in dpu_crtc_get_intf_mode()
603 * @crtc: Pointer to drm crtc object
605 void dpu_crtc_vblank_callback(struct drm_crtc *crtc) in dpu_crtc_vblank_callback() argument
607 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_vblank_callback()
615 dpu_crtc_get_crc(crtc); in dpu_crtc_vblank_callback()
617 drm_crtc_handle_vblank(crtc); in dpu_crtc_vblank_callback()
618 trace_dpu_crtc_vblank_cb(DRMID(crtc)); in dpu_crtc_vblank_callback()
625 struct drm_crtc *crtc = fevent->crtc; in dpu_crtc_frame_event_work() local
626 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_frame_event_work()
632 DRM_DEBUG_ATOMIC("crtc%d event:%u ts:%lld\n", crtc->base.id, fevent->event, in dpu_crtc_frame_event_work()
643 trace_dpu_crtc_frame_event_done(DRMID(crtc), in dpu_crtc_frame_event_work()
645 dpu_core_perf_crtc_release_bw(crtc); in dpu_crtc_frame_event_work()
647 trace_dpu_crtc_frame_event_more_pending(DRMID(crtc), in dpu_crtc_frame_event_work()
657 DPU_ERROR("crtc%d ts:%lld received panel dead event\n", in dpu_crtc_frame_event_work()
658 crtc->base.id, ktime_to_ns(fevent->ts)); in dpu_crtc_frame_event_work()
670 * dpu_crtc_frame_event_cb - crtc frame event callback API
671 * @crtc: Pointer to crtc
679 void dpu_crtc_frame_event_cb(struct drm_crtc *crtc, u32 event) in dpu_crtc_frame_event_cb() argument
691 dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_frame_event_cb()
692 priv = crtc->dev->dev_private; in dpu_crtc_frame_event_cb()
693 crtc_id = drm_crtc_index(crtc); in dpu_crtc_frame_event_cb()
695 trace_dpu_crtc_frame_event_cb(DRMID(crtc), event); in dpu_crtc_frame_event_cb()
705 DRM_ERROR_RATELIMITED("crtc%d event %d overflow\n", crtc->base.id, event); in dpu_crtc_frame_event_cb()
710 fevent->crtc = crtc; in dpu_crtc_frame_event_cb()
717 * @crtc: Pointer to drm crtc object
719 void dpu_crtc_complete_commit(struct drm_crtc *crtc) in dpu_crtc_complete_commit() argument
721 trace_dpu_crtc_complete_commit(DRMID(crtc)); in dpu_crtc_complete_commit()
722 dpu_core_perf_crtc_update(crtc, 0); in dpu_crtc_complete_commit()
723 _dpu_crtc_complete_flip(crtc); in dpu_crtc_complete_commit()
726 static int _dpu_crtc_check_and_setup_lm_bounds(struct drm_crtc *crtc, in _dpu_crtc_check_and_setup_lm_bounds() argument
732 struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc); in _dpu_crtc_check_and_setup_lm_bounds()
749 trace_dpu_crtc_setup_lm_bounds(DRMID(crtc), i, r); in _dpu_crtc_check_and_setup_lm_bounds()
783 static void _dpu_crtc_setup_cp_blocks(struct drm_crtc *crtc) in _dpu_crtc_setup_cp_blocks() argument
785 struct drm_crtc_state *state = crtc->state; in _dpu_crtc_setup_cp_blocks()
786 struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); in _dpu_crtc_setup_cp_blocks()
817 static void dpu_crtc_atomic_begin(struct drm_crtc *crtc, in dpu_crtc_atomic_begin() argument
820 struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); in dpu_crtc_atomic_begin()
823 if (!crtc->state->enable) { in dpu_crtc_atomic_begin()
824 DRM_DEBUG_ATOMIC("crtc%d -> enable %d, skip atomic_begin\n", in dpu_crtc_atomic_begin()
825 crtc->base.id, crtc->state->enable); in dpu_crtc_atomic_begin()
829 DRM_DEBUG_ATOMIC("crtc%d\n", crtc->base.id); in dpu_crtc_atomic_begin()
831 _dpu_crtc_check_and_setup_lm_bounds(crtc, crtc->state); in dpu_crtc_atomic_begin()
834 drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) in dpu_crtc_atomic_begin()
839 * it means we are trying to flush a CRTC whose state is disabled: in dpu_crtc_atomic_begin()
845 _dpu_crtc_blend_setup(crtc); in dpu_crtc_atomic_begin()
847 _dpu_crtc_setup_cp_blocks(crtc); in dpu_crtc_atomic_begin()
858 static void dpu_crtc_atomic_flush(struct drm_crtc *crtc, in dpu_crtc_atomic_flush() argument
868 if (!crtc->state->enable) { in dpu_crtc_atomic_flush()
869 DRM_DEBUG_ATOMIC("crtc%d -> enable %d, skip atomic_flush\n", in dpu_crtc_atomic_flush()
870 crtc->base.id, crtc->state->enable); in dpu_crtc_atomic_flush()
874 DRM_DEBUG_ATOMIC("crtc%d\n", crtc->base.id); in dpu_crtc_atomic_flush()
876 dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_atomic_flush()
877 cstate = to_dpu_crtc_state(crtc->state); in dpu_crtc_atomic_flush()
878 dev = crtc->dev; in dpu_crtc_atomic_flush()
881 if (crtc->index >= ARRAY_SIZE(priv->event_thread)) { in dpu_crtc_atomic_flush()
882 DPU_ERROR("invalid crtc index[%d]\n", crtc->index); in dpu_crtc_atomic_flush()
888 dpu_crtc->event = crtc->state->event; in dpu_crtc_atomic_flush()
889 crtc->state->event = NULL; in dpu_crtc_atomic_flush()
894 * it means we are trying to flush a CRTC whose state is disabled: in dpu_crtc_atomic_flush()
900 /* update performance setting before crtc kickoff */ in dpu_crtc_atomic_flush()
901 dpu_core_perf_crtc_update(crtc, 1); in dpu_crtc_atomic_flush()
905 * required writes/flushing before crtc's "flush in dpu_crtc_atomic_flush()
908 drm_atomic_crtc_for_each_plane(plane, crtc) { in dpu_crtc_atomic_flush()
919 * @crtc: drm CRTC
920 * @state: CRTC state object to release
922 static void dpu_crtc_destroy_state(struct drm_crtc *crtc, in dpu_crtc_destroy_state() argument
927 DRM_DEBUG_ATOMIC("crtc%d\n", crtc->base.id); in dpu_crtc_destroy_state()
934 static int _dpu_crtc_wait_for_frame_done(struct drm_crtc *crtc) in _dpu_crtc_wait_for_frame_done() argument
936 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in _dpu_crtc_wait_for_frame_done()
957 * dpu_crtc_commit_kickoff - trigger kickoff of the commit for this crtc
958 * @crtc: Pointer to drm crtc object
960 void dpu_crtc_commit_kickoff(struct drm_crtc *crtc) in dpu_crtc_commit_kickoff() argument
963 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_commit_kickoff()
964 struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc); in dpu_crtc_commit_kickoff()
965 struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); in dpu_crtc_commit_kickoff()
969 * it means we are trying to start a CRTC whose state is disabled: in dpu_crtc_commit_kickoff()
977 drm_for_each_encoder_mask(encoder, crtc->dev, in dpu_crtc_commit_kickoff()
978 crtc->state->encoder_mask) { in dpu_crtc_commit_kickoff()
980 DRM_DEBUG_ATOMIC("invalid FB not kicking off crtc\n"); in dpu_crtc_commit_kickoff()
988 drm_for_each_encoder_mask(encoder, crtc->dev, in dpu_crtc_commit_kickoff()
989 crtc->state->encoder_mask) in dpu_crtc_commit_kickoff()
994 DRM_DEBUG_ATOMIC("crtc%d first commit\n", crtc->base.id); in dpu_crtc_commit_kickoff()
996 DRM_DEBUG_ATOMIC("crtc%d commit\n", crtc->base.id); in dpu_crtc_commit_kickoff()
1002 drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) in dpu_crtc_commit_kickoff()
1011 static void dpu_crtc_reset(struct drm_crtc *crtc) in dpu_crtc_reset() argument
1015 if (crtc->state) in dpu_crtc_reset()
1016 dpu_crtc_destroy_state(crtc, crtc->state); in dpu_crtc_reset()
1019 __drm_atomic_helper_crtc_reset(crtc, &cstate->base); in dpu_crtc_reset()
1021 __drm_atomic_helper_crtc_reset(crtc, NULL); in dpu_crtc_reset()
1026 * @crtc: Pointer to drm crtc structure
1028 static struct drm_crtc_state *dpu_crtc_duplicate_state(struct drm_crtc *crtc) in dpu_crtc_duplicate_state() argument
1030 struct dpu_crtc_state *cstate, *old_cstate = to_dpu_crtc_state(crtc->state); in dpu_crtc_duplicate_state()
1039 __drm_atomic_helper_crtc_duplicate_state(crtc, &cstate->base); in dpu_crtc_duplicate_state()
1058 static void dpu_crtc_disable(struct drm_crtc *crtc, in dpu_crtc_disable() argument
1062 crtc); in dpu_crtc_disable()
1063 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_disable()
1064 struct dpu_crtc_state *cstate = to_dpu_crtc_state(crtc->state); in dpu_crtc_disable()
1069 DRM_DEBUG_KMS("crtc%d\n", crtc->base.id); in dpu_crtc_disable()
1073 * it won't trigger a warn while assigning crtc. in dpu_crtc_disable()
1076 drm_for_each_encoder_mask(encoder, crtc->dev, in dpu_crtc_disable()
1084 drm_crtc_vblank_off(crtc); in dpu_crtc_disable()
1086 drm_for_each_encoder_mask(encoder, crtc->dev, in dpu_crtc_disable()
1090 * crtc is being used in video mode. in dpu_crtc_disable()
1097 * we will need encoder->crtc connection to process the device sleep & in dpu_crtc_disable()
1100 if (!crtc->state->self_refresh_active) in dpu_crtc_disable()
1105 if (_dpu_crtc_wait_for_frame_done(crtc)) in dpu_crtc_disable()
1106 DPU_ERROR("crtc%d wait for frame done failed;frame_pending%d\n", in dpu_crtc_disable()
1107 crtc->base.id, in dpu_crtc_disable()
1110 trace_dpu_crtc_disable(DRMID(crtc), false, dpu_crtc); in dpu_crtc_disable()
1114 trace_dpu_crtc_disable_frame_pending(DRMID(crtc), in dpu_crtc_disable()
1117 dpu_core_perf_crtc_release_bw(crtc); in dpu_crtc_disable()
1121 dpu_core_perf_crtc_update(crtc, 0); in dpu_crtc_disable()
1127 if (crtc->state->event && !crtc->state->active) { in dpu_crtc_disable()
1128 spin_lock_irqsave(&crtc->dev->event_lock, flags); in dpu_crtc_disable()
1129 drm_crtc_send_vblank_event(crtc, crtc->state->event); in dpu_crtc_disable()
1130 crtc->state->event = NULL; in dpu_crtc_disable()
1131 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); in dpu_crtc_disable()
1134 pm_runtime_put_sync(crtc->dev->dev); in dpu_crtc_disable()
1137 static void dpu_crtc_enable(struct drm_crtc *crtc, in dpu_crtc_enable() argument
1140 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_enable()
1145 old_crtc_state = drm_atomic_get_old_crtc_state(state, crtc); in dpu_crtc_enable()
1147 pm_runtime_get_sync(crtc->dev->dev); in dpu_crtc_enable()
1149 DRM_DEBUG_KMS("crtc%d\n", crtc->base.id); in dpu_crtc_enable()
1151 drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) { in dpu_crtc_enable()
1154 * crtc is being used in video mode. in dpu_crtc_enable()
1161 atomic_inc(&_dpu_crtc_get_kms(crtc)->bandwidth_ref); in dpu_crtc_enable()
1163 trace_dpu_crtc_enable(DRMID(crtc), true, dpu_crtc); in dpu_crtc_enable()
1167 drm_for_each_encoder_mask(encoder, crtc->dev, crtc->state->encoder_mask) in dpu_crtc_enable()
1168 dpu_encoder_assign_crtc(encoder, crtc); in dpu_crtc_enable()
1172 drm_crtc_vblank_on(crtc); in dpu_crtc_enable()
1177 struct drm_crtc *crtc = cstate->crtc; in dpu_crtc_needs_dirtyfb() local
1183 drm_for_each_encoder_mask (encoder, crtc->dev, cstate->encoder_mask) { in dpu_crtc_needs_dirtyfb()
1192 static int dpu_crtc_reassign_planes(struct drm_crtc *crtc, struct drm_crtc_state *crtc_state) in dpu_crtc_reassign_planes() argument
1194 int total_planes = crtc->dev->mode_config.num_total_plane; in dpu_crtc_reassign_planes()
1205 dpu_rm_release_all_sspp(global_state, crtc); in dpu_crtc_reassign_planes()
1226 ret = dpu_assign_plane_resources(global_state, state, crtc, states, total_planes); in dpu_crtc_reassign_planes()
1233 static int dpu_crtc_atomic_check(struct drm_crtc *crtc, in dpu_crtc_atomic_check() argument
1237 crtc); in dpu_crtc_atomic_check()
1238 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_atomic_check()
1250 rc = dpu_crtc_reassign_planes(crtc, crtc_state); in dpu_crtc_atomic_check()
1256 DRM_DEBUG_ATOMIC("crtc%d -> enable %d, active %d, skip atomic_check\n", in dpu_crtc_atomic_check()
1257 crtc->base.id, crtc_state->enable, in dpu_crtc_atomic_check()
1266 rc = _dpu_crtc_check_and_setup_lm_bounds(crtc, crtc_state); in dpu_crtc_atomic_check()
1288 atomic_inc(&_dpu_crtc_get_kms(crtc)->bandwidth_ref); in dpu_crtc_atomic_check()
1290 rc = dpu_core_perf_crtc_check(crtc, crtc_state); in dpu_crtc_atomic_check()
1292 DPU_ERROR("crtc%d failed performance check %d\n", in dpu_crtc_atomic_check()
1293 crtc->base.id, rc); in dpu_crtc_atomic_check()
1300 static enum drm_mode_status dpu_crtc_mode_valid(struct drm_crtc *crtc, in dpu_crtc_mode_valid() argument
1303 struct dpu_kms *dpu_kms = _dpu_crtc_get_kms(crtc); in dpu_crtc_mode_valid()
1312 * max crtc width is equal to the max mixer width * 2 and max height is 4K in dpu_crtc_mode_valid()
1320 * dpu_crtc_vblank - enable or disable vblanks for this crtc
1321 * @crtc: Pointer to drm crtc object
1324 int dpu_crtc_vblank(struct drm_crtc *crtc, bool en) in dpu_crtc_vblank() argument
1326 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_vblank()
1332 * Normally we would iterate through encoder_mask in crtc state to find in dpu_crtc_vblank()
1336 * Instead, we "assign" a crtc to the encoder in enable and clear it in in dpu_crtc_vblank()
1339 * currently assigned to our crtc. in dpu_crtc_vblank()
1341 * Note also that this function cannot be called while crtc is disabled in dpu_crtc_vblank()
1346 list_for_each_entry(enc, &crtc->dev->mode_config.encoder_list, head) { in dpu_crtc_vblank()
1347 trace_dpu_crtc_vblank_enable(DRMID(crtc), DRMID(enc), en, in dpu_crtc_vblank()
1350 dpu_encoder_toggle_vblank_for_crtc(enc, crtc, en); in dpu_crtc_vblank()
1363 struct drm_crtc *crtc; in _dpu_debugfs_status_show() local
1373 crtc = &dpu_crtc->base; in _dpu_debugfs_status_show()
1375 drm_modeset_lock_all(crtc->dev); in _dpu_debugfs_status_show()
1376 cstate = to_dpu_crtc_state(crtc->state); in _dpu_debugfs_status_show()
1378 mode = &crtc->state->adjusted_mode; in _dpu_debugfs_status_show()
1381 seq_printf(s, "crtc:%d width:%d height:%d\n", crtc->base.id, in _dpu_debugfs_status_show()
1395 drm_atomic_crtc_for_each_plane(plane, crtc) { in _dpu_debugfs_status_show()
1467 drm_modeset_unlock_all(crtc->dev); in _dpu_debugfs_status_show()
1476 struct drm_crtc *crtc = s->private; in dpu_crtc_debugfs_state_show() local
1477 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in dpu_crtc_debugfs_state_show()
1479 seq_printf(s, "client type: %d\n", dpu_crtc_get_client_type(crtc)); in dpu_crtc_debugfs_state_show()
1480 seq_printf(s, "intf_mode: %d\n", dpu_crtc_get_intf_mode(crtc)); in dpu_crtc_debugfs_state_show()
1491 static int _dpu_crtc_init_debugfs(struct drm_crtc *crtc) in _dpu_crtc_init_debugfs() argument
1493 struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc); in _dpu_crtc_init_debugfs()
1496 crtc->debugfs_entry, in _dpu_crtc_init_debugfs()
1499 crtc->debugfs_entry, in _dpu_crtc_init_debugfs()
1506 static int _dpu_crtc_init_debugfs(struct drm_crtc *crtc) in _dpu_crtc_init_debugfs() argument
1512 static int dpu_crtc_late_register(struct drm_crtc *crtc) in dpu_crtc_late_register() argument
1514 return _dpu_crtc_init_debugfs(crtc); in dpu_crtc_late_register()
1544 * dpu_crtc_init - create a new crtc object
1548 * @return: new crtc object or error
1550 * initialize CRTC
1557 struct drm_crtc *crtc = NULL; in dpu_crtc_init() local
1569 crtc = &dpu_crtc->base; in dpu_crtc_init()
1570 crtc->dev = dev; in dpu_crtc_init()
1587 drm_crtc_helper_add(crtc, &dpu_crtc_helper_funcs); in dpu_crtc_init()
1590 drm_crtc_enable_color_mgmt(crtc, 0, true, 0); in dpu_crtc_init()
1592 /* save user friendly CRTC name for later */ in dpu_crtc_init()
1593 snprintf(dpu_crtc->name, DPU_CRTC_NAME_SIZE, "crtc%u", crtc->base.id); in dpu_crtc_init()
1598 ret = drm_self_refresh_helper_init(crtc); in dpu_crtc_init()
1601 crtc->name, ret); in dpu_crtc_init()
1605 DRM_DEBUG_KMS("%s: successfully initialized crtc\n", dpu_crtc->name); in dpu_crtc_init()
1606 return crtc; in dpu_crtc_init()