Files
linux-cryptodev-2.6/Documentation/devicetree/bindings/media/i2c/ti,ds90ub960.yaml
Laurent Pinchart 4e181beb68 dt-bindings: media: imx274: Make clocks property required
The sensor requires an external clock, and drivers need to access the
clock to retrieve its frequency in order to configure the sensor. This
makes usage of the clocks property mandatory for a system to work
properly. Mark the clocks and clock-names properties as required, and
update the example accordingly.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Mehdi Djait <mehdi.djait@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
2025-09-09 15:59:17 +02:00

442 lines
11 KiB
YAML

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ti,ds90ub960.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments DS90UB9XX Family FPD-Link Deserializer Hubs
maintainers:
- Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
description:
The TI DS90UB9XX devices are FPD-Link video deserializers with I2C and GPIO
forwarding.
allOf:
- $ref: /schemas/i2c/i2c-atr.yaml#
properties:
compatible:
enum:
- ti,ds90ub960-q1
- ti,ds90ub9702-q1
reg:
maxItems: 1
clocks:
maxItems: 1
description:
Reference clock connected to the REFCLK pin.
clock-names:
items:
- const: refclk
powerdown-gpios:
maxItems: 1
description:
Specifier for the GPIO connected to the PDB pin.
i2c-alias-pool:
minItems: 1
maxItems: 32
links:
type: object
additionalProperties: false
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
ti,manual-strobe:
type: boolean
description:
Enable manual strobe position and EQ level
patternProperties:
'^link@[0-3]$':
type: object
additionalProperties: false
properties:
reg:
description: The link number
maxItems: 1
'#address-cells':
const: 1
'#size-cells':
const: 0
i2c-alias:
$ref: /schemas/types.yaml#/definitions/uint32
description:
The I2C address used for the serializer. Transactions to this
address on the I2C bus where the deserializer resides are
forwarded to the serializer.
ti,rx-mode:
$ref: /schemas/types.yaml#/definitions/uint32
enum:
- 0 # RAW10
- 1 # RAW12 HF
- 2 # RAW12 LF
- 3 # CSI2 SYNC
- 4 # CSI2 NON-SYNC
description:
FPD-Link Input Mode. This should reflect the hardware and the
default mode of the connected device.
ti,cdr-mode:
$ref: /schemas/types.yaml#/definitions/uint32
enum:
- 0 # FPD-Link III
- 1 # FPD-Link IV
description:
FPD-Link CDR Mode. This should reflect the hardware and the
default mode of the connected device.
ti,strobe-pos:
$ref: /schemas/types.yaml#/definitions/int32
minimum: -13
maximum: 13
description: Manual strobe position
ti,eq-level:
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 14
description: Manual EQ level
patternProperties:
'^serializer(@[0-9a-f]+)*$':
type: object
description: FPD-Link Serializer node
required:
- reg
- i2c-alias
- ti,rx-mode
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: FPD-Link input 0
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
description:
Endpoint for FPD-Link port. If the RX mode for this port is RAW,
hsync-active and vsync-active must be defined.
port@1:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: FPD-Link input 1
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
description:
Endpoint for FPD-Link port. If the RX mode for this port is RAW,
hsync-active and vsync-active must be defined.
port@2:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: FPD-Link input 2
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
description:
Endpoint for FPD-Link port. If the RX mode for this port is RAW,
hsync-active and vsync-active must be defined.
port@3:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: FPD-Link input 3
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
description:
Endpoint for FPD-Link port. If the RX mode for this port is RAW,
hsync-active and vsync-active must be defined.
port@4:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: CSI-2 Output 0
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
minItems: 1
maxItems: 4
link-frequencies:
maxItems: 1
required:
- data-lanes
- link-frequencies
port@5:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: CSI-2 Output 1
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
minItems: 1
maxItems: 4
link-frequencies:
maxItems: 1
required:
- data-lanes
- link-frequencies
required:
- port@0
- port@1
- port@2
- port@3
- port@4
- port@5
required:
- compatible
- reg
- clocks
- clock-names
- ports
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
clock-frequency = <400000>;
#address-cells = <1>;
#size-cells = <0>;
deser@3d {
compatible = "ti,ds90ub960-q1";
reg = <0x3d>;
clock-names = "refclk";
clocks = <&fixed_clock>;
powerdown-gpios = <&pca9555 7 GPIO_ACTIVE_LOW>;
i2c-alias-pool = <0x4a 0x4b 0x4c 0x4d 0x4e 0x4f>;
ports {
#address-cells = <1>;
#size-cells = <0>;
/* Port 0, Camera 0 */
port@0 {
reg = <0>;
ub960_fpd3_1_in: endpoint {
remote-endpoint = <&ub953_1_out>;
};
};
/* Port 1, Camera 1 */
port@1 {
reg = <1>;
ub960_fpd3_2_in: endpoint {
remote-endpoint = <&ub913_2_out>;
hsync-active = <0>;
vsync-active = <1>;
};
};
/* Port 2, unconnected */
port@2 {
reg = <2>;
};
/* Port 3, unconnected */
port@3 {
reg = <3>;
};
/* Port 4, CSI-2 TX */
port@4 {
reg = <4>;
ds90ub960_0_csi_out: endpoint {
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <800000000>;
remote-endpoint = <&csi2_phy0>;
};
};
/* Port 5, unconnected */
port@5 {
reg = <5>;
};
};
links {
#address-cells = <1>;
#size-cells = <0>;
/* Link 0 has DS90UB953 serializer and IMX274 sensor */
link@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
i2c-alias = <0x44>;
ti,rx-mode = <3>;
serializer1: serializer@30 {
compatible = "ti,ds90ub953-q1";
reg = <0x30>;
gpio-controller;
#gpio-cells = <2>;
#clock-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ub953_1_in: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&sensor_1_out>;
};
};
port@1 {
reg = <1>;
ub953_1_out: endpoint {
remote-endpoint = <&ub960_fpd3_1_in>;
};
};
};
i2c {
#address-cells = <1>;
#size-cells = <0>;
sensor@1a {
compatible = "sony,imx274";
reg = <0x1a>;
clocks = <&serializer>;
clock-names = "inck";
reset-gpios = <&serializer1 0 GPIO_ACTIVE_LOW>;
port {
sensor_1_out: endpoint {
remote-endpoint = <&ub953_1_in>;
};
};
};
};
};
}; /* End of link@0 */
/* Link 1 has DS90UB913 serializer and MT9V111 sensor */
link@1 {
reg = <1>;
i2c-alias = <0x45>;
ti,rx-mode = <0>;
serializer2: serializer {
compatible = "ti,ds90ub913a-q1";
gpio-controller;
#gpio-cells = <2>;
clocks = <&clk_cam_48M>;
clock-names = "clkin";
#clock-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ub913_2_in: endpoint {
remote-endpoint = <&sensor_2_out>;
pclk-sample = <1>;
};
};
port@1 {
reg = <1>;
ub913_2_out: endpoint {
remote-endpoint = <&ub960_fpd3_2_in>;
};
};
};
i2c {
#address-cells = <1>;
#size-cells = <0>;
sensor@48 {
compatible = "aptina,mt9v111";
reg = <0x48>;
clocks = <&serializer2>;
port {
sensor_2_out: endpoint {
remote-endpoint = <&ub913_2_in>;
};
};
};
};
};
}; /* End of link@1 */
};
};
};
...