[PATCH v6 1/2] dt-bindings: media: add ITE IT6625/IT6626 HDMI bridge binding

From: Hermes Wu via B4 Relay

Date: Wed Jul 22 2026 - 07:19:55 EST


From: Hermes Wu <Hermes.wu@xxxxxxxxxx>

Document the devicetree binding for the ITE IT6625/IT6626 HDMI to
MIPI CSI-2 bridge. The device exposes two graph ports: port@0
(MIPI0) and port@1 (MIPI1), the two selectable CSI-2 D-PHY/C-PHY
outputs. Only port@0 is required, since a board only needs to wire up
as many of the bridge's outputs as it actually uses.

Signed-off-by: Hermes Wu <Hermes.wu@xxxxxxxxxx>
---
Changes in v6:
- Unchanged. The v5 automated review flagged that the it6626
conditional's `required: [bus-type]` constraint, expressed under
`properties: { endpoint: {...} }`, doesn't match an `endpoint@N`
unit-addressed node and could in principle be bypassed. Checked
against mipi-ccs.yaml, an actively-maintained upstream binding that
requires bus-type (among other properties) via the exact same
`properties.endpoint.required` idiom with no patternProperties --
direct evidence this is accepted convention, not a defect, so no
fix was made.

Changes in v4:
- Drop port@2 (the HDMI connector input graph port) entirely: it
added no constraints beyond graph.yaml's generic endpoint-base, and
the driver doesn't use this graph port for anything schema-relevant,
so there was nothing for a consumer devicetree to usefully validate
against it. Found by the automated review of v3, which suggested
adding it to `required` instead -- dropping it entirely was judged
the better fix since the port carried no real constraints to begin
with.
- Require bus-type on port@0/port@1 endpoints when compatible contains
"ite,it6626": the driver defaults to D-PHY when bus-type is omitted,
which is always correct for it6625 (D-PHY only) but would silently
misconfigure an it6626 board actually wired for C-PHY. Also found by
the automated review of v3.

One other v3 review finding was checked and is not being acted on:
- The plain `properties: { endpoint: {...} }` override used for each
port technically doesn't reach graph.yaml's separate
`patternProperties` matcher, so an `endpoint@0`-style node could in
principle bypass the local data-lanes/bus-type constraints. This is
the same convention already used by other single-endpoint-per-port
bindings in-tree (e.g. thine,thp7312.yaml), not a defect unique to
this binding.

Changes in v2:
- Restrict port@0/port@1 endpoint bus-type to D-PHY (4) only when
compatible is "ite,it6625", via an allOf/if/then constraint. IT6625
only supports MIPI CSI-2 D-PHY output; the schema previously allowed
both C-PHY (1) and D-PHY (4) unconditionally, so a devicetree
claiming "ite,it6625" with bus-type = C-PHY passed schema validation
despite being invalid on that hardware. IT6626, which supports both
PHY types, is unaffected. Found by the sashiko.dev automated review
of v1.
---
.../devicetree/bindings/media/i2c/ite,it6625.yaml | 169 +++++++++++++++++++++
1 file changed, 169 insertions(+)

diff --git a/Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml b/Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..fed732e4428ba0098b0a5580cfaf4b704af21a8e
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml
@@ -0,0 +1,169 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/ite,it6625.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ITE IT6625/IT6626 HDMI to dual MIPI CSI-2 bridge
+
+maintainers:
+ - Hermes Wu <Hermes.wu@xxxxxxxxxx>
+
+description: |-
+ The ITE IT6625 and IT6626 are HDMI to MIPI CSI-2 bridge devices.
+ IT6625 supports an HDMI 2.0 input and converts it to one or two D-PHY CSI
+ outputs, while IT6626 supports an HDMI 2.1 input and converts it to one or
+ two C/D-PHY CSI outputs. The bridges are programmable through I2C and
+ expose two selectable CSI-2 output ports. The bridge can operate in
+ split mode or clone mode.
+
+properties:
+ compatible:
+ enum:
+ - ite,it6625
+ - ite,it6626
+
+ reg:
+ maxItems: 1
+
+ reset-gpios:
+ description:
+ GPIO connected to the active-low reset line.
+ maxItems: 1
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+ description: CSI-2 output port MIPI0
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ minItems: 1
+ maxItems: 4
+
+ bus-type:
+ enum:
+ - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+ - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+ clock-noncontinuous: true
+ link-frequencies: true
+
+ required:
+ - data-lanes
+
+ port@1:
+ $ref: /schemas/graph.yaml#/$defs/port-base
+ unevaluatedProperties: false
+ description: CSI-2 output port MIPI1
+
+ properties:
+ endpoint:
+ $ref: /schemas/media/video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ data-lanes:
+ minItems: 1
+ maxItems: 4
+
+ bus-type:
+ enum:
+ - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+ - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
+ clock-noncontinuous: true
+ link-frequencies: true
+
+ required:
+ - data-lanes
+
+ required:
+ - port@0
+required:
+ - compatible
+ - reg
+ - ports
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: ite,it6625
+ then:
+ properties:
+ ports:
+ properties:
+ port@0:
+ properties:
+ endpoint:
+ properties:
+ bus-type:
+ const: 4
+ port@1:
+ properties:
+ endpoint:
+ properties:
+ bus-type:
+ const: 4
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: ite,it6626
+ then:
+ properties:
+ ports:
+ properties:
+ port@0:
+ properties:
+ endpoint:
+ required:
+ - bus-type
+ port@1:
+ properties:
+ endpoint:
+ required:
+ - bus-type
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ hdmi-bridge@4c {
+ compatible = "ite,it6625";
+ reg = <0x4c>;
+
+ reset-gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ csi_out0: endpoint {
+ remote-endpoint = <&csi2_rx0>;
+ bus-type = <4>; /* MEDIA_BUS_TYPE_CSI2_DPHY */
+ data-lanes = <1 2 3 4>;
+ };
+ };
+ };
+ };
+ };

--
2.34.1