drm: Add support for tiny LCD displays This is an attempt at providing a DRM version of drivers/staging/fbtft. The tinydrm library provides a very simplified view of DRM in particular for tiny displays that has onboard video memory and is connected through a slow bus like SPI/I2C. Jani pointed out that the backlight dependency was broken, so since it's so small and most tinydrm drivers will need it, I just selected it. The DT rotation property has been moved to display/panel/panel.txt. Noralf. Changes since version 3: - Rebase on new drm_fbdev_cma_init_with_funcs() signature - Fix backlight dependency by selecting it - Use #if IS_ENABLED(CONFIG_SPI) instead of #ifdef to handle tristate - Changed display/display.txt -> display/panel/panel.txt Changes since version 2: - Remove fbdev after drm unregister, not before. - Added Documentation/devicetree/bindings/display/display.txt Changes since version 1: - Add tinydrm.rst - Set tdev->fbdev_cma=NULL on unregister (lastclose is called after that). - Remove some DRM_DEBUG*() - Write-combined memory has uncached reads, so speed up by copying/buffering one pixel line before conversion. Changes since RFC v2: - Rebased on new core helpers - Don't use drm_panel - Flush when the framebuffer is changed on the plane - Add devm_tinydrm_init() - Fix PRIME support, set vaddr - Use atomic helpers in suspend/resume - Add a tinydrm_connector with one display mode - Set mode_config.preferred_depth and use it for fbdev - Subclass tinydrm_device in drivers instead of bloating the structure - The PiTFT display uses a MI0283QT panel, write driver for that instead. - Drop homegrown lcdreg module, it ended up as a collection of special cases. - Add more documentation Changes since RFC v1: - Add fb_deferred_io support to drm_fb_helper and drm_fb_cma_helper, and use drm_fb_cma_helper instead. - Move display pipeline code to drm_simple_kms_helper. - Don't use (struct drm_driver *)->load(). - Make tinydrm more like a library, exporting the internals. - Move the struct drm_driver definition from the tinydrm module to the driver using a helper macro: TINYDRM_DRM_DRIVER. - Remove dirtyfb() async code. - Added support for partial display updates. Noralf Trønnes (7): drm: Add DRM support for tiny LCD displays drm/tinydrm: Add helper functions drm/tinydrm: Add MIPI DBI support of: Add vendor prefix for Multi-Inno dt-bindings: display/panel: Add common rotation property dt-bindings: Add Multi-Inno MI0283QT binding drm/tinydrm: Add support for Multi-Inno MI0283QT display .../bindings/display/multi-inno,mi0283qt.txt | 27 + .../devicetree/bindings/display/panel/panel.txt | 4 + .../devicetree/bindings/vendor-prefixes.txt | 1 + Documentation/gpu/index.rst | 1 + Documentation/gpu/tinydrm.rst | 42 + MAINTAINERS | 6 + drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/tinydrm/Kconfig | 21 + drivers/gpu/drm/tinydrm/Makefile | 7 + drivers/gpu/drm/tinydrm/core/Makefile | 3 + drivers/gpu/drm/tinydrm/core/tinydrm-core.c | 376 ++++++++ drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c | 460 +++++++++ drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c | 234 +++++ drivers/gpu/drm/tinydrm/mi0283qt.c | 279 ++++++ drivers/gpu/drm/tinydrm/mipi-dbi.c | 1005 ++++++++++++++++++++ include/drm/tinydrm/ili9341.h | 54 ++ include/drm/tinydrm/mipi-dbi.h | 107 +++ include/drm/tinydrm/tinydrm-helpers.h | 100 ++ include/drm/tinydrm/tinydrm.h | 115 +++ 20 files changed, 2845 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt create mode 100644 Documentation/devicetree/bindings/display/panel/panel.txt create mode 100644 Documentation/gpu/tinydrm.rst create mode 100644 drivers/gpu/drm/tinydrm/Kconfig create mode 100644 drivers/gpu/drm/tinydrm/Makefile create mode 100644 drivers/gpu/drm/tinydrm/core/Makefile create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-core.c create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-helpers.c create mode 100644 drivers/gpu/drm/tinydrm/core/tinydrm-pipe.c create mode 100644 drivers/gpu/drm/tinydrm/mi0283qt.c create mode 100644 drivers/gpu/drm/tinydrm/mipi-dbi.c create mode 100644 include/drm/tinydrm/ili9341.h create mode 100644 include/drm/tinydrm/mipi-dbi.h create mode 100644 include/drm/tinydrm/tinydrm-helpers.h create mode 100644 include/drm/tinydrm/tinydrm.h -- 2.10.2 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel