Skip to content

Starvis2 sensor driver support (IMX662) - #7615

Draft
6by9 wants to merge 12 commits into
raspberrypi:rpi-6.18.yfrom
6by9:rpi-6.18.y-starvis2
Draft

Starvis2 sensor driver support (IMX662)#7615
6by9 wants to merge 12 commits into
raspberrypi:rpi-6.18.yfrom
6by9:rpi-6.18.y-starvis2

Conversation

@6by9

@6by9 6by9 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

6.18 backport of IMX678 driver from 7.3 (needs upstream commit hashes), and then amend to become a generic Starvis 2 driver supporting IMX678 (8MPix), IMX675 (5MPix), IMX662 (2MPix), and eventually IMX585 and IMX832. Includes overlays for each of the supported sensors.

jailuthra and others added 9 commits September 9, 2026 15:47
Sony IMX678 is an 8.4 Megapixel (3856x2180) CMOS sensor, that can output
pixels over MIPI CSI-2 bus. Add bindings for it.

Runtime detection for mono vs color variant of this sensor is feasible
by reading a register, but it's not always desirable given the sensor
needs to be powered on for it, potentially flashing a privacy LED or
wasting precious boot time.

The manufacturer or vendor knows which sensor variant they are putting
on their board, so we define the compatible property to expect the
(color/mono) specific name of the sensor, along with a generic fallback.

Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Add a V4L2 subdev driver for the Sony IMX678 image sensor.

IMX678 is a diagonal 8.86 mm (Type 1/1.8) CMOS active pixel type
solid-state image sensor with a square pixel array and 8.40 M effective
pixels.

The following features are supported by this driver:
- MIPI RAW12 output
- Monochrome and Color (Bayer filter) variants
- Multiple input clock frequencies
- Multiple link frequencies
- VBLANK and HBLANK control for variable framerate
- VFLIP and HFLIP control for flipping readout
- Exposure and analogue gain control
- Test pattern control

Following features are not currently supported:
- MIPI RAW10 output
- Pixel-perfect crop reporting, accounting for the shift-by-1 when
  doing HFLIP/VFLIP where the sensor maintains RGGB bayer ordering

Along with the ones below which depend on the new raw sensor model:
- Embedded data stream
- Freely configurable cropping
- Increased framerate when cropping
- 2x2 binning support

Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
Reviewed-by: Tarang Raval <tarang.raval@siliconsignals.io>
[Sakari Ailus: Add an extra newline to the enum_mbus_code op.]
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
The register layout and programming model for multiple of the
Sony Starvis2 sensors is identical, so prepare for supporting
those by renaming all common parts of the driver to a starvis2_
prefix, and renaming the driver.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
link_freqs_reg_value is table that just reverses the order of the
link frequency enum.

Reverse the order of the link frequencies so that the table is
redundant, and remove it.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
If the requested region matched the defined active area then
the driver switched to all-pixel mode. This left the possibility
that the activeare was incorrect and not reading out the area
expected.

Switch to always requesting window mode.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
…er models

Several of the Sony Starvis 2 sensors are identical in the
majority of their programming, but differ largely only in the
size of pixel array and some timing parameters.

Parameterise those parameters in preparation for supporting other
variants.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
IMX662 is a 1080p Starvis 2 sensor that follows the same programming
pattern as IMX678, so add it to the newly parameterised common
driver.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
The IMX675 is a 5MPix Starvis2 sensor that follows the same
programming pattern as IMX678 and IMX662, so add it into the
driver.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
@6by9
6by9 force-pushed the rpi-6.18.y-starvis2 branch from f735d5f to 244579d Compare September 9, 2026 16:07
6by9 added 3 commits September 9, 2026 17:12
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
@6by9
6by9 force-pushed the rpi-6.18.y-starvis2 branch from 244579d to 5338a48 Compare September 9, 2026 16:13
@6by9 6by9 mentioned this pull request Sep 9, 2026
@6by9

6by9 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

Working with IMX662, although only at 32.86fps at present (doubling HMAX for all link frequencies is erroneous), and missing HGC selection (won't be acceptable to upstream in current form).

@naushir

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants