diff mbox series

[v3,1/3] ASoC: dt-bindings: audio-graph-card: switch to yaml base Documentation

Message ID 878sbzay6u.wl-kuninori.morimoto.gx@renesas.com
State Changes Requested
Headers show
Series ASoC: dt-bindings: audio-graph-card: switch to yaml base Documentation | expand

Checks

Context Check Description
robh/dt-meta-schema success
robh/checkpatch warning total: 0 errors, 2 warnings, 173 lines checked

Commit Message

Kuninori Morimoto Oct. 22, 2020, 12:46 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

This patch switches from .txt base to .yaml base Document.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 .../bindings/sound/audio-graph-card.txt       | 337 ------------------
 .../bindings/sound/audio-graph-card.yaml      | 165 +++++++++
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +-
 3 files changed, 166 insertions(+), 338 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.txt
 create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.yaml

Comments

Sameer Pujar Oct. 22, 2020, 5:19 a.m. UTC | #1
Hi Morimoto-san,

> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> This patch switches from .txt base to .yaml base Document.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>   .../bindings/sound/audio-graph-card.txt       | 337 ------------------
>   .../bindings/sound/audio-graph-card.yaml      | 165 +++++++++
>   .../devicetree/bindings/vendor-prefixes.yaml  |   2 +-
>   3 files changed, 166 insertions(+), 338 deletions(-)
>   delete mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.txt
>   create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.yaml
>
> diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card.txt b/Documentation/devicetree/bindings/sound/audio-graph-card.txt
> deleted file mode 100644
> index d5f6919a2d69..000000000000
> --- a/Documentation/devicetree/bindings/sound/audio-graph-card.txt
> +++ /dev/null
> @@ -1,337 +0,0 @@
...
> diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card.yaml b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
> new file mode 100644
> index 000000000000..9ccffbda86a8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
> @@ -0,0 +1,165 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/audio-graph-card.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Audio Graph Card Driver Device Tree Bindings
> +
> +maintainers:
> +  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> +

> +properties:
> +  compatible:
> +    enum:
> +      - audio-graph-card
> +      - audio-graph-scu-card

Since I am trying to re-use most of audio-graph for Tegra, can 
'compatible' be moved to a separate schema?
For example,
audio-graph.yaml -> defines all the common stuff
audio-graph-card.yaml -> audio-graph.yaml + 'compatible' property
Similarly, tegra-audio-graph-card.yaml -> audio-graph.yaml + Tegra 
'compatible' property

> +
> +  dais:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> +  label:
> +    maxItems: 1
> +  prefix:
> +    description: "device name prefix"
> +    $ref: /schemas/types.yaml#/definitions/string
> +  "audio-graph-card,prefix":
> +    description: "device name prefix"
> +    $ref: /schemas/types.yaml#/definitions/string
> +  routing:
> +    description: |
> +      A list of the connections between audio components.
> +      Each entry is a pair of strings, the first being the
> +      connection's sink, the second being the connection's source.
> +    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
> +  widgets:
> +    description: User specified audio sound widgets.
> +    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
> +  convert-rate:
> +    description: CPU to Codec rate convert.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +  "audio-graph-card,convert-rate":
> +    description: CPU to Codec rate convert.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +  convert-channels:
> +    description: CPU to Codec rate channels.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +  "audio-graph-card,convert-channels":
> +    description: CPU to Codec rate channels.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +  pa-gpios:
> +    maxItems: 1
> +  hp-det-gpio:
> +    maxItems: 1
> +  mic-det-gpio:
> +    maxItems: 1
> +

> +  endpoint:
> +    type: object
> +    properties:
> +      remote-endpoint:
> +        maxItems: 1
> +      mclk-fs:
> +        description: |
> +          Multiplication factor between stream rate and codec mclk.
> +          When defined, mclk-fs property defined in dai-link sub nodes are ignored.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +      frame-inversion:
> +        description: dai-link uses frame clock inversion
> +        $ref: /schemas/types.yaml#/definitions/flag
> +      bitclock-inversion:
> +        description: dai-link uses bit clock inversion
> +        $ref: /schemas/types.yaml#/definitions/flag
> +      frame-master:
> +        description: Indicates dai-link frame master.
> +        $ref: /schemas/types.yaml#/definitions/phandle-array
> +        maxItems: 1
> +      bitclock-master:
> +        description: Indicates dai-link bit clock master
> +        $ref: /schemas/types.yaml#/definitions/phandle-array
> +        maxItems: 1
> +      dai-format:
> +        description: audio format.
> +        items:
> +          enum:
> +            - i2s
> +            - right_j
> +            - left_j
> +            - dsp_a
> +            - dsp_b
> +            - ac97
> +            - pdm
> +            - msb
> +            - lsb
> +      convert-rate:
> +        description: CPU to Codec rate convert.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +      convert-channels:
> +        description: CPU to Codec rate channels.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +    required:
> +      - remote-endpoint

Is it possible to have endpoint without port nodes?

> +
> +  port:
> +    description: single OF-Graph subnode
> +    type: object
> +    properties:
> +      reg:
> +        maxItems: 1
> +      prefix:
> +        description: "device name prefix"
> +        $ref: /schemas/types.yaml#/definitions/string
> +      convert-rate:
> +        description: CPU to Codec rate convert.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +      convert-channels:
> +        description: CPU to Codec rate channels.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +    patternProperties:
> +      "^endpoint(@[0-9a-f]+)?":
> +        $ref: "#/properties/endpoint"
> +
> +  ports:
> +    description: multi OF-Graph subnode
> +    type: object
> +    patternProperties:
> +      "^port(@[0-9a-f]+)?":
> +        $ref: "#/properties/port"
> +
> +required:
> +  - compatible
> +  - dais
> +

> +additionalProperties: false
> +

This needs to be true when other files want to reference this schema 
and/or define some additional properties.

> +examples:
> +  - |
> +    sound {
> +        compatible = "audio-graph-card";
> +
> +        dais = <&cpu_port_a>;
> +    };
> +
> +    cpu {
> +        /*
> +         * dai-controller own settings
> +         */
> +
> +        port {
> +            cpu_endpoint: endpoint {
> +                remote-endpoint = <&codec_endpoint>;
> +                dai-format = "left_j";
> +            };
> +        };
> +    };
> +
> +    codec {
> +        /*
> +         * codec own settings
> +         */
> +
> +        port {
> +            codec_endpoint: endpoint {
> +                remote-endpoint = <&cpu_endpoint>;
> +            };
> +        };
> +    };
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> index 63996ab03521..5ada35ddac7e 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> @@ -20,7 +20,7 @@ patternProperties:
>     "^(keypad|m25p|max8952|max8997|max8998|mpmc),.*": true
>     "^(pinctrl-single|#pinctrl-single|PowerPC),.*": true
>     "^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*": true
> -  "^(simple-audio-card|st-plgpio|st-spics|ts),.*": true
> +  "^(simple-audio-card|audio-graph-card|st-plgpio|st-spics|ts),.*": true
>
>     # Keep list in alphabetical order.
>     "^70mai,.*":
> --
> 2.25.1
>
Sameer Pujar Oct. 23, 2020, 1:52 p.m. UTC | #2
Hi Morimoto-san,

> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> This patch switches from .txt base to .yaml base Document.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>   .../bindings/sound/audio-graph-card.txt       | 337 ------------------
>   .../bindings/sound/audio-graph-card.yaml      | 165 +++++++++
>   .../devicetree/bindings/vendor-prefixes.yaml  |   2 +-
>   3 files changed, 166 insertions(+), 338 deletions(-)
>   delete mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.txt
>   create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.yaml

...

> +
> +  port:
> +    description: single OF-Graph subnode
> +    type: object
> +    properties:
> +      reg:
> +        maxItems: 1
> +      prefix:
> +        description: "device name prefix"
> +        $ref: /schemas/types.yaml#/definitions/string
> +      convert-rate:
> +        description: CPU to Codec rate convert.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +      convert-channels:
> +        description: CPU to Codec rate channels.
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +    patternProperties:
> +      "^endpoint(@[0-9a-f]+)?":
> +        $ref: "#/properties/endpoint"
> +
> +  ports:
> +    description: multi OF-Graph subnode
> +    type: object
> +    patternProperties:
> +      "^port(@[0-9a-f]+)?":
> +        $ref: "#/properties/port"
> +

Can these be referenced from graph.yaml (port and ports properties) and 
only additonal properties (specific to audio-graph) could be populated here?

...

> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> index 63996ab03521..5ada35ddac7e 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> @@ -20,7 +20,7 @@ patternProperties:
>     "^(keypad|m25p|max8952|max8997|max8998|mpmc),.*": true
>     "^(pinctrl-single|#pinctrl-single|PowerPC),.*": true
>     "^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*": true
> -  "^(simple-audio-card|st-plgpio|st-spics|ts),.*": true
> +  "^(simple-audio-card|audio-graph-card|st-plgpio|st-spics|ts),.*": true
>
>     # Keep list in alphabetical order.
>     "^70mai,.*":
> --
> 2.25.1
>
Kuninori Morimoto Oct. 25, 2020, 11:07 p.m. UTC | #3
Hi Sameer

Thank you for your proposal.

> > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > 
> > This patch switches from .txt base to .yaml base Document.
> > 
> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > ---
> >   .../bindings/sound/audio-graph-card.txt       | 337 ------------------
> >   .../bindings/sound/audio-graph-card.yaml      | 165 +++++++++
> >   .../devicetree/bindings/vendor-prefixes.yaml  |   2 +-
> >   3 files changed, 166 insertions(+), 338 deletions(-)
> >   delete mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.txt
> >   create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.yaml
> 
> ...
> 
> > +
> > +  port:
> > +    description: single OF-Graph subnode
> > +    type: object
> > +    properties:
> > +      reg:
> > +        maxItems: 1
> > +      prefix:
> > +        description: "device name prefix"
> > +        $ref: /schemas/types.yaml#/definitions/string
> > +      convert-rate:
> > +        description: CPU to Codec rate convert.
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +      convert-channels:
> > +        description: CPU to Codec rate channels.
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +    patternProperties:
> > +      "^endpoint(@[0-9a-f]+)?":
> > +        $ref: "#/properties/endpoint"
> > +
> > +  ports:
> > +    description: multi OF-Graph subnode
> > +    type: object
> > +    patternProperties:
> > +      "^port(@[0-9a-f]+)?":
> > +        $ref: "#/properties/port"
> > +
> 
> Can these be referenced from graph.yaml (port and ports properties)
> and only additonal properties (specific to audio-graph) could be
> populated here?

Yes of course.
In such case, I need to wait graph.yaml first I think.

Thank you for your help !!

Best regards
---
Kuninori Morimoto
Sameer Pujar Oct. 26, 2020, 2:49 a.m. UTC | #4
Hi Morimoto-san,

>>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>
>>> This patch switches from .txt base to .yaml base Document.
>>>
>>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>> ---
>>>    .../bindings/sound/audio-graph-card.txt       | 337 ------------------
>>>    .../bindings/sound/audio-graph-card.yaml      | 165 +++++++++
>>>    .../devicetree/bindings/vendor-prefixes.yaml  |   2 +-
>>>    3 files changed, 166 insertions(+), 338 deletions(-)
>>>    delete mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.txt
>>>    create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card.yaml
>> ...
>>
>>> +
>>> +  port:
>>> +    description: single OF-Graph subnode
>>> +    type: object
>>> +    properties:
>>> +      reg:
>>> +        maxItems: 1
>>> +      prefix:
>>> +        description: "device name prefix"
>>> +        $ref: /schemas/types.yaml#/definitions/string
>>> +      convert-rate:
>>> +        description: CPU to Codec rate convert.
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +      convert-channels:
>>> +        description: CPU to Codec rate channels.
>>> +        $ref: /schemas/types.yaml#/definitions/uint32
>>> +    patternProperties:
>>> +      "^endpoint(@[0-9a-f]+)?":
>>> +        $ref: "#/properties/endpoint"
>>> +
>>> +  ports:
>>> +    description: multi OF-Graph subnode
>>> +    type: object
>>> +    patternProperties:
>>> +      "^port(@[0-9a-f]+)?":
>>> +        $ref: "#/properties/port"
>>> +
>> Can these be referenced from graph.yaml (port and ports properties)
>> and only additonal properties (specific to audio-graph) could be
>> populated here?
> Yes of course.
> In such case, I need to wait graph.yaml first I think.

Yes we first need to add graph.yaml, which I started to add in series 
https://lkml.org/lkml/2020/10/16/645
Since there is cyclic dependency between your patch and my series, I 
could probably pull out graph.yaml out of my series and independently 
submit that first.
Kuninori Morimoto Oct. 27, 2020, 4:52 a.m. UTC | #5
Hi Sameer

> > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > 
> > This patch switches from .txt base to .yaml base Document.
> > 
> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > ---
(snip)
> > +additionalProperties: false
> > +
> 
> This needs to be true when other files want to reference this schema
> and/or define some additional properties.

*Current* audio-graph-card doesn't assume such case.
I think you need to update it when you support tegra-audio-graph

Thank you for your help !!

Best regards
---
Kuninori Morimoto
Kuninori Morimoto Oct. 27, 2020, 5:22 a.m. UTC | #6
Hi Sameer

> >> Can these be referenced from graph.yaml (port and ports properties)
> >> and only additonal properties (specific to audio-graph) could be
> >> populated here?
> > Yes of course.
> > In such case, I need to wait graph.yaml first I think.
> 
> Yes we first need to add graph.yaml, which I started to add in series
> https://lkml.org/lkml/2020/10/16/645
> Since there is cyclic dependency between your patch and my series, I
> could probably pull out graph.yaml out of my series and independently
> submit that first.

I noticed that graph.yaml is not enough for audio-graph.
Because audio-graph needs extra propaties for endpoint,
and your endpoint is defined under port.
Maybe can't add additonal propaties (?) for it ?

Maybe we can, but I'm not expert of Json-Schema.
It is very difficult for me to create even *standard* ones.
I will continue current style to avoid unknown error
(It always indicates me unknown error :()

Thank you for your help !!

Best regards
---
Kuninori Morimoto
Kuninori Morimoto Oct. 27, 2020, 5:32 a.m. UTC | #7
Hi Sameer

> > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > 
> > This patch switches from .txt base to .yaml base Document.
> > 
> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
(snip)
> Since I am trying to re-use most of audio-graph for Tegra, can
> 'compatible' be moved to a separate schema?
> For example,
> audio-graph.yaml -> defines all the common stuff
> audio-graph-card.yaml -> audio-graph.yaml + 'compatible' property
> Similarly, tegra-audio-graph-card.yaml -> audio-graph.yaml + Tegra
> 'compatible' property

I'm not expert of Json-Schema, and it sound very expert technique for me.
(It always indicates me unknown errors...)
I'm posting this patch since many month ago, and not yet accepted
for many reasons (audio-graph DT is very complex).
I spend many times for it and finally come to the point where it
can (might) be accepted. 
I'm sorry but I want to finish this work,
this means I don't want to customize it any more.
If I try it, it needs more month...

Thank you for your help !!

Best regards
---
Kuninori Morimoto
Sameer Pujar Oct. 27, 2020, 6:03 a.m. UTC | #8
Hi Morimoto-san,

>>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>
>>> This patch switches from .txt base to .yaml base Document.
>>>
>>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> (snip)
>> Since I am trying to re-use most of audio-graph for Tegra, can
>> 'compatible' be moved to a separate schema?
>> For example,
>> audio-graph.yaml -> defines all the common stuff
>> audio-graph-card.yaml -> audio-graph.yaml + 'compatible' property
>> Similarly, tegra-audio-graph-card.yaml -> audio-graph.yaml + Tegra
>> 'compatible' property
> I'm not expert of Json-Schema, and it sound very expert technique for me.
> (It always indicates me unknown errors...)
> I'm posting this patch since many month ago, and not yet accepted
> for many reasons (audio-graph DT is very complex).
> I spend many times for it and finally come to the point where it
> can (might) be accepted.
> I'm sorry but I want to finish this work,
> this means I don't want to customize it any more.
> If I try it, it needs more month...

I am not a json-schema expert either :) From earlier comments on Tegra 
audio graph series, above re-use is possible I suppose. I depend on your 
audio-graph documentation and for 'compatible' I am seeing error. So I 
thought it may be fine to split audio-graph into two json-schemas now 
itself. Otherwise I need to do it separately in my series if I want to 
re-use your audio-graph, which is fine with me.
Sameer Pujar Oct. 27, 2020, 6:15 a.m. UTC | #9
Hi Morimoto-san,

>>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>
>>> This patch switches from .txt base to .yaml base Document.
>>>
>>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>> ---
> (snip)
>>> +additionalProperties: false
>>> +
>> This needs to be true when other files want to reference this schema
>> and/or define some additional properties.
> *Current* audio-graph-card doesn't assume such case.
> I think you need to update it when you support tegra-audio-graph
This would be applicable when we want to split audio graph documentation 
into two schemas now itself. May be I will do this in my series.
Rob Herring Oct. 28, 2020, 4:04 p.m. UTC | #10
On Tue, Oct 27, 2020 at 11:33:49AM +0530, Sameer Pujar wrote:
> Hi Morimoto-san,
> 
> > > > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > > > 
> > > > This patch switches from .txt base to .yaml base Document.
> > > > 
> > > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > (snip)
> > > Since I am trying to re-use most of audio-graph for Tegra, can
> > > 'compatible' be moved to a separate schema?
> > > For example,
> > > audio-graph.yaml -> defines all the common stuff
> > > audio-graph-card.yaml -> audio-graph.yaml + 'compatible' property
> > > Similarly, tegra-audio-graph-card.yaml -> audio-graph.yaml + Tegra
> > > 'compatible' property
> > I'm not expert of Json-Schema, and it sound very expert technique for me.
> > (It always indicates me unknown errors...)
> > I'm posting this patch since many month ago, and not yet accepted
> > for many reasons (audio-graph DT is very complex).
> > I spend many times for it and finally come to the point where it
> > can (might) be accepted.
> > I'm sorry but I want to finish this work,
> > this means I don't want to customize it any more.
> > If I try it, it needs more month...
> 
> I am not a json-schema expert either :) From earlier comments on Tegra audio
> graph series, above re-use is possible I suppose. I depend on your
> audio-graph documentation and for 'compatible' I am seeing error. So I
> thought it may be fine to split audio-graph into two json-schemas now
> itself. Otherwise I need to do it separately in my series if I want to
> re-use your audio-graph, which is fine with me.

I think this part must be sorted out. Defining the graph schema could 
come later though.

With compatible dropped from audio-graph.yaml, 
audio-graph-scu-card.yaml would look like this:

allOf:
  - $ref: audio-graph.yaml

properties:
  compatible:
    const: audio-graph-scu-card

unevaluatedProperties: false


However, What is 'audio-graph-scu-card' supposed to mean compared to 
'audio-graph-card'. It's never used by the driver or in any dts file.

Rob
Kuninori Morimoto Oct. 28, 2020, 11:33 p.m. UTC | #11
Hi Rob

> However, What is 'audio-graph-scu-card' supposed to mean compared to 
> 'audio-graph-card'. It's never used by the driver or in any dts file.

It supports advanced use case of audio-graph-card,
but because of it, no *upstream* code is using it so far
(user need to select it locally for now).
Now I'm planning to remove it, but it will be next year.

Thank you for your help !!

Best regards
---
Kuninori Morimoto
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card.txt b/Documentation/devicetree/bindings/sound/audio-graph-card.txt
deleted file mode 100644
index d5f6919a2d69..000000000000
--- a/Documentation/devicetree/bindings/sound/audio-graph-card.txt
+++ /dev/null
@@ -1,337 +0,0 @@ 
-Audio Graph Card:
-
-Audio Graph Card specifies audio DAI connections of SoC <-> codec.
-It is based on common bindings for device graphs.
-see ${LINUX}/Documentation/devicetree/bindings/graph.txt
-
-Basically, Audio Graph Card property is same as Simple Card.
-see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.yaml
-
-Below are same as Simple-Card.
-
-- label
-- widgets
-- routing
-- dai-format
-- frame-master
-- bitclock-master
-- bitclock-inversion
-- frame-inversion
-- mclk-fs
-- hp-det-gpio
-- mic-det-gpio
-- dai-tdm-slot-num
-- dai-tdm-slot-width
-- clocks / system-clock-frequency
-
-Required properties:
-
-- compatible				: "audio-graph-card";
-- dais					: list of CPU DAI port{s}
-
-Optional properties:
-- pa-gpios: GPIO used to control external amplifier.
-
------------------------
-Example: Single DAI case
------------------------
-
-	sound_card {
-		compatible = "audio-graph-card";
-
-		dais = <&cpu_port>;
-	};
-
-	dai-controller {
-		...
-		cpu_port: port {
-			cpu_endpoint: endpoint {
-				remote-endpoint = <&codec_endpoint>;
-
-				dai-format = "left_j";
-				...
-			};
-		};
-	};
-
-	audio-codec {
-		...
-		port {
-			codec_endpoint: endpoint {
-				remote-endpoint = <&cpu_endpoint>;
-			};
-		};
-	};
-
------------------------
-Example: Multi DAI case
------------------------
-
-	sound-card {
-		compatible = "audio-graph-card";
-
-		label = "sound-card";
-
-		dais = <&cpu_port0
-			&cpu_port1
-			&cpu_port2>;
-	};
-
-	audio-codec@0 {
-		...
-		port {
-			codec0_endpoint: endpoint {
-				remote-endpoint = <&cpu_endpoint0>;
-			};
-		};
-	};
-
-	audio-codec@1 {
-		...
-		port {
-			codec1_endpoint: endpoint {
-				remote-endpoint = <&cpu_endpoint1>;
-			};
-		};
-	};
-
-	audio-codec@2 {
-		...
-		port {
-			codec2_endpoint: endpoint {
-				remote-endpoint = <&cpu_endpoint2>;
-			};
-		};
-	};
-
-	dai-controller {
-		...
-		ports {
-			cpu_port0: port@0 {
-				cpu_endpoint0: endpoint {
-					remote-endpoint = <&codec0_endpoint>;
-
-					dai-format = "left_j";
-					...
-				};
-			};
-			cpu_port1: port@1 {
-				cpu_endpoint1: endpoint {
-					remote-endpoint = <&codec1_endpoint>;
-
-					dai-format = "i2s";
-					...
-				};
-			};
-			cpu_port2: port@2 {
-				cpu_endpoint2: endpoint {
-					remote-endpoint = <&codec2_endpoint>;
-
-					dai-format = "i2s";
-					...
-				};
-			};
-		};
-	};
-
-
------------------------
-Example: Sampling Rate Conversion
------------------------
-
-	sound_card {
-		compatible = "audio-graph-card";
-
-		label = "sound-card";
-		prefix = "codec";
-		routing = "codec Playback", "DAI0 Playback",
-			  "DAI0 Capture",   "codec Capture";
-		convert-rate = <48000>;
-
-		dais = <&cpu_port>;
-	};
-
-	audio-codec {
-		...
-		port {
-			codec_endpoint: endpoint {
-				remote-endpoint = <&cpu_endpoint>;
-			};
-		};
-	};
-
-	dai-controller {
-		...
-		cpu_port: port {
-			cpu_endpoint: endpoint {
-				remote-endpoint = <&codec_endpoint>;
-
-				dai-format = "left_j";
-				...
-			};
-		};
-	};
-
------------------------
-Example: 2 CPU 1 Codec (Mixing)
------------------------
-
-	sound_card {
-		compatible = "audio-graph-card";
-
-		label = "sound-card";
-		routing = "codec Playback", "DAI0 Playback",
-			  "codec Playback", "DAI1 Playback",
-			  "DAI0 Capture",   "codec Capture";
-
-		dais = <&cpu_port>;
-	};
-
-	audio-codec {
-		...
-
-		audio-graph-card,prefix = "codec";
-		audio-graph-card,convert-rate = <48000>;
-		port {
-			reg = <0>;
-			codec_endpoint0: endpoint@0 {
-				remote-endpoint = <&cpu_endpoint0>;
-			};
-			codec_endpoint1: endpoint@1 {
-				remote-endpoint = <&cpu_endpoint1>;
-			};
-		};
-	};
-
-	dai-controller {
-		...
-		cpu_port: port {
-			cpu_endpoint0: endpoint@0 {
-				remote-endpoint = <&codec_endpoint0>;
-
-				dai-format = "left_j";
-				...
-			};
-			cpu_endpoint1: endpoint@1 {
-				remote-endpoint = <&codec_endpoint1>;
-
-				dai-format = "left_j";
-				...
-			};
-		};
-	};
-
------------------------
-Example: Multi DAI with DPCM
------------------------
-
-	CPU0 ------ ak4613
-	CPU1 ------ HDMI
-	CPU2 ------ PCM3168A-p	/* DPCM 1ch/2ch */
-	CPU3 --/		/* DPCM 3ch/4ch */
-	CPU4 --/		/* DPCM 5ch/6ch */
-	CPU5 --/		/* DPCM 7ch/8ch */
-	CPU6 ------ PCM3168A-c
-
-	sound_card: sound {
-		compatible = "audio-graph-card";
-
-		label = "sound-card";
-
-		routing =	"pcm3168a Playback", "DAI2 Playback",
-				"pcm3168a Playback", "DAI3 Playback",
-				"pcm3168a Playback", "DAI4 Playback",
-				"pcm3168a Playback", "DAI5 Playback";
-
-		dais = <&snd_port0	/* ak4613 */
-			&snd_port1	/* HDMI0  */
-			&snd_port2	/* pcm3168a playback */
-			&snd_port3	/* pcm3168a capture  */
-			>;
-	};
-
-	ak4613: codec@10 {
-		...
-		port {
-			ak4613_endpoint: endpoint {
-				remote-endpoint = <&rsnd_endpoint0>;
-			};
-		};
-	};
-
-	pcm3168a: audio-codec@44 {
-		...
-		audio-graph-card,prefix = "pcm3168a";
-		audio-graph-card,convert-channels = <8>; /* TDM Split */
-		ports {
-			port@0 {
-				reg = <0>;
-				pcm3168a_endpoint_p1: endpoint@1 {
-					remote-endpoint = <&rsnd_endpoint2>;
-					...
-				};
-				pcm3168a_endpoint_p2: endpoint@2 {
-					remote-endpoint = <&rsnd_endpoint3>;
-					...
-				};
-				pcm3168a_endpoint_p3: endpoint@3 {
-					remote-endpoint = <&rsnd_endpoint4>;
-					...
-				};
-				pcm3168a_endpoint_p4: endpoint@4 {
-					remote-endpoint = <&rsnd_endpoint5>;
-					...
-				};
-			};
-			port@1 {
-				reg = <1>;
-				pcm3168a_endpoint_c: endpoint {
-					remote-endpoint = <&rsnd_endpoint6>;
-					...
-				};
-			};
-		};
-	};
-
-	&sound {
-		ports {
-			snd_port0: port@0 {
-				rsnd_endpoint0: endpoint {
-					remote-endpoint = <&ak4613_endpoint>;
-					...
-				};
-			};
-			snd_port1: port@1 {
-				rsnd_endpoint1: endpoint {
-					remote-endpoint = <&dw_hdmi0_snd_in>;
-					...
-				};
-			};
-			snd_port2: port@2 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				rsnd_endpoint2: endpoint@2 {
-					remote-endpoint = <&pcm3168a_endpoint_p1>;
-					...
-				};
-				rsnd_endpoint3: endpoint@3 {
-					remote-endpoint = <&pcm3168a_endpoint_p2>;
-					...
-				};
-				rsnd_endpoint4: endpoint@4 {
-					remote-endpoint = <&pcm3168a_endpoint_p3>;
-					...
-				};
-				rsnd_endpoint5: endpoint@5 {
-					remote-endpoint = <&pcm3168a_endpoint_p4>;
-					...
-				};
-			};
-			snd_port3: port@6 {
-				rsnd_endpoint6: endpoint {
-					remote-endpoint = <&pcm3168a_endpoint_c>;
-					...
-				};
-			};
-		};
-	};
diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card.yaml b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
new file mode 100644
index 000000000000..9ccffbda86a8
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/audio-graph-card.yaml
@@ -0,0 +1,165 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/audio-graph-card.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Audio Graph Card Driver Device Tree Bindings
+
+maintainers:
+  - Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+
+properties:
+  compatible:
+    enum:
+      - audio-graph-card
+      - audio-graph-scu-card
+
+  dais:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+  label:
+    maxItems: 1
+  prefix:
+    description: "device name prefix"
+    $ref: /schemas/types.yaml#/definitions/string
+  "audio-graph-card,prefix":
+    description: "device name prefix"
+    $ref: /schemas/types.yaml#/definitions/string
+  routing:
+    description: |
+      A list of the connections between audio components.
+      Each entry is a pair of strings, the first being the
+      connection's sink, the second being the connection's source.
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+  widgets:
+    description: User specified audio sound widgets.
+    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+  convert-rate:
+    description: CPU to Codec rate convert.
+    $ref: /schemas/types.yaml#/definitions/uint32
+  "audio-graph-card,convert-rate":
+    description: CPU to Codec rate convert.
+    $ref: /schemas/types.yaml#/definitions/uint32
+  convert-channels:
+    description: CPU to Codec rate channels.
+    $ref: /schemas/types.yaml#/definitions/uint32
+  "audio-graph-card,convert-channels":
+    description: CPU to Codec rate channels.
+    $ref: /schemas/types.yaml#/definitions/uint32
+  pa-gpios:
+    maxItems: 1
+  hp-det-gpio:
+    maxItems: 1
+  mic-det-gpio:
+    maxItems: 1
+
+  endpoint:
+    type: object
+    properties:
+      remote-endpoint:
+        maxItems: 1
+      mclk-fs:
+        description: |
+          Multiplication factor between stream rate and codec mclk.
+          When defined, mclk-fs property defined in dai-link sub nodes are ignored.
+        $ref: /schemas/types.yaml#/definitions/uint32
+      frame-inversion:
+        description: dai-link uses frame clock inversion
+        $ref: /schemas/types.yaml#/definitions/flag
+      bitclock-inversion:
+        description: dai-link uses bit clock inversion
+        $ref: /schemas/types.yaml#/definitions/flag
+      frame-master:
+        description: Indicates dai-link frame master.
+        $ref: /schemas/types.yaml#/definitions/phandle-array
+        maxItems: 1
+      bitclock-master:
+        description: Indicates dai-link bit clock master
+        $ref: /schemas/types.yaml#/definitions/phandle-array
+        maxItems: 1
+      dai-format:
+        description: audio format.
+        items:
+          enum:
+            - i2s
+            - right_j
+            - left_j
+            - dsp_a
+            - dsp_b
+            - ac97
+            - pdm
+            - msb
+            - lsb
+      convert-rate:
+        description: CPU to Codec rate convert.
+        $ref: /schemas/types.yaml#/definitions/uint32
+      convert-channels:
+        description: CPU to Codec rate channels.
+        $ref: /schemas/types.yaml#/definitions/uint32
+    required:
+      - remote-endpoint
+
+  port:
+    description: single OF-Graph subnode
+    type: object
+    properties:
+      reg:
+        maxItems: 1
+      prefix:
+        description: "device name prefix"
+        $ref: /schemas/types.yaml#/definitions/string
+      convert-rate:
+        description: CPU to Codec rate convert.
+        $ref: /schemas/types.yaml#/definitions/uint32
+      convert-channels:
+        description: CPU to Codec rate channels.
+        $ref: /schemas/types.yaml#/definitions/uint32
+    patternProperties:
+      "^endpoint(@[0-9a-f]+)?":
+        $ref: "#/properties/endpoint"
+
+  ports:
+    description: multi OF-Graph subnode
+    type: object
+    patternProperties:
+      "^port(@[0-9a-f]+)?":
+        $ref: "#/properties/port"
+
+required:
+  - compatible
+  - dais
+
+additionalProperties: false
+
+examples:
+  - |
+    sound {
+        compatible = "audio-graph-card";
+
+        dais = <&cpu_port_a>;
+    };
+
+    cpu {
+        /*
+         * dai-controller own settings
+         */
+
+        port {
+            cpu_endpoint: endpoint {
+                remote-endpoint = <&codec_endpoint>;
+                dai-format = "left_j";
+            };
+        };
+    };
+
+    codec {
+        /*
+         * codec own settings
+         */
+
+        port {
+            codec_endpoint: endpoint {
+                remote-endpoint = <&cpu_endpoint>;
+            };
+        };
+    };
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 63996ab03521..5ada35ddac7e 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -20,7 +20,7 @@  patternProperties:
   "^(keypad|m25p|max8952|max8997|max8998|mpmc),.*": true
   "^(pinctrl-single|#pinctrl-single|PowerPC),.*": true
   "^(pl022|pxa-mmc|rcar_sound|rotary-encoder|s5m8767|sdhci),.*": true
-  "^(simple-audio-card|st-plgpio|st-spics|ts),.*": true
+  "^(simple-audio-card|audio-graph-card|st-plgpio|st-spics|ts),.*": true
 
   # Keep list in alphabetical order.
   "^70mai,.*":