[Intel-gfx] [PATCH] drm/i915: relayout intel_panel.c to obey 80 char limit
Jani Nikula
jani.nikula at linux.intel.com
Tue Sep 17 09:11:18 CEST 2013
Heh, I was reading the subject as relay-out, not re-layout for a while
there. -ENOCOFFEE.
On Tue, 17 Sep 2013, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> Especially intel_gmch_panel_fitting was shifting way too much over the
> right edge and also was way too long. So extract two helpers, one for
> gen4+ and one for gen2/3. Now the entire thing is again almost
> readable ...
>
> Spurred by checkpatch freaking out about a Ville's pipeconfig rework
> in intel_panel.c
>
> Otherwise just two lines that needed appropriate breaking.
I suppose it should be kind of obvious, but I do like the explicit "no
functional changes" in the commit message when none are intended.
With the reduced indent, you could have re-flowed some statements to
fewer lines while at it... but meh. Good stuff.
Reviewed-by: Jani Nikula <jani.nikula at intel.com>
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Damien Lespiau <damien.lespiau at intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
> drivers/gpu/drm/i915/intel_panel.c | 152 +++++++++++++++++++++----------------
> 1 file changed, 88 insertions(+), 64 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index c9dba46..e36149d 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -73,8 +73,10 @@ intel_pch_panel_fitting(struct intel_crtc *intel_crtc,
> case DRM_MODE_SCALE_ASPECT:
> /* Scale but preserve the aspect ratio */
> {
> - u32 scaled_width = adjusted_mode->hdisplay * pipe_config->pipe_src_h;
> - u32 scaled_height = pipe_config->pipe_src_w * adjusted_mode->vdisplay;
> + u32 scaled_width = adjusted_mode->hdisplay
> + * pipe_config->pipe_src_h;
> + u32 scaled_height = pipe_config->pipe_src_w
> + * adjusted_mode->vdisplay;
> if (scaled_width > scaled_height) { /* pillar */
> width = scaled_height / pipe_config->pipe_src_h;
> if (width & 1)
> @@ -169,6 +171,83 @@ static inline u32 panel_fitter_scaling(u32 source, u32 target)
> return (FACTOR * ratio + FACTOR/2) / FACTOR;
> }
>
> +static void i965_scale_aspect(struct intel_crtc_config *pipe_config,
> + u32 *pfit_control)
> +{
> + struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode;
> + u32 scaled_width = adjusted_mode->hdisplay *
> + pipe_config->pipe_src_h;
> + u32 scaled_height = pipe_config->pipe_src_w *
> + adjusted_mode->vdisplay;
> +
> + /* 965+ is easy, it does everything in hw */
> + if (scaled_width > scaled_height)
> + *pfit_control |= PFIT_ENABLE |
> + PFIT_SCALING_PILLAR;
> + else if (scaled_width < scaled_height)
> + *pfit_control |= PFIT_ENABLE |
> + PFIT_SCALING_LETTER;
> + else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
> + *pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
> +}
> +
> +static void i9xx_scale_aspect(struct intel_crtc_config *pipe_config,
> + u32 *pfit_control, u32 *pfit_pgm_ratios,
> + u32 *border)
> +{
> + struct drm_display_mode *adjusted_mode = &pipe_config->adjusted_mode;
> + u32 scaled_width = adjusted_mode->hdisplay *
> + pipe_config->pipe_src_h;
> + u32 scaled_height = pipe_config->pipe_src_w *
> + adjusted_mode->vdisplay;
> + u32 bits;
> +
> + /*
> + * For earlier chips we have to calculate the scaling
> + * ratio by hand and program it into the
> + * PFIT_PGM_RATIO register
> + */
> + if (scaled_width > scaled_height) { /* pillar */
> + centre_horizontally(adjusted_mode,
> + scaled_height /
> + pipe_config->pipe_src_h);
> +
> + *border = LVDS_BORDER_ENABLE;
> + if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
> + bits = panel_fitter_scaling(pipe_config->pipe_src_h,
> + adjusted_mode->vdisplay);
> +
> + *pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
> + bits << PFIT_VERT_SCALE_SHIFT);
> + *pfit_control |= (PFIT_ENABLE |
> + VERT_INTERP_BILINEAR |
> + HORIZ_INTERP_BILINEAR);
> + }
> + } else if (scaled_width < scaled_height) { /* letter */
> + centre_vertically(adjusted_mode,
> + scaled_width /
> + pipe_config->pipe_src_w);
> +
> + *border = LVDS_BORDER_ENABLE;
> + if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
> + bits = panel_fitter_scaling(pipe_config->pipe_src_w,
> + adjusted_mode->hdisplay);
> +
> + *pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
> + bits << PFIT_VERT_SCALE_SHIFT);
> + *pfit_control |= (PFIT_ENABLE |
> + VERT_INTERP_BILINEAR |
> + HORIZ_INTERP_BILINEAR);
> + }
> + } else {
> + /* Aspects match, Let hw scale both directions */
> + *pfit_control |= (PFIT_ENABLE |
> + VERT_AUTO_SCALE | HORIZ_AUTO_SCALE |
> + VERT_INTERP_BILINEAR |
> + HORIZ_INTERP_BILINEAR);
> + }
> +}
> +
> void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
> struct intel_crtc_config *pipe_config,
> int fitting_mode)
> @@ -196,67 +275,11 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
> break;
> case DRM_MODE_SCALE_ASPECT:
> /* Scale but preserve the aspect ratio */
> - if (INTEL_INFO(dev)->gen >= 4) {
> - u32 scaled_width = adjusted_mode->hdisplay *
> - pipe_config->pipe_src_h;
> - u32 scaled_height = pipe_config->pipe_src_w *
> - adjusted_mode->vdisplay;
> -
> - /* 965+ is easy, it does everything in hw */
> - if (scaled_width > scaled_height)
> - pfit_control |= PFIT_ENABLE |
> - PFIT_SCALING_PILLAR;
> - else if (scaled_width < scaled_height)
> - pfit_control |= PFIT_ENABLE |
> - PFIT_SCALING_LETTER;
> - else if (adjusted_mode->hdisplay != pipe_config->pipe_src_w)
> - pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO;
> - } else {
> - u32 scaled_width = adjusted_mode->hdisplay *
> - pipe_config->pipe_src_h;
> - u32 scaled_height = pipe_config->pipe_src_w *
> - adjusted_mode->vdisplay;
> - /*
> - * For earlier chips we have to calculate the scaling
> - * ratio by hand and program it into the
> - * PFIT_PGM_RATIO register
> - */
> - if (scaled_width > scaled_height) { /* pillar */
> - centre_horizontally(adjusted_mode,
> - scaled_height /
> - pipe_config->pipe_src_h);
> -
> - border = LVDS_BORDER_ENABLE;
> - if (pipe_config->pipe_src_h != adjusted_mode->vdisplay) {
> - u32 bits = panel_fitter_scaling(pipe_config->pipe_src_h, adjusted_mode->vdisplay);
> - pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
> - bits << PFIT_VERT_SCALE_SHIFT);
> - pfit_control |= (PFIT_ENABLE |
> - VERT_INTERP_BILINEAR |
> - HORIZ_INTERP_BILINEAR);
> - }
> - } else if (scaled_width < scaled_height) { /* letter */
> - centre_vertically(adjusted_mode,
> - scaled_width /
> - pipe_config->pipe_src_w);
> -
> - border = LVDS_BORDER_ENABLE;
> - if (pipe_config->pipe_src_w != adjusted_mode->hdisplay) {
> - u32 bits = panel_fitter_scaling(pipe_config->pipe_src_w, adjusted_mode->hdisplay);
> - pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT |
> - bits << PFIT_VERT_SCALE_SHIFT);
> - pfit_control |= (PFIT_ENABLE |
> - VERT_INTERP_BILINEAR |
> - HORIZ_INTERP_BILINEAR);
> - }
> - } else {
> - /* Aspects match, Let hw scale both directions */
> - pfit_control |= (PFIT_ENABLE |
> - VERT_AUTO_SCALE | HORIZ_AUTO_SCALE |
> - VERT_INTERP_BILINEAR |
> - HORIZ_INTERP_BILINEAR);
> - }
> - }
> + if (INTEL_INFO(dev)->gen >= 4)
> + i965_scale_aspect(pipe_config, &pfit_control);
> + else
> + i9xx_scale_aspect(pipe_config, &pfit_control,
> + &pfit_pgm_ratios, &border);
> break;
> case DRM_MODE_SCALE_FULLSCREEN:
> /*
> @@ -438,7 +461,8 @@ static void intel_pch_panel_set_backlight(struct drm_device *dev, u32 level)
> I915_WRITE(BLC_PWM_CPU_CTL, val | level);
> }
>
> -static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level)
> +static void intel_panel_actually_set_backlight(struct drm_device *dev,
> + u32 level)
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
> u32 tmp;
> --
> 1.8.4.rc3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list