On Mon, Jul 19, 2021 at 7:48 PM Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> wrote: > > > From: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > > This patch adds Audio Graph Card2 Yaml bindings. > It is similar to Audio Graph Card, but different. > > - audio-graph-card used "dais" to indicate DAI-links, > audio-graph-card2 uses "links" to it. > > - audio-graph-card used "phandle" to indicate bitclock/frame-master, > audio-graph-card2 uses flag to it. > > - audio-graph-card used "format" to indicate DAI format, > audio-graph-card2 assumes CPU/Codec drivers have .get_fmt support. Why do we need these changes? I'm not wild about a new generic binding replacing an existing one which only has 2 or 3 users IIRC. Plus there's already the Renesas variant. (On the flip side, only a few users, easier to deprecate the old binding.) I also would like to see the graph card replace the simple card binding. Surely it can handle the 'simple' case too. > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > --- > .../sound/audio-graph-card2-items.yaml | 80 +++++++++++++++++++ > .../bindings/sound/audio-graph-card2.yaml | 51 ++++++++++++ > 2 files changed, 131 insertions(+) > create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card2-items.yaml > create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card2.yaml > > diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card2-items.yaml b/Documentation/devicetree/bindings/sound/audio-graph-card2-items.yaml > new file mode 100644 > index 000000000000..ec94cad6b939 > --- /dev/null > +++ b/Documentation/devicetree/bindings/sound/audio-graph-card2-items.yaml > @@ -0,0 +1,80 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/sound/audio-graph-card2-items.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Audio Graph Card2 Items Bindings > + > +maintainers: > + - Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > + > +properties: > + compatible: > + enum: > + - audio-graph-card2-dsp > + - audio-graph-card2-multi > + - audio-graph-card2-codec2codec This appears to be a significant change. Why do we need to encode this info into the compatible? Can't walking the graph tell us this info? > + > + "#address-cells": > + const: 1 > + > + "#size-cells": > + const: 0 > + > +patternProperties: > + "^ports(@[0-1])?$": > + $ref: /schemas/graph.yaml#/properties/ports > + properties: > + port(@[0-9a-f]+)?: > + $ref: audio-graph-port.yaml# > + unevaluatedProperties: false > + additionalProperties: true > + > +required: > + - compatible > + > +additionalProperties: true > + > +examples: > + - | > + mix { > + compatible = "audio-graph-card2-dsp"; > + > + /* sample ports > + ports@0 { > + port@0 { mix_fe0_ep: endpoint { remote-endpoint = <&cpu0_ep>; }; }; > + port@1 { mix_fe1_ep: endpoint { remote-endpoint = <&cpu1_ep>; }; }; > + }; > + ports@1 { > + port@0 { mix_be0_ep: endpoint { remote-endpoint = <&codec0_ep>; }; }; > + }; > + */ > + }; > + > + multi { > + compatible = "audio-graph-card2-multi"; > + > + /* sample ports > + ports@0 { > + port@0 { multi_00_ep: endpoint { remote-endpoint = <&cpu2_ep>; }; }; > + port@1 { multi_01_ep: endpoint { remote-endpoint = <&cpu3_ep>; }; }; > + }; > + ports@1 { > + port@0 { multi_10_ep: endpoint { remote-endpoint = <&codec1_ep>; }; }; > + port@1 { multi_11_ep: endpoint { remote-endpoint = <&codec2_ep>; }; }; > + }; > + */ > + }; > + > + codec2codec { > + compatible = "audio-graph-card2-codec2codec"; > + > + /* sample ports > + rate = <48000>; > + ports { > + port@0 { c2c_0_ep: endpoint { remote-endpoint = <&codec3_ep>; }; }; > + port@1 { c2c_1_ep: endpoint { remote-endpoint = <&codec4_ep>; }; }; > + }; > + */ > + }; > diff --git a/Documentation/devicetree/bindings/sound/audio-graph-card2.yaml b/Documentation/devicetree/bindings/sound/audio-graph-card2.yaml > new file mode 100644 > index 000000000000..4975f88de025 > --- /dev/null > +++ b/Documentation/devicetree/bindings/sound/audio-graph-card2.yaml > @@ -0,0 +1,51 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/sound/audio-graph-card2.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Audio Graph Card2 Device Tree Bindings > + > +maintainers: > + - Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > + > +properties: > + compatible: > + enum: > + - audio-graph-card2 > + links: > + $ref: /schemas/types.yaml#/definitions/phandle-array > + label: > + maxItems: 1 > + 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 > + > +required: > + - compatible > + - links > + > +additionalProperties: false > + > +examples: > + - | > + sound { > + compatible = "audio-graph-card2"; > + > + links = <&cpu_port>; > + }; > + > + cpu { > + compatible = "cpu-driver"; > + > + cpu_port: port { cpu_ep: endpoint { remote-endpoint = <&codec_ep>; }; }; > + }; > + > + codec { > + compatible = "codec-driver"; > + > + port { codec_ep: endpoint { remote-endpoint = <&cpu_ep>; }; }; > + }; > -- > 2.25.1 >