On Sun, Aug 14, 2016 at 06:52:03PM +0200, Noralf Trønnes wrote: > 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). I've read the code, some small comments. I think it'd be good if David Herrmann can review it too, I think he'll be back from vacation next week. -Daniel > > > 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 -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel