From: Paul Elder <paul.elder@ideasonboard.com>
To: linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org,
devicetree@vger.kernel.org
Cc: kieran.bingham@ideasonboard.com, tomi.valkeinen@ideasonboard.com,
umang.jain@ideasonboard.com, aford173@gmail.com,
Paul Elder <paul.elder@ideasonboard.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Alexander Stein <alexander.stein@ew.tq-group.com>,
Dafna Hirschfeld <dafna@fastmail.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
linux-arm-kernel@lists.infradead.org (moderated
list:ARM/Rockchip SoC support),
linux-kernel@vger.kernel.org (open list)
Subject: [PATCH v12 04/12] media: rkisp1: Support devices lacking dual crop
Date: Fri, 16 Feb 2024 18:54:50 +0900 [thread overview]
Message-ID: <20240216095458.2919694-5-paul.elder@ideasonboard.com> (raw)
In-Reply-To: <20240216095458.2919694-1-paul.elder@ideasonboard.com>
Some versions of the ISP supported by the rkisp1 driver, such as the ISP
in the i.MX8MP, lack the dual crop registers and don't support cropping
at the resizer input. They instead rely on cropping in the Image
Stabilization module, at the output of the ISP, to modify the resizer
input size and implement digital zoom.
Add a dual crop feature flag to distinguish the versions of the ISP that
support dual crop from those that don't, and make sure that the sink
crop is set to the sink format when dual crop is not supported.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Tested-by: Adam Ford <aford173@gmail.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
Changes in v12:
- Remove mention of moving resizer input crop to image stabilizer from
commit message
- Make sure the sink crop is set to the sink format when dual crop is
not supported
---
.../media/platform/rockchip/rkisp1/rkisp1-common.h | 2 ++
drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c | 6 ++++--
.../media/platform/rockchip/rkisp1/rkisp1-resizer.c | 11 +++++++----
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
index f7c251f79aa9..219d4a2547aa 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
@@ -112,6 +112,7 @@ enum rkisp1_isp_pad {
* @RKISP1_FEATURE_MIPI_CSI2: The ISP has an internal MIPI CSI-2 receiver
* @RKISP1_FEATURE_MAIN_STRIDE: The ISP supports configurable stride on the main path
* @RKISP1_FEATURE_SELF_PATH: The ISP has a self path
+ * @RKISP1_FEATURE_DUAL_CROP: The ISP has the dual crop block at the resizer input
*
* The ISP features are stored in a bitmask in &rkisp1_info.features and allow
* the driver to implement support for features present in some ISP versions
@@ -121,6 +122,7 @@ enum rkisp1_feature {
RKISP1_FEATURE_MIPI_CSI2 = BIT(0),
RKISP1_FEATURE_MAIN_STRIDE = BIT(1),
RKISP1_FEATURE_SELF_PATH = BIT(2),
+ RKISP1_FEATURE_DUAL_CROP = BIT(3),
};
#define rkisp1_has_feature(rkisp1, feature) \
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
index f48a21985b18..2e40c376cab5 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c
@@ -507,7 +507,8 @@ static const struct rkisp1_info px30_isp_info = {
.isr_size = ARRAY_SIZE(px30_isp_isrs),
.isp_ver = RKISP1_V12,
.features = RKISP1_FEATURE_MIPI_CSI2
- | RKISP1_FEATURE_SELF_PATH,
+ | RKISP1_FEATURE_SELF_PATH
+ | RKISP1_FEATURE_DUAL_CROP,
};
static const char * const rk3399_isp_clks[] = {
@@ -527,7 +528,8 @@ static const struct rkisp1_info rk3399_isp_info = {
.isr_size = ARRAY_SIZE(rk3399_isp_isrs),
.isp_ver = RKISP1_V10,
.features = RKISP1_FEATURE_MIPI_CSI2
- | RKISP1_FEATURE_SELF_PATH,
+ | RKISP1_FEATURE_SELF_PATH
+ | RKISP1_FEATURE_DUAL_CROP,
};
static const struct of_device_id rkisp1_of_match[] = {
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c
index dd77a31e6014..755d319b568e 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-resizer.c
@@ -447,8 +447,9 @@ static void rkisp1_rsz_set_sink_crop(struct rkisp1_resizer *rsz,
/* Not crop for MP bayer raw data */
mbus_info = rkisp1_mbus_info_get_by_code(sink_fmt->code);
- if (rsz->id == RKISP1_MAINPATH &&
- mbus_info->pixel_enc == V4L2_PIXEL_ENC_BAYER) {
+ if ((rsz->id == RKISP1_MAINPATH &&
+ mbus_info->pixel_enc == V4L2_PIXEL_ENC_BAYER) ||
+ !rkisp1_has_feature(rsz->rkisp1, DUAL_CROP)) {
sink_crop->left = 0;
sink_crop->top = 0;
sink_crop->width = sink_fmt->width;
@@ -635,7 +636,8 @@ static int rkisp1_rsz_s_stream(struct v4l2_subdev *sd, int enable)
struct v4l2_subdev_state *sd_state;
if (!enable) {
- rkisp1_dcrop_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
+ if (rkisp1_has_feature(rkisp1, DUAL_CROP))
+ rkisp1_dcrop_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
rkisp1_rsz_disable(rsz, RKISP1_SHADOW_REGS_ASYNC);
return 0;
}
@@ -646,7 +648,8 @@ static int rkisp1_rsz_s_stream(struct v4l2_subdev *sd, int enable)
sd_state = v4l2_subdev_lock_and_get_active_state(sd);
rkisp1_rsz_config(rsz, sd_state, when);
- rkisp1_dcrop_config(rsz, sd_state);
+ if (rkisp1_has_feature(rkisp1, DUAL_CROP))
+ rkisp1_dcrop_config(rsz, sd_state);
v4l2_subdev_unlock_state(sd_state);
--
2.39.2
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2024-02-16 9:55 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-16 9:54 [PATCH v12 00/12] media: rkisp1: Add support for i.MX8MP Paul Elder
2024-02-16 9:54 ` [PATCH v12 01/12] media: rkisp1: Add and use rkisp1_has_feature() macro Paul Elder
2024-02-16 9:54 ` [PATCH v12 02/12] media: rkisp1: Support setting memory stride for main path Paul Elder
2024-02-16 9:54 ` [PATCH v12 03/12] media: rkisp1: Support devices lacking self path Paul Elder
2024-02-16 9:54 ` Paul Elder [this message]
2024-02-18 17:45 ` [PATCH v12 04/12] media: rkisp1: Support devices lacking dual crop Laurent Pinchart
2024-02-16 9:54 ` [PATCH v12 05/12] dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible Paul Elder
2024-02-16 9:54 ` [PATCH v12 06/12] media: rkisp1: Add version enum for i.MX8MP ISP Paul Elder
2024-02-18 18:27 ` Laurent Pinchart
2024-02-18 18:35 ` [PATCH v12.1 " Laurent Pinchart
2024-02-16 9:54 ` [PATCH v12 07/12] media: rkisp1: Configure gasket on i.MX8MP Paul Elder
2024-02-16 9:54 ` [PATCH v12 08/12] media: rkisp1: Support i.MX8MP's 34-bit DMA Paul Elder
2024-02-16 10:31 ` Alexander Stein
2024-02-18 18:53 ` Laurent Pinchart
2024-02-16 9:54 ` [PATCH v12 09/12] media: rkisp1: Add YC swap capability Paul Elder
2024-02-16 9:54 ` [PATCH v12 10/12] media: rkisp1: Add UYVY as an output format Paul Elder
2024-02-16 9:54 ` [PATCH v12 11/12] media: rkisp1: Fix endianness on raw streams on i.MX8MP Paul Elder
2024-02-16 10:28 ` Alexander Stein
2024-02-18 20:01 ` Laurent Pinchart
2024-02-16 9:54 ` [PATCH v12 12/12] media: rkisp1: Add match data for i.MX8MP ISP Paul Elder
2024-02-18 20:03 ` Laurent Pinchart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240216095458.2919694-5-paul.elder@ideasonboard.com \
--to=paul.elder@ideasonboard.com \
--cc=aford173@gmail.com \
--cc=alexander.stein@ew.tq-group.com \
--cc=dafna@fastmail.com \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mchehab@kernel.org \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=umang.jain@ideasonboard.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox