英特尔平台上的 HDAudio 多链路扩展¶
- 版权:
© 2023 英特尔公司
本文档记录了 2015 年随 Skylake 处理器引入的“多链路结构”,以及最近在较新的英特尔平台上的扩展
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 的扩展结构(假设 IP 有 3 个实例)¶
+-----------+
| 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 |
+-----------------+