Lines Matching full:crtc

31 		if (conn_st->crtc != crtc_st->crtc)  in komeda_crtc_get_color_config()
66 * @crtc: DRM crtc
67 * @state: the crtc state object
77 komeda_crtc_atomic_check(struct drm_crtc *crtc, in komeda_crtc_atomic_check() argument
81 crtc); in komeda_crtc_atomic_check()
82 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_atomic_check()
107 /* For active a crtc, mainly need two parts of preparation
203 struct drm_crtc *crtc = &kcrtc->base; in komeda_crtc_handle_event() local
207 drm_crtc_handle_vblank(crtc); in komeda_crtc_handle_event()
215 DRM_WARN("CRTC[%d]: EOW happen but no wb_connector.\n", in komeda_crtc_handle_event()
226 spin_lock_irqsave(&crtc->dev->event_lock, flags); in komeda_crtc_handle_event()
230 } else if (crtc->state->event) { in komeda_crtc_handle_event()
231 event = crtc->state->event; in komeda_crtc_handle_event()
236 crtc->state->event = NULL; in komeda_crtc_handle_event()
237 drm_crtc_send_vblank_event(crtc, event); in komeda_crtc_handle_event()
239 DRM_WARN("CRTC[%d]: FLIP happened but no pending commit.\n", in komeda_crtc_handle_event()
242 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); in komeda_crtc_handle_event()
247 komeda_crtc_do_flush(struct drm_crtc *crtc, in komeda_crtc_do_flush() argument
250 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_do_flush()
251 struct komeda_crtc_state *kcrtc_st = to_kcrtc_st(crtc->state); in komeda_crtc_do_flush()
258 DRM_DEBUG_ATOMIC("CRTC%d_FLUSH: active_pipes: 0x%x, affected: 0x%x.\n", in komeda_crtc_do_flush()
259 drm_crtc_index(crtc), in komeda_crtc_do_flush()
278 komeda_crtc_atomic_enable(struct drm_crtc *crtc, in komeda_crtc_atomic_enable() argument
282 crtc); in komeda_crtc_atomic_enable()
283 pm_runtime_get_sync(crtc->dev->dev); in komeda_crtc_atomic_enable()
284 komeda_crtc_prepare(to_kcrtc(crtc)); in komeda_crtc_atomic_enable()
285 drm_crtc_vblank_on(crtc); in komeda_crtc_atomic_enable()
286 WARN_ON(drm_crtc_vblank_get(crtc)); in komeda_crtc_atomic_enable()
287 komeda_crtc_do_flush(crtc, old); in komeda_crtc_atomic_enable()
324 komeda_crtc_atomic_disable(struct drm_crtc *crtc, in komeda_crtc_atomic_disable() argument
328 crtc); in komeda_crtc_atomic_disable()
329 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_atomic_disable()
336 DRM_DEBUG_ATOMIC("CRTC%d_DISABLE: active_pipes: 0x%x, affected: 0x%x\n", in komeda_crtc_atomic_disable()
337 drm_crtc_index(crtc), in komeda_crtc_atomic_disable()
350 * use the crtc->state->event to tracking the HW disable operation. in komeda_crtc_atomic_disable()
352 * the crtc->commit is not for disable, but a modeset operation when in komeda_crtc_atomic_disable()
353 * crtc is active, such commit actually has been completed by 3 in komeda_crtc_atomic_disable()
356 * so on this case the crtc->commit is for the whole process. in komeda_crtc_atomic_disable()
358 * flip_done for tracing the disable. and crtc->state->event for in komeda_crtc_atomic_disable()
363 disable_done = (needs_phase2 || crtc->state->active) ? in komeda_crtc_atomic_disable()
364 NULL : &crtc->state->commit->flip_done; in komeda_crtc_atomic_disable()
373 disable_done = crtc->state->active ? in komeda_crtc_atomic_disable()
374 NULL : &crtc->state->commit->flip_done; in komeda_crtc_atomic_disable()
379 drm_crtc_vblank_put(crtc); in komeda_crtc_atomic_disable()
380 drm_crtc_vblank_off(crtc); in komeda_crtc_atomic_disable()
382 pm_runtime_put(crtc->dev->dev); in komeda_crtc_atomic_disable()
386 komeda_crtc_atomic_flush(struct drm_crtc *crtc, in komeda_crtc_atomic_flush() argument
390 crtc); in komeda_crtc_atomic_flush()
392 crtc); in komeda_crtc_atomic_flush()
397 komeda_crtc_do_flush(crtc, old); in komeda_crtc_atomic_flush()
417 struct drm_crtc *crtc = kcrtc_st->base.crtc; in komeda_crtc_get_aclk() local
418 struct komeda_dev *mdev = crtc->dev->dev_private; in komeda_crtc_get_aclk()
422 min_aclk = komeda_calc_min_aclk_rate(to_kcrtc(crtc), pxlclk); in komeda_crtc_get_aclk()
428 komeda_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *m) in komeda_crtc_mode_valid() argument
430 struct komeda_dev *mdev = crtc->dev->dev_private; in komeda_crtc_mode_valid()
431 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_mode_valid()
448 min_aclk = komeda_calc_min_aclk_rate(to_kcrtc(crtc), min_pxlclk); in komeda_crtc_mode_valid()
459 static bool komeda_crtc_mode_fixup(struct drm_crtc *crtc, in komeda_crtc_mode_fixup() argument
463 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_mode_fixup()
493 static void komeda_crtc_reset(struct drm_crtc *crtc) in komeda_crtc_reset() argument
497 if (crtc->state) in komeda_crtc_reset()
498 __drm_atomic_helper_crtc_destroy_state(crtc->state); in komeda_crtc_reset()
500 kfree(to_kcrtc_st(crtc->state)); in komeda_crtc_reset()
501 crtc->state = NULL; in komeda_crtc_reset()
505 __drm_atomic_helper_crtc_reset(crtc, &state->base); in komeda_crtc_reset()
509 komeda_crtc_atomic_duplicate_state(struct drm_crtc *crtc) in komeda_crtc_atomic_duplicate_state() argument
511 struct komeda_crtc_state *old = to_kcrtc_st(crtc->state); in komeda_crtc_atomic_duplicate_state()
518 __drm_atomic_helper_crtc_duplicate_state(crtc, &new->base); in komeda_crtc_atomic_duplicate_state()
527 static void komeda_crtc_atomic_destroy_state(struct drm_crtc *crtc, in komeda_crtc_atomic_destroy_state() argument
534 static int komeda_crtc_vblank_enable(struct drm_crtc *crtc) in komeda_crtc_vblank_enable() argument
536 struct komeda_dev *mdev = crtc->dev->dev_private; in komeda_crtc_vblank_enable()
537 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_vblank_enable()
543 static void komeda_crtc_vblank_disable(struct drm_crtc *crtc) in komeda_crtc_vblank_disable() argument
545 struct komeda_dev *mdev = crtc->dev->dev_private; in komeda_crtc_vblank_disable()
546 struct komeda_crtc *kcrtc = to_kcrtc(crtc); in komeda_crtc_vblank_disable()
565 struct komeda_crtc *crtc; in komeda_kms_setup_crtcs() local
573 crtc = &kms->crtcs[kms->n_crtcs]; in komeda_kms_setup_crtcs()
576 crtc->master = master; in komeda_kms_setup_crtcs()
577 crtc->slave = komeda_pipeline_get_slave(master); in komeda_kms_setup_crtcs()
579 if (crtc->slave) in komeda_kms_setup_crtcs()
580 sprintf(str, "pipe-%d", crtc->slave->id); in komeda_kms_setup_crtcs()
584 DRM_INFO("CRTC-%d: master(pipe-%d) slave(%s).\n", in komeda_kms_setup_crtcs()
594 get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc) in get_crtc_primary() argument
605 if (kplane->layer->base.pipeline == crtc->master) in get_crtc_primary()
636 struct drm_crtc *crtc = &kcrtc->base; in komeda_crtc_add() local
642 err = drm_crtc_init_with_planes(base, crtc, in komeda_crtc_add()
648 drm_crtc_helper_add(crtc, &komeda_crtc_helper_funcs); in komeda_crtc_add()
650 crtc->port = pipe->of_output_port; in komeda_crtc_add()
655 kcrtc->encoder.possible_crtcs = drm_crtc_mask(crtc); in komeda_crtc_add()
666 drm_crtc_enable_color_mgmt(crtc, 0, true, KOMEDA_COLOR_LUT_SIZE); in komeda_crtc_add()