From nobody Fri Dec 19 20:15:10 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+45899+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+45899+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1566001017; cv=none; d=zoho.com; s=zohoarc; b=JO8lYAWOj/zRibkP/EJtRA+QJVKn0mZxFSw+TY5LqXUkD+EkOuA4d+HQfWcvbA7xz3QV1i5VXXKUwmAzCngMR/z73wmqJCYtvIEMjQ6yUyN25yKQDIOPTJtpn3gVvYNi9g8XfLciLOAm32b4Gkf65rvNNncdmonb24FWj6OFyw4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1566001017; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=wbLDRXISISD/6yyy9dSYlnuvmLBJ5ha78p7XJuKd8Ag=; b=VG2XdRYKo6st1nuGNcJQrsERtkvW4FspCE8qGDKhmfzeBG6+SkdB2G++HtM1IZ+Et+YVjtIew8uKAhss/GDVovjYxJFJHYbqOC5LOZwNUysTqyfyilo1CDQ5Fy1+xH1RgHweahyhWUX1VqqXCv8PG7GjFbt8GIotQHm+r+UZdN8= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+45899+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1566001017542824.3119894466382; Fri, 16 Aug 2019 17:16:57 -0700 (PDT) Return-Path: X-Received: from mga04.intel.com (mga04.intel.com []) by groups.io with SMTP; Fri, 16 Aug 2019 17:16:55 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Aug 2019 17:16:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,395,1559545200"; d="scan'208";a="182319301" X-Received: from makuback-desk1.amr.corp.intel.com ([10.7.159.162]) by orsmga006.jf.intel.com with ESMTP; 16 Aug 2019 17:16:53 -0700 From: "Kubacki, Michael A" To: devel@edk2.groups.io Cc: Sai Chaganty , Chasel Chiu , Nate DeSimone , Liming Gao , Michael D Kinney , Ankit Sinha Subject: [edk2-devel] [edk2-platforms][PATCH V1 22/37] CoffeelakeSiliconPkg/Pch: Add DXE private library instances Date: Fri, 16 Aug 2019 17:15:48 -0700 Message-Id: <20190817001603.30632-23-michael.a.kubacki@intel.com> In-Reply-To: <20190817001603.30632-1-michael.a.kubacki@intel.com> References: <20190817001603.30632-1-michael.a.kubacki@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.a.kubacki@intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1566001017; bh=lVsFSH4tPzuuM4YWqoGfPOi+ojaSiT6QvKvvRKIkAxs=; h=Cc:Date:From:Reply-To:Subject:To; b=Cu6LVu/zMwzq10YTQwnmFZZNiuGraXmok3FgmxrFdrzhOR2WROGQImC2M6l66ztwVbw V3PylIqL/pBLzwHULQ8X5XysYdg6ES1EJDDZSwQQjhK3gcb4vuD0UyDlgc/EO0rOg5m9R bsMuP/GAsyUJE+HanFgDlRWoV21yVgjkFfM= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2082 Adds PCH DXE private library class instances. * DxeGpioNameBufferLib * DxePchHdaLib Cc: Sai Chaganty Cc: Chasel Chiu Cc: Nate DeSimone Cc: Liming Gao Cc: Michael D Kinney Cc: Ankit Sinha Signed-off-by: Michael Kubacki --- Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxeGpioNameBufferLi= b/DxeGpioNameBufferLib.inf | 32 + Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/DxePch= HdaLib.inf | 43 + Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxeGpioNameBufferLi= b/GpioNameBufferDxe.c | 20 + Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/PchHda= Endpoints.c | 333 ++++++++ Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/PchHda= Lib.c | 886 ++++++++++++++++++++ Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/PchHda= NhltConfig.c | 439 ++++++++++ 6 files changed, 1753 insertions(+) diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxeGpio= NameBufferLib/DxeGpioNameBufferLib.inf b/Silicon/Intel/CoffeelakeSiliconPkg= /Pch/Library/Private/DxeGpioNameBufferLib/DxeGpioNameBufferLib.inf new file mode 100644 index 0000000000..0dc8f9749d --- /dev/null +++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxeGpioNameBuf= ferLib/DxeGpioNameBufferLib.inf @@ -0,0 +1,32 @@ +## @file +# Component description file for the DxeGpioMemLib +# +# Copyright (c) 2019 Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] +INF_VERSION =3D 0x00010017 +BASE_NAME =3D DxeGpioNameBufferLib +FILE_GUID =3D 16EC6AA8-81D5-4847-B6CB-662CDAB863F2 +VERSION_STRING =3D 1.0 +MODULE_TYPE =3D DXE_DRIVER +LIBRARY_CLASS =3D GpioNameBufferLib +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC +# + +[LibraryClasses] +BaseLib + +[Packages] +MdePkg/MdePkg.dec +CoffeelakeSiliconPkg/SiPkg.dec + +[Sources] +GpioNameBufferDxe.c + diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchH= daLib/DxePchHdaLib.inf b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Pri= vate/DxePchHdaLib/DxePchHdaLib.inf new file mode 100644 index 0000000000..a8a3f60b53 --- /dev/null +++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/D= xePchHdaLib.inf @@ -0,0 +1,43 @@ +## @file +# Component information file for PCH HD Audio Library +# +# Copyright (c) 2019 Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] +INF_VERSION =3D 0x00010017 +BASE_NAME =3D DxePchHdaLib +FILE_GUID =3D DA915B7F-EE08-4C1D-B3D0-DE7C52AB155A +VERSION_STRING =3D 1.0 +MODULE_TYPE =3D BASE +LIBRARY_CLASS =3D PchHdaLib + + +[LibraryClasses] +BaseLib +DebugLib +MemoryAllocationLib +BaseMemoryLib +PchInfoLib + + +[Packages] +MdePkg/MdePkg.dec +CoffeelakeSiliconPkg/SiPkg.dec + + +[Pcd] + gSiPkgTokenSpaceGuid.PcdAcpiDefaultOemId + gSiPkgTokenSpaceGuid.PcdAcpiDefaultOemTableId + gSiPkgTokenSpaceGuid.PcdAcpiDefaultOemRevision + gSiPkgTokenSpaceGuid.PcdAcpiDefaultCreatorId + gSiPkgTokenSpaceGuid.PcdAcpiDefaultCreatorRevision + + +[Sources] +PchHdaLib.c +PchHdaEndpoints.c +PchHdaNhltConfig.c diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxeGpio= NameBufferLib/GpioNameBufferDxe.c b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/= Library/Private/DxeGpioNameBufferLib/GpioNameBufferDxe.c new file mode 100644 index 0000000000..af53387faf --- /dev/null +++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxeGpioNameBuf= ferLib/GpioNameBufferDxe.c @@ -0,0 +1,20 @@ +/** @file + This file contains implementation of the GpioMemLib for DXE phase + + Copyright (c) 2019 Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +STATIC CHAR8 mGpioNameBuffer[GPIO_NAME_LENGTH_MAX]; + +CHAR8* +GpioGetStaticNameBuffer ( + VOID + ) +{ + return mGpioNameBuffer; +} + diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchH= daLib/PchHdaEndpoints.c b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Pr= ivate/DxePchHdaLib/PchHdaEndpoints.c new file mode 100644 index 0000000000..ea04512501 --- /dev/null +++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/P= chHdaEndpoints.c @@ -0,0 +1,333 @@ +/** @file + This file contains HD Audio NHLT Endpoints definitions + + Copyright (c) 2019 Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE Ch1_48kHz16bitFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 48000, + 96000, + 2, + 16, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {16}, + KSAUDIO_SPEAKER_MONO, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE Ch2_48kHz16bitFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 2, + 48000, + 192000, + 4, + 16, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {16}, + KSAUDIO_SPEAKER_STEREO, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE Ch2_48kHz24bitFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 2, + 48000, + 384000, + 8, + 32, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {24}, + KSAUDIO_SPEAKER_STEREO, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE Ch2_48kHz32bitFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 2, + 48000, + 384000, + 8, + 32, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {32}, + KSAUDIO_SPEAKER_STEREO, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE Ch4_48kHz16bitFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 4, + 48000, + 384000, + 8, + 16, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {16}, + KSAUDIO_SPEAKER_QUAD, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE Ch4_48kHz32bitFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 4, + 48000, + 384000, + 8, + 32, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {32}, + KSAUDIO_SPEAKER_QUAD, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE NarrowbandFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 8000, + 16000, + 2, + 16, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {16}, + KSAUDIO_SPEAKER_MONO, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE WidebandFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 1, + 16000, + 32000, + 2, + 16, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {16}, + KSAUDIO_SPEAKER_MONO, + KSDATAFORMAT_SUBTYPE_PCM +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST WAVEFORMATEXTENSIBLE A2dpFormat =3D +{ + { + WAVE_FORMAT_EXTENSIBLE, + 2, + 48000, + 384000, + 8, + 32, + sizeof (WAVEFORMATEXTENSIBLE) - sizeof (WAVEFORMATEX) + }, + {24}, + KSAUDIO_SPEAKER_STEREO, + KSDATAFORMAT_SUBTYPE_PCM +}; +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointDmicX1 =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkDmic, // LinkType + 0, // InstanceId + 0x8086, // HwVendorId + 0xae20, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceDmic, // DeviceType + 1, // Direction + 0, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointDmicX2 =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkDmic, // LinkType + 0, // InstanceId + 0x8086, // HwVendorId + 0xae20, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceDmic, // DeviceType + 1, // Direction + 0, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointDmicX4 =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkDmic, // LinkType + 0, // InstanceId + 0x8086, // HwVendorId + 0xae20, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceDmic, // DeviceType + 1, // Direction + 0, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointBtRender =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkSsp, // LinkType + 0, // InstanceId + 0x8086, // HwVendorId + 0xae30, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceBt, // DeviceType + 0, // Direction + 2, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointBtCapture =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkSsp, // LinkType + 0, // InstanceId + 0x8086, // HwVendorId + 0xae30, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceBt, // DeviceType + 1, // Direction + 2, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointI2sRender =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkSsp, // LinkType + 1, // InstanceId + 0x8086, // HwVendorId + 0xae34, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceI2s, // DeviceType + 0, // Direction + 0, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED +ENDPOINT_DESCRIPTOR HdaEndpointI2sCapture =3D { + 0, // EndpointDescriptorLength + HdaNhltLinkSsp, // LinkType + 1, // InstanceId + 0x8086, // HwVendorId + 0xae34, // HwDeviceId + 1, // HwRevisionId + 1, // HwSubsystemId + HdaNhltDeviceI2s, // DeviceType + 1, // Direction + 0, // VirtualBusId + { 0 }, // EndpointConfig + { 0 }, // FormatsConfig + { 0 } // DevicesInformation +}; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DmicX1Config[] =3D +{ + 0x00, // VirtualSlot + 0x00, // eIntcConfigTypeMicArray =3D 1 , eIntcConfigTypeGeneric =3D 0 +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicX1ConfigSize =3D sizeof (Dm= icX1Config); + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DmicX2Config[] =3D +{ + 0x00, // VirtualSlot + 0x01, // eIntcConfigTypeMicArray =3D 1 , eIntcConfigTypeGeneric =3D 0 + 0x0A // ArrayType +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicX2ConfigSize =3D sizeof (Dm= icX2Config); + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 DmicX4Config[] =3D +{ + 0x00, // VirtualSlot + 0x01, // eIntcConfigTypeMicArray =3D 1 , eIntcConfigTypeGeneric =3D 0 + 0x0D // ArrayType +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicX4ConfigSize =3D sizeof (Dm= icX4Config); + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 BtConfig[] =3D {0}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 BtConfigSize =3D 0; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 I2sRender1Config[] =3D {0}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 I2sRender1ConfigSize =3D 0; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 I2sRender2Config[] =3D {0x01}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 I2sRender2ConfigSize =3D sizeof= (I2sRender2Config); + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT8 I2sCaptureConfig[] =3D {0}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 I2sCaptureConfigSize =3D 0; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST DEVICE_INFO I2sRenderDeviceInfo =3D +{ + "INT34C2", // DeviceId + 0x00, // DeviceInstanceId + 0x01 // DevicePortId +}; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST DEVICE_INFO I2sCaptureDeviceInfo =3D +{ + "INT34C2", // DeviceId + 0x00, // DeviceInstanceId + 0x01 // DevicePortId +}; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 NhltConfiguration[] =3D { 0xEFB= EADDE }; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 NhltConfigurationSize =3D sizeo= f (NhltConfiguration); + diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchH= daLib/PchHdaLib.c b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/= DxePchHdaLib/PchHdaLib.c new file mode 100644 index 0000000000..a87509de1b --- /dev/null +++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/P= chHdaLib.c @@ -0,0 +1,886 @@ +/** @file + PCH HD Audio Library implementation. + + Copyright (c) 2019 Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include +#include +#include +#include +#include +#include + +/** + 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 g= iven index +**/ +ENDPOINT_DESCRIPTOR * +GetNhltEndpoint ( + IN CONST NHLT_ACPI_TABLE *NhltTable, + IN CONST UINT8 EndpointIndex + ) +{ + UINT8 i; + ENDPOINT_DESCRIPTOR *Endpoint; + Endpoint =3D (ENDPOINT_DESCRIPTOR*) (NhltTable->EndpointDescriptors); + + if (EndpointIndex > NhltTable->EndpointCount) { + return NULL; + } + + for (i =3D 0; i < EndpointIndex; i++) { + Endpoint =3D (ENDPOINT_DESCRIPTOR*) ((UINT8*) (Endpoint) + Endpoint->E= ndpointDescriptorLength); + } + + return Endpoint; +} + +/** + Returns pointer to Endpoint Specific Configuration SPECIFIC_CONFIG struc= ture. + + @param[in] *Endpoint Endpoint for which config address is retrieved + + @retval Pointer to SPECIFIC_CONFIG structure with endpo= int'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 =3D (FORMATS_CONFIG*) ((UINT8*) (&Endpoint->EndpointConfig) + + sizeof (Endpoint->EndpointConfig.Ca= pabilitiesSize) + + Endpoint->EndpointConfig.Capabiliti= esSize); + + 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 i= ndex +**/ +FORMAT_CONFIG * +GetNhltEndpointFormat ( + IN CONST ENDPOINT_DESCRIPTOR *Endpoint, + IN CONST UINT8 FormatIndex + ) +{ + UINT8 i; + UINT32 Length; + FORMATS_CONFIG *FormatsConfig; + FORMAT_CONFIG *Format; + + Length =3D 0; + FormatsConfig =3D GetNhltEndpointFormatsConfig (Endpoint); + Format =3D FormatsConfig->FormatsConfiguration; + + if (FormatIndex > FormatsConfig->FormatsCount) { + return NULL; + } + + for (i =3D 0; i < FormatIndex; i++) { + Length =3D sizeof (Format->Format) + Format->FormatConfiguration.Capab= ilitiesSize + + sizeof (Format->FormatConfiguration.CapabilitiesSize); + Format =3D (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 retri= eved + + @retval Pointer to DEVICES_INFO structure +**/ +DEVICES_INFO * +GetNhltEndpointDevicesInfo ( + IN CONST ENDPOINT_DESCRIPTOR *Endpoint + ) +{ + DEVICES_INFO *DevicesInfo; + FORMATS_CONFIG *FormatsConfig; + FORMAT_CONFIG *Format; + + FormatsConfig =3D GetNhltEndpointFormatsConfig (Endpoint); + Format =3D GetNhltEndpointFormat (Endpoint, FormatsConfig->FormatsCount); + DevicesInfo =3D (DEVICES_INFO*) ((UINT8*) Format); + + return DevicesInfo; +} + +/** + Returns pointer to Device Information DEVICES_INFO structure. + + @param[in] *Endpoint Endpoint for which Device Info address is ret= rieved + @param[in] DeviceInfoIndex Index of Device Info to be retrieved + + @retval Pointer to DEVICE_INFO structure with given i= ndex +**/ +DEVICE_INFO * +GetNhltEndpointDeviceInfo ( + IN CONST ENDPOINT_DESCRIPTOR *Endpoint, + IN CONST UINT8 DeviceInfoIndex + ) +{ + DEVICES_INFO *DevicesInfo; + DEVICE_INFO *DeviceInfo; + + DevicesInfo =3D GetNhltEndpointDevicesInfo (Endpoint); + DeviceInfo =3D DevicesInfo->DeviceInformation; + + if (DevicesInfo =3D=3D NULL) { + return NULL; + } + + if (DeviceInfoIndex > DevicesInfo->DeviceInfoCount) { + return NULL; + } + + DeviceInfo =3D (DEVICE_INFO*) ((UINT8*) (DeviceInfo) + sizeof (*DeviceIn= fo) * 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 =3D GetNhltEndpoint (NhltTable, (NhltTable->EndpointCount)); + OedConfig =3D (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 i; + + DEBUG ((DEBUG_INFO, "------------------------------- FORMAT ------------= -------------------\n")); + DEBUG ((DEBUG_INFO, " Format->Format.Format.wFormatTag =3D 0x%x\n",= Format->Format.Format.wFormatTag)); + DEBUG ((DEBUG_INFO, " Format->Format.Format.nChannels =3D %d\n", F= ormat->Format.Format.nChannels)); + DEBUG ((DEBUG_INFO, " Format->Format.Format.nSamplesPerSec =3D %d\n", F= ormat->Format.Format.nSamplesPerSec)); + DEBUG ((DEBUG_INFO, " Format->Format.Format.nAvgBytesPerSec =3D %d\n", F= ormat->Format.Format.nAvgBytesPerSec)); + DEBUG ((DEBUG_INFO, " Format->Format.Format.nBlockAlign =3D %d\n", F= ormat->Format.Format.nBlockAlign)); + DEBUG ((DEBUG_INFO, " Format->Format.Format.wBitsPerSample =3D %d\n", F= ormat->Format.Format.wBitsPerSample)); + DEBUG ((DEBUG_INFO, " Format->Format.Format.cbSize =3D %d\n", F= ormat->Format.Format.cbSize)); + DEBUG ((DEBUG_INFO, " Format->Format.Samples =3D %d\n", F= ormat->Format.Samples)); + DEBUG ((DEBUG_INFO, " Format->Format.dwChannelMask =3D 0x%x\n",= Format->Format.dwChannelMask)); + DEBUG ((DEBUG_INFO, " Format->Format.SubFormat =3D %g\n", F= ormat->Format.SubFormat)); + + + DEBUG ((DEBUG_INFO, " Format->FormatConfiguration.CapabilitiesSize =3D %= d B\n", Format->FormatConfiguration.CapabilitiesSize)); + DEBUG ((DEBUG_VERBOSE, " Format->FormatConfiguration.Capabilities:")); + for (i =3D 0; i < ( Format->FormatConfiguration.CapabilitiesSize ) ; i+= +) { + if (i % 16 =3D=3D 0) { + DEBUG ((DEBUG_VERBOSE, "\n")); + } + DEBUG ((DEBUG_VERBOSE, "0x%02x, ", Format->FormatConfiguration.Capabil= ities[i])); + } + 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 =3D %a\n", DeviceIn= fo->DeviceId)); + DEBUG ((DEBUG_INFO, " DeviceInfo->DeviceInstanceId =3D 0x%x\n", DeviceIn= fo->DeviceInstanceId)); + DEBUG ((DEBUG_INFO, " DeviceInfo->DevicePortId =3D 0x%x\n", DeviceIn= fo->DevicePortId)); +} + +/** + Prints Endpoint configuration. + + @param[in] *Endpoint Endpoint to be printed + + @retval None +**/ +VOID +NhltEndpointDump ( + IN CONST ENDPOINT_DESCRIPTOR *Endpoint + ) +{ + UINT8 i; + FORMATS_CONFIG *FormatsConfigs; + FORMAT_CONFIG *Format; + DEVICES_INFO *DevicesInfo; + DEVICE_INFO *DeviceInfo; + + DEBUG ((DEBUG_INFO, "------------------------------ ENDPOINT -----------= -------------------\n")); + DEBUG ((DEBUG_INFO, " Endpoint->DeviceDescriptorLength =3D %d B\n", Endp= oint->EndpointDescriptorLength)); + DEBUG ((DEBUG_INFO, " Endpoint->LinkType =3D 0x%x\n", Endp= oint->LinkType)); + DEBUG ((DEBUG_INFO, " Endpoint->InstanceId =3D 0x%x\n", Endp= oint->InstanceId)); + DEBUG ((DEBUG_INFO, " Endpoint->HwVendorId =3D 0x%x\n", Endp= oint->HwVendorId)); + DEBUG ((DEBUG_INFO, " Endpoint->HwDeviceId =3D 0x%x\n", Endp= oint->HwDeviceId)); + DEBUG ((DEBUG_INFO, " Endpoint->HwRevisionId =3D 0x%x\n", Endp= oint->HwRevisionId)); + DEBUG ((DEBUG_INFO, " Endpoint->HwSubsystemId =3D 0x%x\n", Endp= oint->HwSubsystemId)); + DEBUG ((DEBUG_INFO, " Endpoint->DeviceType =3D 0x%x\n", Endp= oint->DeviceType)); + DEBUG ((DEBUG_INFO, " Endpoint->Direction =3D 0x%x\n", Endp= oint->Direction)); + DEBUG ((DEBUG_INFO, " Endpoint->VirtualBusId =3D 0x%x\n", Endp= oint->VirtualBusId)); + + DEBUG ((DEBUG_INFO, " Endpoint->EndpointConfig.CapabilitiesSize =3D %d B= \n", Endpoint->EndpointConfig.CapabilitiesSize)); + DEBUG ((DEBUG_VERBOSE, " Endpoint->EndpointConfig.Capabilities:")); + for (i =3D 0; i < (Endpoint->EndpointConfig.CapabilitiesSize ) ; i++) { + if (i % 16 =3D=3D 0) DEBUG ((DEBUG_VERBOSE, "\n")); + DEBUG ((DEBUG_VERBOSE, "0x%02x, ", Endpoint->EndpointConfig.Capabiliti= es[i])); + } + + FormatsConfigs =3D GetNhltEndpointFormatsConfig (Endpoint); + + DEBUG ((DEBUG_INFO, "\n")); + DEBUG ((DEBUG_INFO, " Endpoint->FormatsConfig.FormatsCount =3D %d\n", Fo= rmatsConfigs->FormatsCount)); + for (i =3D 0; i < FormatsConfigs->FormatsCount; i++) { + Format =3D GetNhltEndpointFormat (Endpoint, i); + if (Format !=3D NULL) { + NhltFormatDump (Format); + } + } + + DevicesInfo =3D GetNhltEndpointDevicesInfo (Endpoint); + if (DevicesInfo !=3D NULL) { + DEBUG ((DEBUG_INFO, "\n")); + DEBUG ((DEBUG_INFO, " Endpoint->DevicesInfo.DeviceInfoCount =3D %d\n",= DevicesInfo->DeviceInfoCount)); + for (i =3D 0; i < DevicesInfo->DeviceInfoCount; i++) { + DeviceInfo =3D GetNhltEndpointDeviceInfo (Endpoint, i); + if (DeviceInfo !=3D 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 i; + + DEBUG ((DEBUG_INFO, "-------------------------- OED CONFIGURATION ------= -------------------\n")); + DEBUG ((DEBUG_INFO, " OedConfig->CapabilitiesSize =3D %d B\n", OedConfig= ->CapabilitiesSize)); + DEBUG ((DEBUG_VERBOSE, " OedConfig->Capabilities:")); + for (i =3D 0; i < (OedConfig->CapabilitiesSize) ; i++) { + if (i % 16 =3D=3D 0) DEBUG ((DEBUG_VERBOSE, "\n")); + DEBUG ((DEBUG_VERBOSE, "0x%02x, ", OedConfig->Capabilities[i])); + } + + DEBUG ((DEBUG_VERBOSE, "\n")); +} + +/** + Prints NHLT (Non HDA-Link Table) to be exposed via ACPI (aka. OED (Offlo= ad 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 i; + + DEBUG ((DEBUG_INFO, "\n")); + DEBUG ((DEBUG_INFO, "--- NHLT ACPI Table Dump [OED (Offload Engine Drive= r) Configuration] ---\n")); + + DEBUG ((DEBUG_INFO, "sizeof NHLT_ACPI_TABLE =3D %d B\n", sizeof (NHLT_AC= PI_TABLE))); + DEBUG ((DEBUG_INFO, "sizeof EFI_ACPI_DESCRIPTION_HEADER =3D %d B\n", siz= eof (EFI_ACPI_DESCRIPTION_HEADER))); + DEBUG ((DEBUG_INFO, "sizeof ENDPOINT_DESCRIPTOR =3D %d B\n", sizeof (END= POINT_DESCRIPTOR))); + DEBUG ((DEBUG_INFO, "sizeof SPECIFIC_CONFIG =3D %d B\n", sizeof (SPECIFI= C_CONFIG))); + DEBUG ((DEBUG_INFO, "sizeof FORMATS_CONFIG =3D %d B\n", sizeof (FORMATS_= CONFIG))); + DEBUG ((DEBUG_INFO, "sizeof FORMAT_CONFIG =3D %d B\n", sizeof (FORMAT_CO= NFIG))); + DEBUG ((DEBUG_INFO, "sizeof WAVEFORMATEXTENSIBLE =3D %d B\n", sizeof (WA= VEFORMATEXTENSIBLE))); + DEBUG ((DEBUG_INFO, "sizeof DEVICES_INFO =3D %d B\n", sizeof (DEVICES_IN= FO))); + DEBUG ((DEBUG_INFO, "sizeof DEVICE_INFO =3D %d B\n", sizeof (DEVICE_INFO= ))); + + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Signature =3D 0x%08x\= n", NhltTable->Header.Signature)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Length =3D 0x%08x\= n", NhltTable->Header.Length)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Revision =3D 0x%02x\= n", NhltTable->Header.Revision)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.Checksum =3D 0x%02x\= n", NhltTable->Header.Checksum)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.OemId =3D %a\n", = NhltTable->Header.OemId)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.OemTableId =3D 0x%lx\n= ", NhltTable->Header.OemTableId)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.OemRevision =3D 0x%08x\= n", NhltTable->Header.OemRevision)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.CreatorId =3D 0x%08x\= n", NhltTable->Header.CreatorId)); + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE Header.CreatorRevision =3D 0x%08x\= n", NhltTable->Header.CreatorRevision)); + DEBUG ((DEBUG_INFO, "\n")); + + DEBUG ((DEBUG_INFO, " NHLT_ACPI_TABLE EndpointCount =3D %d\n", NhltTable= ->EndpointCount)); + for (i =3D 0; i < NhltTable->EndpointCount; i++) { + NhltEndpointDump (GetNhltEndpoint (NhltTable, i)); + } + + NhltOedConfigDump (GetNhltOedConfig (NhltTable)); + DEBUG ((DEBUG_INFO, "---------------------------------------------------= -------------------\n")); + + DEBUG_CODE_END (); +} + +/** + Constructs FORMATS_CONFIGS structure based on given formats list. + + @param[in][out] *Endpoint Endpoint for which format structures are c= reated + @param[in] FormatBitmask Bitmask of formats supported for given end= point + + @retval Size of created FORMATS_CONFIGS structure +**/ +UINT32 +NhltFormatsConstructor ( + IN OUT ENDPOINT_DESCRIPTOR *Endpoint, + IN CONST UINT32 FormatsBitmask + ) +{ + FORMATS_CONFIG *FormatsConfig; + FORMAT_CONFIG *Format; + UINT8 FormatIndex; + UINT32 FormatsConfigLength; + + DEBUG ((DEBUG_INFO, "NhltFormatsConstructor() Start, FormatsBitmask =3D = 0x%08x\n", FormatsBitmask)); + + FormatsConfig =3D NULL; + FormatIndex =3D 0; + FormatsConfigLength =3D 0; + + if (!FormatsBitmask) { + DEBUG ((DEBUG_WARN, "No supported format found!\n")); + return 0; + } + + FormatsConfig =3D GetNhltEndpointFormatsConfig (Endpoint); + FormatsConfig->FormatsCount =3D 0; + + if (FormatsBitmask & B_HDA_DMIC_2CH_48KHZ_16BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_DMIC_2CH_48KHZ_16BIT_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch2_48kHz16bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + Format->FormatConfiguration.CapabilitiesSize =3D DmicStereo16BitForm= atConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, DmicStereo16BitFo= rmatConfig, DmicStereo16BitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_DMIC_2CH_48KHZ_32BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_DMIC_2CH_48KHZ_32BIT_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch2_48kHz32bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D DmicStereo32BitForm= atConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, DmicStereo32BitFo= rmatConfig, DmicStereo32BitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_DMIC_4CH_48KHZ_16BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_DMIC_4CH_48KHZ_16BIT_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch4_48kHz16bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + Format->FormatConfiguration.CapabilitiesSize =3D DmicQuad16BitFormat= ConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, DmicQuad16BitForm= atConfig, DmicQuad16BitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_DMIC_4CH_48KHZ_32BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_DMIC_4CH_48KHZ_32BIT_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch4_48kHz32bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D DmicQuad32BitFormat= ConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, DmicQuad32BitForm= atConfig, DmicQuad32BitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_DMIC_1CH_48KHZ_16BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_DMIC_1CH_48KHZ_16BIT_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch1_48kHz16bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D DmicMono16BitFormat= ConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, DmicMono16BitForm= atConfig, DmicMono16BitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_BT_NARROWBAND_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_BT_NARROWBAND_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &NarrowbandFormat, sizeof (WAVEFORMATEXT= ENSIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D BtFormatConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, BtFormatConfig, B= tFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_BT_WIDEBAND_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_BT_WIDEBAND_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &WidebandFormat, sizeof (WAVEFORMATEXTEN= SIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D BtFormatConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, BtFormatConfig, B= tFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_BT_A2DP_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_BT_A2DP_FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &A2dpFormat, sizeof (WAVEFORMATEXTENSIBL= E)); + + Format->FormatConfiguration.CapabilitiesSize =3D BtFormatConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, BtFormatConfig, B= tFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_I2S_RTK274_RENDER_4CH_48KHZ_24BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_I2S_RTK274_RENDER_4CH_48KHZ_24BIT_F= ORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch2_48kHz24bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D I2sRtk274Render4ch4= 8kHz24bitFormatConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, I2sRtk274Render4c= h48kHz24bitFormatConfig, I2sRtk274Render4ch48kHz24bitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + if (FormatsBitmask & B_HDA_I2S_RTK274_CAPTURE_4CH_48KHZ_24BIT_FORMAT) { + DEBUG ((DEBUG_INFO, "Format: B_HDA_I2S_RTK274_CAPTURE_4CH_48KHZ_24BIT_= FORMAT\n")); + + Format =3D GetNhltEndpointFormat (Endpoint, FormatIndex++); + if (Format !=3D NULL) { + CopyMem (&(Format->Format), &Ch2_48kHz24bitFormat, sizeof (WAVEFORMA= TEXTENSIBLE)); + + Format->FormatConfiguration.CapabilitiesSize =3D I2sRtk274Capture4ch= 48kHz24bitFormatConfigSize; + CopyMem (Format->FormatConfiguration.Capabilities, I2sRtk274Capture4= ch48kHz24bitFormatConfig, I2sRtk274Capture4ch48kHz24bitFormatConfigSize); + + FormatsConfigLength +=3D sizeof (*Format) + - sizeof (Format->FormatConfiguration.Capabilities) + + Format->FormatConfiguration.CapabilitiesSize; + FormatsConfig->FormatsCount++; + } + } + + DEBUG ((DEBUG_INFO, "NhltFormatsConstructor() End, FormatsCount =3D %d, = FormatsConfigLength =3D %d B\n", FormatsConfig->FormatsCount, FormatsConfig= Length)); + return FormatsConfigLength; +} + +/** + Constructs DEVICES_INFO structure based on given device info list. + + @param[in][out] *Endpoint Endpoint for which device info structures= are created + @param[in] DevicesBitmask Bitmask of devices supported for given en= dpoint + + @retval Size of created DEVICES_INFO structure +**/ +UINT32 +NhltDevicesInfoConstructor ( + IN OUT ENDPOINT_DESCRIPTOR *Endpoint, + IN CONST UINT32 DevicesBitmask + ) +{ + DEVICES_INFO *DevicesInfo; + DEVICE_INFO *DeviceInfo; + UINT8 DeviceIndex; + UINT32 DevicesInfoLength; + + DEBUG ((DEBUG_INFO, "NhltDevicesInfoConstructor() Start, DevicesBitmask = =3D 0x%08x\n", DevicesBitmask)); + + DevicesInfo =3D NULL; + DeviceIndex =3D 0; + DevicesInfoLength =3D 0; + + if (!DevicesBitmask) { + return 0; + } + + DevicesInfo =3D GetNhltEndpointDevicesInfo (Endpoint); + if (DevicesInfo =3D=3D NULL) { + return 0; + } + DevicesInfo->DeviceInfoCount =3D 0; + + if (DevicesBitmask & B_HDA_I2S_RENDER_DEVICE_INFO) { + DEBUG ((DEBUG_INFO, "DeviceInfo: B_HDA_I2S_RENDER_DEVICE_INFO\n")); + + DeviceInfo =3D GetNhltEndpointDeviceInfo (Endpoint, DeviceIndex++); + if (DeviceInfo !=3D NULL) { + CopyMem (DeviceInfo, &I2sRenderDeviceInfo, sizeof (DEVICE_INFO)); + DevicesInfo->DeviceInfoCount++; + } + } else if (DevicesBitmask & B_HDA_I2S_CAPTURE_DEVICE_INFO) { + DEBUG ((DEBUG_INFO, "DeviceInfo: B_HDA_I2S_CAPTURE_DEVICE_INFO\n")); + + DeviceInfo =3D GetNhltEndpointDeviceInfo (Endpoint, DeviceIndex++); + if (DeviceInfo !=3D NULL) { + CopyMem (DeviceInfo, &I2sCaptureDeviceInfo, sizeof (DEVICE_INFO)); + DevicesInfo->DeviceInfoCount++; + } + } + + DevicesInfoLength =3D DevicesInfo->DeviceInfoCount * sizeof (DEVICE_INFO= ); + + DEBUG ((DEBUG_INFO, "NhltDevicesInfoConstructor() End, DevicesCount =3D = %d, DevicesInfoLength =3D %d B\n", DevicesInfo->DeviceInfoCount, DevicesInf= oLength)); + return DevicesInfoLength; +} + +/** + Constructs NHLT_ENDPOINT structure based on given endpoint type. + + @param[in][out] *NhltTable NHLT table for which endpoint is= created + @param[in] EndpointType Type of endpoint to be created + @param[in] EndpointFormatsBitmask Bitmask of formats supported by = endpoint + @param[in] EndpointDevicesBitmask Bitmask of device info for endpo= int + @param[in] EndpointIndex Endpoint index in NHLT table + + @retval Size of created NHLT_ENDPOINT structure +**/ +UINT32 +NhltEndpointConstructor ( + IN OUT NHLT_ACPI_TABLE *NhltTable, + IN NHLT_ENDPOINT EndpointType, + IN UINT32 EndpointFormatsBitmask, + IN UINT32 EndpointDevicesBitmask, + IN UINT8 EndpointIndex + ) +{ + + ENDPOINT_DESCRIPTOR *Endpoint; + SPECIFIC_CONFIG *EndpointConfig; + CONST UINT8 *EndpointConfigBuffer; + UINT32 EndpointConfigBufferSize; + UINT32 EndpointDescriptorLength; + + DEBUG ((DEBUG_INFO, "NhltEndpointConstructor() Start, EndpointIndex =3D = %d\n", EndpointIndex)); + + EndpointDescriptorLength =3D 0; + Endpoint =3D GetNhltEndpoint (NhltTable, EndpointIndex); + if (Endpoint =3D=3D NULL) { + return 0; + } + EndpointDescriptorLength =3D sizeof (ENDPOINT_DESCRIPTOR) + - sizeof (SPECIFIC_CONFIG) + - sizeof (FORMAT_CONFIG) + - sizeof (DEVICE_INFO); + + switch (EndpointType) { + case HdaDmicX1: + DEBUG ((DEBUG_INFO, "Endpoint: HdaDmicX1\n")); + CopyMem (Endpoint, &HdaEndpointDmicX1, sizeof (ENDPOINT_DESCRIPTOR)); + EndpointConfigBuffer =3D DmicX1Config; + EndpointConfigBufferSize =3D DmicX1ConfigSize; + break; + case HdaDmicX2: + DEBUG ((DEBUG_INFO, "Endpoint: HdaDmicX2\n")); + CopyMem (Endpoint, &HdaEndpointDmicX2, sizeof (ENDPOINT_DESCRIPTOR)); + EndpointConfigBuffer =3D DmicX2Config; + EndpointConfigBufferSize =3D DmicX2ConfigSize; + break; + case HdaDmicX4: + DEBUG ((DEBUG_INFO, "Endpoint: HdaDmicX4\n")); + CopyMem (Endpoint, &HdaEndpointDmicX4, sizeof (ENDPOINT_DESCRIPTOR)); + EndpointConfigBuffer =3D DmicX4Config; + EndpointConfigBufferSize =3D DmicX4ConfigSize; + break; + case HdaBtRender: + DEBUG ((DEBUG_INFO, "Endpoint: HdaBtRender\n")); + CopyMem (Endpoint, &HdaEndpointBtRender, sizeof (ENDPOINT_DESCRIPTOR= )); + if (IsPchH ()) { + Endpoint->VirtualBusId =3D 0; + } + + EndpointConfigBuffer =3D BtConfig; + EndpointConfigBufferSize =3D BtConfigSize; + break; + case HdaBtCapture: + DEBUG ((DEBUG_INFO, "Endpoint: HdaBtCapture\n")); + CopyMem (Endpoint, &HdaEndpointBtCapture, sizeof (ENDPOINT_DESCRIPTO= R)); + if (IsPchH ()) { + Endpoint->VirtualBusId =3D 0; + } + + EndpointConfigBuffer =3D BtConfig; + EndpointConfigBufferSize =3D BtConfigSize; + break; + case HdaI2sRender1: + DEBUG ((DEBUG_INFO, "Endpoint: HdaI2sRender1\n")); + CopyMem (Endpoint, &HdaEndpointI2sRender, sizeof (ENDPOINT_DESCRIPTO= R)); + EndpointConfigBuffer =3D I2sRender1Config; + EndpointConfigBufferSize =3D I2sRender1ConfigSize; + break; + case HdaI2sRender2: + DEBUG ((DEBUG_INFO, "Endpoint: HdaI2sRender2\n")); + CopyMem (Endpoint, &HdaEndpointI2sRender, sizeof (ENDPOINT_DESCRIPTO= R)); + EndpointConfigBuffer =3D I2sRender2Config; + EndpointConfigBufferSize =3D I2sRender2ConfigSize; + break; + case HdaI2sCapture: + DEBUG ((DEBUG_INFO, "Endpoint: HdaI2sCapture\n")); + CopyMem (Endpoint, &HdaEndpointI2sCapture, sizeof (ENDPOINT_DESCRIPT= OR)); + EndpointConfigBuffer =3D I2sCaptureConfig; + EndpointConfigBufferSize =3D I2sCaptureConfigSize; + break; + default: + DEBUG ((DEBUG_WARN, "Unknown endpoint!\n")); + return 0; + } + + EndpointConfig =3D GetNhltEndpointDeviceCapabilities (Endpoint); + EndpointConfig->CapabilitiesSize =3D EndpointConfigBufferSize; + CopyMem (EndpointConfig->Capabilities, EndpointConfigBuffer, EndpointCon= fig->CapabilitiesSize); + EndpointDescriptorLength +=3D sizeof (*EndpointConfig) + - sizeof (EndpointConfig->Capabilities) + + EndpointConfig->CapabilitiesSize; + + EndpointDescriptorLength +=3D NhltFormatsConstructor (Endpoint, Endpoint= FormatsBitmask); + EndpointDescriptorLength +=3D NhltDevicesInfoConstructor (Endpoint, Endp= ointDevicesBitmask); + + Endpoint->EndpointDescriptorLength =3D EndpointDescriptorLength; + + DEBUG ((DEBUG_INFO, "NhltEndpointConstructor() End, EndpointDescriptorLe= ngth =3D %d B\n", Endpoint->EndpointDescriptorLength)); + return Endpoint->EndpointDescriptorLength; +} + +/** + Constructs SPECIFIC_CONFIG structure for OED configuration. + + @param[in][out] *NhltTable NHLT table for which OED config is created + + @retval Size of created SPECIFIC_CONFIG structure +**/ +UINT32 +NhltOedConfigConstructor ( + IN OUT NHLT_ACPI_TABLE *NhltTable + ) +{ + SPECIFIC_CONFIG *OedConfig; + UINT32 OedConfigLength; + + OedConfigLength =3D 0; + OedConfig =3D GetNhltOedConfig (NhltTable); + + OedConfig->CapabilitiesSize =3D NhltConfigurationSize; + CopyMem (OedConfig->Capabilities, (UINT8*) NhltConfiguration, NhltConfig= urationSize); + + OedConfigLength =3D sizeof (*OedConfig) + - sizeof (OedConfig->Capabilities) + + OedConfig->CapabilitiesSize; + + return OedConfigLength; +} + +/** + Constructs NHLT_ACPI_TABLE structure based on given Endpoints list. + + @param[in] *EndpointTable List of endpoints for NHLT + @param[in][out] **NhltTable NHLT table to be created + @param[in][out] *NhltTableSize Size of created NHLT table + + @retval EFI_SUCCESS NHLT created successfully + @retval EFI_BAD_BUFFER_SIZE Not enough resources to allocate NHLT +**/ +EFI_STATUS +NhltConstructor ( + IN PCH_HDA_NHLT_ENDPOINTS *EndpointTable, + IN OUT NHLT_ACPI_TABLE **NhltTable, + IN OUT UINT32 *NhltTableSize + ) +{ + EFI_STATUS Status; + UINT8 Index; + UINT32 TableSize; + UINT32 EndpointDescriptorsLength; + UINT32 OedConfigLength; + NHLT_ACPI_TABLE *Table; + + + Status =3D EFI_SUCCESS; + TableSize =3D PCH_HDA_NHLT_TABLE_SIZE; + EndpointDescriptorsLength =3D 0; + OedConfigLength =3D 0; + + Table =3D AllocateZeroPool (TableSize); + + if (Table =3D=3D NULL) { + return EFI_BAD_BUFFER_SIZE; + } + + Table->EndpointCount =3D 0; + + for (Index =3D 0; Index < HdaEndpointMax; Index++) { + if (EndpointTable[Index].Enable =3D=3D TRUE) { + EndpointDescriptorsLength +=3D NhltEndpointConstructor (Table, + EndpointTable[Index].EndpointType, + EndpointTable[Index].EndpointFormatsB= itmask, + EndpointTable[Index].EndpointDevicesB= itmask, + Table->EndpointCount++); + } + } + DEBUG ((DEBUG_INFO, "NhltConstructor: EndpointCount =3D %d, All Endpoint= DescriptorsLength =3D %d B\n", Table->EndpointCount, EndpointDescriptorsLen= gth)); + + OedConfigLength =3D NhltOedConfigConstructor (Table); + DEBUG ((DEBUG_INFO, "NhltConstructor: OedConfigLength =3D %d B\n", OedCo= nfigLength)); + + TableSize =3D EndpointDescriptorsLength + OedConfigLength; + + *NhltTableSize =3D TableSize; + *NhltTable =3D Table; + + return Status; +} + +/** + Constructs EFI_ACPI_DESCRIPTION_HEADER structure for NHLT table. + + @param[in][out] *NhltTable NHLT table for which header will b= e created + @param[in] NhltTableSize Size of NHLT table + + @retval None +**/ +VOID +NhltAcpiHeaderConstructor ( + IN OUT NHLT_ACPI_TABLE *NhltTable, + IN UINT32 NhltTableSize + ) +{ + DEBUG ((DEBUG_INFO, "NhltAcpiHeaderConstructor() Start\n")); + + // Header + NhltTable->Header.Signature =3D NHLT_ACPI_TABLE_SIGNATURE; + NhltTable->Header.Length =3D (UINT32) (NhltTableSize + sizeof (NHLT_ACPI= _TABLE) - sizeof (ENDPOINT_DESCRIPTOR) - sizeof (SPECIFIC_CONFIG)); + NhltTable->Header.Revision =3D 0x0; + NhltTable->Header.Checksum =3D 0x0; + + CopyMem (NhltTable->Header.OemId, PcdGetPtr (PcdAcpiDefaultOemId), sizeo= f (NhltTable->Header.OemId)); + NhltTable->Header.OemTableId =3D PcdGet64 (PcdAcpiDefaultOemTableId= ); + NhltTable->Header.OemRevision =3D PcdGet32 (PcdAcpiDefaultOemRevisio= n); + NhltTable->Header.CreatorId =3D PcdGet32 (PcdAcpiDefaultCreatorId); + NhltTable->Header.CreatorRevision =3D PcdGet32 (PcdAcpiDefaultCreatorRev= ision); + + DEBUG ((DEBUG_INFO, "NhltAcpiHeaderConstructor(), NhltAcpiTable->Header.= Length =3D %d B\n", NhltTable->Header.Length)); +} + diff --git a/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchH= daLib/PchHdaNhltConfig.c b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/P= rivate/DxePchHdaLib/PchHdaNhltConfig.c new file mode 100644 index 0000000000..301b1f8d10 --- /dev/null +++ b/Silicon/Intel/CoffeelakeSiliconPkg/Pch/Library/Private/DxePchHdaLib/P= chHdaNhltConfig.c @@ -0,0 +1,439 @@ +/** @file + This file contains HD Audio NHLT Configuration BLOBs + + Copyright (c) 2019 Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +// +// CFL NHLT Configuration BLOBs +// + +// +// DMIC Configuration BLOBs +// +// DMIC Config 2 channels, 16 bits, 2.4Mhz BCLK +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 DmicStereo16BitFormatConfig[] =3D +{ + 0x00000001,0xffff3210,0xffffff10,0xffffff32,0xffffffff, + 3, + 3, + 0x00300003, + 0x00300003, + 0x3, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicStereo16BitFormatConfigSize= =3D sizeof (DmicStereo16BitFormatConfig); + +// DMIC Config 2 channels, 32 bits, 2.4Mhz BCLK +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 DmicStereo32BitFormatConfig[] =3D +{ + 0x00000001,0xffff3210,0xffffff10,0xffffff32,0xffffffff, + 3, + 3, + 0x00380003, + 0x00380003, + 0x3, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicStereo32BitFormatConfigSize= =3D sizeof (DmicStereo32BitFormatConfig); + +// DMIC Config 4 channels, 16 bits, 2.4Mhz BCLK +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 DmicQuad16BitFormatConfig[] =3D +{ + 0x00000001,0xffff3210,0xffffff10,0xffffff32,0xffffffff, + 3, + 3, + 0x00320003, + 0x00320003, + 0x3, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicQuad16BitFormatConfigSize = =3D sizeof (DmicQuad16BitFormatConfig); + +// DMIC Config 4 channels, 32 bits, 2.4Mhz BCLK +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 DmicQuad32BitFormatConfig[] =3D +{ + 0x00000001,0xffff3210,0xffffff10,0xffffff32,0xffffffff, + 3, + 3, + 0x003A0003, + 0x003A0003, + 0x3, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e, + 0x1, 0x09001303, 0x0, 0x0303, 0, 0, 0, 0, + 0x11, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x11, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicQuad32BitFormatConfigSize = =3D sizeof (DmicQuad32BitFormatConfig); + + +// DMIC Config 1 channel, 16 bits +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 DmicMono16BitFormatConfig[] =3D +{ + 0x00000000, + 0xfffffff0,0xfffffff0,0xfffffff0,0xfffffff0, + 3, + 3, + 0x00300003, + 0x00300003, + 0x3, + 0x0, 0x09001303, 0x0, 0x0301, 0, 0, 0, 0, + 0x10, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x10, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e, + 0x0, 0x09001303, 0x0, 0x0301, 0, 0, 0, 0, + 0x10, 0x402a0, 0, 0, 0, 0, 0, 0, + 0x10, 0xe03ae, 0, 0, 0, 0, 0, 0, + 0x00008, 0xfffae, 0xfff12, 0xffdfb, 0xffc61, 0xffa5a, 0xff82b, 0xff641, = 0xff520, 0xff544, 0xff6f4, 0xffa25, 0xffe65, + 0x002e0, 0x0068f, 0x00876, 0x007f1, 0x004f5, 0x0002a, 0xffad4, 0xff68a, = 0xff4bf, 0xff64f, 0xffb20, + 0x0020f, 0x00929, 0x00e2d, 0x00f40, 0x00b92, 0x003bf, 0xff9cd, 0xff0b0, = 0xfeb6e, 0xfec2a, 0xff351, + 0xfff4f, 0x00ccd, 0x0179d, 0x01bfc, 0x017d7, 0x00ba3, 0xffa7e, 0xfe96f, = 0xfddf5, 0xfdc4d, 0xfe5ee, + 0xff8ce, 0x00fb7, 0x023a8, 0x02df5, 0x02a74, 0x01910, 0xffe2c, 0xfe19c, = 0xfcc64, 0xfc5ee, 0xfd17e, + 0xfecd4, 0x01071, 0x03198, 0x0457e, 0x044c9, 0x02e24, 0x00728, 0xfdb0e, = 0xfb781, 0xfa86b, 0xfb408, + 0xfd884, 0x00c02, 0x03f37, 0x061e8, 0x06807, 0x04dc5, 0x01954, 0xfd98c, = 0xfa1c8, 0xf840f, 0xf8b52, + 0xfb78c, 0xffd23, 0x047db, 0x080b1, 0x094e3, 0x07c08, 0x03b41, 0xfe45e, = 0xf9101, 0xf5b1e, 0xf54f4, + 0xf8307, 0xfda0b, 0x0418f, 0x09ad0, 0x0c9d6, 0x0be16, 0x0780b, 0x009dd, = 0xf92ba, 0xf3606, 0xf10ed, + 0xf315e, 0xf9135, 0x0172c, 0x09d83, 0x0fc9e, 0x11695, 0x0e05b, 0x065bf, = 0xfc6ed, 0xf2ff4, 0xecc96, + 0xebbc9, 0xf0668, 0xf9be7, 0x05601, 0x1029e, 0x17140, 0x18065, 0x12728, = 0x07874, 0xf9edb, 0xed202, + 0xe486c, 0xe294d, 0xe820f, 0xf424a, 0x03f29, 0x13d68, 0x1ff61, 0x253b2, = 0x220fa, 0x16be1, 0x05638, + 0xf1798, 0xdf165, 0xd211a, 0xcd3f9, 0xd1eb5, 0xdfa89, 0xf4802, 0x0d656, = 0x26d63, 0x3d808, 0x4ecc3, + 0x59315, 0x5c520, 0x58db6, 0x503d6, 0x444dd, 0x36ecb, 0x29b9a, 0x1de5d, = 0x14234, 0x0cae0, 0x07669, + 0x03f40, 0x01e4e, 0x00c95, 0x0043b, 0x000f9,0xff961, 0x00823, 0x0084f, 0= x00a39, 0x00d21, 0x010a8, 0x0149a, 0x018cc, 0x01d15, 0x0214d, 0x02543, 0x02= 8c8, 0x02baa, + 0x02db8, 0x02ec6, 0x02eac, 0x02d4c, 0x02a90, 0x02672, 0x020f9, 0x01a3b, = 0x0125c, 0x00994, 0x00025, + 0xff662, 0xfeca3, 0xfe34c, 0xfdabe, 0xfd364, 0xfcd94, 0xfc9a4, 0xfc7dd, = 0xfc86b, 0xfcb6e, 0xfd0e6, + 0xfd8bb, 0xfe2b9, 0xfee8f, 0xffbd5, 0x00a0c, 0x018a3, 0x026fc, 0x03474, = 0x04065, 0x04a36, 0x0515a, + 0x0555a, 0x055df, 0x052b2, 0x04bc3, 0x0412c, 0x03332, 0x02242, 0x00ef3, = 0xff9fb, 0xfe430, 0xfce78, + 0xfb9c6, 0xfa70f, 0xf973a, 0xf8b1e, 0xf836e, 0xf80b7, 0xf8355, 0xf8b6e, = 0xf98ea, 0xfab78, 0xfc288, + 0xfdd52, 0xffadf, 0x01a0a, 0x03992, 0x05823, 0x07465, 0x08d0c, 0x0a0e3, = 0x0aedc, 0x0b61f, 0x0b614, + 0x0ae6b, 0x09f23, 0x0888d, 0x06b4c, 0x04850, 0x020d3, 0xff647, 0xfca4f, = 0xf9eae, 0xf7533, 0xf4fa8, + 0xf2fc0, 0xf1702, 0xf06ba, 0xeffe6, 0xf032d, 0xf10d3, 0xf28b4, 0xf4a42, = 0xf7486, 0xfa62a, 0xfdd81, + 0x01896, 0x0553d, 0x09128, 0x0c9fe, 0x0fd6f, 0x1294e, 0x14ba5, 0x162cb, = 0x16d75, 0x16ac4, 0x15a52, + 0x13c38, 0x1110d, 0x0d9e9, 0x09856, 0x04e4a, 0xffe17, 0xfaa51, 0xf55c4, = 0xf0350, 0xeb5d6, 0xe7020, + 0xe34c8, 0xe0620, 0xde61c, 0xdd64b, 0xdd7bd, 0xdeb03, 0xe102a, 0xe46b5, = 0xe8dab, 0xee397, 0xf4699, + 0xfb479, 0x02ab3, 0x0a691, 0x1253c, 0x1a3d9, 0x21f98, 0x295cc, 0x30400, = 0x36803, 0x3bff8, 0x40a63, + 0x44628, 0x4729b, 0x48f76, 0x49cd2, 0x49b35, 0x48b71, 0x46ea5, 0x44632, = 0x413a6, 0x3d8b3, 0x3971b, + 0x350a6, 0x30716, 0x2bc15, 0x27131, 0x227cb, 0x1e11d, 0x19e2a, 0x15fc1, = 0x1267c, 0x0f2c0, 0x0c4c2, + 0x09c8b, 0x079fb, 0x05cd2, 0x044b2, 0x0312d, 0x021c5, 0x015f4, 0x0135e +}; + +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 DmicMono16BitFormatConfigSize = =3D sizeof (DmicMono16BitFormatConfig); + +// +// I2S/SSP Configuration BLOBs +// Audio Format and Configuration details +// +// Frequency: 48kHz, PCM resolution: 24 bits +// TDM slots: 4 +// Codec: Realtek ALC274, mode: slave +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 I2sRtk274Render4ch48kHz24bitFormatConfig[] =3D {0x0, 0xfffff= f10, 0xffffff32, 0xffff3210, 0xffff3210, 0xffff3210, 0xffff3210, 0xffff3210= , 0xffff3210, 0x83d00437, 0xc0700000, 0x0, 0x02010004, 0xf, 0xf, 0x4002, 0x= 4, 0x7070f00, 0x20, 0x00000001, 0x00000fff}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 I2sRtk274Render4ch48kHz24bitFor= matConfigSize =3D sizeof (I2sRtk274Render4ch48kHz24bitFormatConfig); + +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 I2sRtk274Capture4ch48kHz24bitFormatConfig[] =3D {0x0, 0xffff= ff10, 0xffffff10, 0xffffff10, 0xffffff10, 0xffffff10, 0xffffff10, 0xffffff1= 0, 0xffffff10, 0x83d00437, 0xc0700000, 0x0, 0x02010004, 0xf, 0xf, 0x4002, 0= x4, 0x7070f00, 0x20, 0x00000001, 0x00000fff}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 I2sRtk274Capture4ch48kHz24bitFo= rmatConfigSize =3D sizeof (I2sRtk274Capture4ch48kHz24bitFormatConfig); + +// +// BlueTooth Configuration BLOBs +// +GLOBAL_REMOVE_IF_UNREFERENCED +CONST UINT32 BtFormatConfig[] =3D +{ + 0x0, 0xfffffff0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x80c0003f, 0xd3400000, 0x0, 0x02000005, 0x01, 0x01, 0x4002, + 0x0, 0x07020000, 0x0, 0x01, 0x0 +}; +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 BtFormatConfigSize =3D sizeof (= BtFormatConfig); --=20 2.16.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#45899): https://edk2.groups.io/g/devel/message/45899 Mute This Topic: https://groups.io/mt/32918191/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-