1. 14 2月, 2013 2 次提交
  2. 21 1月, 2013 1 次提交
    • D
      drm: revamp framebuffer cleanup interfaces · 36206361
      Daniel Vetter 提交于
      We have two classes of framebuffer
      - Created by the driver (atm only for fbdev), and the driver holds
        onto the last reference count until destruction.
      - Created by userspace and associated with a given fd. These
        framebuffers will be reaped when their assoiciated fb is closed.
      
      Now these two cases are set up differently, the framebuffers are on
      different lists and hence destruction needs to clean up different
      things. Also, for userspace framebuffers we remove them from any
      current usage, whereas for internal framebuffers it is assumed that
      the driver has done this already.
      
      Long story short, we need two different ways to cleanup such drivers.
      Three functions are involved in total:
      - drm_framebuffer_remove: Convenience function which removes the fb
        from all active usage and then drops the passed-in reference.
      - drm_framebuffer_unregister_private: Will remove driver-private
        framebuffers from relevant lists and drop the corresponding
        references. Should be called for driver-private framebuffers before
        dropping the last reference (or like for a lot of the drivers where
        the fbdev is embedded someplace else, before doing the cleanup
        manually).
      - drm_framebuffer_cleanup: Final cleanup for both classes of fbs,
        should be called by the driver's ->destroy callback once the last
        reference is gone.
      
      This patch just rolls out the new interfaces and updates all drivers
      (by adding calls to drm_framebuffer_unregister_private at all the
      right places)- no functional changes yet. Follow-on patches will move
      drm core code around and update the lifetime management for
      framebuffers, so that we are no longer required to keep framebuffers
      alive by locking mode_config.mutex.
      
      I've also updated the kerneldoc already.
      
      vmwgfx seems to again be a bit special, at least I haven't figured out
      how the fbdev support in that driver works. It smells like it's
      external though.
      
      v2: The i915 driver creates another private framebuffer in the
      load-detect code. Adjust its cleanup code, too.
      Reviewed-by: NRob Clark <rob@ti.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      36206361
  3. 04 1月, 2013 2 次提交
  4. 13 12月, 2012 2 次提交
  5. 05 12月, 2012 2 次提交
  6. 29 11月, 2012 1 次提交
  7. 22 11月, 2012 1 次提交
  8. 04 10月, 2012 1 次提交
  9. 03 10月, 2012 1 次提交
  10. 02 10月, 2012 1 次提交
    • R
      drm: refcnt drm_framebuffer (v4.1) · f7eff60e
      Rob Clark 提交于
      This simplifies drm fb lifetime, and if the crtc/plane needs to hold
      a ref to the fb when disabling a pipe until the next vblank, this
      avoids the need to make disabling an overlay synchronous.  This is a
      problem that shows up when userspace is using a drm plane to
      implement a hw cursor.. making overlay disable synchronous causes
      a performance problem when x11 is rapidly enabling/disabling the
      hw cursor.  But not making it synchronous opens up a race condition
      for crashing if userspace turns around and immediately deletes the
      fb.  Refcnt'ing the fb makes it possible to solve this problem.
      
      v1: original
      v2: add drm_framebuffer_remove() which is called in all paths where
          fb->funcs->destroy() was directly called before.  This cleans
          up the CRTCs/planes that the fb was attached to.  You should
          only directly use drm_framebuffer_unreference() if you are also
          using drm_framebuffer_reference() to keep a ref to the fb.
      v3: add comment explaining the fb refcount
      v4: remove duplicate 'list_del(&fb->filp_head)'
      
      [airlied: v4.1: fix local rejection]
      Signed-off-by: NRob Clark <rob@ti.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      f7eff60e
  11. 20 3月, 2012 2 次提交
  12. 15 3月, 2012 1 次提交
  13. 16 2月, 2012 1 次提交
  14. 15 2月, 2012 1 次提交
  15. 03 2月, 2012 1 次提交
  16. 29 12月, 2011 2 次提交
  17. 21 12月, 2011 1 次提交
  18. 20 12月, 2011 1 次提交
  19. 15 11月, 2011 3 次提交
  20. 18 10月, 2011 3 次提交
  21. 05 10月, 2011 1 次提交
    • I
      DRM: add DRM Driver for Samsung SoC EXYNOS4210. · 1c248b7d
      Inki Dae 提交于
      This patch is a DRM Driver for Samsung SoC Exynos4210 and now enables
      only FIMD yet but we will add HDMI support also in the future.
      
      this patch is based on git repository below:
      git://people.freedesktop.org/~airlied/linux.git
      branch name: drm-next
      commit-id: 88ef4e3f
      
      you can refer to our working repository below:
      http://git.infradead.org/users/kmpark/linux-2.6-samsung
      branch name: samsung-drm
      
      We tried to re-use lowlevel codes of the FIMD driver(s3c-fb.c
      based on Linux framebuffer) but couldn't so because lowlevel codes
      of s3c-fb.c are included internally and so FIMD module of this driver has
      its own lowlevel codes.
      
      We used GEM framework for buffer management and DMA APIs(dma_alloc_*)
      for buffer allocation so we can allocate physically continuous memory
      for DMA through it and also we could use CMA later if CMA is applied to
      mainline.
      
      Refer to this link for CMA(Continuous Memory Allocator):
      http://lkml.org/lkml/2011/7/20/45
      
      this driver supports only physically continuous memory(non-iommu).
      
      Links to previous versions of the patchset:
      v1: < https://lwn.net/Articles/454380/ >
      v2: < http://www.spinics.net/lists/kernel/msg1224275.html >
      v3: < http://www.spinics.net/lists/dri-devel/msg13755.html >
      v4: < http://permalink.gmane.org/gmane.comp.video.dri.devel/60439 >
      v5: < http://comments.gmane.org/gmane.comp.video.dri.devel/60802 >
      
      Changelog v2:
      DRM: add DRM_IOCTL_SAMSUNG_GEM_MMAP ioctl command.
      
          this feature maps user address space to physical memory region
          once user application requests DRM_IOCTL_SAMSUNG_GEM_MMAP ioctl.
      
      DRM: code clean and add exception codes.
      
      Changelog v3:
      DRM: Support multiple irq.
      
          FIMD and HDMI have their own irq handler but DRM Framework can regiter
          only one irq handler this patch supports mutiple irq for Samsung SoC.
      
      DRM: Consider modularization.
      
          each DRM, FIMD could be built as a module.
      
      DRM: Have indenpendent crtc object.
      
          crtc isn't specific to SoC Platform so this patch gets a crtc
          to be used as common object.
          created crtc could be attached to any encoder object.
      
      DRM: code clean and add exception codes.
      
      Changelog v4:
      DRM: remove is_defult from samsung_fb.
      
          is_default isn't used for default framebuffer.
      
      DRM: code refactoring to fimd module.
          this patch is be considered with multiple display objects and
          would use its own request_irq() to register a irq handler instead of
          drm framework's one.
      
      DRM: remove find_samsung_drm_gem_object()
      
      DRM: move kernel private data structures and definitions to driver folder.
      
          samsung_drm.h would contain only public information for userspace
          ioctl interface.
      
      DRM: code refactoring to gem modules.
          buffer module isn't dependent of gem module anymore.
      
      DRM: fixed security issue.
      
      DRM: remove encoder porinter from specific connector.
      
          samsung connector doesn't need to have generic encoder.
      
      DRM: code clean and add exception codes.
      
      Changelog v5:
      DRM: updated fimd(display controller) driver.
          added various pixel formats, color key and pixel blending features.
      
      DRM: removed end_buf_off from samsung_drm_overlay structure.
          this variable isn't used and end buffer address would be
          calculated by each sub driver.
      
      DRM: use generic function for mmap_offset.
          replaced samsung_drm_gem_create_mmap_offset() and
          samsung_drm_free_mmap_offset() with generic ones applied
          to mainline recentrly.
      
      DRM: removed unnecessary codes and added exception codes.
      
      DRM: added comments and code clean.
      
      Changelog v6:
      DRM: added default config options.
      
      DRM: added padding for 64-bit align.
      
      DRM: changed prefix 'samsung' to 'exynos'
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      Signed-off-by: NJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: NSeung-Woo Kim <sw0312.kim@samsung.com>
      Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com>
      Reviewed-by: NKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Reviewed-by: NDave Airlie <airlied@redhat.com>
      Reviewed-by: NRob Clark <robdclark@gmail.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      1c248b7d