← Documents Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / Sound

TI DaVinci McASP controller

McASP register, serializer, DMA, FIFO, interrupt, clock과 graph binding을 설명합니다.

Source pathDocumentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

davinci-mcasp-audio.yaml:1-202

DAI stream과 TI McASP의 schema 구조, clock·DMA·routing 조건을 먼저 해설하고, 접을 수 있는 영어 원문 전체와 원문 줄 좌표를 보존한 한국어 전문 번역을 제공합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/sound/davinci-mcasp-audio.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: McASP Controller for TI SoCs
8
9 maintainers:
10 - Jayesh Choudhary <[email protected]>
11
12 properties:
13 compatible:
14 enum:
15 - ti,dm646x-mcasp-audio
16 - ti,da830-mcasp-audio
17 - ti,am33xx-mcasp-audio
18 - ti,dra7-mcasp-audio
19 - ti,omap4-mcasp-audio
20
21 reg:
22 minItems: 1
23 items:
24 - description: CFG registers
25 - description: data registers
26
27 reg-names:
28 minItems: 1
29 items:
30 - const: mpu
31 - const: dat
32
33 op-mode:
34 $ref: /schemas/types.yaml#/definitions/uint32
35 description: 0 - I2S or 1 - DIT operation mode
36 enum:
37 - 0
38 - 1
39
40 tdm-slots:
41 $ref: /schemas/types.yaml#/definitions/uint32
42 description:
43 number of channels over one serializer
44 the property is ignored in DIT mode
45 minimum: 2
46 maximum: 32
47
48 serial-dir:
49 description:
50 A list of serializer configuration
51 Entry is indication for serializer pin direction
52 0 - Inactive, 1 - TX, 2 - RX
53 All AXR pins should be present in the array even if inactive
54 $ref: /schemas/types.yaml#/definitions/uint32-array
55 minItems: 1
56 maxItems: 25
57 items:
58 minimum: 0
59 maximum: 2
60
61 dmas:
62 minItems: 1
63 items:
64 - description: transmission DMA channel
65 - description: reception DMA channel
66
67 dma-names:
68 minItems: 1
69 items:
70 - const: tx
71 - const: rx
72
73 ti,hwmods:
74 $ref: /schemas/types.yaml#/definitions/string
75 description: Name of hwmod associated with McASP
76 maxItems: 1
77 deprecated: true
78
79 tx-num-evt:
80 $ref: /schemas/types.yaml#/definitions/uint32
81 description:
82 configures WFIFO threshold
83 0 disables the FIFO use
84 if property is missing, then also FIFO use is disabled
85
86 rx-num-evt:
87 $ref: /schemas/types.yaml#/definitions/uint32
88 description:
89 configures RFIFO threshold
90 0 disables the FIFO use
91 if property is missing, then also FIFO use is disabled
92
93 dismod:
94 $ref: /schemas/types.yaml#/definitions/uint32
95 description:
96 specify the drive on TX pin during inactive time slots
97 0 - 3-state, 2 - logic low, 3 - logic high
98 enum:
99 - 0
100 - 2
101 - 3
102 default: 2
103
104 interrupts:
105 minItems: 1
106 maxItems: 2
107
108 interrupt-names:
109 oneOf:
110 - description: TX interrupt
111 const: tx
112 - description: RX interrupt
113 const: rx
114 - description: TX and RX interrupts
115 items:
116 - const: tx
117 - const: rx
118 - description: Common/combined interrupt
119 const: common
120
121 fck_parent:
122 $ref: /schemas/types.yaml#/definitions/string
123 description: parent clock name for McASP fck
124 maxItems: 1
125
126 auxclk-fs-ratio:
127 $ref: /schemas/types.yaml#/definitions/uint32
128 description: ratio of AUCLK and FS rate if applicable
129
130 gpio-controller: true
131
132 "#gpio-cells":
133 const: 2
134
135 clocks:
136 minItems: 1
137 items:
138 - description: functional clock
139 - description: module specific optional ahclkx clock
140 - description: module specific optional ahclkr clock
141
142 clock-names:
143 minItems: 1
144 items:
145 - const: fck
146 - const: ahclkx
147 - const: ahclkr
148
149 power-domains:
150 description: phandle to the corresponding power-domain
151 maxItems: 1
152
153 "#sound-dai-cells":
154 const: 0
155
156 port:
157 description: connection for when McASP is used via graph card
158 type: object
159
160 required:
161 - compatible
162 - reg
163 - reg-names
164 - dmas
165 - dma-names
166 - interrupts
167 - interrupt-names
168
169 allOf:
170 - $ref: dai-common.yaml#
171 - if:
172 properties:
173 opmode:
174 enum:
175 - 0
176
177 then:
178 required:
179 - tdm-slots
180
181 unevaluatedProperties: false
182
183 examples:
184 - |
185 mcasp0: mcasp0@1d00000 {
186 compatible = "ti,da830-mcasp-audio";
187 reg = <0x100000 0x3000>;
188 reg-names = "mpu";
189 interrupts = <82>, <83>;
190 interrupt-names = "tx", "rx";
191 op-mode = <0>; /* MCASP_IIS_MODE */
192 tdm-slots = <2>;
193 dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
194 dma-names = "tx", "rx";
195 serial-dir = <
196 0 0 0 0 /* 0: INACTIVE, 1: TX, 2: RX */
197 0 0 0 0
198 0 0 0 1
199 2 0 0 0 >;
200 tx-num-evt = <1>;
201 rx-num-evt = <1>;
202 };
203

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

TI McASP controller schema

1-11

이 YAML binding은 TI SoC용 McASP controller를 정의합니다. Schema ID는 `http://devicetree.org/schemas/sound/davinci-mcasp-audio.yaml#`이고 maintainer는 Jayesh Choudhary입니다.

Compatible과 register 영역

12-32

`compatible`은 `ti,dm646x-mcasp-audio`, `ti,da830-mcasp-audio`, `ti,am33xx-mcasp-audio`, `ti,dra7-mcasp-audio`, `ti,omap4-mcasp-audio` 중 하나입니다.

`reg`는 최소 한 영역을 가지며 첫 항목은 CFG register, 선택적인 둘째 항목은 data register입니다. `reg-names`는 이에 대응해 최소 `mpu`, 선택적으로 `dat`를 사용합니다.

Operation mode, TDM과 serializer

33-60

`op-mode`는 `uint32`이며 값 0은 I2S, 값 1은 DIT operation mode입니다.

`tdm-slots`는 serializer 하나가 운반하는 channel 수로 2~32 범위이며 DIT mode에서는 무시됩니다.

`serial-dir`은 모든 AXR pin의 serializer 방향 배열입니다. 비활성 pin도 배열에 포함해야 하며 값 0은 inactive, 1은 TX, 2는 RX입니다. 항목 수는 1~25개이고 각 값 범위는 0~2입니다.

DMA와 deprecated hwmod

61-78

`dmas`는 최소 transmission DMA channel을, 선택적으로 reception DMA channel을 둘째 항목에 지정합니다. `dma-names`는 같은 순서로 `tx`, `rx`입니다.

`ti,hwmods`는 McASP와 연관된 hwmod 이름 문자열 하나를 지정하지만 deprecated 속성입니다.

FIFO threshold와 inactive TX drive

79-103

`tx-num-evt`는 WFIFO threshold, `rx-num-evt`는 RFIFO threshold를 설정합니다. 값 0 또는 속성 생략은 해당 FIFO 사용을 비활성화합니다.

`dismod`는 inactive time slot에서 TX pin을 어떻게 구동할지 정합니다. 값 0은 3-state, 2는 logic low, 3은 logic high이며 기본값은 2입니다.

Interrupt 이름 조합

104-120

`interrupts`는 1~2개 interrupt를 허용합니다. `interrupt-names`는 TX 하나면 `tx`, RX 하나면 `rx`, 둘 모두면 `tx`, `rx` 순서, common/combined interrupt이면 `common`입니다.

Clock, GPIO, power domain과 graph port

121-159

`fck_parent`는 McASP functional clock의 parent clock 이름이고 `auxclk-fs-ratio`는 적용 가능한 경우 AUCLK와 FS rate 비율입니다.

McASP는 GPIO controller가 될 수 있으며 `#gpio-cells`는 2입니다.

`clocks`는 최소 functional clock을 지정하고 선택적으로 module-specific `ahclkx`, `ahclkr` clock을 추가합니다. `clock-names`는 같은 순서로 `fck`, `ahclkx`, `ahclkr`입니다.

`power-domains`는 대응 power domain phandle 하나를, `#sound-dai-cells`는 0을 사용합니다. `port` object는 graph card를 통해 McASP를 연결할 때 사용합니다.

필수 속성과 I2S 조건

160-181

필수 속성은 `compatible`, `reg`, `reg-names`, `dmas`, `dma-names`, `interrupts`, `interrupt-names`입니다. 이 schema는 `dai-common.yaml#`도 참조하며 정의되지 않은 속성은 허용하지 않습니다.

조건부 schema는 operation mode가 0일 때 `tdm-slots`를 요구하려는 구조입니다.

속성 선언은 `op-mode`이지만 조건부 `if`에서는 `opmode`로 적혀 있습니다. 이 표기 차이를 원문 그대로 보존했습니다.

DA830 McASP 예제

182-202

예제는 DA830 McASP의 `mpu` register, TX·RX interrupt와 DMA, I2S mode의 2 TDM slot을 구성합니다. 16개 serializer 중 하나를 TX, 하나를 RX로 두고 TX·RX FIFO event threshold를 1로 설정합니다.

- |
  mcasp0: mcasp0@1d00000 {
    compatible = "ti,da830-mcasp-audio";
    reg = <0x100000 0x3000>;
    reg-names = "mpu";
    interrupts = <82>, <83>;
    interrupt-names = "tx", "rx";
    op-mode = <0>;                /* MCASP_IIS_MODE */
    tdm-slots = <2>;
    dmas = <&main_udmap 0xc400>, <&main_udmap 0x4400>;
    dma-names = "tx", "rx";
    serial-dir = <
        0 0 0 0        /* 0: INACTIVE, 1: TX, 2: RX */
        0 0 0 0
        0 0 0 1
        2 0 0 0 >;
    tx-num-evt = <1>;
    rx-num-evt = <1>;
  };