From: Helen Koike <helen.koike@collabora.com>
To: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>,
linux-media@vger.kernel.org
Cc: ezequiel@collabora.com, hverkuil@xs4all.nl, kernel@collabora.com,
dafna3@gmail.com, sakari.ailus@linux.intel.com,
linux-rockchip@lists.infradead.org, mchehab@kernel.org,
laurent.pinchart@ideasonboard.com
Subject: Re: [PATCH v2 1/2] media: staging: rkisp1: remove mbus field from rkisp1_sensor_async
Date: Tue, 17 Mar 2020 09:52:32 -0300 [thread overview]
Message-ID: <19a93392-f646-6bfc-d918-16c2a4c7e7e4@collabora.com> (raw)
In-Reply-To: <20200312154604.24996-2-dafna.hirschfeld@collabora.com>
Hi Dafna,
Thanks for the patch, just a small comment below.
On 3/12/20 12:46 PM, Dafna Hirschfeld wrote:
> 'struct v4l2_mbus_config' is a legacy struct that should not be used
> in new drivers. So replace it with the fields:
>
> enum v4l2_mbus_type mbus_type;
> unsigned int parallel_bus_flags;
>
> The field 'parallel_bus_flags' is used only for buses of types
> V4L2_MBUS_BT656, V4L2_MBUS_PARALLEL which are not yet supported
> so they are set to 0.
>
> Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
> ---
> drivers/staging/media/rkisp1/rkisp1-common.h | 3 +-
> drivers/staging/media/rkisp1/rkisp1-dev.c | 22 ++-------
> drivers/staging/media/rkisp1/rkisp1-isp.c | 52 +++++++-------------
> 3 files changed, 24 insertions(+), 53 deletions(-)
>
> diff --git a/drivers/staging/media/rkisp1/rkisp1-common.h b/drivers/staging/media/rkisp1/rkisp1-common.h
> index b291cc60de8e..f5ee72dc19d3 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-common.h
> +++ b/drivers/staging/media/rkisp1/rkisp1-common.h
> @@ -80,8 +80,9 @@ enum rkisp1_isp_pad {
> */
> struct rkisp1_sensor_async {
> struct v4l2_async_subdev asd;
> - struct v4l2_mbus_config mbus;
> unsigned int lanes;
> + enum v4l2_mbus_type mbus_type;
> + unsigned int parallel_bus_flags;
> struct v4l2_subdev *sd;
> struct v4l2_ctrl *pixel_rate_ctrl;
> struct phy *dphy;
> diff --git a/drivers/staging/media/rkisp1/rkisp1-dev.c b/drivers/staging/media/rkisp1/rkisp1-dev.c
> index b1b3c058e957..d2186856bb24 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-dev.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-dev.c
> @@ -250,26 +250,14 @@ static int rkisp1_fwnode_parse(struct device *dev,
> return -EINVAL;
> }
>
> - s_asd->mbus.type = vep->bus_type;
> - s_asd->mbus.flags = vep->bus.mipi_csi2.flags;
> + s_asd->mbus_type = vep->bus_type;
> s_asd->lanes = vep->bus.mipi_csi2.num_data_lanes;
>
> - switch (vep->bus.mipi_csi2.num_data_lanes) {
> - case 1:
> - s_asd->mbus.flags |= V4L2_MBUS_CSI2_1_LANE;
> - break;
> - case 2:
> - s_asd->mbus.flags |= V4L2_MBUS_CSI2_2_LANE;
> - break;
> - case 3:
> - s_asd->mbus.flags |= V4L2_MBUS_CSI2_3_LANE;
> - break;
> - case 4:
> - s_asd->mbus.flags |= V4L2_MBUS_CSI2_4_LANE;
> - break;
> - default:
> + /* Parallel bus is currently not supported */
> + s_asd->parallel_bus_flags = 0;
Why not just:
s_asd->parallel_bus_flags = vep->bus.mipi_csi2.flags
So when it gets supported, we don't need to change this, and you also don't
change the logic here, since this patch was supposed to just replace
struct v4l2_mbus_config by other variables.
Make sense?
> +
> + if (s_asd->lanes < 1 || s_asd->lanes > 4)
> return -EINVAL;
> - }
>
> return 0;
> }
> diff --git a/drivers/staging/media/rkisp1/rkisp1-isp.c b/drivers/staging/media/rkisp1/rkisp1-isp.c
> index fa53f05e37d8..bd17c3c498af 100644
> --- a/drivers/staging/media/rkisp1/rkisp1-isp.c
> +++ b/drivers/staging/media/rkisp1/rkisp1-isp.c
> @@ -291,7 +291,7 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
> if (sink_fmt->fmt_type == RKISP1_FMT_BAYER) {
> acq_mult = 1;
> if (src_fmt->fmt_type == RKISP1_FMT_BAYER) {
> - if (sensor->mbus.type == V4L2_MBUS_BT656)
> + if (sensor->mbus_type == V4L2_MBUS_BT656)
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_RAW_PICT_ITU656;
> else
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_RAW_PICT;
> @@ -299,17 +299,17 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
> rkisp1_write(rkisp1, RKISP1_CIF_ISP_DEMOSAIC_TH(0xc),
> RKISP1_CIF_ISP_DEMOSAIC);
>
> - if (sensor->mbus.type == V4L2_MBUS_BT656)
> + if (sensor->mbus_type == V4L2_MBUS_BT656)
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_BAYER_ITU656;
> else
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_BAYER_ITU601;
> }
> } else if (sink_fmt->fmt_type == RKISP1_FMT_YUV) {
> acq_mult = 2;
> - if (sensor->mbus.type == V4L2_MBUS_CSI2_DPHY) {
> + if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU601;
> } else {
> - if (sensor->mbus.type == V4L2_MBUS_BT656)
> + if (sensor->mbus_type == V4L2_MBUS_BT656)
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU656;
> else
> isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU601;
> @@ -319,17 +319,17 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
> }
>
> /* Set up input acquisition properties */
> - if (sensor->mbus.type == V4L2_MBUS_BT656 ||
> - sensor->mbus.type == V4L2_MBUS_PARALLEL) {
> - if (sensor->mbus.flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
> + if (sensor->mbus_type == V4L2_MBUS_BT656 ||
> + sensor->mbus_type == V4L2_MBUS_PARALLEL) {
> + if (sensor->parallel_bus_flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
> signal = RKISP1_CIF_ISP_ACQ_PROP_POS_EDGE;
You check both bus types, I understand that V4L2_MBUS_BT656 is also a parallel interface,
but I think it would be less confusing to name it just bus_flags, what do you think?
Regards,
Helen
> }
>
> - if (sensor->mbus.type == V4L2_MBUS_PARALLEL) {
> - if (sensor->mbus.flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
> + if (sensor->mbus_type == V4L2_MBUS_PARALLEL) {
> + if (sensor->parallel_bus_flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
> signal |= RKISP1_CIF_ISP_ACQ_PROP_VSYNC_LOW;
>
> - if (sensor->mbus.flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
> + if (sensor->parallel_bus_flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
> signal |= RKISP1_CIF_ISP_ACQ_PROP_HSYNC_LOW;
> }
>
> @@ -401,29 +401,11 @@ static int rkisp1_config_dvp(struct rkisp1_device *rkisp1)
> static int rkisp1_config_mipi(struct rkisp1_device *rkisp1)
> {
> const struct rkisp1_isp_mbus_info *sink_fmt = rkisp1->isp.sink_fmt;
> - unsigned int lanes;
> + unsigned int lanes = rkisp1->active_sensor->lanes;
> u32 mipi_ctrl;
>
> - /*
> - * rkisp1->active_sensor->mbus is set in isp or d-phy notifier_bound
> - * function
> - */
> - switch (rkisp1->active_sensor->mbus.flags & V4L2_MBUS_CSI2_LANES) {
> - case V4L2_MBUS_CSI2_4_LANE:
> - lanes = 4;
> - break;
> - case V4L2_MBUS_CSI2_3_LANE:
> - lanes = 3;
> - break;
> - case V4L2_MBUS_CSI2_2_LANE:
> - lanes = 2;
> - break;
> - case V4L2_MBUS_CSI2_1_LANE:
> - lanes = 1;
> - break;
> - default:
> + if (lanes < 1 || lanes > 4)
> return -EINVAL;
> - }
>
> mipi_ctrl = RKISP1_CIF_MIPI_CTRL_NUM_LANES(lanes - 1) |
> RKISP1_CIF_MIPI_CTRL_SHUTDOWNLANES(0xf) |
> @@ -470,11 +452,11 @@ static int rkisp1_config_path(struct rkisp1_device *rkisp1)
> u32 dpcl = rkisp1_read(rkisp1, RKISP1_CIF_VI_DPCL);
> int ret = 0;
>
> - if (sensor->mbus.type == V4L2_MBUS_BT656 ||
> - sensor->mbus.type == V4L2_MBUS_PARALLEL) {
> + if (sensor->mbus_type == V4L2_MBUS_BT656 ||
> + sensor->mbus_type == V4L2_MBUS_PARALLEL) {
> ret = rkisp1_config_dvp(rkisp1);
> dpcl |= RKISP1_CIF_VI_DPCL_IF_SEL_PARALLEL;
> - } else if (sensor->mbus.type == V4L2_MBUS_CSI2_DPHY) {
> + } else if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
> ret = rkisp1_config_mipi(rkisp1);
> dpcl |= RKISP1_CIF_VI_DPCL_IF_SEL_MIPI;
> }
> @@ -561,7 +543,7 @@ static void rkisp1_isp_start(struct rkisp1_device *rkisp1)
> rkisp1_config_clk(rkisp1);
>
> /* Activate MIPI */
> - if (sensor->mbus.type == V4L2_MBUS_CSI2_DPHY) {
> + if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
> val = rkisp1_read(rkisp1, RKISP1_CIF_MIPI_CTRL);
> rkisp1_write(rkisp1, val | RKISP1_CIF_MIPI_CTRL_OUTPUT_ENA,
> RKISP1_CIF_MIPI_CTRL);
> @@ -956,7 +938,7 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable)
> rkisp1->active_sensor = container_of(sensor_sd->asd,
> struct rkisp1_sensor_async, asd);
>
> - if (rkisp1->active_sensor->mbus.type != V4L2_MBUS_CSI2_DPHY)
> + if (rkisp1->active_sensor->mbus_type != V4L2_MBUS_CSI2_DPHY)
> return -EINVAL;
>
> atomic_set(&rkisp1->isp.frame_sequence, -1);
>
next prev parent reply other threads:[~2020-03-17 12:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-12 15:46 [PATCH v2 0/2] fix fwnode API usage and remove v4l2_mbus_config field Dafna Hirschfeld
2020-03-12 15:46 ` [PATCH v2 1/2] media: staging: rkisp1: remove mbus field from rkisp1_sensor_async Dafna Hirschfeld
2020-03-17 12:52 ` Helen Koike [this message]
2020-03-12 15:46 ` [PATCH v2 2/2] media: staging: rkisp1: replace the call to v4l2_async_notifier_parse_fwnode_endpoints_by_port Dafna Hirschfeld
2020-03-13 9:18 ` Sakari Ailus
2020-03-13 14:06 ` Helen Koike
2020-03-13 15:23 ` Sakari Ailus
2020-03-17 13:12 ` Helen Koike
2020-03-17 13:20 ` Sakari Ailus
2020-03-17 18:12 ` Dafna Hirschfeld
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=19a93392-f646-6bfc-d918-16c2a4c7e7e4@collabora.com \
--to=helen.koike@collabora.com \
--cc=dafna.hirschfeld@collabora.com \
--cc=dafna3@gmail.com \
--cc=ezequiel@collabora.com \
--cc=hverkuil@xs4all.nl \
--cc=kernel@collabora.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mchehab@kernel.org \
--cc=sakari.ailus@linux.intel.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