ASoC: audio-graph-card: switch to yaml base Documentation
This patch switches from .txt base to .yaml base Document. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Acked-by: Sameer Pujar <spujar@nvidia.com> Reviewed-by: Rob Herring <robh@kernel.org> Link: https://lore.kernel.org/r/87d00sbawh.wl-kuninori.morimoto.gx@renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
b8f9495776
commit
97198614f6
2 changed files with 153 additions and 337 deletions
|
@ -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>;
|
|
||||||
...
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
153
Documentation/devicetree/bindings/sound/audio-graph-card.yaml
Normal file
153
Documentation/devicetree/bindings/sound/audio-graph-card.yaml
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
# 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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
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]+)?":
|
||||||
|
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
|
||||||
|
|
||||||
|
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>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
Loading…
Add table
Reference in a new issue