mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-06 21:14:18 +00:00

The serializer's I2C address on the FPD-Link bus is usually communicated to the deserializer once the forward-channel is established. But in some cases it might be necessary to program the serializer (over the back-channel) before the forward-channel is established. This can be used e.g. to correct serializer configuration which otherwise would prevent the FC to be enabled. To be able to communicate to the serializer before the forward-channel is up, the deserializer driver neds to know the default i2c address of the serializer. Allow setting the serializer i2c address using the 'reg' property. This is optional, and usually not needed. Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
439 lines
10 KiB
YAML
439 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.
|
|
|
|
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>;
|
|
|
|
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 */
|
|
};
|
|
};
|
|
};
|
|
...
|