mbox series

[0/2] Add imx577 compatible to imx412

Message ID 20220607134057.2427663-1-bryan.odonoghue@linaro.org (mailing list archive)
Headers show
Series Add imx577 compatible to imx412 | expand

Message

Bryan O'Donoghue June 7, 2022, 1:40 p.m. UTC
Right now the imx412 and imx577 are code and pin compatible however, they
are distinct pieces of silicon.

Document imx577 as a compatible enum and add the compat string to imx412.c.
This allows us to differentiate these chips in DTS and potentially to apply
any future imx412 or imx577 specific changes appropriately.

Bryan O'Donoghue (2):
  media: dt-bindings: imx412: Add imx577 compatible string
  media: i2c: imx412: Add imx577 compatible string

 Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml | 5 ++++-
 drivers/media/i2c/imx412.c                                   | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

Comments

Kieran Bingham June 7, 2022, 9:56 p.m. UTC | #1
Quoting Bryan O'Donoghue (2022-06-07 14:40:55)
> Right now the imx412 and imx577 are code and pin compatible however, they
> are distinct pieces of silicon.
> 
> Document imx577 as a compatible enum and add the compat string to imx412.c.
> This allows us to differentiate these chips in DTS and potentially to apply
> any future imx412 or imx577 specific changes appropriately.

While I think this is probably fine to get things working, there seems to
be quite a few extra features in the IMX577 [0] compared with the IMX412 [1]. 

[0] https://www.sony-semicon.co.jp/products/common/pdf/IMX412-AACK_Flyer03.pdf
[1] https://www.sony-semicon.co.jp/products/common/pdf/IMX577-AACK_Flyer.pdf

I certainly agree though that it's better to declare the camera
correctly in the DT - so it's better to add this support than 'fake' the
DT to say it's an IMX412 on the platform.


wdiff  /tmp/imx412 /tmp/imx577 

[-IMX412-AACK-] {+IMX577-AACK+}
Diagonal 7.857 mm (Type 1/2.3) 12.3 Mega-Pixel CMOS Image Sensor with Square
Pixel for Color Cameras
Description

[-IMX412-AACK-]{+The IMX577-AACK+} is a diagonal 7.857 mm (Type 1/2.3)
12.3 Mega-pixel CMOS active pixel type stacked image sensor with a
square pixel array.

{+It adopts Sony’s Stacked CMOS Image Sensor technology to achieve high
speed image capturing by column parallel A/D converter circuits and high
sensitivity and low noise image (comparing with conventional CMOS image
sensor) through the backside illuminated imaging pixel structure.+}

R, G, and B pigment primary color mosaic filter is employed. It equips
an electronic shutter with variable integration time. It operates with
three power supply voltages: analog [-2.75-] {+2.8+} V, digital 1.05 V
and 1.8 V for input/output interface and achieves low power consumption.

[-(Applications: Surveillance cameras)-]

{+In addition, this product is designed for use in consumer use
camcorder. When using this for another application, Sony Semiconductor
Solutions Corporation does not guarantee the quality and reliability of
product. Therefore, don't use this for applications other than consumer
use camcorder.  In addition, individual specification change cannot be
supported because this is a standard product.  Consult your Sony
Semiconductor Solutions Corporation sales representative if you have any
questions.+}


Features
◆ Back-illuminated and stacked CMOS image sensor
◆ Digital Overlap High Dynamic Range (DOL-HDR) mode with raw data [-output-] {+output.+}
◆ High signal to noise ratio [-(SNR)-] {+(SNR).+}
◆ Full resolution @60 frame/s (Normal), 4K2K @60 frame/s (Normal), 1080p @240 frame/s
Full resolution @40 frame/s (12 bit Normal), Full resolution @30 frame/s (DOL-HDR, 2 frame)
◆ Output video format of [-RAW12/10-] {+RAW12/10/8, COMP8.+}
◆ [-Low-] Power [-Streaming-] {+Save+} Mode with MIPI ULPS operation
◆ Pixel binning readout and V sub-sampling [-function-] {+function.+}
◆ Independent flipping and [-mirroring-] {+mirroring.+}
◆ Input clock frequency [-6, 12, 18, 24 or-] {+6 to+} 27 MHz
◆ CSI-2 serial data output (MIPI 2lane/4lane, Max. 2.1 Gbps/lane, D-PHY spec. ver. 1.2 compliant)
◆ 2-wire serial [-communication-] {+communication.+}
◆ Two PLLs for independent clock generation for pixel control and data output [-interface-] {+interface.+}
◆ Defect Pixel Correction (DPC)
◆ {+Ambient Light Sensor (ALS)
◆+} Fast mode [-transition-] {+transition.+} (on the fly)
◆ Dual sensor synchronization operation (Multi camera compatible)
◆ 7 k bit of OTP ROM for [-users-] {+users.
◆ Built-in temperature sensor+}
◆ 10-bit/12-bit A/D conversion on chip
◆ Horizontal Low Power [-analog-] {+Analog+} Cropping
{+◆ Window Scanning mode+}
◆ 92-pin high-precision ceramic package


So picking out the diffs from that:

IMX412
 - Designed for Surveillance cameras
 - Defined input clocks of 6, 12, 18, 24 or 27MHz

IMX577
 + Designed for Camcorder use cases
 + May have an extra RAW8, COMP8 output format.
 + Less definition on input clock '6 to 27MHz' (may be the same)
 + Has an Ambiant light sensor
 + Has Built in temperature sensor
 + Window scanning mode

The extra RAW modes, ALS and temperature sensor may be key
differentiators in the future to be aware of. Perhaps they can be
handled by the compatible string though.

If only we had better/more open drivers/documentation for these
components I bet they could be factored out for better support.

--
Kieran



> 
> Bryan O'Donoghue (2):
>   media: dt-bindings: imx412: Add imx577 compatible string
>   media: i2c: imx412: Add imx577 compatible string
> 
>  Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml | 5 ++++-
>  drivers/media/i2c/imx412.c                                   | 1 +
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> -- 
> 2.36.1
>
Bryan O'Donoghue June 7, 2022, 10:01 p.m. UTC | #2
On 07/06/2022 22:56, Kieran Bingham wrote:
> Quoting Bryan O'Donoghue (2022-06-07 14:40:55)
>> Right now the imx412 and imx577 are code and pin compatible however, they
>> are distinct pieces of silicon.
>>
>> Document imx577 as a compatible enum and add the compat string to imx412.c.
>> This allows us to differentiate these chips in DTS and potentially to apply
>> any future imx412 or imx577 specific changes appropriately.
> While I think this is probably fine to get things working, there seems to
> be quite a few extra features in the IMX577 [0] compared with the IMX412 [1].
> 
> [0]https://www.sony-semicon.co.jp/products/common/pdf/IMX412-AACK_Flyer03.pdf
> [1]https://www.sony-semicon.co.jp/products/common/pdf/IMX577-AACK_Flyer.pdf
> 
> I certainly agree though that it's better to declare the camera
> correctly in the DT - so it's better to add this support than 'fake' the
> DT to say it's an IMX412 on the platform.

Agreed the specs differ but the only silicon enabling code I have access 
to - from the qcom camx release is a 1:1 for 412 and 577.

The init process works for me on rb5 to obtain 10 bit bayer @ 30 fps.

Agreed the 577 does a whole bunch of extra stuff I just have no 
reference either in PDF or code on how to do any of it.

Its "good enough" for me in 412 mode.

---
bod
Sakari Ailus June 14, 2022, 12:05 p.m. UTC | #3
Hi Kieran,

On Tue, Jun 07, 2022 at 10:56:32PM +0100, Kieran Bingham wrote:
> So picking out the diffs from that:
> 
> IMX412
>  - Designed for Surveillance cameras
>  - Defined input clocks of 6, 12, 18, 24 or 27MHz

Probably the spec just these while other frequencies in the range would
work equally well --- with different register configuration.

The sensor might work with the CCS driver, too, with MSR configuration
taken from this driver.