summaryrefslogtreecommitdiff
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
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>
-rw-r--r--Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.c10
-rw-r--r--Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.h10
-rw-r--r--Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c9
-rw-r--r--Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInitPostMem.inf5
-rw-r--r--Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c9
-rw-r--r--Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf5
-rw-r--r--Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.c10
-rw-r--r--Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.h10
-rw-r--r--Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInit.c9
-rw-r--r--Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInitPostMem.inf5
-rw-r--r--Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi4
-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
15 files changed, 102 insertions, 59 deletions
diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.c
index df11c8bbd9..f7ae621140 100644
--- a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.c
+++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.c
@@ -204,16 +204,6 @@ BensonMultiPlatformGpioProgram (
GpioPadConfigTable (sizeof (mBenson_GpioInitData_W) / sizeof (mBenson_GpioInitData_W[0]), PlatformInfoHob->PlatformGpioSetting_W);
GpioPadConfigTable (sizeof (mBenson_GpioInitData_SW) / sizeof (mBenson_GpioInitData_SW[0]), PlatformInfoHob->PlatformGpioSetting_SW);
- //
- // Note1: This BXT BIOS WA needs to be applied after PAD programming to overwrite the GPIO setting to take effect.
- // Note2: Enable TDO in BIOS SETUP as default for BXT Power-On only, need to set to AUTO prior to deliver to customer.
- // For BXT A0 Stepping only, to disable TDO GPIO to save power.
- //
- if (PlatformInfoHob->FABID == FAB2) {
- DEBUG ((DEBUG_INFO, "FAB ID: FAB2\n"));
- GpioPadConfigTable(sizeof(mBenson_GpioInitData_FAB2)/sizeof(mBenson_GpioInitData_FAB2[0]), mBenson_GpioInitData_FAB2);
- }
-
if (SystemConfiguration.TDO == 2) { //Auto
if (BxtA0 == BxtStepping()) {
DEBUG ((DEBUG_INFO, " BxtA0 TDO disable\n" ));
diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.h b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.h
index 5adc8e546c..e4c1c2ee14 100644
--- a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.h
+++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardGpios.h
@@ -345,16 +345,6 @@ BXT_GPIO_PAD_INIT mBenson_GpioInitData_Audio_SSP6 []=
BXT_GPIO_PAD_CONF(L"GPIO_192 DBI_SCL", M0 , HI_Z ,GPIO_D, HI , NA , Wake_Disabled, P_2K_H, NA , NA,NA , NA , GPIO_PADBAR+0x0028, NORTHWEST),//Feature: Codec Power Down PD Net in Sch: SOC_CODEC_PD_N
};
-BXT_GPIO_PAD_INIT mBenson_GpioInitData_FAB2[] =
-{
- //
- // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,GPO_STATE,INT_Trigger, Wake_Enabled ,Term_H_L,Inverted, GPI_ROUT, IOSstae, IOSTerm, MMIO_Offset ,Community
- //
- BXT_GPIO_PAD_CONF(L"GPIO_76 AVS_I2S1_WS_SYNC", M0 , GPI ,GPIO_D, NA , Level , Wake_Disabled, P_20K_L, NA ,IOAPIC, TxDRxE, NA, GPIO_PADBAR+0x0120, NORTHWEST),//Feature:SSIC_WWAN_Wake
- BXT_GPIO_PAD_CONF(L"GPIO_6", M0 , GPI ,GPIO_D, NA , Level , Wake_Disabled, P_20K_L, NA ,IOAPIC, TxDRxE, NA, GPIO_PADBAR+0x0030, NORTH), //Feature:DGPU Power OK
- BXT_GPIO_PAD_CONF(L"GPIO_217 CNV_BRI_RSP", M0 , GPO ,GPIO_D, LO , NA , Wake_Disabled, P_20K_L, NA , NA, NA, NA, GPIO_PADBAR+0x0240, NORTH), //Feature:DGPU_SEL
-};
-
//
// GPIO 191 is only used if EPI reworks are applied on the board. This GPIO switches between SD Card data (if set to 1) and EPI data (if set to 0).
//
diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c
index 74245de123..aabb350e85 100644
--- a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c
+++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c
@@ -136,6 +136,15 @@ BensonGlacierPostMemInitCallback (
PcdSet8 (PcdeMMCHostMaxSpeed, (UINT8) (SystemConfiguration.ScceMMCHostMaxSpeed));
//
+ // I2S NHLT Virtual Bus ID
+ //
+ PcdSet8(HdaEndpointBtRenderVirtualBusId, 0x0F); // N/A
+ PcdSet8(HdaEndpointBtCaptureVirtualBusId, 0x0F); // N/A
+ PcdSet8(HdaEndpointI2sRenderSKPVirtualBusId, 1); // I2S2
+ PcdSet8(HdaEndpointI2sRenderHPVirtualBusId, 1); // I2S2
+ PcdSet8(HdaEndpointI2sCaptureVirtualBusId, 1); // I2S2
+
+ //
// Add init steps here
//
//
diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInitPostMem.inf b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInitPostMem.inf
index 0f1d555637..c7499b5642 100644
--- a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInitPostMem.inf
+++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInitPostMem.inf
@@ -67,6 +67,11 @@
gPlatformModuleTokenSpaceGuid.PcdMaxPkgCState
gPlatformModuleTokenSpaceGuid.PcdTi3100AudioCodecEnable
gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtRenderVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtCaptureVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderSKPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderHPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sCaptureVirtualBusId
[Guids]
gEfiPlatformInfoGuid
diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c
index ca49dfe0fd..fdf2c7eaab 100644
--- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c
+++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c
@@ -141,6 +141,15 @@ LeafHillPostMemInitCallback (
//
PcdSet64 (PcdHdaVerbTablePtr, (UINT64) (UINTN) &HdaVerbTableAlc662);
PcdSet8(HdaVerbTableEntryNum, 1);
+
+ //
+ // I2S NHLT Virtual Bus ID
+ //
+ PcdSet8(HdaEndpointBtRenderVirtualBusId, 2); //I2S3
+ PcdSet8(HdaEndpointBtCaptureVirtualBusId, 2); //I2S3
+ PcdSet8(HdaEndpointI2sRenderSKPVirtualBusId, 5); //I2S6
+ PcdSet8(HdaEndpointI2sRenderHPVirtualBusId, 5); //I2S6
+ PcdSet8(HdaEndpointI2sCaptureVirtualBusId, 5); //I2S6
//
// Add init steps here
diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf
index 5154235f8d..9b6b3c93dc 100644
--- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf
+++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf
@@ -67,6 +67,11 @@
gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed
gPlatformModuleTokenSpaceGuid.PcdHdaVerbTablePtr
gPlatformModuleTokenSpaceGuid.HdaVerbTableEntryNum
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtRenderVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtCaptureVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderSKPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderHPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sCaptureVirtualBusId
[Guids]
gEfiPlatformInfoGuid
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.c b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.c
index 096d0e862c..e54bd17190 100644
--- a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.c
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.c
@@ -204,16 +204,6 @@ Minnow3MultiPlatformGpioProgram (
GpioPadConfigTable (sizeof (mMinnow3_GpioInitData_W) / sizeof (mMinnow3_GpioInitData_W[0]), PlatformInfoHob->PlatformGpioSetting_W);
GpioPadConfigTable (sizeof (mMinnow3_GpioInitData_SW) / sizeof (mMinnow3_GpioInitData_SW[0]), PlatformInfoHob->PlatformGpioSetting_SW);
- //
- // Note1: This BXT BIOS WA needs to be applied after PAD programming to overwrite the GPIO setting to take effect.
- // Note2: Enable TDO in BIOS SETUP as default for BXT Power-On only, need to set to AUTO prior to deliver to customer.
- // For BXT A0 Stepping only, to disable TDO GPIO to save power.
- //
- if (PlatformInfoHob->FABID == FAB2) {
- DEBUG ((DEBUG_INFO, "FAB ID: FAB2\n"));
- GpioPadConfigTable(sizeof(mMinnow3_GpioInitData_FAB2)/sizeof(mMinnow3_GpioInitData_FAB2[0]), mMinnow3_GpioInitData_FAB2);
- }
-
if (SystemConfiguration.TDO == 2) { //Auto
if (BxtA0 == BxtStepping()) {
DEBUG ((DEBUG_INFO, " BxtA0 TDO disable\n" ));
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.h b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.h
index 77d4090267..78fc533e7a 100644
--- a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.h
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardGpios.h
@@ -340,16 +340,6 @@ BXT_GPIO_PAD_INIT mMinnow3_GpioInitData_Audio_SSP6 []=
BXT_GPIO_PAD_CONF(L"GPIO_192 DBI_SCL", M0 , HI_Z ,GPIO_D, HI , NA , Wake_Disabled, P_2K_H, NA , NA,NA , NA , GPIO_PADBAR+0x0028, NORTHWEST),//Feature: Codec Power Down PD Net in Sch: SOC_CODEC_PD_N
};
-BXT_GPIO_PAD_INIT mMinnow3_GpioInitData_FAB2[] =
-{
- //
- // Group Pin#: pad_name, PMode,GPIO_Config,HostSw,GPO_STATE,INT_Trigger, Wake_Enabled ,Term_H_L,Inverted, GPI_ROUT, IOSstae, IOSTerm, MMIO_Offset ,Community
- //
- BXT_GPIO_PAD_CONF(L"GPIO_76 AVS_I2S1_WS_SYNC", M0 , GPI ,GPIO_D, NA , Level , Wake_Disabled, P_20K_L, NA ,IOAPIC, TxDRxE, NA, GPIO_PADBAR+0x0120, NORTHWEST),//Feature:SSIC_WWAN_Wake
- BXT_GPIO_PAD_CONF(L"GPIO_6", M0 , GPI ,GPIO_D, NA , Level , Wake_Disabled, P_20K_L, NA ,IOAPIC, TxDRxE, NA, GPIO_PADBAR+0x0030, NORTH), //Feature:DGPU Power OK
- BXT_GPIO_PAD_CONF(L"GPIO_217 CNV_BRI_RSP", M0 , GPO ,GPIO_D, LO , NA , Wake_Disabled, P_20K_L, NA , NA, NA, NA, GPIO_PADBAR+0x0240, NORTH), //Feature:DGPU_SEL
-};
-
//
// GPIO 191 is only used if EPI reworks are applied on the board. This GPIO switches between SD Card data (if set to 1) and EPI data (if set to 0).
//
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInit.c
index c1ee6b9c98..666a0bfdfe 100644
--- a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInit.c
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInit.c
@@ -148,6 +148,15 @@ MinnowBoard3PostMemInitCallback (
}
//
+ // I2S NHLT Virtual Bus ID
+ //
+ PcdSet8(HdaEndpointBtRenderVirtualBusId, 2); // I2S3
+ PcdSet8(HdaEndpointBtCaptureVirtualBusId, 2); // I2S3
+ PcdSet8(HdaEndpointI2sRenderSKPVirtualBusId, 0); // I2S1
+ PcdSet8(HdaEndpointI2sRenderHPVirtualBusId, 0); // I2S1
+ PcdSet8(HdaEndpointI2sCaptureVirtualBusId, 0); // I2S1
+
+ //
// Add init steps here
//
//
diff --git a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInitPostMem.inf b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInitPostMem.inf
index 801c47f141..9cf90c6372 100644
--- a/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInitPostMem.inf
+++ b/Platform/BroxtonPlatformPkg/Board/MinnowBoard3/BoardInitPostMem/BoardInitPostMem.inf
@@ -63,6 +63,11 @@
gPlatformModuleTokenSpaceGuid.PcdLogoDisplay
gPlatformModuleTokenSpaceGuid.PcdBtDevice
gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtRenderVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointBtCaptureVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderSKPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sRenderHPVirtualBusId
+ gEfiBxtTokenSpaceGuid.HdaEndpointI2sCaptureVirtualBusId
[Guids]
gEfiPlatformInfoGuid
diff --git a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi
index 3dbc2f313c..f45d47a824 100644
--- a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi
+++ b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi
@@ -2765,8 +2765,8 @@ form formid = HDAUDIO_OPTIONS_FORM_ID,
oneof varid = Setup.ScHdAudioNhltEndpointDmic,
prompt = STRING_TOKEN(STR_HDA_NHLT_ENDPOINT_DMIC),
help = STRING_TOKEN(STR_HDA_NHLT_ENDPOINT_DMIC_HELP),
- option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = RESET_REQUIRED;
- option text = STRING_TOKEN(STR_HDA_DMIC_2CH), value = 1, flags = DEFAULT |RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DISABLE), value = 0, flags = DEFAULT | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_HDA_DMIC_2CH), value = 1, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_HDA_DMIC_4CH), value = 2, flags = RESET_REQUIRED;
endoneof;
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,