From nobody Sun May 19 00:17:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1513156022172511.02216740446954; Wed, 13 Dec 2017 01:07:02 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 3C4C821B02834; Wed, 13 Dec 2017 01:02:19 -0800 (PST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B6754220EE113 for ; Wed, 13 Dec 2017 01:02:18 -0800 (PST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2017 01:06:56 -0800 Received: from zwei4-mobl1.ccr.corp.intel.com ([10.239.192.158]) by fmsmga004.fm.intel.com with ESMTP; 13 Dec 2017 01:06:55 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Permerror (SPF Permanent Error: More than 10 MX records returned) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=david.wei@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,397,1508828400"; d="scan'208";a="12151894" From: zwei4 To: edk2-devel@lists.01.org Date: Wed, 13 Dec 2017 17:06:52 +0800 Message-Id: <20171213090652.11708-1-david.wei@intel.com> X-Mailer: git-send-email 2.14.1.windows.1 Subject: [edk2] [Patch][edk2-platforms/devel-MinnowBoard3-UDK2017] Enable HD audio. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Enable HD audio on Intel reference board.=20 (1) Enable HdAudioDspUaaCompliance. (2) Move audio verb table to board specifc folder. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: zwei4 --- .../Board/LeafHill/BoardInitPostMem/BoardInit.c | 7 ++++ .../LeafHill/BoardInitPostMem/BoardInitPostMem.inf | 5 ++- .../LeafHill/BoardInitPostMem}/HdaVerbTables.c | 38 ++--------------- .../LeafHill/BoardInitPostMem/HdaVerbTables.h | 38 +++++++++++++++++ .../PeiFspPolicyInitLib/PeiFspPolicyInitLib.inf | 2 + .../PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c | 11 ++--- .../Library/PeiPolicyUpdateLib/HdaVerbTables.h | 30 -------------- .../PeiPolicyUpdateLib/PeiPolicyUpdateLib.inf | 1 - .../Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c | 48 ------------------= ---- Platform/BroxtonPlatformPkg/PlatformPkg.dec | 5 +++ 10 files changed, 64 insertions(+), 121 deletions(-) rename Platform/BroxtonPlatformPkg/{Common/Library/PeiPolicyUpdateLib =3D>= Board/LeafHill/BoardInitPostMem}/HdaVerbTables.c (66%) create mode 100644 Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPos= tMem/HdaVerbTables.h delete mode 100644 Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpd= ateLib/HdaVerbTables.h diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/Bo= ardInit.c b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/Boa= rdInit.c index 4bd93d167..ca49dfe0f 100644 --- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit= .c +++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit= .c @@ -22,6 +22,7 @@ #include #include "BoardInit.h" #include "BoardInitMiscs.h" +#include "HdaVerbTables.h" =20 EFI_STATUS EFIAPI @@ -135,6 +136,12 @@ LeafHillPostMemInitCallback ( // PcdSet8 (PcdeMMCHostMaxSpeed, (UINT8) (SystemConfiguration.ScceMMCHostMa= xSpeed)); =20 + // + // HDA audio verb table + // + PcdSet64 (PcdHdaVerbTablePtr, (UINT64) (UINTN) &HdaVerbTableAlc662); + PcdSet8(HdaVerbTableEntryNum, 1); + =20 // // Add init steps here // diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/Bo= ardInitPostMem.inf b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPo= stMem/BoardInitPostMem.inf index 0f11b1c11..5154235f8 100644 --- a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit= PostMem.inf +++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/BoardInit= PostMem.inf @@ -31,6 +31,7 @@ PlatformInfoHob.c BoardGpios.c BoardGpios.h + HdaVerbTables.c =20 [LibraryClasses] PeiServicesLib @@ -64,7 +65,9 @@ gPlatformModuleTokenSpaceGuid.PcdSueCreek gPlatformModuleTokenSpaceGuid.PcdMaxPkgCState gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed - + gPlatformModuleTokenSpaceGuid.PcdHdaVerbTablePtr + gPlatformModuleTokenSpaceGuid.HdaVerbTableEntryNum + =20 [Guids] gEfiPlatformInfoGuid gEfiAuthenticatedVariableGuid diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/= HdaVerbTables.c b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostM= em/HdaVerbTables.c similarity index 66% rename from Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/H= daVerbTables.c rename to Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVe= rbTables.c index 6cd068e41..9a911fe2c 100644 --- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerb= Tables.c +++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTa= bles.c @@ -1,5 +1,7 @@ /** @file - Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
+ HD Audio Verb Table. + + Copyright (c) 2017, Intel Corporation. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License @@ -14,13 +16,6 @@ #include "HdaVerbTables.h" =20 HDAUDIO_VERB_TABLE HdaVerbTableAlc662 =3D { - // - // VerbTable: (Realtek ALC662) - // Revision ID =3D 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 =3D { 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 =3D { 0x0204A9B8 } }; - diff --git a/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/Hd= aVerbTables.h b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem= /HdaVerbTables.h new file mode 100644 index 000000000..74a20e37e --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/LeafHill/BoardInitPostMem/HdaVerbTa= bles.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.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e 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 IMP= LIED. + +**/ + +#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 matche= s any revision. + UINT8 SdiNo; ///< SDI number, 0xFF matches any SDI. + UINT16 DataDwords; ///< Number of data DWORDs following the h= eader. +} 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/PeiFs= pPolicyInitLib/PeiFspPolicyInitLib.inf index 8c1648d76..593984c40 100644 --- a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFsp= PolicyInitLib.inf +++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFsp= PolicyInitLib.inf @@ -87,6 +87,8 @@ gPlatformModuleTokenSpaceGuid.PcdBoardVbtFileGuid gPlatformModuleTokenSpaceGuid.PcdMaxPkgCState gPlatformModuleTokenSpaceGuid.PcdeMMCHostMaxSpeed + gPlatformModuleTokenSpaceGuid.PcdHdaVerbTablePtr + gPlatformModuleTokenSpaceGuid.HdaVerbTableEntryNum =20 [Ppis] gSiPolicyPpiGuid ## CONSUMES diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib= /PeiFspScPolicyInitLib.c b/Platform/BroxtonPlatformPkg/Common/Library/PeiFs= pPolicyInitLib/PeiFspScPolicyInitLib.c index 1a6666ebc..f9055db20 100644 --- a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFsp= ScPolicyInitLib.c +++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFsp= ScPolicyInitLib.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; =20 @@ -363,13 +362,11 @@ PeiFspScPolicyInit ( FspsUpd->FspsConfig.Mmt =3D SystemConfigurat= ion->ScHdAudioMmt; FspsUpd->FspsConfig.Hmt =3D SystemConfigurat= ion->ScHdAudioHmt; FspsUpd->FspsConfig.HdAudioIoBufferOwnership =3D SystemConfigurat= ion->ScHdAudioIoBufferOwnership; + FspsUpd->FspsConfig.HdaVerbTableEntryNum =3D PcdGet8(HdaVerbT= ableEntryNum); + FspsUpd->FspsConfig.HdaVerbTablePtr =3D (UINT32)PcdGet64= (PcdHdaVerbTablePtr); + + FspsUpd->FspsConfig.HdAudioDspUaaCompliance =3D 1; =20 - Status =3D GetConfigBlock ((VOID *) ScPolicy, &gHdAudioConfigGuid, (VO= ID *) &HdaConfig); - ASSERT_EFI_ERROR (Status); - if (!EFI_ERROR (Status)) { - FspsUpd->FspsConfig.HdaVerbTableEntryNum =3D HdaConfig->Ver= bTableEntryNum; - FspsUpd->FspsConfig.HdaVerbTablePtr =3D HdaConfig->Ver= bTablePtr; - } FspsUpd->FspsConfig.BiosCfgLockDown =3D SystemConfigurat= ion->ScHdAudioBiosCfgLockDown; FspsUpd->FspsConfig.HDAudioPwrGate =3D SystemConfigurat= ion->ScHdAudioPwrGate; FspsUpd->FspsConfig.HDAudioClkGate =3D SystemConfigurat= ion->ScHdAudioClkGate; diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/= HdaVerbTables.h b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdat= eLib/HdaVerbTables.h deleted file mode 100644 index 64a42bc2c..000000000 --- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/HdaVerb= Tables.h +++ /dev/null @@ -1,30 +0,0 @@ -/** @file - Header file for HDA Verb Tables. - - Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
- - This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e 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 IMP= LIED. - -**/ - -#ifndef _HDA_VERBTABLES_H_ -#define _HDA_VERBTABLES_H_ - -#include - -enum HDAUDIO_CODEC_SELECT { - HdaCodecPlatformOnboard =3D 0, - HdaCodecExternalKit =3D 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/PeiPoli= cyUpdateLib/PeiPolicyUpdateLib.inf index d5f0a1b8d..acb5a84bb 100644 --- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPoli= cyUpdateLib.inf +++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiPoli= cyUpdateLib.inf @@ -25,7 +25,6 @@ PeiScPolicyUpdate.c PeiCpuPolicyUpdatePreMem.c PeiCpuPolicyUpdate.c - HdaVerbTables.c =20 [Packages] MdePkg/MdePkg.dec diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/= PeiScPolicyUpdate.c b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyU= pdateLib/PeiScPolicyUpdate.c index d9a991ca6..b260c3518 100644 --- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPo= licyUpdate.c +++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPo= licyUpdate.c @@ -18,7 +18,6 @@ #include #include #include -#include "HdaVerbTables.h" #include #include #include @@ -71,43 +70,6 @@ InternalAddVerbTable ( } =20 =20 -STATIC -VOID -InstallPlatformVerbTables ( - IN SC_HDAUDIO_CONFIG *HdaConfig, - IN UINT16 BoardId, - IN UINTN CodecType - ) -{ - UINT8 VerbTableEntryNum; - UINT32 VerbTableArray[32]; - UINT32 *VerbTablePtr; - - VerbTableEntryNum =3D 0; - - // - // left switch cases defined which can be PlatformInfo or stepping - // - if (CodecType =3D=3D 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, &HdaVerbTabl= eAlc662); - } else { - DEBUG ((DEBUG_INFO, "HD-Audio Warning: External codec kit selected or = platform verb table not found, installing all!\n")); - } - - HdaConfig->VerbTableEntryNum =3D VerbTableEntryNum; - - VerbTablePtr =3D (UINT32 *) AllocateZeroPool (sizeof (UINT32) *VerbTable= EntryNum); - CopyMem (VerbTablePtr, VerbTableArray, sizeof (UINT32) *VerbTableEntryNu= m); - HdaConfig->VerbTablePtr =3D (UINT32) VerbTablePtr; - - return; -} - - /** Check it's eMMC boot path or not. =20 @@ -548,16 +510,6 @@ UpdatePeiScPolicy ( } HdaConfig->ResetWaitTimer =3D 300; =20 - // - // Install Verb Table - // - if (SystemConfiguration.ScHdAudio) { - // - // set default to on board - // - InstallPlatformVerbTables (HdaConfig, BoardId, HdaCodecPlatformOnboard= ); - } - // // Update GMM config // diff --git a/Platform/BroxtonPlatformPkg/PlatformPkg.dec b/Platform/Broxton= PlatformPkg/PlatformPkg.dec index f61331f16..f2bb7243e 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 + =20 ## MemoryCheck value for checking memory before boot OS. ## To save the boot performance, the default MemoryCheck is set to 0. gClientCommonModuleTokenSpaceGuid.PcdPlatformMemoryCheck|0|UINT8|0x40000= 005 --=20 2.14.1.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel