← Documents Documentation/sound/hd-audio/intel-multi-link.rst GitHub 원문 ↗

Linux 6.18.37 · Sound

Intel 플랫폼의 HDAudio multi-link 확장

Intel HDAudio multi-link의 기존 HDaudio, SoundWire, DMIC, SSP link 식별자와 register offset, power, DMA, DSP hand-over 및 sublink 주소 계산을 설명합니다.

Source pathDocumentation/sound/hd-audio/intel-multi-link.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

2. 영어 원문 전체

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

원문 전체 펼치기
1 .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
2 .. include:: <isonum.txt>
3
4 ================================================
5 HDAudio multi-link extensions on Intel platforms
6 ================================================
7
8 :Copyright: |copy| 2023 Intel Corporation
9
10 This file documents the 'multi-link structure' introduced in 2015 with
11 the Skylake processor and recently extended in newer Intel platforms
12
13 HDaudio existing link mapping (2015 addition in SkyLake)
14 ========================================================
15
16 External HDAudio codecs are handled with link #0, while iDISP codec
17 for HDMI/DisplayPort is handled with link #1.
18
19 The only change to the 2015 definitions is the declaration of the
20 LCAP.ALT=0x0 - since the ALT bit was previously reserved, this is a
21 backwards-compatible change.
22
23 LCTL.SPA and LCTL.CPA are automatically set when exiting reset. They
24 are only used in existing drivers when the SCF value needs to be
25 corrected.
26
27 Basic structure for HDaudio codecs
28 ----------------------------------
29
30 ::
31
32 +-----------+
33 | ML cap #0 |
34 +-----------+
35 | ML cap #1 |---+
36 +-----------+ |
37 |
38 +--> 0x0 +---------------+ LCAP
39 | ALT=0 |
40 +---------------+
41 | S192 |
42 +---------------+
43 | S96 |
44 +---------------+
45 | S48 |
46 +---------------+
47 | S24 |
48 +---------------+
49 | S12 |
50 +---------------+
51 | S6 |
52 +---------------+
53
54 0x4 +---------------+ LCTL
55 | INTSTS |
56 +---------------+
57 | CPA |
58 +---------------+
59 | SPA |
60 +---------------+
61 | SCF |
62 +---------------+
63
64 0x8 +---------------+ LOSIDV
65 | L1OSIVD15 |
66 +---------------+
67 | L1OSIDV.. |
68 +---------------+
69 | L1OSIDV1 |
70 +---------------+
71
72 0xC +---------------+ LSDIID
73 | SDIID14 |
74 +---------------+
75 | SDIID... |
76 +---------------+
77 | SDIID0 |
78 +---------------+
79
80 SoundWire HDaudio extended link mapping
81 =======================================
82
83 A SoundWire extended link is identified when LCAP.ALT=1 and
84 LEPTR.ID=0.
85
86 DMA control uses the existing LOSIDV register.
87
88 Changes include additional descriptions for enumeration that were not
89 present in earlier generations.
90
91 - multi-link synchronization: capabilities in LCAP.LSS and control in LSYNC
92 - number of sublinks (manager IP) in LCAP.LSCOUNT
93 - power management moved from SHIM to LCTL.SPA bits
94 - hand-over to the DSP for access to multi-link registers, SHIM/IP with LCTL.OFLEN
95 - mapping of SoundWire codecs to SDI ID bits
96 - move of SHIM and Cadence registers to different offsets, with no
97 change in functionality. The LEPTR.PTR value is an offset from the
98 ML address, with a default value of 0x30000.
99
100 Extended structure for SoundWire (assuming 4 Manager IP)
101 --------------------------------------------------------
102
103 ::
104
105 +-----------+
106 | ML cap #0 |
107 +-----------+
108 | ML cap #1 |
109 +-----------+
110 | ML cap #2 |---+
111 +-----------+ |
112 |
113 +--> 0x0 +---------------+ LCAP
114 | ALT=1 |
115 +---------------+
116 | INTC |
117 +---------------+
118 | OFLS |
119 +---------------+
120 | LSS |
121 +---------------+
122 | SLCOUNT=4 |-----------+
123 +---------------+ |
124 |
125 0x4 +---------------+ LCTL |
126 | INTSTS | |
127 +---------------+ |
128 | CPA (x bits) | |
129 +---------------+ |
130 | SPA (x bits) | |
131 +---------------+ for each sublink x
132 | INTEN | |
133 +---------------+ |
134 | OFLEN | |
135 +---------------+ |
136 |
137 0x8 +---------------+ LOSIDV |
138 | L1OSIVD15 | |
139 +---------------+ |
140 | L1OSIDV.. | |
141 +---------------+ |
142 | L1OSIDV1 | +---+----------------------------------------------------------+
143 +---------------+ | |
144 v |
145 0xC + 0x2 * x +---------------+ LSDIIDx +---> 0x30000 +-----------------+ 0x00030000 |
146 | SDIID14 | | | SoundWire SHIM | |
147 +---------------+ | | generic | |
148 | SDIID... | | +-----------------+ 0x00030100 |
149 +---------------+ | | SoundWire IP | |
150 | SDIID0 | | +-----------------+ 0x00036000 |
151 +---------------+ | | SoundWire SHIM | |
152 | | vendor-specific | |
153 0x1C +---------------+ LSYNC | +-----------------+ |
154 | CMDSYNC | | v
155 +---------------+ | +-----------------+ 0x00030000 + 0x8000 * x
156 | SYNCGO | | | SoundWire SHIM |
157 +---------------+ | | generic |
158 | SYNCPU | | +-----------------+ 0x00030100 + 0x8000 * x
159 +---------------+ | | SoundWire IP |
160 | SYNPRD | | +-----------------+ 0x00036000 + 0x8000 * x
161 +---------------+ | | SoundWire SHIM |
162 | | vendor-specific |
163 0x20 +---------------+ LEPTR | +-----------------+
164 | ID = 0 | |
165 +---------------+ |
166 | VER | |
167 +---------------+ |
168 | PTR |------------+
169 +---------------+
170
171
172 DMIC HDaudio extended link mapping
173 ==================================
174
175 A DMIC extended link is identified when LCAP.ALT=1 and
176 LEPTR.ID=0xC1 are set.
177
178 DMA control uses the existing LOSIDV register
179
180 Changes include additional descriptions for enumeration that were not
181 present in earlier generations.
182
183 - multi-link synchronization: capabilities in LCAP.LSS and control in LSYNC
184 - power management with LCTL.SPA bits
185 - hand-over to the DSP for access to multi-link registers, SHIM/IP with LCTL.OFLEN
186
187 - move of DMIC registers to different offsets, with no change in
188 functionality. The LEPTR.PTR value is an offset from the ML
189 address, with a default value of 0x10000.
190
191 Extended structure for DMIC
192 ---------------------------
193
194 ::
195
196 +-----------+
197 | ML cap #0 |
198 +-----------+
199 | ML cap #1 |
200 +-----------+
201 | ML cap #2 |---+
202 +-----------+ |
203 |
204 +--> 0x0 +---------------+ LCAP
205 | ALT=1 |
206 +---------------+
207 | INTC |
208 +---------------+
209 | OFLS |
210 +---------------+
211 | SLCOUNT=1 |
212 +---------------+
213
214 0x4 +---------------+ LCTL
215 | INTSTS |
216 +---------------+
217 | CPA |
218 +---------------+
219 | SPA |
220 +---------------+
221 | INTEN |
222 +---------------+
223 | OFLEN |
224 +---------------+ +---> 0x10000 +-----------------+ 0x00010000
225 | | DMIC SHIM |
226 0x8 +---------------+ LOSIDV | | generic |
227 | L1OSIVD15 | | +-----------------+ 0x00010100
228 +---------------+ | | DMIC IP |
229 | L1OSIDV.. | | +-----------------+ 0x00016000
230 +---------------+ | | DMIC SHIM |
231 | L1OSIDV1 | | | vendor-specific |
232 +---------------+ | +-----------------+
233 |
234 0x20 +---------------+ LEPTR |
235 | ID = 0xC1 | |
236 +---------------+ |
237 | VER | |
238 +---------------+ |
239 | PTR |-----------+
240 +---------------+
241
242
243 SSP HDaudio extended link mapping
244 =================================
245
246 A DMIC extended link is identified when LCAP.ALT=1 and
247 LEPTR.ID=0xC0 are set.
248
249 DMA control uses the existing LOSIDV register
250
251 Changes include additional descriptions for enumeration and control that were not
252 present in earlier generations:
253 - number of sublinks (SSP IP instances) in LCAP.LSCOUNT
254 - power management moved from SHIM to LCTL.SPA bits
255 - hand-over to the DSP for access to multi-link registers, SHIM/IP
256 with LCTL.OFLEN
257 - move of SHIM and SSP IP registers to different offsets, with no
258 change in functionality. The LEPTR.PTR value is an offset from the ML
259 address, with a default value of 0x28000.
260
261 Extended structure for SSP (assuming 3 instances of the IP)
262 -----------------------------------------------------------
263
264 ::
265
266 +-----------+
267 | ML cap #0 |
268 +-----------+
269 | ML cap #1 |
270 +-----------+
271 | ML cap #2 |---+
272 +-----------+ |
273 |
274 +--> 0x0 +---------------+ LCAP
275 | ALT=1 |
276 +---------------+
277 | INTC |
278 +---------------+
279 | OFLS |
280 +---------------+
281 | SLCOUNT=3 |-------------------------for each sublink x -------------------------+
282 +---------------+ |
283 |
284 0x4 +---------------+ LCTL |
285 | INTSTS | |
286 +---------------+ |
287 | CPA (x bits) | |
288 +---------------+ |
289 | SPA (x bits) | |
290 +---------------+ |
291 | INTEN | |
292 +---------------+ |
293 | OFLEN | |
294 +---------------+ +---> 0x28000 +-----------------+ 0x00028000 |
295 | | SSP SHIM | |
296 0x8 +---------------+ LOSIDV | | generic | |
297 | L1OSIVD15 | | +-----------------+ 0x00028100 |
298 +---------------+ | | SSP IP | |
299 | L1OSIDV.. | | +-----------------+ 0x00028C00 |
300 +---------------+ | | SSP SHIM | |
301 | L1OSIDV1 | | | vendor-specific | |
302 +---------------+ | +-----------------+ |
303 | v
304 0x20 +---------------+ LEPTR | +-----------------+ 0x00028000 + 0x1000 * x
305 | ID = 0xC0 | | | SSP SHIM |
306 +---------------+ | | generic |
307 | VER | | +-----------------+ 0x00028100 + 0x1000 * x
308 +---------------+ | | SSP IP |
309 | PTR |-----------+ +-----------------+ 0x00028C00 + 0x1000 * x
310 +---------------+ | SSP SHIM |
311 | vendor-specific |
312 +-----------------+
313

3. 한국어 전문 번역

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

문서 범위와 저작권

1-12

이 문서는 `(GPL-2.0-only OR BSD-3-Clause)` 이중 라이선스를 사용하고 `isonum.txt`를 포함해 저작권 기호를 표시합니다. 저작권자는 2023 Intel Corporation입니다.

설명 대상은 2015년 Skylake 프로세서에서 도입되고 더 새로운 Intel 플랫폼에서 확장된 `multi-link structure`입니다.

문서 기준
항목내용
구조 도입2015년 Skylake
후속 확장더 새로운 Intel 플랫폼
저작권Copyright 2023 Intel Corporation
라이선스GPL-2.0-only OR BSD-3-Clause

원문 머리말의 범위와 식별 정보를 정리했습니다.

.. SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
.. include:: <isonum.txt>

================================================
HDAudio multi-link extensions on Intel platforms
================================================

:Copyright: |copy| 2023 Intel Corporation

This file documents the 'multi-link structure' introduced in 2015 with
the Skylake processor and recently extended in newer Intel platforms

기존 HDaudio link mapping

13-26

기존 HDaudio 연결에서 외부 codec은 link `#0`으로 처리하고, HDMI/DisplayPort용 `iDISP` codec은 link `#1`로 처리합니다.

2015년 정의에 대한 유일한 변경은 `LCAP.ALT=0x0` 선언입니다. `ALT` bit는 이전에 reserved였으므로 이 변경은 하위 호환됩니다.

`LCTL.SPA`와 `LCTL.CPA`는 reset에서 빠져나올 때 자동으로 설정됩니다. 기존 driver에서는 `SCF` 값을 바로잡아야 할 때만 이 bit들을 사용합니다.

기존 link 역할
Link대상
#0외부 HDAudio codec
#1HDMI/DisplayPort용 iDISP codec

Skylake 세대의 두 HDaudio link 역할입니다.

Reset 해제 후 제어
Link reset 해제LCTL.SPA와 LCTL.CPA 자동 설정SCF 보정이 필요한지 확인필요한 경우에만 기존 driver가 SPA/CPA 사용

기존 driver가 link control 상태를 다루는 순서입니다.

HDaudio existing link mapping (2015 addition in SkyLake)
========================================================

External HDAudio codecs are handled with link #0, while iDISP codec
for HDMI/DisplayPort is handled with link #1.

The only change to the 2015 definitions is the declaration of the
LCAP.ALT=0x0 - since the ALT bit was previously reserved, this is a
backwards-compatible change.

LCTL.SPA and LCTL.CPA are automatically set when exiting reset. They
are only used in existing drivers when the SCF value needs to be
corrected.

기본 HDaudio codec 구조

27-79

기본 구조에서는 multi-link capability 목록의 `ML cap #1`이 register block을 가리킵니다. `LCAP`, `LCTL`, `LOSIDV`, `LSDIID`가 각각 `0x0`, `0x4`, `0x8`, `0xC` offset에 배치됩니다.

`LCAP`의 `ALT=0`은 기존 HDaudio link임을 나타내며 `S192`, `S96`, `S48`, `S24`, `S12`, `S6` 속도 capability를 함께 제공합니다. `LCTL`에는 interrupt 상태, 현재/요청 power 상태와 `SCF`가 있습니다.

기본 multi-link register block
OffsetRegisterFields
0x0LCAPALT=0, S192, S96, S48, S24, S12, S6
0x4LCTLINTSTS, CPA, SPA, SCF
0x8LOSIDVL1OSIVD15, L1OSIDV.., L1OSIDV1
0xCLSDIIDSDIID14, SDIID..., SDIID0

원문의 ASCII register 그림을 offset과 field가 보존되는 표로 재구성했습니다.

기본 capability 연결
ML cap #0ML cap #1 선택LCAP 0x0에서 ALT=0 및 속도 capability 확인LCTL / LOSIDV / LSDIID로 link 제어와 DMA stream ID 매핑

Capability entry에서 register block으로 이어지는 관계입니다.

Basic structure for HDaudio codecs
----------------------------------

::

  +-----------+
  | ML cap #0 |
  +-----------+
  | ML cap #1 |---+
  +-----------+   |
                  |
                  +--> 0x0 +---------------+ LCAP
                           | ALT=0         |
                           +---------------+
                           | S192          |
                           +---------------+
                           | S96           |
                           +---------------+
                           | S48           |
                           +---------------+
                           | S24           |
                           +---------------+
                           | S12           |
                           +---------------+
                           | S6            |
                           +---------------+

                       0x4 +---------------+ LCTL
                           | INTSTS        |
                           +---------------+
                           | CPA           |
                           +---------------+
                           | SPA           |
                           +---------------+
                           | SCF           |
                           +---------------+

                       0x8 +---------------+ LOSIDV
                           | L1OSIVD15     |
                           +---------------+
                           | L1OSIDV..     |
                           +---------------+
                           | L1OSIDV1      |
                           +---------------+

                       0xC +---------------+ LSDIID
                           | SDIID14       |
                           +---------------+
                           | SDIID...      |
                           +---------------+
                           | SDIID0        |
                           +---------------+

SoundWire 확장 link mapping

80-99

SoundWire extended link는 `LCAP.ALT=1`이고 `LEPTR.ID=0`일 때 식별됩니다. DMA 제어에는 기존 `LOSIDV` register를 사용합니다.

새 정의는 이전 세대에 없던 enumeration 설명을 추가합니다. `LCAP.LSS`와 `LSYNC`의 multi-link synchronization, `LCAP.LSCOUNT`의 sublink 수, `LCTL.SPA`의 power management, `LCTL.OFLEN`을 통한 DSP hand-over가 포함됩니다.

또한 SoundWire codec을 `SDI ID` bit에 매핑하고 SHIM 및 Cadence register를 새 offset으로 옮깁니다. 기능은 바뀌지 않으며 `LEPTR.PTR`은 ML 주소 기준 offset이고 기본값은 `0x30000`입니다.

SoundWire 확장 변경점
기능Register/field
Multi-link synchronization capability/controlLCAP.LSS / LSYNC
Manager IP sublink 수LCAP.LSCOUNT
Power managementLCTL.SPA bits
DSP hand-overLCTL.OFLEN
Codec-to-stream 매핑SDI ID bits
확장 block offsetLEPTR.PTR, 기본 0x30000

Enumeration과 제어에 추가된 항목입니다.

SoundWire HDaudio extended link mapping
=======================================

A SoundWire extended link is identified when LCAP.ALT=1 and
LEPTR.ID=0.

DMA control uses the existing LOSIDV register.

Changes include additional descriptions for enumeration that were not
present in earlier generations.

- multi-link synchronization: capabilities in LCAP.LSS and control in LSYNC
- number of sublinks (manager IP) in LCAP.LSCOUNT
- power management moved from SHIM to LCTL.SPA bits
- hand-over to the DSP for access to multi-link registers, SHIM/IP with LCTL.OFLEN
- mapping of SoundWire codecs to SDI ID bits
- move of SHIM and Cadence registers to different offsets, with no
  change in functionality. The LEPTR.PTR value is an offset from the
  ML address, with a default value of 0x30000.

SoundWire 확장 구조

100-171

그림은 Manager IP가 4개인 SoundWire 구성을 가정합니다. `ML cap #2`가 `ALT=1`, `ID=0`인 확장 register block과 sublink별 SoundWire window를 연결합니다.

원문 설명은 field를 `LCAP.LSCOUNT`라고 부르지만 그림에는 `SLCOUNT=4`로 표기합니다. 두 철자를 원문 그대로 보존하며, 아래 표에서도 그림 표기는 `SLCOUNT=4`로 구분합니다.

SoundWire multi-link register block
OffsetRegisterFields / 계산
0x0LCAPALT=1, INTC, OFLS, LSS, SLCOUNT=4
0x4LCTLINTSTS, CPA(x bits), SPA(x bits), INTEN, OFLEN
0x8LOSIDVL1OSIVD15, L1OSIDV.., L1OSIDV1
0xC + 0x2 * xLSDIIDxSDIID14, SDIID..., SDIID0
0x1CLSYNCCMDSYNC, SYNCGO, SYNCPU, SYNPRD
0x20LEPTRID=0, VER, PTR

원문의 상단 및 왼쪽 register 구조입니다.

SoundWire sublink register window
BlockBaseSublink x
SoundWire SHIM generic0x000300000x00030000 + 0x8000 * x
SoundWire IP0x000301000x00030100 + 0x8000 * x
SoundWire SHIM vendor-specific0x000360000x00036000 + 0x8000 * x

각 sublink `x`는 `0x8000` 간격의 register window를 사용합니다.

SoundWire register 탐색
ML cap #2LCAP.ALT=1 및 LEPTR.ID=0 확인LEPTR.PTR 기본 offset 0x30000SLCOUNT=4의 각 sublink x 선택0x8000 * x로 SHIM / IP / vendor-specific SHIM window 계산

Capability에서 sublink register window에 도달하는 구조입니다.

Extended structure for SoundWire (assuming 4 Manager IP)
--------------------------------------------------------

::

  +-----------+
  | ML cap #0 |
  +-----------+
  | ML cap #1 |
  +-----------+
  | ML cap #2 |---+
  +-----------+   |
                  |
                  +--> 0x0 +---------------+ LCAP
                           | ALT=1         |
                           +---------------+
                           | INTC          |
                           +---------------+
                           | OFLS          |
                           +---------------+
                           | LSS           |
                           +---------------+
                           | SLCOUNT=4     |-----------+
                           +---------------+           |
                                                       |
                       0x4 +---------------+ LCTL      |
                           | INTSTS        |           |
                           +---------------+           |
                           | CPA (x bits)  |           |
                           +---------------+           |
                           | SPA (x bits)  |           |
                           +---------------+         for each sublink x
                           | INTEN         |           |
                           +---------------+           |
                           | OFLEN         |           |
                           +---------------+           |
                                                       |
                       0x8 +---------------+ LOSIDV    |
                           | L1OSIVD15     |           |
                           +---------------+           |
                           | L1OSIDV..     |           |
                           +---------------+           |
                           | L1OSIDV1      |       +---+----------------------------------------------------------+
                           +---------------+       |                                                              |
                                                   v                                                              |
             0xC + 0x2 * x +---------------+ LSDIIDx    +---> 0x30000  +-----------------+  0x00030000            |
                           | SDIID14       |            |              | SoundWire SHIM  |                        |
                           +---------------+            |              | generic         |                        |
                           | SDIID...      |            |              +-----------------+  0x00030100            |
                           +---------------+            |              | SoundWire IP    |                        |
                           | SDIID0        |            |              +-----------------+  0x00036000            |
                           +---------------+            |              | SoundWire SHIM  |                        |
                                                        |              | vendor-specific |                        |
                      0x1C +---------------+ LSYNC      |              +-----------------+                        |
                           | CMDSYNC       |            |                                                         v
                           +---------------+            |              +-----------------+  0x00030000 + 0x8000 * x
                           | SYNCGO        |            |              | SoundWire SHIM  |
                           +---------------+            |              | generic         |
                           | SYNCPU        |            |              +-----------------+  0x00030100 + 0x8000 * x
                           +---------------+            |              | SoundWire IP    |
                           | SYNPRD        |            |              +-----------------+  0x00036000 + 0x8000 * x
                           +---------------+            |              | SoundWire SHIM  |
                                                        |              | vendor-specific |
                      0x20 +---------------+ LEPTR      |              +-----------------+
                           | ID = 0        |            |
                           +---------------+            |
                           | VER           |            |
                           +---------------+            |
                           | PTR           |------------+
                           +---------------+

DMIC 확장 link mapping

172-190

DMIC extended link는 `LCAP.ALT=1`과 `LEPTR.ID=0xC1`이 설정되어 있을 때 식별합니다. DMA 제어에는 기존 `LOSIDV` register를 사용합니다.

이 확장은 이전 세대에 없던 enumeration 설명을 추가합니다. `LCAP.LSS`와 `LSYNC`의 multi-link synchronization, `LCTL.SPA`의 power management, `LCTL.OFLEN`을 통한 DSP hand-over를 정의합니다.

DMIC register는 기능 변경 없이 다른 offset으로 이동합니다. `LEPTR.PTR`은 ML 주소로부터의 offset이며 기본값은 `0x10000`입니다.

DMIC 확장 식별과 제어
항목
Extended linkLCAP.ALT=1
Type IDLEPTR.ID=0xC1
DMA controlLOSIDV
Power / DSP hand-overLCTL.SPA / LCTL.OFLEN
Default PTR offset0x10000

DMIC link를 열거할 때 확인할 핵심 값입니다.

DMIC HDaudio extended link mapping
==================================

A DMIC extended link is identified when LCAP.ALT=1 and
LEPTR.ID=0xC1 are set.

DMA control uses the existing LOSIDV register

Changes include additional descriptions for enumeration that were not
present in earlier generations.

- multi-link synchronization: capabilities in LCAP.LSS and control in LSYNC
- power management with LCTL.SPA bits
- hand-over to the DSP for access to multi-link registers, SHIM/IP with LCTL.OFLEN

- move of DMIC registers to different offsets, with no change in
  functionality. The LEPTR.PTR value is an offset from the ML
  address, with a default value of 0x10000.

DMIC 확장 구조

191-242

DMIC 구조에는 sublink가 하나이므로 `SLCOUNT=1`입니다. `LEPTR.PTR`은 `0x10000`의 DMIC register window를 가리키며 generic SHIM, DMIC IP, vendor-specific SHIM이 차례로 배치됩니다.

DMIC multi-link register block
OffsetRegisterFields
0x0LCAPALT=1, INTC, OFLS, SLCOUNT=1
0x4LCTLINTSTS, CPA, SPA, INTEN, OFLEN
0x8LOSIDVL1OSIVD15, L1OSIDV.., L1OSIDV1
0x20LEPTRID=0xC1, VER, PTR

원문의 왼쪽 register 구조를 offset별로 정리했습니다.

DMIC register window
BlockAddress
DMIC SHIM generic0x00010000
DMIC IP0x00010100
DMIC SHIM vendor-specific0x00016000

`PTR`이 가리키는 세 영역의 절대 주소입니다.

DMIC register 탐색
ML cap #2LCAP.ALT=1 및 LEPTR.ID=0xC1 확인LEPTR.PTR로 0x10000 offset 획득generic SHIM 0x10000DMIC IP 0x10100 / vendor-specific SHIM 0x16000

DMIC capability에서 실제 IP register로 이어집니다.

Extended structure for DMIC
---------------------------

::

  +-----------+
  | ML cap #0 |
  +-----------+
  | ML cap #1 |
  +-----------+
  | ML cap #2 |---+
  +-----------+   |
                  |
                  +--> 0x0 +---------------+ LCAP
                           | ALT=1         |
                           +---------------+
                           | INTC          |
                           +---------------+
                           | OFLS          |
                           +---------------+
                           | SLCOUNT=1     |
                           +---------------+

                       0x4 +---------------+ LCTL
                           | INTSTS        |
                           +---------------+
                           | CPA           |
                           +---------------+
                           | SPA           |
                           +---------------+
                           | INTEN         |
                           +---------------+
                           | OFLEN         |
                           +---------------+           +---> 0x10000  +-----------------+  0x00010000
                                                       |              | DMIC SHIM       |
                       0x8 +---------------+ LOSIDV    |              | generic         |
                           | L1OSIVD15     |           |              +-----------------+  0x00010100
                           +---------------+           |              | DMIC IP         |
                           | L1OSIDV..     |           |              +-----------------+  0x00016000
                           +---------------+           |              | DMIC SHIM       |
                           | L1OSIDV1      |           |              | vendor-specific |
                           +---------------+           |              +-----------------+
                                                       |
                      0x20 +---------------+ LEPTR     |
                           | ID = 0xC1     |           |
                           +---------------+           |
                           | VER           |           |
                           +---------------+           |
                           | PTR           |-----------+
                           +---------------+

SSP 확장 link mapping

243-260

이 절은 `LCAP.ALT=1`과 `LEPTR.ID=0xC0`으로 식별되는 SSP extended link를 설명합니다. 다만 원문 첫 문장은 이를 `A DMIC extended link`라고 표기합니다. 절 제목, ID와 뒤의 register 구조는 SSP를 가리키므로 이 표기를 원문 오기로 해설하되 원문 자체는 변경하지 않습니다.

DMA 제어에는 기존 `LOSIDV` register를 사용합니다. 이전 세대에 없던 enumeration 및 control 설명으로 `LCAP.LSCOUNT`의 SSP IP instance 수, `LCTL.SPA`의 power management, `LCTL.OFLEN`을 통한 DSP hand-over가 추가됩니다.

SHIM과 SSP IP register는 기능 변경 없이 다른 offset으로 이동하며 `LEPTR.PTR`의 기본 offset은 `0x28000`입니다.

SSP 확장 식별과 제어
항목
Extended linkLCAP.ALT=1
Type IDLEPTR.ID=0xC0
Sublink 수LCAP.LSCOUNT
DMA controlLOSIDV
Default PTR offset0x28000

세 SSP IP instance를 가정한 식별 값입니다.

SSP HDaudio extended link mapping
=================================

A DMIC extended link is identified when LCAP.ALT=1 and
LEPTR.ID=0xC0 are set.

DMA control uses the existing LOSIDV register

Changes include additional descriptions for enumeration and control that were not
present in earlier generations:
- number of sublinks (SSP IP instances) in LCAP.LSCOUNT
- power management moved from SHIM to LCTL.SPA bits
- hand-over to the DSP for access to multi-link registers, SHIM/IP
with LCTL.OFLEN
- move of SHIM and SSP IP registers to different offsets, with no
change in functionality.  The LEPTR.PTR value is an offset from the ML
address, with a default value of 0x28000.

SSP 확장 구조

261-312

그림은 SSP IP instance 세 개를 가정하므로 `SLCOUNT=3`입니다. 각 sublink `x`의 window는 `0x1000` 간격이며 generic SHIM, SSP IP, vendor-specific SHIM의 세 영역으로 구성됩니다.

SSP multi-link register block
OffsetRegisterFields
0x0LCAPALT=1, INTC, OFLS, SLCOUNT=3
0x4LCTLINTSTS, CPA(x bits), SPA(x bits), INTEN, OFLEN
0x8LOSIDVL1OSIVD15, L1OSIDV.., L1OSIDV1
0x20LEPTRID=0xC0, VER, PTR

원문의 왼쪽 register 구조를 offset별로 재구성했습니다.

SSP sublink register window
BlockBaseSublink x
SSP SHIM generic0x000280000x00028000 + 0x1000 * x
SSP IP0x000281000x00028100 + 0x1000 * x
SSP SHIM vendor-specific0x00028C000x00028C00 + 0x1000 * x

각 SSP sublink `x`의 주소 계산식을 보존했습니다.

SSP register 탐색
ML cap #2LCAP.ALT=1 및 LEPTR.ID=0xC0 확인LEPTR.PTR 기본 offset 0x28000SLCOUNT=3에서 sublink x 선택0x1000 * x를 더해 SHIM / SSP IP / vendor-specific SHIM 주소 계산

세 instance 중 sublink `x`의 register window를 계산합니다.

Extended structure for SSP (assuming 3 instances of the IP)
-----------------------------------------------------------

::

  +-----------+
  | ML cap #0 |
  +-----------+
  | ML cap #1 |
  +-----------+
  | ML cap #2 |---+
  +-----------+   |
                  |
                  +--> 0x0 +---------------+ LCAP
                           | ALT=1         |
                           +---------------+
                           | INTC          |
                           +---------------+
                           | OFLS          |
                           +---------------+
                           | SLCOUNT=3     |-------------------------for each sublink x -------------------------+
                           +---------------+                                                                     |
                                                                                                                 |
                       0x4 +---------------+ LCTL                                                                |
                           | INTSTS        |                                                                     |
                           +---------------+                                                                     |
                           | CPA (x bits)  |                                                                     |
                           +---------------+                                                                     |
                           | SPA (x bits)  |                                                                     |
                           +---------------+                                                                     |
                           | INTEN         |                                                                     |
                           +---------------+                                                                     |
                           | OFLEN         |                                                                     |
                           +---------------+           +---> 0x28000  +-----------------+  0x00028000            |
                                                       |              | SSP SHIM        |                        |
                       0x8 +---------------+ LOSIDV    |              | generic         |                        |
                           | L1OSIVD15     |           |              +-----------------+  0x00028100            |
                           +---------------+           |              | SSP IP          |                        |
                           | L1OSIDV..     |           |              +-----------------+  0x00028C00            |
                           +---------------+           |              | SSP SHIM        |                        |
                           | L1OSIDV1      |           |              | vendor-specific |                        |
                           +---------------+           |              +-----------------+                        |
                                                       |                                                         v
                      0x20 +---------------+ LEPTR     |              +-----------------+  0x00028000 + 0x1000 * x
                           | ID = 0xC0     |           |              | SSP SHIM        |
                           +---------------+           |              | generic         |
                           | VER           |           |              +-----------------+  0x00028100 + 0x1000 * x
                           +---------------+           |              | SSP IP          |
                           | PTR           |-----------+              +-----------------+  0x00028C00 + 0x1000 * x
                           +---------------+                          | SSP SHIM        |
                                                                      | vendor-specific |
                                                                      +-----------------+