Intel 平台上的 HDAudio 多链路扩展¶
- 版权:
© 2023 Intel Corporation
本文件记录了 2015 年随 Skylake 处理器引入并最近在更新的 Intel 平台上扩展的“多链路结构”。
HDAudio 现有链路映射(2015 年 Skylake 新增)¶
外部 HDAudio 编解码器通过链路 #0 处理,而 HDMI/DisplayPort 的 iDISP 编解码器通过链路 #1 处理。
2015 年定义中唯一的更改是 LCAP.ALT=0x0 的声明——由于 ALT 位之前是保留的,这是一个向后兼容的更改。
LCTL.SPA 和 LCTL.CPA 在退出复位时自动设置。它们仅在现有驱动程序中,当 SCF 值需要修正时使用。
HDAudio 编解码器的基本结构¶
+-----------+
| 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 HDAudio 扩展链路映射¶
当 LCAP.ALT=1 且 LEPTR.ID=0 时,SoundWire 扩展链路被识别。
DMA 控制使用现有 LOSIDV 寄存器。
更改包括对早期版本中不存在的枚举的额外描述。
多链路同步:LCAP.LSS 中的功能和 LSYNC 中的控制
LCAP.LSCOUNT 中的子链路数量(管理器 IP)
电源管理从 SHIM 移至 LCTL.SPA 位
移交给 DSP 以访问多链路寄存器,SHIM/IP 使用 LCTL.OFLEN
SoundWire 编解码器到 SDI ID 位的映射
SHIM 和 Cadence 寄存器移动到不同的偏移量,功能没有改变。LEPTR.PTR 值是 ML 地址的偏移量,默认值为 0x30000。
SoundWire 扩展结构(假设有 4 个管理器 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 HDAudio 扩展链路映射¶
当 LCAP.ALT=1 且 LEPTR.ID=0xC1 设置时,DMIC 扩展链路被识别。
DMA 控制使用现有 LOSIDV 寄存器
更改包括对早期版本中不存在的枚举的额外描述。
多链路同步:LCAP.LSS 中的功能和 LSYNC 中的控制
使用 LCTL.SPA 位进行电源管理
移交给 DSP 以访问多链路寄存器,SHIM/IP 使用 LCTL.OFLEN
DMIC 寄存器移动到不同的偏移量,功能没有改变。LEPTR.PTR 值是 ML 地址的偏移量,默认值为 0x10000。
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 HDAudio 扩展链路映射¶
当 LCAP.ALT=1 且 LEPTR.ID=0xC0 设置时,DMIC 扩展链路被识别。
DMA 控制使用现有 LOSIDV 寄存器
更改包括对早期版本中不存在的枚举和控制的额外描述: - LCAP.LSCOUNT 中的子链路数量(SSP IP 实例) - 电源管理从 SHIM 移至 LCTL.SPA 位 - 移交给 DSP 以访问多链路寄存器,SHIM/IP 使用 LCTL.OFLEN - SHIM 和 SSP IP 寄存器移动到不同的偏移量,功能没有改变。LEPTR.PTR 值是 ML 地址的偏移量,默认值为 0x28000。
SSP 扩展结构(假设有 3 个 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 |
+-----------------+