|
@@ -113,51 +113,51 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
|
|
|
x = y = width = height = 0;
|
|
|
|
|
|
/* Native modes don't need fitting */
|
|
|
- if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
|
|
|
- adjusted_mode->vdisplay == pipe_config->pipe_src_h)
|
|
|
+ if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
|
|
|
+ adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
|
|
|
goto done;
|
|
|
|
|
|
switch (fitting_mode) {
|
|
|
case DRM_MODE_SCALE_CENTER:
|
|
|
width = pipe_config->pipe_src_w;
|
|
|
height = pipe_config->pipe_src_h;
|
|
|
- x = (adjusted_mode->hdisplay - width + 1)/2;
|
|
|
- y = (adjusted_mode->vdisplay - height + 1)/2;
|
|
|
+ x = (adjusted_mode->crtc_hdisplay - width + 1)/2;
|
|
|
+ y = (adjusted_mode->crtc_vdisplay - height + 1)/2;
|
|
|
break;
|
|
|
|
|
|
case DRM_MODE_SCALE_ASPECT:
|
|
|
/* Scale but preserve the aspect ratio */
|
|
|
{
|
|
|
- u32 scaled_width = adjusted_mode->hdisplay
|
|
|
+ u32 scaled_width = adjusted_mode->crtc_hdisplay
|
|
|
* pipe_config->pipe_src_h;
|
|
|
u32 scaled_height = pipe_config->pipe_src_w
|
|
|
- * adjusted_mode->vdisplay;
|
|
|
+ * adjusted_mode->crtc_vdisplay;
|
|
|
if (scaled_width > scaled_height) { /* pillar */
|
|
|
width = scaled_height / pipe_config->pipe_src_h;
|
|
|
if (width & 1)
|
|
|
width++;
|
|
|
- x = (adjusted_mode->hdisplay - width + 1) / 2;
|
|
|
+ x = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
|
|
|
y = 0;
|
|
|
- height = adjusted_mode->vdisplay;
|
|
|
+ height = adjusted_mode->crtc_vdisplay;
|
|
|
} else if (scaled_width < scaled_height) { /* letter */
|
|
|
height = scaled_width / pipe_config->pipe_src_w;
|
|
|
if (height & 1)
|
|
|
height++;
|
|
|
- y = (adjusted_mode->vdisplay - height + 1) / 2;
|
|
|
+ y = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
|
|
|
x = 0;
|
|
|
- width = adjusted_mode->hdisplay;
|
|
|
+ width = adjusted_mode->crtc_hdisplay;
|
|
|
} else {
|
|
|
x = y = 0;
|
|
|
- width = adjusted_mode->hdisplay;
|
|
|
- height = adjusted_mode->vdisplay;
|
|
|
+ width = adjusted_mode->crtc_hdisplay;
|
|
|
+ height = adjusted_mode->crtc_vdisplay;
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case DRM_MODE_SCALE_FULLSCREEN:
|
|
|
x = y = 0;
|
|
|
- width = adjusted_mode->hdisplay;
|
|
|
- height = adjusted_mode->vdisplay;
|
|
|
+ width = adjusted_mode->crtc_hdisplay;
|
|
|
+ height = adjusted_mode->crtc_vdisplay;
|
|
|
break;
|
|
|
|
|
|
default:
|
|
@@ -182,7 +182,7 @@ centre_horizontally(struct drm_display_mode *adjusted_mode,
|
|
|
blank_width = adjusted_mode->crtc_hblank_end - adjusted_mode->crtc_hblank_start;
|
|
|
sync_pos = (blank_width - sync_width + 1) / 2;
|
|
|
|
|
|
- border = (adjusted_mode->hdisplay - width + 1) / 2;
|
|
|
+ border = (adjusted_mode->crtc_hdisplay - width + 1) / 2;
|
|
|
border += border & 1; /* make the border even */
|
|
|
|
|
|
adjusted_mode->crtc_hdisplay = width;
|
|
@@ -204,7 +204,7 @@ centre_vertically(struct drm_display_mode *adjusted_mode,
|
|
|
blank_width = adjusted_mode->crtc_vblank_end - adjusted_mode->crtc_vblank_start;
|
|
|
sync_pos = (blank_width - sync_width + 1) / 2;
|
|
|
|
|
|
- border = (adjusted_mode->vdisplay - height + 1) / 2;
|
|
|
+ border = (adjusted_mode->crtc_vdisplay - height + 1) / 2;
|
|
|
|
|
|
adjusted_mode->crtc_vdisplay = height;
|
|
|
adjusted_mode->crtc_vblank_start = height + border;
|
|
@@ -231,10 +231,10 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
|
|
|
u32 *pfit_control)
|
|
|
{
|
|
|
struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
|
|
|
- u32 scaled_width = adjusted_mode->hdisplay *
|
|
|
+ u32 scaled_width = adjusted_mode->crtc_hdisplay *
|
|
|
pipe_config->pipe_src_h;
|
|
|
u32 scaled_height = pipe_config->pipe_src_w *
|
|
|
- adjusted_mode->vdisplay;
|
|
|
+ adjusted_mode->crtc_vdisplay;
|
|
|
|
|
|
/* 965+ is easy, it does everything in hw */
|
|
|
if (scaled_width > scaled_height)
|
|
@@ -243,7 +243,7 @@ static void i965_scale_aspect(struct intel_crtc_state *pipe_config,
|
|
|
else if (scaled_width < scaled_height)
|
|
|
*pfit_control |= PFIT_ENABLE |
|
|
|
PFIT_SCALING_LETTER;
|
|
|
- else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
|
|
|
+ else if (adjusted_mode->crtc_hdisplay != pipe_config->pipe_src_w)
|
|
|
*pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
|
|
|
}
|
|
|
|
|
@@ -252,10 +252,10 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
|
|
|
u32 *border)
|
|
|
{
|
|
|
struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
|
|
|
- u32 scaled_width = adjusted_mode->hdisplay *
|
|
|
+ u32 scaled_width = adjusted_mode->crtc_hdisplay *
|
|
|
pipe_config->pipe_src_h;
|
|
|
u32 scaled_height = pipe_config->pipe_src_w *
|
|
|
- adjusted_mode->vdisplay;
|
|
|
+ adjusted_mode->crtc_vdisplay;
|
|
|
u32 bits;
|
|
|
|
|
|
/*
|
|
@@ -269,9 +269,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
|
|
|
pipe_config->pipe_src_h);
|
|
|
|
|
|
*border = LVDS_BORDER_ENABLE;
|
|
|
- if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
|
|
|
+ if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay) {
|
|
|
bits = panel_fitter_scaling(pipe_config->pipe_src_h,
|
|
|
- adjusted_mode->vdisplay);
|
|
|
+ adjusted_mode->crtc_vdisplay);
|
|
|
|
|
|
*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
|
|
|
bits << PFIT_VERT_SCALE_SHIFT);
|
|
@@ -285,9 +285,9 @@ static void i9xx_scale_aspect(struct intel_crtc_state *pipe_config,
|
|
|
pipe_config->pipe_src_w);
|
|
|
|
|
|
*border = LVDS_BORDER_ENABLE;
|
|
|
- if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
|
|
|
+ if (pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
|
|
|
bits = panel_fitter_scaling(pipe_config->pipe_src_w,
|
|
|
- adjusted_mode->hdisplay);
|
|
|
+ adjusted_mode->crtc_hdisplay);
|
|
|
|
|
|
*pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
|
|
|
bits << PFIT_VERT_SCALE_SHIFT);
|
|
@@ -315,8 +315,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
|
|
|
adjusted_mode = &pipe_config->base.adjusted_mode;
|
|
|
|
|
|
/* Native modes don't need fitting */
|
|
|
- if (adjusted_mode->hdisplay == pipe_config->pipe_src_w &&
|
|
|
- adjusted_mode->vdisplay == pipe_config->pipe_src_h)
|
|
|
+ if (adjusted_mode->crtc_hdisplay == pipe_config->pipe_src_w &&
|
|
|
+ adjusted_mode->crtc_vdisplay == pipe_config->pipe_src_h)
|
|
|
goto out;
|
|
|
|
|
|
switch (fitting_mode) {
|
|
@@ -342,8 +342,8 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
|
|
|
* Full scaling, even if it changes the aspect ratio.
|
|
|
* Fortunately this is all done for us in hw.
|
|
|
*/
|
|
|
- if (pipe_config->pipe_src_h != adjusted_mode->vdisplay ||
|
|
|
- pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
|
|
|
+ if (pipe_config->pipe_src_h != adjusted_mode->crtc_vdisplay ||
|
|
|
+ pipe_config->pipe_src_w != adjusted_mode->crtc_hdisplay) {
|
|
|
pfit_control |= PFIT_ENABLE;
|
|
|
if (INTEL_INFO(dev)->gen >= 4)
|
|
|
pfit_control |= PFIT_SCALING_AUTO;
|