summaryrefslogtreecommitdiff
path: root/Silicon
diff options
context:
space:
mode:
authorzwei4 <david.wei@intel.com>2017-12-22 15:41:32 +0800
committerzwei4 <david.wei@intel.com>2017-12-22 15:41:32 +0800
commitec31c689fc59a59c4ffaeb06c48660872edd64e1 (patch)
tree17a8444b0399a09f54fa14011057a3d51afa2ba1 /Silicon
parentcf73574a718987f3c8e625e9c6ab98025a74bdfc (diff)
downloadedk2-platforms-ec31c689fc59a59c4ffaeb06c48660872edd64e1.tar.xz
I2S Audio Configure
Customize I2S virtual bus ID for different boards. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: zwei4 <david.wei@intel.com>
Diffstat (limited to 'Silicon')
-rw-r--r--Silicon/BroxtonSoC/BroxtonSiPkg/BroxtonSiPkg.dec12
-rw-r--r--Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/DxeScHdaLib.inf5
-rw-r--r--Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/ScHdaLib.c25
-rw-r--r--Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScHda.c33
4 files changed, 58 insertions, 17 deletions
diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/BroxtonSiPkg.dec b/Silicon/BroxtonSoC/BroxtonSiPkg/BroxtonSiPkg.dec
index c06b4e1312..a28765f233 100644
--- a/Silicon/BroxtonSoC/BroxtonSiPkg/BroxtonSiPkg.dec
+++ b/Silicon/BroxtonSoC/BroxtonSiPkg/BroxtonSiPkg.dec
@@ -332,6 +332,18 @@
gEfiBxtTokenSpaceGuid.PcdSetCoreCount|0|UINT32|0x10000223
gEfiBxtTokenSpaceGuid.PcdVtdGfxBaseAddress|0xFED64000|UINT32|0x10000224
gSiPkgTokenSpaceGuid.PcdForceVolatileVariable|FALSE|BOOLEAN|0x30000012
+
+ ## I2S Audio Configuration
+ ## Blue Tooth Render
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtRenderVirtualBusId|0x0F|UINT8|0x80000001
+ ## Blue Tooth Capture
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtCaptureVirtualBusId|0x0F|UINT8|0x80000002
+ ## Speaker Render
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderSKPVirtualBusId|0x0F|UINT8|0x80000003
+ ## Headphone Render
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderHPVirtualBusId|0x0F|UINT8|0x80000004
+ ## Headphone Capture
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sCaptureVirtualBusId|0x0F|UINT8|0x80000005
[PcdsFeatureFlag]
gBxtRefCodePkgTokenSpaceGuid.PcdCeAtaSupport|FALSE|BOOLEAN|0x12
diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/DxeScHdaLib.inf b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/DxeScHdaLib.inf
index 2013054fdb..03be306481 100644
--- a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/DxeScHdaLib.inf
+++ b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/DxeScHdaLib.inf
@@ -40,6 +40,11 @@
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorId ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision ## CONSUMES
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtRenderVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtCaptureVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderSKPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderHPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sCaptureVirtualBusId
[Sources]
ScHdaLib.c
diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/ScHdaLib.c b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/ScHdaLib.c
index e27b38ddab..028f6ee624 100644
--- a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/ScHdaLib.c
+++ b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/Library/Private/DxeScHdaLib/ScHdaLib.c
@@ -568,7 +568,7 @@ NhltEndpointConstructor (
case HdaBtRender:
DEBUG ((DEBUG_INFO, "Endpoint: HdaBtRender\n"));
if (GetBxtSeries() == BxtP) {
- HdaEndpointBtRender.VirtualBusId = 2;
+ HdaEndpointBtRender.VirtualBusId = PcdGet8(HdaEndpointBtRenderVirtualBusId);
DEBUG ((DEBUG_INFO, "For BXT-P, HdaEndpointBtRender.VirtualBusId Change to 0x%02x.\n", HdaEndpointBtRender.VirtualBusId));
}
CopyMem (Endpoint, &HdaEndpointBtRender, sizeof (ENDPOINT_DESCRIPTOR));
@@ -579,7 +579,7 @@ NhltEndpointConstructor (
case HdaBtCapture:
DEBUG ((DEBUG_INFO, "Endpoint: HdaBtCapture\n"));
if (GetBxtSeries() == BxtP) {
- HdaEndpointBtCapture.VirtualBusId = 2;
+ HdaEndpointBtCapture.VirtualBusId = PcdGet8(HdaEndpointBtCaptureVirtualBusId);
DEBUG ((DEBUG_INFO, "For BXT-P, HdaEndpointBtCapture.VirtualBusId Change to 0x%02x.\n", HdaEndpointBtCapture.VirtualBusId));
}
CopyMem (Endpoint, &HdaEndpointBtCapture, sizeof (ENDPOINT_DESCRIPTOR));
@@ -589,12 +589,9 @@ NhltEndpointConstructor (
break;
case HdaI2sRenderSKP:
DEBUG ((DEBUG_INFO, "Endpoint: HdaI2sRenderSKP\n"));
- //
- // For BXT-P, Virtual Bus ID is 5, while it is 0 for BXTM
- //
if (GetBxtSeries() == BxtP) {
- HdaEndpointI2sRenderSKP.VirtualBusId = 5;
- DEBUG ((DEBUG_INFO, "For BXT-P, Endpoint: HdaI2sRenderSKP virtual bus ID is 5.\n"));
+ HdaEndpointI2sRenderSKP.VirtualBusId = PcdGet8(HdaEndpointI2sRenderSKPVirtualBusId);
+ DEBUG ((DEBUG_INFO, "For BXT-P, Endpoint: HdaI2sRenderSKP virtual bus ID is 0x%02x.\n", HdaEndpointI2sRenderSKP.VirtualBusId));
}
CopyMem (Endpoint, &HdaEndpointI2sRenderSKP, sizeof (ENDPOINT_DESCRIPTOR));
EndpointConfigBuffer = I2sConfigSKP;
@@ -610,12 +607,9 @@ NhltEndpointConstructor (
break;
case HdaI2sRenderHP:
DEBUG ((DEBUG_INFO, "Endpoint: HdaI2sRenderHP\n"));
- //
- // For BXT-P, Virtual Bus ID is 5, while it is 0 for BXTM
- //
if (GetBxtSeries() == BxtP) {
- HdaEndpointI2sRenderHP.VirtualBusId = 5;
- DEBUG ((DEBUG_INFO, "For BXT-P, Endpoint: HdaI2sRenderHP virtual bus ID is 5.\n"));
+ HdaEndpointI2sRenderHP.VirtualBusId = PcdGet8(HdaEndpointI2sRenderHPVirtualBusId);
+ DEBUG ((DEBUG_INFO, "For BXT-P, Endpoint: HdaI2sRenderHP virtual bus ID is 0x%02x.\n", HdaEndpointI2sRenderHP.VirtualBusId ));
}
CopyMem (Endpoint, &HdaEndpointI2sRenderHP, sizeof (ENDPOINT_DESCRIPTOR));
EndpointConfigBuffer = I2sConfig;
@@ -624,12 +618,9 @@ NhltEndpointConstructor (
break;
case HdaI2sCaptureHP:
DEBUG ((DEBUG_INFO, "Endpoint: HdaI2sCaptureHP\n"));
- //
- // For BXT-P, Virtual Bus ID is 5, while it is 0 for BXTM
- //
if (GetBxtSeries() == BxtP) {
- HdaEndpointI2sCapture.VirtualBusId = 5;
- DEBUG ((DEBUG_INFO, "For BXT-P, Endpoint: HdaI2sCaptureHP virtual bus ID is 5.\n"));
+ HdaEndpointI2sCapture.VirtualBusId = PcdGet8(HdaEndpointI2sCaptureVirtualBusId);
+ DEBUG ((DEBUG_INFO, "For BXT-P, Endpoint: HdaI2sCaptureHP virtual bus ID is 0x%02x.\n", HdaEndpointI2sCapture.VirtualBusId));
}
CopyMem (Endpoint, &HdaEndpointI2sCapture, sizeof (ENDPOINT_DESCRIPTOR));
EndpointConfigBuffer = I2sConfig;
diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScHda.c b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScHda.c
index 16efcbe859..4600b5326e 100644
--- a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScHda.c
+++ b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScHda.c
@@ -266,6 +266,39 @@ ConfigureHdaAtBoot (
Status = GetConfigBlock ((VOID *) ScPolicy, &gHdAudioConfigGuid, (VOID *) &HdaConfig);
ASSERT_EFI_ERROR (Status);
+ if ((HdaConfig->IoBufferOwnership == ScHdaIoBufOwnerHdaLinkI2sPort) || \
+ (HdaConfig->IoBufferOwnership == ScHdaIoBufOwnerI2sPort)) {
+ HdaConfig->DspEndpointBluetooth = TRUE;
+ HdaConfig->DspEndpointI2sSkp = TRUE;
+ HdaConfig->DspEndpointI2sHp = TRUE;
+ }
+
+ DEBUG ((DEBUG_INFO, "------------------ HD-Audio Config ------------------\n"));
+ DEBUG ((DEBUG_INFO, " HDA Enable = %x\n", HdaConfig->Enable));
+ DEBUG ((DEBUG_INFO, " DSP Enable = %x\n", HdaConfig->DspEnable));
+ DEBUG ((DEBUG_INFO, " Pme = %x\n", HdaConfig->Pme));
+ DEBUG ((DEBUG_INFO, " I/O Buffer Ownership = %x\n", HdaConfig->IoBufferOwnership));
+ DEBUG ((DEBUG_INFO, " I/O Buffer Voltage = %x\n", HdaConfig->IoBufferVoltage));
+ DEBUG ((DEBUG_INFO, " VC Type = %x\n", HdaConfig->VcType));
+ DEBUG ((DEBUG_INFO, " DSP Feature Mask = %x\n", HdaConfig->DspFeatureMask));
+ DEBUG ((DEBUG_INFO, " DSP PP Module Mask = %x\n", HdaConfig->DspPpModuleMask));
+ DEBUG ((DEBUG_INFO, " ResetWaitTimer = %x\n", HdaConfig->ResetWaitTimer));
+ DEBUG ((DEBUG_INFO, " VcType = %x\n", HdaConfig->VcType));
+ DEBUG ((DEBUG_INFO, " HD-A Link Frequency = %x\n", HdaConfig->HdAudioLinkFrequency));
+ DEBUG ((DEBUG_INFO, " iDisp Link Frequency = %x\n", HdaConfig->IDispLinkFrequency));
+ DEBUG ((DEBUG_INFO, " iDisp Link T-Mode = %x\n", HdaConfig->IDispLinkTmode));
+ DEBUG ((DEBUG_INFO, " DSP Endpoint DMIC = %x\n", HdaConfig->DspEndpointDmic));
+ DEBUG ((DEBUG_INFO, " DSP Endpoint I2S SKP = %x\n", HdaConfig->DspEndpointI2sSkp));
+ DEBUG ((DEBUG_INFO, " DSP Endpoint I2S HP = %x\n", HdaConfig->DspEndpointI2sHp));
+ DEBUG ((DEBUG_INFO, " DSP Endpoint BT = %x\n", HdaConfig->DspEndpointBluetooth));
+ DEBUG ((DEBUG_INFO, " DSP Feature Mask = %x\n", HdaConfig->DspFeatureMask));
+ DEBUG ((DEBUG_INFO, " DSP PP Module Mask = %x\n", HdaConfig->DspPpModuleMask));
+ DEBUG ((DEBUG_INFO, " CSME Memory Transfers = %x\n", HdaConfig->Mmt));
+ DEBUG ((DEBUG_INFO, " Host Memory Transfers = %x\n", HdaConfig->Hmt));
+ DEBUG ((DEBUG_INFO, " BIOS Configuration Lock Down = %x\n", HdaConfig->BiosCfgLockDown));
+ DEBUG ((DEBUG_INFO, " Power Gating = %x\n", HdaConfig->PwrGate));
+ DEBUG ((DEBUG_INFO, " Clock Gating = %x\n", HdaConfig->ClkGate));
+
HdaPciBase = MmPciBase (
DEFAULT_PCI_BUS_NUMBER_SC,
PCI_DEVICE_NUMBER_HDA,