diff --git a/Include/IndustryStandard/HdaModels.h b/Include/IndustryStandard/HdaModels.h deleted file mode 100644 index a39a63ee..00000000 --- a/Include/IndustryStandard/HdaModels.h +++ /dev/null @@ -1,458 +0,0 @@ -/* - * File: HdaModels.h - * - * Copyright (c) 2018 John Davis - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef EFI_HDA_MODELS_H -#define EFI_HDA_MODELS_H - -#include - -/** - Based on FreeBSD audio driver later borrowed by VoodooHDA. -**/ - -/** - Generic names. -**/ -#define HDA_CONTROLLER_MODEL_GENERIC L"HD Audio Controller" -#define HDA_CODEC_MODEL_GENERIC L"Unknown Codec" - -/** - Vendor IDs. -**/ -#define VEN_AMD_ID 0x1002 -#define VEN_ANALOGDEVICES_ID 0x11D4 -#define VEN_CIRRUSLOGIC_ID 0x1013 -#define VEN_CONEXANT_ID 0x14F1 -#define VEN_CREATIVE_ID 0x1102 -#define VEN_IDT_ID 0x111D -#define VEN_INTEL_ID 0x8086 -#define VEN_NVIDIA_ID 0x10DE -#define VEN_QEMU_ID 0x1AF4 -#define VEN_REALTEK_ID 0x10EC -#define VEN_SIGMATEL_ID 0x8384 -#define VEN_VIA_ID 0x1106 -#define VEN_INVALID_ID 0xFFFF - -// -// Controller models. -// -#define HDA_CONTROLLER_CONSTRUCT(vendor, id) (((UINT32) (id) << 16U) | ((VEN_##vendor##_ID) & 0xFFFFU)) - -/** - AMD. -**/ -#define HDA_CONTROLLER_AMDXXXX HDA_CONTROLLER_CONSTRUCT (AMD, 0xFFFF) - -/** - Intel. -**/ -#define HDA_CONTROLLER_ICH6 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x2668) -#define HDA_CONTROLLER_63XXESB HDA_CONTROLLER_CONSTRUCT (INTEL, 0x269A) -#define HDA_CONTROLLER_ICH7 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x27D8) -#define HDA_CONTROLLER_ICH8 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x284B) -#define HDA_CONTROLLER_ICH9 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x293E) -#define HDA_CONTROLLER_ICH10_1 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x3A3E) -#define HDA_CONTROLLER_ICH10_2 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x3A6E) -#define HDA_CONTROLLER_5SERIES_1 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x3B56) -#define HDA_CONTROLLER_5SERIES_2 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x3B57) -#define HDA_CONTROLLER_6SERIES HDA_CONTROLLER_CONSTRUCT (INTEL, 0x1C20) -#define HDA_CONTROLLER_X79 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x1D20) -#define HDA_CONTROLLER_7SERIES HDA_CONTROLLER_CONSTRUCT (INTEL, 0x1E20) -#define HDA_CONTROLLER_8SERIES_1 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x8C20) -#define HDA_CONTROLLER_8SERIES_2 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x8C21) -#define HDA_CONTROLLER_8SERIES_3 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x9C20) -#define HDA_CONTROLLER_8SERIES_4 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x9C21) -#define HDA_CONTROLLER_9SERIES_1 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x8CA0) -#define HDA_CONTROLLER_9SERIES_2 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x9CA0) -#define HDA_CONTROLLER_X99_1 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x8D20) -#define HDA_CONTROLLER_X99_2 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x8D21) -#define HDA_CONTROLLER_100SERIES HDA_CONTROLLER_CONSTRUCT (INTEL, 0xA170) -#define HDA_CONTROLLER_200SERIES HDA_CONTROLLER_CONSTRUCT (INTEL, 0xA2F0) -#define HDA_CONTROLLER_300SERIES HDA_CONTROLLER_CONSTRUCT (INTEL, 0xA348) -#define HDA_CONTROLLER_HASWELL_1 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x0A0C) -#define HDA_CONTROLLER_HASWELL_2 HDA_CONTROLLER_CONSTRUCT (INTEL, 0x0C0C) -#define HDA_CONTROLLER_CRYSTALWELL HDA_CONTROLLER_CONSTRUCT (INTEL, 0x0D0C) -#define HDA_CONTROLLER_BROADWELL HDA_CONTROLLER_CONSTRUCT (INTEL, 0x160C) -#define HDA_CONTROLLER_INTELXXXX HDA_CONTROLLER_CONSTRUCT (INTEL, 0xFFFF) - -/** - NVIDIA. -**/ -#define HDA_CONTROLLER_MCP51 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x026C) -#define HDA_CONTROLLER_MCP55 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0371) -#define HDA_CONTROLLER_MCP61_1 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x03E4) -#define HDA_CONTROLLER_MCP61_2 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x03F0) -#define HDA_CONTROLLER_MCP65_1 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x044A) -#define HDA_CONTROLLER_MCP65_2 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x044B) -#define HDA_CONTROLLER_MCP67_1 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x055C) -#define HDA_CONTROLLER_MCP67_2 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x055D) -#define HDA_CONTROLLER_MCP72 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0774) -#define HDA_CONTROLLER_MCP73 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x07FC) -#define HDA_CONTROLLER_MCP79_1 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0AC0) -#define HDA_CONTROLLER_MCP79_2 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0AC1) -#define HDA_CONTROLLER_MCP79_3 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0AC2) -#define HDA_CONTROLLER_MCP79_4 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0AC3) -#define HDA_CONTROLLER_MCP89 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0D94) -#define HDA_CONTROLLER_GT216 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0BE2) -#define HDA_CONTROLLER_GF100 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0BE5) -#define HDA_CONTROLLER_GF106 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0BE9) -#define HDA_CONTROLLER_GF108 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0BEA) -#define HDA_CONTROLLER_GF104 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0BEB) -#define HDA_CONTROLLER_GF116 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0BEE) -#define HDA_CONTROLLER_GF119 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E08) -#define HDA_CONTROLLER_GF110 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E09) -#define HDA_CONTROLLER_GK104 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E0A) -#define HDA_CONTROLLER_GK106 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E0B) -#define HDA_CONTROLLER_GF114 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E0C) -#define HDA_CONTROLLER_GK208 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E0F) -#define HDA_CONTROLLER_GK110 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E1A) -#define HDA_CONTROLLER_GK107 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0E1B) -#define HDA_CONTROLLER_GM200 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0FB0) -#define HDA_CONTROLLER_GP108 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0FB8) -#define HDA_CONTROLLER_GP107GL HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0FB9) -#define HDA_CONTROLLER_GM206 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0FBA) -#define HDA_CONTROLLER_GM204 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x0FBB) -#define HDA_CONTROLLER_GP102 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x10EF) -#define HDA_CONTROLLER_GP104 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x10F0) -#define HDA_CONTROLLER_GP106 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x10F1) -#define HDA_CONTROLLER_TU102 HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0x10F7) -#define HDA_CONTROLLER_NVIDIAXXXX HDA_CONTROLLER_CONSTRUCT (NVIDIA, 0xFFFF) - -// -// Codec models. -// -#define HDA_CODEC_CONSTRUCT(vendor, id) (((UINT32) (VEN_##vendor##_ID) << 16U) | ((id) & 0xFFFFU)) - -/** - AMD. -**/ -#define HDA_CODEC_AMDXXXX HDA_CODEC_CONSTRUCT (AMD, 0xFFFF) - -/** - Analog Devices. -**/ -#define HDA_CODEC_AD1884A HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x184A) -#define HDA_CODEC_AD1882 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1882) -#define HDA_CODEC_AD1883 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1883) -#define HDA_CODEC_AD1884 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1884) -#define HDA_CODEC_AD1984A HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x194A) -#define HDA_CODEC_AD1984B HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x194B) -#define HDA_CODEC_AD1981HD HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1981) -#define HDA_CODEC_AD1983 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1983) -#define HDA_CODEC_AD1984 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1984) -#define HDA_CODEC_AD1986A HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1986) -#define HDA_CODEC_AD1987 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1987) -#define HDA_CODEC_AD1988 HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x1988) -#define HDA_CODEC_AD1988B HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x198B) -#define HDA_CODEC_AD1882A HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x882A) -#define HDA_CODEC_AD1989A HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x989A) -#define HDA_CODEC_AD1989B HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0x989B) -#define HDA_CODEC_ADXXXX HDA_CODEC_CONSTRUCT (ANALOGDEVICES, 0xFFFF) - -/** - Cirrus Logic. -**/ -#define HDA_CODEC_CS4206 HDA_CODEC_CONSTRUCT (CIRRUSLOGIC, 0x4206) -#define HDA_CODEC_CS4207 HDA_CODEC_CONSTRUCT (CIRRUSLOGIC, 0x4207) -#define HDA_CODEC_CS4210 HDA_CODEC_CONSTRUCT (CIRRUSLOGIC, 0x4210) -#define HDA_CODEC_CSXXXX HDA_CODEC_CONSTRUCT (CIRRUSLOGIC, 0xFFFF) - -/** - Conexant. -**/ -#define HDA_CODEC_CX20549 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5045) -#define HDA_CODEC_CX20551 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5047) -#define HDA_CODEC_CX20561 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5051) -#define HDA_CODEC_CX20582 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5066) -#define HDA_CODEC_CX20583 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5067) -#define HDA_CODEC_CX20584 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5068) -#define HDA_CODEC_CX20585 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5069) -#define HDA_CODEC_CX20588 HDA_CODEC_CONSTRUCT (CONEXANT, 0x506C) -#define HDA_CODEC_CX20590 HDA_CODEC_CONSTRUCT (CONEXANT, 0x506E) -#define HDA_CODEC_CX20631 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5097) -#define HDA_CODEC_CX20632 HDA_CODEC_CONSTRUCT (CONEXANT, 0x5098) -#define HDA_CODEC_CX20641 HDA_CODEC_CONSTRUCT (CONEXANT, 0x50A1) -#define HDA_CODEC_CX20642 HDA_CODEC_CONSTRUCT (CONEXANT, 0x50A2) -#define HDA_CODEC_CX20651 HDA_CODEC_CONSTRUCT (CONEXANT, 0x50AB) -#define HDA_CODEC_CX20652 HDA_CODEC_CONSTRUCT (CONEXANT, 0x50AC) -#define HDA_CODEC_CX20664 HDA_CODEC_CONSTRUCT (CONEXANT, 0x50B8) -#define HDA_CODEC_CX20665 HDA_CODEC_CONSTRUCT (CONEXANT, 0x50B9) -#define HDA_CODEC_CXXXXX HDA_CODEC_CONSTRUCT (CONEXANT, 0xFFFF) - -/** - Creative. -**/ -#define HDA_CODEC_CA0110 HDA_CODEC_CONSTRUCT (CREATIVE, 0x000A) -#define HDA_CODEC_CA0110_2 HDA_CODEC_CONSTRUCT (CREATIVE, 0x000B) -#define HDA_CODEC_SB0880 HDA_CODEC_CONSTRUCT (CREATIVE, 0x000D) -#define HDA_CODEC_CA0132 HDA_CODEC_CONSTRUCT (CREATIVE, 0x0011) -#define HDA_CODEC_CAXXXX HDA_CODEC_CONSTRUCT (CREATIVE, 0xFFFF) - -/** - IDT. -**/ -#define HDA_CODEC_IDT92HD75BX HDA_CODEC_CONSTRUCT (IDT, 0x7603) -#define HDA_CODEC_IDT92HD83C1X HDA_CODEC_CONSTRUCT (IDT, 0x7604) -#define HDA_CODEC_IDT92HD81B1X HDA_CODEC_CONSTRUCT (IDT, 0x7605) -#define HDA_CODEC_IDT92HD75B3 HDA_CODEC_CONSTRUCT (IDT, 0x7608) -#define HDA_CODEC_IDT92HD73D1 HDA_CODEC_CONSTRUCT (IDT, 0x7674) -#define HDA_CODEC_IDT92HD73C1 HDA_CODEC_CONSTRUCT (IDT, 0x7675) -#define HDA_CODEC_IDT92HD73E1 HDA_CODEC_CONSTRUCT (IDT, 0x7676) -#define HDA_CODEC_IDTID7695 HDA_CODEC_CONSTRUCT (IDT, 0x7695) -#define HDA_CODEC_IDT92HD71B8 HDA_CODEC_CONSTRUCT (IDT, 0x76B0) -#define HDA_CODEC_IDT92HD71B8_2 HDA_CODEC_CONSTRUCT (IDT, 0x76B1) -#define HDA_CODEC_IDT92HD71B7 HDA_CODEC_CONSTRUCT (IDT, 0x76B2) -#define HDA_CODEC_IDT92HD71B7_2 HDA_CODEC_CONSTRUCT (IDT, 0x76B3) -#define HDA_CODEC_IDT92HD71B6 HDA_CODEC_CONSTRUCT (IDT, 0x76B4) -#define HDA_CODEC_IDT92HD71B6_2 HDA_CODEC_CONSTRUCT (IDT, 0x76B5) -#define HDA_CODEC_IDT92HD71B5 HDA_CODEC_CONSTRUCT (IDT, 0x76B6) -#define HDA_CODEC_IDT92HD71B5_2 HDA_CODEC_CONSTRUCT (IDT, 0x76B7) -#define HDA_CODEC_IDT92HD89C3 HDA_CODEC_CONSTRUCT (IDT, 0x76C0) -#define HDA_CODEC_IDT92HD89C2 HDA_CODEC_CONSTRUCT (IDT, 0x76C1) -#define HDA_CODEC_IDT92HD89C1 HDA_CODEC_CONSTRUCT (IDT, 0x76C2) -#define HDA_CODEC_IDT92HD89B3 HDA_CODEC_CONSTRUCT (IDT, 0x76C3) -#define HDA_CODEC_IDT92HD89B2 HDA_CODEC_CONSTRUCT (IDT, 0x76C4) -#define HDA_CODEC_IDT92HD89B1 HDA_CODEC_CONSTRUCT (IDT, 0x76C5) -#define HDA_CODEC_IDT92HD89E3 HDA_CODEC_CONSTRUCT (IDT, 0x76C6) -#define HDA_CODEC_IDT92HD89E2 HDA_CODEC_CONSTRUCT (IDT, 0x76C7) -#define HDA_CODEC_IDT92HD89E1 HDA_CODEC_CONSTRUCT (IDT, 0x76C8) -#define HDA_CODEC_IDT92HD89D3 HDA_CODEC_CONSTRUCT (IDT, 0x76C9) -#define HDA_CODEC_IDT92HD89D2 HDA_CODEC_CONSTRUCT (IDT, 0x76CA) -#define HDA_CODEC_IDT92HD89D1 HDA_CODEC_CONSTRUCT (IDT, 0x76CB) -#define HDA_CODEC_IDT92HD89F3 HDA_CODEC_CONSTRUCT (IDT, 0x76CC) -#define HDA_CODEC_IDT92HD89F2 HDA_CODEC_CONSTRUCT (IDT, 0x76CD) -#define HDA_CODEC_IDT92HD89F1 HDA_CODEC_CONSTRUCT (IDT, 0x76CE) -#define HDA_CODEC_IDT92HD87B1_3 HDA_CODEC_CONSTRUCT (IDT, 0x76D1) -#define HDA_CODEC_IDT92HD83C1C HDA_CODEC_CONSTRUCT (IDT, 0x76D4) -#define HDA_CODEC_IDT92HD81B1C HDA_CODEC_CONSTRUCT (IDT, 0x76D5) -#define HDA_CODEC_IDT92HD87B2_4 HDA_CODEC_CONSTRUCT (IDT, 0x76D9) -#define HDA_CODEC_IDT92HD93BXX HDA_CODEC_CONSTRUCT (IDT, 0x76Df) -#define HDA_CODEC_IDT92HD91BXX HDA_CODEC_CONSTRUCT (IDT, 0x76E0) -#define HDA_CODEC_IDT92HD98BXX HDA_CODEC_CONSTRUCT (IDT, 0x76E3) -#define HDA_CODEC_IDT92HD99BXX HDA_CODEC_CONSTRUCT (IDT, 0x76E5) -#define HDA_CODEC_IDT92HD90BXX HDA_CODEC_CONSTRUCT (IDT, 0x76E7) -#define HDA_CODEC_IDT92HD66B1X5 HDA_CODEC_CONSTRUCT (IDT, 0x76E8) -#define HDA_CODEC_IDT92HD66B2X5 HDA_CODEC_CONSTRUCT (IDT, 0x76E9) -#define HDA_CODEC_IDT92HD66B3X5 HDA_CODEC_CONSTRUCT (IDT, 0x76EA) -#define HDA_CODEC_IDT92HD66C1X5 HDA_CODEC_CONSTRUCT (IDT, 0x76EB) -#define HDA_CODEC_IDT92HD66C2X5 HDA_CODEC_CONSTRUCT (IDT, 0x76EC) -#define HDA_CODEC_IDT92HD66C3X5 HDA_CODEC_CONSTRUCT (IDT, 0x76ED) -#define HDA_CODEC_IDT92HD66B1X3 HDA_CODEC_CONSTRUCT (IDT, 0x76EE) -#define HDA_CODEC_IDT92HD66B2X3 HDA_CODEC_CONSTRUCT (IDT, 0x76EF) -#define HDA_CODEC_IDT92HD66B3X3 HDA_CODEC_CONSTRUCT (IDT, 0x76F0) -#define HDA_CODEC_IDT92HD66C1X3 HDA_CODEC_CONSTRUCT (IDT, 0x76F1) -#define HDA_CODEC_IDT92HD66C2X3 HDA_CODEC_CONSTRUCT (IDT, 0x76F2) -#define HDA_CODEC_IDT92HD66C3_65 HDA_CODEC_CONSTRUCT (IDT, 0x76F3) -#define HDA_CODEC_IDTXXXX HDA_CODEC_CONSTRUCT (IDT, 0xFFFF) - -/** - Intel. -**/ -#define HDA_CODEC_INTELCRESTLINE HDA_CODEC_CONSTRUCT (INTEL, 0x29FB) -#define HDA_CODEC_INTELBEARLAKE HDA_CODEC_CONSTRUCT (INTEL, 0x2801) -#define HDA_CODEC_INTELCANTIGA HDA_CODEC_CONSTRUCT (INTEL, 0x2802) -#define HDA_CODEC_INTELEAGLELAKE HDA_CODEC_CONSTRUCT (INTEL, 0x2803) -#define HDA_CODEC_INTELIBEXPEAK HDA_CODEC_CONSTRUCT (INTEL, 0x2804) -#define HDA_CODEC_INTELIBEXPEAK2 HDA_CODEC_CONSTRUCT (INTEL, 0x0054) -#define HDA_CODEC_INTELCOUGARPOINT HDA_CODEC_CONSTRUCT (INTEL, 0x2805) -#define HDA_CODEC_INTELPANTHERPOINT HDA_CODEC_CONSTRUCT (INTEL, 0x2806) -#define HDA_CODEC_INTELHASWELL HDA_CODEC_CONSTRUCT (INTEL, 0x2807) -#define HDA_CODEC_INTELBROADWELL HDA_CODEC_CONSTRUCT (INTEL, 0x2808) -#define HDA_CODEC_INTELSKYLAKE HDA_CODEC_CONSTRUCT (INTEL, 0x2809) -#define HDA_CODEC_INTELBROXTON HDA_CODEC_CONSTRUCT (INTEL, 0x280A) -#define HDA_CODEC_INTELKABYLAKE HDA_CODEC_CONSTRUCT (INTEL, 0x280B) -#define HDA_CODEC_INTELCANNONLAKE HDA_CODEC_CONSTRUCT (INTEL, 0x280C) -#define HDA_CODEC_INTELGEMINILAKE HDA_CODEC_CONSTRUCT (INTEL, 0x280D) -#define HDA_CODEC_INTELGEMINILAKE2 HDA_CODEC_CONSTRUCT (INTEL, 0x2800) -#define HDA_CODEC_INTELXXXX HDA_CODEC_CONSTRUCT (INTEL, 0xFFFF) - -/** - NVIDIA. -**/ -#define HDA_CODEC_NVIDIAXXXX HDA_CODEC_CONSTRUCT (NVIDIA, 0xFFFF) - -/** - Realtek. -**/ -#define HDA_CODEC_ALC221 HDA_CODEC_CONSTRUCT (REALTEK, 0x0221) -#define HDA_CODEC_ALC225 HDA_CODEC_CONSTRUCT (REALTEK, 0x0225) -#define HDA_CODEC_ALC230 HDA_CODEC_CONSTRUCT (REALTEK, 0x0230) -#define HDA_CODEC_ALC233 HDA_CODEC_CONSTRUCT (REALTEK, 0x0233) -#define HDA_CODEC_ALC235 HDA_CODEC_CONSTRUCT (REALTEK, 0x0235) -#define HDA_CODEC_ALC236 HDA_CODEC_CONSTRUCT (REALTEK, 0x0236) -#define HDA_CODEC_ALC255 HDA_CODEC_CONSTRUCT (REALTEK, 0x0255) -#define HDA_CODEC_ALC256 HDA_CODEC_CONSTRUCT (REALTEK, 0x0256) -#define HDA_CODEC_ALC257 HDA_CODEC_CONSTRUCT (REALTEK, 0x0257) -#define HDA_CODEC_ALC260 HDA_CODEC_CONSTRUCT (REALTEK, 0x0260) -#define HDA_CODEC_ALC262 HDA_CODEC_CONSTRUCT (REALTEK, 0x0262) -#define HDA_CODEC_ALC267 HDA_CODEC_CONSTRUCT (REALTEK, 0x0267) -#define HDA_CODEC_ALC268 HDA_CODEC_CONSTRUCT (REALTEK, 0x0268) -#define HDA_CODEC_ALC269 HDA_CODEC_CONSTRUCT (REALTEK, 0x0269) -#define HDA_CODEC_ALC270 HDA_CODEC_CONSTRUCT (REALTEK, 0x0270) -#define HDA_CODEC_ALC272 HDA_CODEC_CONSTRUCT (REALTEK, 0x0272) -#define HDA_CODEC_ALC273 HDA_CODEC_CONSTRUCT (REALTEK, 0x0273) -#define HDA_CODEC_ALC275 HDA_CODEC_CONSTRUCT (REALTEK, 0x0275) -#define HDA_CODEC_ALC276 HDA_CODEC_CONSTRUCT (REALTEK, 0x0276) -#define HDA_CODEC_ALC280 HDA_CODEC_CONSTRUCT (REALTEK, 0x0280) -#define HDA_CODEC_ALC282 HDA_CODEC_CONSTRUCT (REALTEK, 0x0282) -#define HDA_CODEC_ALC283 HDA_CODEC_CONSTRUCT (REALTEK, 0x0283) -#define HDA_CODEC_ALC284 HDA_CODEC_CONSTRUCT (REALTEK, 0x0284) -#define HDA_CODEC_ALC285 HDA_CODEC_CONSTRUCT (REALTEK, 0x0285) -#define HDA_CODEC_ALC286 HDA_CODEC_CONSTRUCT (REALTEK, 0x0286) -#define HDA_CODEC_ALC288 HDA_CODEC_CONSTRUCT (REALTEK, 0x0288) -#define HDA_CODEC_ALC289 HDA_CODEC_CONSTRUCT (REALTEK, 0x0289) -#define HDA_CODEC_ALC290 HDA_CODEC_CONSTRUCT (REALTEK, 0x0290) -#define HDA_CODEC_ALC292 HDA_CODEC_CONSTRUCT (REALTEK, 0x0292) -#define HDA_CODEC_ALC293 HDA_CODEC_CONSTRUCT (REALTEK, 0x0293) -#define HDA_CODEC_ALC294 HDA_CODEC_CONSTRUCT (REALTEK, 0x0294) -#define HDA_CODEC_ALC295 HDA_CODEC_CONSTRUCT (REALTEK, 0x0295) -#define HDA_CODEC_ALC298 HDA_CODEC_CONSTRUCT (REALTEK, 0x0298) -#define HDA_CODEC_ALC660 HDA_CODEC_CONSTRUCT (REALTEK, 0x0660) -#define HDA_CODEC_ALC662 HDA_CODEC_CONSTRUCT (REALTEK, 0x0662) -#define HDA_CODEC_ALC663 HDA_CODEC_CONSTRUCT (REALTEK, 0x0663) -#define HDA_CODEC_ALC665 HDA_CODEC_CONSTRUCT (REALTEK, 0x0665) -#define HDA_CODEC_ALC668 HDA_CODEC_CONSTRUCT (REALTEK, 0x0668) -#define HDA_CODEC_ALC670 HDA_CODEC_CONSTRUCT (REALTEK, 0x0670) -#define HDA_CODEC_ALC671 HDA_CODEC_CONSTRUCT (REALTEK, 0x0671) -#define HDA_CODEC_ALC680 HDA_CODEC_CONSTRUCT (REALTEK, 0x0680) -#define HDA_CODEC_ALC861 HDA_CODEC_CONSTRUCT (REALTEK, 0x0861) -#define HDA_CODEC_ALC861VD HDA_CODEC_CONSTRUCT (REALTEK, 0x0862) -#define HDA_CODEC_ALC880 HDA_CODEC_CONSTRUCT (REALTEK, 0x0880) -#define HDA_CODEC_ALC882 HDA_CODEC_CONSTRUCT (REALTEK, 0x0882) -#define HDA_CODEC_ALC883 HDA_CODEC_CONSTRUCT (REALTEK, 0x0883) -#define HDA_CODEC_ALC885 HDA_CODEC_CONSTRUCT (REALTEK, 0x0885) -#define HDA_CODEC_ALC887 HDA_CODEC_CONSTRUCT (REALTEK, 0x0887) -#define HDA_CODEC_ALC888 HDA_CODEC_CONSTRUCT (REALTEK, 0x0888) -#define HDA_CODEC_ALC889 HDA_CODEC_CONSTRUCT (REALTEK, 0x0889) -#define HDA_CODEC_ALC892 HDA_CODEC_CONSTRUCT (REALTEK, 0x0892) -#define HDA_CODEC_ALC898 HDA_CODEC_CONSTRUCT (REALTEK, 0x0898) -#define HDA_CODEC_ALC899 HDA_CODEC_CONSTRUCT (REALTEK, 0x0899) -#define HDA_CODEC_ALC1150 HDA_CODEC_CONSTRUCT (REALTEK, 0x0900) -#define HDA_CODEC_ALC1220 HDA_CODEC_CONSTRUCT (REALTEK, 0x1168) -#define HDA_CODEC_ALCXXXX HDA_CODEC_CONSTRUCT (REALTEK, 0xFFFF) - -/** - Sigmatel. -**/ -#define HDA_CODEC_STAC9230X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7612) -#define HDA_CODEC_STAC9230D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7613) -#define HDA_CODEC_STAC9229X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7614) -#define HDA_CODEC_STAC9229D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7615) -#define HDA_CODEC_STAC9228X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7616) -#define HDA_CODEC_STAC9228D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7617) -#define HDA_CODEC_STAC9227X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7618) -#define HDA_CODEC_STAC9227D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7619) -#define HDA_CODEC_STAC9274 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7620) -#define HDA_CODEC_STAC9274D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7621) -#define HDA_CODEC_STAC9273X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7622) -#define HDA_CODEC_STAC9273D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7623) -#define HDA_CODEC_STAC9272X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7624) -#define HDA_CODEC_STAC9272D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7625) -#define HDA_CODEC_STAC9271X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7626) -#define HDA_CODEC_STAC9271D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7627) -#define HDA_CODEC_STAC9274X5NH HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7628) -#define HDA_CODEC_STAC9274D5NH HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7629) -#define HDA_CODEC_STAC9250 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7634) -#define HDA_CODEC_STAC9251 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7636) -#define HDA_CODEC_IDT92HD700X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7638) -#define HDA_CODEC_IDT92HD700D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7639) -#define HDA_CODEC_IDT92HD206X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7645) -#define HDA_CODEC_IDT92HD206D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7646) -#define HDA_CODEC_CXD9872RDK HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7661) -#define HDA_CODEC_STAC9872AK HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7662) -#define HDA_CODEC_CXD9872AKD HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7664) -#define HDA_CODEC_STAC9221 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7680) -#define HDA_CODEC_STAC922XD HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7681) -#define HDA_CODEC_STAC9221_A2 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7682) -#define HDA_CODEC_STAC9221D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7683) -#define HDA_CODEC_STAC9220 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7690) -#define HDA_CODEC_STAC9200D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7691) -#define HDA_CODEC_IDT92HD005 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7698) -#define HDA_CODEC_IDT92HD005D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7699) -#define HDA_CODEC_STAC9205X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A0) -#define HDA_CODEC_STAC9205D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A1) -#define HDA_CODEC_STAC9204X HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A2) -#define HDA_CODEC_STAC9204D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A3) -#define HDA_CODEC_STAC9255 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A4) -#define HDA_CODEC_STAC9255D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A5) -#define HDA_CODEC_STAC9254 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A6) -#define HDA_CODEC_STAC9254D HDA_CODEC_CONSTRUCT (SIGMATEL, 0x76A7) -#define HDA_CODEC_STAC9220_A2 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7880) -#define HDA_CODEC_STAC9220_A1 HDA_CODEC_CONSTRUCT (SIGMATEL, 0x7882) -#define HDA_CODEC_STACXXXX HDA_CODEC_CONSTRUCT (SIGMATEL, 0xFFFF) - -/** - VIA. -**/ -#define HDA_CODEC_VT1708_8 HDA_CODEC_CONSTRUCT (VIA, 0x1708) -#define HDA_CODEC_VT1708_9 HDA_CODEC_CONSTRUCT (VIA, 0x1709) -#define HDA_CODEC_VT1708_A HDA_CODEC_CONSTRUCT (VIA, 0x170A) -#define HDA_CODEC_VT1708_B HDA_CODEC_CONSTRUCT (VIA, 0x170B) -#define HDA_CODEC_VT1709_0 HDA_CODEC_CONSTRUCT (VIA, 0xe710) -#define HDA_CODEC_VT1709_1 HDA_CODEC_CONSTRUCT (VIA, 0xe711) -#define HDA_CODEC_VT1709_2 HDA_CODEC_CONSTRUCT (VIA, 0xe712) -#define HDA_CODEC_VT1709_3 HDA_CODEC_CONSTRUCT (VIA, 0xe713) -#define HDA_CODEC_VT1709_4 HDA_CODEC_CONSTRUCT (VIA, 0xe714) -#define HDA_CODEC_VT1709_5 HDA_CODEC_CONSTRUCT (VIA, 0xe715) -#define HDA_CODEC_VT1709_6 HDA_CODEC_CONSTRUCT (VIA, 0xe716) -#define HDA_CODEC_VT1709_7 HDA_CODEC_CONSTRUCT (VIA, 0xe717) -#define HDA_CODEC_VT1708B_0 HDA_CODEC_CONSTRUCT (VIA, 0xe720) -#define HDA_CODEC_VT1708B_1 HDA_CODEC_CONSTRUCT (VIA, 0xe721) -#define HDA_CODEC_VT1708B_2 HDA_CODEC_CONSTRUCT (VIA, 0xe722) -#define HDA_CODEC_VT1708B_3 HDA_CODEC_CONSTRUCT (VIA, 0xe723) -#define HDA_CODEC_VT1708B_4 HDA_CODEC_CONSTRUCT (VIA, 0xe724) -#define HDA_CODEC_VT1708B_5 HDA_CODEC_CONSTRUCT (VIA, 0xe725) -#define HDA_CODEC_VT1708B_6 HDA_CODEC_CONSTRUCT (VIA, 0xe726) -#define HDA_CODEC_VT1708B_7 HDA_CODEC_CONSTRUCT (VIA, 0xe727) -#define HDA_CODEC_VT1708S_0 HDA_CODEC_CONSTRUCT (VIA, 0x0397) -#define HDA_CODEC_VT1708S_1 HDA_CODEC_CONSTRUCT (VIA, 0x1397) -#define HDA_CODEC_VT1708S_2 HDA_CODEC_CONSTRUCT (VIA, 0x2397) -#define HDA_CODEC_VT1708S_3 HDA_CODEC_CONSTRUCT (VIA, 0x3397) -#define HDA_CODEC_VT1708S_4 HDA_CODEC_CONSTRUCT (VIA, 0x4397) -#define HDA_CODEC_VT1708S_5 HDA_CODEC_CONSTRUCT (VIA, 0x5397) -#define HDA_CODEC_VT1708S_6 HDA_CODEC_CONSTRUCT (VIA, 0x6397) -#define HDA_CODEC_VT1708S_7 HDA_CODEC_CONSTRUCT (VIA, 0x7397) -#define HDA_CODEC_VT1702_0 HDA_CODEC_CONSTRUCT (VIA, 0x0398) -#define HDA_CODEC_VT1702_1 HDA_CODEC_CONSTRUCT (VIA, 0x1398) -#define HDA_CODEC_VT1702_2 HDA_CODEC_CONSTRUCT (VIA, 0x2398) -#define HDA_CODEC_VT1702_3 HDA_CODEC_CONSTRUCT (VIA, 0x3398) -#define HDA_CODEC_VT1702_4 HDA_CODEC_CONSTRUCT (VIA, 0x4398) -#define HDA_CODEC_VT1702_5 HDA_CODEC_CONSTRUCT (VIA, 0x5398) -#define HDA_CODEC_VT1702_6 HDA_CODEC_CONSTRUCT (VIA, 0x6398) -#define HDA_CODEC_VT1702_7 HDA_CODEC_CONSTRUCT (VIA, 0x7398) -#define HDA_CODEC_VT1716S_0 HDA_CODEC_CONSTRUCT (VIA, 0x0433) -#define HDA_CODEC_VT1716S_1 HDA_CODEC_CONSTRUCT (VIA, 0xA721) -#define HDA_CODEC_VT1718S_0 HDA_CODEC_CONSTRUCT (VIA, 0x0428) -#define HDA_CODEC_VT1718S_1 HDA_CODEC_CONSTRUCT (VIA, 0x4428) -#define HDA_CODEC_VT1802_0 HDA_CODEC_CONSTRUCT (VIA, 0x0446) -#define HDA_CODEC_VT1802_1 HDA_CODEC_CONSTRUCT (VIA, 0x8446) -#define HDA_CODEC_VT1812 HDA_CODEC_CONSTRUCT (VIA, 0x0448) -#define HDA_CODEC_VT1818S HDA_CODEC_CONSTRUCT (VIA, 0x0440) -#define HDA_CODEC_VT1828S HDA_CODEC_CONSTRUCT (VIA, 0x4441) -#define HDA_CODEC_VT2002P_0 HDA_CODEC_CONSTRUCT (VIA, 0x0438) -#define HDA_CODEC_VT2002P_1 HDA_CODEC_CONSTRUCT (VIA, 0x4438) -#define HDA_CODEC_VT2020 HDA_CODEC_CONSTRUCT (VIA, 0x0441) -#define HDA_CODEC_VTXXXX HDA_CODEC_CONSTRUCT (VIA, 0xFFFF) - -#endif // EFI_HDA_MODELS_H diff --git a/Include/Library/OcHdaDevicesLib.h b/Include/Library/OcHdaDevicesLib.h new file mode 100644 index 00000000..77dc521d --- /dev/null +++ b/Include/Library/OcHdaDevicesLib.h @@ -0,0 +1,87 @@ +/** @file + This library implements HDA device information. + + Copyright (c) 2018 John Davis. All rights reserved.
+ Copyright (c) 2020, vit9696. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause +**/ + +#ifndef OC_HDA_DEVICES_LIB_H +#define OC_HDA_DEVICES_LIB_H + +#include + +/** + Based on FreeBSD audio driver later borrowed by VoodooHDA. +**/ + +/** + Generic names. +**/ +#define HDA_CONTROLLER_MODEL_GENERIC "HD Audio Controller" +#define HDA_CODEC_MODEL_GENERIC "Unknown Codec" + +/** + Vendor IDs. +**/ +#define VEN_AMD_ID 0x1002 +#define VEN_ANALOGDEVICES_ID 0x11D4 +#define VEN_AGERE_ID 0x11C1 +#define VEN_CIRRUSLOGIC_ID 0x1013 +#define VEN_CHRONTEL_ID 0x17E8 +#define VEN_CONEXANT_ID 0x14F1 +#define VEN_CREATIVE_ID 0x1102 +#define VEN_IDT_ID 0x111D +#define VEN_INTEL_ID 0x8086 +#define VEN_LG_ID 0x1854 +#define VEN_NVIDIA_ID 0x10DE +#define VEN_QEMU_ID 0x1AF4 +#define VEN_REALTEK_ID 0x10EC +#define VEN_SIGMATEL_ID 0x8384 +#define VEN_VIA_ID 0x1106 +#define VEN_CMEDIA_ID 0x13F6 +#define VEN_CMEDIA2_ID 0x434D +#define VEN_RDC_ID 0x17F3 +#define VEN_SIS_ID 0x1039 +#define VEN_ULI_ID 0x10B9 +#define VEN_MOTO_ID 0x1057 +#define VEN_SII_ID 0x1095 +#define VEN_WOLFSON_ID 0x14EC + +#define VEN_INVALID_ID 0xFFFF + +#define GET_PCI_VENDOR_ID(a) (a & 0xFFFFU) +#define GET_PCI_DEVICE_ID(a) ((a >> 16U) & 0xFFFFU) +#define GET_PCI_GENERIC_ID(a) ((0xFFFFU << 16U) | a) +#define GET_CODEC_VENDOR_ID(a) ((a >> 16U) & 0xFFFFU) +#define GET_CODEC_DEVICE_ID(a) (a & 0xFFFFU) +#define GET_CODEC_GENERIC_ID(a) (a | 0xFFFFU) + +/** + Get controller name. + + @param[in] ControllerId Controller identifier. + + @retval Controller name or NULL. +**/ +CONST CHAR8 * +OcHdaControllerGetName ( + IN UINT32 ControllerId + ); + +/** + Get codec name. + + @param[in] CodecId Codec identifier. + @param[in] RevisionId Codec revision. + + @retval Controller name or NULL. +**/ +CONST CHAR8 * +OcHdaCodecGetName ( + IN UINT32 CodecId, + IN UINT16 RevisionId + ); + +#endif // OC_HDA_DEVICES_LIB_H + diff --git a/Include/Protocol/HdaCodecInfo.h b/Include/Protocol/HdaCodecInfo.h index 4809bbfe..353f3d42 100644 --- a/Include/Protocol/HdaCodecInfo.h +++ b/Include/Protocol/HdaCodecInfo.h @@ -101,7 +101,7 @@ typedef EFI_STATUS (EFIAPI *EFI_HDA_CODEC_INFO_GET_NAME) ( IN EFI_HDA_CODEC_INFO_PROTOCOL *This, - OUT CHAR16 **CodecName + OUT CONST CHAR16 **CodecName ); /** diff --git a/Include/Protocol/HdaControllerInfo.h b/Include/Protocol/HdaControllerInfo.h index cf912fc3..cde72316 100644 --- a/Include/Protocol/HdaControllerInfo.h +++ b/Include/Protocol/HdaControllerInfo.h @@ -49,7 +49,7 @@ typedef EFI_STATUS (EFIAPI *EFI_HDA_CONTROLLER_INFO_GET_NAME) ( IN EFI_HDA_CONTROLLER_INFO_PROTOCOL *This, - OUT CHAR16 **ControllerName + OUT CONST CHAR16 **ControllerName ); /** diff --git a/Library/OcHdaDevicesLib/OcHdaDevicesInternal.h b/Library/OcHdaDevicesLib/OcHdaDevicesInternal.h new file mode 100644 index 00000000..4113dccf --- /dev/null +++ b/Library/OcHdaDevicesLib/OcHdaDevicesInternal.h @@ -0,0 +1,33 @@ +/** @file + This library implements HDA device information. + + Copyright (c) 2018 John Davis. All rights reserved.
+ Copyright (c) 2020, vit9696. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause +**/ + +#ifndef OC_HDA_DEVICES_INTERNAL_H +#define OC_HDA_DEVICES_INTERNAL_H + +typedef struct { + UINT32 Id; + CONST CHAR8 *Name; +} HDA_CONTROLLER_LIST_ENTRY; + +typedef struct { + UINT32 Id; + UINT16 Rev; + CONST CHAR8 *Name; +} HDA_CODEC_LIST_ENTRY; + +// +// Controller models. +// +#define HDA_CONTROLLER(vendor, id) (((UINT32) (id) << 16U) | ((VEN_##vendor##_ID) & 0xFFFFU)) + +// +// Codec models. +// +#define HDA_CODEC(vendor, id) (((UINT32) (VEN_##vendor##_ID) << 16U) | ((id) & 0xFFFFU)) + +#endif // OC_HDA_DEVICES_INTERNAL_H diff --git a/Library/OcHdaDevicesLib/OcHdaDevicesLib.c b/Library/OcHdaDevicesLib/OcHdaDevicesLib.c new file mode 100644 index 00000000..e3f26e9b --- /dev/null +++ b/Library/OcHdaDevicesLib/OcHdaDevicesLib.c @@ -0,0 +1,593 @@ +/** @file + This library implements HDA device information. + + Copyright (c) 2018 John Davis. All rights reserved.
+ Copyright (c) 2020, vit9696. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause +**/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "OcHdaDevicesInternal.h" + +// +// Controller models. +// +STATIC HDA_CONTROLLER_LIST_ENTRY mHdaControllerList[] = { + /// + /// 1002 Advanced Micro Devices [AMD] nee ATI Technologies Inc + /// + { HDA_CONTROLLER (AMD, 0x437B), "AMD SB4x0 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x4383), "AMD SB600 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x780D), "AMD Hudson HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x7919), "AMD RS690 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x793B), "AMD RS600 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x960F), "AMD RS780 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x970F), "AMD RS880 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0x9902), "AMD Trinity HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA00), "AMD R600 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA08), "AMD RV630 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA10), "AMD RV610 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA18), "AMD RV670/680 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA20), "AMD RV635 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA28), "AMD RV620 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA30), "AMD RV770 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA38), "AMD RV730 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA40), "AMD RV710 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA48), "AMD RV740 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA50), "AMD RV870 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA58), "AMD RV840 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA60), "AMD RV830 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA68), "AMD RV810 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA80), "AMD RV970 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA88), "AMD RV940 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA90), "AMD RV930 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAA98), "AMD RV910 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAAA0), "AMD R1000 HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAAA8), "AMD SI HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAAB0), "AMD Cape Verde HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAAE0), "AMD Buffin HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xAAF0), "AMD Ellesmere HD Audio Controller" }, + { HDA_CONTROLLER (AMD, 0xFFFF), "AMD HD Audio Controller" }, + /// + /// 8086 Intel Corporation + /// + { HDA_CONTROLLER (INTEL, 0x080A), "Intel Oaktrail HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x0A0C), "Intel Haswell HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x0C0C), "Intel Ivy Bridge/Haswell HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x0D0C), "Intel Crystal Well HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x0F04), "Intel BayTrail HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x160C), "Intel Broadwell HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x1A98), "Intel Broxton-T HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x1C20), "Intel 6 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x1D20), "Intel X79/C600 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x1E20), "Intel 7 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x2284), "Intel Braswell HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x2668), "Intel ICH6 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x269A), "Intel 63XXESB HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x27D8), "Intel ICH7 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x284B), "Intel ICH8 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x293E), "Intel ICH9 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x293F), "Intel ICH9 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x3A3E), "Intel ICH10 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x3A6E), "Intel ICH10 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x3B56), "Intel 5 Series/3400 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x3B57), "Intel 5 Series/3400 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x5A98), "Intel Apollolake HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x811B), "Intel Poulsbo HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x8C20), "Intel 8 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x8C21), "Intel 8 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x8CA0), "Intel 9 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x8D20), "Intel X99/C610 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x8D21), "Intel X99/C610 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x9C20), "Intel 8 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x9C21), "Intel 8 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x9CA0), "Intel 9 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x9D70), "Intel Sunrise Point-LP HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0x9D71), "Intel Kabylake-LP HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xA170), "Intel 100 Series/C230 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xA171), "Intel CM238 HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xA1F0), "Intel Lewisburg HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xA270), "Intel Lewisburg HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xA2F0), "Intel 200 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xA348), "Intel 300 Series HD Audio Controller" }, + { HDA_CONTROLLER (INTEL, 0xFFFF), "Intel HD Audio Controller" }, + /// + /// 10de NVIDIA Corporation + /// + { HDA_CONTROLLER (NVIDIA, 0x026C), "Nvidia MCP51 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0371), "Nvidia MCP55 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x03E4), "Nvidia MCP61 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x03F0), "Nvidia MCP61 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x044A), "Nvidia MCP65 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x044B), "Nvidia MCP65 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x055C), "Nvidia MCP67 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x055D), "Nvidia MCP67 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0774), "Nvidia MCP78 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0775), "Nvidia MCP78 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0776), "Nvidia MCP78 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0777), "Nvidia MCP78 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x07FC), "Nvidia MCP73 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x07FD), "Nvidia MCP73 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0AC0), "Nvidia MCP79 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0AC1), "Nvidia MCP79 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0AC2), "Nvidia MCP79 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0AC3), "Nvidia MCP79 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BE2), "Nvidia GT216 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BE3), "Nvidia GT218 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BE4), "Nvidia GT215 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BE5), "Nvidia GF100 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BE9), "Nvidia GF106 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BEA), "Nvidia GF108 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BEB), "Nvidia GF104 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0BEE), "Nvidia GF116 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0D94), "Nvidia MCP89 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0D95), "Nvidia MCP89 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0D96), "Nvidia MCP89 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0D97), "Nvidia MCP89 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E08), "Nvidia GF119 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E09), "Nvidia GF110 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E0A), "Nvidia GK104 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E0B), "Nvidia GK106 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E0C), "Nvidia GF114 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E0F), "Nvidia GK208 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E1A), "Nvidia GK110 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0E1B), "Nvidia GK107 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0FB0), "Nvidia GM200 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0FB8), "Nvidia GP108 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0FB9), "Nvidia GP107GL HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0FBA), "Nvidia GM206 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0FBB), "Nvidia GM204 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x0FBC), "Nvidia GM107 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10EF), "Nvidia GP102 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10F0), "Nvidia GP104 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10F1), "Nvidia GP106 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10F2), "Nvidia GV100 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10F7), "Nvidia TU102 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10F8), "Nvidia TU104 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x10F9), "Nvidia TU106 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0x1AEB), "Nvidia TU116 HD Audio Controller" }, + { HDA_CONTROLLER (NVIDIA, 0xFFFF), "Nvidia HD Audio Controller" }, + /// + /// 17f3 RDC Semiconductor, Inc. + /// + { HDA_CONTROLLER (RDC, 0x3010), "RDC M3010 HD Audio Controller" }, + /// + /// 1039 Silicon Integrated Systems [SiS] + /// + { HDA_CONTROLLER (SIS, 0x7502), "SiS 966 HD Audio Controller" }, + { HDA_CONTROLLER (SIS, 0xFFFF), "SiS HD Audio Controller" }, + /// + /// 10b9 ULi Electronics Inc. (Split off ALi Corporation in 2003) + /// + { HDA_CONTROLLER (ULI, 0x5461), "ULI M5461 HD Audio Controller"}, + { HDA_CONTROLLER (ULI, 0xFFFF), "ULI HD Audio Controller"}, + /// + /// 1106 VIA Technologies, Inc. + /// + { HDA_CONTROLLER (VIA, 0x3288), "VIA VT8251/8237A HD Audio Controller" }, + { HDA_CONTROLLER (VIA, 0xFFFF), "VIA HD Audio Controller" }, +}; + +// +// Codec models. +// + +STATIC HDA_CODEC_LIST_ENTRY mHdaCodecList[] = { + /// + /// AMD. + /// + { HDA_CODEC (AMD, 0xFFFF), 0x0000, "AMD (Unknown)" }, + /// + /// Analog Devices. + /// + { HDA_CODEC (ANALOGDEVICES, 0x1882), 0x0000, "Analog Devices AD1882" }, + { HDA_CODEC (ANALOGDEVICES, 0x882A), 0x0000, "Analog Devices AD1882A" }, + { HDA_CODEC (ANALOGDEVICES, 0x1883), 0x0000, "Analog Devices AD1883" }, + { HDA_CODEC (ANALOGDEVICES, 0x1884), 0x0000, "Analog Devices AD1884" }, + { HDA_CODEC (ANALOGDEVICES, 0x184A), 0x0000, "Analog Devices AD1884A" }, + { HDA_CODEC (ANALOGDEVICES, 0x1981), 0x0000, "Analog Devices AD1981HD" }, + { HDA_CODEC (ANALOGDEVICES, 0x1983), 0x0000, "Analog Devices AD1983" }, + { HDA_CODEC (ANALOGDEVICES, 0x1984), 0x0000, "Analog Devices AD1984" }, + { HDA_CODEC (ANALOGDEVICES, 0x194A), 0x0000, "Analog Devices AD1984A" }, + { HDA_CODEC (ANALOGDEVICES, 0x194B), 0x0000, "Analog Devices AD1984B" }, + { HDA_CODEC (ANALOGDEVICES, 0x1986), 0x0000, "Analog Devices AD1986A" }, + { HDA_CODEC (ANALOGDEVICES, 0x1987), 0x0000, "Analog Devices AD1987" }, + { HDA_CODEC (ANALOGDEVICES, 0x1988), 0x0000, "Analog Devices AD1988A" }, + { HDA_CODEC (ANALOGDEVICES, 0x198B), 0x0000, "Analog Devices AD1988B" }, + { HDA_CODEC (ANALOGDEVICES, 0x989A), 0x0000, "Analog Devices AD1989A" }, + { HDA_CODEC (ANALOGDEVICES, 0x989B), 0x0000, "Analog Devices AD2000b" }, + { HDA_CODEC (ANALOGDEVICES, 0xFFFF), 0x0000, "Analog Devices (Unknown)" }, + /// + /// Cirrus Logic. + /// + { HDA_CODEC (CIRRUSLOGIC, 0x4206), 0x0000, "Cirrus Logic CS4206" }, + { HDA_CODEC (CIRRUSLOGIC, 0x4207), 0x0000, "Cirrus Logic CS4207" }, + { HDA_CODEC (CIRRUSLOGIC, 0x4208), 0x0000, "Cirrus Logic CS4208" }, + { HDA_CODEC (CIRRUSLOGIC, 0x4210), 0x0000, "Cirrus Logic CS4210" }, + { HDA_CODEC (CIRRUSLOGIC, 0x4213), 0x0000, "Cirrus Logic CS4213" }, + { HDA_CODEC (CIRRUSLOGIC, 0xFFFF), 0x0000, "Cirrus Logic (Unknown)" }, + /// + /// Conexant. + /// + { HDA_CODEC (CONEXANT, 0x5045), 0x0000, "Conexant CX20549 (Venice)" }, + { HDA_CODEC (CONEXANT, 0x5047), 0x0000, "Conexant CX20551 (Waikiki)" }, + { HDA_CODEC (CONEXANT, 0x5051), 0x0000, "Conexant CX20561 (Hermosa)" }, + { HDA_CODEC (CONEXANT, 0x5066), 0x0000, "Conexant CX20582 (Pebble)" }, + { HDA_CODEC (CONEXANT, 0x5067), 0x0000, "Conexant CX20583 (Pebble HSF)" }, + { HDA_CODEC (CONEXANT, 0x5068), 0x0000, "Conexant CX20584" }, + { HDA_CODEC (CONEXANT, 0x5069), 0x0000, "Conexant CX20585" }, + { HDA_CODEC (CONEXANT, 0x506C), 0x0000, "Conexant CX20588" }, + { HDA_CODEC (CONEXANT, 0x506E), 0x0000, "Conexant CX20590" }, + { HDA_CODEC (CONEXANT, 0x5097), 0x0000, "Conexant CX20631" }, + { HDA_CODEC (CONEXANT, 0x5098), 0x0000, "Conexant CX20632" }, + { HDA_CODEC (CONEXANT, 0x50A1), 0x0000, "Conexant CX20641" }, + { HDA_CODEC (CONEXANT, 0x50A2), 0x0000, "Conexant CX20642" }, + { HDA_CODEC (CONEXANT, 0x50AB), 0x0000, "Conexant CX20651" }, + { HDA_CODEC (CONEXANT, 0x50AC), 0x0000, "Conexant CX20652" }, + { HDA_CODEC (CONEXANT, 0x50B8), 0x0000, "Conexant CX20664" }, + { HDA_CODEC (CONEXANT, 0x50B9), 0x0000, "Conexant CX20665" }, + { HDA_CODEC (CONEXANT, 0xFFFF), 0x0000, "Conexant (Unknown)" }, + /// + /// Creative. + /// + { HDA_CODEC (CREATIVE, 0x000A), 0x0000, "Creative CA0110-IBG" }, + { HDA_CODEC (CREATIVE, 0x000B), 0x0000, "Creative CA0110-IBG" }, + { HDA_CODEC (CREATIVE, 0x000D), 0x0000, "Creative SB0880 X-Fi" }, + { HDA_CODEC (CREATIVE, 0x0011), 0x0000, "Creative CA0132" }, + { HDA_CODEC (CREATIVE, 0xFFFF), 0x0000, "Creative (Unknown)" }, + /// + /// CMedia. + /// + { HDA_CODEC (CMEDIA, 0xFFFF), 0x0000, "C-Media (Unknown)" }, + { HDA_CODEC (CMEDIA2, 0xFFFF), 0x0000, "C-Media (Unknown)" }, + /// + /// IDT. + /// + { HDA_CODEC (SIGMATEL, 0x7698), 0x0000, "IDT 92HD005" }, + { HDA_CODEC (SIGMATEL, 0x7699), 0x0000, "IDT 92HD005D" }, + { HDA_CODEC (SIGMATEL, 0x7645), 0x0000, "IDT 92HD206X" }, + { HDA_CODEC (SIGMATEL, 0x7646), 0x0000, "IDT 92HD206D" }, + { HDA_CODEC (IDT, 0x76E8), 0x0000, "IDT 92HD66B1X5" }, + { HDA_CODEC (IDT, 0x76E9), 0x0000, "IDT 92HD66B2X5" }, + { HDA_CODEC (IDT, 0x76EA), 0x0000, "IDT 92HD66B3X5" }, + { HDA_CODEC (IDT, 0x76EB), 0x0000, "IDT 92HD66C1X5" }, + { HDA_CODEC (IDT, 0x76EC), 0x0000, "IDT 92HD66C2X5" }, + { HDA_CODEC (IDT, 0x76ED), 0x0000, "IDT 92HD66C3X5" }, + { HDA_CODEC (IDT, 0x76EE), 0x0000, "IDT 92HD66B1X3" }, + { HDA_CODEC (IDT, 0x76EF), 0x0000, "IDT 92HD66B2X3" }, + { HDA_CODEC (IDT, 0x76F0), 0x0000, "IDT 92HD66B3X3" }, + { HDA_CODEC (IDT, 0x76F1), 0x0000, "IDT 92HD66C1X3" }, + { HDA_CODEC (IDT, 0x76F2), 0x0000, "IDT 92HD66C2X3" }, + { HDA_CODEC (IDT, 0x76F3), 0x0000, "IDT 92HD66C3_65" }, + { HDA_CODEC (SIGMATEL, 0x7638), 0x0000, "IDT 92HD700X" }, + { HDA_CODEC (SIGMATEL, 0x7639), 0x0000, "IDT 92HD700D" }, + { HDA_CODEC (IDT, 0x76B6), 0x0000, "IDT 92HD71B5" }, + { HDA_CODEC (IDT, 0x76B7), 0x0000, "IDT 92HD71B5" }, + { HDA_CODEC (IDT, 0x76B4), 0x0000, "IDT 92HD71B6" }, + { HDA_CODEC (IDT, 0x76B5), 0x0000, "IDT 92HD71B6" }, + { HDA_CODEC (IDT, 0x76B2), 0x0000, "IDT 92HD71B7" }, + { HDA_CODEC (IDT, 0x76B3), 0x0000, "IDT 92HD71B7" }, + { HDA_CODEC (IDT, 0x76B0), 0x0000, "IDT 92HD71B8" }, + { HDA_CODEC (IDT, 0x76B1), 0x0000, "IDT 92HD71B8" }, + { HDA_CODEC (IDT, 0x7675), 0x0000, "IDT 92HD73C1" }, + { HDA_CODEC (IDT, 0x7674), 0x0000, "IDT 92HD73D1" }, + { HDA_CODEC (IDT, 0x7676), 0x0000, "IDT 92HD73E1" }, + { HDA_CODEC (IDT, 0x7608), 0x0000, "IDT 92HD75B3" }, + { HDA_CODEC (IDT, 0x7603), 0x0000, "IDT 92HD75BX" }, + { HDA_CODEC (IDT, 0x76D5), 0x0000, "IDT 92HD81B1C" }, + { HDA_CODEC (IDT, 0x7605), 0x0000, "IDT 92HD81B1X" }, + { HDA_CODEC (IDT, 0x76D4), 0x0000, "IDT 92HD83C1C" }, + { HDA_CODEC (IDT, 0x7604), 0x0000, "IDT 92HD83C1X" }, + { HDA_CODEC (IDT, 0x76D1), 0x0000, "IDT 92HD87B1/3" }, + { HDA_CODEC (IDT, 0x76D9), 0x0000, "IDT 92HD87B2/4" }, + { HDA_CODEC (IDT, 0x76C0), 0x0000, "IDT 92HD89C3" }, + { HDA_CODEC (IDT, 0x76C1), 0x0000, "IDT 92HD89C2" }, + { HDA_CODEC (IDT, 0x76C2), 0x0000, "IDT 92HD89C1" }, + { HDA_CODEC (IDT, 0x76C3), 0x0000, "IDT 92HD89B3" }, + { HDA_CODEC (IDT, 0x76C4), 0x0000, "IDT 92HD89B2" }, + { HDA_CODEC (IDT, 0x76C5), 0x0000, "IDT 92HD89B1" }, + { HDA_CODEC (IDT, 0x76C6), 0x0000, "IDT 92HD89E3" }, + { HDA_CODEC (IDT, 0x76C7), 0x0000, "IDT 92HD89E2" }, + { HDA_CODEC (IDT, 0x76C8), 0x0000, "IDT 92HD89E1" }, + { HDA_CODEC (IDT, 0x76C9), 0x0000, "IDT 92HD89D3" }, + { HDA_CODEC (IDT, 0x76CA), 0x0000, "IDT 92HD89D2" }, + { HDA_CODEC (IDT, 0x76CB), 0x0000, "IDT 92HD89D1" }, + { HDA_CODEC (IDT, 0x76CC), 0x0000, "IDT 92HD89F3" }, + { HDA_CODEC (IDT, 0x76CD), 0x0000, "IDT 92HD89F2" }, + { HDA_CODEC (IDT, 0x76CE), 0x0000, "IDT 92HD89F1" }, + { HDA_CODEC (IDT, 0x76E7), 0x0000, "IDT 92HD90BXX" }, + { HDA_CODEC (IDT, 0x76E0), 0x0000, "IDT 92HD91BXX" }, + { HDA_CODEC (IDT, 0x76Df), 0x0000, "IDT 92HD93BXX" }, + { HDA_CODEC (IDT, 0x76E3), 0x0000, "IDT 92HD98BXX" }, + { HDA_CODEC (IDT, 0x76E5), 0x0000, "IDT 92HD99BXX" }, + { HDA_CODEC (IDT, 0xFFFF), 0x0000, "IDT (Unknown)" }, + /// + /// Intel. + /// + { HDA_CODEC (INTEL, 0x29FB), 0x0000, "Intel Crestline HDMI" }, + { HDA_CODEC (INTEL, 0x2801), 0x0000, "Intel Bearlake HDMI" }, + { HDA_CODEC (INTEL, 0x2802), 0x0000, "Intel Cantiga HDMI" }, + { HDA_CODEC (INTEL, 0x2803), 0x0000, "Intel Eaglelake HDMI" }, + { HDA_CODEC (INTEL, 0x2804), 0x0000, "Intel Ibex Peak HDMI" }, + { HDA_CODEC (INTEL, 0x0054), 0x0000, "Intel Ibex Peak HDMI" }, + { HDA_CODEC (INTEL, 0x2805), 0x0000, "Intel Cougar Point HDMI" }, + { HDA_CODEC (INTEL, 0x2806), 0x0000, "Intel Panther Point HDMI" }, + { HDA_CODEC (INTEL, 0x2807), 0x0000, "Intel Haswell HDMI" }, + { HDA_CODEC (INTEL, 0x2808), 0x0000, "Intel Broadwell HDMI" }, + { HDA_CODEC (INTEL, 0x2809), 0x0000, "Intel Skylake HDMI" }, + { HDA_CODEC (INTEL, 0x280A), 0x0000, "Intel Broxton HDMI" }, + { HDA_CODEC (INTEL, 0x280B), 0x0000, "Intel Kaby Lake HDMI" }, + { HDA_CODEC (INTEL, 0x280C), 0x0000, "Intel Cannon Lake HDMI" }, + { HDA_CODEC (INTEL, 0x280D), 0x0000, "Intel Gemini Lake HDMI" }, + { HDA_CODEC (INTEL, 0x2800), 0x0000, "Intel Gemini Lake HDMI" }, + { HDA_CODEC (INTEL, 0xFFFF), 0x0000, "Intel (Unknown)" }, + /// + /// Motorola. + /// + { HDA_CODEC (MOTO, 0xFFFF), 0x0000, "Motorola (Unknown)" }, + /// + /// Silicon Image. + /// + { HDA_CODEC (SII, 0xFFFF), 0x0000, "Silicon Image (Unknown)" }, + /// + /// LSI - Lucent/Agere. + /// + { HDA_CODEC (AGERE, 0xFFFF), 0x0000, "LSI (Unknown)" }, + /// + /// Chrontel. + /// + { HDA_CODEC (CHRONTEL, 0xFFFF), 0x0000, "Chrontel (Unknown)" }, + /// + /// LG. + /// + { HDA_CODEC (LG, 0xFFFF), 0x0000, "LG (Unknown)" }, + /// + /// Wolfson Microelectronics. + /// + { HDA_CODEC (WOLFSON, 0xFFFF), 0x0000, "Wolfson Microelectronics (Unknown)" }, + /// + /// QEMU. + /// + { HDA_CODEC (QEMU, 0xFFFF), 0x0000, "QEMU (Unknown)" }, + /// + /// Nvidia. + /// + { HDA_CODEC (NVIDIA, 0xFFFF), 0x0000, "Nvidia (Unknown)" }, + /// + /// Realtek. + /// + { HDA_CODEC (REALTEK, 0x0221), 0x0000, "Realtek ALC221" }, + { HDA_CODEC (REALTEK, 0x0225), 0x0000, "Realtek ALC225" }, + { HDA_CODEC (REALTEK, 0x0230), 0x0000, "Realtek ALC230" }, + { HDA_CODEC (REALTEK, 0x0233), 0x0000, "Realtek ALC233" }, + { HDA_CODEC (REALTEK, 0x0235), 0x0000, "Realtek ALC235" }, + { HDA_CODEC (REALTEK, 0x0236), 0x0000, "Realtek ALC236" }, + { HDA_CODEC (REALTEK, 0x0255), 0x0000, "Realtek ALC255" }, + { HDA_CODEC (REALTEK, 0x0256), 0x0000, "Realtek ALC256" }, + { HDA_CODEC (REALTEK, 0x0257), 0x0000, "Realtek ALC257" }, + { HDA_CODEC (REALTEK, 0x0260), 0x0000, "Realtek ALC260" }, + { HDA_CODEC (REALTEK, 0x0262), 0x0000, "Realtek ALC262" }, + { HDA_CODEC (REALTEK, 0x0267), 0x0000, "Realtek ALC267" }, + { HDA_CODEC (REALTEK, 0x0268), 0x0000, "Realtek ALC268" }, + { HDA_CODEC (REALTEK, 0x0269), 0x0000, "Realtek ALC269" }, + { HDA_CODEC (REALTEK, 0x0270), 0x0000, "Realtek ALC270" }, + { HDA_CODEC (REALTEK, 0x0272), 0x0000, "Realtek ALC272" }, + { HDA_CODEC (REALTEK, 0x0273), 0x0000, "Realtek ALC273" }, + { HDA_CODEC (REALTEK, 0x0275), 0x0000, "Realtek ALC275" }, + { HDA_CODEC (REALTEK, 0x0276), 0x0000, "Realtek ALC276" }, + { HDA_CODEC (REALTEK, 0x0280), 0x0000, "Realtek ALC280" }, + { HDA_CODEC (REALTEK, 0x0282), 0x0000, "Realtek ALC282" }, + { HDA_CODEC (REALTEK, 0x0283), 0x0000, "Realtek ALC283" }, + { HDA_CODEC (REALTEK, 0x0284), 0x0000, "Realtek ALC284" }, + { HDA_CODEC (REALTEK, 0x0285), 0x0000, "Realtek ALC285" }, + { HDA_CODEC (REALTEK, 0x0286), 0x0000, "Realtek ALC286" }, + { HDA_CODEC (REALTEK, 0x0288), 0x0000, "Realtek ALC288" }, + { HDA_CODEC (REALTEK, 0x0289), 0x0000, "Realtek ALC289" }, + { HDA_CODEC (REALTEK, 0x0290), 0x0000, "Realtek ALC290" }, + { HDA_CODEC (REALTEK, 0x0292), 0x0000, "Realtek ALC292" }, + { HDA_CODEC (REALTEK, 0x0293), 0x0000, "Realtek ALC293" }, + { HDA_CODEC (REALTEK, 0x0294), 0x0000, "Realtek ALC294" }, + { HDA_CODEC (REALTEK, 0x0295), 0x0000, "Realtek ALC295" }, + { HDA_CODEC (REALTEK, 0x0298), 0x0000, "Realtek ALC298" }, + { HDA_CODEC (REALTEK, 0x0660), 0x0000, "Realtek ALC660" }, + { HDA_CODEC (REALTEK, 0x0662), 0x0002, "Realtek ALC662v2" }, + { HDA_CODEC (REALTEK, 0x0662), 0x0000, "Realtek ALC662" }, + { HDA_CODEC (REALTEK, 0x0663), 0x0000, "Realtek ALC663" }, + { HDA_CODEC (REALTEK, 0x0665), 0x0000, "Realtek ALC665" }, + { HDA_CODEC (REALTEK, 0x0668), 0x0000, "Realtek ALC668" }, + { HDA_CODEC (REALTEK, 0x0670), 0x0000, "Realtek ALC670" }, + { HDA_CODEC (REALTEK, 0x0671), 0x0000, "Realtek ALC671" }, + { HDA_CODEC (REALTEK, 0x0680), 0x0000, "Realtek ALC680" }, + { HDA_CODEC (REALTEK, 0x0861), 0x0000, "Realtek ALC861" }, + { HDA_CODEC (REALTEK, 0x0862), 0x0000, "Realtek ALC861-VD" }, + { HDA_CODEC (REALTEK, 0x0880), 0x0000, "Realtek ALC880" }, + { HDA_CODEC (REALTEK, 0x0882), 0x0000, "Realtek ALC882" }, + { HDA_CODEC (REALTEK, 0x0883), 0x0000, "Realtek ALC883" }, + { HDA_CODEC (REALTEK, 0x0885), 0x0103, "Realtek ALC889A" }, + { HDA_CODEC (REALTEK, 0x0885), 0x0101, "Realtek ALC889A" }, + { HDA_CODEC (REALTEK, 0x0885), 0x0000, "Realtek ALC885" }, + { HDA_CODEC (REALTEK, 0x0887), 0x0302, "Realtek ALC888B" }, + { HDA_CODEC (REALTEK, 0x0887), 0x0002, "Realtek ALC887-VD2" }, + { HDA_CODEC (REALTEK, 0x0887), 0x0001, "Realtek ALC887-VD" }, + { HDA_CODEC (REALTEK, 0x0887), 0x0000, "Realtek ALC887" }, + { HDA_CODEC (REALTEK, 0x0888), 0x0003, "Realtek ALC888S-VD" }, + { HDA_CODEC (REALTEK, 0x0888), 0x0002, "Realtek ALC888S-VC" }, + { HDA_CODEC (REALTEK, 0x0888), 0x0001, "Realtek ALC888S" }, + { HDA_CODEC (REALTEK, 0x0888), 0x0000, "Realtek ALC888" }, + { HDA_CODEC (REALTEK, 0x0889), 0x0000, "Realtek ALC889" }, + { HDA_CODEC (REALTEK, 0x0892), 0x0000, "Realtek ALC892" }, + { HDA_CODEC (REALTEK, 0x0898), 0x0000, "Realtek ALC898" }, + { HDA_CODEC (REALTEK, 0x0899), 0x0000, "Realtek ALC899" }, + { HDA_CODEC (REALTEK, 0x0900), 0x0000, "Realtek ALC1150" }, + { HDA_CODEC (REALTEK, 0x1220), 0x0000, "Realtek ALC1220" }, + { HDA_CODEC (REALTEK, 0xFFFF), 0x0000, "Realtek (Unknown)" }, + /// + /// Sigmatel. + /// + { HDA_CODEC (SIGMATEL, 0x7661), 0x0000, "Sigmatel CXD9872RD/K" }, + { HDA_CODEC (SIGMATEL, 0x7664), 0x0000, "Sigmatel CXD9872AKD" }, + { HDA_CODEC (SIGMATEL, 0x7691), 0x0000, "Sigmatel STAC9200D" }, + { HDA_CODEC (SIGMATEL, 0x76A2), 0x0000, "Sigmatel STAC9204X" }, + { HDA_CODEC (SIGMATEL, 0x76A3), 0x0000, "Sigmatel STAC9204D" }, + { HDA_CODEC (SIGMATEL, 0x76A0), 0x0000, "Sigmatel STAC9205X" }, + { HDA_CODEC (SIGMATEL, 0x76A1), 0x0000, "Sigmatel STAC9205D" }, + { HDA_CODEC (SIGMATEL, 0x7690), 0x0000, "Sigmatel STAC9220" }, + { HDA_CODEC (SIGMATEL, 0x7882), 0x0000, "Sigmatel STAC9220_A1" }, + { HDA_CODEC (SIGMATEL, 0x7880), 0x0000, "Sigmatel STAC9220_A2" }, + { HDA_CODEC (SIGMATEL, 0x7680), 0x0000, "Sigmatel STAC9221" }, + { HDA_CODEC (SIGMATEL, 0x7682), 0x0000, "Sigmatel STAC9221_A2" }, + { HDA_CODEC (SIGMATEL, 0x7683), 0x0000, "Sigmatel STAC9221D" }, + { HDA_CODEC (SIGMATEL, 0x7681), 0x0000, "Sigmatel STAC9220D/9223D" }, + { HDA_CODEC (SIGMATEL, 0x7618), 0x0000, "Sigmatel STAC9227X" }, + { HDA_CODEC (SIGMATEL, 0x7619), 0x0000, "Sigmatel STAC9227D" }, + { HDA_CODEC (SIGMATEL, 0x7616), 0x0000, "Sigmatel STAC9228X" }, + { HDA_CODEC (SIGMATEL, 0x7617), 0x0000, "Sigmatel STAC9228D" }, + { HDA_CODEC (SIGMATEL, 0x7614), 0x0000, "Sigmatel STAC9229X" }, + { HDA_CODEC (SIGMATEL, 0x7615), 0x0000, "Sigmatel STAC9229D" }, + { HDA_CODEC (SIGMATEL, 0x7612), 0x0000, "Sigmatel STAC9230X" }, + { HDA_CODEC (SIGMATEL, 0x7613), 0x0000, "Sigmatel STAC9230D" }, + { HDA_CODEC (SIGMATEL, 0x7634), 0x0000, "Sigmatel STAC9250" }, + { HDA_CODEC (SIGMATEL, 0x7636), 0x0000, "Sigmatel STAC9251" }, + { HDA_CODEC (SIGMATEL, 0x76A4), 0x0000, "Sigmatel STAC9255" }, + { HDA_CODEC (SIGMATEL, 0x76A5), 0x0000, "Sigmatel STAC9255D" }, + { HDA_CODEC (SIGMATEL, 0x76A6), 0x0000, "Sigmatel STAC9254" }, + { HDA_CODEC (SIGMATEL, 0x76A7), 0x0000, "Sigmatel STAC9254D" }, + { HDA_CODEC (SIGMATEL, 0x7626), 0x0000, "Sigmatel STAC9271X" }, + { HDA_CODEC (SIGMATEL, 0x7627), 0x0000, "Sigmatel STAC9271D" }, + { HDA_CODEC (SIGMATEL, 0x7624), 0x0000, "Sigmatel STAC9272X" }, + { HDA_CODEC (SIGMATEL, 0x7625), 0x0000, "Sigmatel STAC9272D" }, + { HDA_CODEC (SIGMATEL, 0x7622), 0x0000, "Sigmatel STAC9273X" }, + { HDA_CODEC (SIGMATEL, 0x7623), 0x0000, "Sigmatel STAC9273D" }, + { HDA_CODEC (SIGMATEL, 0x7620), 0x0000, "Sigmatel STAC9274" }, + { HDA_CODEC (SIGMATEL, 0x7621), 0x0000, "Sigmatel STAC9274D" }, + { HDA_CODEC (SIGMATEL, 0x7628), 0x0000, "Sigmatel STAC9274X5NH" }, + { HDA_CODEC (SIGMATEL, 0x7629), 0x0000, "Sigmatel STAC9274D5NH" }, + { HDA_CODEC (SIGMATEL, 0x7662), 0x0000, "Sigmatel STAC9872AK" }, + { HDA_CODEC (SIGMATEL, 0xFFFF), 0x0000, "Sigmatel (Unknown)" }, + /// + /// VIA. + /// + { HDA_CODEC (VIA, 0x1708), 0x0000, "VIA VT1708_8" }, + { HDA_CODEC (VIA, 0x1709), 0x0000, "VIA VT1708_9" }, + { HDA_CODEC (VIA, 0x170A), 0x0000, "VIA VT1708_A" }, + { HDA_CODEC (VIA, 0x170B), 0x0000, "VIA VT1708_B" }, + { HDA_CODEC (VIA, 0xE710), 0x0000, "VIA VT1709_0" }, + { HDA_CODEC (VIA, 0xE711), 0x0000, "VIA VT1709_1" }, + { HDA_CODEC (VIA, 0xE712), 0x0000, "VIA VT1709_2" }, + { HDA_CODEC (VIA, 0xE713), 0x0000, "VIA VT1709_3" }, + { HDA_CODEC (VIA, 0xE714), 0x0000, "VIA VT1709_4" }, + { HDA_CODEC (VIA, 0xE715), 0x0000, "VIA VT1709_5" }, + { HDA_CODEC (VIA, 0xE716), 0x0000, "VIA VT1709_6" }, + { HDA_CODEC (VIA, 0xE717), 0x0000, "VIA VT1709_7" }, + { HDA_CODEC (VIA, 0xE720), 0x0000, "VIA VT1708B_0" }, + { HDA_CODEC (VIA, 0xE721), 0x0000, "VIA VT1708B_1" }, + { HDA_CODEC (VIA, 0xE722), 0x0000, "VIA VT1708B_2" }, + { HDA_CODEC (VIA, 0xE723), 0x0000, "VIA VT1708B_3" }, + { HDA_CODEC (VIA, 0xE724), 0x0000, "VIA VT1708B_4" }, + { HDA_CODEC (VIA, 0xE725), 0x0000, "VIA VT1708B_5" }, + { HDA_CODEC (VIA, 0xE726), 0x0000, "VIA VT1708B_6" }, + { HDA_CODEC (VIA, 0xE727), 0x0000, "VIA VT1708B_7" }, + { HDA_CODEC (VIA, 0x0397), 0x0000, "VIA VT1708S_0" }, + { HDA_CODEC (VIA, 0x1397), 0x0000, "VIA VT1708S_1" }, + { HDA_CODEC (VIA, 0x2397), 0x0000, "VIA VT1708S_2" }, + { HDA_CODEC (VIA, 0x3397), 0x0000, "VIA VT1708S_3" }, + { HDA_CODEC (VIA, 0x4397), 0x0000, "VIA VT1708S_4" }, + { HDA_CODEC (VIA, 0x5397), 0x0000, "VIA VT1708S_5" }, + { HDA_CODEC (VIA, 0x6397), 0x0000, "VIA VT1708S_6" }, + { HDA_CODEC (VIA, 0x7397), 0x0000, "VIA VT1708S_7" }, + { HDA_CODEC (VIA, 0x0398), 0x0000, "VIA VT1702_0" }, + { HDA_CODEC (VIA, 0x1398), 0x0000, "VIA VT1702_1" }, + { HDA_CODEC (VIA, 0x2398), 0x0000, "VIA VT1702_2" }, + { HDA_CODEC (VIA, 0x3398), 0x0000, "VIA VT1702_3" }, + { HDA_CODEC (VIA, 0x4398), 0x0000, "VIA VT1702_4" }, + { HDA_CODEC (VIA, 0x5398), 0x0000, "VIA VT1702_5" }, + { HDA_CODEC (VIA, 0x6398), 0x0000, "VIA VT1702_6" }, + { HDA_CODEC (VIA, 0x7398), 0x0000, "VIA VT1702_7" }, + { HDA_CODEC (VIA, 0x0433), 0x0000, "VIA VT1716S_0" }, + { HDA_CODEC (VIA, 0xA721), 0x0000, "VIA VT1716S_1" }, + { HDA_CODEC (VIA, 0x0428), 0x0000, "VIA VT1718S_0" }, + { HDA_CODEC (VIA, 0x4428), 0x0000, "VIA VT1718S_1" }, + { HDA_CODEC (VIA, 0x0446), 0x0000, "VIA VT1802_0" }, + { HDA_CODEC (VIA, 0x8446), 0x0000, "VIA VT1802_1" }, + { HDA_CODEC (VIA, 0x0448), 0x0000, "VIA VT1812" }, + { HDA_CODEC (VIA, 0x0440), 0x0000, "VIA VT1818S" }, + { HDA_CODEC (VIA, 0x4441), 0x0000, "VIA VT1828S" }, + { HDA_CODEC (VIA, 0x0438), 0x0000, "VIA VT2002P_0" }, + { HDA_CODEC (VIA, 0x4438), 0x0000, "VIA VT2002P_1" }, + { HDA_CODEC (VIA, 0x0441), 0x0000, "VIA VT2020" }, + { HDA_CODEC (VIA, 0xFFFF), 0x0000, "VIA (Unknown)" }, +}; + + +CONST CHAR8 * +OcHdaControllerGetName ( + IN UINT32 ControllerId + ) +{ + UINTN ControllerIndex; + + // + // Try to match exact controller name. + // + for (ControllerIndex = 0; ControllerIndex < ARRAY_SIZE (mHdaControllerList); ++ControllerIndex) { + if (mHdaControllerList[ControllerIndex].Id == ControllerId) { + return mHdaControllerList[ControllerIndex].Name; + } + } + + // + // Try again with a generic ID on failure. + // + ControllerId = GET_PCI_GENERIC_ID (ControllerId); + for (ControllerIndex = 0; ControllerIndex < ARRAY_SIZE (mHdaControllerList); ++ControllerIndex) { + if (mHdaControllerList[ControllerIndex].Id == ControllerId) { + return mHdaControllerList[ControllerIndex].Name; + } + } + + // + // Return unknown on failure. + // + return HDA_CONTROLLER_MODEL_GENERIC; +} + +CONST CHAR8 * +OcHdaCodecGetName ( + IN UINT32 CodecId, + IN UINT16 RevisionId + ) +{ + UINTN CodecIndex; + + // + // Try to match exact codec name. + // + for (CodecIndex = 0; CodecIndex < ARRAY_SIZE (mHdaCodecList); ++CodecIndex) { + if (mHdaCodecList[CodecIndex].Id == CodecId && mHdaCodecList[CodecIndex].Rev <= RevisionId) { + return mHdaCodecList[CodecIndex].Name; + } + } + + // + // Try again with a generic ID on failure. + // + CodecId = GET_CODEC_GENERIC_ID (CodecId); + for (CodecIndex = 0; CodecIndex < ARRAY_SIZE (mHdaCodecList); ++CodecIndex) { + if (mHdaCodecList[CodecIndex].Id == CodecId) { + return mHdaCodecList[CodecIndex].Name; + } + } + + // + // Return unknown on failure. + // + return HDA_CODEC_MODEL_GENERIC; +} diff --git a/Library/OcHdaDevicesLib/OcHdaDevicesLib.inf b/Library/OcHdaDevicesLib/OcHdaDevicesLib.inf new file mode 100644 index 00000000..a2568980 --- /dev/null +++ b/Library/OcHdaDevicesLib/OcHdaDevicesLib.inf @@ -0,0 +1,45 @@ +## @file +# OcHdaDevicesLib +# +# Copyright (c) 2020, vit9696 +# +# All rights reserved. +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = OcHdaDevicesLib + FILE_GUID = 42B4B825-FF67-4F9A-B891-E188A99C2067 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + LIBRARY_CLASS = OcHdaDevicesLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER SMM_CORE UEFI_APPLICATION UEFI_DRIVER + +# +# VALID_ARCHITECTURES = X64 +# + +[Sources] + OcHdaDevicesInternal.h + OcHdaDevicesLib.c + +[Packages] + MdePkg/MdePkg.dec + OcSupportPkg/OcSupportPkg.dec + +[LibraryClasses] + BaseLib + BaseMemoryLib + DebugLib + MemoryAllocationLib + PciLib + PrintLib + UefiBootServicesTableLib diff --git a/OcSupportPkg.dec b/OcSupportPkg.dec index 5ce8774d..24e18fcc 100644 --- a/OcSupportPkg.dec +++ b/OcSupportPkg.dec @@ -225,6 +225,9 @@ ## @libraryclass OcHashServicesLib|Include/Library/OcHashServicesLib.h + ## @libraryclass + OcHdaDevicesLib|Include/Library/OcHdaDevicesLib.h + ## @libraryclass OcHeciLib|Include/Library/OcHeciLib.h diff --git a/OcSupportPkg.dsc b/OcSupportPkg.dsc index 39519075..e9ae38d4 100644 --- a/OcSupportPkg.dsc +++ b/OcSupportPkg.dsc @@ -69,6 +69,7 @@ OcFirmwareVolumeLib|OcSupportPkg/Library/OcFirmwareVolumeLib/OcFirmwareVolumeLib.inf OcGuardLib|OcSupportPkg/Library/OcGuardLib/OcGuardLib.inf OcHashServicesLib|OcSupportPkg/Library/OcHashServicesLib/OcHashServicesLib.inf + OcHdaDevicesLib|OcSupportPkg/Library/OcHdaDevicesLib/OcHdaDevicesLib.inf OcHeciLib|OcSupportPkg/Library/OcHeciLib/OcHeciLib.inf OcInputLib|OcSupportPkg/Library/OcInputLib/OcInputLib.inf OcMachoLib|OcSupportPkg/Library/OcMachoLib/OcMachoLib.inf @@ -143,6 +144,7 @@ OcSupportPkg/Library/OcFirmwareVolumeLib/OcFirmwareVolumeLib.inf OcSupportPkg/Library/OcGuardLib/OcGuardLib.inf OcSupportPkg/Library/OcHashServicesLib/OcHashServicesLib.inf + OcSupportPkg/Library/OcHdaDevicesLib/OcHdaDevicesLib.inf OcSupportPkg/Library/OcHeciLib/OcHeciLib.inf OcSupportPkg/Library/OcInputLib/OcInputLib.inf OcSupportPkg/Library/OcMachoLib/OcMachoLib.inf