49 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 21261e30679118b96ed537d1cdf9e12682fc1b29 Mon Sep 17 00:00:00 2001
 | 
						|
From: Eugen Hristev <eugen.hristev@microchip.com>
 | 
						|
Date: Wed, 9 Jun 2021 15:00:28 +0200
 | 
						|
Subject: [PATCH 193/247] media: atmel: atmel-sama5d2-isc: fix YUYV format
 | 
						|
 | 
						|
SAMA5D2 does not have the YCYC field for the RLP (rounding, limiting,
 | 
						|
packaging) module.
 | 
						|
The YCYC field is supposed to work with interleaved YUV formats like YUYV.
 | 
						|
In SAMA5D2, we have to use YYCC field, which is used for both planar
 | 
						|
formats like YUV420 and interleaved formats like YUYV.
 | 
						|
Fix the according rlp callback to replace the generic YCYC field (which
 | 
						|
makes more sense from a logical point of view) with the required YYCC
 | 
						|
field.
 | 
						|
 | 
						|
Fixes: debfa496871c ("media: atmel: atmel-isc-base: add support for more formats and additional pipeline modules")
 | 
						|
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
 | 
						|
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
 | 
						|
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
 | 
						|
---
 | 
						|
 .../media/platform/atmel/atmel-sama5d2-isc.c    | 17 +++++++++++++++++
 | 
						|
 1 file changed, 17 insertions(+)
 | 
						|
 | 
						|
--- a/drivers/media/platform/atmel/atmel-sama5d2-isc.c
 | 
						|
+++ b/drivers/media/platform/atmel/atmel-sama5d2-isc.c
 | 
						|
@@ -255,6 +255,23 @@ static void isc_sama5d2_config_rlp(struc
 | 
						|
 	struct regmap *regmap = isc->regmap;
 | 
						|
 	u32 rlp_mode = isc->config.rlp_cfg_mode;
 | 
						|
 
 | 
						|
+	/*
 | 
						|
+	 * In sama5d2, the YUV planar modes and the YUYV modes are treated
 | 
						|
+	 * in the same way in RLP register.
 | 
						|
+	 * Normally, YYCC mode should be Luma(n) - Color B(n) - Color R (n)
 | 
						|
+	 * and YCYC should be Luma(n + 1) - Color B (n) - Luma (n) - Color R (n)
 | 
						|
+	 * but in sama5d2, the YCYC mode does not exist, and YYCC must be
 | 
						|
+	 * selected for both planar and interleaved modes, as in fact
 | 
						|
+	 * both modes are supported.
 | 
						|
+	 *
 | 
						|
+	 * Thus, if the YCYC mode is selected, replace it with the
 | 
						|
+	 * sama5d2-compliant mode which is YYCC .
 | 
						|
+	 */
 | 
						|
+	if ((rlp_mode & ISC_RLP_CFG_MODE_YCYC) == ISC_RLP_CFG_MODE_YCYC) {
 | 
						|
+		rlp_mode &= ~ISC_RLP_CFG_MODE_MASK;
 | 
						|
+		rlp_mode |= ISC_RLP_CFG_MODE_YYCC;
 | 
						|
+	}
 | 
						|
+
 | 
						|
 	regmap_update_bits(regmap, ISC_RLP_CFG + isc->offsets.rlp,
 | 
						|
 			   ISC_RLP_CFG_MODE_MASK, rlp_mode);
 | 
						|
 }
 |