[PATCH v2 00/15] drm/mgag200: Convert to atomic modesetting

Sam Ravnborg sam at ravnborg.org
Tue May 12 18:56:36 UTC 2020


Hi Thomas.

On Tue, May 12, 2020 at 10:42:43AM +0200, Thomas Zimmermann wrote:
> This patchset converts mgag200 to atomic modesetting. It uses simple
> KMS helpers and SHMEM.
> 
> Patch 1 removes cursor support. The HW cursor is not usable with the
> way universal planes work.
> 
> Patches 2 to 11 untangle the existing modesetting code into smaller
> functions. Specifically, mode setting and plane updates are being
> separated from each other.
> 
> Patch 12 to 14 convert mgag200 to simple KMS helpers and enables atomic
> mode setting.
> 
> Atomically switching plane framebuffers, requires either source or target
> buffer to be located at a non-0 offet. As some HW revisions seem to require
> a framebuffer offset of 0 within the video memory, they do not work with
> atomic modesetting. To resolve this problem, patch 15 converts mgag200
> from VRAM helpers to SHMEM helpers. During plane updates, the content of
> the SHMEM BO is memcpy'd to VRAM. From my observation, performance is not
> nuch different from the original code.
> 
> The patchset has been tested on MGA G200EH hardware.
> 
> v2:
> 	* rebase patchset
> 	* replace uint{8,32}_t with u{8,32} through-out patchset
> 	* define additional register constants
> 	* use helper functions around bpp-shift computations
> 	* split conversion patch
> 	* cleanups
With the one comment addressed patch 1-14 are now all:
Acked-by: Sam Ravnborg <sam at ravnborg.org>

I did not look at the last patch - all the memory stuff is still beyond
me.

Nice to see this driver gettting so much love and care.
The end result is a much nicer driver implmentation.

	Sam

> 
> Thomas Zimmermann (15):
>   drm/mgag200: Remove HW cursor
>   drm/mgag200: Clean up mga_set_start_address()
>   drm/mgag200: Clean up mga_crtc_do_set_base()
>   drm/mgag200: Move mode-setting code into separate helper function
>   drm/mgag200: Split MISC register update into PLL selection, SYNC and
>     I/O
>   drm/mgag200: Update mode registers after plane registers
>   drm/mgag200: Set pitch in a separate helper function
>   drm/mgag200: Set primary plane's format in separate helper function
>   drm/mgag200: Move TAGFIFO reset into separate function
>   drm/mgag200: Move hiprilvl setting into separate functions
>   drm/mgag200: Move register initialization into separate function
>   drm/mgag200: Remove out-commented suspend/resume helpers
>   drm/mgag200: Use simple-display data structures
>   drm/mgag200: Convert to simple KMS helper
>   drm/mgag200: Replace VRAM helpers with SHMEM helpers
> 
>  drivers/gpu/drm/mgag200/Kconfig        |   4 +-
>  drivers/gpu/drm/mgag200/Makefile       |   2 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.c  |  51 +-
>  drivers/gpu/drm/mgag200/mgag200_drv.h  |  41 +-
>  drivers/gpu/drm/mgag200/mgag200_main.c |   5 -
>  drivers/gpu/drm/mgag200/mgag200_mode.c | 871 ++++++++++++++-----------
>  drivers/gpu/drm/mgag200/mgag200_reg.h  |  11 +-
>  drivers/gpu/drm/mgag200/mgag200_ttm.c  |  28 +-
>  8 files changed, 528 insertions(+), 485 deletions(-)
> 
> --
> 2.26.2


More information about the dri-devel mailing list