From: "Noralf Trønnes" <noralf@tronnes.org> To: dri-devel@lists.freedesktop.org Cc: dh.herrmann@gmail.com, linux-kernel@vger.kernel.org, "Noralf Trønnes" <noralf@tronnes.org> Subject: [PATCH 0/2] drm: add SimpleDRM driver Date: Thu, 4 Aug 2016 16:03:18 +0200 [thread overview] Message-ID: <1470319400-14625-1-git-send-email-noralf@tronnes.org> (raw) 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. I have done my best to bring simpledrm up to speed. However I was unable to loose drm_legacy_mmap() in sdrm_drm_mmap() since I don't understand much of the gem code. I was left with some questions after doing this: - Is there any reason why simpledrm can't use drm_gem_cma_helper? One obvious difference is that of contiguous memory allocation: sdrm_gem_get_pages(): obj->pages = drm_malloc_ab(num, sizeof(*obj->pages)); for (i = 0; i < num; ++i) { obj->pages[i] = alloc_page(GFP_KERNEL | __GFP_ZERO); obj->vmapping = vmap(obj->pages, num, 0, PAGE_KERNEL); drm_gem_cma_create(): cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr, GFP_KERNEL | __GFP_NOWARN); - Could we set this range to the actual width/height of the native framebuffer? sdrm_drm_modeset_init(): ddev->mode_config.min_width = 1; ddev->mode_config.min_height = 1; ddev->mode_config.max_width = 8192; ddev->mode_config.max_height = 8192; - Is there a usecase for offsetting the dumb buffer when blitted onto the native buffer? sdrm_blit(): /* get scanout offsets */ xoff = 0; yoff = 0; if (sdrm->pipe.plane.fb == fb) { xoff = sdrm->pipe.crtc.x; yoff = sdrm->pipe.crtc.y; } I have tested simpledrm on a Raspberry Pi B+ with U-boot setting up the framebuffer and producing this node: 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 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 (2): drm: add SimpleDRM driver drm: simpledrm: add fbdev fallback support drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/simpledrm/Kconfig | 22 ++ drivers/gpu/drm/simpledrm/Makefile | 5 + drivers/gpu/drm/simpledrm/simpledrm.h | 111 ++++++++++ drivers/gpu/drm/simpledrm/simpledrm_damage.c | 314 +++++++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_drv.c | 298 +++++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_fbdev.c | 160 ++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_gem.c | 276 +++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_kms.c | 288 ++++++++++++++++++++++++ 10 files changed, 1477 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
WARNING: multiple messages have this Message-ID (diff)
From: "Noralf Trønnes" <noralf@tronnes.org> To: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH 0/2] drm: add SimpleDRM driver Date: Thu, 4 Aug 2016 16:03:18 +0200 [thread overview] Message-ID: <1470319400-14625-1-git-send-email-noralf@tronnes.org> (raw) 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. I have done my best to bring simpledrm up to speed. However I was unable to loose drm_legacy_mmap() in sdrm_drm_mmap() since I don't understand much of the gem code. I was left with some questions after doing this: - Is there any reason why simpledrm can't use drm_gem_cma_helper? One obvious difference is that of contiguous memory allocation: sdrm_gem_get_pages(): obj->pages = drm_malloc_ab(num, sizeof(*obj->pages)); for (i = 0; i < num; ++i) { obj->pages[i] = alloc_page(GFP_KERNEL | __GFP_ZERO); obj->vmapping = vmap(obj->pages, num, 0, PAGE_KERNEL); drm_gem_cma_create(): cma_obj->vaddr = dma_alloc_wc(drm->dev, size, &cma_obj->paddr, GFP_KERNEL | __GFP_NOWARN); - Could we set this range to the actual width/height of the native framebuffer? sdrm_drm_modeset_init(): ddev->mode_config.min_width = 1; ddev->mode_config.min_height = 1; ddev->mode_config.max_width = 8192; ddev->mode_config.max_height = 8192; - Is there a usecase for offsetting the dumb buffer when blitted onto the native buffer? sdrm_blit(): /* get scanout offsets */ xoff = 0; yoff = 0; if (sdrm->pipe.plane.fb == fb) { xoff = sdrm->pipe.crtc.x; yoff = sdrm->pipe.crtc.y; } I have tested simpledrm on a Raspberry Pi B+ with U-boot setting up the framebuffer and producing this node: 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 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 (2): drm: add SimpleDRM driver drm: simpledrm: add fbdev fallback support drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/simpledrm/Kconfig | 22 ++ drivers/gpu/drm/simpledrm/Makefile | 5 + drivers/gpu/drm/simpledrm/simpledrm.h | 111 ++++++++++ drivers/gpu/drm/simpledrm/simpledrm_damage.c | 314 +++++++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_drv.c | 298 +++++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_fbdev.c | 160 ++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_gem.c | 276 +++++++++++++++++++++++ drivers/gpu/drm/simpledrm/simpledrm_kms.c | 288 ++++++++++++++++++++++++ 10 files changed, 1477 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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2016-08-04 14:10 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-08-04 14:03 Noralf Trønnes [this message] 2016-08-04 14:03 ` [PATCH 0/2] drm: add SimpleDRM driver Noralf Trønnes 2016-08-04 14:03 ` [PATCH 1/2] " Noralf Trønnes 2016-08-04 14:03 ` Noralf Trønnes 2016-08-04 14:45 ` Daniel Vetter 2016-08-04 14:45 ` Daniel Vetter 2016-08-04 17:05 ` Noralf Trønnes 2016-08-04 17:12 ` Daniel Vetter 2016-08-04 14:03 ` [PATCH 2/2] drm: simpledrm: add fbdev fallback support Noralf Trønnes 2016-08-04 14:03 ` Noralf Trønnes 2016-08-04 14:15 ` [PATCH 0/2] drm: add SimpleDRM driver Luc Verhaegen 2016-08-04 14:15 ` Luc Verhaegen 2016-08-04 15:08 ` Daniel Vetter 2016-08-04 15:34 ` Luc Verhaegen 2016-08-04 15:44 ` David Herrmann 2016-08-04 15:44 ` David Herrmann 2016-08-04 15:59 ` Luc Verhaegen 2016-08-04 17:10 ` Daniel Vetter 2016-08-04 18:08 ` One Thousand Gnomes 2016-08-04 18:08 ` One Thousand Gnomes 2016-08-04 16:58 ` Noralf Trønnes 2016-08-04 16:58 ` Noralf Trønnes 2016-08-04 18:12 ` Luc Verhaegen 2016-08-05 7:18 ` Hans de Goede 2016-08-04 14:36 ` Daniel Vetter 2016-08-04 17:30 ` Noralf Trønnes 2016-08-04 19:50 Ken Phillis Jr 2016-08-04 20:01 ` Daniel Vetter 2016-08-04 20:07 ` David Herrmann 2016-08-04 23:34 ` Ken Phillis Jr 2016-08-05 8:28 ` Jani Nikula
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1470319400-14625-1-git-send-email-noralf@tronnes.org \ --to=noralf@tronnes.org \ --cc=dh.herrmann@gmail.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=linux-kernel@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.