media: dt-bindings: ti,ds90ub960: Allow setting serializer address

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>
This commit is contained in:
Jai Luthra 2025-03-03 21:32:19 +05:30 committed by Hans Verkuil
parent 32cc18622d
commit ca26126a6c
2 changed files with 60 additions and 37 deletions

View file

@ -38,6 +38,13 @@ properties:
'#clock-cells':
const: 0
reg:
maxItems: 1
description:
The strap I2C address of the serializer. Can be used by the deserializer
to communicate over back-channel when the forward-channel is not yet
active.
ports:
$ref: /schemas/graph.yaml#/properties/ports
@ -81,51 +88,57 @@ examples:
- |
#include <dt-bindings/gpio/gpio.h>
serializer {
compatible = "ti,ds90ub953-q1";
link {
#address-cells = <1>;
#size-cells = <0>;
gpio-controller;
#gpio-cells = <2>;
serializer@18 {
compatible = "ti,ds90ub953-q1";
reg = <0x18>;
#clock-cells = <0>;
gpio-controller;
#gpio-cells = <2>;
ports {
#address-cells = <1>;
#size-cells = <0>;
#clock-cells = <0>;
port@0 {
reg = <0>;
ub953_in: endpoint {
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
remote-endpoint = <&sensor_out>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ub953_in: endpoint {
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
remote-endpoint = <&sensor_out>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&deser_fpd_in>;
};
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&deser_fpd_in>;
};
};
};
i2c {
#address-cells = <1>;
#size-cells = <0>;
i2c {
#address-cells = <1>;
#size-cells = <0>;
sensor@1a {
compatible = "sony,imx274";
reg = <0x1a>;
sensor@1a {
compatible = "sony,imx274";
reg = <0x1a>;
reset-gpios = <&serializer 0 GPIO_ACTIVE_LOW>;
reset-gpios = <&serializer 0 GPIO_ACTIVE_LOW>;
clocks = <&serializer>;
clock-names = "inck";
clocks = <&serializer>;
clock-names = "inck";
port {
sensor_out: endpoint {
remote-endpoint = <&ub953_in>;
port {
sensor_out: endpoint {
remote-endpoint = <&ub953_in>;
};
};
};
};

View file

@ -68,6 +68,12 @@ properties:
description: The link number
maxItems: 1
'#address-cells':
const: 1
'#size-cells':
const: 0
i2c-alias:
$ref: /schemas/types.yaml#/definitions/uint32
description:
@ -107,7 +113,8 @@ properties:
maximum: 14
description: Manual EQ level
serializer:
patternProperties:
'^serializer(@[0-9a-f]+)*$':
type: object
description: FPD-Link Serializer node
@ -115,7 +122,6 @@ properties:
- reg
- i2c-alias
- ti,rx-mode
- serializer
ports:
$ref: /schemas/graph.yaml#/properties/ports
@ -309,13 +315,17 @@ examples:
/* 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 {
serializer1: serializer@30 {
compatible = "ti,ds90ub953-q1";
reg = <0x30>;
gpio-controller;
#gpio-cells = <2>;