[PATCH v3 00/19] media: gmsl: Reliability improvement

From: Jacopo Mondi
Date: Fri Mar 19 2021 - 12:42:17 EST

series following:

Compared to the following iteration it seems RDACM21 is finally fixed \o/

I'll sum-up the issue here from the last email exchange:
Basically, as patch "media: i2c: rdacm21: Fix OV10640 powerdown" of
this series describes, the OV10640 power-up was broken before you
spotted the usage of the wrong gpio pad and it was working because of
an internal pull-up on the SPWDN line, which was erroneously left
floating. Once that was fixed, the OV10640 was always identified
correctly, leaving us with this puzzling "ov490 boot timeout error"
that manifested with more or less the same frequency of the ov10640
identification issue.

In the current implementation we power up the OV490 and wait for its
firmware to boot -before- powering up the ov10640 sensor. Most
probably (or looking at the results I get noaw, most certainly) the
OV490 firmware checks for the sensor to be available and probably
tries to program it. So we're back to the issue we originally had when
the sensor was powered because of the pull up resistor, failing to
boot in case the sensor didn't startup correctly which happened in the
20% of the cases.

If I do power up the OV10640 -before- the OV490 all the firmware boot
errors are now gone. I need to tune a bit the timeouts as after the
OV490 boot the OV10640 requires some time before being accessible.
Once I nail down the right timeouts I'll send v3. So far I got 0
errors on 50 boot attempts, finally \o/

The rest of the series is almost identical a few grammar fixes apart.

Jacopo Mondi (19):
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: v4l2-subdev: De-deprecate init() subdev op
media: gmsl: Reimplement initialization sequence
media: i2c: max9286: Rework comments in .bound()
media: i2c: max9271: Check max9271_write() return
media: i2c: max9271: Introduce wake_up() function
media: i2c: rdamc21: Fix warning on u8 cast
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: 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

drivers/media/i2c/max9271.c | 37 ++++++--
drivers/media/i2c/max9271.h | 9 ++
drivers/media/i2c/max9286.c | 61 ++++++++-----
drivers/media/i2c/rdacm20.c | 174 +++++++++++++++++++++---------------
drivers/media/i2c/rdacm21.c | 117 +++++++++++++++---------
include/media/v4l2-subdev.h | 15 +++-
6 files changed, 268 insertions(+), 145 deletions(-)