Linux Media Controller development
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@iki.fi>
To: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Cc: "Sakari Ailus" <sakari.ailus@linux.intel.com>,
	linux-media@vger.kernel.org,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"Sean Young" <sean@mess.org>,
	"Ricardo Ribalda" <ribalda@chromium.org>,
	"Nicolas Dufresne" <nicolas.dufresne@collabora.com>,
	"Niklas Söderlund" <niklas.soderlund@ragnatech.se>,
	"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
	"Alain Volmat" <alain.volmat@foss.st.com>,
	"Bryan O'Donoghue" <bryan.odonoghue@linaro.org>,
	"Dave Stevenson" <dave.stevenson@raspberrypi.com>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Michael Tretter" <m.tretter@pengutronix.de>,
	"Tomasz Figa" <tfiga@chromium.org>,
	"Hu,               Jerry W" <jerry.w.hu@intel.com>,
	"Steve Cho" <stevecho@chromium.org>,
	"Kieran Bingham" <kieran.bingham@ideasonboard.com>,
	"Kevin Hilman" <khilman@baylibre.com>,
	"Paul Kocialkowski" <paulk@sys-base.io>,
	"Benjamin Mugnier" <benjamin.mugnier@foss.st.com>,
	"Hans Verkuil" <hverkuil@xs4all.nl>,
	"Arthur Vinchon" <arthur.vinchon@allegrodvt.com>,
	"Marco Felsch" <m.felsch@pengutronix.de>,
	"Jackson Lee" <jackson.lee@chipsnmedia.com>,
	"Mirela Rabulea" <mirela.rabulea@nxp.com>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Jai Luthra" <jai.luthra@ideasonboard.com>,
	"Devarsh Thakkar" <devarsht@ti.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Stefan Klug" <stefan.klug@ideasonboard.com>,
	"Sylvain Petinot" <sylvain.petinot@foss.st.com>,
	"Naushir Patuck" <naush@raspberrypi.com>
Subject: Re: [PATCH 1/1] media: dt-bindings: Add bindings for camera modules
Date: Fri, 9 May 2025 20:35:10 +0000	[thread overview]
Message-ID: <aB5m_ofsMcX2Z3q0@valkosipuli.retiisi.eu> (raw)
In-Reply-To: <nvzj54g7zyfh2tl76t6zpnfrntthhduntk4cguw5o26453cjbv@pdzzmlbmefho>

Hi Jacopo,

On Fri, May 09, 2025 at 10:24:09PM +0200, Jacopo Mondi wrote:
> Hi Sakari
> 
> On Fri, May 09, 2025 at 08:12:47PM +0000, Sakari Ailus wrote:
> > Hi Jacopo,
> >
> > On Thu, May 08, 2025 at 07:00:34PM +0200, Jacopo Mondi wrote:
> > > Hi Sakari,
> > >   thanks a lot for the proposal, it will be useful for next week discussion
> >
> > Thank you for the review!
> >
> > >
> > > On Wed, May 07, 2025 at 11:13:38AM +0300, Sakari Ailus wrote:
> > > > Add bindings for camera modules to allow telling especially the user space
> > > > which module is found in the system. Camera modules do not have a device
> > > > node so this is a property for the camera sensor device node. This allows
> > > > describing modules that contain a single camera sensor.
> > > >
> > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > ---
> > > > Hi all,
> > > >
> > > > Here's the patch to give some advance warning for the camera module
> > > > discussion. The good thing is that it's quite short.
> > > >
> > > > The intent indeed is to address the regular use case where we have a
> > > > single sensor in a camera module. For cases where we have more, we'll need
> > > > something else, not based on individual properties. I believe this is
> > > > still the way to go, to address current issues and for a couple of
> > > > additional reasons:
> > > >
> > > > - Cameras with more than one sensor tend to be collections of camera
> > > >   modules so this is still relevant in most cases.
> > > >
> > > > - It's much simpler to have a single property than begin having new nodes
> > > >   in DT. In practice such nodes would be a poor fit for DT generally as
> > > >   they have (few or) no functions.
> > > >
> > > > The biggest difficulty is still in module identification. These components
> > > > tend to be often ignored and the best we have for a module name in that
> > > > case is random-looking string if even that. Besides DT bindings, we need
> > > > an additional (git?) tree to describe the modules that have no proper
> > > > names but it could be also useful for those that do, for instance to
> > > > include information on lens, field of view, IR filter, photos of the
> > > > module etc. There is some overlap with what libcamera needs, too.
> > > >
> > > > - Sakari
> > > >
> > > >  .../bindings/media/camera-module.yaml         | 52 +++++++++++++++++++
> > > >  .../media/video-interface-devices.yaml        |  3 ++
> > > >  2 files changed, 55 insertions(+)
> > > >  create mode 100644 Documentation/devicetree/bindings/media/camera-module.yaml
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/media/camera-module.yaml b/Documentation/devicetree/bindings/media/camera-module.yaml
> > > > new file mode 100644
> > > > index 000000000000..31b898c8c334
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/media/camera-module.yaml
> > > > @@ -0,0 +1,52 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > +# Copyright (C) 2025 Intel Corporation
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/media/camera-module.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: Camera modules
> > > > +
> > > > +maintainers:
> > > > +  - Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > +
> > > > +description: |
> > > > +  Camera modules are devices that embed one or more active devices, including
> > > > +  Camera Sensors, Voice Coil Motor (VCM) and possibly a flash LED as well as
> > > > +  other passive devices such as lenses and Ultra-Violet (UV) filters. While the
> > > > +  camera modules themselves have no OF nodes and have generally no module
> > > > +  specific functions, it still does matter for the software stack as a whole
> > > > +  which module the devices are a part of.
> > > > +
> > > > +  Two properties are used for this, depending on what is known of the module:
> > >
> > > I might have missed a point here.
> > >
> > >
> > > > +
> > > > +  1. The model of the module is known. In this case the name of the module uses
> > > > +  the format "vendor,model[,version]" where "vendor" is the manufacturer of the
> > > > +  module and "model" the name of the model. The version part is optional. In
> > > > +  such cases the property "camera-module-canonical" will be used. If the vendor
> > > > +  is not known, the "gpio" vendor prefix is used.
> > >
> > > So if the module is "known" it will be described using the above
> > > specified triplet
> > >
> > > (also, why "gpio" ?)
> >
> > "gpio" is reserved. Another option would be to reserve a name for an
> > unknown vendor. I believe DT maintainers will have an opinion on this.
> >
> 
> I see
> 
> > >
> > > > +
> > > > +  2. The model of the module is unknown. In this case, the module has an
> > > > +  identifier only, and will be described in detail in the camera module
> > > > +  database. The property "camera-module-casual" is used to denote such modules.
> > >
> > > If the module is "unknown" it will be identified by a numerical id that
> > > points to the camera module database where it is "described in
> > > detail". But if an entry is present in the camera module database, then it's not
> > > really "unkown", right ?
> > >
> > > What is the actual difference between an "unknown" and a "known"
> > > module then ?
> >
> > We could use different terms certainly. I wanted to differentiate here
> 
> It's certainly not my intention to bikeshed on naming (yet :)
> 
> > modules the name of which, and hopefully also the manufacturer of which, is
> > known. Otherwise we can just describe it by various other means that are
> > all sub-par compared to having a model and the name of the vendor written
> > on the side of the module.
> >
> > >
> > >
> > > > +
> > > > +  Before including in this binding documentation, all modules shall also be
> > > > +  documented in add-URL-here.
> > >
> > > If an entry in the camera module database is a requirement can't we
> > > simply point to that entry using a numerical id like you proposed for
> > > the "camera-module-casual" property ?
> >
> > That exactly is the idea.
> 
> Ok, so the two properties are not mutually exclusive ?

Yes, they are. A module can not both have a known name and not have one at
the same time.

> 
> Because, and that's the thing I'm missing, if you have an entry in a
> database, that entry will almost certainly contain the vendor and the
> model name (which in my understanding means that if an entry exists
> the module is always "known").

This should actually probably be changed in such a way that the module
always needs to be added to the database. There will be more than how to
identify such a module there.

> >
> > >
> > > Thanks
> > >   j
> > >
> > > > +
> > > > +  All camera modules listed below shall have the name of the sensor as well as
> > > > +  other devices included in the module as DT compatible string mentioned in a
> > > > +  comment after the enumeration, separated by a whitespace (" ").
> > > > +
> > > > +  Always keep the enumeration alphabetically (1) or numerically (2) sorted.
> > > > +
> > > > +properties:
> > > > +  camera-module-canonical:
> > > > +    $ref: /schemas/types.yaml#/definitions/string
> > > > +    enum:
> > > > +      - "dell,0BF122N3" # onnn,ov01a10
> > > > +  camera-module-casual:
> > > > +    $ref: /schemas/types.yaml#/definitions/uint32
> > > > +    enum:
> > > > +      - 1 # st,vs6555
> > > > +
> > > > +additionalProperties: true
> > > > diff --git a/Documentation/devicetree/bindings/media/video-interface-devices.yaml b/Documentation/devicetree/bindings/media/video-interface-devices.yaml
> > > > index cf7712ad297c..27fa6711367e 100644
> > > > --- a/Documentation/devicetree/bindings/media/video-interface-devices.yaml
> > > > +++ b/Documentation/devicetree/bindings/media/video-interface-devices.yaml
> > > > @@ -10,6 +10,9 @@ maintainers:
> > > >    - Jacopo Mondi <jacopo@jmondi.org>
> > > >    - Sakari Ailus <sakari.ailus@linux.intel.com>
> > > >
> > > > +allOf:
> > > > +  - $ref: /schemas/media/camera-module.yaml#
> > > > +
> > > >  properties:
> > > >    flash-leds:
> > > >      $ref: /schemas/types.yaml#/definitions/phandle-array
> >

-- 
Regards,

Sakari Ailus

  reply	other threads:[~2025-05-09 20:35 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-07  8:13 [PATCH 1/1] media: dt-bindings: Add bindings for camera modules Sakari Ailus
2025-05-08  5:51 ` Krzysztof Kozlowski
2025-05-09  8:55   ` Sakari Ailus
2025-05-08 17:00 ` Jacopo Mondi
2025-05-09 20:12   ` Sakari Ailus
2025-05-09 20:24     ` Jacopo Mondi
2025-05-09 20:35       ` Sakari Ailus [this message]
2025-05-09 20:44 ` Kieran Bingham
2025-05-19 11:56   ` Sakari Ailus
2025-08-27 15:45     ` Kieran Bingham
2025-09-24 16:07 ` Isaac Scott
2025-09-24 16:31 ` Isaac Scott

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=aB5m_ofsMcX2Z3q0@valkosipuli.retiisi.eu \
    --to=sakari.ailus@iki.fi \
    --cc=alain.volmat@foss.st.com \
    --cc=arthur.vinchon@allegrodvt.com \
    --cc=benjamin.mugnier@foss.st.com \
    --cc=bryan.odonoghue@linaro.org \
    --cc=daniel.almeida@collabora.com \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=devarsht@ti.com \
    --cc=hdegoede@redhat.com \
    --cc=hverkuil@xs4all.nl \
    --cc=jackson.lee@chipsnmedia.com \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=jai.luthra@ideasonboard.com \
    --cc=jerry.w.hu@intel.com \
    --cc=khilman@baylibre.com \
    --cc=kieran.bingham@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=m.felsch@pengutronix.de \
    --cc=m.tretter@pengutronix.de \
    --cc=mchehab@kernel.org \
    --cc=mirela.rabulea@nxp.com \
    --cc=mripard@kernel.org \
    --cc=naush@raspberrypi.com \
    --cc=nicolas.dufresne@collabora.com \
    --cc=niklas.soderlund@ragnatech.se \
    --cc=paulk@sys-base.io \
    --cc=ribalda@chromium.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=sean@mess.org \
    --cc=stefan.klug@ideasonboard.com \
    --cc=stevecho@chromium.org \
    --cc=sylvain.petinot@foss.st.com \
    --cc=tfiga@chromium.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox