mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
DS90UB954-Q1 is an FPDLink-III deserializer that is mostly register compatible with DS90UB960-Q1. The main difference is that it supports half of the RX and TX ports, i.e. 2x FPDLink RX ports and 1x CSI TX port. Therefore, add support for DS90UB954 within the existing bindings. Link: https://www.ti.com/lit/gpn/ds90ub954-q1 Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@ti.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
451 lines
10 KiB
YAML
451 lines
10 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.
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- ti,ds90ub954-q1
|
|
- 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
|
|
description:
|
|
Ports represent FPD-Link inputs to the deserializer and CSI TX outputs
|
|
from the deserializer. The number of ports is model-dependent.
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- clocks
|
|
- clock-names
|
|
- ports
|
|
|
|
$defs:
|
|
FPDLink-input-port:
|
|
$ref: /schemas/graph.yaml#/$defs/port-base
|
|
unevaluatedProperties: false
|
|
description: FPD-Link input
|
|
|
|
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.
|
|
|
|
CSI2-output-port:
|
|
$ref: /schemas/graph.yaml#/$defs/port-base
|
|
unevaluatedProperties: false
|
|
description: CSI-2 Output
|
|
|
|
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
|
|
|
|
allOf:
|
|
- $ref: /schemas/i2c/i2c-atr.yaml#
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- ti,ds90ub960-q1
|
|
- ti,ds90ub9702-q1
|
|
then:
|
|
properties:
|
|
ports:
|
|
properties:
|
|
port@0:
|
|
$ref: '#/$defs/FPDLink-input-port'
|
|
description: FPD-Link input 0
|
|
|
|
port@1:
|
|
$ref: '#/$defs/FPDLink-input-port'
|
|
description: FPD-Link input 1
|
|
|
|
port@2:
|
|
$ref: '#/$defs/FPDLink-input-port'
|
|
description: FPD-Link input 2
|
|
|
|
port@3:
|
|
$ref: '#/$defs/FPDLink-input-port'
|
|
description: FPD-Link input 3
|
|
|
|
port@4:
|
|
$ref: '#/$defs/CSI2-output-port'
|
|
description: CSI-2 Output 0
|
|
|
|
port@5:
|
|
$ref: '#/$defs/CSI2-output-port'
|
|
description: CSI-2 Output 1
|
|
|
|
required:
|
|
- port@0
|
|
- port@1
|
|
- port@2
|
|
- port@3
|
|
- port@4
|
|
- port@5
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
const: ti,ds90ub954-q1
|
|
then:
|
|
properties:
|
|
ports:
|
|
properties:
|
|
port@0:
|
|
$ref: '#/$defs/FPDLink-input-port'
|
|
description: FPD-Link input 0
|
|
|
|
port@1:
|
|
$ref: '#/$defs/FPDLink-input-port'
|
|
description: FPD-Link input 1
|
|
|
|
port@2:
|
|
$ref: '#/$defs/CSI2-output-port'
|
|
description: CSI-2 Output 0
|
|
|
|
required:
|
|
- port@0
|
|
- port@1
|
|
- port@2
|
|
|
|
links:
|
|
properties:
|
|
link@2: false
|
|
link@3: false
|
|
|
|
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 */
|
|
};
|
|
};
|
|
};
|
|
...
|