All fbdev emulation has finally been converted to use struct drm_client. Put the common client code into shared helpers. There are three callbacks in struct drm_client_funcs, unregister, restore and hotplug, which have similar implementations among the various drivers. This can all be shared. i915 is slightly different, but can still use some of the helper code. Fbdev support for VGA switcheroo and non-atomic mode setting is now entirely implemented in the fbdev helpers. Thomas Zimmermann (11): drm/fb-helper: Add helpers for struct drm_client_funcs drm/fbdev-dma: Use fbdev client helpers drm/fbdev-shmem: Use fbdev client helpers drm/fbdev-ttm: Use fbdev client helpers drm/armada: Use fbdev client helpers drm/exynos: Use fbdev client helpers drm/gma500: Use fbdev client helpers drm/i915: Use drm_fbdev_helper_client_unregister() drm/msm: Use fbdev client helpers drm/omapdrm: Use fbdev client helpers drm/tegra: Use fbdev client helpers drivers/gpu/drm/armada/armada_fbdev.c | 58 +----------- drivers/gpu/drm/drm_fb_helper.c | 103 +++++++++++++++++++++ drivers/gpu/drm/drm_fbdev_dma.c | 56 +---------- drivers/gpu/drm/drm_fbdev_shmem.c | 56 +---------- drivers/gpu/drm/drm_fbdev_ttm.c | 58 +----------- drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 58 +----------- drivers/gpu/drm/gma500/fbdev.c | 58 +----------- drivers/gpu/drm/i915/display/intel_fbdev.c | 21 +---- drivers/gpu/drm/msm/msm_fbdev.c | 58 +----------- drivers/gpu/drm/omapdrm/omap_fbdev.c | 55 +---------- drivers/gpu/drm/radeon/radeon_fbdev.c | 66 +------------ drivers/gpu/drm/tegra/fbdev.c | 58 +----------- include/drm/drm_fb_helper.h | 19 ++++ 13 files changed, 154 insertions(+), 570 deletions(-) base-commit: 980de4c8f9c4fc65bd51d355372e06dc576c3ea7 -- 2.44.0