mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
59 lines
2.0 KiB
Diff
59 lines
2.0 KiB
Diff
|
From 9ca04663315302f1556798e9da29eabf08aecd59 Mon Sep 17 00:00:00 2001
|
||
|
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
||
|
Date: Fri, 12 Jun 2020 15:53:53 +0200
|
||
|
Subject: [PATCH] media: i2c: imx290: Add support to enumerate all
|
||
|
frame sizes
|
||
|
|
||
|
Commit 3b867fb641d884b714fba390ae866714ba475f29 upstream.
|
||
|
|
||
|
Add support to enumerate all frame sizes supported by IMX290. This is
|
||
|
required for using with userspace tools such as libcamera.
|
||
|
|
||
|
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
|
||
|
Signed-off-by: Andrey Konovalov <andrey.konovalov@linaro.org>
|
||
|
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
|
||
|
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
|
||
|
---
|
||
|
drivers/media/i2c/imx290.c | 23 +++++++++++++++++++++++
|
||
|
1 file changed, 23 insertions(+)
|
||
|
|
||
|
--- a/drivers/media/i2c/imx290.c
|
||
|
+++ b/drivers/media/i2c/imx290.c
|
||
|
@@ -528,6 +528,28 @@ static int imx290_enum_mbus_code(struct
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
+static int imx290_enum_frame_size(struct v4l2_subdev *sd,
|
||
|
+ struct v4l2_subdev_pad_config *cfg,
|
||
|
+ struct v4l2_subdev_frame_size_enum *fse)
|
||
|
+{
|
||
|
+ const struct imx290 *imx290 = to_imx290(sd);
|
||
|
+ const struct imx290_mode *imx290_modes = imx290_modes_ptr(imx290);
|
||
|
+
|
||
|
+ if ((fse->code != imx290_formats[0].code) &&
|
||
|
+ (fse->code != imx290_formats[1].code))
|
||
|
+ return -EINVAL;
|
||
|
+
|
||
|
+ if (fse->index >= imx290_modes_num(imx290))
|
||
|
+ return -EINVAL;
|
||
|
+
|
||
|
+ fse->min_width = imx290_modes[fse->index].width;
|
||
|
+ fse->max_width = imx290_modes[fse->index].width;
|
||
|
+ fse->min_height = imx290_modes[fse->index].height;
|
||
|
+ fse->max_height = imx290_modes[fse->index].height;
|
||
|
+
|
||
|
+ return 0;
|
||
|
+}
|
||
|
+
|
||
|
static int imx290_get_fmt(struct v4l2_subdev *sd,
|
||
|
struct v4l2_subdev_pad_config *cfg,
|
||
|
struct v4l2_subdev_format *fmt)
|
||
|
@@ -873,6 +895,7 @@ static const struct v4l2_subdev_video_op
|
||
|
static const struct v4l2_subdev_pad_ops imx290_pad_ops = {
|
||
|
.init_cfg = imx290_entity_init_cfg,
|
||
|
.enum_mbus_code = imx290_enum_mbus_code,
|
||
|
+ .enum_frame_size = imx290_enum_frame_size,
|
||
|
.get_fmt = imx290_get_fmt,
|
||
|
.set_fmt = imx290_set_fmt,
|
||
|
};
|