drm/ingenic: Use the highest possible DMA burst size
authorPaul Cercueil <paul@crapouillou.net>
Sat, 2 Jul 2022 23:07:27 +0000 (00:07 +0100)
committerPaul Cercueil <paul@crapouillou.net>
Mon, 4 Jul 2022 13:03:54 +0000 (14:03 +0100)
commitf0dce5c4fdaf9e98dd2755ffb1363822854b6287
tree6d28f8d9705e144e6cc9e1a91c7a7096492124c1
parenta6cc3c72aa0e8fb10b695c1a0c4ef07a66b3c2b0
drm/ingenic: Use the highest possible DMA burst size

Until now, when running at the maximum resolution of 1280x720 at 32bpp
on the JZ4770 SoC the output was garbled, the X/Y position of the
top-left corner of the framebuffer warping to a random position with
the whole image being offset accordingly, every time a new frame was
being submitted.

This problem can be eliminated by using a bigger burst size for the DMA.

Set in each soc_info structure the maximum burst size supported by the
corresponding SoC, and use it in the driver.

Set the new value using regmap_update_bits() instead of
regmap_set_bits(), since we do want to override the old value of the
burst size. (Note that regmap_set_bits() wasn't really valid before for
the same reason, but it never seemed to be a problem).

Cc: <stable@vger.kernel.org>
Fixes: 90b86fcc47b4 ("DRM: Add KMS driver for the Ingenic JZ47xx SoCs")
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20220702230727.66704-1-paul@crapouillou.net
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Tested-by: Christophe Branchereau <cbranchereau@gmail.com>
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
drivers/gpu/drm/ingenic/ingenic-drm.h