summaryrefslogtreecommitdiff
path: root/drivers/dma
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/pxp/pxp_dma_v3.c9
1 files changed, 8 insertions, 1 deletions
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 */