[PATCH v4 1/2] dt-bindings: media: i2c: Add Sony IMX678
From: Jai Luthra
Date: Fri Jun 05 2026 - 11:36:48 EST
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.
This should still be followed by the generic fallback device name,
"sony,imx678". If some vendor wants to share firmware (DT blobs) across
"products" or SKUs that only differ in the mono vs color variant of the
sensor used, they *can* do it by skipping the specific name at the cost
of a build-time warning from dtbs_check.
Drivers are expected to handle all three device names (two specific, and
the generic fallback) gracefully.
Signed-off-by: Jai Luthra <jai.luthra@xxxxxxxxxxxxxxxx>
---
Changes in v4:
- Follow Conor's suggestion of mandating both the specific and generic
device name in the compatible property.
- Fix DVDD description and example, s/1.2V/1.1V
---
.../devicetree/bindings/media/i2c/sony,imx678.yaml | 130 +++++++++++++++++++++
MAINTAINERS | 6 +
2 files changed, 136 insertions(+)
diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx678.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx678.yaml
new file mode 100644
index 000000000000..098f72544216
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/sony,imx678.yaml
@@ -0,0 +1,130 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (C) 2026 Ideas on Board Oy
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/sony,imx678.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sony IMX678 Sensor
+
+maintainers:
+ - Jai Luthra <jai.luthra@xxxxxxxxxxxxxxxx>
+
+description:
+ Sony IMX678 diagonal 8.86 mm (Type 1/1.8) CMOS active pixel type solid-state
+ image sensor with a square pixel array and 8.40M (3856x2180) effective pixels.
+
+allOf:
+ - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - sony,imx678-aamr
+ - sony,imx678-aaqr
+ - const: sony,imx678
+ description:
+ The IMX678 sensor exists in a colour variant (IMX678-AAQR) and a mono
+ variant (IMX678-AAMR). The variant-specific compatible describes the
+ exact sensor variant, with the generic IMX678 compatible as a fallback.
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ description: |
+ Input clock (INCK). Only the rates listed in the datasheet are supported:
+ 13.5, 18, 24, 27, 36, 37.125, 72, and 74.25 MHz.
+ maxItems: 1
+
+ avdd-supply:
+ description: Analog power supply (3.3V)
+
+ ovdd-supply:
+ description: Interface power supply (1.8V)
+
+ dvdd-supply:
+ description: Digital power supply (1.1V)
+
+ reset-gpios:
+ description: Sensor RESETN (XCLR) GPIO
+ maxItems: 1
+
+ port:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ additionalProperties: false
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ oneOf:
+ - items:
+ - const: 1
+ - const: 2
+ - items:
+ - const: 1
+ - const: 2
+ - const: 3
+ - const: 4
+ - items:
+ - const: 1
+ - const: 2
+ - const: 3
+ - const: 4
+ - const: 5
+ - const: 6
+ - const: 7
+ - const: 8
+
+ required:
+ - data-lanes
+ - link-frequencies
+
+ required:
+ - endpoint
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - avdd-supply
+ - ovdd-supply
+ - dvdd-supply
+ - port
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ camera@1a {
+ compatible = "sony,imx678-aaqr", "sony,imx678";
+ reg = <0x1a>;
+ clocks = <&imx678_clk>;
+
+ avdd-supply = <&camera_avdd_3v3>;
+ ovdd-supply = <&camera_ovdd_1v8>;
+ dvdd-supply = <&camera_dvdd_1v1>;
+
+ reset-gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+
+ port {
+ imx678: endpoint {
+ remote-endpoint = <&cam>;
+ data-lanes = <1 2 3 4>;
+ link-frequencies = /bits/ 64 <720000000>;
+ };
+ };
+ };
+ };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index 2fb1c75afd16..6b368345a771 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -24911,6 +24911,12 @@ T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/sony,imx415.yaml
F: drivers/media/i2c/imx415.c
+SONY IMX678 SENSOR DRIVER
+M: Jai Luthra <jai.luthra@xxxxxxxxxxxxxxxx>
+L: linux-media@xxxxxxxxxxxxxxx
+S: Maintained
+F: Documentation/devicetree/bindings/media/i2c/sony,imx678.yaml
+
SONY MEMORYSTICK SUBSYSTEM
M: Maxim Levitsky <maximlevitsky@xxxxxxxxx>
M: Alex Dubov <oakad@xxxxxxxxx>
--
2.54.0