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 main changes in this third version: Paul Gortmaker pointed out that module.h pulls in 750k and is best avoided when not necessary. All the source files included it, but only one needed it. I the same spirit I moved the includes I could from the header file to the respective source files. The panic handling I'm working on requires an enabled pipeline to work, so I have switched the fbdev code to use the drm fb helper. Maybe not strictly necessary since fbcon can output panic messages, but it gave me an excuse to do it, making the fbdev code "drm standard". 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 2: - Remove superfluos module.h includes - Move includes from header to source files - Set plane.fb before flushing in pipe update, or else the previous one gets flushed - Added check for vblank event in sdrm_display_pipe_update() fbdev: - Switch to using drm_fb_helper in preparation for future panic handling which needs an enabled pipeline. - Don't forget to free fb_info when kicked out. 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 | 302 +++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_drv.c | 546 +++++++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_fbdev.c | 252 +++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_gem.c | 274 ++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_kms.c | 266 +++++++++++++ 10 files changed, 1804 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