mbox series

[v4,00/17] media: gmsl: Reliability improvements

Message ID 20210412093451.14198-1-jacopo+renesas@jmondi.org
Headers show
Series media: gmsl: Reliability improvements | expand

Message

Jacopo Mondi April 12, 2021, 9:34 a.m. UTC
Hello,
   series following:
v1: https://patchwork.linuxtv.org/project/linux-media/list/?series=4650
v2: https://patchwork.linuxtv.org/project/linux-media/list/?series=4861
v3: https://patchwork.linuxtv.org/project/linux-media/list/?series=4904

This series is a minor rework that builds on top of the comments received on v3.

I've re-order patches for better consumption:
[01/17] -> [05/17]: max9286 style fixes
[06/17] -> [07/17]: max9271 minor fixes
[08/17] -> [10/17]: rdamc21 fixes: these patches are relevant for RDACM21
 		    stability
[11/17] -> [15/17]: rdacm20 fixes
[16/17] -> [17/17]: GMSL initialization series rework, also relevant for syste,
                    stability

The only part where consensus still has to be reached is the last two patches.
Unfortunately, Sakari's suggestion of moving the remotes initialization to
s_stream() time did not work, and this version is the only one I've found that
gurantees a reliable initialization sequence. I've cc-ed Hans and Sakari to
continue the discussion.

Run quite some tests with Eagle and RDACM21: 1378 boot cycles with 100% boot
success (thanks Kieran for the board access).

Thanks
   j

Jacopo Mondi (17):
  media: i2c: max9286: Adjust parameters indent
  media: i2c: max9286: Rename reverse_channel_mv
  media: i2c: max9286: Cache channel amplitude
  media: i2c: max9286: Define high channel amplitude
  media: i2c: max9286: Rework comments in .bound()
  media: i2c: max9271: Check max9271_write() return
  media: i2c: max9271: Introduce wake_up() function
  media: i2c: rdacm21: Add dealy after OV490 reset
  media: i2c: rdacm21: Fix OV10640 powerup
  media: i2c: rdacm21: Power up OV10640 before OV490
  media: i2c: rdacm20: Enable noise immunity
  media: i2c: rdacm20: Embed 'serializer' field
  media: i2c: rdacm20: Report camera module name
  media: i2c: rdacm20: Check return values
  media: i2c: rdacm20: Re-work ov10635 reset
  media: v4l2-subdev: De-deprecate init() subdev op
  media: gmsl: Reimplement initialization sequence

 drivers/media/i2c/max9271.c |  42 +++++++++--
 drivers/media/i2c/max9271.h |   9 +++
 drivers/media/i2c/max9286.c |  56 +++++++++------
 drivers/media/i2c/rdacm20.c | 135 +++++++++++++++++++++---------------
 drivers/media/i2c/rdacm21.c | 124 +++++++++++++++++++++------------
 include/media/v4l2-subdev.h |  15 +++-
 6 files changed, 253 insertions(+), 128 deletions(-)

--
2.31.1

Comments

Laurent Pinchart April 14, 2021, 11:14 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Mon, Apr 12, 2021 at 11:34:45AM +0200, Jacopo Mondi wrote:
> Enable the noise immunity threshold at the end of the rdacm20

> initialization routine.

> 

> The rdacm20 camera module has been so far tested with a startup

> delay that allowed the embedded MCU to program the serializer. If

> the initialization routine is run before the MCU programs the

> serializer and the image sensor and their addresses gets changed

> by the rdacm20 driver it is required to manually enable the noise

> immunity threshold to make the communication on the control channel

> more reliable.

> 

> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>


Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>


> ---

>  drivers/media/i2c/rdacm20.c | 14 +++++++++++++-

>  1 file changed, 13 insertions(+), 1 deletion(-)

> 

> diff --git a/drivers/media/i2c/rdacm20.c b/drivers/media/i2c/rdacm20.c

> index c1a717153303..5e0314a2b1ca 100644

> --- a/drivers/media/i2c/rdacm20.c

> +++ b/drivers/media/i2c/rdacm20.c

> @@ -539,7 +539,19 @@ static int rdacm20_initialize(struct rdacm20_device *dev)

>  

>  	dev_info(dev->dev, "Identified MAX9271 + OV10635 device\n");

>  

> -	return 0;

> +	/*

> +	 * Set reverse channel high threshold to increase noise immunity.

> +	 *

> +	 * This should be compensated by increasing the reverse channel

> +	 * amplitude on the remote deserializer side.

> +	 *

> +	 * TODO Inspect the embedded MCU programming sequence to make sure

> +	 * there are no conflicts with the configuration applied here.

> +	 *

> +	 * TODO Clarify the embedded MCU startup delay to avoid write

> +	 * collisions on the I2C bus.

> +	 */

> +	return max9271_set_high_threshold(&dev->serializer, true);

>  }

>  

>  static int rdacm20_probe(struct i2c_client *client)


-- 
Regards,

Laurent Pinchart