[media] s5p-fimc: Fix horizontal/vertical image flip
authorSylwester Nawrocki <s.nawrocki@samsung.com>
Mon, 26 Nov 2012 14:08:26 +0000 (11:08 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 21 Dec 2012 13:55:13 +0000 (11:55 -0200)
Setting FIMC_REG_CITRGFMT_FLIP_X_MIRROR bit causes X-axis image
flip (vertical flip) and thus it corresponds to V4L2_CID_VFLIP.
Likewise, setting FIMC_REG_CITRGFMT_FLIP_Y_MIRROR bit causes Y-axis
image flip (horizontal flip) and thus it corresponds to V4L2_CID_HFLIP.
Currently the driver does X-axis flip when V4L2_CID_HFLIP is set and
Y-axis flip for V4L2_CID_VFLIP. Fix this incorrect assignment by setting
proper FIMC_REG_CITRGFMT register bits for ctx->hflip and ctx->vflip.

Reported-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/platform/s5p-fimc/fimc-reg.c

index 2c9d0c06c9e8faef0be5645508ad8495b9356844..9c3c461a5099e12a10b094c5da7ee741805e9cb9 100644 (file)
@@ -44,9 +44,9 @@ static u32 fimc_hw_get_in_flip(struct fimc_ctx *ctx)
        u32 flip = FIMC_REG_MSCTRL_FLIP_NORMAL;
 
        if (ctx->hflip)
-               flip = FIMC_REG_MSCTRL_FLIP_X_MIRROR;
-       if (ctx->vflip)
                flip = FIMC_REG_MSCTRL_FLIP_Y_MIRROR;
+       if (ctx->vflip)
+               flip = FIMC_REG_MSCTRL_FLIP_X_MIRROR;
 
        if (ctx->rotation <= 90)
                return flip;
@@ -59,9 +59,9 @@ static u32 fimc_hw_get_target_flip(struct fimc_ctx *ctx)
        u32 flip = FIMC_REG_CITRGFMT_FLIP_NORMAL;
 
        if (ctx->hflip)
-               flip |= FIMC_REG_CITRGFMT_FLIP_X_MIRROR;
-       if (ctx->vflip)
                flip |= FIMC_REG_CITRGFMT_FLIP_Y_MIRROR;
+       if (ctx->vflip)
+               flip |= FIMC_REG_CITRGFMT_FLIP_X_MIRROR;
 
        if (ctx->rotation <= 90)
                return flip;