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
@ -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…
Reference in New Issue
Block a user