From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: "Luo, Heng" <heng.luo@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Chaganty, Rangasai V" <rangasai.v.chaganty@intel.com>
Subject: Re: [PATCH 19/40] TigerlakeSiliconPkg/IpBlock: Add Hda component
Date: Thu, 4 Feb 2021 03:54:33 +0000 [thread overview]
Message-ID: <BN6PR1101MB214748486AC17B8DE0ABF7A3CDB39@BN6PR1101MB2147.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20210201013657.1833-19-heng.luo@intel.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
> -----Original Message-----
> From: Luo, Heng <heng.luo@intel.com>
> Sent: Sunday, January 31, 2021 5:37 PM
> To: devel@edk2.groups.io
> Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Desimone,
> Nathaniel L <nathaniel.l.desimone@intel.com>
> Subject: [PATCH 19/40] TigerlakeSiliconPkg/IpBlock: Add Hda component
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3171
>
> Adds the following files:
> * IpBlock/Hda/IncludePrivate
> * IpBlock/Hda/Library
> * IpBlock/Hda/LibraryPrivate
>
> Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Signed-off-by: Heng Luo <heng.luo@intel.com>
> ---
>
> Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Library/DxeHda
> PolicyLib.h | 55
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Register/HdaRe
> gs.h | 46
> ++++++++++++++++++++++++++++++++++++++++++++++
>
> Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeHd
> aNhltLib.c | 383
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> +++++++++++++++++++++++++++++++++++
>
> Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeHd
> aNhltLib.inf | 31 +++++++++++++++++++++++++++++++
>
> Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicyLib
> /DxeHdaPolicyLib.c | 92
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++++++++++++++++++++++++++
>
> Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicyLib
> /DxeHdaPolicyLib.inf | 31 +++++++++++++++++++++++++++++++
> 6 files changed, 638 insertions(+)
>
> diff --git
> a/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Library/DxeH
> daPolicyLib.h
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Library/DxeH
> daPolicyLib.h
> new file mode 100644
> index 0000000000..9c42bf5611
> --- /dev/null
> +++
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Library/DxeH
> daPolicyLib.h
> @@ -0,0 +1,55 @@
> +/** @file
>
> + DXE Hda policy library.
>
> +
>
> + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +**/
>
> +#ifndef _DXE_HDA_POLICY_LIB_H_
>
> +#define _DXE_HDA_POLICY_LIB_H_
>
> +
>
> +#include <Protocol/PchPolicy.h>
>
> +
>
> +/**
>
> + Print HDAUDIO_DXE_CONFIG and serial out.
>
> +
>
> + @param[in] PchPolicy Pointer to a PCH_POLICY_PROTOCOL
>
> +**/
>
> +VOID
>
> +HdaDxePrintConfig (
>
> + IN PCH_POLICY_PROTOCOL *PchPolicy
>
> + );
>
> +
>
> +/**
>
> + Load Config block default
>
> +
>
> + @param[in] ConfigBlockPointer Pointer to config block
>
> +**/
>
> +VOID
>
> +HdaDxeLoadConfigDefault (
>
> + IN VOID *ConfigBlockPointer
>
> + );
>
> +
>
> +/**
>
> + Get Hda config block table size.
>
> +
>
> + @retval Size of config block
>
> +**/
>
> +UINT16
>
> +HdaDxeGetConfigBlockTotalSize (
>
> + VOID
>
> + );
>
> +
>
> +/**
>
> + Add Hda ConfigBlock.
>
> +
>
> + @param[in] ConfigBlockTableAddress The pointer to config block table
>
> +
>
> + @retval EFI_SUCCESS The policy default is initialized.
>
> + @retval EFI_OUT_OF_RESOURCES Insufficient resources to create
> buffer
>
> +**/
>
> +EFI_STATUS
>
> +HdaDxeAddConfigBlock (
>
> + IN VOID *ConfigBlockTableAddress
>
> + );
>
> +
>
> +#endif // _DXE_HDA_POLICY_LIB_H_
>
> diff --git
> a/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Register/Hda
> Regs.h
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Register/Hda
> Regs.h
> new file mode 100644
> index 0000000000..b165e7bb22
> --- /dev/null
> +++
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/IncludePrivate/Register/Hda
> Regs.h
> @@ -0,0 +1,46 @@
> +/** @file
>
> + Register names for High Definition Audio device.
>
> +
>
> + Conventions:
>
> +
>
> + - Register definition format:
>
> +
> Prefix_[GenerationName]_[ComponentName]_SubsystemName_RegisterS
> pace_RegisterName
>
> + - Prefix:
>
> + Definitions beginning with "R_" are registers
>
> + Definitions beginning with "B_" are bits within registers
>
> + Definitions beginning with "V_" are meaningful values within the bits
>
> + Definitions beginning with "S_" are register size
>
> + Definitions beginning with "N_" are the bit position
>
> + - [GenerationName]:
>
> + Three letter acronym of the generation is used (e.g. SKL,KBL,CNL etc.).
>
> + Register name without GenerationName applies to all generations.
>
> + - [ComponentName]:
>
> + This field indicates the component name that the register belongs to (e.g.
> PCH, SA etc.)
>
> + Register name without ComponentName applies to all components.
>
> + Register that is specific to -LP denoted by "_PCH_LP_" in component
> name.
>
> + - SubsystemName:
>
> + This field indicates the subsystem name of the component that the
> register belongs to
>
> + (e.g. PCIE, USB, SATA, GPIO, PMC etc.).
>
> + - RegisterSpace:
>
> + MEM - MMIO space register of subsystem.
>
> + IO - IO space register of subsystem.
>
> + PCR - Private configuration register of subsystem.
>
> + CFG - PCI configuration space register of subsystem.
>
> + - RegisterName:
>
> + Full register name.
>
> +
>
> + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +**/
>
> +#ifndef _HDA_REGS_H_
>
> +#define _HDA_REGS_H_
>
> +
>
> +//
>
> +// HD-A Controller Registers
>
> +//
>
> +// PCI Configuration Space Registers
>
> +//
>
> +#define R_HDA_CFG_PCS 0x54
>
> +#define B_HDA_CFG_PCS_PMEE BIT8
>
> +
>
> +#endif
>
> diff --git
> a/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeH
> daNhltLib.c
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeH
> daNhltLib.c
> new file mode 100644
> index 0000000000..71388934e6
> --- /dev/null
> +++
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeH
> daNhltLib.c
> @@ -0,0 +1,383 @@
> +/** @file
>
> + HD Audio NHLT Library implementation.
>
> +
>
> + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +**/
>
> +
>
> +#include <Uefi/UefiBaseType.h>
>
> +#include <Library/DebugLib.h>
>
> +#include <Library/MemoryAllocationLib.h>
>
> +#include <Library/BaseMemoryLib.h>
>
> +#include <Library/PcdLib.h>
>
> +#include <ConfigBlock.h>
>
> +#include <Library/ConfigBlockLib.h>
>
> +#include <Library/PchInfoLib.h>
>
> +#include <DxeHdaNhlt.h>
>
> +
>
> +/**
>
> + Returns pointer to Endpoint ENDPOINT_DESCRIPTOR structure.
>
> +
>
> + @param[in] *NhltTable Endpoint for which Format address is retrieved
>
> + @param[in] FormatIndex Index of Format to be retrieved
>
> +
>
> + @retval Pointer to ENDPOINT_DESCRIPTOR structure with given
> index
>
> +**/
>
> +ENDPOINT_DESCRIPTOR *
>
> +GetNhltEndpoint (
>
> + IN CONST NHLT_ACPI_TABLE *NhltTable,
>
> + IN CONST UINT8 EndpointIndex
>
> + )
>
> +{
>
> + UINT8 Index;
>
> + ENDPOINT_DESCRIPTOR *Endpoint;
>
> + Endpoint = (ENDPOINT_DESCRIPTOR*) (NhltTable->EndpointDescriptors);
>
> +
>
> + if (EndpointIndex > NhltTable->EndpointCount) {
>
> + return NULL;
>
> + }
>
> +
>
> + for (Index = 0; Index < EndpointIndex; Index++) {
>
> + Endpoint = (ENDPOINT_DESCRIPTOR*) ((UINT8*) (Endpoint) + Endpoint-
> >EndpointDescriptorLength);
>
> + }
>
> +
>
> + return Endpoint;
>
> +}
>
> +
>
> +/**
>
> + Returns pointer to Endpoint Specific Configuration SPECIFIC_CONFIG
> structure.
>
> +
>
> + @param[in] *Endpoint Endpoint for which config address is retrieved
>
> +
>
> + @retval Pointer to SPECIFIC_CONFIG structure with endpoint's
> capabilities
>
> +**/
>
> +SPECIFIC_CONFIG *
>
> +GetNhltEndpointDeviceCapabilities (
>
> + IN CONST ENDPOINT_DESCRIPTOR *Endpoint
>
> + )
>
> +{
>
> + return (SPECIFIC_CONFIG*) (&Endpoint->EndpointConfig);
>
> +}
>
> +
>
> +/**
>
> + Returns pointer to all Formats Configuration FORMATS_CONFIG structure.
>
> +
>
> + @param[in] *Endpoint Endpoint for which Formats address is retrieved
>
> +
>
> + @retval Pointer to FORMATS_CONFIG structure
>
> +**/
>
> +FORMATS_CONFIG *
>
> +GetNhltEndpointFormatsConfig (
>
> + IN CONST ENDPOINT_DESCRIPTOR *Endpoint
>
> + )
>
> +{
>
> + FORMATS_CONFIG *FormatsConfig;
>
> + FormatsConfig = (FORMATS_CONFIG*) ((UINT8*) (&Endpoint-
> >EndpointConfig)
>
> + + sizeof (Endpoint->EndpointConfig.CapabilitiesSize)
>
> + + Endpoint->EndpointConfig.CapabilitiesSize);
>
> +
>
> + return FormatsConfig;
>
> +}
>
> +
>
> +/**
>
> + Returns pointer to Format Configuration FORMAT_CONFIG structure.
>
> +
>
> + @param[in] *Endpoint Endpoint for which Format address is retrieved
>
> + @param[in] FormatIndex Index of Format to be retrieved
>
> +
>
> + @retval Pointer to FORMAT_CONFIG structure with given index
>
> +**/
>
> +FORMAT_CONFIG *
>
> +GetNhltEndpointFormat (
>
> + IN CONST ENDPOINT_DESCRIPTOR *Endpoint,
>
> + IN CONST UINT8 FormatIndex
>
> + )
>
> +{
>
> + UINT8 Index;
>
> + UINT32 Length;
>
> + FORMATS_CONFIG *FormatsConfig;
>
> + FORMAT_CONFIG *Format;
>
> +
>
> + Length = 0;
>
> + FormatsConfig = GetNhltEndpointFormatsConfig (Endpoint);
>
> + Format = FormatsConfig->FormatsConfiguration;
>
> +
>
> + if (FormatIndex > FormatsConfig->FormatsCount) {
>
> + return NULL;
>
> + }
>
> +
>
> + for (Index = 0; Index < FormatIndex; Index++) {
>
> + Length = sizeof (Format->Format) + Format-
> >FormatConfiguration.CapabilitiesSize
>
> + + sizeof (Format->FormatConfiguration.CapabilitiesSize);
>
> + Format = (FORMAT_CONFIG*) ((UINT8*) (Format) + Length);
>
> + }
>
> +
>
> + return Format;
>
> +}
>
> +
>
> +/**
>
> + Returns pointer to all Device Information DEVICES_INFO structure.
>
> +
>
> + @param[in] *Endpoint Endpoint for which DevicesInfo address is
> retrieved
>
> +
>
> + @retval Pointer to DEVICES_INFO structure
>
> +**/
>
> +DEVICES_INFO *
>
> +GetNhltEndpointDevicesInfo (
>
> + IN CONST ENDPOINT_DESCRIPTOR *Endpoint
>
> + )
>
> +{
>
> + DEVICES_INFO *DevicesInfo;
>
> + FORMATS_CONFIG *FormatsConfig;
>
> + FORMAT_CONFIG *Format;
>
> +
>
> + FormatsConfig = GetNhltEndpointFormatsConfig (Endpoint);
>
> + Format = GetNhltEndpointFormat (Endpoint, FormatsConfig-
> >FormatsCount);
>
> + DevicesInfo = (DEVICES_INFO*) ((UINT8*) Format);
>
> +
>
> + return DevicesInfo;
>
> +}
>
> +
>
> +/**
>
> + Returns pointer to Device Information DEVICES_INFO structure.
>
> +
>
> + @param[in] *Endpoint Endpoint for which Device Info address is
> retrieved
>
> + @param[in] DeviceInfoIndex Index of Device Info to be retrieved
>
> +
>
> + @retval Pointer to DEVICE_INFO structure with given index
>
> +**/
>
> +DEVICE_INFO *
>
> +GetNhltEndpointDeviceInfo (
>
> + IN CONST ENDPOINT_DESCRIPTOR *Endpoint,
>
> + IN CONST UINT8 DeviceInfoIndex
>
> + )
>
> +{
>
> + DEVICES_INFO *DevicesInfo;
>
> + DEVICE_INFO *DeviceInfo;
>
> +
>
> + DevicesInfo = GetNhltEndpointDevicesInfo (Endpoint);
>
> + DeviceInfo = DevicesInfo->DeviceInformation;
>
> +
>
> + if (DevicesInfo == NULL || DeviceInfoIndex >= DevicesInfo-
> >DeviceInfoCount) {
>
> + return NULL;
>
> + }
>
> +
>
> + DeviceInfo = (DEVICE_INFO*) ((UINT8*) (DeviceInfo) + sizeof
> (*DeviceInfo) * DeviceInfoIndex);
>
> +
>
> + return DeviceInfo;
>
> +}
>
> +
>
> +/**
>
> + Returns pointer to OED Configuration SPECIFIC_CONFIG structure.
>
> +
>
> + @param[in] *NhltTable NHLT table for which OED address is retrieved
>
> +
>
> + @retval Pointer to SPECIFIC_CONFIG structure with NHLT
> capabilities
>
> +**/
>
> +SPECIFIC_CONFIG *
>
> +GetNhltOedConfig (
>
> + IN CONST NHLT_ACPI_TABLE *NhltTable
>
> + )
>
> +{
>
> + ENDPOINT_DESCRIPTOR *Endpoint;
>
> + SPECIFIC_CONFIG *OedConfig;
>
> +
>
> + Endpoint = GetNhltEndpoint (NhltTable, (NhltTable->EndpointCount));
>
> + OedConfig = (SPECIFIC_CONFIG*) ((UINT8*) (Endpoint));
>
> +
>
> + return OedConfig;
>
> +}
>
> +
>
> +/**
>
> + Prints Format configuration.
>
> +
>
> + @param[in] *Format Format to be printed
>
> +
>
> + @retval None
>
> +**/
>
> +VOID
>
> +NhltFormatDump (
>
> + IN CONST FORMAT_CONFIG *Format
>
> + )
>
> +{
>
> + UINT32 Index;
>
> +
>
> + DEBUG ((DEBUG_INFO, "------------------------------- FORMAT -----------------
> --------------\n"));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.wFormatTag =
> 0x%x\n", Format->Format.Format.wFormatTag));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.nChannels = %d\n",
> Format->Format.Format.nChannels));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.nSamplesPerSec =
> %d\n", Format->Format.Format.nSamplesPerSec));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.nAvgBytesPerSec =
> %d\n", Format->Format.Format.nAvgBytesPerSec));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.nBlockAlign = %d\n",
> Format->Format.Format.nBlockAlign));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.wBitsPerSample =
> %d\n", Format->Format.Format.wBitsPerSample));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Format.cbSize = %d\n",
> Format->Format.Format.cbSize));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.Samples = %d\n",
> Format->Format.Samples));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.dwChannelMask =
> 0x%x\n", Format->Format.dwChannelMask));
>
> + DEBUG ((DEBUG_INFO, " Format->Format.SubFormat = %g\n",
> Format->Format.SubFormat));
>
> +
>
> +
>
> + DEBUG ((DEBUG_INFO, " Format->FormatConfiguration.CapabilitiesSize =
> %d B\n", Format->FormatConfiguration.CapabilitiesSize));
>
> + DEBUG ((DEBUG_VERBOSE, " Format-
> >FormatConfiguration.Capabilities:"));
>
> + for (Index = 0; Index < ( Format->FormatConfiguration.CapabilitiesSize ) ;
> Index++) {
>
> + if (Index % 16 == 0) {
>
> + DEBUG ((DEBUG_VERBOSE, "\n"));
>
> + }
>
> + DEBUG ((DEBUG_VERBOSE, "0x%02x, ", Format-
> >FormatConfiguration.Capabilities[Index]));
>
> + }
>
> + DEBUG ((DEBUG_VERBOSE, "\n"));
>
> +}
>
> +
>
> +/**
>
> + Prints Device Information.
>
> +
>
> + @param[in] *DeviceInfo DeviceInfo to be printed
>
> +
>
> + @retval None
>
> +**/
>
> +VOID
>
> +NhltDeviceInfoDump (
>
> + IN CONST DEVICE_INFO *DeviceInfo
>
> + )
>
> +{
>
> + DEBUG ((DEBUG_INFO, "----------------------------- DEVICE INFO --------------
> --------------\n"));
>
> + DEBUG ((DEBUG_INFO, " DeviceInfo->DeviceId = %a\n", DeviceInfo-
> >DeviceId));
>
> + DEBUG ((DEBUG_INFO, " DeviceInfo->DeviceInstanceId = 0x%x\n",
> DeviceInfo->DeviceInstanceId));
>
> + DEBUG ((DEBUG_INFO, " DeviceInfo->DevicePortId = 0x%x\n",
> DeviceInfo->DevicePortId));
>
> +}
>
> +
>
> +/**
>
> + Prints Endpoint configuration.
>
> +
>
> + @param[in] *Endpoint Endpoint to be printed
>
> +
>
> + @retval None
>
> +**/
>
> +VOID
>
> +NhltEndpointDump (
>
> + IN CONST ENDPOINT_DESCRIPTOR *Endpoint
>
> + )
>
> +{
>
> + UINT8 Index;
>
> + FORMATS_CONFIG *FormatsConfigs;
>
> + FORMAT_CONFIG *Format;
>
> + DEVICES_INFO *DevicesInfo;
>
> + DEVICE_INFO *DeviceInfo;
>
> +
>
> + DEBUG ((DEBUG_INFO, "------------------------------ ENDPOINT ----------------
> --------------\n"));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->DeviceDescriptorLength = %d B\n",
> Endpoint->EndpointDescriptorLength));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->LinkType = 0x%x\n", Endpoint-
> >LinkType));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->InstanceId = 0x%x\n",
> Endpoint->InstanceId));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->HwVendorId = 0x%x\n",
> Endpoint->HwVendorId));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->HwDeviceId = 0x%x\n",
> Endpoint->HwDeviceId));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->HwRevisionId = 0x%x\n",
> Endpoint->HwRevisionId));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->HwSubsystemId = 0x%x\n",
> Endpoint->HwSubsystemId));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->DeviceType = 0x%x\n",
> Endpoint->DeviceType));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->Direction = 0x%x\n", Endpoint-
> >Direction));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->VirtualBusId = 0x%x\n",
> Endpoint->VirtualBusId));
>
> +
>
> + DEBUG ((DEBUG_INFO, " Endpoint->EndpointConfig.CapabilitiesSize = %d
> B\n", Endpoint->EndpointConfig.CapabilitiesSize));
>
> + DEBUG ((DEBUG_VERBOSE, " Endpoint->EndpointConfig.Capabilities:"));
>
> + for (Index = 0; Index < (Endpoint->EndpointConfig.CapabilitiesSize ) ;
> Index++) {
>
> + if (Index % 16 == 0) DEBUG ((DEBUG_VERBOSE, "\n"));
>
> + DEBUG ((DEBUG_VERBOSE, "0x%02x, ", Endpoint-
> >EndpointConfig.Capabilities[Index]));
>
> + }
>
> +
>
> + FormatsConfigs = GetNhltEndpointFormatsConfig (Endpoint);
>
> +
>
> + DEBUG ((DEBUG_INFO, "\n"));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->FormatsConfig.FormatsCount =
> %d\n", FormatsConfigs->FormatsCount));
>
> + for (Index = 0; Index < FormatsConfigs->FormatsCount; Index++) {
>
> + Format = GetNhltEndpointFormat (Endpoint, Index);
>
> + if (Format != NULL) {
>
> + NhltFormatDump (Format);
>
> + }
>
> + }
>
> +
>
> + DevicesInfo = GetNhltEndpointDevicesInfo (Endpoint);
>
> + if (DevicesInfo != NULL) {
>
> + DEBUG ((DEBUG_INFO, "\n"));
>
> + DEBUG ((DEBUG_INFO, " Endpoint->DevicesInfo.DeviceInfoCount =
> %d\n", DevicesInfo->DeviceInfoCount));
>
> + for (Index = 0; Index < DevicesInfo->DeviceInfoCount; Index++) {
>
> + DeviceInfo = GetNhltEndpointDeviceInfo (Endpoint, Index);
>
> + if (DeviceInfo != NULL) {
>
> + NhltDeviceInfoDump (DeviceInfo);
>
> + }
>
> + }
>
> + }
>
> + DEBUG ((DEBUG_VERBOSE, "\n"));
>
> +}
>
> +
>
> +/**
>
> + Prints OED (Offload Engine Driver) configuration.
>
> +
>
> + @param[in] *OedConfig OED to be printed
>
> +
>
> + @retval None
>
> +**/
>
> +VOID
>
> +NhltOedConfigDump (
>
> + IN CONST SPECIFIC_CONFIG *OedConfig
>
> + )
>
> +{
>
> + UINT8 Index;
>
> +
>
> + DEBUG ((DEBUG_INFO, "-------------------------- OED CONFIGURATION ------
> -------------------\n"));
>
> + DEBUG ((DEBUG_INFO, " OedConfig->CapabilitiesSize = %d B\n",
> OedConfig->CapabilitiesSize));
>
> + DEBUG ((DEBUG_VERBOSE, " OedConfig->Capabilities:"));
>
> + for (Index = 0; Index < (OedConfig->CapabilitiesSize) ; Index++) {
>
> + if (Index % 16 == 0) DEBUG ((DEBUG_VERBOSE, "\n"));
>
> + DEBUG ((DEBUG_VERBOSE, "0x%02x, ", OedConfig->Capabilities[Index]));
>
> + }
>
> +
>
> + DEBUG ((DEBUG_VERBOSE, "\n"));
>
> +}
>
> +
>
> +/**
>
> + Prints NHLT (Non HDA-Link Table) to be exposed via ACPI (aka. OED
> (Offload Engine Driver) Configuration Table).
>
> +
>
> + @param[in] *NhltTable The NHLT table to print
>
> +
>
> + @retval None
>
> +**/
>
> +VOID
>
> +NhltAcpiTableDump (
>
> + IN NHLT_ACPI_TABLE *NhltTable
>
> + )
>
> +{
>
> + DEBUG_CODE_BEGIN ();
>
> + UINT8 Index;
>
> +
>
> + DEBUG ((DEBUG_INFO, "\n"));
>
> + DEBUG ((DEBUG_INFO, "--- NHLT ACPI Table Dump [OED (Offload Engine
> Driver) Configuration] ---\n"));
>
> +
>
> + DEBUG ((DEBUG_INFO, "sizeof NHLT_ACPI_TABLE = %d B\n", sizeof
> (NHLT_ACPI_TABLE)));
>
> + DEBUG ((DEBUG_INFO, "sizeof EFI_ACPI_DESCRIPTION_HEADER = %d
> B\n", sizeof (EFI_ACPI_DESCRIPTION_HEADER)));
>
> + DEBUG ((DEBUG_INFO, "sizeof ENDPOINT_DESCRIPTOR = %d B\n", sizeof
> (ENDPOINT_DESCRIPTOR)));
>
> + DEBUG ((DEBUG_INFO, "sizeof SPECIFIC_CONFIG = %d B\n", sizeof
> (SPECIFIC_CONFIG)));
>
> + DEBUG ((DEBUG_INFO, "sizeof FORMATS_CONFIG = %d B\n", sizeof
> (FORMATS_CONFIG)));
>
> + DEBUG ((DEBUG_INFO, "sizeof FORMAT_CONFIG = %d B\n", sizeof
> (FORMAT_CONFIG)));
>
> + DEBUG ((DEBUG_INFO, "sizeof WAVEFORMATEXTENSIBLE = %d B\n",
> sizeof (WAVEFORMATEXTENSIBLE)));
>
> + DEBUG ((DEBUG_INFO, "sizeof DEVICES_INFO = %d B\n", sizeof
> (DEVICES_INFO)));
>
> + DEBUG ((DEBUG_INFO, "sizeof DEVICE_INFO = %d B\n", sizeof
> (DEVICE_INFO)));
>
> +
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Signature =
> 0x%08x\n", NhltTable->Header.Signature));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Length =
> 0x%08x\n", NhltTable->Header.Length));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Revision =
> 0x%02x\n", NhltTable->Header.Revision));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Checksum =
> 0x%02x\n", NhltTable->Header.Checksum));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.OemId = %a\n",
> NhltTable->Header.OemId));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.OemTableId =
> 0x%lx\n", NhltTable->Header.OemTableId));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.OemRevision =
> 0x%08x\n", NhltTable->Header.OemRevision));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.CreatorId =
> 0x%08x\n", NhltTable->Header.CreatorId));
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.CreatorRevision =
> 0x%08x\n", NhltTable->Header.CreatorRevision));
>
> + DEBUG ((DEBUG_INFO, "\n"));
>
> +
>
> + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE EndpointCount = %d\n",
> NhltTable->EndpointCount));
>
> + for (Index = 0; Index < NhltTable->EndpointCount; Index++) {
>
> + NhltEndpointDump (GetNhltEndpoint (NhltTable, Index));
>
> + }
>
> +
>
> + NhltOedConfigDump (GetNhltOedConfig (NhltTable));
>
> + DEBUG ((DEBUG_INFO, "------------------------------------------------------------
> ----------\n"));
>
> +
>
> + DEBUG_CODE_END ();
>
> +}
>
> +
>
> diff --git
> a/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeH
> daNhltLib.inf
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeH
> daNhltLib.inf
> new file mode 100644
> index 0000000000..a1574c3ab1
> --- /dev/null
> +++
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/Library/DxeHdaNhltLib/DxeH
> daNhltLib.inf
> @@ -0,0 +1,31 @@
> +## @file
>
> +# Component information file for HD Audio NHLT Library
>
> +#
>
> +# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
>
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +#
>
> +##
>
> +
>
> +[Defines]
>
> +INF_VERSION = 0x00010017
>
> +BASE_NAME = DxeHdaNhltLib
>
> +FILE_GUID = DA915B7F-EE08-4C1D-B3D0-DE7C52AB155A
>
> +VERSION_STRING = 1.0
>
> +MODULE_TYPE = BASE
>
> +LIBRARY_CLASS = DxeHdaNhltLib
>
> +
>
> +[LibraryClasses]
>
> +BaseLib
>
> +DebugLib
>
> +MemoryAllocationLib
>
> +BaseMemoryLib
>
> +PchInfoLib
>
> +ConfigBlockLib
>
> +
>
> +[Packages]
>
> +MdePkg/MdePkg.dec
>
> +TigerlakeSiliconPkg/SiPkg.dec
>
> +
>
> +[Sources]
>
> +DxeHdaNhltLib.c
>
> +
>
> diff --git
> a/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicy
> Lib/DxeHdaPolicyLib.c
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicy
> Lib/DxeHdaPolicyLib.c
> new file mode 100644
> index 0000000000..30843fab39
> --- /dev/null
> +++
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicy
> Lib/DxeHdaPolicyLib.c
> @@ -0,0 +1,92 @@
> +/** @file
>
> + This file provides services for Hda policy function
>
> +
>
> + Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
>
> + SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +**/
>
> +#include <Uefi.h>
>
> +#include <Library/DebugLib.h>
>
> +#include <Library/SiConfigBlockLib.h>
>
> +#include <Library/ConfigBlockLib.h>
>
> +#include <Protocol/PchPolicy.h>
>
> +#include <HdAudioConfig.h>
>
> +
>
> +/**
>
> + Print HDAUDIO_DXE_CONFIG and serial out.
>
> +
>
> + @param[in] PchPolicy Pointer to a PCH_POLICY_PROTOCOL
>
> +**/
>
> +VOID
>
> +HdaDxePrintConfig (
>
> + IN PCH_POLICY_PROTOCOL *PchPolicy
>
> + )
>
> +{
>
> + EFI_STATUS Status;
>
> + HDAUDIO_DXE_CONFIG *HdaDxeConfig;
>
> + UINT32 Index;
>
> +
>
> + Status = GetConfigBlock ((VOID *) PchPolicy, &gHdAudioDxeConfigGuid,
> (VOID *) &HdaDxeConfig);
>
> + ASSERT_EFI_ERROR (Status);
>
> +
>
> + DEBUG ((DEBUG_INFO, "------------------ HD-Audio DXE Config ---------------
> ---\n"));
>
> +
>
> + for (Index = 0; Index < PCH_MAX_HDA_SNDW_LINK_NUM; Index++) {
>
> + DEBUG ((DEBUG_INFO, " SNDW%d AutonomousClockStop : %d\n",
> Index, HdaDxeConfig->SndwConfig[Index].AutonomousClockStop));
>
> + DEBUG ((DEBUG_INFO, " SNDW%d DODS : %d\n", Index,
> HdaDxeConfig->SndwConfig[Index].DataOnDelaySelect));
>
> + DEBUG ((DEBUG_INFO, " SNDW%d DOAS : %d\n", Index,
> HdaDxeConfig->SndwConfig[Index].DataOnActiveIntervalSelect));
>
> + }
>
> + DEBUG ((DEBUG_INFO, " DSP Feature Mask : 0x%x\n",
> HdaDxeConfig->DspFeatureMask));
>
> +}
>
> +
>
> +/**
>
> + Load Config block default
>
> +
>
> + @param[in] ConfigBlockPointer Pointer to config block
>
> +**/
>
> +VOID
>
> +HdaDxeLoadConfigDefault (
>
> + IN VOID *ConfigBlockPointer
>
> + )
>
> +{
>
> + HDAUDIO_DXE_CONFIG *HdAudioDxeConfig;
>
> + HdAudioDxeConfig = ConfigBlockPointer;
>
> +
>
> + DEBUG ((DEBUG_INFO, "HdaDxeConfig->Header.GuidHob.Name = %g\n",
> &HdAudioDxeConfig->Header.GuidHob.Name));
>
> + DEBUG ((DEBUG_INFO, "HdaDxeConfig-
> >Header.GuidHob.Header.HobLength = 0x%x\n", HdAudioDxeConfig-
> >Header.GuidHob.Header.HobLength));
>
> +}
>
> +
>
> +STATIC COMPONENT_BLOCK_ENTRY mHdaBlocks = {
>
> + &gHdAudioDxeConfigGuid,
>
> + sizeof (HDAUDIO_DXE_CONFIG),
>
> + HDAUDIO_DXE_CONFIG_REVISION,
>
> + HdaDxeLoadConfigDefault
>
> +};
>
> +
>
> +/**
>
> + Get Hda config block table size.
>
> +
>
> + @retval Size of config block
>
> +**/
>
> +UINT16
>
> +HdaDxeGetConfigBlockTotalSize (
>
> + VOID
>
> + )
>
> +{
>
> + return mHdaBlocks.Size;
>
> +}
>
> +
>
> +/**
>
> + Add Hda ConfigBlock.
>
> +
>
> + @param[in] ConfigBlockTableAddress The pointer to config block table
>
> +
>
> + @retval EFI_SUCCESS The policy default is initialized.
>
> + @retval EFI_OUT_OF_RESOURCES Insufficient resources to create
> buffer
>
> +**/
>
> +EFI_STATUS
>
> +HdaDxeAddConfigBlock (
>
> + IN VOID *ConfigBlockTableAddress
>
> + )
>
> +{
>
> + return AddComponentConfigBlocks (ConfigBlockTableAddress,
> &mHdaBlocks, 1);
>
> +}
>
> diff --git
> a/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicy
> Lib/DxeHdaPolicyLib.inf
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicy
> Lib/DxeHdaPolicyLib.inf
> new file mode 100644
> index 0000000000..758499b95e
> --- /dev/null
> +++
> b/Silicon/Intel/TigerlakeSiliconPkg/IpBlock/Hda/LibraryPrivate/DxeHdaPolicy
> Lib/DxeHdaPolicyLib.inf
> @@ -0,0 +1,31 @@
> +## @file
>
> +# Component description file for the Hda policy library
>
> +#
>
> +# Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
>
> +# SPDX-License-Identifier: BSD-2-Clause-Patent
>
> +#
>
> +##
>
> +
>
> +
>
> +[Defines]
>
> +INF_VERSION = 0x00010017
>
> +BASE_NAME = DxeHdaPolicyLib
>
> +FILE_GUID = B053EFE4-0868-4510-A71D-96A85CD16C77
>
> +VERSION_STRING = 1.0
>
> +MODULE_TYPE = BASE
>
> +LIBRARY_CLASS = DxeHdaPolicyLib
>
> +
>
> +[LibraryClasses]
>
> +DebugLib
>
> +ConfigBlockLib
>
> +SiConfigBlockLib
>
> +
>
> +[Packages]
>
> +MdePkg/MdePkg.dec
>
> +TigerlakeSiliconPkg/SiPkg.dec
>
> +
>
> +[Sources]
>
> +DxeHdaPolicyLib.c
>
> +
>
> +[Guids]
>
> +gHdAudioDxeConfigGuid ## CONSUMES
>
> --
> 2.24.0.windows.2
next prev parent reply other threads:[~2021-02-04 3:54 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-01 1:36 [PATCH 01/40] TigerlakeSiliconPkg: Add package and Include/ConfigBlock headers Heng Luo
2021-02-01 1:36 ` [PATCH 02/40] TigerlakeSiliconPkg/Include: Add Library, PPI and Protocol include headers Heng Luo
2021-02-04 3:51 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 03/40] TigerlakeSiliconPkg/Include: Add Pins, Register and other " Heng Luo
2021-02-04 3:52 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 04/40] TigerlakeSiliconPkg/Cpu: Add Include headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 05/40] TigerlakeSiliconPkg/Pch: Add include headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 06/40] TigerlakeSiliconPkg/Pch: Add IncludePrivate headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 07/40] TigerlakeSiliconPkg/SystemAgent: Add include headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 08/40] TigerlakeSiliconPkg/SystemAgent: Add IncludePrivate headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 09/40] TigerlakeSiliconPkg/Fru: Add TglCpu/Include headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 10/40] TigerlakeSiliconPkg/Fru: Add TglCpu/IncludePrivate headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 11/40] TigerlakeSiliconPkg/Fru: Add TglPch/Include headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 12/40] TigerlakeSiliconPkg/Fru: Add TglPch/IncludePrivate headers Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 13/40] TigerlakeSiliconPkg/IpBlock: Add Cnvi component Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 14/40] TigerlakeSiliconPkg/IpBlock: Add CpuPcieRp component Heng Luo
2021-02-04 3:53 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 15/40] TigerlakeSiliconPkg/IpBlock: Add Espi component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 16/40] TigerlakeSiliconPkg/IpBlock: Add Gbe component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 17/40] TigerlakeSiliconPkg/IpBlock: Add Gpio component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 18/40] TigerlakeSiliconPkg/IpBlock: Add Graphics component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 19/40] TigerlakeSiliconPkg/IpBlock: Add Hda component Heng Luo
2021-02-04 3:54 ` Nate DeSimone [this message]
2021-02-01 1:36 ` [PATCH 20/40] TigerlakeSiliconPkg/IpBlock: Add HostBridge component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 21/40] TigerlakeSiliconPkg/IpBlock: Add P2sb component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 22/40] TigerlakeSiliconPkg/IpBlock: Add PchDmi component Heng Luo
2021-02-04 3:54 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 23/40] TigerlakeSiliconPkg/IpBlock: Add PcieRp component Heng Luo
2021-02-04 3:55 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 24/40] TigerlakeSiliconPkg/IpBlock: Add Pmc component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 25/40] TigerlakeSiliconPkg/IpBlock: Add Psf component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 26/40] TigerlakeSiliconPkg/IpBlock: Add Sata component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 27/40] TigerlakeSiliconPkg/IpBlock: Add SerialIo component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 28/40] TigerlakeSiliconPkg/IpBlock: Add Smbus component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 29/40] TigerlakeSiliconPkg/IpBlock: Add Spi component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 30/40] TigerlakeSiliconPkg/IpBlock: Add Vtd component Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 31/40] TigerlakeSiliconPkg/Library: Add package common library instances Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 32/40] TigerlakeSiliconPkg/Pch: Add Pch " Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 33/40] TigerlakeSiliconPkg/Pch: Add Pch private " Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 34/40] TigerlakeSiliconPkg/SystemAgent: Add Acpi Tables and " Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 35/40] TigerlakeSiliconPkg/Fru/TglCpu: Add CpuPcieRp and Vtd " Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 36/40] TigerlakeSiliconPkg/Pch: Add Pch modules Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 37/40] TigerlakeSiliconPkg/SystemAgent: Add SystemAgent modules Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 38/40] TigerlakeSiliconPkg/Fru: Add Fru DSC files Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 39/40] TigerlakeSiliconPkg: Add package " Heng Luo
2021-02-04 3:56 ` Nate DeSimone
2021-02-01 1:36 ` [PATCH 40/40] Maintainers.txt: Add TigerlakeSiliconPkg maintainers Heng Luo
2021-02-04 3:51 ` Nate DeSimone
2021-02-04 8:24 ` Heng Luo
2021-02-04 3:51 ` [PATCH 01/40] TigerlakeSiliconPkg: Add package and Include/ConfigBlock headers Nate DeSimone
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BN6PR1101MB214748486AC17B8DE0ABF7A3CDB39@BN6PR1101MB2147.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox