Re: [PATCH v3 0/3] drm: add SimpleDRM driver

From: Daniel Vetter
Date: Mon Aug 15 2016 - 03:14:36 EST


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