Lines Matching refs:crtc

96 static void intel_flipq_crtc_init(struct intel_crtc *crtc)  in intel_flipq_crtc_init()  argument
98 struct intel_display *display = to_intel_display(crtc); in intel_flipq_crtc_init()
102 struct intel_flipq *flipq = &crtc->flipq[flipq_id]; in intel_flipq_crtc_init()
104 flipq->start_mmioaddr = intel_pipedmc_start_mmioaddr(crtc) + intel_flipq_offset(flipq_id); in intel_flipq_crtc_init()
108 crtc->base.base.id, crtc->base.name, in intel_flipq_crtc_init()
130 struct intel_crtc *crtc; in intel_flipq_init() local
134 for_each_intel_crtc(display->drm, crtc) in intel_flipq_init()
135 intel_flipq_crtc_init(crtc); in intel_flipq_init()
158 static void intel_flipq_preempt(struct intel_crtc *crtc, bool preempt) in intel_flipq_preempt() argument
160 struct intel_display *display = to_intel_display(crtc); in intel_flipq_preempt()
162 intel_de_rmw(display, PIPEDMC_FQ_CTRL(crtc->pipe), in intel_flipq_preempt()
167 PIPEDMC_FQ_STATUS(crtc->pipe), in intel_flipq_preempt()
171 crtc->base.base.id, crtc->base.name); in intel_flipq_preempt()
174 static int intel_flipq_current_head(struct intel_crtc *crtc, enum intel_flipq_id flipq_id) in intel_flipq_current_head() argument
176 struct intel_display *display = to_intel_display(crtc); in intel_flipq_current_head()
178 return intel_de_read(display, PIPEDMC_FPQ_CHP(crtc->pipe, flipq_id)); in intel_flipq_current_head()
181 static void intel_flipq_write_tail(struct intel_crtc *crtc) in intel_flipq_write_tail() argument
183 struct intel_display *display = to_intel_display(crtc); in intel_flipq_write_tail()
185 intel_de_write(display, PIPEDMC_FPQ_ATOMIC_TP(crtc->pipe), in intel_flipq_write_tail()
186 PIPEDMC_FPQ_PLANEQ_3_TP(crtc->flipq[INTEL_FLIPQ_PLANE_3].tail) | in intel_flipq_write_tail()
187 PIPEDMC_FPQ_PLANEQ_2_TP(crtc->flipq[INTEL_FLIPQ_PLANE_2].tail) | in intel_flipq_write_tail()
188 PIPEDMC_FPQ_PLANEQ_1_TP(crtc->flipq[INTEL_FLIPQ_PLANE_1].tail) | in intel_flipq_write_tail()
189 PIPEDMC_FPQ_FASTQ_TP(crtc->flipq[INTEL_FLIPQ_FAST].tail) | in intel_flipq_write_tail()
190 PIPEDMC_FPQ_GENERALQ_TP(crtc->flipq[INTEL_FLIPQ_GENERAL].tail)); in intel_flipq_write_tail()
193 static void intel_flipq_sw_dmc_wake(struct intel_crtc *crtc) in intel_flipq_sw_dmc_wake() argument
195 struct intel_display *display = to_intel_display(crtc); in intel_flipq_sw_dmc_wake()
197 intel_de_write(display, PIPEDMC_FPQ_CTL1(crtc->pipe), PIPEDMC_SW_DMC_WAKE); in intel_flipq_sw_dmc_wake()
208 void intel_flipq_dump(struct intel_crtc *crtc, in intel_flipq_dump() argument
211 struct intel_display *display = to_intel_display(crtc); in intel_flipq_dump()
212 struct intel_flipq *flipq = &crtc->flipq[flipq_id]; in intel_flipq_dump()
217 crtc->base.base.id, crtc->base.name, flipq_id, in intel_flipq_dump()
228 crtc->base.base.id, crtc->base.name, flipq_id, in intel_flipq_dump()
229 intel_de_read(display, PIPEDMC_FPQ_CHP(crtc->pipe, flipq_id)), in intel_flipq_dump()
230 intel_de_read(display, PIPEDMC_FPQ_HP(crtc->pipe, flipq_id))); in intel_flipq_dump()
234 crtc->base.base.id, crtc->base.name, flipq_id, in intel_flipq_dump()
235 intel_flipq_current_head(crtc, flipq_id)); in intel_flipq_dump()
239 crtc->base.base.id, crtc->base.name, in intel_flipq_dump()
240 intel_de_read(display, PIPEDMC_FPQ_TS(crtc->pipe))); in intel_flipq_dump()
242 tmp = intel_de_read(display, PIPEDMC_FPQ_ATOMIC_TP(crtc->pipe)); in intel_flipq_dump()
246 crtc->base.base.id, crtc->base.name, in intel_flipq_dump()
256 struct intel_crtc *crtc = intel_crtc_for_pipe(display, pipe); in intel_flipq_reset() local
265 struct intel_flipq *flipq = &crtc->flipq[flipq_id]; in intel_flipq_reset()
287 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in intel_flipq_enable() local
293 u32 start_mmioaddr = intel_pipedmc_start_mmioaddr(crtc); in intel_flipq_enable()
302 intel_de_write(display, PIPEDMC_SCANLINECMPUPPER(crtc->pipe), in intel_flipq_enable()
304 intel_de_write(display, PIPEDMC_SCANLINECMPLOWER(crtc->pipe), in intel_flipq_enable()
308 intel_pipedmc_enable_event(crtc, flipq_event_id(display)); in intel_flipq_enable()
310 intel_de_write(display, PIPEDMC_FQ_CTRL(crtc->pipe), PIPEDMC_FQ_CTRL_ENABLE); in intel_flipq_enable()
316 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); in intel_flipq_disable() local
318 intel_flipq_preempt(crtc, true); in intel_flipq_disable()
320 intel_de_write(display, PIPEDMC_FQ_CTRL(crtc->pipe), 0); in intel_flipq_disable()
322 intel_pipedmc_disable_event(crtc, flipq_event_id(display)); in intel_flipq_disable()
324 intel_de_write(display, PIPEDMC_SCANLINECMPLOWER(crtc->pipe), 0); in intel_flipq_disable()
325 intel_de_write(display, PIPEDMC_SCANLINECMPUPPER(crtc->pipe), 0); in intel_flipq_disable()
328 static bool assert_flipq_has_room(struct intel_crtc *crtc, in assert_flipq_has_room() argument
331 struct intel_display *display = to_intel_display(crtc); in assert_flipq_has_room()
332 struct intel_flipq *flipq = &crtc->flipq[flipq_id]; in assert_flipq_has_room()
335 head = intel_flipq_current_head(crtc, flipq_id); in assert_flipq_has_room()
340 crtc->base.base.id, crtc->base.name, flipq_id, in assert_flipq_has_room()
421 void intel_flipq_add(struct intel_crtc *crtc, in intel_flipq_add() argument
427 struct intel_display *display = to_intel_display(crtc); in intel_flipq_add()
428 struct intel_flipq *flipq = &crtc->flipq[flipq_id]; in intel_flipq_add()
430 if (!assert_flipq_has_room(crtc, flipq_id)) in intel_flipq_add()
433 pts += intel_de_read(display, PIPEDMC_FPQ_TS(crtc->pipe)); in intel_flipq_add()
435 intel_flipq_preempt(crtc, true); in intel_flipq_add()
443 intel_flipq_write_tail(crtc); in intel_flipq_add()
445 intel_flipq_preempt(crtc, false); in intel_flipq_add()
447 intel_flipq_sw_dmc_wake(crtc); in intel_flipq_add()
458 void intel_flipq_wait_dmc_halt(struct intel_dsb *dsb, struct intel_crtc *crtc) in intel_flipq_wait_dmc_halt() argument
460 struct intel_display *display = to_intel_display(crtc); in intel_flipq_wait_dmc_halt()
466 void intel_flipq_unhalt_dmc(struct intel_dsb *dsb, struct intel_crtc *crtc) in intel_flipq_unhalt_dmc() argument
468 struct intel_display *display = to_intel_display(crtc); in intel_flipq_unhalt_dmc()
471 intel_dsb_reg_write(dsb, PIPEDMC_CTL(crtc->pipe), 0); in intel_flipq_unhalt_dmc()