Devicetree
 help / color / mirror / Atom feed
From: Jai Luthra <jai.luthra@ideasonboard.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
	 Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	 Conor Dooley <conor+dt@kernel.org>,
	 Sakari Ailus <sakari.ailus@linux.intel.com>,
	 Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	 Kieran Bingham <kieran.bingham@ideasonboard.com>
Cc: Lachlan Michael <Lachlan.Michael@sony.com>,
	 Ryuichi Tadano <Ryuichi.Tadano@sony.com>,
	 Kengo Hayasaka <Kengo.Hayasaka@sony.com>,
	linux-media@vger.kernel.org,  devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	 Jai Luthra <jai.luthra@ideasonboard.com>,
	 Conor Dooley <conor.dooley@microchip.com>
Subject: [PATCH v5 0/2] media: Add bindings and driver for Sony IMX678
Date: Fri, 03 Jul 2026 14:49:15 +0530	[thread overview]
Message-ID: <20260703-imx678-v5-0-0523dbed0dad@ideasonboard.com> (raw)

Hi,

This series adds dt-bindings and a basic V4L2 driver for Sony IMX678
camera sensor.

More details about the sensor and features supported in the driver are
in the relevant patches.

Support for binning and cropping has been dropped from this series, in
favor of implementing it with the new raw sensor model proposed by
Sakari. [1]

I have a WIP branch [2] that uses the new raw sensor model to implement
the following features for this sensor driver:

- Internal pads
- Streams
- Generic raw formats
- Embedded line data
- Configurable analogue crop
- Configurable binning mode
- RAW10 output

[1]: https://lore.kernel.org/all/20260409201501.975242-1-sakari.ailus@linux.intel.com/
[2]: https://github.com/jailuthra/linux/commits/imx678-meta

Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
---
Changes in v5:
- Rebase on v7.2-rc1
- Drop note about the fallback name in the bindings commit message
- Drop unnecessary code like set_pad_format() or set_framing_limits(),
those will be added later when we use them for cropping and binning
- Explicitly set format in init_state()
- No need to track rpm_in_use flag, so drop it
- Drop SUBDEV_FL_HAS_EVENTS flag
- Drop unused format parameter from program_window()
- Use container_of_const()
- Add missing media-bus-format.h header
- Cleanup comments
- Link to v4: https://lore.kernel.org/r/20260605-imx678-v4-0-58e57c67143d@ideasonboard.com

Changes in v4:
- Drop support for freely-configurable resolution through cropping and binning
- Expect both specific and generic device name in device tree compatible
- Reduce analogue gain maximum to 100 (30dB) as the gain register
  includes digital gain from 101 (30.3dB) -> 240 (72dB)
- Minor bug fixes and cleanups following review comments from Sakari,
  Tarang on v3
- Link to v3: https://lore.kernel.org/r/20260520-imx678-v3-0-8b5f9676486e@ideasonboard.com

Changes in v3:
- Use `reset-gpios`, mentioning the sensor XCLR acts like RESETN, instead of `xclr-gpios`
- Update minimum crop width and height according to the PIX_[HV]WIDTH
  register limits
- Expect the user to first select a crop rectangle using S_SELECTION,
  and then choose one of two sizes (non-binned or binned) in S_FMT. This
  matches what IMX296 already does, simplifying the selection logic
  quite a bit.
- Enumerate only the frame sizes possible for the current crop rectangle
  in ENUM_FRAMESIZES
- Link to v2: https://lore.kernel.org/r/20260516-imx678-v2-0-4854ac61d6fb@ideasonboard.com

Changes in v2:
PATCH 1:
    - Add per-variant compatibles for mono and colour, alongside the
      generic fallback, so the variant can be declared without powering
      the sensor at probe.
    - Rename reset GPIO to xclr as that's what it's called in the
      datasheet, and how it behaves.
    - Reference the generic video interface devices schema and switch to
      unevaluatedProperties.
    - Drop "link-frequencies: true"
    - Drop the T: entry for media.git from MAINTAINERS.
PATCH 2:
    - Treat the pixel rate as a fixed sensor property rather than deriving
      it from link frequency and bit depth. Removes the iclk<->pixel
      conversion helpers, instead using a fixed 8x ratio.
    - Express HBLANK in pixels with a step of 8.
    - Make VBLANK step = 2 and rewrite the exposure register when VBLANK
      changes, so the effective exposure does not silently shift.
    - Fix power sequencing: hold the sensor in reset until power_on, add the
      missing post-reset delay, and disable the clock before the regulators
      on power_off.
    - Drop the "common regs written" flag, program them in power_on.
    - Add variant match data and cross-check the register-reported type
      against DT; rename detect() to identify_model().
    - Use v4l2_link_freq_to_bitmap() and expose the full link frequency menu
      with the configured one as the selected RO option.
    - Drop unused includes and defines, misc cleanups
    - Kconfig: depend on OF_GPIO
- Link to v1: https://lore.kernel.org/r/20260513-imx678-v1-0-30fc593ed8fa@ideasonboard.com

---
Jai Luthra (2):
      dt-bindings: media: i2c: Add Sony IMX678
      media: i2c: imx678: Add driver for Sony IMX678

 .../devicetree/bindings/media/i2c/sony,imx678.yaml |  130 ++
 MAINTAINERS                                        |    7 +
 drivers/media/i2c/Kconfig                          |   11 +
 drivers/media/i2c/Makefile                         |    1 +
 drivers/media/i2c/imx678.c                         | 1446 ++++++++++++++++++++
 5 files changed, 1595 insertions(+)
---
base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
change-id: 20260513-imx678-5c1aee9c1dcf

Best regards,
-- 
Jai Luthra <jai.luthra@ideasonboard.com>


             reply	other threads:[~2026-07-03  9:20 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-03  9:19 Jai Luthra [this message]
2026-07-03  9:19 ` [PATCH v5 1/2] dt-bindings: media: i2c: Add Sony IMX678 Jai Luthra
2026-07-03  9:19 ` [PATCH v5 2/2] media: i2c: imx678: Add driver for " Jai Luthra
2026-07-03  9:35   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260703-imx678-v5-0-0523dbed0dad@ideasonboard.com \
    --to=jai.luthra@ideasonboard.com \
    --cc=Kengo.Hayasaka@sony.com \
    --cc=Lachlan.Michael@sony.com \
    --cc=Ryuichi.Tadano@sony.com \
    --cc=conor+dt@kernel.org \
    --cc=conor.dooley@microchip.com \
    --cc=devicetree@vger.kernel.org \
    --cc=kieran.bingham@ideasonboard.com \
    --cc=krzk+dt@kernel.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=robh@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox