at91: kernel v5.15: remove upstreamed patches
[openwrt/openwrt.git] / target / linux / at91 / patches-5.15 / 180-media-atmel-atmel-isc-move-the-formats-list-into-pro.patch
diff --git a/target/linux/at91/patches-5.15/180-media-atmel-atmel-isc-move-the-formats-list-into-pro.patch b/target/linux/at91/patches-5.15/180-media-atmel-atmel-isc-move-the-formats-list-into-pro.patch
deleted file mode 100644 (file)
index 1c64cfc..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-From dda51aa2e4524914d25022864466fa9d8713a5e9 Mon Sep 17 00:00:00 2001
-From: Eugen Hristev <eugen.hristev@microchip.com>
-Date: Tue, 13 Apr 2021 12:57:22 +0200
-Subject: [PATCH 180/247] media: atmel: atmel-isc: move the formats list into
- product specific code
-
-The list of input and output formats has to be product specific.
-Move this list into the product specific code.
-Have pointers to these arrays inside the device struct.
-
-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 | 167 ++----------------
- drivers/media/platform/atmel/atmel-isc.h      |  12 +-
- .../media/platform/atmel/atmel-sama5d2-isc.c  | 136 ++++++++++++++
- 3 files changed, 165 insertions(+), 150 deletions(-)
-
---- a/drivers/media/platform/atmel/atmel-isc-base.c
-+++ b/drivers/media/platform/atmel/atmel-isc-base.c
-@@ -45,137 +45,6 @@ module_param(sensor_preferred, uint, 064
- MODULE_PARM_DESC(sensor_preferred,
-                "Sensor is preferred to output the specified format (1-on 0-off), default 1");
--/* This is a list of the formats that the ISC can *output* */
--const struct isc_format controller_formats[] = {
--      {
--              .fourcc         = V4L2_PIX_FMT_ARGB444,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_ARGB555,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_RGB565,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_ABGR32,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_XBGR32,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_YUV420,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_YUYV,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_YUV422P,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_GREY,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_Y10,
--      },
--};
--
--/* This is a list of formats that the ISC can receive as *input* */
--struct isc_format formats_list[] = {
--      {
--              .fourcc         = V4L2_PIX_FMT_SBGGR8,
--              .mbus_code      = MEDIA_BUS_FMT_SBGGR8_1X8,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--              .cfa_baycfg     = ISC_BAY_CFG_BGBG,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SGBRG8,
--              .mbus_code      = MEDIA_BUS_FMT_SGBRG8_1X8,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--              .cfa_baycfg     = ISC_BAY_CFG_GBGB,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SGRBG8,
--              .mbus_code      = MEDIA_BUS_FMT_SGRBG8_1X8,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--              .cfa_baycfg     = ISC_BAY_CFG_GRGR,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SRGGB8,
--              .mbus_code      = MEDIA_BUS_FMT_SRGGB8_1X8,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SBGGR10,
--              .mbus_code      = MEDIA_BUS_FMT_SBGGR10_1X10,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
--              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SGBRG10,
--              .mbus_code      = MEDIA_BUS_FMT_SGBRG10_1X10,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
--              .cfa_baycfg     = ISC_BAY_CFG_GBGB,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SGRBG10,
--              .mbus_code      = MEDIA_BUS_FMT_SGRBG10_1X10,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
--              .cfa_baycfg     = ISC_BAY_CFG_GRGR,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SRGGB10,
--              .mbus_code      = MEDIA_BUS_FMT_SRGGB10_1X10,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
--              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SBGGR12,
--              .mbus_code      = MEDIA_BUS_FMT_SBGGR12_1X12,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
--              .cfa_baycfg     = ISC_BAY_CFG_BGBG,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SGBRG12,
--              .mbus_code      = MEDIA_BUS_FMT_SGBRG12_1X12,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
--              .cfa_baycfg     = ISC_BAY_CFG_GBGB,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SGRBG12,
--              .mbus_code      = MEDIA_BUS_FMT_SGRBG12_1X12,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
--              .cfa_baycfg     = ISC_BAY_CFG_GRGR,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_SRGGB12,
--              .mbus_code      = MEDIA_BUS_FMT_SRGGB12_1X12,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
--              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_GREY,
--              .mbus_code      = MEDIA_BUS_FMT_Y8_1X8,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_YUYV,
--              .mbus_code      = MEDIA_BUS_FMT_YUYV8_2X8,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_RGB565,
--              .mbus_code      = MEDIA_BUS_FMT_RGB565_2X8_LE,
--              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
--      },
--      {
--              .fourcc         = V4L2_PIX_FMT_Y10,
--              .mbus_code      = MEDIA_BUS_FMT_Y10_1X10,
--              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
--      },
--
--};
--
- #define ISC_IS_FORMAT_RAW(mbus_code) \
-       (((mbus_code) & 0xf000) == 0x3000)
-@@ -919,24 +788,25 @@ static int isc_querycap(struct file *fil
- static int isc_enum_fmt_vid_cap(struct file *file, void *priv,
-                                struct v4l2_fmtdesc *f)
- {
-+      struct isc_device *isc = video_drvdata(file);
-       u32 index = f->index;
-       u32 i, supported_index;
--      if (index < ARRAY_SIZE(controller_formats)) {
--              f->pixelformat = controller_formats[index].fourcc;
-+      if (index < isc->controller_formats_size) {
-+              f->pixelformat = isc->controller_formats[index].fourcc;
-               return 0;
-       }
--      index -= ARRAY_SIZE(controller_formats);
-+      index -= isc->controller_formats_size;
-       supported_index = 0;
--      for (i = 0; i < ARRAY_SIZE(formats_list); i++) {
--              if (!ISC_IS_FORMAT_RAW(formats_list[i].mbus_code) ||
--                  !formats_list[i].sd_support)
-+      for (i = 0; i < isc->formats_list_size; i++) {
-+              if (!ISC_IS_FORMAT_RAW(isc->formats_list[i].mbus_code) ||
-+                  !isc->formats_list[i].sd_support)
-                       continue;
-               if (supported_index == index) {
--                      f->pixelformat = formats_list[i].fourcc;
-+                      f->pixelformat = isc->formats_list[i].fourcc;
-                       return 0;
-               }
-               supported_index++;
-@@ -1477,8 +1347,8 @@ static int isc_enum_framesizes(struct fi
-               if (isc->user_formats[i]->fourcc == fsize->pixel_format)
-                       ret = 0;
--      for (i = 0; i < ARRAY_SIZE(controller_formats); i++)
--              if (controller_formats[i].fourcc == fsize->pixel_format)
-+      for (i = 0; i < isc->controller_formats_size; i++)
-+              if (isc->controller_formats[i].fourcc == fsize->pixel_format)
-                       ret = 0;
-       if (ret)
-@@ -1514,8 +1384,8 @@ static int isc_enum_frameintervals(struc
-               if (isc->user_formats[i]->fourcc == fival->pixel_format)
-                       ret = 0;
--      for (i = 0; i < ARRAY_SIZE(controller_formats); i++)
--              if (controller_formats[i].fourcc == fival->pixel_format)
-+      for (i = 0; i < isc->controller_formats_size; i++)
-+              if (isc->controller_formats[i].fourcc == fival->pixel_format)
-                       ret = 0;
-       if (ret)
-@@ -2126,12 +1996,13 @@ static void isc_async_unbind(struct v4l2
-       v4l2_ctrl_handler_free(&isc->ctrls.handler);
- }
--static struct isc_format *find_format_by_code(unsigned int code, int *index)
-+static struct isc_format *find_format_by_code(struct isc_device *isc,
-+                                            unsigned int code, int *index)
- {
--      struct isc_format *fmt = &formats_list[0];
-+      struct isc_format *fmt = &isc->formats_list[0];
-       unsigned int i;
--      for (i = 0; i < ARRAY_SIZE(formats_list); i++) {
-+      for (i = 0; i < isc->formats_list_size; i++) {
-               if (fmt->mbus_code == code) {
-                       *index = i;
-                       return fmt;
-@@ -2148,7 +2019,7 @@ static int isc_formats_init(struct isc_d
-       struct isc_format *fmt;
-       struct v4l2_subdev *subdev = isc->current_subdev->sd;
-       unsigned int num_fmts, i, j;
--      u32 list_size = ARRAY_SIZE(formats_list);
-+      u32 list_size = isc->formats_list_size;
-       struct v4l2_subdev_mbus_code_enum mbus_code = {
-               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
-       };
-@@ -2158,7 +2029,7 @@ static int isc_formats_init(struct isc_d
-              NULL, &mbus_code)) {
-               mbus_code.index++;
--              fmt = find_format_by_code(mbus_code.code, &i);
-+              fmt = find_format_by_code(isc, mbus_code.code, &i);
-               if (!fmt) {
-                       v4l2_warn(&isc->v4l2_dev, "Mbus code %x not supported\n",
-                                 mbus_code.code);
-@@ -2179,7 +2050,7 @@ static int isc_formats_init(struct isc_d
-       if (!isc->user_formats)
-               return -ENOMEM;
--      fmt = &formats_list[0];
-+      fmt = &isc->formats_list[0];
-       for (i = 0, j = 0; i < list_size; i++) {
-               if (fmt->sd_support)
-                       isc->user_formats[j++] = fmt;
---- a/drivers/media/platform/atmel/atmel-isc.h
-+++ b/drivers/media/platform/atmel/atmel-isc.h
-@@ -236,6 +236,12 @@ struct isc_reg_offsets {
-  *                    specific v4l2 controls.
-  *
-  * @offsets:          struct holding the product specific register offsets
-+ * @controller_formats:       pointer to the array of possible formats that the
-+ *                    controller can output
-+ * @formats_list:     pointer to the array of possible formats that can
-+ *                    be used as an input to the controller
-+ * @controller_formats_size:  size of controller_formats array
-+ * @formats_list_size:        size of formats_list array
-  */
- struct isc_device {
-       struct regmap           *regmap;
-@@ -317,10 +323,12 @@ struct isc_device {
-       };
-       struct isc_reg_offsets          offsets;
-+      const struct isc_format         *controller_formats;
-+      struct isc_format               *formats_list;
-+      u32                             controller_formats_size;
-+      u32                             formats_list_size;
- };
--extern struct isc_format formats_list[];
--extern const struct isc_format controller_formats[];
- extern const struct regmap_config isc_regmap_config;
- extern const struct v4l2_async_notifier_operations isc_async_ops;
---- a/drivers/media/platform/atmel/atmel-sama5d2-isc.c
-+++ b/drivers/media/platform/atmel/atmel-sama5d2-isc.c
-@@ -54,6 +54,137 @@
- #define ISC_CLK_MAX_DIV               255
-+/* This is a list of the formats that the ISC can *output* */
-+static const struct isc_format sama5d2_controller_formats[] = {
-+      {
-+              .fourcc         = V4L2_PIX_FMT_ARGB444,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_ARGB555,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_RGB565,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_ABGR32,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_XBGR32,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_YUV420,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_YUYV,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_YUV422P,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_GREY,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_Y10,
-+      },
-+};
-+
-+/* This is a list of formats that the ISC can receive as *input* */
-+static struct isc_format sama5d2_formats_list[] = {
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SBGGR8,
-+              .mbus_code      = MEDIA_BUS_FMT_SBGGR8_1X8,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+              .cfa_baycfg     = ISC_BAY_CFG_BGBG,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SGBRG8,
-+              .mbus_code      = MEDIA_BUS_FMT_SGBRG8_1X8,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+              .cfa_baycfg     = ISC_BAY_CFG_GBGB,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SGRBG8,
-+              .mbus_code      = MEDIA_BUS_FMT_SGRBG8_1X8,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+              .cfa_baycfg     = ISC_BAY_CFG_GRGR,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SRGGB8,
-+              .mbus_code      = MEDIA_BUS_FMT_SRGGB8_1X8,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SBGGR10,
-+              .mbus_code      = MEDIA_BUS_FMT_SBGGR10_1X10,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
-+              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SGBRG10,
-+              .mbus_code      = MEDIA_BUS_FMT_SGBRG10_1X10,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
-+              .cfa_baycfg     = ISC_BAY_CFG_GBGB,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SGRBG10,
-+              .mbus_code      = MEDIA_BUS_FMT_SGRBG10_1X10,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
-+              .cfa_baycfg     = ISC_BAY_CFG_GRGR,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SRGGB10,
-+              .mbus_code      = MEDIA_BUS_FMT_SRGGB10_1X10,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
-+              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SBGGR12,
-+              .mbus_code      = MEDIA_BUS_FMT_SBGGR12_1X12,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
-+              .cfa_baycfg     = ISC_BAY_CFG_BGBG,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SGBRG12,
-+              .mbus_code      = MEDIA_BUS_FMT_SGBRG12_1X12,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
-+              .cfa_baycfg     = ISC_BAY_CFG_GBGB,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SGRBG12,
-+              .mbus_code      = MEDIA_BUS_FMT_SGRBG12_1X12,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
-+              .cfa_baycfg     = ISC_BAY_CFG_GRGR,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_SRGGB12,
-+              .mbus_code      = MEDIA_BUS_FMT_SRGGB12_1X12,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TWELVE,
-+              .cfa_baycfg     = ISC_BAY_CFG_RGRG,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_GREY,
-+              .mbus_code      = MEDIA_BUS_FMT_Y8_1X8,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_YUYV,
-+              .mbus_code      = MEDIA_BUS_FMT_YUYV8_2X8,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_RGB565,
-+              .mbus_code      = MEDIA_BUS_FMT_RGB565_2X8_LE,
-+              .pfe_cfg0_bps   = ISC_PFE_CFG0_BPS_EIGHT,
-+      },
-+      {
-+              .fourcc         = V4L2_PIX_FMT_Y10,
-+              .mbus_code      = MEDIA_BUS_FMT_Y10_1X10,
-+              .pfe_cfg0_bps   = ISC_PFG_CFG0_BPS_TEN,
-+      },
-+
-+};
-+
- static void isc_sama5d2_config_csc(struct isc_device *isc)
- {
-       struct regmap *regmap = isc->regmap;
-@@ -310,6 +441,11 @@ static int atmel_isc_probe(struct platfo
-       isc->offsets.version = ISC_SAMA5D2_VERSION_OFFSET;
-       isc->offsets.his_entry = ISC_SAMA5D2_HIS_ENTRY_OFFSET;
-+      isc->controller_formats = sama5d2_controller_formats;
-+      isc->controller_formats_size = ARRAY_SIZE(sama5d2_controller_formats);
-+      isc->formats_list = sama5d2_formats_list;
-+      isc->formats_list_size = ARRAY_SIZE(sama5d2_formats_list);
-+
-       /* sama5d2-isc - 8 bits per beat */
-       isc->dcfg = ISC_DCFG_YMBSIZE_BEATS8 | ISC_DCFG_CMBSIZE_BEATS8;