From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH 06/11] media: adv748x-csi2: Implement enum_mbus_codes
Date: Mon, 6 May 2024 13:30:59 +0200 [thread overview]
Message-ID: <20240506113059.GC720810@ragnatech.se> (raw)
In-Reply-To: <hhds4sdcxwzvftuh6fyv676jhargpsmn7rddcny7itdx4b5xgd@bzb46csgi32j>
On 2024-05-06 10:42:32 +0200, Jacopo Mondi wrote:
> Hi Laurent
>
> On Mon, May 06, 2024 at 11:38:41AM GMT, Laurent Pinchart wrote:
> > On Mon, May 06, 2024 at 10:10:00AM +0200, Jacopo Mondi wrote:
> > > On Mon, May 06, 2024 at 12:07:40AM GMT, Laurent Pinchart wrote:
> > > > On Fri, May 03, 2024 at 05:51:21PM +0200, Jacopo Mondi wrote:
> > > > > Define a list of supported mbus codes for the TXA and TXB CSI-2
> > > > > transmitters and implement the enum_mbus_code operation.
> > > >
> > > > The commit message should explain why, not just what. Explaining why the
> > >
> > > Should I explain why the driver has to implement enum_mbus_codes ?
> >
> > You can just note it's mandatory to implement ?
> >
> > > > formats for TXA and TXB differ would also be useful.
> > >
> > > ok
> > >
> > > > > Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> > > > > ---
> > > > > drivers/media/i2c/adv748x/adv748x-csi2.c | 35 ++++++++++++++++++++++++
> > > > > 1 file changed, 35 insertions(+)
> > > > >
> > > > > diff --git a/drivers/media/i2c/adv748x/adv748x-csi2.c b/drivers/media/i2c/adv748x/adv748x-csi2.c
> > > > > index 9da7f6742a2b..219417b319a6 100644
> > > > > --- a/drivers/media/i2c/adv748x/adv748x-csi2.c
> > > > > +++ b/drivers/media/i2c/adv748x/adv748x-csi2.c
> > > > > @@ -21,6 +21,18 @@ static const struct v4l2_mbus_framefmt adv748x_csi2_default_fmt = {
> > > > > .field = V4L2_FIELD_NONE,
> > > > > };
> > > > >
> > > > > +static const unsigned int adv748x_csi2_txa_fmts[] = {
> > > > > + MEDIA_BUS_FMT_YUYV8_1X16,
> > > > > + MEDIA_BUS_FMT_YUYV10_1X20,
> > > >
> > > > CSI-2 uses UYVY, not YUYV.
> > >
> > > As this a recurring comment in the series (rightfully, I'm not
> > > questioning that) how does it work with existing test scripts assuming
> > > YUYV ? The same question could be asked about the issue Niklas had: is
> > > changing what pad an operation is allowed to be called on legit ?
> > >
> > > My answer would be yes, otherwise we'll be forever stuck, but I would
> > > like to check, especially with Niklas which maintains vin-tests.
> >
> > As usual, changes of behaviour are only regressions if someone complains
> > about them. We can keep backward-compatibility, but it would then be
> > nice to also support the right media bus codes, and to add a comment
> > that clearly indicates which ones are for backward-compatibility.
> >
> > That being said, given that userspace should use UYVY, and given that
> > the driver currently accepts UYVY, it should at least be enumerated. I
> > would skip enumeration of the media bus codes that we keep for
> > backward-compatibility, even if we accept them at runtime.
I'm OK just dropping them and update the use-cases, better get this
right for the future. If we find use-cases we can't update, keeping
accepting the formats but not enumerating them seems like a good option.
> >
>
> What about the change to the pad on which s_fmt is allowed on R-Car
> CSI-2 ?
>
> > > > > + MEDIA_BUS_FMT_RGB565_1X16,
> > > > > + MEDIA_BUS_FMT_RGB666_1X18,
> > > > > + MEDIA_BUS_FMT_RGB888_1X24,
> > > > > +};
> > > > > +
> > > > > +static const unsigned int adv748x_csi2_txb_fmts[] = {
> > > > > + MEDIA_BUS_FMT_YUYV8_1X16,
> > > > > +};
> > > > > +
> > > > > int adv748x_csi2_set_virtual_channel(struct adv748x_csi2 *tx, unsigned int vc)
> > > > > {
> > > > > return tx_write(tx, ADV748X_CSI_VC_REF, vc << ADV748X_CSI_VC_REF_SHIFT);
> > > > > @@ -146,6 +158,28 @@ static const struct v4l2_subdev_video_ops adv748x_csi2_video_ops = {
> > > > > * But we must support setting the pad formats for format propagation.
> > > > > */
> > > > >
> > > > > +static int adv748x_csi2_enum_mbus_code(struct v4l2_subdev *sd,
> > > > > + struct v4l2_subdev_state *sd_state,
> > > > > + struct v4l2_subdev_mbus_code_enum *code)
> > > > > +{
> > > > > + struct adv748x_csi2 *tx = adv748x_sd_to_csi2(sd);
> > > > > + const unsigned int *codes = is_txa(tx) ?
> > > > > + adv748x_csi2_txa_fmts :
> > > > > + adv748x_csi2_txb_fmts;
> > > > > + size_t num_fmts = is_txa(tx) ? ARRAY_SIZE(adv748x_csi2_txa_fmts)
> > > > > + : ARRAY_SIZE(adv748x_csi2_txb_fmts);
> > > > > +
> > > > > + if (code->pad != ADV748X_CSI2_SOURCE)
> > > > > + return -EINVAL;
> > > > > +
> > > > > + if (code->index >= num_fmts)
> > > > > + return -EINVAL;
> > > > > +
> > > > > + code->code = codes[code->index];
> > > > > +
> > > > > + return 0;
> > > > > +}
> > > > > +
> > > > > static struct v4l2_mbus_framefmt *
> > > > > adv748x_csi2_get_pad_format(struct v4l2_subdev *sd,
> > > > > struct v4l2_subdev_state *sd_state,
> > > > > @@ -235,6 +269,7 @@ static int adv748x_csi2_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad
> > > > > }
> > > > >
> > > > > static const struct v4l2_subdev_pad_ops adv748x_csi2_pad_ops = {
> > > > > + .enum_mbus_code = adv748x_csi2_enum_mbus_code,
> > > > > .get_fmt = adv748x_csi2_get_format,
> > > > > .set_fmt = adv748x_csi2_set_format,
> > > > > .get_mbus_config = adv748x_csi2_get_mbus_config,
> >
> > --
> > Regards,
> >
> > Laurent Pinchart
--
Kind Regards,
Niklas Söderlund
next prev parent reply other threads:[~2024-05-06 11:31 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-03 15:51 [PATCH 00/11] media: renesas: rcar-csi2: Use the subdev active state Jacopo Mondi
2024-05-03 15:51 ` [PATCH 01/11] media: rcar-vin: Fix YUYV8_1X16 handling for CSI-2 Jacopo Mondi
2024-05-05 20:50 ` Laurent Pinchart
2024-05-06 15:45 ` Niklas Söderlund
2024-05-03 15:51 ` [PATCH 02/11] media: rcar-csi2: Disable runtime_pm in probe error Jacopo Mondi
2024-05-05 20:52 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 03/11] media: rcar-csi2: Cleanup subdevice in remove() Jacopo Mondi
2024-05-05 20:53 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 04/11] media: rcar-csi2: Use the subdev active state Jacopo Mondi
2024-05-03 18:03 ` Niklas Söderlund
2024-05-05 21:52 ` Laurent Pinchart
2024-05-06 11:18 ` Niklas Söderlund
2024-05-06 7:25 ` Jacopo Mondi
2024-05-06 8:10 ` Geert Uytterhoeven
2024-05-06 11:26 ` Niklas Söderlund
2024-05-05 21:54 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 05/11] media: adv748x-csi2: Initialize subdev format Jacopo Mondi
2024-05-05 21:01 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 06/11] media: adv748x-csi2: Implement enum_mbus_codes Jacopo Mondi
2024-05-05 21:07 ` Laurent Pinchart
2024-05-06 8:10 ` Jacopo Mondi
2024-05-06 8:38 ` Laurent Pinchart
2024-05-06 8:42 ` Jacopo Mondi
2024-05-06 11:30 ` Niklas Söderlund [this message]
2024-05-03 15:51 ` [PATCH 07/11] media: adv748x-csi2: Validate the image format Jacopo Mondi
2024-05-05 21:09 ` Laurent Pinchart
2024-05-06 11:37 ` Niklas Söderlund
2024-05-06 13:21 ` Jacopo Mondi
2024-05-06 14:12 ` Niklas Söderlund
2024-05-06 14:36 ` Jacopo Mondi
2024-05-06 14:58 ` Niklas Söderlund
2024-05-06 15:04 ` Jacopo Mondi
2024-05-06 19:02 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 08/11] media: adv748x-csi2: Use the subdev active state Jacopo Mondi
2024-05-05 21:15 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 09/11] media: max9286: Fix enum_mbus_code Jacopo Mondi
2024-05-05 21:18 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 10/11] media: max9286: Use the subdev active state Jacopo Mondi
2024-05-05 21:26 ` Laurent Pinchart
2024-05-03 15:51 ` [PATCH 11/11] media: max9286: Use frame interval from subdev state Jacopo Mondi
2024-05-05 21:36 ` Laurent Pinchart
2024-05-06 9:37 ` Jacopo Mondi
2024-05-06 10:32 ` 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=20240506113059.GC720810@ragnatech.se \
--to=niklas.soderlund+renesas@ragnatech.se \
--cc=jacopo.mondi@ideasonboard.com \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=tomi.valkeinen@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 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.