From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-media@vger.kernel.org,
Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
hverkuil@xs4all.nl
Subject: Re: [PATCH v7 2/5] media: v4l: Support obtaining link frequency via get_mbus_config
Date: Mon, 16 Dec 2024 13:16:45 +0200 [thread overview]
Message-ID: <20241216111645.GL32204@pendragon.ideasonboard.com> (raw)
In-Reply-To: <Z1_o8yHTYygdZtex@kekkonen.localdomain>
On Mon, Dec 16, 2024 at 08:46:43AM +0000, Sakari Ailus wrote:
> On Sun, Dec 15, 2024 at 06:59:35PM +0200, Laurent Pinchart wrote:
> > On Tue, Dec 10, 2024 at 09:59:03AM +0200, Sakari Ailus wrote:
> > > Add link_freq field to struct v4l2_mbus_config in order to pass the link
> > > frequency to the receiving sub-device.
> >
> > The documentation of v4l2_get_link_freq() should be expanded to explain
> > the new mode of operation. It should document which of the supported
> > methods are recommended for new drivers.
> >
> > >
> > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > ---
> > > drivers/media/v4l2-core/v4l2-common.c | 11 ++++++++---
> > > include/media/v4l2-mediabus.h | 2 ++
> > > 2 files changed, 10 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c
> > > index 9fe74c7e064f..88fbd5608f00 100644
> > > --- a/drivers/media/v4l2-core/v4l2-common.c
> > > +++ b/drivers/media/v4l2-core/v4l2-common.c
> > > @@ -508,13 +508,18 @@ EXPORT_SYMBOL_GPL(__v4l2_get_link_freq_ctrl);
> > > s64 __v4l2_get_link_freq_pad(struct media_pad *pad, unsigned int mul,
> > > unsigned int div)
> > > {
> > > + struct v4l2_mbus_config mbus_config = {};
> >
> > Isn't mbus_config fully populated by the .get_mbus_config() operation ?
> > That should be documented in the .get_mbus_config() operation
> > documentation.
>
> It's a good practice to zero the memory before drivers get to work on it. I
> presume drivers will set the fields that are relevant for them and ignore
> the rest.
>
> I can add a note on get_mbus_config() the drivers should set all struct
> fields to known values.
Thanks.
> > > struct v4l2_subdev *sd;
> > > + int ret;
> > >
> > > sd = media_entity_to_v4l2_subdev(pad->entity);
> > > - if (!sd)
> > > - return -ENODEV;
> > > + ret = v4l2_subdev_call(sd, pad, get_mbus_config, pad->index,
> > > + &mbus_config);
> > > + if (ret < 0 && ret != -ENOIOCTLCMD)
> > > + return ret;
> > >
> > > - return __v4l2_get_link_freq_ctrl(sd->ctrl_handler, mul, div);
> > > + return mbus_config.link_freq ?:
> > > + __v4l2_get_link_freq_ctrl(sd->ctrl_handler, mul, div);
> >
> > if (mbus_config.link_freq)
> > return mbus_config.link_freq;
> >
> > return __v4l2_get_link_freq_ctrl(sd->ctrl_handler, mul, div);
>
> Whether this would be cleaner is debatable at least. I can switch if you
> insist though.
I think it's nicer. You could even write
if (mbus_config.link_freq)
return mbus_config.link_freq;
/*
* Fall back to using the link frequency control if the media bus config
* doesn't provide a link frequency.
*/
return __v4l2_get_link_freq_ctrl(sd->ctrl_handler, mul, div);
> > I wonder if we should also add a message in case link_freq is 0, to get
> > drivers to convert to reporting the link frequency through
> > .get_mbus_config() if they already implement the operation.
>
> I'm not sure this will be useful: in most cases the LINK_FREQ control is
> used and for a reason: it's user-configurable. Drivers should only populate
> the field if the link frequency is determined by the driver. For the
> receiver drivers it does not matter: they use v4l2_get_link_freq().
I think this depends on whether or not driver that have a configurable
link frequency should report the current value through
.get_mbus_config(). I think that drivers that implement
.get_mbus_config() should, for consistency.
> > > }
> > > EXPORT_SYMBOL_GPL(__v4l2_get_link_freq_pad);
> > > #endif /* CONFIG_MEDIA_CONTROLLER */
> > > diff --git a/include/media/v4l2-mediabus.h b/include/media/v4l2-mediabus.h
> > > index 5bce6e423e94..cc5f776dc662 100644
> > > --- a/include/media/v4l2-mediabus.h
> > > +++ b/include/media/v4l2-mediabus.h
> > > @@ -148,6 +148,7 @@ enum v4l2_mbus_type {
> > > /**
> > > * struct v4l2_mbus_config - media bus configuration
> > > * @type: interface type
> > > + * @link_freq: The link frequency. See also V4L2_CID_LINK_FREQ control.
> >
> > Not a candidate for this series, but I'd like to simplify drivers by
> > implementing the LINK_FREQ control automatically.
> >
> > > * @bus: bus configuration data structure
> > > * @bus.parallel: embedded &struct v4l2_mbus_config_parallel.
> > > * Used if the bus is parallel or BT.656.
> > > @@ -162,6 +163,7 @@ enum v4l2_mbus_type {
> > > */
> > > struct v4l2_mbus_config {
> > > enum v4l2_mbus_type type;
> > > + u64 link_freq;
> > > union {
> > > struct v4l2_mbus_config_parallel parallel;
> > > struct v4l2_mbus_config_mipi_csi1 mipi_csi1;
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2024-12-16 11:17 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-10 7:59 [PATCH v7 0/5] Use V4L2 mbus config for conveying MEI CSI link frequency Sakari Ailus
2024-12-10 7:59 ` [PATCH v7 1/5] media: v4l: Support passing media pad argument to v4l2_get_link_freq() Sakari Ailus
2024-12-12 17:04 ` Jacopo Mondi
2024-12-15 16:45 ` Laurent Pinchart
2024-12-16 8:38 ` Sakari Ailus
2024-12-10 7:59 ` [PATCH v7 2/5] media: v4l: Support obtaining link frequency via get_mbus_config Sakari Ailus
2024-12-12 17:05 ` Jacopo Mondi
2024-12-15 16:59 ` Laurent Pinchart
2024-12-16 8:46 ` Sakari Ailus
2024-12-16 11:16 ` Laurent Pinchart [this message]
2024-12-16 12:15 ` Sakari Ailus
2024-12-16 13:51 ` Laurent Pinchart
2024-12-10 7:59 ` [PATCH v7 3/5] media: Documentation: Update link frequency driver documentation Sakari Ailus
2024-12-12 16:53 ` Jacopo Mondi
2024-12-13 7:15 ` Sakari Ailus
2024-12-15 17:02 ` Laurent Pinchart
2024-12-16 8:07 ` Sakari Ailus
2024-12-16 8:08 ` Sakari Ailus
2024-12-16 11:20 ` Laurent Pinchart
2024-12-16 12:05 ` Sakari Ailus
2024-12-16 13:51 ` Laurent Pinchart
2024-12-10 7:59 ` [PATCH v7 4/5] media: ivsc: csi: Obtain link frequency from the media pad Sakari Ailus
2024-12-10 7:59 ` [PATCH v7 5/5] media: intel/ipu6: Obtain link frequency from a sub-device Sakari Ailus
2024-12-15 17:08 ` Laurent Pinchart
2024-12-16 7:47 ` Sakari Ailus
2024-12-16 9:07 ` Laurent Pinchart
2024-12-16 9:18 ` Sakari Ailus
2024-12-16 9:40 ` Laurent Pinchart
2024-12-16 8:03 ` Sakari Ailus
2024-12-16 11:13 ` Laurent Pinchart
2024-12-16 11:21 ` Sakari Ailus
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=20241216111645.GL32204@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=hverkuil@xs4all.nl \
--cc=jacopo.mondi@ideasonboard.com \
--cc=linux-media@vger.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 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.