From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org, laurent.pinchart@ideasonboard.com,
Prabhakar <prabhakar.csengg@gmail.com>,
"Kate Hsuan" <hpa@redhat.com>,
"Alexander Shiyan" <eagle.alexander923@gmail.com>,
"Mikhail Rudenko" <mike.rudenko@gmail.com>,
"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
"Tommaso Merciai" <tomm.merciai@gmail.com>,
"Umang Jain" <umang.jain@ideasonboard.com>,
"Benjamin Mugnier" <benjamin.mugnier@foss.st.com>,
"Sylvain Petinot" <sylvain.petinot@foss.st.com>,
"Christophe JAILLET" <christophe.jaillet@wanadoo.fr>,
"Julien Massot" <julien.massot@collabora.com>,
"Naushir Patuck" <naush@raspberrypi.com>,
"Yan, Dongcheng" <dongcheng.yan@intel.com>,
"Cao, Bingbu" <bingbu.cao@intel.com>,
"Qiu, Tian Shu" <tian.shu.qiu@intel.com>,
"Wang, Hongju" <hongju.wang@intel.com>,
"Stefan Klug" <stefan.klug@ideasonboard.com>,
"Mirela Rabulea" <mirela.rabulea@nxp.com>,
"André Apitzsch" <git@apitzsch.eu>,
"Heimir Thor Sverrisson" <heimir.sverrisson@gmail.com>,
"Kieran Bingham" <kieran.bingham@ideasonboard.com>,
"Stanislaw Gruszka" <stanislaw.gruszka@linux.intel.com>,
"Mehdi Djait" <mehdi.djait@linux.intel.com>,
"Ricardo Ribalda Delgado" <ribalda@kernel.org>,
"Hans de Goede" <hdegoede@redhat.com>
Subject: Re: [RFC v5 06/15] media: uapi: Add V4L2_CID_CONFIG_MODEL control
Date: Thu, 20 Feb 2025 10:50:34 +0000 [thread overview]
Message-ID: <Z7cI-mgXTc_O5Erc@kekkonen.localdomain> (raw)
In-Reply-To: <98c452a6-454b-4842-8083-c7e748abff21@xs4all.nl>
Hi Hans,
On Mon, Feb 10, 2025 at 03:07:34PM +0100, Hans Verkuil wrote:
> On 10/02/2025 14:25, Sakari Ailus wrote:
> > Hi Hans,
> >
> > On Mon, Feb 10, 2025 at 10:09:33AM +0100, Hans Verkuil wrote:
> >> Hi Sakari,
> >>
> >> On 03/02/2025 09:58, Sakari Ailus wrote:
> >>> Add the V4L2_CID_CONFIG_MODEL control for the configuration model.
> >>>
> >>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> >>> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >>> ---
> >>> .../userspace-api/media/v4l/ext-ctrls-image-process.rst | 4 ++++
> >>> drivers/media/v4l2-core/v4l2-ctrls-defs.c | 5 +++++
> >>> include/uapi/linux/v4l2-controls.h | 3 +++
> >>> 3 files changed, 12 insertions(+)
> >>>
> >>> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> >>> index 27803dca8d3e..2ae17ed99729 100644
> >>> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> >>> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> >>> @@ -55,3 +55,7 @@ Image Process Control IDs
> >>> control value divided by e.g. 0x100, meaning that to get no
> >>> digital gain the control value needs to be 0x100. The no-gain
> >>> configuration is also typically the default.
> >>> +
> >>> +``V4L2_CID_CONFIG_MODEL (bitmask)``
> >>> + Which configuration models the sub-device supports. Please see
> >>> + :ref:`media_subdev_config_model`. This is a read-only control.
> >>> diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> >>> index 1ea52011247a..24c9c25e20d1 100644
> >>> --- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> >>> +++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
> >>> @@ -1164,6 +1164,7 @@ const char *v4l2_ctrl_get_name(u32 id)
> >>> case V4L2_CID_TEST_PATTERN: return "Test Pattern";
> >>> case V4L2_CID_DEINTERLACING_MODE: return "Deinterlacing Mode";
> >>> case V4L2_CID_DIGITAL_GAIN: return "Digital Gain";
> >>> + case V4L2_CID_CONFIG_MODEL: return "Sub-device configuration model";
> >>>
> >>> /* DV controls */
> >>> /* Keep the order of the 'case's the same as in v4l2-controls.h! */
> >>> @@ -1481,6 +1482,10 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
> >>> case V4L2_CID_DV_RX_POWER_PRESENT:
> >>> *type = V4L2_CTRL_TYPE_BITMASK;
> >>> break;
> >>> + case V4L2_CID_CONFIG_MODEL:
> >>> + *flags |= V4L2_CTRL_FLAG_READ_ONLY;
> >>> + *type = V4L2_CTRL_TYPE_BITMASK;
> >>> + break;
> >>> case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:
> >>> case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT:
> >>> *type = V4L2_CTRL_TYPE_INTEGER;
> >>> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
> >>> index 974fd254e573..731add75d9ee 100644
> >>> --- a/include/uapi/linux/v4l2-controls.h
> >>> +++ b/include/uapi/linux/v4l2-controls.h
> >>> @@ -1225,6 +1225,9 @@ enum v4l2_jpeg_chroma_subsampling {
> >>> #define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
> >>> #define V4L2_CID_DEINTERLACING_MODE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
> >>> #define V4L2_CID_DIGITAL_GAIN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 5)
> >>> +#define V4L2_CID_CONFIG_MODEL (V4L2_CID_IMAGE_PROC_CLASS_BASE + 6)
> >>> +
> >>> +#define V4L2_CID_CONFIG_MODEL_COMMON_RAW (1U << 0)
> >>
> >> I think I mentioned this before, but what's the point of this?
> >
> > I recall Laurent was last to reply to the thread, with a good explanation
> > of the purpose. The message id is
> > <20241118024002.GJ31681@pendragon.ideasonboard.com> .
>
> Now document that in this patch series. I double checked patch 04/15 again,
> and there is no mention of that explanation from Laurent. It should be incorporated
> in that patch.
>
> Open questions:
>
> 1) If this control is not available, but it is still a camera sensor, what is
> userspace supposed to to? I guess all it can do is assume that the driver
> follows the standard rules, since there is no way to figure out if there are
> differences. So again, how does this help? In any case, this should be
> documented as well.
The user space cannot expect the sub-device UAPI conforms to the common raw
sensor model without this control. The purpose of the model is indeed to
allow the user space to expect certain things to be supported in the API
and if they are supported, they work in a certain way. The alternative is
to do this driver by driver and there are quite a few sensor drivers out
there, with more to come.
>
> 2) Are there compliance tests for this? Because there is no point adding this
> without having tests for it as well. Otherwise I can 100% guarantee that
> drivers will set this even if it deviates from what it should do in some
> way. Relying on code review alone is going to be a very tough job.
Compliance tests need to be added, I agree.
>
> >
> >>
> >> You are adding a control describing a configuration model, but it has
> >> just a single possible configuration model. I see no description anywhere
> >> about when a new model would need to be added, or what userspace is
> >> supposed to do with this.
> >
> > At this point I'm not sure how many other configuration models might be
> > needed or when they would be needed.
> >
> >>
> >> And as long as there is only one model anyway, I don't see the point of
> >> this control.
> >
> > I could create a control just for the common raw sensor model but
> >
> >>
> >> Is the intention that all sensor drivers will set this control? The RFC
> >> series isn't clear about this.
> >
> > I'd expect almost all new raw sensor drivers to expose this control with
> > the common raw bit set.
> >
> >>
> >> The problem I see with this series is that it seems to mix seemingly
> >> unrelated changes: adding COLOUR_PATTERN/BINNING controls doesn't seem to
> >> depend on configuration models. Or if they do, I clearly didn't get that.
> >
> > These are all related to sensor API improvements. There is no direct
> > dependency, no, but I expect drivers implementing the common raw sensor
> > model would also support these controls. I can document this.
>
> Just split it up in two separate series. I have no objections to the sensor API
> improvements, so it is much easier to get that in.
>
> But I think that the 'config_model' part is poorly documented and I am quite
> skeptical about the whole thing. So that shouldn't block the other changes
> from this RFC series.
One option could be indeed to postpone this, and continue working on the
user space one driver at a time. My initial thought really was we could
require the common raw sensor model to be used with internal pads,
otherwise it'll be harder to ensure sensor drivers using them will be using
them consistently: compliance tests would require quite a few exceptions
for instance (doing the tests only for sensors that are non-CCS for
instance).
I wonder what Laurent thinks.
--
Regards,
Sakari Ailus
next prev parent reply other threads:[~2025-02-20 10:50 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-03 8:58 [RFC v5 00/15] Sub-device configuration models Sakari Ailus
2025-02-03 8:58 ` [RFC v5 01/15] media: Documentation: Rework embedded data documentation Sakari Ailus
2025-02-03 14:52 ` Lad, Prabhakar
2025-02-09 15:06 ` RFC " Mirela Rabulea
2025-02-03 8:58 ` [RFC v5 02/15] media: Documentation: Add a hyphen to list-based Sakari Ailus
2025-02-03 14:53 ` Lad, Prabhakar
2025-02-03 8:58 ` [RFC v5 03/15] media: Documentation: Reword split of sensor driver to two classes Sakari Ailus
2025-02-03 14:57 ` Lad, Prabhakar
2025-02-03 8:58 ` [RFC v5 04/15] media: Documentation: Add subdev configuration models, raw sensor model Sakari Ailus
2025-02-03 15:14 ` Lad, Prabhakar
2025-02-09 15:42 ` Mirela Rabulea
2025-02-26 9:17 ` Mirela Rabulea
2025-02-26 10:36 ` Sakari Ailus
2025-02-03 8:58 ` [RFC v5 05/15] media: Documentation: Add scaling and post-scaler crop for common raw Sakari Ailus
2025-02-03 15:45 ` Lad, Prabhakar
2025-02-03 8:58 ` [RFC v5 06/15] media: uapi: Add V4L2_CID_CONFIG_MODEL control Sakari Ailus
2025-02-03 15:46 ` Lad, Prabhakar
2025-02-10 9:09 ` Hans Verkuil
2025-02-10 13:25 ` Sakari Ailus
2025-02-10 14:07 ` Hans Verkuil
2025-02-20 10:50 ` Sakari Ailus [this message]
2025-02-03 8:58 ` [RFC v5 07/15] media: uapi: Add V4L2_CID_COLOUR_PATTERN for describing colour patterns Sakari Ailus
2025-02-09 17:14 ` Mirela Rabulea
2025-02-10 13:39 ` Sakari Ailus
2025-02-10 8:57 ` Hans Verkuil
2025-02-10 14:37 ` Sakari Ailus
2025-02-03 8:58 ` [RFC v5 08/15] media: uapi: Correct generic CSI-2 metadata format 4cc Sakari Ailus
2025-02-03 8:58 ` [RFC v5 09/15] media: uapi: Documentation: Improve column width hints for examples Sakari Ailus
2025-02-03 8:58 ` [RFC v5 10/15] media: v4l: uapi: Add a control for colour pattern flipping effect Sakari Ailus
2025-02-09 17:23 ` Mirela Rabulea
2025-02-10 13:53 ` Sakari Ailus
2025-02-11 16:00 ` Dave Stevenson
2025-02-03 8:58 ` [RFC v5 11/15] media: Documentation: Document luma-only mbus codes and CFA for cameras Sakari Ailus
2025-02-09 17:48 ` [EXT] " Mirela Rabulea
2025-02-10 14:35 ` Sakari Ailus
2025-02-03 8:58 ` [RFC v5 12/15] media: uapi: Documentation: Use luma formats with CFA pattern control Sakari Ailus
2025-02-09 17:50 ` Mirela Rabulea
2025-02-03 8:58 ` [RFC v5 13/15] media: uapi: Add V4L2_CID_BINNING control for binning configuration Sakari Ailus
2025-02-10 14:07 ` Hans Verkuil
2025-02-10 14:32 ` Sakari Ailus
2025-02-03 8:58 ` [RFC v5 14/15] media: uapi: Add controls for sub-sampling configuration Sakari Ailus
2025-02-03 8:58 ` [RFC v5 15/15] media: Documentation: Add binning and sub-sampling controls Sakari Ailus
2025-02-10 13:46 ` [RFC v5 00/15] Sub-device configuration models 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=Z7cI-mgXTc_O5Erc@kekkonen.localdomain \
--to=sakari.ailus@linux.intel.com \
--cc=benjamin.mugnier@foss.st.com \
--cc=bingbu.cao@intel.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=dave.stevenson@raspberrypi.com \
--cc=dongcheng.yan@intel.com \
--cc=eagle.alexander923@gmail.com \
--cc=git@apitzsch.eu \
--cc=hdegoede@redhat.com \
--cc=heimir.sverrisson@gmail.com \
--cc=hongju.wang@intel.com \
--cc=hpa@redhat.com \
--cc=hverkuil@xs4all.nl \
--cc=julien.massot@collabora.com \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=mehdi.djait@linux.intel.com \
--cc=mike.rudenko@gmail.com \
--cc=mirela.rabulea@nxp.com \
--cc=naush@raspberrypi.com \
--cc=prabhakar.csengg@gmail.com \
--cc=ribalda@kernel.org \
--cc=stanislaw.gruszka@linux.intel.com \
--cc=stefan.klug@ideasonboard.com \
--cc=sylvain.petinot@foss.st.com \
--cc=tian.shu.qiu@intel.com \
--cc=tomm.merciai@gmail.com \
--cc=umang.jain@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox