mbox series

[v4,0/3] media: i2c: imx290: check for availability in probe()

Message ID 20240903-imx290-avail-v4-0-e4a6c0837f0b@skidata.com
Headers show
Series media: i2c: imx290: check for availability in probe() | expand

Message

Benjamin Bara Sept. 3, 2024, 2:54 p.m. UTC
Hi!

This series introduces i2c communication with the imx290 sensor during
probe s.t. the v4l2 subdev is not initialized when the chip is not
reachable.

The datasheets show that INCKSEL* registers have a different default
value after reset on imx290[1] and imx327[2], however I am not sure if
this is a sufficient identification option - therefore I just removed
the current CHIP_ID register for now.

Thank you all for the feedback and the discussion, I updated the series
to remove the trial and errors and reduced it to the suggested parts.

thanks & regards
Benjamin

[1] https://static6.arrow.com/aropdfconversion/c0c7efde6571c768020a72f59b226308b9669e45/sony_imx290lqr-c_datasheet.pdf
[2] https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/138/IMX327LQR_2D00_C_5F00_TechnicalDatasheet_5F00_E_5F00_Rev0.2.pdf

---
Changes in v4:
- old 1/7 is dropped due to the reuse of stop_streaming()
- old 2+4/7 are dropped due to forcing the subdev into an invalid state
- old 3/7 -> new 1/3: unchanged
- old 5/7 -> new 2/3: only uses the runtime PM to avoid communication
- old 6/7 -> new 3/3: uses stop_streaming() to prepare the sensor. This
  function returns the return value of the cci_write() and is probably
  more suitable than only setting the sensor to standby.
- old 7/7 is dropped, as the regulator enable detection is not really
  suitable for the "flashing privacy LED" avoidance.
- Link to v3: https://lore.kernel.org/r/20240902-imx290-avail-v3-0-b32a12799fed@skidata.com

Changes in v3:
- probably better readable in the overview
- 1/2 -> 1+6/7
- 2/2 -> 3/7 (added R-b - thx for that)
- others are new based on the discussions/suggestions
- Link to v2: https://lore.kernel.org/r/20240828-imx290-avail-v2-0-bd320ac8e8fa@skidata.com

Changes in v2:
- dropped 1/2 to ignore the read value in cci_read() (old 2/2 -> new 1/2)
- 1/2: read-back standby mode instead and ensure that it is really in standby
- new 2/2: drop chip_id register definition which seems to be incorrect
- Link to v1: https://lore.kernel.org/r/20240807-imx290-avail-v1-0-666c130c7601@skidata.com

---
Benjamin Bara (3):
      media: i2c: imx290: Remove CHIP_ID reg definition
      media: i2c: imx290: Avoid communication during probe()
      media: i2c: imx290: Check for availability in probe()

 drivers/media/i2c/imx290.c | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)
---
base-commit: eec5d86d5bac6b3e972eb9c1898af3c08303c52d
change-id: 20240807-imx290-avail-85795c27d988

Best regards,