* [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats
@ 2020-04-11 16:05 Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:05 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
changes from v3:
- In patch 5 in the doc and log message: s/plane formats/planar formats/
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 planar 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] 7+ messages in thread
* [PATCH v4 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
@ 2020-04-11 16:05 ` Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath Dafna Hirschfeld
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:05 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] 7+ messages in thread
* [PATCH v4 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
@ 2020-04-11 16:05 ` Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:05 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] 7+ messages in thread
* [PATCH v4 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath Dafna Hirschfeld
@ 2020-04-11 16:05 ` Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:05 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>
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);
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
` (2 preceding siblings ...)
2020-04-11 16:05 ` [PATCH v4 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
@ 2020-04-11 16:06 ` Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 5/6] media: staging: rkisp1: cap: support uv swapped planar formats Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 6/6] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
5 siblings, 0 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:06 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>
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);
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v4 5/6] media: staging: rkisp1: cap: support uv swapped planar formats
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
` (3 preceding siblings ...)
2020-04-11 16:06 ` [PATCH v4 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
@ 2020-04-11 16:06 ` Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 6/6] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
5 siblings, 0 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:06 UTC (permalink / raw)
To: linux-media
Cc: dafna.hirschfeld, helen.koike, ezequiel, hverkuil, kernel,
dafna3, sakari.ailus, linux-rockchip, mchehab, laurent.pinchart
Planar 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>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.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..4d182630927b 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 planar 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] 7+ messages in thread
* [PATCH v4 6/6] media: staging: rkisp1: cap: remove unsupported formats
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
` (4 preceding siblings ...)
2020-04-11 16:06 ` [PATCH v4 5/6] media: staging: rkisp1: cap: support uv swapped planar formats Dafna Hirschfeld
@ 2020-04-11 16:06 ` Dafna Hirschfeld
5 siblings, 0 replies; 7+ messages in thread
From: Dafna Hirschfeld @ 2020-04-11 16:06 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 4d182630927b..151822b6ca01 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] 7+ messages in thread
end of thread, other threads:[~2020-04-11 16:06 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-11 16:05 [PATCH v4 0/6] media: staging: rkisp1: cap: various fixes for capture formats Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 1/6] media: staging: rkisp1: cap: cleanup in mainpath config for uv swap format Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 2/6] media: staging: rkisp1: cap: fix value written to uv swap register in selfpath Dafna Hirschfeld
2020-04-11 16:05 ` [PATCH v4 3/6] media: staging: rkisp1: cap: change the logic for writing to uv swap register Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 4/6] media: staging: rkisp1: cap: support uv swap only for semiplanar formats Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 5/6] media: staging: rkisp1: cap: support uv swapped planar formats Dafna Hirschfeld
2020-04-11 16:06 ` [PATCH v4 6/6] media: staging: rkisp1: cap: remove unsupported formats Dafna Hirschfeld
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).