Lines Matching refs:crtc_state

93 u32 intel_crtc_max_vblank_count(const struct intel_crtc_state *crtc_state)
95 struct intel_display *display = to_intel_display(crtc_state);
103 if (crtc_state->mode_flags & (I915_MODE_FLAG_DSI_USE_TE0 |
112 (crtc_state->output_types & BIT(INTEL_OUTPUT_TVOUT)))
123 void intel_crtc_vblank_on(const struct intel_crtc_state *crtc_state)
125 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
127 crtc->vblank_psr_notify = intel_psr_needs_vblank_notification(crtc_state);
131 intel_crtc_max_vblank_count(crtc_state));
142 void intel_crtc_vblank_off(const struct intel_crtc_state *crtc_state)
144 struct intel_display *display = to_intel_display(crtc_state);
145 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
164 struct intel_crtc_state *crtc_state;
166 crtc_state = kmalloc(sizeof(*crtc_state), GFP_KERNEL);
168 if (crtc_state)
169 intel_crtc_state_reset(crtc_state, crtc);
171 return crtc_state;
174 void intel_crtc_state_reset(struct intel_crtc_state *crtc_state,
177 memset(crtc_state, 0, sizeof(*crtc_state));
179 __drm_atomic_helper_crtc_state_reset(&crtc_state->uapi, &crtc->base);
181 crtc_state->cpu_transcoder = INVALID_TRANSCODER;
182 crtc_state->master_transcoder = INVALID_TRANSCODER;
183 crtc_state->hsw_workaround_pipe = INVALID_PIPE;
184 crtc_state->scaler_state.scaler_id = -1;
185 crtc_state->mst_master_transcoder = INVALID_TRANSCODER;
186 crtc_state->max_link_bpp_x16 = INT_MAX;
191 struct intel_crtc_state *crtc_state;
198 crtc_state = intel_crtc_state_alloc(crtc);
199 if (!crtc_state) {
204 crtc->base.state = &crtc_state->uapi;
205 crtc->config = crtc_state;
418 static bool intel_crtc_needs_vblank_work(const struct intel_crtc_state *crtc_state)
420 struct intel_display *display = to_intel_display(crtc_state);
422 return crtc_state->hw.active &&
423 !crtc_state->preload_luts &&
424 !intel_crtc_needs_modeset(crtc_state) &&
425 (intel_crtc_needs_color_update(crtc_state) &&
427 !intel_color_uses_dsb(crtc_state) &&
428 !crtc_state->use_dsb;
434 struct intel_crtc_state *crtc_state =
435 container_of(work, typeof(*crtc_state), vblank_work);
436 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
440 intel_color_load_luts(crtc_state);
442 if (crtc_state->uapi.event) {
444 drm_crtc_send_vblank_event(&crtc->base, crtc_state->uapi.event);
446 crtc_state->uapi.event = NULL;
452 static void intel_crtc_vblank_work_init(struct intel_crtc_state *crtc_state)
454 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
456 drm_vblank_work_init(&crtc_state->vblank_work, &crtc->base,
467 struct intel_crtc_state *crtc_state;
471 for_each_new_intel_crtc_in_state(state, crtc, crtc_state, i) {
472 if (!intel_crtc_needs_vblank_work(crtc_state))
475 drm_vblank_work_flush(&crtc_state->vblank_work);
616 void intel_crtc_arm_vblank_event(struct intel_crtc_state *crtc_state)
618 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
621 if (!crtc_state->uapi.event)
627 drm_crtc_arm_vblank_event(&crtc->base, crtc_state->uapi.event);
630 crtc_state->uapi.event = NULL;
633 void intel_crtc_prepare_vblank_event(struct intel_crtc_state *crtc_state,
636 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
640 *event = crtc_state->uapi.event;
643 crtc_state->uapi.event = NULL;