All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacopo Mondi <jacopo+renesas@jmondi.org>
To: kieran.bingham+renesas@ideasonboard.com,
	laurent.pinchart+renesas@ideasonboard.com,
	niklas.soderlund+renesas@ragnatech.se, geert@linux-m68k.org
Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH 00/16] media: i2c: GMSL reliability improvements
Date: Tue, 16 Feb 2021 18:41:30 +0100	[thread overview]
Message-ID: <20210216174146.106639-1-jacopo+renesas@jmondi.org> (raw)

Hello,
  this series is based on the most recent media-master with the following
patch applied on top: "media: i2c: rdamc21: Fix warning on u8 cast"

The series contains multiple changes:

- patches from [1-8] contain enhancements to the existing camera module
  drivers. The first 7 patches apply to RDACM20 the same style comments
  received on RDACM21. Nothing controversial should be there.
  A cosmetic fix for the max9286 driver follows.

- patch [9/16] contains a fixup for the RDACM21 camera module that is required
  to avoid sporadic failures during the system initialization.

- From patches [10/16] a rework of the GMSL camera initialization procedure
  starts with 3 patches that prepare for the most substantial change on the
  series.

  The current initialization procedure for a GMSL chip looks like

	MAX9282				RDACM2x

	- probe()
	- init()
	- mux initialize()
		- probe camera 1	- probe()
					- init max9271
					- init image sensor/ISP
					- enable noise immunity
		...

	- camera 1 bound

		- probe camera n	- probe()
					- init max9271
					- init image sensor/ISP
					- enable noise immunity
	- camera n bound
	- all camera have probed
		- Increase channel amplitude

  This implies that all the initial configuration of the camera modules
  which requires several I2C transactions to configure the image sensor and
  the embedded ISP are run without noise immunity enabled.

  On a test of 50 boot cycle the failure rate for the RDACM21 camera module
  is around ~20% which is considerably bad.

  This series implements a different mechanism that allows to run the
  initialization of the camera module with noise immunity enabled, by splitting
  the operations between the usual probe() method and the .init() subdev
  core operation [1]

  The new procedure looks like

	MAX9282				RDACM2x

	- probe()
	- init()
	- mux initialize()
		- probe camera 1	- probe()
					- init max9271
					- enable noise immunity
	- camera 1 bound
	- increase channel amplitude
	- camera 1.init()
					- init image sensor/ISP
	- restore initial channel amplitude

		...
		- probe camera n	- probe()
					- init max9271
					- enable noise immunity
	- camera n bound
	- increase channel amplitude
	- camera n.init()
					- init image sensor/ISP
	- all camera have probed

  This allows to run the image sensor/ISP initialization with noise immunity
  enabled, as that's the part that requires the most I2C writes, being the
  components programmed with register-value tables.

  The same boot tests shows a failure percentage of 13%, considerably lower
  than the current version. It also allows to increase the I2C bit rate to the
  default 339 Kbps for which the setup/hold time are calibrated.

  Bouns points: this helps isolating the MAX9271 initialization and will make
  it easier making the max9271 a self-contained driver as suggested by Mauro.

  [1] All good and glorious BUT: all of this relies on the usage of a subdev
  operation that is considered deprecated. Is it an hard limitation ?

  GMSL is kind of different beast compared to usual subdevices, so it might
  make sense to make an exception in this case ?

Thanks
   j

Jacopo Mondi (16):
  media: i2c: rdacm20: Enable noise immunity
  media: i2c: rdacm20: Embedded 'serializer' field
  media: i2c: rdacm20: Replace goto with a loop
  media: i2c: rdacm20: Report camera module name
  media: i2c: rdacm20: Check return values
  media: i2c: rdacm20: Re-work ov10635 reset
  media: i2c: rdacm2x: Fix wake up delay
  media: i2c: max9286: Adjust parameters indent
  media: i2c: rdacm21: Re-work OV10640 initialization
  media: i2c: max9286: Rename reverse_channel_mv
  media: i2c: max9286: Cache channel amplitude
  media: i2c: max9286: Define high channel amplitude
  media: i2c: rdacm2x: Implement .init() subdev op
  media: i2c: max9286: Initialize remotes when bound
  media: i2c: max9286: Rework comments in .bound()
  media: i2c: gmsl: Use 339Kbps I2C bit-rate

 drivers/media/i2c/max9286.c |  67 ++++++++++------
 drivers/media/i2c/rdacm20.c | 153 +++++++++++++++++++-----------------
 drivers/media/i2c/rdacm21.c |  73 ++++++++++-------
 3 files changed, 167 insertions(+), 126 deletions(-)

--
2.30.0


             reply	other threads:[~2021-02-16 17:42 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-16 17:41 Jacopo Mondi [this message]
2021-02-16 17:41 ` [PATCH 01/16] media: i2c: rdacm20: Enable noise immunity Jacopo Mondi
2021-02-17 12:55   ` Kieran Bingham
2021-02-22  0:49     ` Laurent Pinchart
2021-02-22 14:59       ` Jacopo Mondi
2021-02-24 20:35         ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 02/16] media: i2c: rdacm20: Embedded 'serializer' field Jacopo Mondi
2021-02-17 12:56   ` Kieran Bingham
2021-02-22  0:58   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 03/16] media: i2c: rdacm20: Replace goto with a loop Jacopo Mondi
2021-02-17 13:01   ` Kieran Bingham
2021-02-22  1:05     ` Laurent Pinchart
2021-02-22 15:06       ` Jacopo Mondi
2021-02-24 20:27         ` Laurent Pinchart
2021-02-25  8:56           ` Kieran Bingham
2021-02-16 17:41 ` [PATCH 04/16] media: i2c: rdacm20: Report camera module name Jacopo Mondi
2021-02-17 13:02   ` Kieran Bingham
2021-02-22  1:06   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 05/16] media: i2c: rdacm20: Check return values Jacopo Mondi
2021-02-17 13:08   ` Kieran Bingham
2021-02-22  1:09   ` Laurent Pinchart
2021-02-22 15:08     ` Jacopo Mondi
2021-02-16 17:41 ` [PATCH 06/16] media: i2c: rdacm20: Re-work ov10635 reset Jacopo Mondi
2021-02-17 13:22   ` Kieran Bingham
2021-02-22  1:15   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 07/16] media: i2c: rdacm2x: Fix wake up delay Jacopo Mondi
2021-02-17  8:02   ` Geert Uytterhoeven
2021-02-17 13:33   ` Kieran Bingham
2021-02-22  1:18     ` Laurent Pinchart
2021-02-22 15:11       ` Jacopo Mondi
2021-02-24 20:29         ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 08/16] media: i2c: max9286: Adjust parameters indent Jacopo Mondi
2021-02-17 13:36   ` Kieran Bingham
2021-02-22  1:20   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 09/16] media: i2c: rdacm21: Re-work OV10640 initialization Jacopo Mondi
2021-02-17  8:06   ` Geert Uytterhoeven
2021-02-17 13:55   ` Kieran Bingham
2021-02-22  1:27   ` Laurent Pinchart
2021-02-22 15:19     ` Jacopo Mondi
2021-02-24 20:30       ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 10/16] media: i2c: max9286: Rename reverse_channel_mv Jacopo Mondi
2021-02-17  8:07   ` Geert Uytterhoeven
2021-02-18 15:06   ` Kieran Bingham
2021-02-22  1:29   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 11/16] media: i2c: max9286: Cache channel amplitude Jacopo Mondi
2021-02-17  8:08   ` Geert Uytterhoeven
2021-02-18 15:39   ` Kieran Bingham
2021-02-22  1:33   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 12/16] media: i2c: max9286: Define high " Jacopo Mondi
2021-02-18 15:39   ` Kieran Bingham
2021-02-22  1:35   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 13/16] media: i2c: rdacm2x: Implement .init() subdev op Jacopo Mondi
2021-02-17  8:17   ` Geert Uytterhoeven
2021-02-18 16:13   ` Kieran Bingham
2021-02-22  1:52     ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 14/16] media: i2c: max9286: Initialize remotes when bound Jacopo Mondi
2021-02-17  8:19   ` Geert Uytterhoeven
2021-02-18 16:00   ` Kieran Bingham
2021-02-22  2:03   ` Laurent Pinchart
2021-02-16 17:41 ` [PATCH 15/16] media: i2c: max9286: Rework comments in .bound() Jacopo Mondi
2021-02-18 16:03   ` Kieran Bingham
2021-02-16 17:41 ` [PATCH 16/16] media: i2c: gmsl: Use 339Kbps I2C bit-rate Jacopo Mondi
2021-02-17  8:19   ` Geert Uytterhoeven
2021-02-18 16:07   ` Kieran Bingham
2021-02-22  2:06     ` Laurent Pinchart
  -- strict thread matches above, loose matches on Subject: below --
2021-02-16 17:39 [PATCH 00/16] media: i2c: GMSL reliability improvements Jacopo Mondi

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=20210216174146.106639-1-jacopo+renesas@jmondi.org \
    --to=jacopo+renesas@jmondi.org \
    --cc=geert@linux-m68k.org \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    --subject='Re: [PATCH 00/16] media: i2c: GMSL reliability improvements' \
    /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

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.