linux/drivers/gpu/drm/gma500
Daniel Vetter 362063619c drm: revamp framebuffer cleanup interfaces
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: Rob Clark <rob@ti.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-01-20 22:17:00 +01:00
..
accel_2d.c drm: Replace pitch with pitches[] in drm_framebuffer 2011-12-20 10:06:27 +00:00
backlight.c gma500/cdv: Add eDP support 2012-08-24 09:29:25 +10:00
cdv_device.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
cdv_device.h gma500: fix cdv_intel_wait_for_vblank() prototype 2012-03-10 13:06:15 +00:00
cdv_intel_crt.c drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
cdv_intel_display.c gma500: psb_intel_crtc: Drop crtc_enable flag. 2012-08-24 09:43:27 +10:00
cdv_intel_dp.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
cdv_intel_hdmi.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
cdv_intel_lvds.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
framebuffer.c drm: revamp framebuffer cleanup interfaces 2013-01-20 22:17:00 +01:00
framebuffer.h gma500: kill virtual mapping support 2011-12-06 09:55:29 +00:00
gem.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
gtt.c gma500: Clean up some of the noise 2012-05-11 17:35:52 +01:00
gtt.h gma500: gtt based hardware scrolling console 2011-12-06 09:55:39 +00:00
intel_bios.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
intel_bios.h gma500/cdv: Add eDP support 2012-08-24 09:29:25 +10:00
intel_gmbus.c UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ 2012-10-02 18:01:07 +01:00
intel_i2c.c gma500: fixup build versus latest header changes. 2011-11-16 12:14:04 +00:00
Kconfig gma500: initial medfield merge 2012-03-10 13:05:48 +00:00
Makefile drm: gma500: Kill the GEM glue layer 2012-08-24 09:30:02 +10:00
mdfld_device.c gma500: handle poulsbo cursor restriction 2012-05-22 10:15:34 +01:00
mdfld_dsi_dpi.c drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
mdfld_dsi_dpi.h drm: Make the .mode_fixup() operations mode argument a const pointer 2012-07-19 21:52:38 -04:00
mdfld_dsi_output.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
mdfld_dsi_output.h drivers: gpu: drm: gma500: mdfld_dsi_output.h: Remove not unneeded include of version.h 2012-04-19 14:38:02 +01:00
mdfld_dsi_pkg_sender.c gma500: use the register map to clean up 2012-05-11 17:35:51 +01:00
mdfld_dsi_pkg_sender.h gma500: initial medfield merge 2012-03-10 13:05:48 +00:00
mdfld_intel_display.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
mdfld_output.c gma500: mdfld_dsi_output_init() drop unused parameter 2012-03-10 13:05:51 +00:00
mdfld_output.h gma500: initial medfield merge 2012-03-10 13:05:48 +00:00
mdfld_tmd_vid.c gma500: initial medfield merge 2012-03-10 13:05:48 +00:00
mdfld_tpo_vid.c gma500: initial medfield merge 2012-03-10 13:05:48 +00:00
mid_bios.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
mid_bios.h gma500: Add the glue to the various BIOS and firmware interfaces 2011-11-16 11:25:28 +00:00
mmu.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-03-22 13:08:22 -07:00
oaktrail_crtc.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
oaktrail_device.c gma600: Enable HDMI support 2012-11-07 10:59:32 +10:00
oaktrail_hdmi_i2c.c gma500: oaktrail_hdmi_i2c_handler(): base should be __iomem 2012-05-07 10:58:55 +01:00
oaktrail_hdmi.c gma600: Enable HDMI support 2012-11-07 10:59:32 +10:00
oaktrail_lvds.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
oaktrail.h gma600: Enable HDMI support 2012-11-07 10:59:32 +10:00
opregion.c gma500/cdv: Add eDP support 2012-08-24 09:29:25 +10:00
opregion.h gma500: move the ASLE enable 2012-07-16 09:20:33 -07:00
power.c gma500: suspend/resume support for Cedartrail 2012-03-15 09:46:22 +00:00
power.h gma500: Add device framework 2011-11-16 11:25:08 +00:00
psb_device.c drm/gma500: use drm_modeset_lock_all 2013-01-20 22:16:49 +01:00
psb_drv.c drm/gma500: use drm_modeset_lock_all 2013-01-20 22:16:49 +01:00
psb_drv.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2012-10-03 23:29:23 -07:00
psb_intel_display.c gma500: Consider CRTC initially active. 2012-08-30 10:33:53 +10:00
psb_intel_display.h gma500: Add Poulsbo support 2011-11-16 11:26:55 +00:00
psb_intel_drv.h gma500: fix incorrect declaration. 2012-08-24 13:53:49 +10:00
psb_intel_lvds.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
psb_intel_modes.c gma500: Remove psb_intel_output from ddc_probe and ddc_get_modes 2011-12-20 10:23:06 +00:00
psb_intel_reg.h gma500: Disable the clock gating of display controller to make DP/eDP work well 2012-08-24 09:29:31 +10:00
psb_intel_sdvo_regs.h gma500: Replace SDVO code with slightly modified version from i915 2011-12-20 10:23:14 +00:00
psb_intel_sdvo.c drm/gma500: drm_connector_property -> drm_object_property 2012-11-30 10:20:11 -06:00
psb_irq.c gma500: psb_irq_turn_off_dpst() fix bit operation 2012-05-07 10:58:53 +01:00
psb_irq.h gma500: initial medfield merge 2012-03-10 13:05:48 +00:00
psb_lid.c gma500: Prevent endless loop in panel power up sequence 2012-05-22 10:15:29 +01:00
psb_reg.h gma500: Add the core DRM files and headers 2011-11-16 11:26:35 +00:00
tc35876x-dsi-lvds.c Drivers: gpu: remove __dev* attributes. 2013-01-03 15:57:15 -08:00
tc35876x-dsi-lvds.h gma500: initial medfield merge 2012-03-10 13:05:48 +00:00