90 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 8601f1fc0a9a22788bfa6369fbbf83b3828a5b42 Mon Sep 17 00:00:00 2001
 | 
						|
From: Eugen Hristev <eugen.hristev@microchip.com>
 | 
						|
Date: Tue, 13 Apr 2021 12:57:23 +0200
 | 
						|
Subject: [PATCH 181/247] media: atmel: atmel-isc: create an adapt pipeline
 | 
						|
 callback for product specific
 | 
						|
 | 
						|
Once the pipeline is set in the base code, create a callback that will adapt
 | 
						|
the ISC pipeline to each product.
 | 
						|
Create the adapt_pipeline callback that will be used in this fashion.
 | 
						|
 | 
						|
[hverkuil: made isc_sama5d2_adapt_pipeline static]
 | 
						|
 | 
						|
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>
 | 
						|
---
 | 
						|
 drivers/media/platform/atmel/atmel-isc-base.c    |  4 ++++
 | 
						|
 drivers/media/platform/atmel/atmel-isc.h         |  5 +++++
 | 
						|
 drivers/media/platform/atmel/atmel-sama5d2-isc.c | 11 +++++++++++
 | 
						|
 3 files changed, 20 insertions(+)
 | 
						|
 | 
						|
--- a/drivers/media/platform/atmel/atmel-isc-base.c
 | 
						|
+++ b/drivers/media/platform/atmel/atmel-isc-base.c
 | 
						|
@@ -1059,6 +1059,10 @@ static int isc_try_configure_pipeline(st
 | 
						|
 	default:
 | 
						|
 		isc->try_config.bits_pipeline = 0x0;
 | 
						|
 	}
 | 
						|
+
 | 
						|
+	/* Tune the pipeline to product specific */
 | 
						|
+	isc->adapt_pipeline(isc);
 | 
						|
+
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
--- a/drivers/media/platform/atmel/atmel-isc.h
 | 
						|
+++ b/drivers/media/platform/atmel/atmel-isc.h
 | 
						|
@@ -235,6 +235,9 @@ struct isc_reg_offsets {
 | 
						|
  * @config_ctrls:	pointer to a functoin that initializes product
 | 
						|
  *			specific v4l2 controls.
 | 
						|
  *
 | 
						|
+ * @adapt_pipeline:	pointer to a function that adapts the pipeline bits
 | 
						|
+ *			to the product specific pipeline
 | 
						|
+ *
 | 
						|
  * @offsets:		struct holding the product specific register offsets
 | 
						|
  * @controller_formats:	pointer to the array of possible formats that the
 | 
						|
  *			controller can output
 | 
						|
@@ -320,6 +323,8 @@ struct isc_device {
 | 
						|
 
 | 
						|
 		void (*config_ctrls)(struct isc_device *isc,
 | 
						|
 				     const struct v4l2_ctrl_ops *ops);
 | 
						|
+
 | 
						|
+		void (*adapt_pipeline)(struct isc_device *isc);
 | 
						|
 	};
 | 
						|
 
 | 
						|
 	struct isc_reg_offsets		offsets;
 | 
						|
--- a/drivers/media/platform/atmel/atmel-sama5d2-isc.c
 | 
						|
+++ b/drivers/media/platform/atmel/atmel-sama5d2-isc.c
 | 
						|
@@ -54,6 +54,10 @@
 | 
						|
 
 | 
						|
 #define ISC_CLK_MAX_DIV		255
 | 
						|
 
 | 
						|
+#define ISC_SAMA5D2_PIPELINE \
 | 
						|
+	(WB_ENABLE | CFA_ENABLE | CC_ENABLE | GAM_ENABLES | CSC_ENABLE | \
 | 
						|
+	CBC_ENABLE | SUB422_ENABLE | SUB420_ENABLE)
 | 
						|
+
 | 
						|
 /* This is a list of the formats that the ISC can *output* */
 | 
						|
 static const struct isc_format sama5d2_controller_formats[] = {
 | 
						|
 	{
 | 
						|
@@ -257,6 +261,11 @@ static void isc_sama5d2_config_rlp(struc
 | 
						|
 			   ISC_RLP_CFG_MODE_MASK, rlp_mode);
 | 
						|
 }
 | 
						|
 
 | 
						|
+static void isc_sama5d2_adapt_pipeline(struct isc_device *isc)
 | 
						|
+{
 | 
						|
+	isc->try_config.bits_pipeline &= ISC_SAMA5D2_PIPELINE;
 | 
						|
+}
 | 
						|
+
 | 
						|
 /* Gamma table with gamma 1/2.2 */
 | 
						|
 static const u32 isc_sama5d2_gamma_table[][GAMMA_ENTRIES] = {
 | 
						|
 	/* 0 --> gamma 1/1.8 */
 | 
						|
@@ -431,6 +440,8 @@ static int atmel_isc_probe(struct platfo
 | 
						|
 	isc->config_rlp = isc_sama5d2_config_rlp;
 | 
						|
 	isc->config_ctrls = isc_sama5d2_config_ctrls;
 | 
						|
 
 | 
						|
+	isc->adapt_pipeline = isc_sama5d2_adapt_pipeline;
 | 
						|
+
 | 
						|
 	isc->offsets.csc = ISC_SAMA5D2_CSC_OFFSET;
 | 
						|
 	isc->offsets.cbc = ISC_SAMA5D2_CBC_OFFSET;
 | 
						|
 	isc->offsets.sub422 = ISC_SAMA5D2_SUB422_OFFSET;
 |