hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Audio-Graph-SCU-Card:
 
Audio-Graph-SCU-Card is "Audio-Graph-Card" + "ALSA DPCM".
 
It is based on common bindings for device graphs.
see ${LINUX}/Documentation/devicetree/bindings/graph.txt
 
Basically, Audio-Graph-SCU-Card property is same as
Simple-Card / Simple-SCU-Card / Audio-Graph-Card.
see ${LINUX}/Documentation/devicetree/bindings/sound/simple-card.txt
    ${LINUX}/Documentation/devicetree/bindings/sound/simple-scu-card.txt
    ${LINUX}/Documentation/devicetree/bindings/sound/audio-graph-card.txt
 
Below are same as Simple-Card / Audio-Graph-Card.
 
- label
- dai-format
- frame-master
- bitclock-master
- bitclock-inversion
- frame-inversion
- dai-tdm-slot-num
- dai-tdm-slot-width
- clocks / system-clock-frequency
 
Below are same as Simple-SCU-Card.
 
- convert-rate
- convert-channels
- prefix
- routing
 
Required properties:
 
- compatible                : "audio-graph-scu-card";
- dais                    : list of CPU DAI port{s}
 
Example 1. Sampling Rate Conversion
 
   sound_card {
       compatible = "audio-graph-scu-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. 2 CPU 1 Codec (Mixing)
 
   sound_card {
       compatible = "audio-graph-scu-card";
 
       label = "sound-card";
       prefix = "codec";
       routing = "codec Playback", "DAI0 Playback",
             "codec Playback", "DAI1 Playback",
             "DAI0 Capture",   "codec Capture";
       convert-rate = <48000>;
 
       dais = <&cpu_port0
           &cpu_port1>;
   };
 
   audio-codec {
       ...
 
       port {
           codec_endpoint0: endpoint {
               remote-endpoint = <&cpu_endpoint0>;
           };
           codec_endpoint1: endpoint {
               remote-endpoint = <&cpu_endpoint1>;
           };
       };
   };
 
   dai-controller {
       ...
       ports {
           cpu_port0: port {
               cpu_endpoint0: endpoint {
                   remote-endpoint = <&codec_endpoint0>;
 
                   dai-format = "left_j";
                   ...
               };
           };
           cpu_port1: port {
               cpu_endpoint1: endpoint {
                   remote-endpoint = <&codec_endpoint1>;
 
                   dai-format = "left_j";
                   ...
               };
           };
       };
   };