* [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats
@ 2020-04-08 11:48 Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
` (5 more replies)
0 siblings, 6 replies; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
This patchset fixes various issues related to
the supported formats in the rkisp1 capture.
This patchset is rebased on top of v3 of the patchset:
"rkisp1: use enum v4l2_pixel_encoding instead of rkisp1_fmt_pix_type"
Patches summary:
patches 1,2 - fixes a wrong assignments to the register that swaps the
'u', 'v' planes in YUV semiplanar formats.
patch 3 - writes to the uv swap with "off" if swapping is not needed.
patch 4 - sets the uv swap register only if the format is semiplanar.
patch 5 - adds support to planar YUV formats with swapped u,v planes
by swapping the addresses of the planes
patch 6 - removes some packed YUV formats that are not supported
by the driver.
changes from v1:
- split the first patch from v1 into two separate patches, the first is a cleanup patch
the second fixes a bug.
changes from v2:
- rebasing the patchset on top of v3 of
"rkisp1: use enum v4l2_pixel_encoding instead of rkisp1_fmt_pix_type"
- patches 1,2: replace "reg = reg | .." with "reg |= .."
- adding patch 3 to change the logic of wrrting to uv swap reg
- patches 4,5: checking if format is (semi)planar using the info pointer and not using the write_format value
- patch 4: using the "swap" define to swap the cb, cr addresses
Dafna Hirschfeld (6):
media: staging: rkisp1: cap: cleanup in mainpath config for uv swap
format
media: staging: rkisp1: cap: fix value written to uv swap register in
selfpath
media: staging: rkisp1: cap: change the logic for writing to uv swap
register
media: staging: rkisp1: cap: support uv swap only for semiplanar
formats
media: staging: rkisp1: cap: support uv swapped plane formats
media: staging: rkisp1: cap: remove unsupported formats
drivers/staging/media/rkisp1/rkisp1-capture.c | 50 +++++++++----------
1 file changed, 24 insertions(+), 26 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
@ 2020-04-08 11:48 ` Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath Dafna Hirschfeld
` (4 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
The value RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP equals BIT(0),
Therefore when writing it to the register there is no need to mask
it first with ~BIT(0).
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/staging/media/rkisp1/rkisp1-capture.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
index fbf62399fe3d..8ce1d25d4c6f 100644
--- a/drivers/staging/media/rkisp1/rkisp1-capture.c
+++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
@@ -386,8 +386,7 @@ static void rkisp1_mp_config(struct rkisp1_capture *cap)
if (cap->pix.cfg->uv_swap) {
reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
- reg = (reg & ~BIT(0)) |
- RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
+ reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
}
--
2.20.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
@ 2020-04-08 11:48 ` Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
` (3 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
The value RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP should be
set to the register instead of masking with ~BIT(1)
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
---
drivers/staging/media/rkisp1/rkisp1-capture.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
index 8ce1d25d4c6f..5d0e489505f0 100644
--- a/drivers/staging/media/rkisp1/rkisp1-capture.c
+++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
@@ -423,8 +423,8 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
if (cap->pix.cfg->uv_swap) {
u32 reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
- rkisp1_write(rkisp1, reg & ~BIT(1),
- RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
+ rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
}
rkisp1_mi_config_ctrl(cap);
--
2.20.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath Dafna Hirschfeld
@ 2020-04-08 11:48 ` Dafna Hirschfeld
2020-04-08 12:10 ` Laurent Pinchart
2020-04-08 11:48 ` [PATCH v3 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
` (2 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
The register RKISP1_CIF_MI_XTD_FORMAT_CTRL is currently written
with "on" only if the u,v streams need to be swapped. This patch
also write to it with "off" if they don't need to be swapped.
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
---
drivers/staging/media/rkisp1/rkisp1-capture.c | 21 ++++++++++---------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
index 5d0e489505f0..4830083c33fd 100644
--- a/drivers/staging/media/rkisp1/rkisp1-capture.c
+++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
@@ -383,12 +383,12 @@ static void rkisp1_mp_config(struct rkisp1_capture *cap)
cap->config->mi.cr_size_init);
rkisp1_irq_frame_end_enable(cap);
- if (cap->pix.cfg->uv_swap) {
- reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
-
+ reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ if (cap->pix.cfg->uv_swap)
reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
- rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
- }
+ else
+ reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
+ rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
rkisp1_mi_config_ctrl(cap);
@@ -406,7 +406,7 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
{
const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt;
struct rkisp1_device *rkisp1 = cap->rkisp1;
- u32 mi_ctrl;
+ u32 mi_ctrl, reg;
rkisp1_write(rkisp1, rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_Y),
cap->config->mi.y_size_init);
@@ -420,12 +420,13 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
rkisp1_write(rkisp1, cap->sp_y_stride, RKISP1_CIF_MI_SP_Y_LLENGTH);
rkisp1_irq_frame_end_enable(cap);
- if (cap->pix.cfg->uv_swap) {
- u32 reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ if (cap->pix.cfg->uv_swap)
reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
- rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
- }
+ else
+ reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
+ rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
rkisp1_mi_config_ctrl(cap);
--
2.20.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
` (2 preceding siblings ...)
2020-04-08 11:48 ` [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
@ 2020-04-08 11:48 ` Dafna Hirschfeld
2020-04-08 12:10 ` Laurent Pinchart
2020-04-08 11:48 ` [PATCH v3 5/6] media: staging: rkisp1: cap: support uv swapped plane formats Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 6/6] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
5 siblings, 1 reply; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
The register RKISP1_CIF_MI_XTD_FORMAT_CTRL is relevant only
for semiplanar formats, therefore the uv swap can be supported
through this register only for semiplanar formats.
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
---
drivers/staging/media/rkisp1/rkisp1-capture.c | 31 ++++++++++++-------
1 file changed, 19 insertions(+), 12 deletions(-)
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
index 4830083c33fd..257799a7d865 100644
--- a/drivers/staging/media/rkisp1/rkisp1-capture.c
+++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
@@ -383,12 +383,16 @@ static void rkisp1_mp_config(struct rkisp1_capture *cap)
cap->config->mi.cr_size_init);
rkisp1_irq_frame_end_enable(cap);
- reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
- if (cap->pix.cfg->uv_swap)
- reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
- else
- reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
- rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+
+ /* set uv swapping for semiplanar formats */
+ if (cap->pix.info->comp_planes == 2) {
+ reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ if (cap->pix.cfg->uv_swap)
+ reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
+ else
+ reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
+ rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ }
rkisp1_mi_config_ctrl(cap);
@@ -421,12 +425,15 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
rkisp1_irq_frame_end_enable(cap);
- reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
- if (cap->pix.cfg->uv_swap)
- reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
- else
- reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
- rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ /* set uv swapping for semiplanar formats */
+ if (cap->pix.info->comp_planes == 2) {
+ reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ if (cap->pix.cfg->uv_swap)
+ reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
+ else
+ reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
+ rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
+ }
rkisp1_mi_config_ctrl(cap);
--
2.20.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 5/6] media: staging: rkisp1: cap: support uv swapped plane formats
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
` (3 preceding siblings ...)
2020-04-08 11:48 ` [PATCH v3 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
@ 2020-04-08 11:48 ` Dafna Hirschfeld
2020-04-08 12:11 ` Laurent Pinchart
2020-04-08 11:48 ` [PATCH v3 6/6] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
5 siblings, 1 reply; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
Plane formats with the u and v planes swapped can be
supported by swapping the address of the cb and cr buffers.
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
---
drivers/staging/media/rkisp1/rkisp1-capture.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
index 257799a7d865..9f0a3c407286 100644
--- a/drivers/staging/media/rkisp1/rkisp1-capture.c
+++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
@@ -743,6 +743,14 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_CB);
}
+ /*
+ * uv swap can be supported for plane formats by switching
+ * the address of cb and cr
+ */
+ if (cap->pix.info->comp_planes == 3 && cap->pix.cfg->uv_swap)
+ swap(ispbuf->buff_addr[RKISP1_PLANE_CR],
+ ispbuf->buff_addr[RKISP1_PLANE_CB]);
+
spin_lock_irqsave(&cap->buf.lock, flags);
/*
--
2.20.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 6/6] media: staging: rkisp1: cap: remove unsupported formats
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
` (4 preceding siblings ...)
2020-04-08 11:48 ` [PATCH v3 5/6] media: staging: rkisp1: cap: support uv swapped plane formats Dafna Hirschfeld
@ 2020-04-08 11:48 ` Dafna Hirschfeld
5 siblings, 0 replies; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-08 11:48 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
For Ycbcr packed formats only YUYV can be supported by
the driver. This patch removes the other formats.
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
drivers/staging/media/rkisp1/rkisp1-capture.c | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
index 9f0a3c407286..06ad61d41ca9 100644
--- a/drivers/staging/media/rkisp1/rkisp1-capture.c
+++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
@@ -88,13 +88,6 @@ static const struct rkisp1_capture_fmt_cfg rkisp1_mp_fmts[] = {
.fourcc = V4L2_PIX_FMT_YUYV,
.uv_swap = 0,
.write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
- }, {
- .fourcc = V4L2_PIX_FMT_YVYU,
- .uv_swap = 1,
- .write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
- }, {
- .fourcc = V4L2_PIX_FMT_VYUY,
- .write_format = RKISP1_MI_CTRL_MP_WRITE_YUVINT,
}, {
.fourcc = V4L2_PIX_FMT_YUV422P,
.uv_swap = 0,
@@ -197,16 +190,6 @@ static const struct rkisp1_capture_fmt_cfg rkisp1_sp_fmts[] = {
.uv_swap = 0,
.write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
.output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
- }, {
- .fourcc = V4L2_PIX_FMT_YVYU,
- .uv_swap = 1,
- .write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
- .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
- }, {
- .fourcc = V4L2_PIX_FMT_VYUY,
- .uv_swap = 1,
- .write_format = RKISP1_MI_CTRL_SP_WRITE_INT,
- .output_format = RKISP1_MI_CTRL_SP_OUTPUT_YUV422,
}, {
.fourcc = V4L2_PIX_FMT_YUV422P,
.uv_swap = 0,
--
2.20.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register
2020-04-08 11:48 ` [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
@ 2020-04-08 12:10 ` Laurent Pinchart
2020-04-11 12:24 ` Dafna Hirschfeld
0 siblings, 1 reply; 11+ messages in thread
From: Laurent Pinchart @ 2020-04-08 12:10 UTC (permalink / raw)
To: Dafna Hirschfeld
Cc: linux-media, helen.koike, ezequiel, hverkuil, kernel, dafna3,
sakari.ailus, linux-rockchip, mchehab
Hi Dafna,
Thank you for the patch.
On Wed, Apr 08, 2020 at 01:48:19PM +0200, Dafna Hirschfeld wrote:
> The register RKISP1_CIF_MI_XTD_FORMAT_CTRL is currently written
> with "on" only if the u,v streams need to be swapped. This patch
> also write to it with "off" if they don't need to be swapped.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
I think you can squash this with 1/6 and 2/6.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/staging/media/rkisp1/rkisp1-capture.c | 21 ++++++++++---------
> 1 file changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
> index 5d0e489505f0..4830083c33fd 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-capture.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
> @@ -383,12 +383,12 @@ static void rkisp1_mp_config(struct rkisp1_capture *cap)
> cap->config->mi.cr_size_init);
>
> rkisp1_irq_frame_end_enable(cap);
> - if (cap->pix.cfg->uv_swap) {
> - reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> -
> + reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + if (cap->pix.cfg->uv_swap)
> reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
> - rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> - }
> + else
> + reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
> + rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>
> rkisp1_mi_config_ctrl(cap);
>
> @@ -406,7 +406,7 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
> {
> const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt;
> struct rkisp1_device *rkisp1 = cap->rkisp1;
> - u32 mi_ctrl;
> + u32 mi_ctrl, reg;
>
> rkisp1_write(rkisp1, rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_Y),
> cap->config->mi.y_size_init);
> @@ -420,12 +420,13 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
> rkisp1_write(rkisp1, cap->sp_y_stride, RKISP1_CIF_MI_SP_Y_LLENGTH);
>
> rkisp1_irq_frame_end_enable(cap);
> - if (cap->pix.cfg->uv_swap) {
> - u32 reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>
> + reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + if (cap->pix.cfg->uv_swap)
> reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
> - rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> - }
> + else
> + reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
> + rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>
> rkisp1_mi_config_ctrl(cap);
>
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats
2020-04-08 11:48 ` [PATCH v3 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
@ 2020-04-08 12:10 ` Laurent Pinchart
0 siblings, 0 replies; 11+ messages in thread
From: Laurent Pinchart @ 2020-04-08 12:10 UTC (permalink / raw)
To: Dafna Hirschfeld
Cc: linux-media, helen.koike, ezequiel, hverkuil, kernel, dafna3,
sakari.ailus, linux-rockchip, mchehab
Hi Dafna,
Thank you for the patch.
On Wed, Apr 08, 2020 at 01:48:20PM +0200, Dafna Hirschfeld wrote:
> The register RKISP1_CIF_MI_XTD_FORMAT_CTRL is relevant only
> for semiplanar formats, therefore the uv swap can be supported
> through this register only for semiplanar formats.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> drivers/staging/media/rkisp1/rkisp1-capture.c | 31 ++++++++++++-------
> 1 file changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
> index 4830083c33fd..257799a7d865 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-capture.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
> @@ -383,12 +383,16 @@ static void rkisp1_mp_config(struct rkisp1_capture *cap)
> cap->config->mi.cr_size_init);
>
> rkisp1_irq_frame_end_enable(cap);
> - reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> - if (cap->pix.cfg->uv_swap)
> - reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
> - else
> - reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
> - rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> +
> + /* set uv swapping for semiplanar formats */
> + if (cap->pix.info->comp_planes == 2) {
> + reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + if (cap->pix.cfg->uv_swap)
> + reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
> + else
> + reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
> + rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + }
>
> rkisp1_mi_config_ctrl(cap);
>
> @@ -421,12 +425,15 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
>
> rkisp1_irq_frame_end_enable(cap);
>
> - reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> - if (cap->pix.cfg->uv_swap)
> - reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
> - else
> - reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
> - rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + /* set uv swapping for semiplanar formats */
> + if (cap->pix.info->comp_planes == 2) {
> + reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + if (cap->pix.cfg->uv_swap)
> + reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
> + else
> + reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
> + rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
> + }
>
> rkisp1_mi_config_ctrl(cap);
>
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 5/6] media: staging: rkisp1: cap: support uv swapped plane formats
2020-04-08 11:48 ` [PATCH v3 5/6] media: staging: rkisp1: cap: support uv swapped plane formats Dafna Hirschfeld
@ 2020-04-08 12:11 ` Laurent Pinchart
0 siblings, 0 replies; 11+ messages in thread
From: Laurent Pinchart @ 2020-04-08 12:11 UTC (permalink / raw)
To: Dafna Hirschfeld
Cc: linux-media, helen.koike, ezequiel, hverkuil, kernel, dafna3,
sakari.ailus, linux-rockchip, mchehab
On Wed, Apr 08, 2020 at 01:48:21PM +0200, Dafna Hirschfeld wrote:
> Plane formats with the u and v planes swapped can be
s/Plane/Planar/
> supported by swapping the address of the cb and cr buffers.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
> ---
> drivers/staging/media/rkisp1/rkisp1-capture.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
> index 257799a7d865..9f0a3c407286 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-capture.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
> @@ -743,6 +743,14 @@ static void rkisp1_vb2_buf_queue(struct vb2_buffer *vb)
> rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_CB);
> }
>
> + /*
> + * uv swap can be supported for plane formats by switching
s/plane/planar/
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> + * the address of cb and cr
> + */
> + if (cap->pix.info->comp_planes == 3 && cap->pix.cfg->uv_swap)
> + swap(ispbuf->buff_addr[RKISP1_PLANE_CR],
> + ispbuf->buff_addr[RKISP1_PLANE_CB]);
> +
> spin_lock_irqsave(&cap->buf.lock, flags);
>
> /*
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register
2020-04-08 12:10 ` Laurent Pinchart
@ 2020-04-11 12:24 ` Dafna Hirschfeld
0 siblings, 0 replies; 11+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 12:24 UTC (permalink / raw)
To: Laurent Pinchart
Cc: linux-media, helen.koike, ezequiel, hverkuil, kernel, dafna3,
sakari.ailus, linux-rockchip, mchehab
On 4/8/20 2:10 PM, Laurent Pinchart wrote:
> Hi Dafna,
>
> Thank you for the patch.
>
> On Wed, Apr 08, 2020 at 01:48:19PM +0200, Dafna Hirschfeld wrote:
>> The register RKISP1_CIF_MI_XTD_FORMAT_CTRL is currently written
>> with "on" only if the u,v streams need to be swapped. This patch
>> also write to it with "off" if they don't need to be swapped.
>>
>> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
>
> I think you can squash this with 1/6 and 2/6.
Hi, as Helen already commented, since it is a combination of
cleanups and bug fixes, I think it is better to keep them separated.
Thanks,
Dafna
>
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
>> ---
>> drivers/staging/media/rkisp1/rkisp1-capture.c | 21 ++++++++++---------
>> 1 file changed, 11 insertions(+), 10 deletions(-)
>>
>> diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c
>> index 5d0e489505f0..4830083c33fd 100644
>> --- a/drivers/staging/media/rkisp1/rkisp1-capture.c
>> +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c
>> @@ -383,12 +383,12 @@ static void rkisp1_mp_config(struct rkisp1_capture *cap)
>> cap->config->mi.cr_size_init);
>>
>> rkisp1_irq_frame_end_enable(cap);
>> - if (cap->pix.cfg->uv_swap) {
>> - reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>> -
>> + reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>> + if (cap->pix.cfg->uv_swap)
>> reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
>> - rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>> - }
>> + else
>> + reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_MP_CB_CR_SWAP;
>> + rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>>
>> rkisp1_mi_config_ctrl(cap);
>>
>> @@ -406,7 +406,7 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
>> {
>> const struct v4l2_pix_format_mplane *pixm = &cap->pix.fmt;
>> struct rkisp1_device *rkisp1 = cap->rkisp1;
>> - u32 mi_ctrl;
>> + u32 mi_ctrl, reg;
>>
>> rkisp1_write(rkisp1, rkisp1_pixfmt_comp_size(pixm, RKISP1_PLANE_Y),
>> cap->config->mi.y_size_init);
>> @@ -420,12 +420,13 @@ static void rkisp1_sp_config(struct rkisp1_capture *cap)
>> rkisp1_write(rkisp1, cap->sp_y_stride, RKISP1_CIF_MI_SP_Y_LLENGTH);
>>
>> rkisp1_irq_frame_end_enable(cap);
>> - if (cap->pix.cfg->uv_swap) {
>> - u32 reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>>
>> + reg = rkisp1_read(rkisp1, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>> + if (cap->pix.cfg->uv_swap)
>> reg |= RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
>> - rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>> - }
>> + else
>> + reg &= ~RKISP1_CIF_MI_XTD_FMT_CTRL_SP_CB_CR_SWAP;
>> + rkisp1_write(rkisp1, reg, RKISP1_CIF_MI_XTD_FORMAT_CTRL);
>>
>> rkisp1_mi_config_ctrl(cap);
>>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-04-11 12:24 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-08 11:48 [PATCH v3 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
2020-04-08 12:10 ` Laurent Pinchart
2020-04-11 12:24 ` Dafna Hirschfeld
2020-04-08 11:48 ` [PATCH v3 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
2020-04-08 12:10 ` Laurent Pinchart
2020-04-08 11:48 ` [PATCH v3 5/6] media: staging: rkisp1: cap: support uv swapped plane formats Dafna Hirschfeld
2020-04-08 12:11 ` Laurent Pinchart
2020-04-08 11:48 ` [PATCH v3 6/6] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.