msm: rotator: Add pseudo-planar 422 H1V2 dst format for MDP4
For interleaved 422 inputs, rotator outputs MDP_Y_CRCB_H1V2
format on 90 degree rotation. Add support as destination format
for MDP4.
CRs-Fixed: 371303
Change-Id: Ie0f98d40f58bf2cb9bc3298a94cae9c4e89b2f7a
Signed-off-by: Mayank Chopra <makchopra@codeaurora.org>
diff --git a/drivers/char/msm_rotator.c b/drivers/char/msm_rotator.c
index 4d34362..6f3b79b 100644
--- a/drivers/char/msm_rotator.c
+++ b/drivers/char/msm_rotator.c
@@ -421,6 +421,7 @@
break;
case MDP_Y_CRCB_H2V1:
case MDP_Y_CBCR_H2V1:
+ case MDP_Y_CRCB_H1V2:
p->num_planes = 2;
p->plane_size[0] = w * h;
p->plane_size[1] = w * h;
@@ -651,9 +652,12 @@
int bpp;
uint32_t dst_format;
- if (info->src.format == MDP_YCRYCB_H2V1)
- dst_format = MDP_Y_CRCB_H2V1;
- else
+ if (info->src.format == MDP_YCRYCB_H2V1) {
+ if (info->rotations & MDP_ROT_90)
+ dst_format = MDP_Y_CRCB_H1V2;
+ else
+ dst_format = MDP_Y_CRCB_H2V1;
+ } else
return -EINVAL;
if (info->dst.format != dst_format)
@@ -1286,7 +1290,10 @@
info.dst.format = info.src.format;
break;
case MDP_YCRYCB_H2V1:
- info.dst.format = MDP_Y_CRCB_H2V1;
+ if (info.rotations & MDP_ROT_90)
+ info.dst.format = MDP_Y_CRCB_H1V2;
+ else
+ info.dst.format = MDP_Y_CRCB_H2V1;
break;
case MDP_Y_CB_CR_H2V2:
case MDP_Y_CBCR_H2V2_TILE: