Skip to content

Commit

Permalink
drm/omap: fix the handling of fb ref counts
Browse files Browse the repository at this point in the history
With the recent primary-plane changes for drm, the primary plane's
framebuffer needs to be ref counted the same way as for
non-primary-planes. This was not done by the omapdrm driver, which
caused the ref count to drop to 0 too early, causing problems.

This patch moves the fb unref and ref from omap_plane_update to
omap_plane_mode_set. This way the fb refs are updated for both primary
and non-primary cases, as omap_plane_update calls omap_plane_mode_set.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
  • Loading branch information
Tomi Valkeinen committed Apr 15, 2014
1 parent 38e5597 commit f2d022a
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions drivers/gpu/drm/omapdrm/omap_plane.c
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,11 @@ int omap_plane_mode_set(struct drm_plane *plane,
omap_plane->apply_done_cb.arg = arg;
}

if (plane->fb)
drm_framebuffer_unreference(plane->fb);

drm_framebuffer_reference(fb);

plane->fb = fb;
plane->crtc = crtc;

Expand All @@ -241,11 +246,6 @@ static int omap_plane_update(struct drm_plane *plane,
struct omap_plane *omap_plane = to_omap_plane(plane);
omap_plane->enabled = true;

if (plane->fb)
drm_framebuffer_unreference(plane->fb);

drm_framebuffer_reference(fb);

/* omap_plane_mode_set() takes adjusted src */
switch (omap_plane->win.rotation & 0xf) {
case BIT(DRM_ROTATE_90):
Expand Down

0 comments on commit f2d022a

Please sign in to comment.