Lines Matching defs:crtc_state
18 static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_state)
20 struct intel_display *display = to_intel_display(crtc_state);
21 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
23 &crtc_state->hw.adjusted_mode;
24 const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
69 static int intel_pch_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
71 struct intel_display *display = to_intel_display(crtc_state);
72 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
73 int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
74 int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
107 static int intel_pch_pfit_check_scaling(const struct intel_crtc_state *crtc_state)
109 struct intel_display *display = to_intel_display(crtc_state);
110 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
111 const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
112 int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
113 int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
142 static int intel_pch_pfit_check_timings(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);
147 &crtc_state->hw.adjusted_mode;
160 static int intel_pch_pfit_check_cloning(const struct intel_crtc_state *crtc_state)
162 struct intel_display *display = to_intel_display(crtc_state);
163 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
172 if (crtc_state->uapi.encoder_mask &&
173 !is_power_of_2(crtc_state->uapi.encoder_mask)) {
184 static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
187 struct intel_display *display = to_intel_display(crtc_state);
189 &crtc_state->hw.adjusted_mode;
190 int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
191 int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
197 crtc_state->output_format != INTEL_OUTPUT_FORMAT_YCBCR420)
251 drm_rect_init(&crtc_state->pch_pfit.dst,
253 crtc_state->pch_pfit.enabled = true;
262 ret = intel_pch_pfit_check_dst_window(crtc_state);
266 ret = intel_pch_pfit_check_src_size(crtc_state);
270 ret = intel_pch_pfit_check_scaling(crtc_state);
274 ret = intel_pch_pfit_check_timings(crtc_state);
278 ret = intel_pch_pfit_check_cloning(crtc_state);
341 static void i965_scale_aspect(struct intel_crtc_state *crtc_state,
345 &crtc_state->hw.adjusted_mode;
346 int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
347 int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
362 static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
366 struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
367 int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
368 int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
418 static int intel_gmch_pfit_check_timings(const struct intel_crtc_state *crtc_state)
420 struct intel_display *display = to_intel_display(crtc_state);
421 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
423 &crtc_state->hw.adjusted_mode;
450 static int gmch_panel_fitting(struct intel_crtc_state *crtc_state,
453 struct intel_display *display = to_intel_display(crtc_state);
454 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
456 struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode;
457 int pipe_src_w = drm_rect_width(&crtc_state->pipe_src);
458 int pipe_src_h = drm_rect_height(&crtc_state->pipe_src);
497 i965_scale_aspect(crtc_state, &pfit_control);
499 i9xx_scale_aspect(crtc_state, &pfit_control,
536 if (DISPLAY_VER(display) < 4 && crtc_state->pipe_bpp == 18)
539 crtc_state->gmch_pfit.control = pfit_control;
540 crtc_state->gmch_pfit.pgm_ratios = pfit_pgm_ratios;
541 crtc_state->gmch_pfit.lvds_border_bits = border;
546 return intel_gmch_pfit_check_timings(crtc_state);
549 int intel_pfit_compute_config(struct intel_crtc_state *crtc_state,
552 struct intel_display *display = to_intel_display(crtc_state);
555 return gmch_panel_fitting(crtc_state, conn_state);
557 return pch_panel_fitting(crtc_state, conn_state);
560 void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
562 struct intel_display *display = to_intel_display(crtc_state);
563 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
564 const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
571 if (!crtc_state->pch_pfit.enabled)
608 void ilk_pfit_get_config(struct intel_crtc_state *crtc_state)
610 struct intel_display *display = to_intel_display(crtc_state);
611 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
624 crtc_state->pch_pfit.enabled = true;
629 drm_rect_init(&crtc_state->pch_pfit.dst,
643 void i9xx_pfit_enable(const struct intel_crtc_state *crtc_state)
645 struct intel_display *display = to_intel_display(crtc_state);
646 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
648 if (!crtc_state->gmch_pfit.control)
657 assert_transcoder_disabled(display, crtc_state->cpu_transcoder);
660 crtc_state->gmch_pfit.pgm_ratios);
662 crtc_state->gmch_pfit.control);
694 void i9xx_pfit_get_config(struct intel_crtc_state *crtc_state)
696 struct intel_display *display = to_intel_display(crtc_state);
697 struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
717 crtc_state->gmch_pfit.control = tmp;
718 crtc_state->gmch_pfit.pgm_ratios =