All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Stein <alexander.stein@ew.tq-group.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Sakari Ailus <sakari.ailus@iki.fi>,
	linux-media@vger.kernel.org,
	Manivannan Sadhasivam <mani@kernel.org>
Subject: Re: Re: Re: Re: [PATCH 07/19] media: i2c: imx290: Support variable-sized registers
Date: Tue, 23 Aug 2022 09:19:36 +0200	[thread overview]
Message-ID: <2761166.tdWV9SEqCh@steina-w> (raw)
In-Reply-To: <YwRAqFwgPy6rmuD7@pendragon.ideasonboard.com>

Hello Laurent,

Am Dienstag, 23. August 2022, 04:51:20 CEST schrieb Laurent Pinchart:
> Hi Alexander,
> 
> On Tue, Aug 23, 2022 at 04:08:20AM +0300, Laurent Pinchart wrote:
> > On Mon, Jul 25, 2022 at 08:49:40AM +0200, Alexander Stein wrote:
> > > Am Sonntag, 24. Juli 2022, 01:06:29 CEST schrieb Laurent Pinchart:
> > > > On Fri, Jul 22, 2022 at 05:37:53PM +0300, Sakari Ailus wrote:
> > > > > On Thu, Jul 21, 2022 at 01:43:54PM +0200, Alexander Stein wrote:
> > > > > ...
> > > > > 
> > > > > > Nice the following snippet does the trick already:
> > > > > > ---8<---
> > > > > > --- a/drivers/media/i2c/imx290.c
> > > > > > +++ b/drivers/media/i2c/imx290.c
> > > > > > @@ -221,6 +221,7 @@ static const struct imx290_pixfmt
> > > > > > imx290_formats[] =
> > > > > > {
> > > > > > 
> > > > > >  static const struct regmap_config imx290_regmap_config = {
> > > > > >  
> > > > > >         .reg_bits = 16,
> > > > > >         .val_bits = 8,
> > > > > > 
> > > > > > +       .use_single_read = true,
> > > > > > 
> > > > > >  };
> > > > > >  
> > > > > >  static const char * const imx290_test_pattern_menu[] = {
> > > > > > 
> > > > > > ---8<---
> > > > > > 
> > > > > > As this affects the VC OV9281 as well, any suggestions for a
> > > > > > common
> > > > > > property?
> > > > > 
> > > > > If there's a 1:1 I²C mux in there between the host and the sensor,
> > > > > should
> > > > > it be in DT as well? I'm not entirely certain it's necessary.
> > > > 
> > > > The microcontroller also the sensor clock and power supplies, so it
> > > > has
> > > > to be modelled in DT in any case. I was trying to avoid exposing it as
> > > > an I2C mux, but maybe we'll have to bite the bullet...
> > > 
> > > What is the benefit about exposing a I2C mux? The needed regmap config
> > > option is configured completely independent to this.
> > 
> > If the I2C mux in the camera module messes up I2C transfers, the related
> > quirks need to be handled somewhere, and a specific mux driver device in
> > DT could be a good place to report that. There may be other options
> > though.

From a logical point of view, a i2c mux seems to be correct, but in the end 
this quirk is handled by regmap which parses device specific properties.
Adding a (mux) bus property which is applied to all devices seems to be a 
hassle, IMHO.
Taking Sakari's suggestion of 'single-octet-read' property where in the DT 
bindings this should be added?

> > > > I've implement support for two camera modules from Vision Components
> > > > but
> > > > haven't submitted patches yet. See [1] and [2] for DT examples and [3]
> > > > for the driver that handles the microcontroller.
> > > > 
> > > > Note that one purpose of the microcontroller is to configure the
> > > > sensor
> > > > automatically. It can be queried through I2C for a list of supported
> > > > modes, and it can also reconfigure the sensor fully when a mode is
> > > > selected. This is meant to enable development of a single driver that
> > > > will cover all modules, regardless of which camera sensor it
> > > > integrates.
> > > > I'm not sure what words you will use to voice your opinion on this
> > > > design, but I think I already agree :-)
> > > > 
> > > > [1]
> > > > https://gitlab.com/ideasonboard/nxp/linux/-/blob/pinchartl/v5.19/dev/
> > > > isp/next/arch/arm64/boot/dts/freescale/imx8mp-maivin-csi1-imx296.dts
> > > > [2]
> > > > https://gitlab.com/ideasonboard/nxp/linux/-/blob/pinchartl/v5.19/dev/
> > > > isp/next/arch/arm64/boot/dts/freescale/imx8mp-maivin-csi1-imx327.dts
> > > > [3]
> > > > https://gitlab.com/ideasonboard/nxp/linux/-/blob/pinchartl/v5.19/dev/
> > > > isp/next/drivers/media/i2c/vc-mipi.c> > > 
> > > > > The property could be called e.g. "single-octet-read". I think this
> > > > > should
> > > > > probably be documented in I²C bindings (or even regmap).
> > > > 
> > > > I like the idea of making it a DT property global to all I2C devices.
> > > > It
> > > > should ideally be parsed by the I2C core or by regmap.
> > > 
> > > I agree with adding this as a regmap option, like 'big-endian' &
> > > friends, but not so much for I2C core. IMHO the core should only be
> > > interested in handling messages and transfers. Setting up those
> > > correctly is a matter for drivers (which in turn use regmap).
> > 
> > I don't want to polute a large number of sensor drivers because of
> > questionable design decisions of a particular module vendor. This type
> > of quirk needs to be handled outside of the sensor driver.
> 
> Given that the chip ID is only read to print it to the kernel log, and
> that an incorrectly read ID will not prevent the driver from probing or
> affect its behaviour in any way, would you object to merging this patch,
> with the single read issue to support the Vision Components module being
> handled later ?

No objection here. This problem is and should stay outside of the sensor 
driver. VC platform integration is an additional step.

Best regards,
Alexander




  reply	other threads:[~2022-08-23  7:19 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-21  8:35 [PATCH 00/19] media: i2c: imx290: Miscellaneous improvements Laurent Pinchart
2022-07-21  8:35 ` [PATCH 01/19] media: i2c: imx290: Use device lock for the control handler Laurent Pinchart
2022-07-21  9:22   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 02/19] media: i2c: imx290: Print error code when I2C transfer fails Laurent Pinchart
2022-07-21  9:23   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 03/19] media: i2c: imx290: Specify HMAX values in decimal Laurent Pinchart
2022-07-21  9:18   ` Alexander Stein
2022-07-21 11:31     ` Laurent Pinchart
2022-07-21 11:54       ` Alexander Stein
2022-07-21 12:04         ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 04/19] media: i2c: imx290: Replace macro with explicit ARRAY_SIZE() Laurent Pinchart
2022-07-21  9:23   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 05/19] media: i2c: imx290: Drop imx290_write_buffered_reg() Laurent Pinchart
2022-07-21  9:24   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 06/19] media: i2c: imx290: Drop regmap cache Laurent Pinchart
2022-07-21  9:27   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 07/19] media: i2c: imx290: Support variable-sized registers Laurent Pinchart
2022-07-21  9:43   ` Alexander Stein
2022-07-21 10:54     ` Laurent Pinchart
2022-07-21 11:18       ` Alexander Stein
2022-07-21 11:25         ` Laurent Pinchart
2022-07-21 11:43           ` Alexander Stein
2022-07-22 14:37             ` Sakari Ailus
2022-07-23 23:06               ` Laurent Pinchart
2022-07-25  6:49                 ` Alexander Stein
2022-08-23  1:08                   ` Laurent Pinchart
2022-08-23  2:51                     ` Laurent Pinchart
2022-08-23  7:19                       ` Alexander Stein [this message]
2022-10-16  5:36                         ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 08/19] media: i2c: imx290: Correct register sizes Laurent Pinchart
2022-07-21  8:35 ` [PATCH 09/19] media: i2c: imx290: Simplify error handling when writing registers Laurent Pinchart
2022-07-21  9:50   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 10/19] media: i2c: imx290: Define more register macros Laurent Pinchart
2022-07-21 10:00   ` Alexander Stein
2022-07-21 11:08     ` Laurent Pinchart
2022-07-21 11:28       ` Alexander Stein
2022-10-16  4:27         ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 11/19] media: i2c: imx290: Add exposure time control Laurent Pinchart
2022-07-21 10:01   ` Alexander Stein
2022-07-21 15:52   ` Dave Stevenson
2022-07-21  8:35 ` [PATCH 12/19] media: i2c: imx290: Fix max gain value Laurent Pinchart
2022-07-21 10:02   ` Alexander Stein
2022-07-21 16:08   ` Dave Stevenson
2022-10-16  4:51     ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 13/19] media: i2c: imx290: Split control initialization to separate function Laurent Pinchart
2022-07-21 10:03   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 14/19] media: i2c: imx290: Implement HBLANK and VBLANK controls Laurent Pinchart
2022-07-21 10:05   ` Alexander Stein
2022-07-21 11:17     ` Laurent Pinchart
2022-07-21 11:32       ` Alexander Stein
2022-07-21 16:37         ` Dave Stevenson
2022-10-16  6:10           ` Laurent Pinchart
2022-10-17 13:46             ` Dave Stevenson
2022-07-21  8:35 ` [PATCH 15/19] media: i2c: imx290: Create controls for fwnode properties Laurent Pinchart
2022-07-21 10:06   ` Alexander Stein
2022-07-21  8:35 ` [PATCH 16/19] media: i2c: imx290: Move registers with fixed value to init array Laurent Pinchart
2022-07-21 10:08   ` Alexander Stein
2022-07-21 10:40     ` Laurent Pinchart
2022-07-21 11:08       ` Alexander Stein
2022-07-21 16:19         ` Dave Stevenson
2022-07-22  5:53           ` Alexander Stein
2022-07-22  9:10             ` Dave Stevenson
2022-07-21  8:35 ` [PATCH 17/19] media: i2c: imx290: Factor out format retrieval to separate function Laurent Pinchart
2022-07-21 10:11   ` Alexander Stein
2022-07-21 10:36     ` Laurent Pinchart
2022-07-21 11:12       ` Alexander Stein
2022-07-21  8:35 ` [PATCH 18/19] media: i2c: imx290: Add crop selection targets support Laurent Pinchart
2022-07-21 15:39   ` Dave Stevenson
2022-10-16  5:53     ` Laurent Pinchart
2022-07-21  8:35 ` [PATCH 19/19] media: i2c: imx290: Replace GAIN control with ANALOGUE_GAIN Laurent Pinchart
2022-07-21 10:11   ` Alexander Stein
2022-08-23  1:11 ` [PATCH 00/19] media: i2c: imx290: Miscellaneous improvements Laurent Pinchart
2022-10-10 10:31   ` Dave Stevenson
2022-10-16  5:37     ` Laurent Pinchart
2022-10-16  7:34       ` Dave Stevenson
2022-10-17 18:07         ` Dave Stevenson
2022-10-18 13:43           ` Dave Stevenson
2022-10-19 10:33           ` Sakari Ailus
2022-10-19 11:38             ` Dave Stevenson
2022-10-19 13:27               ` Sakari Ailus
2023-01-14 16:03                 ` 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=2761166.tdWV9SEqCh@steina-w \
    --to=alexander.stein@ew.tq-group.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mani@kernel.org \
    --cc=sakari.ailus@iki.fi \
    /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.