From: Guoniu.Zhou Date: Fri, 23 Mar 2018 03:41:49 +0000 (+0800) Subject: MLK-17487: pxp: fix pxp yuv to yuv generate color dots issue X-Git-Tag: C0P2-H0.0--20200415~170 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=15d872aff3fe415d3e23620f5963dcbaea6ceb9a;p=linux.git MLK-17487: pxp: fix pxp yuv to yuv generate color dots issue When PxP convert yuyv to nv12 format, some color dots will introdue to output image. IC recommend that YCBCR_MODE and BYPASS bit of CSC1_COEF0 should be 1. Reviewed-by: robby.cai Signed-off-by: Guoniu.Zhou --- diff --git a/drivers/dma/pxp/pxp_dma_v3.c b/drivers/dma/pxp/pxp_dma_v3.c index 5a613e97bb09..48c3144ffce8 100644 --- a/drivers/dma/pxp/pxp_dma_v3.c +++ b/drivers/dma/pxp/pxp_dma_v3.c @@ -3021,7 +3021,6 @@ static int pxp_2d_task_config(struct pxp_pixmap *input, { uint8_t position = 0; - do { position = find_next_bit((unsigned long *)&nodes_used, 32, position); if (position >= sizeof(uint32_t) * 8) @@ -3151,6 +3150,7 @@ static int pxp_2d_op_handler(struct pxps *pxp) uint32_t partial_nodes_used = 0; uint32_t nodes_used_s0 = 0, nodes_used_s1 = 0; uint32_t nodes_in_path_s0, nodes_in_path_s1; + uint32_t val; output = &task->output[0]; if (!output->pitch) @@ -3287,6 +3287,13 @@ reparse: pr_debug("%s: path_ctrl0 = 0x%x\n", __func__, *(uint32_t *)&path_ctrl0); pxp_2d_task_config(input, output, op, nodes_used); + + if (is_yuv(input->format) && is_yuv(output->format)) { + val = readl(pxp_reg_base + HW_PXP_CSC1_COEF0); + val |= (BF_PXP_CSC1_COEF0_YCBCR_MODE(1) | + BF_PXP_CSC1_COEF0_BYPASS(1)); + pxp_writel(val, HW_PXP_CSC1_COEF0); + } break; case 2: /* Composite */