summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/omapdrm/omap_plane.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-22 10:08:40 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-04-22 10:08:40 -0700
commit3eb9992caff10b62cf0ed0bcb1667a58b13188fa (patch)
treeabe4b4b586978773e2df21898eda611bc6eb822c /drivers/gpu/drm/omapdrm/omap_plane.c
parente347fa5f4271769bc31fb462631c213aa3824588 (diff)
parenta798c10faf62a505d24e5f6213fbaf904a39623f (diff)
downloadlinux-3eb9992caff10b62cf0ed0bcb1667a58b13188fa.tar.gz
linux-3eb9992caff10b62cf0ed0bcb1667a58b13188fa.tar.bz2
linux-3eb9992caff10b62cf0ed0bcb1667a58b13188fa.zip
Merge 3.15-rc2 into staging-next
This resolves a bunch of merge errors with other fixes that are already in Linus's tree. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_plane.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_plane.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index 046d5e660c04..3cf31ee59aac 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -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;
@@ -241,10 +246,13 @@ 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):
+ case BIT(DRM_ROTATE_270):
+ swap(src_w, src_h);
+ break;
+ }
return omap_plane_mode_set(plane, crtc, fb,
crtc_x, crtc_y, crtc_w, crtc_h,