diff mbox series

[v8,3/4] dt-bindings: media: i2c: Add bindings for IMI RDACM2x

Message ID 20200417103424.5875-4-kieran.bingham+renesas@ideasonboard.com (mailing list archive)
State Superseded
Delegated to: Kieran Bingham
Headers show
Series MAX9286 GMSL Support (+RDACM20) | expand

Commit Message

Kieran Bingham April 17, 2020, 10:34 a.m. UTC
From: Jacopo Mondi <jacopo+renesas@jmondi.org>

The IMI RDACM20 and IMI RDACM21 are Gigabit Multimedia Serial Link (GMSL) camera
capable of transmitting video and I2C control messages on a coax cable
physical link for automotive applications.

Document their device tree bindings.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

---
v2:
 - Provide imi vendor prefix
 - Fix minor spelling

v3:
 - update binding descriptions

v4:
 - No change

v5:
 - Specify optional third reg address for the MCU

v7:
 [Jacopo]
 - Rename to imi,rdacm2x-gmsl.yaml
 - Exand bindings to describe RDACM21
---
 .../bindings/media/i2c/imi,rdacm2x-gmsl.yaml  | 161 ++++++++++++++++++
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 2 files changed, 163 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml

Comments

Rob Herring (Arm) April 30, 2020, 1:44 a.m. UTC | #1
On Fri, Apr 17, 2020 at 11:34:23AM +0100, Kieran Bingham wrote:
> From: Jacopo Mondi <jacopo+renesas@jmondi.org>
> 
> The IMI RDACM20 and IMI RDACM21 are Gigabit Multimedia Serial Link (GMSL) camera
> capable of transmitting video and I2C control messages on a coax cable
> physical link for automotive applications.
> 
> Document their device tree bindings.
> 
> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> ---
> v2:
>  - Provide imi vendor prefix
>  - Fix minor spelling
> 
> v3:
>  - update binding descriptions
> 
> v4:
>  - No change
> 
> v5:
>  - Specify optional third reg address for the MCU
> 
> v7:
>  [Jacopo]
>  - Rename to imi,rdacm2x-gmsl.yaml
>  - Exand bindings to describe RDACM21
> ---
>  .../bindings/media/i2c/imi,rdacm2x-gmsl.yaml  | 161 ++++++++++++++++++
>  .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
>  2 files changed, 163 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
> new file mode 100644
> index 000000000000..8476e99b46b5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
> @@ -0,0 +1,161 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +# Copyright (C) 2019 Renesas Electronics Corp.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/imi,rdacm2x-gmsl.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title:  IMI D&D RDACM20 and RDACM21 Automotive Camera Platforms
> +
> +maintainers:
> +  - Jacopo Mondi <jacopo+renesas@jmondi.org>
> +  - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> +  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> +  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> +
> +description: -|
> +  The IMI D&D RDACM20 and RDACM21 are GMSL-compatible camera designed for
> +  automotive applications.
> +
> +  The RDACM20 camera module encloses a Maxim Integrated MAX9271 GMSL serializer,
> +  coupled with an OV10635 image sensor and an embedded MCU. Both the MCU and
> +  the image sensor are connected to the serializer local I2C bus and are
> +  accessible by the host SoC by direct addressing.
> +
> +  The RDACM21 camera module encloses the same serializer, coupled with an
> +  OV10640 image sensor and an OV490 ISP. Only the OV490 ISP is interfaced to
> +  the serializer local I2C bus while the image sensor is not accessible from
> +  the host SoC.
> +
> +  They both connect to a remote GMSL endpoint through a coaxial cable.
> +
> +                                                   IMI RDACM20
> +  +---------------+                        +--------------------------------+
> +  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
> +  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV10635 |
> +  | de-serializer |   <- I2C messages ->   |                   \<-->MCU     |
> +  +---------------+                        +--------------------------------+
> +
> +                                                   IMI RDACM21
> +  +---------------+                        +--------------------------------+
> +  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
> +  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV490   |
> +  |               |   <- I2C messages ->   |                          |     |
> +  | de-serializer |                        |          OV10640 <-------|     |
> +  +---------------+                        +--------------------------------+
> +
> +  Both camera modules serialize video data generated by the embedded camera
> +  sensor on the GMSL serial channel to a remote GMSL de-serializer. They also
> +  receive and transmit I2C messages encapsulated and transmitted on the GMSL
> +  bidirectional control channel.
> +
> +  All I2C traffic received on the GMSL link not directed to the serializer is
> +  propagated on the local I2C bus to the remote device there connected. All the
> +  I2C traffic generated on the local I2C bus not directed to the serializer is
> +  propagated to the remote de-serializer encapsulated in the GMSL control
> +  channel.
> +
> +  The RDACM20 and RDACM21 DT node should be a direct child of the GMSL
> +  deserializer's I2C bus corresponding to the GMSL link that the camera is
> +  attached to.
> +
> +properties:
> +  '#address-cells':
> +    const: 1
> +
> +  '#size-cells':
> +    const: 0
> +
> +  compatible:
> +    oneOf:
> +      - items:
> +        - enum:

You can drop oneOf and items.

> +          - imi,rdacm20
> +          - imi,rdacm21
> +
> +  reg:
> +    description: -|
> +      I2C device addresses, the first to be assigned to the serializer, the
> +      following ones to be assigned to the remote devices.
> +
> +      For RDACM20 the second entry of the property is assigned to the
> +      OV10635 image sensor and the optional third one to the embedded MCU.
> +
> +      For RDACM21 the second entry is assigned to the OV490 ISP and the optional
> +      third one ignored.
> +
> +    minItems: 2
> +    maxItems: 3
> +
> +  port:
> +    type: object
> +    additionalProperties: false
> +    description: -|
> +      Connection to the remote GMSL endpoint are modelled using the OF graph
> +      bindings in accordance with the video interface bindings defined in
> +      Documentation/devicetree/bindings/media/video-interfaces.txt.
> +
> +      The device node contains a single "port" child node with a single
> +      "endpoint" sub-device.
> +
> +    properties:
> +      endpoint:
> +        type: object
> +        additionalProperties: false
> +
> +        properties:
> +          remote-endpoint:
> +            description: -|
> +              phandle to the remote GMSL endpoint sub-node in the remote node
> +              port.
> +            maxItems: 1
> +
> +        required:
> +          - remote-endpoint
> +
> +    required:
> +      - endpoint
> +
> +required:
> +  - compatible
> +  - reg
> +  - port
> +
> +examples:
> +  - |
> +    i2c@e66d8000 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      reg = <0 0xe66d8000 0 0x40>;
> +
> +      camera@31 {
> +        compatible = "imi,rdacm20";
> +        reg = <0x31>, <0x41>, <0x51>;
> +
> +        port {
> +          rdacm20_out0: endpoint {
> +            remote-endpoint = <&max9286_in0>;
> +          };
> +        };
> +      };
> +    };
> +
> +  - |
> +    i2c@e66d8000 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      reg = <0 0xe66d8000 0 0x40>;
> +
> +      camera@31 {
> +        compatible = "imi,rdacm21";
> +        reg = <0x31>, <0x41>;
> +
> +        port {
> +          rdacm21_out0: endpoint {
> +            remote-endpoint = <&max9286_in0>;
> +          };
> +        };
> +      };
> +    };
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> index d3891386d671..dcbecdc58731 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> @@ -453,6 +453,8 @@ patternProperties:
>      description: Ingenieurburo Fur Ic-Technologie (I/F/I)
>    "^ilitek,.*":
>      description: ILI Technology Corporation (ILITEK)
> +  "^imi,.*":
> +    description: Integrated Micro-Electronics Inc.
>    "^img,.*":

Alphabetical order...

With those fixes,

Reviewed-by: Rob Herring <robh@kernel.org>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
new file mode 100644
index 000000000000..8476e99b46b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
@@ -0,0 +1,161 @@ 
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+# Copyright (C) 2019 Renesas Electronics Corp.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/imi,rdacm2x-gmsl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title:  IMI D&D RDACM20 and RDACM21 Automotive Camera Platforms
+
+maintainers:
+  - Jacopo Mondi <jacopo+renesas@jmondi.org>
+  - Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
+  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
+  - Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
+
+description: -|
+  The IMI D&D RDACM20 and RDACM21 are GMSL-compatible camera designed for
+  automotive applications.
+
+  The RDACM20 camera module encloses a Maxim Integrated MAX9271 GMSL serializer,
+  coupled with an OV10635 image sensor and an embedded MCU. Both the MCU and
+  the image sensor are connected to the serializer local I2C bus and are
+  accessible by the host SoC by direct addressing.
+
+  The RDACM21 camera module encloses the same serializer, coupled with an
+  OV10640 image sensor and an OV490 ISP. Only the OV490 ISP is interfaced to
+  the serializer local I2C bus while the image sensor is not accessible from
+  the host SoC.
+
+  They both connect to a remote GMSL endpoint through a coaxial cable.
+
+                                                   IMI RDACM20
+  +---------------+                        +--------------------------------+
+  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
+  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV10635 |
+  | de-serializer |   <- I2C messages ->   |                   \<-->MCU     |
+  +---------------+                        +--------------------------------+
+
+                                                   IMI RDACM21
+  +---------------+                        +--------------------------------+
+  |      GMSL     |   <- Video Stream      |       <- Video--------\        |
+  |               |< === GMSL Link ====== >|MAX9271<- I2C bus-> <-->OV490   |
+  |               |   <- I2C messages ->   |                          |     |
+  | de-serializer |                        |          OV10640 <-------|     |
+  +---------------+                        +--------------------------------+
+
+  Both camera modules serialize video data generated by the embedded camera
+  sensor on the GMSL serial channel to a remote GMSL de-serializer. They also
+  receive and transmit I2C messages encapsulated and transmitted on the GMSL
+  bidirectional control channel.
+
+  All I2C traffic received on the GMSL link not directed to the serializer is
+  propagated on the local I2C bus to the remote device there connected. All the
+  I2C traffic generated on the local I2C bus not directed to the serializer is
+  propagated to the remote de-serializer encapsulated in the GMSL control
+  channel.
+
+  The RDACM20 and RDACM21 DT node should be a direct child of the GMSL
+  deserializer's I2C bus corresponding to the GMSL link that the camera is
+  attached to.
+
+properties:
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  compatible:
+    oneOf:
+      - items:
+        - enum:
+          - imi,rdacm20
+          - imi,rdacm21
+
+  reg:
+    description: -|
+      I2C device addresses, the first to be assigned to the serializer, the
+      following ones to be assigned to the remote devices.
+
+      For RDACM20 the second entry of the property is assigned to the
+      OV10635 image sensor and the optional third one to the embedded MCU.
+
+      For RDACM21 the second entry is assigned to the OV490 ISP and the optional
+      third one ignored.
+
+    minItems: 2
+    maxItems: 3
+
+  port:
+    type: object
+    additionalProperties: false
+    description: -|
+      Connection to the remote GMSL endpoint are modelled using the OF graph
+      bindings in accordance with the video interface bindings defined in
+      Documentation/devicetree/bindings/media/video-interfaces.txt.
+
+      The device node contains a single "port" child node with a single
+      "endpoint" sub-device.
+
+    properties:
+      endpoint:
+        type: object
+        additionalProperties: false
+
+        properties:
+          remote-endpoint:
+            description: -|
+              phandle to the remote GMSL endpoint sub-node in the remote node
+              port.
+            maxItems: 1
+
+        required:
+          - remote-endpoint
+
+    required:
+      - endpoint
+
+required:
+  - compatible
+  - reg
+  - port
+
+examples:
+  - |
+    i2c@e66d8000 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      reg = <0 0xe66d8000 0 0x40>;
+
+      camera@31 {
+        compatible = "imi,rdacm20";
+        reg = <0x31>, <0x41>, <0x51>;
+
+        port {
+          rdacm20_out0: endpoint {
+            remote-endpoint = <&max9286_in0>;
+          };
+        };
+      };
+    };
+
+  - |
+    i2c@e66d8000 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      reg = <0 0xe66d8000 0 0x40>;
+
+      camera@31 {
+        compatible = "imi,rdacm21";
+        reg = <0x31>, <0x41>;
+
+        port {
+          rdacm21_out0: endpoint {
+            remote-endpoint = <&max9286_in0>;
+          };
+        };
+      };
+    };
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index d3891386d671..dcbecdc58731 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -453,6 +453,8 @@  patternProperties:
     description: Ingenieurburo Fur Ic-Technologie (I/F/I)
   "^ilitek,.*":
     description: ILI Technology Corporation (ILITEK)
+  "^imi,.*":
+    description: Integrated Micro-Electronics Inc.
   "^img,.*":
     description: Imagination Technologies Ltd.
   "^incircuit,.*":