This patchset adds the simpledrm driver by David Herrmann based on a patchset[1] from 2014. That patchset also included patches for kicking out simpledrm by real drivers. I have stayed away from that since it involves another subsystem and I would probably be unable to answer any questions about the implementation. Two major changes in this version: I have tried to address Daniel Vetter's concern that there's no way to kick out/handover simpledrm to the real hw-driver. My solution relies on the fb notifier, so I don't know how robust that actually is. I've read that there's lot's of problems with it, at least in the drm context. A test using the vc4 driver on Raspberry Pi successfully removed simpledrm. Luc Verhaegen alerted me to the fact that I missed support for clocks, and in fact more additions to the Device Tree binding document that has happen after David wrote this driver. I lifted the code verbatim from simplefb.c. I have not tested the functionality, but I assume it will work since I didn't make any functional changes, only changed function and variable names. I have tested simpledrm on a Raspberry Pi B+ with U-boot setting up the framebuffer and producing this node (legacy, not under /chosen): / { framebuffer@1e887000 { compatible = "simple-framebuffer"; reg = <0x1e887000 0x36c600>; format = "r5g6b5"; width = <1824>; height = <984>; stride = <3648>; status = "okay"; }; I have only tested with fbcon and modetest (XR24,RG16). Noralf. Changes from version 1: - Move platform_set_drvdata() before drm_dev_register() - Remove drm_legacy_mmap() call. - Set mode_config.{min,max}_{width,height} to the actual dimensions of the native framebuffer - Remove plane positioning since it won't work with the simple display pipe, meaning sdrm_display_pipe_check() isn't necessary either - Support the additions to the Device Tree binding document, including clocks, regulators and having the node under /chosen fbdev: - Honour remove_conflicting_framebuffers() Changes from previous version[2]: - Remove FB_SIMPLE=n dependency to avoid kconfig recursive error - Changed module name to match kconfig help text: sdrm -> simpledrm - Use drm_simple_display_pipe - Replace deprecated drm_platform_init() - sdrm_dumb_create(): drm_gem_object_unreference() -> *_unlocked() - sdrm_dumb_map_offset(): drm_gem_object_lookup() remove drm_device parameter - sdrm_drm_mmap() changes: Remove struct_mutex locking Add drm_vma_offset_{lock,unlock}_lookup() drm_mmap() -> drm_legacy_mmap() - dma_buf_begin_cpu_access() doesn't require start and length anymore - Use drm_cvt_mode() instead of open coding a mode - Fix format conversion. In the intermediate step, store the 8/6/5 bit color value in the upper part of the 16-bit color variable, not the lower. - Support clips == NULL in sdrm_dirty() - Set mode_config.preferred_depth - Attach mode_config.dirty_info_property to connector fbdev: - Remove the DRM_SIMPLEDRM_FBDEV kconfig option and use DRM_FBDEV_EMULATION - Suspend fbcon/fbdev when the pipeline is enabled, resume in lastclose - Add FBINFO_CAN_FORCE_OUTPUT flag so we get oops'es on the console [1] https://lists.freedesktop.org/archives/dri-devel/2014-January/052584.html [2] https://lists.freedesktop.org/archives/dri-devel/2014-January/052594.html Further history: [PATCH v4 0/6] SimpleDRM Driver https://lists.freedesktop.org/archives/dri-devel/2013-September/044638.html [PATCH v2 00/14] Platform Framebuffers and SimpleDRM https://lists.freedesktop.org/archives/dri-devel/2013-July/041090.html [RFC 0/6] SimpleDRM Driver (was: dvbe driver) https://lists.freedesktop.org/archives/dri-devel/2013-June/040386.html [PATCH 0/9] System Framebuffer Bus (sysfb) https://lists.freedesktop.org/archives/dri-devel/2013-February/035013.html Noralf Trønnes (3): drm: add SimpleDRM driver drm: simpledrm: add fbdev fallback support drm: simpledrm: honour remove_conflicting_framebuffers() drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/simpledrm/Kconfig | 27 ++ drivers/gpu/drm/simpledrm/Makefile | 5 + drivers/gpu/drm/simpledrm/simpledrm.h | 129 +++++++ drivers/gpu/drm/simpledrm/simpledrm_damage.c | 304 +++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_drv.c | 545 +++++++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_fbdev.c | 200 ++++++++++ drivers/gpu/drm/simpledrm/simpledrm_gem.c | 273 ++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_kms.c | 267 +++++++++++++ 10 files changed, 1753 insertions(+) create mode 100644 drivers/gpu/drm/simpledrm/Kconfig create mode 100644 drivers/gpu/drm/simpledrm/Makefile create mode 100644 drivers/gpu/drm/simpledrm/simpledrm.h create mode 100644 drivers/gpu/drm/simpledrm/simpledrm_damage.c create mode 100644 drivers/gpu/drm/simpledrm/simpledrm_drv.c create mode 100644 drivers/gpu/drm/simpledrm/simpledrm_fbdev.c create mode 100644 drivers/gpu/drm/simpledrm/simpledrm_gem.c create mode 100644 drivers/gpu/drm/simpledrm/simpledrm_kms.c -- 2.8.2 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel