From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Richard Leitner <richard.leitner@linux.dev>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Alexander Stein <alexander.stein@ew.tq-group.com>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-media@vger.kernel.org
Subject: Re: [PATCH 2/3] dt-bindings: media: i2c: Add vision-components,mipi-module-controller
Date: Thu, 17 Sep 2026 11:46:56 +0300 [thread overview]
Message-ID: <20260917084656.GA24505@killaraus.ideasonboard.com> (raw)
In-Reply-To: <accdb907-67ee-45ee-b06a-173e49a3ca00@kernel.org>
On Thu, Sep 17, 2026 at 08:30:05AM +0200, Krzysztof Kozlowski wrote:
> On 16/09/2026 16:57, Richard Leitner wrote:
> >>>>>>> + vcc-supply:
> >>>>>>> + description: Power supply of the module (3.3V)
> >>>>>>> +
> >>>>>>> + '#address-cells':
> >>>>>>> + const: 1
> >>>>>>> +
> >>>>>>> + '#size-cells':
> >>>>>>> + const: 0
> >>>>>>
> >>>>>> No children allowed, so why these two?
> >>>>>
> >>>>> Based on your and the bot feedback I would suggest for v2 to change this
> >>>>> "generic i2c bus" to a simple "i2c-tunnel" property which has
> >>>>> "$ref: /schemas/i2c/i2c-controller.yaml".
> >>>>>
> >>>>> This would better reflect the actual hardware, as there is only this one,
> >>>>> in firmware hard-coded I2C downstream bus.
> >>>>>
> >>>>> Would this be a sane approach?
> >>>>
> >>>> If the underlying I2C bus and sensor are important, then yes. But I have
> >>>> doubts that you need to describe the sensor if it is truly
> >>>> unadressable/invisible to the OS.
> >>>
> >>> Yes, the I2C bus and sensor is important. The device driver of the sensor
> >>> talks (via the tunneled I2C interface) directly to the sensor.
> >>>
> >>> The separate I2C controller/bus description is necessary as the tunneled
> >>> I2C bus has some quirks unfortunately. Those need to be addressed as
> >>> otherwise the sensor drivers do not work.
> >>>
> >>> So the idea is to not have a vc-mipi module binding per "sensor variant"
> >>> of the camera modules, but provide a common controller driver which
> >>> provides the I2C bus for the sensor driver.
> >>
> >> Bindings must accurately describe the device and so far - based on the
> >> website - there is no device as mipi-module-controller alone.
> >>
> >> I don't get why you assume that all of the variants are exactly
> >> identical, thus sensor variant is not applicable.
> >>
> >> If they are identical in all aspects, then why clock-frequency property?
> >> That's obviously rhetorical question, because they are not identical in
> >> all aspects and must produce different clock at least.
> >
> > From that point of view, of course all variants are different.
> > But the interface towards the host is (according to vision components)
> > stable. This is why I aimed for a separate device.
>
> What makes you think that interface is stable and the same? Is the
> stable aspect or its versioning documented anywhere in the docs?
>
> I can easily imagine that FPGA synthesis actually differs on some
> sensors or they ship a new, updated version, thus at some point the
> interface might change or already changed between models.
Alright, let's deep that in the real life aspect of this.
There is no stability guarantee in the sense of a strict, publicly
documented commitment. What we have, instead, is direct and honest
discussions with the vendor, and a decade of real-life experience with
those modules. the result is both better and worse than I'd like. The
good part is that the interface is stable with no plan from the vendor
to change it, and we haven't noticed observable difference in behaviour
between modules for different sensors.
The bad news, on the other hand, is that bugs happen. Newly manufactured
versions of the same module sometimes ship with updated FPGA bitstreams
that fix bugs. Previous module can't be fixed as the FPGA bitstream is
not field-upgradable. Those updates don't affect the interface in the
sense that the registers exposed by the FPGA stay the same, but they
require different software workarounds. A sensor-specific compatible
string wouldn't help here.
So far (again over the course of about a decade) the only two bugs I've
observed are related to I2C access. One of the bugs require access to
sensor registers to be broken into single-byte read/write operations
(this is the job of the controller's driver that register an I2C
"tunnel" adapter). The other bug causes the FPGA to shift data by one
byte when the host reads the controller's EEPROM data. The driver posted
by Richard works around the bugs unconditionally. It could be nice to
disable the workaround that split register access into bytes as that can
improve performance, and the plan would be to add a DT property to
indicate if the module is affected as that can't be inferred from the
compatible string (it depends on the revision of the FPGA bitstream as
explained above), nor can it be queried at runtime from the controller
(AFAIK).
> > So what's your suggestion on how to best solve this?
> > Provide a per sensor compatible like e.g. "vc-mipi-ov9281"?
> >
> > Nonehteless this device must then provide a i2c sub node to place the
> > actual imaging sensor on.
> >
> > If that's fine with you I'm personally fine with this approach too.
>
> If you have certainty, like documented spec somewhere telling this, that
> programming interface of FPGA to the OS is the same, then go with a
> generic fallback compatible like you have and add front compatibles
> specific to the sensor.
>
> If you do not have certainty, then I would go only with sensor-specific
> compatibles for both front and fallbacks, so:
>
> vc-mipi-ov9281, vc-mipi-imx297
>
> It does feel a bit odd, but that is usual way to handle any future
> differences when two vc-mipi modules turn out not to be compatible.
I'm not completely opposed to that, but my experience is that it will
create additional complexity (to update the DT binding when a module for
a new sensor is released) without much gain as bugs are not specific to
a module type.
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2026-09-17 8:47 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 20:20 [PATCH 0/3] Add Vision Components MIPI Camera Module support Richard Leitner
2026-09-15 20:20 ` [PATCH 1/3] dt-bindings: vendor-prefixes: add Vision Components GmbH Richard Leitner
2026-09-15 20:20 ` [PATCH 2/3] dt-bindings: media: i2c: Add vision-components,mipi-module-controller Richard Leitner
2026-09-15 21:57 ` Rob Herring (Arm)
2026-09-16 7:00 ` Krzysztof Kozlowski
2026-09-16 7:33 ` Richard Leitner
2026-09-16 7:45 ` Laurent Pinchart
2026-09-16 8:30 ` Krzysztof Kozlowski
2026-09-16 8:35 ` Krzysztof Kozlowski
2026-09-16 9:01 ` Richard Leitner
2026-09-16 13:41 ` Krzysztof Kozlowski
2026-09-16 14:57 ` Richard Leitner
2026-09-17 6:30 ` Krzysztof Kozlowski
2026-09-17 8:46 ` Laurent Pinchart [this message]
2026-09-16 16:52 ` Laurent Pinchart
2026-09-17 6:18 ` Krzysztof Kozlowski
2026-09-17 7:55 ` Richard Leitner
2026-09-17 8:08 ` Krzysztof Kozlowski
2026-09-17 8:19 ` Laurent Pinchart
2026-09-17 8:28 ` Krzysztof Kozlowski
2026-09-17 8:17 ` Laurent Pinchart
2026-09-15 20:20 ` [PATCH 3/3] media: i2c: vc-mipi: add Vision Components MIPI Module Controller Richard Leitner
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=20260917084656.GA24505@killaraus.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=alexander.stein@ew.tq-group.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=richard.leitner@linux.dev \
--cc=robh@kernel.org \
/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
all inboxes | Powered by JetHome®