diff options
| author | Radhika Ranjan Soni <rrsoni@codeaurora.org> | 2013-07-12 17:58:24 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:19:16 -0700 |
| commit | 45f14318b0be9fbb2ebad10026fa74563eeccf21 (patch) | |
| tree | a3242edadfa85a86c4c66db4ee3db6d16d92e91a | |
| parent | c2d61be2bb849d94eff170ef11824911528e708b (diff) | |
mdss: ppp: Add support for MDP_Y_CBCR_H2V2_VENUS format
Currently support to handle MDP_Y_CBCR_H2V2_VENUS format is
not present in driver. Adding the same.
Change-Id: I2e5f0f30662777ffb48f875f858d58b94577825e
Signed-off-by: Radhika Ranjan Soni <rrsoni@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdp3_ppp.c | 6 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdp3_ppp_data.c | 7 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdp3_ppp_hwio.c | 12 |
3 files changed, 24 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdp3_ppp.c b/drivers/video/fbdev/msm/mdp3_ppp.c index 459ca5a46650..7f4e61ded89e 100644 --- a/drivers/video/fbdev/msm/mdp3_ppp.c +++ b/drivers/video/fbdev/msm/mdp3_ppp.c @@ -52,6 +52,7 @@ static const bool valid_fmt[MDP_IMGTYPE_LIMIT] = { [MDP_Y_CRCB_H2V2] = true, [MDP_Y_CBCR_H2V2] = true, [MDP_Y_CBCR_H2V2_ADRENO] = true, + [MDP_Y_CBCR_H2V2_VENUS] = true, [MDP_YCRYCB_H2V1] = true, [MDP_Y_CBCR_H2V1] = true, [MDP_Y_CRCB_H2V1] = true, @@ -411,6 +412,11 @@ static void mdp3_ppp_process_req(struct ppp_blit_op *blit_op, (void *) ((uint32_t) blit_op->src.p0 + ALIGN((ALIGN(req->src.width, 32) * ALIGN(req->src.height, 32)), 4096)); + else if (blit_op->src.color_fmt == MDP_Y_CBCR_H2V2_VENUS) + blit_op->src.p1 = + (void *) ((uint32_t) blit_op->src.p0 + + ALIGN((ALIGN(req->src.width, 128) * + ALIGN(req->src.height, 32)), 4096)); else blit_op->src.p1 = (void *) ((uint32_t) blit_op->src.p0 + req->src.width * req->src.height); diff --git a/drivers/video/fbdev/msm/mdp3_ppp_data.c b/drivers/video/fbdev/msm/mdp3_ppp_data.c index d68faad8858e..e1c0f2783db2 100644 --- a/drivers/video/fbdev/msm/mdp3_ppp_data.c +++ b/drivers/video/fbdev/msm/mdp3_ppp_data.c @@ -30,6 +30,7 @@ const uint32_t src_cfg_lut[MDP_IMGTYPE_LIMIT] = { [MDP_Y_CRCB_H2V2] = MDP_Y_CBCR_H2V2_SRC_REG, [MDP_Y_CBCR_H2V2] = MDP_Y_CBCR_H2V2_SRC_REG, [MDP_Y_CBCR_H2V2_ADRENO] = MDP_Y_CBCR_H2V2_SRC_REG, + [MDP_Y_CBCR_H2V2_VENUS] = MDP_Y_CBCR_H2V2_SRC_REG, [MDP_YCRYCB_H2V1] = MDP_YCRYCB_H2V1_SRC_REG, [MDP_Y_CBCR_H2V1] = MDP_Y_CRCB_H2V1_SRC_REG, [MDP_Y_CRCB_H2V1] = MDP_Y_CRCB_H2V1_SRC_REG, @@ -48,6 +49,7 @@ const uint32_t out_cfg_lut[MDP_IMGTYPE_LIMIT] = { [MDP_Y_CRCB_H2V2] = MDP_Y_CBCR_H2V2_DST_REG, [MDP_Y_CBCR_H2V2] = MDP_Y_CBCR_H2V2_DST_REG, [MDP_Y_CBCR_H2V2_ADRENO] = MDP_Y_CBCR_H2V2_DST_REG, + [MDP_Y_CBCR_H2V2_VENUS] = MDP_Y_CBCR_H2V2_DST_REG, [MDP_YCRYCB_H2V1] = MDP_YCRYCB_H2V1_DST_REG, [MDP_Y_CBCR_H2V1] = MDP_Y_CRCB_H2V1_DST_REG, [MDP_Y_CRCB_H2V1] = MDP_Y_CRCB_H2V1_DST_REG, @@ -72,6 +74,8 @@ const uint32_t pack_patt_lut[MDP_IMGTYPE_LIMIT] = { [MDP_Y_CBCR_H2V2] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), [MDP_Y_CBCR_H2V2_ADRENO] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), + [MDP_Y_CBCR_H2V2_VENUS] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, + CLR_CR, 8), [MDP_YCRYCB_H2V1] = PPP_GET_PACK_PATTERN(CLR_Y, CLR_CR, CLR_Y, CLR_CB, 8), [MDP_Y_CBCR_H2V1] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), @@ -91,6 +95,8 @@ const uint32_t src_op_reg[MDP_IMGTYPE_LIMIT] = { [MDP_Y_CBCR_H2V2] = PPP_OP_SRC_CHROMA_420 | PPP_OP_COLOR_SPACE_YCBCR, [MDP_Y_CBCR_H2V2_ADRENO] = PPP_OP_SRC_CHROMA_420 | PPP_OP_COLOR_SPACE_YCBCR, + [MDP_Y_CBCR_H2V2_VENUS] = PPP_OP_SRC_CHROMA_420 | + PPP_OP_COLOR_SPACE_YCBCR, [MDP_Y_CBCR_H2V1] = PPP_OP_SRC_CHROMA_H2V1, [MDP_Y_CRCB_H2V1] = PPP_OP_SRC_CHROMA_H2V1, [MDP_YCRYCB_H2V1] = PPP_OP_SRC_CHROMA_H2V1, @@ -109,6 +115,7 @@ const uint32_t bytes_per_pixel[MDP_IMGTYPE_LIMIT] = { [MDP_Y_CBCR_H2V1] = 1, [MDP_Y_CBCR_H2V2] = 1, [MDP_Y_CBCR_H2V2_ADRENO] = 1, + [MDP_Y_CBCR_H2V2_VENUS] = 1, [MDP_Y_CRCB_H2V1] = 1, [MDP_Y_CRCB_H2V2] = 1, [MDP_YCRYCB_H2V1] = 2, diff --git a/drivers/video/fbdev/msm/mdp3_ppp_hwio.c b/drivers/video/fbdev/msm/mdp3_ppp_hwio.c index 8dd3d55bee24..199387f62d06 100644 --- a/drivers/video/fbdev/msm/mdp3_ppp_hwio.c +++ b/drivers/video/fbdev/msm/mdp3_ppp_hwio.c @@ -430,6 +430,8 @@ void mdp_adjust_start_addr(struct ppp_blit_op *blit_op, if (img->color_fmt == MDP_Y_CBCR_H2V2_ADRENO && layer == 0) img->p0 += (x + y * ALIGN(width, 32)) * bpp; + else if (img->color_fmt == MDP_Y_CBCR_H2V2_VENUS && layer == 0) + img->p0 += (x + y * ALIGN(width, 128)) * bpp; else img->p0 += (x + y * width) * bpp; if (layer == 1) @@ -442,7 +444,8 @@ void mdp_adjust_start_addr(struct ppp_blit_op *blit_op, * MDP_Y_CBCR_H2V2/MDP_Y_CRCB_H2V2 cosite for now * we need to shift x direction same as y dir for offsite */ - if (img->color_fmt == MDP_Y_CBCR_H2V2_ADRENO + if ((img->color_fmt == MDP_Y_CBCR_H2V2_ADRENO || + img->color_fmt == MDP_Y_CBCR_H2V2_VENUS) && layer == 0) img->p1 += ((x / h_slice) * h_slice + ((y == 0) ? 0 : (((y + 1) / v_slice - 1) * (ALIGN(width/2, 32) * 2)))) @@ -740,6 +743,7 @@ void ppp_edge_rep_chroma_pixel(struct ppp_blit_op *blit_op, case MDP_Y_CBCR_H2V2: case MDP_Y_CBCR_H2V2_ADRENO: + case MDP_Y_CBCR_H2V2_VENUS: case MDP_Y_CRCB_H2V2: er->chroma_interp_point_left = er->luma_interp_point_left >> 1; er->chroma_interp_point_right = @@ -778,6 +782,7 @@ void ppp_edge_rep_chroma_pixel(struct ppp_blit_op *blit_op, break; case MDP_Y_CBCR_H2V2: case MDP_Y_CBCR_H2V2_ADRENO: + case MDP_Y_CBCR_H2V2_VENUS: case MDP_Y_CRCB_H2V2: /* * cosite in horizontal dir, and offsite in vertical dir @@ -1168,6 +1173,7 @@ int config_ppp_op_mode(struct ppp_blit_op *blit_op) switch (blit_op->src.color_fmt) { case MDP_Y_CBCR_H2V2: case MDP_Y_CBCR_H2V2_ADRENO: + case MDP_Y_CBCR_H2V2_VENUS: case MDP_Y_CRCB_H2V2: sh_slice = sv_slice = 2; break; @@ -1195,6 +1201,10 @@ int config_ppp_op_mode(struct ppp_blit_op *blit_op) blit_op->src.stride0 = ALIGN(blit_op->src.prop.width, 32) * ppp_bpp(blit_op->src.color_fmt); blit_op->src.stride1 = 2 * ALIGN(blit_op->src.prop.width/2, 32); + } else if (blit_op->src.color_fmt == MDP_Y_CBCR_H2V2_VENUS) { + blit_op->src.stride0 = ALIGN(blit_op->src.prop.width, 128) * + ppp_bpp(blit_op->src.color_fmt); + blit_op->src.stride1 = blit_op->src.stride0; } else { blit_op->src.stride0 = blit_op->src.prop.width * ppp_bpp(blit_op->src.color_fmt); |
