[pull] fb helper cleanups

From: Daniel Vetter
Date: Thu Feb 14 2013 - 03:34:04 EST


Hi Dave,

[Andrew: Pull contains the patch "drm/fb-helper: don't sleep for screen
unblank when an oopps is in progress" which is also in your tree, hence
the cc.]

I've figured a pull request is easier to handle ;-)

This is the drm fb helper cleanup, mostly motivated by strange things I've
seen in my locking rework and the i915 modeset revamp. Compared to the
original submission I've reinstated the setup flexibility you'd like to
retain, kerneldoc has been reviewed by Laurent Pinchart and Rob Clark
reviewed the code changes.

Quick overview of the changes:
- Cleaned-up library interface for drivers using the fb helper, also
simplified the fb allocation callback since no driver supported
reallocating the fb on-the-fly. And the fbdev/fbcon code keeps pointers
to the old mapping around anyway, so reallocating backing storage will
be much more work.
- No longer call the crtc helper "disable everything" function at init
time, but allow drivers to do so. Motivated by i915's fastboot effort
and allows us to drop a bunch of noop dummy functions just to avoid
calling NULL function pointers from i915.ko.
- Properly clear old state when doing modeset calls, the fb helper left
some old modes in there and unconditionally set an fb (even when
disabling a crtc). The crtc helpers didn't care, but i915 modeset code
can now drop a few special cases.
- Full kerneldoc for the fb helper. Yay!
- My version of the "don't sleep in panic ->unblank calls". The patch is
already in -mm, I guess Andrew can drop it as soon as this pull lands in
drm-next.

Imo the fb helper looks now rather nice, and there's only a few pieces
left to fix up further:
- Removing the duplicated gamma handling.
- Reviewing the locking in the panic/sysrq/kgdb handlers some more.
- Maybe move some function pointers only used by the fb helper from the
crtc helper structs to the fb helper structs. Currently those vtable
misplacements are the last thing tying fb/crtc helpers together.
- Locking around init/teardown still looks a bit fishy. But that ties into
the console_lock madness, so I'm not volunteering ;-)

Cheers, Daniel

The following changes since commit b9e5071386007729110e86fd2c55c687085624e3:

Merge branch 'for-airlied' of git://people.freedesktop.org/~mlankhorst/linux into drm-next (2013-02-08 14:02:32 +1000)

are available in the git repository at:


git://people.freedesktop.org/~danvet/drm drm-fb-helper

for you to fetch changes up to a065b46a01b25d7d364e01e75f7ec2bd9ed5d9cb:

drm/fb-helper: remove unused members of struct drm_fb_helper (2013-02-14 00:08:41 +0100)

----------------------------------------------------------------
Daniel Vetter (14):
drm: review locking for drm_fb_helper_restore_fbdev_mode
drm/fb-helper: kill drm_fb_helper_restore
drm/fb-helper: unexport drm_fb_helper_panic
drm/fb-helper: unexport drm_fb_helper_single_fb_probe
drm/tegra: don't set up initial fbcon config twice
drm/fb-helper: don't disable everything in initial_config
drm/i915: rip out helper->disable noop functions
drm/fb-helper: fixup set_config semantics
drm/fb-helper: directly call set_par from the hotplug handler
drm/fb-helper: streamline drm_fb_helper_single_fb_probe
drm/<drivers>: simplify ->fb_probe callback
drm/fb-helper: improve kerneldoc
drm/fb-helper: don't sleep for screen unblank when an oopps is in progress
drm/fb-helper: remove unused members of struct drm_fb_helper

Documentation/DocBook/drm.tmpl | 1 +
drivers/gpu/drm/ast/ast_fb.c | 26 +--
drivers/gpu/drm/cirrus/cirrus_fbdev.c | 26 +--
drivers/gpu/drm/drm_crtc.c | 16 +-
drivers/gpu/drm/drm_fb_cma_helper.c | 22 +--
drivers/gpu/drm/drm_fb_helper.c | 251 +++++++++++++++++++++++------
drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 35 +---
drivers/gpu/drm/gma500/framebuffer.c | 14 +-
drivers/gpu/drm/i915/intel_crt.c | 1 -
drivers/gpu/drm/i915/intel_ddi.c | 1 -
drivers/gpu/drm/i915/intel_display.c | 20 +--
drivers/gpu/drm/i915/intel_dp.c | 1 -
drivers/gpu/drm/i915/intel_drv.h | 1 -
drivers/gpu/drm/i915/intel_dvo.c | 1 -
drivers/gpu/drm/i915/intel_fb.c | 21 +--
drivers/gpu/drm/i915/intel_hdmi.c | 1 -
drivers/gpu/drm/i915/intel_lvds.c | 1 -
drivers/gpu/drm/i915/intel_sdvo.c | 1 -
drivers/gpu/drm/i915/intel_tv.c | 1 -
drivers/gpu/drm/mgag200/mgag200_fb.c | 27 +---
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 25 +--
drivers/gpu/drm/radeon/radeon_fb.c | 25 +--
drivers/gpu/drm/tegra/fb.c | 4 -
drivers/gpu/drm/udl/udl_fb.c | 26 +--
drivers/staging/omapdrm/omap_fbdev.c | 21 +--
include/drm/drm_crtc.h | 1 +
include/drm/drm_fb_helper.h | 18 ++-
27 files changed, 298 insertions(+), 290 deletions(-)
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/