Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d31ed3f0 authored by Jan Leupold's avatar Jan Leupold Committed by Boris Brezillon
Browse files

drm: atmel-hlcdc: Fix vertical scaling



The code is applying the same scaling for the X and Y components,
thus making the scaling feature only functional when both components
have the same scaling factor.

Do the s/_w/_h/ replacement where appropriate to fix vertical scaling.

Signed-off-by: default avatarJan Leupold <leupold@rsi-elektrotechnik.de>
Fixes: 1a396789 ("drm: add Atmel HLCDC Display Controller support")
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
parent 29b4817d
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -320,19 +320,19 @@ atmel_hlcdc_plane_update_pos_and_size(struct atmel_hlcdc_plane *plane,
			u32 *coeff_tab = heo_upscaling_ycoef;
			u32 max_memsize;

			if (state->crtc_w < state->src_w)
			if (state->crtc_h < state->src_h)
				coeff_tab = heo_downscaling_ycoef;
			for (i = 0; i < ARRAY_SIZE(heo_upscaling_ycoef); i++)
				atmel_hlcdc_layer_update_cfg(&plane->layer,
							     33 + i,
							     0xffffffff,
							     coeff_tab[i]);
			factor = ((8 * 256 * state->src_w) - (256 * 4)) /
				 state->crtc_w;
			factor = ((8 * 256 * state->src_h) - (256 * 4)) /
				 state->crtc_h;
			factor++;
			max_memsize = ((factor * state->crtc_w) + (256 * 4)) /
			max_memsize = ((factor * state->crtc_h) + (256 * 4)) /
				      2048;
			if (max_memsize > state->src_w)
			if (max_memsize > state->src_h)
				factor--;
			factor_reg |= (factor << 16) | 0x80000000;
		}