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