Re: [Patch 19/19] dt-bindings: media: cal: convert binding to yaml

From: Rob Herring
Date: Tue Oct 29 2019 - 10:23:00 EST


On Fri, Oct 18, 2019 at 10:34:37AM -0500, Benoit Parrot wrote:
> Convert ti-cal.txt to ti,cal.yaml.
>
> Signed-off-by: Benoit Parrot <bparrot@xxxxxx>
> ---
> .../devicetree/bindings/media/ti,cal.yaml | 186 ++++++++++++++++++
> .../devicetree/bindings/media/ti-cal.txt | 82 --------
> 2 files changed, 186 insertions(+), 82 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/media/ti,cal.yaml
> delete mode 100644 Documentation/devicetree/bindings/media/ti-cal.txt
>
> diff --git a/Documentation/devicetree/bindings/media/ti,cal.yaml b/Documentation/devicetree/bindings/media/ti,cal.yaml
> new file mode 100644
> index 000000000000..c3fbb22b4571
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/ti,cal.yaml
> @@ -0,0 +1,186 @@
> +# SPDX-License-Identifier: (GPL-2.0)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/ti,cal.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments DRA72x CAMERA ADAPTATION LAYER (CAL) Device Tree Bindings
> +
> +maintainers:
> + - Benoit Parrot <bparrot@xxxxxx>
> +
> +description: |-
> + The Camera Adaptation Layer (CAL) is a key component for image capture
> + applications. The capture module provides the system interface and the
> + processing capability to connect CSI2 image-sensor modules to the
> + DRA72x device.
> +
> + CAL supports 2 camera port nodes on MIPI bus. Each CSI2 camera port nodes
> + should contain a 'port' child node with child 'endpoint' node. Please
> + refer to the bindings defined in
> + Documentation/devicetree/bindings/media/video-interfaces.txt.
> +
> + compatible should be
> + "ti,dra72-cal", for DRA72 controllers
> + "ti,dra72-pre-es2-cal", for DRA72 controllers pre ES2.0
> + "ti,dra76-cal", for DRA76 controllers
> + "ti,am654-cal", for AM654 controllers

Drop these or add as comments to the schema below.

> +
> +properties:
> + compatible:
> + items:

You can drop 'items' here since there is only 1.

> + - enum:
> + - ti,dra72-cal
> + - ti,dra72-pre-es2-cal
> + - ti,dra76-cal
> + - ti,am654-cal
> +
> + reg:
> + minItems: 2
> + items:
> + - description: The CAL main register region
> + - description: The RX Core0 (DPHY0) register region
> + - description: The RX Core1 (DPHY1) register region
> +
> + reg-names:
> + minItems: 2
> + items:
> + - const: cal_top
> + - const: cal_rx_core0
> + - const: cal_rx_core1
> +
> + interrupts:
> + maxItems: 1
> +
> + syscon-camerrx:

Needs a type definition.

> + maxItems: 1
> + items:
> + - description:
> + phandle to the device control module and offset to the
> + control_camerarx_core register
> +
> + clocks:
> + maxItems: 1
> + description: functional clock

You can drop the description.

> +
> + clock-names:
> + items:

Drop items.

> + - const: fck
> +
> + power-domains:
> + description:
> + List of phandle and PM domain specifier as documented in
> + Documentation/devicetree/bindings/power/power_domain.txt
> + maxItems: 1
> +
> + # See ./video-interfaces.txt for details
> + ports:
> + maxItems: 1

But ports is not an array...

> + type: object
> + additionalProperties: false
> +
> + properties:
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> + patternProperties:
> + '^port@[0-9a-fA-F]+$':

In a device binding, you need to specify 'port@0' and 'port@1' (assuming
0 and 1) and say what they are.

> + minItems: 1
> + maxItems: 2

Not valid for an object (aka node).

> + type: object
> + additionalProperties: false
> +
> + properties:
> + reg:
> + minItems: 1
> + items:
> + - description: The port id
> +
> + patternProperties:
> + '^endpoint@[0-9a-fA-F]+$':

Just 'endpoint' is valid too.

> + minItems: 1
> + type: object
> + additionalProperties: false
> +
> + properties:
> + clock-lanes:
> + maxItems: 1
> +
> + data-lanes:
> + minItems: 1
> + maxItems: 4
> +
> + remote-endpoint: true
> +
> + required:
> + - remote-endpoint
> +
> + required:
> + - reg
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - interrupts
> + - syscon-camerrx
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + cal: cal@4845b000 {
> + compatible = "ti,dra72-cal";
> + reg = <0x4845B000 0x400>,
> + <0x4845B800 0x40>,
> + <0x4845B900 0x40>;
> + reg-names = "cal_top",
> + "cal_rx_core0",
> + "cal_rx_core1";
> + interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
> + syscon-camerrx = <&scm_conf 0xE94>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + csi2_0: port@0 {
> + reg = <0>;
> + csi2_phy0: endpoint@0 {
> + remote-endpoint = <&csi2_cam0>;
> + clock-lanes = <0>;
> + data-lanes = <1 2>;
> + };
> + };
> + };
> + };
> +
> + i2c5: i2c@4807c000 {
> + status = "okay";
> + clock-frequency = <400000>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ov5640@3c {
> + compatible = "ovti,ov5640";
> + reg = <0x3c>;
> +
> + clocks = <&clk_ov5640_fixed>;
> + clock-names = "xclk";
> +
> + port {
> + csi2_cam0: endpoint@0 {
> + remote-endpoint = <&csi2_phy0>;
> + clock-lanes = <0>;
> + data-lanes = <1 2>;
> + };
> + };
> + };
> + };
> +
> +...