Lines Matching full:crtc
28 struct intel_crtc *crtc; member
97 struct intel_crtc *crtc) in pre_commit_is_vrr_active() argument
100 intel_atomic_get_old_crtc_state(state, crtc); in pre_commit_is_vrr_active()
102 intel_atomic_get_new_crtc_state(state, crtc); in pre_commit_is_vrr_active()
109 return old_crtc_state->vrr.enable && !intel_crtc_vrr_disabling(state, crtc); in pre_commit_is_vrr_active()
114 struct intel_crtc *crtc) in pre_commit_crtc_state() argument
117 intel_atomic_get_old_crtc_state(state, crtc); in pre_commit_crtc_state()
119 intel_atomic_get_new_crtc_state(state, crtc); in pre_commit_crtc_state()
138 struct intel_crtc *crtc) in dsb_vtotal() argument
140 const struct intel_crtc_state *crtc_state = pre_commit_crtc_state(state, crtc); in dsb_vtotal()
142 if (pre_commit_is_vrr_active(state, crtc)) in dsb_vtotal()
149 struct intel_crtc *crtc) in dsb_dewake_scanline_start() argument
151 const struct intel_crtc_state *crtc_state = pre_commit_crtc_state(state, crtc); in dsb_dewake_scanline_start()
160 struct intel_crtc *crtc) in dsb_dewake_scanline_end() argument
162 const struct intel_crtc_state *crtc_state = pre_commit_crtc_state(state, crtc); in dsb_dewake_scanline_end()
168 struct intel_crtc *crtc, int scanline) in dsb_scanline_to_hw() argument
170 const struct intel_crtc_state *crtc_state = pre_commit_crtc_state(state, crtc); in dsb_scanline_to_hw()
171 int vtotal = dsb_vtotal(state, crtc); in dsb_scanline_to_hw()
177 struct intel_crtc *crtc) in dsb_chicken() argument
179 if (pre_commit_is_vrr_active(state, crtc)) in dsb_chicken()
191 struct intel_crtc *crtc = dsb->crtc; in assert_dsb_has_room() local
192 struct intel_display *display = to_intel_display(crtc->base.dev); in assert_dsb_has_room()
196 "[CRTC:%d:%s] DSB %d buffer overflow\n", in assert_dsb_has_room()
197 crtc->base.base.id, crtc->base.name, dsb->id); in assert_dsb_has_room()
202 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_dump() local
203 struct intel_display *display = to_intel_display(crtc->base.dev); in intel_dsb_dump()
206 drm_dbg_kms(display->drm, "[CRTC:%d:%s] DSB %d commands {\n", in intel_dsb_dump()
207 crtc->base.base.id, crtc->base.name, dsb->id); in intel_dsb_dump()
355 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_nonpost_start() local
356 enum pipe pipe = crtc->pipe; in intel_dsb_nonpost_start()
365 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_nonpost_end() local
366 enum pipe pipe = crtc->pipe; in intel_dsb_nonpost_end()
407 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_wait_dsl() local
409 lower_in = dsb_scanline_to_hw(state, crtc, lower_in); in intel_dsb_wait_dsl()
410 upper_in = dsb_scanline_to_hw(state, crtc, upper_in); in intel_dsb_wait_dsl()
412 lower_out = dsb_scanline_to_hw(state, crtc, lower_out); in intel_dsb_wait_dsl()
413 upper_out = dsb_scanline_to_hw(state, crtc, upper_out); in intel_dsb_wait_dsl()
422 drm_WARN_ON(crtc->base.dev, 1); /* assert_dsl_ok() should have caught it already */ in intel_dsb_wait_dsl()
429 struct intel_crtc *crtc = dsb->crtc; in assert_dsl_ok() local
430 int vtotal = dsb_vtotal(state, crtc); in assert_dsl_ok()
436 drm_WARN(crtc->base.dev, (end - start + vtotal) % vtotal == vtotal - 1, in assert_dsl_ok()
437 "[CRTC:%d:%s] DSB %d bad scanline window wait: %d-%d (vt=%d)\n", in assert_dsl_ok()
438 crtc->base.base.id, crtc->base.name, dsb->id, in assert_dsl_ok()
480 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_finish() local
488 intel_dsb_reg_write(dsb, DSB_PMCTRL(crtc->pipe, dsb->id), 0); in intel_dsb_finish()
489 intel_dsb_reg_write_masked(dsb, DSB_PMCTRL_2(crtc->pipe, dsb->id), in intel_dsb_finish()
534 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_vblank_evade() local
535 const struct intel_crtc_state *crtc_state = pre_commit_crtc_state(state, crtc); in intel_dsb_vblank_evade()
541 if (pre_commit_is_vrr_active(state, crtc)) { in intel_dsb_vblank_evade()
562 struct intel_crtc *crtc = dsb->crtc; in _intel_dsb_chain() local
563 enum pipe pipe = crtc->pipe; in _intel_dsb_chain()
577 dsb_chicken(state, crtc)); in _intel_dsb_chain()
584 int dewake_scanline = dsb_dewake_scanline_start(state, crtc); in _intel_dsb_chain()
585 int hw_dewake_scanline = dsb_scanline_to_hw(state, crtc, dewake_scanline); in _intel_dsb_chain()
609 dsb_dewake_scanline_start(state, crtc), in _intel_dsb_chain()
610 dsb_dewake_scanline_end(state, crtc)); in _intel_dsb_chain()
626 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_wait_vblank_delay() local
627 const struct intel_crtc_state *crtc_state = pre_commit_crtc_state(state, crtc); in intel_dsb_wait_vblank_delay()
637 struct intel_crtc *crtc = dsb->crtc; in _intel_dsb_commit() local
638 struct intel_display *display = to_intel_display(crtc->base.dev); in _intel_dsb_commit()
639 enum pipe pipe = crtc->pipe; in _intel_dsb_commit()
647 drm_err(display->drm, "[CRTC:%d:%s] DSB %d is busy\n", in _intel_dsb_commit()
648 crtc->base.base.id, crtc->base.name, dsb->id); in _intel_dsb_commit()
705 struct intel_crtc *crtc = dsb->crtc; in intel_dsb_wait() local
706 struct intel_display *display = to_intel_display(crtc->base.dev); in intel_dsb_wait()
707 enum pipe pipe = crtc->pipe; in intel_dsb_wait()
716 "[CRTC:%d:%s] DSB %d timed out waiting for idle (current head=0x%x, head=0x%x, tail=0x%x)\n", in intel_dsb_wait()
717 crtc->base.base.id, crtc->base.name, dsb->id, in intel_dsb_wait()
740 * @crtc: the CRTC
751 struct intel_crtc *crtc, in intel_dsb_prepare() argument
775 if (!intel_dsb_buffer_create(crtc, &dsb->dsb_buf, size)) in intel_dsb_prepare()
781 dsb->crtc = crtc; in intel_dsb_prepare()
784 dsb->chicken = dsb_chicken(state, crtc); in intel_dsb_prepare()
786 dsb_scanline_to_hw(state, crtc, dsb_dewake_scanline_start(state, crtc)); in intel_dsb_prepare()
795 … "[CRTC:%d:%s] DSB %d queue setup failed, will fallback to MMIO for display HW programming\n", in intel_dsb_prepare()
796 crtc->base.base.id, crtc->base.name, dsb_id); in intel_dsb_prepare()
817 struct intel_crtc *crtc = intel_crtc_for_pipe(display, pipe); in intel_dsb_irq_handler() local
826 if (crtc->dsb_event) { in intel_dsb_irq_handler()
831 drm_crtc_accurate_vblank_count(&crtc->base); in intel_dsb_irq_handler()
833 drm_crtc_send_vblank_event(&crtc->base, crtc->dsb_event); in intel_dsb_irq_handler()
834 crtc->dsb_event = NULL; in intel_dsb_irq_handler()
842 drm_err(display->drm, "[CRTC:%d:%s] DSB %d error interrupt: 0x%x\n", in intel_dsb_irq_handler()
843 crtc->base.base.id, crtc->base.name, dsb_id, errors); in intel_dsb_irq_handler()