summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzwei4 <david.wei@intel.com>2017-12-13 16:26:11 +0800
committerzwei4 <david.wei@intel.com>2017-12-13 17:12:31 +0800
commit466bb694cd4afb6085d3b14a2117ddbee072f8c8 (patch)
tree8e11ea96cbdf8d1fea2ccf3936edbf3233334817
parent1dbeea57a37f2cb450eb3bf3b8a13bc58c1f2701 (diff)
downloadedk2-platforms-466bb694cd4afb6085d3b14a2117ddbee072f8c8.tar.xz
Enable HD audio.
Enable HD audio on Intel reference board. (1) Enable HdAudioDspUaaCompliance. (2) Move audio verb table to board specifc folder. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: zwei4 <david.wei@intel.com>
-rw-r--r--Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c7
-rw-r--r--Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf5
-rw-r--r--Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.c (renamed from Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.c)38
-rw-r--r--Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.h38
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspPolicyInitLib.inf2
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c11
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.h30
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPolicyUpdateLib.inf1
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c48
-rw-r--r--Platform/BroxtonPlatformPkg/PlatformPkg.dec5
10 files changed, 64 insertions, 121 deletions
diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c
index 4bd93d1670..ca49dfe0fd 100644
--- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c
+++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit.c
@@ -22,6 +22,7 @@
#include <Ppi/BoardInitSignalling.h>
#include "BoardInit.h"
#include "BoardInitMiscs.h"
+#include "HdaVerbTables.h"
EFI_STATUS
EFIAPI
@@ -136,6 +137,12 @@ LeafHillPostMemInitCallback (
PcdSet8 (PcdeMMCHostMaxSpeed, (UINT8) (SystemConfiguration.ScceMMCHostMaxSpeed));
//
+ // HDA audio verb table
+ //
+ PcdSet64 (PcdHdaVerbTablePtr, (UINT64) (UINTN) &HdaVerbTableAlc662);
+ PcdSet8(HdaVerbTableEntryNum, 1);
+
+ //
// Add init steps here
//
//
diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf
index 0f11b1c11e..5154235f8d 100644
--- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf
+++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInitPostMem.inf
@@ -31,6 +31,7 @@
PlatformInfoHob.c
BoardGpios.c
BoardGpios.h
+ HdaVerbTables.c
[LibraryClasses]
PeiServicesLib
@@ -64,7 +65,9 @@
gPlatformModuleTokenSpaceGuid.PcdSueCreek
gPlatformModuleTokenSpaceGuid.PcdMaxPkgCState
gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed
-
+ gPlatformModuleTokenSpaceGuid.PcdHdaVerbTablePtr
+ gPlatformModuleTokenSpaceGuid.HdaVerbTableEntryNum
+
[Guids]
gEfiPlatformInfoGuid
gEfiAuthenticatedVariableGuid
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.c b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.c
index 6cd068e418..9a911fe2ca 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.c
+++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.c
@@ -1,5 +1,7 @@
/** @file
- Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+ HD Audio Verb Table.
+
+ Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -14,13 +16,6 @@
#include "HdaVerbTables.h"
HDAUDIO_VERB_TABLE HdaVerbTableAlc662 = {
- //
- // VerbTable: (Realtek ALC662)
- // Revision ID = 0xff
- // Codec Verb Table for IOTG CRB boards
- // Codec Address: CAd value (0/1/2)
- // Codec Vendor: 0x10EC0662
- //
{
0x10EC0662, // Vendor ID / Device ID
0xFF, // Revision ID
@@ -28,31 +23,7 @@ HDAUDIO_VERB_TABLE HdaVerbTableAlc662 = {
15 * 4 // Number of data DWORDs following the header.
},
{
- //
- // Realtek Semiconductor Corp.
- //
- // Realtek High Definition Audio Configuration - Version : 5.0.2.6
- // Realtek HD Audio Codec : ALC662-VD
- // PCI PnP ID : PCI\VEN_8086&DEV_2668&SUBSYS_72708086
- // HDA Codec PnP ID : HDAUDIO\FUNC_01&VEN_10EC&DEV_0662&SUBSYS_80860000
- // The number of verb command block : 15
- //
- // NID 0x12 : 0x40130000
- // NID 0x14 : 0x01014010
- // NID 0x15 : 0x01011012
- // NID 0x16 : 0x01016011
- // NID 0x18 : 0x01A19030
- // NID 0x19 : 0x02A19040
- // NID 0x1A : 0x0181303F
- // NID 0x1B : 0x0221401F
- // NID 0x1C : 0x411111F0
- // NID 0x1D : 0x4045E601
- // NID 0x1E : 0x01441120
- //
- //
- // HDA Codec Subsystem ID Verb-table
- // HDA Codec Subsystem ID : 0x80860000
- //
+
0x00172000,
0x00172100,
0x00172286,
@@ -172,4 +143,3 @@ HDAUDIO_VERB_TABLE HdaVerbTableAlc662 = {
0x0204A9B8
}
};
-
diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.h b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.h
new file mode 100644
index 0000000000..74a20e37e4
--- /dev/null
+++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTables.h
@@ -0,0 +1,38 @@
+/** @file
+ HD Audio Verb Table header file.
+ This file includes package header files, library classes.
+
+ Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+
+ This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php.
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef _HDA_VERBTABLES_H_
+#define _HDA_VERBTABLES_H_
+
+#pragma pack (push,1)
+
+
+typedef struct {
+ UINT32 VendorDeviceId; ///< Codec Vendor/Device ID
+ UINT8 RevisionId; ///< Revision ID of the codec. 0xFF matches any revision.
+ UINT8 SdiNo; ///< SDI number, 0xFF matches any SDI.
+ UINT16 DataDwords; ///< Number of data DWORDs following the header.
+} HDA_VERB_TABLE_HEADER;
+
+typedef struct {
+ HDA_VERB_TABLE_HEADER VerbTableHeader;
+ UINT32 VerbTableData[];
+} HDAUDIO_VERB_TABLE;
+#pragma pack (pop)
+
+extern HDAUDIO_VERB_TABLE HdaVerbTableAlc662;
+
+#endif // _HDA_VERBTABLES_H_
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspPolicyInitLib.inf b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspPolicyInitLib.inf
index 8c1648d760..593984c406 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspPolicyInitLib.inf
+++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspPolicyInitLib.inf
@@ -87,6 +87,8 @@
gPlatformModuleTokenSpaceGuid.PcdBoardVbtFileGuid
gPlatformModuleTokenSpaceGuid.PcdMaxPkgCState
gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed
+ gPlatformModuleTokenSpaceGuid.PcdHdaVerbTablePtr
+ gPlatformModuleTokenSpaceGuid.HdaVerbTableEntryNum
[Ppis]
gSiPolicyPpiGuid ## CONSUMES
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c
index 1a6666ebc1..f9055db209 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c
+++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c
@@ -152,7 +152,6 @@ PeiFspScPolicyInit (
BOOLEAN FlashProtectionEnabled;
SC_POLICY_PPI *ScPolicy;
SC_FLASH_PROTECTION_CONFIG *FlashProtectionConfig;
- SC_HDAUDIO_CONFIG *HdaConfig;
UINTN HeciBaseAddress;
UINT32 SecMode;
@@ -363,13 +362,11 @@ PeiFspScPolicyInit (
FspsUpd->FspsConfig.Mmt = SystemConfiguration->ScHdAudioMmt;
FspsUpd->FspsConfig.Hmt = SystemConfiguration->ScHdAudioHmt;
FspsUpd->FspsConfig.HdAudioIoBufferOwnership = SystemConfiguration->ScHdAudioIoBufferOwnership;
+ FspsUpd->FspsConfig.HdaVerbTableEntryNum = PcdGet8(HdaVerbTableEntryNum);
+ FspsUpd->FspsConfig.HdaVerbTablePtr = (UINT32)PcdGet64(PcdHdaVerbTablePtr);
+
+ FspsUpd->FspsConfig.HdAudioDspUaaCompliance = 1;
- Status = GetConfigBlock ((VOID *) ScPolicy, &gHdAudioConfigGuid, (VOID *) &HdaConfig);
- ASSERT_EFI_ERROR (Status);
- if (!EFI_ERROR (Status)) {
- FspsUpd->FspsConfig.HdaVerbTableEntryNum = HdaConfig->VerbTableEntryNum;
- FspsUpd->FspsConfig.HdaVerbTablePtr = HdaConfig->VerbTablePtr;
- }
FspsUpd->FspsConfig.BiosCfgLockDown = SystemConfiguration->ScHdAudioBiosCfgLockDown;
FspsUpd->FspsConfig.HDAudioPwrGate = SystemConfiguration->ScHdAudioPwrGate;
FspsUpd->FspsConfig.HDAudioClkGate = SystemConfiguration->ScHdAudioClkGate;
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.h b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.h
deleted file mode 100644
index 64a42bc2cb..0000000000
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerbTables.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
- Header file for HDA Verb Tables.
-
- Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
-
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
- http://opensource.org/licenses/bsd-license.php.
-
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _HDA_VERBTABLES_H_
-#define _HDA_VERBTABLES_H_
-
-#include <Ppi/ScPolicy.h>
-
-enum HDAUDIO_CODEC_SELECT {
- HdaCodecPlatformOnboard = 0,
- HdaCodecExternalKit = 1
-};
-
-extern HDAUDIO_VERB_TABLE HdaVerbTableAlc298;
-extern HDAUDIO_VERB_TABLE HdaVerbTableAlc662;
-
-#endif // _HDA_VERBTABLES_H_
-
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPolicyUpdateLib.inf b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPolicyUpdateLib.inf
index d5f0a1b8df..acb5a84bbf 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPolicyUpdateLib.inf
+++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPolicyUpdateLib.inf
@@ -25,7 +25,6 @@
PeiScPolicyUpdate.c
PeiCpuPolicyUpdatePreMem.c
PeiCpuPolicyUpdate.c
- HdaVerbTables.c
[Packages]
MdePkg/MdePkg.dec
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c
index d9a991ca64..b260c3518e 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c
+++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c
@@ -18,7 +18,6 @@
#include <Library/MemoryAllocationLib.h>
#include <Library/HobLib.h>
#include <Library/PcdLib.h>
-#include "HdaVerbTables.h"
#include <Guid/PlatformInfo.h>
#include <Library/PeiScPolicyLib.h>
#include <Library/HeciMsgLib.h>
@@ -71,43 +70,6 @@ InternalAddVerbTable (
}
-STATIC
-VOID
-InstallPlatformVerbTables (
- IN SC_HDAUDIO_CONFIG *HdaConfig,
- IN UINT16 BoardId,
- IN UINTN CodecType
- )
-{
- UINT8 VerbTableEntryNum;
- UINT32 VerbTableArray[32];
- UINT32 *VerbTablePtr;
-
- VerbTableEntryNum = 0;
-
- //
- // left switch cases defined which can be PlatformInfo or stepping
- //
- if (CodecType == HdaCodecPlatformOnboard) {
- //
- // Add onboard verb table. If we use a board that uses a different one, we need to split this code to board specific
- // location.
- //
- InternalAddVerbTable (&VerbTableEntryNum, VerbTableArray, &HdaVerbTableAlc662);
- } else {
- DEBUG ((DEBUG_INFO, "HD-Audio Warning: External codec kit selected or platform verb table not found, installing all!\n"));
- }
-
- HdaConfig->VerbTableEntryNum = VerbTableEntryNum;
-
- VerbTablePtr = (UINT32 *) AllocateZeroPool (sizeof (UINT32) *VerbTableEntryNum);
- CopyMem (VerbTablePtr, VerbTableArray, sizeof (UINT32) *VerbTableEntryNum);
- HdaConfig->VerbTablePtr = (UINT32) VerbTablePtr;
-
- return;
-}
-
-
/**
Check it's eMMC boot path or not.
@@ -549,16 +511,6 @@ UpdatePeiScPolicy (
HdaConfig->ResetWaitTimer = 300;
//
- // Install Verb Table
- //
- if (SystemConfiguration.ScHdAudio) {
- //
- // set default to on board
- //
- InstallPlatformVerbTables (HdaConfig, BoardId, HdaCodecPlatformOnboard);
- }
-
- //
// Update GMM config
//
GmmConfig->Enable = SystemConfiguration.Gmm;
diff --git a/Platform/BroxtonPlatformPkg/PlatformPkg.dec b/Platform/BroxtonPlatformPkg/PlatformPkg.dec
index f61331f16e..f2bb7243ea 100644
--- a/Platform/BroxtonPlatformPkg/PlatformPkg.dec
+++ b/Platform/BroxtonPlatformPkg/PlatformPkg.dec
@@ -199,6 +199,11 @@
#gPlatformModuleTokenSpaceGuid.PcdSerialIoUartNumber|2|UINT8|0x8000001B
## This PCD used to select eMMCHostMaxSpeed
gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed|0x00|UINT8|0x8000001C
+ ## This PCD points to verb table of HD audio.
+ gPlatformModuleTokenSpaceGuid.PcdHdaVerbTablePtr|0|UINT64|0x8000001D
+ ## This PCD report the number of VBT table entries in VBT table array.
+ gPlatformModuleTokenSpaceGuid.HdaVerbTableEntryNum|0|UINT8|0x8000001E
+
## MemoryCheck value for checking memory before boot OS.
## To save the boot performance, the default MemoryCheck is set to 0.
gClientCommonModuleTokenSpaceGuid.PcdPlatformMemoryCheck|0|UINT8|0x40000005