On Mon, Jul 19, 2021 at 7:48 PM Kuninori Morimoto kuninori.morimoto.gx@renesas.com wrote:
From: Kuninori Morimoto kuninori.morimoto.gx@renesas.com
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@renesas.com
.../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@renesas.com
+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@renesas.com
+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