All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH 2/3] dt-bindings: adv7604: Convert bindings to json-schema
Date: Mon, 13 Jul 2020 09:44:49 -0600	[thread overview]
Message-ID: <20200713154449.GA256154@bogus> (raw)
In-Reply-To: <20200713111844.528313-3-niklas.soderlund+renesas@ragnatech.se>

On Mon, Jul 13, 2020 at 01:18:43PM +0200, Niklas Söderlund wrote:
> Convert ADV7604 video decoder documentation to json-schema.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
>  .../devicetree/bindings/media/i2c/adv7604.txt |  87 ---------
>  .../bindings/media/i2c/adv7604.yaml           | 171 ++++++++++++++++++
>  2 files changed, 171 insertions(+), 87 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/media/i2c/adv7604.txt
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/adv7604.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.txt b/Documentation/devicetree/bindings/media/i2c/adv7604.txt
> deleted file mode 100644
> index 8c7cdc7cd7aaebc8..0000000000000000
> --- a/Documentation/devicetree/bindings/media/i2c/adv7604.txt
> +++ /dev/null
> @@ -1,87 +0,0 @@
> -* Analog Devices ADV7604/11/12 video decoder with HDMI receiver
> -
> -The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
> -HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
> -input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
> -similar to the 7611 but has 2 HDMI inputs.
> -
> -These device tree bindings support the ADV7611/12 only at the moment.
> -
> -Required Properties:
> -
> -  - compatible: Must contain one of the following
> -    - "adi,adv7611" for the ADV7611
> -    - "adi,adv7612" for the ADV7612
> -
> -  - reg: I2C slave addresses
> -    The ADV76xx has up to thirteen 256-byte maps that can be accessed via the
> -    main I2C ports. Each map has it own I2C address and acts as a standard
> -    slave device on the I2C bus. The main address is mandatory, others are
> -    optional and revert to defaults if not specified.
> -
> -The device node must contain one 'port' child node per device input and output
> -port, in accordance with the video interface bindings defined in
> -Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
> -are numbered as follows.
> -
> -  Port			ADV7611    ADV7612
> -------------------------------------------------------------
> -  HDMI			0             0, 1
> -  Digital output	1                2
> -
> -The digital output port node must contain at least one endpoint.
> -
> -Optional Properties:
> -
> -  - hpd-gpios: References to the GPIOs that control the HDMI hot-plug
> -    detection pins, one per HDMI input. The active flag indicates the GPIO
> -    level that enables hot-plug detection.
> -  - reset-gpios: Reference to the GPIO connected to the device's reset pin.
> -  - default-input: Select which input is selected after reset.
> -  - reg-names : Names of maps with programmable addresses.
> -		It can contain any map needing a non-default address.
> -		Possible maps names are :
> -		  "main", "avlink", "cec", "infoframe", "esdp", "dpp", "afe",
> -		  "rep", "edid", "hdmi", "test", "cp", "vdp"
> -
> -Optional Endpoint Properties:
> -
> -  The following three properties are defined in video-interfaces.txt and are
> -  valid for source endpoints only.
> -
> -  - hsync-active: Horizontal synchronization polarity. Defaults to active low.
> -  - vsync-active: Vertical synchronization polarity. Defaults to active low.
> -  - pclk-sample: Pixel clock polarity. Defaults to output on the falling edge.
> -
> -  If none of hsync-active, vsync-active and pclk-sample is specified the
> -  endpoint will use embedded BT.656 synchronization.
> -
> -Example:
> -
> -	hdmi_receiver@4c {
> -		compatible = "adi,adv7611";
> -		/*
> -		 * The edid page will be accessible @ 0x66 on the I2C bus. All
> -		 * other maps will retain their default addresses.
> -		 */
> -		reg = <0x4c>, <0x66>;
> -		reg-names = "main", "edid";
> -
> -		reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
> -		hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;
> -
> -		#address-cells = <1>;
> -		#size-cells = <0>;
> -
> -		default-input = <0>;
> -
> -		port@0 {
> -			reg = <0>;
> -		};
> -		port@1 {
> -			reg = <1>;
> -			hdmi_in: endpoint {
> -				remote-endpoint = <&ccdc_in>;
> -			};
> -		};
> -	};
> diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.yaml b/Documentation/devicetree/bindings/media/i2c/adv7604.yaml
> new file mode 100644
> index 0000000000000000..d354fd8e0cc88d93
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/adv7604.yaml
> @@ -0,0 +1,171 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/adv7604.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Analog Devices ADV7604/11/12 video decoder with HDMI receiver
> +
> +maintainers:
> +  - Hans Verkuil <hverkuil-cisco@xs4all.nl>
> +
> +description:
> +  The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
> +  HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
> +  input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
> +  similar to the 7611 but has 2 HDMI inputs.
> +
> +  These device tree bindings support the ADV7611/12 only at the moment.
> +
> +properties:
> +  compatible:
> +    items:
> +      - enum:
> +        - adi,adv7611
> +        - adi,adv7612
> +
> +  reg:
> +    minItems: 1
> +    maxItems: 13
> +
> +  reg-names:
> +    items:
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
> +      - enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]

This can be simplified to:

items:
  enum: [ main, avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]

(Make items a schema applying to all items, rather than a list)

Though we may want to enforce 'main' is first with:

minItems: 1
maxItems: 13
items:
  - const: main

These 2 can be combined under an 'allOf'.

> +
> +  reset-gpios:
> +    maxItems: 1
> +
> +  hpd-gpios:
> +    minItems: 1
> +    description:
> +      References to the GPIOs that control the HDMI hot-plug detection pins,
> +      one per HDMI input. The active flag indicates the GPIO level that
> +      enables hot-plug detection.
> +
> +  default-input:
> +    maxItems: 1
> +    description:
> +      Select which input is selected after reset.
> +
> +  ports:
> +    type: object
> +    description:
> +      A node containing input and output port nodes with endpoint definitions
> +      as documented in
> +      Documentation/devicetree/bindings/media/video-interfaces.txt
> +
> +required:
> +  - compatible
> +  - reg
> +
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: adi,adv7611
> +    then:
> +      properties:
> +        ports:
> +          properties:
> +            '#address-cells':
> +              const: 1
> +            '#size-cells':
> +              const: 0
> +            port@0:
> +              type: object
> +              description: Input port
> +            port@1:
> +              type: object
> +              description: Output port
> +
> +          required:
> +            - port@1
> +
> +          additionalProperties: false
> +
> +      required:
> +        - ports
> +
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: adi,adv7612
> +    then:
> +      properties:
> +        ports:
> +          properties:
> +            '#address-cells':
> +              const: 1
> +            '#size-cells':
> +              const: 0
> +            port@2:
> +              type: object
> +              description: Output port
> +
> +          patternProperties:
> +            "^port@[0-1]$":
> +              type: object
> +              description: Input port
> +
> +          required:
> +            - port@2
> +
> +          additionalProperties: false
> +
> +      required:
> +        - ports
> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            hdmi_receiver@4c {
> +                    compatible = "adi,adv7611";
> +                    /*
> +                     * The edid page will be accessible @ 0x66 on the I2C bus. All
> +                     * other maps will retain their default addresses.
> +                     */
> +                    reg = <0x4c>, <0x66>;
> +                    reg-names = "main", "edid";
> +
> +                    reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
> +                    hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;
> +                    default-input = <0>;
> +
> +                    ports {
> +                            #address-cells = <1>;
> +                            #size-cells = <0>;
> +
> +                            port@0 {
> +                                    reg = <0>;
> +                            };
> +
> +                            port@1 {
> +                                    reg = <1>;
> +                                    hdmi_in: endpoint {
> +                                            remote-endpoint = <&ccdc_in>;
> +                                    };
> +                            };
> +                    };
> +
> +
> +            };
> +    };
> -- 
> 2.27.0
> 

  reply	other threads:[~2020-07-13 15:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-13 11:18 [PATCH 0/3] dt-bindings: adv7604: Convert bindings to json-schema Niklas Söderlund
2020-07-13 11:18 ` [PATCH 1/3] dt-bindings: adv7604: Fix documentation for hpd-gpios Niklas Söderlund
2020-07-13 15:39   ` Rob Herring
2020-07-13 11:18 ` [PATCH 2/3] dt-bindings: adv7604: Convert bindings to json-schema Niklas Söderlund
2020-07-13 15:44   ` Rob Herring [this message]
2020-07-13 18:17     ` Niklas Söderlund
2020-07-14 13:57       ` Rob Herring
2020-07-13 11:18 ` [PATCH 3/3] MAINTAINERS: Add ADV7604 bindings documentation Niklas Söderlund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200713154449.GA256154@bogus \
    --to=robh@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.