OSDN Git Service

media: atmel: atmel-isc: add SUB422 and SUB420 to register offsets
authorEugen Hristev <eugen.hristev@microchip.com>
Tue, 13 Apr 2021 10:57:09 +0000 (12:57 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 8 Jun 2021 10:58:27 +0000 (12:58 +0200)
The SUB submodules are a part of the atmel-isc pipeline, and stand for
Subsampling. They are used to subsample the original YUV 4:4:4 pixel ratio
aspect to either 4:2:2 or 4:2:0.
Add sub420 and sub422 to the reg offsets struct.
This will allow different products to have a different reg offset for these
particular 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>
drivers/media/platform/atmel/atmel-isc-base.c
drivers/media/platform/atmel/atmel-isc-regs.h
drivers/media/platform/atmel/atmel-isc.h
drivers/media/platform/atmel/atmel-sama5d2-isc.c

index b772891..b398cdf 100644 (file)
@@ -2326,8 +2326,8 @@ int isc_pipeline_init(struct isc_device *isc)
                REG_FIELD(ISC_GAM_CTRL, 3, 3),
                REG_FIELD(ISC_CSC_CTRL + isc->offsets.csc, 0, 0),
                REG_FIELD(ISC_CBC_CTRL + isc->offsets.cbc, 0, 0),
-               REG_FIELD(ISC_SUB422_CTRL, 0, 0),
-               REG_FIELD(ISC_SUB420_CTRL, 0, 0),
+               REG_FIELD(ISC_SUB422_CTRL + isc->offsets.sub422, 0, 0),
+               REG_FIELD(ISC_SUB420_CTRL + isc->offsets.sub420, 0, 0),
        };
 
        for (i = 0; i < ISC_PIPE_LINE_NODE_NUM; i++) {
index a5e2fe0..04839de 100644 (file)
 #define ISC_CBC_CONTRAST       0x000003c0
 #define ISC_CBC_CONTRAST_MASK  GENMASK(11, 0)
 
+/* Offset for SUB422 register specific to sama5d2 product */
+#define ISC_SAMA5D2_SUB422_OFFSET      0
 /* Subsampling 4:4:4 to 4:2:2 Control Register */
 #define ISC_SUB422_CTRL 0x000003c4
 
+/* Offset for SUB420 register specific to sama5d2 product */
+#define ISC_SAMA5D2_SUB420_OFFSET      0
 /* Subsampling 4:2:2 to 4:2:0 Control Register */
 #define ISC_SUB420_CTRL 0x000003cc
 
index b1fe93c..fb72578 100644 (file)
@@ -148,10 +148,14 @@ struct isc_ctrls {
  * struct isc_reg_offsets - ISC device register offsets
  * @csc:               Offset for the CSC register
  * @cbc:               Offset for the CBC register
+ * @sub422:            Offset for the SUB422 register
+ * @sub420:            Offset for the SUB420 register
  */
 struct isc_reg_offsets {
        u32 csc;
        u32 cbc;
+       u32 sub422;
+       u32 sub420;
 };
 
 /*
index 657d50a..8211ee9 100644 (file)
@@ -232,6 +232,8 @@ static int atmel_isc_probe(struct platform_device *pdev)
 
        isc->offsets.csc = ISC_SAMA5D2_CSC_OFFSET;
        isc->offsets.cbc = ISC_SAMA5D2_CBC_OFFSET;
+       isc->offsets.sub422 = ISC_SAMA5D2_SUB422_OFFSET;
+       isc->offsets.sub420 = ISC_SAMA5D2_SUB420_OFFSET;
 
        /* sama5d2-isc - 8 bits per beat */
        isc->dcfg = ISC_DCFG_YMBSIZE_BEATS8 | ISC_DCFG_CMBSIZE_BEATS8;