aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorJack Yen <jyen@ti.com>2012-08-28 14:18:17 -0500
committerZiyann <jaraidaniel@gmail.com>2014-10-01 13:00:58 +0200
commit499b218857cc6e2828bed4b525fa265961b3ef9e (patch)
treedafc3469f7e6c210ea33456b1ec4211308603ba1 /drivers/misc
parentef96ce02344320038a5fc492e9672770ef3cee00 (diff)
downloadkernel_samsung_tuna-499b218857cc6e2828bed4b525fa265961b3ef9e.zip
kernel_samsung_tuna-499b218857cc6e2828bed4b525fa265961b3ef9e.tar.gz
kernel_samsung_tuna-499b218857cc6e2828bed4b525fa265961b3ef9e.tar.bz2
gcx: change uvshift for NV12 rotation to work properly
90/270 degree rotation is fixed by adjusting the uv plane address to get the proper uvplane starting address after the rotation. Change-Id: I350b83a77bd80efef6d470a30a46386c53628082 Signed-off-by: Jack Yen <jyen@ti.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/gcx/gcbv/gcblit.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/misc/gcx/gcbv/gcblit.c b/drivers/misc/gcx/gcbv/gcblit.c
index 6928a90..4ff6ba1 100644
--- a/drivers/misc/gcx/gcbv/gcblit.c
+++ b/drivers/misc/gcx/gcbv/gcblit.c
@@ -660,11 +660,24 @@ enum bverror do_blit(struct bvbltparams *bvbltparams,
if (srcinfo->format->format == GCREG_DE_FORMAT_NV12) {
struct gcmoxsrcyuv *gcmoxsrcyuv;
- int uvshift;
+ int uvshift = srcbyteshift;
+
+ /* add fixed offset from Y plane */
+ switch (srcinfo->angle) {
+ case ROT_ANGLE_0:
+ case ROT_ANGLE_180:
+ uvshift += srcinfo->geom->virtstride *
+ srcinfo->geom->height;
+ break;
+ case ROT_ANGLE_90:
+ case ROT_ANGLE_270:
+ /* NV12 has stride requirement of actual stride + 32
+ * Changing the UV plane address for rotation */
+ uvshift += (srcinfo->geom->virtstride) *
+ srcinfo->geom->width;
+ break;
+ }
- uvshift = srcbyteshift
- + srcinfo->geom->virtstride
- * srcinfo->geom->height;
GCDBG(GCZONE_SURF, " uvshift = 0x%08X (%d)\n",
uvshift, uvshift);