(was: DRM driver for fbdev devices) This is version 2 of the fbdev conversion helpers. It's more or less a rewrite of the original patchset. The fbdev subsystem is considered legacy and will probably be removed at some point. This would mean the loss of a signifanct number of drivers. Some of the affected hardware is not in use any longer, but some hardware is still around and provides good(-enough) framebuffers. The fbconv helpers allow for running the current DRM stack on top of fbdev drivers. It's a set of functions that convert between fbdev interfaces and DRM interfaces. Based on SHMEM and simple KMS helpers, it only offers the basic functionality of a framebuffer, but should be compatible with most existing fbdev drivers. A DRM driver using fbconv helpers consists of * DRM stub code that calls into fbconv helpers, and * the original fbdev driver code. The fbdev driver code has to be modified to register itself with the stub driver instead of the fbdev core framework. A tutorial on how to use the helpers is part of this patchset. The resulting driver hybrid can be refactored into a first-class DRM driver. The fbconv helpers contain a number of comments, labeled 'DRM porting note', which explain the required steps. I tested the current patchset with the following drivers: atyfb, aty128fb, matroxfb, pm2fb, pm3fb, rivafb, s3fb, savagefb, sisfb, tdfxfb and tridentfb. With each, I was able to successfully start with fbcon enabled, run weston and X11. The drivers are available at [1]. For reference, the patchset includes the Matrox stub driver. v2: * rename to fbconv helpers * rewrite as helper library * switch over to simple KMS helpers * switch over to SHMEM * add documentation [1] https://gitlab.freedesktop.org/tzimmermann/linux/commits/fbconv-plus-drivers Thomas Zimmermann (15): fbdev: Export fb_check_foreignness() fbdev: Export FBPIXMAPSIZE drm/simple-kms-helper: Add mode_fixup() to simple display pipe drm: Add fbconv helper module drm/fbconv: Add DRM <-> fbdev pixel-format conversion drm/fbconv: Add mode conversion DRM <-> fbdev drm/fbconv: Add modesetting infrastructure drm/fbconv: Add plane-state check and update drm/fbconv: Mode-setting pipeline enable / disable drm/fbconv: Reimplement several fbdev interfaces drm/fbconv: Add helpers for init and cleanup of fb_info structures drm/fbconv: Add helper documentation staging: Add mgakms driver staging/mgakms: Import matroxfb driver source code staging/mgakms: Update matroxfb driver code for DRM Documentation/gpu/drm-kms-helpers.rst | 12 + Documentation/gpu/todo.rst | 15 + drivers/gpu/drm/Kconfig | 11 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/drm_fbconv_helper.c | 2126 +++++++++++++++++ drivers/gpu/drm/drm_simple_kms_helper.c | 15 + drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/mgakms/Kconfig | 18 + drivers/staging/mgakms/Makefile | 17 + drivers/staging/mgakms/g450_pll.c | 539 +++++ drivers/staging/mgakms/g450_pll.h | 13 + drivers/staging/mgakms/i2c-matroxfb.c | 238 ++ drivers/staging/mgakms/matroxfb_DAC1064.c | 1082 +++++++++ drivers/staging/mgakms/matroxfb_DAC1064.h | 174 ++ drivers/staging/mgakms/matroxfb_Ti3026.c | 746 ++++++ drivers/staging/mgakms/matroxfb_Ti3026.h | 10 + drivers/staging/mgakms/matroxfb_accel.c | 519 +++++ drivers/staging/mgakms/matroxfb_accel.h | 9 + drivers/staging/mgakms/matroxfb_base.c | 2592 +++++++++++++++++++++ drivers/staging/mgakms/matroxfb_base.h | 700 ++++++ drivers/staging/mgakms/matroxfb_crtc2.h | 35 + drivers/staging/mgakms/matroxfb_g450.c | 640 +++++ drivers/staging/mgakms/matroxfb_g450.h | 10 + drivers/staging/mgakms/matroxfb_maven.h | 21 + drivers/staging/mgakms/matroxfb_misc.c | 815 +++++++ drivers/staging/mgakms/matroxfb_misc.h | 22 + drivers/staging/mgakms/mga_device.c | 68 + drivers/staging/mgakms/mga_device.h | 30 + drivers/staging/mgakms/mga_drv.c | 129 + drivers/staging/mgakms/mga_drv.h | 14 + drivers/video/fbdev/core/fbmem.c | 5 +- include/drm/drm_fbconv_helper.h | 150 ++ include/drm/drm_simple_kms_helper.h | 43 + include/linux/fb.h | 3 + 35 files changed, 10822 insertions(+), 3 deletions(-) create mode 100644 drivers/gpu/drm/drm_fbconv_helper.c create mode 100644 drivers/staging/mgakms/Kconfig create mode 100644 drivers/staging/mgakms/Makefile create mode 100644 drivers/staging/mgakms/g450_pll.c create mode 100644 drivers/staging/mgakms/g450_pll.h create mode 100644 drivers/staging/mgakms/i2c-matroxfb.c create mode 100644 drivers/staging/mgakms/matroxfb_DAC1064.c create mode 100644 drivers/staging/mgakms/matroxfb_DAC1064.h create mode 100644 drivers/staging/mgakms/matroxfb_Ti3026.c create mode 100644 drivers/staging/mgakms/matroxfb_Ti3026.h create mode 100644 drivers/staging/mgakms/matroxfb_accel.c create mode 100644 drivers/staging/mgakms/matroxfb_accel.h create mode 100644 drivers/staging/mgakms/matroxfb_base.c create mode 100644 drivers/staging/mgakms/matroxfb_base.h create mode 100644 drivers/staging/mgakms/matroxfb_crtc2.h create mode 100644 drivers/staging/mgakms/matroxfb_g450.c create mode 100644 drivers/staging/mgakms/matroxfb_g450.h create mode 100644 drivers/staging/mgakms/matroxfb_maven.h create mode 100644 drivers/staging/mgakms/matroxfb_misc.c create mode 100644 drivers/staging/mgakms/matroxfb_misc.h create mode 100644 drivers/staging/mgakms/mga_device.c create mode 100644 drivers/staging/mgakms/mga_device.h create mode 100644 drivers/staging/mgakms/mga_drv.c create mode 100644 drivers/staging/mgakms/mga_drv.h create mode 100644 include/drm/drm_fbconv_helper.h -- 2.23.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel