From 20d4042458323eb2cfe8ed90f10ab762086a35f4 Mon Sep 17 00:00:00 2001 From: Nicholas Sudsgaard Date: Thu, 7 Aug 2025 09:18:52 +0900 Subject: [PATCH] mb/asrock: Replace verb tables with reworked implementation Some boards did not provide the chip name for the audio codecs in the comments, and therefore we made the following assumptions based off the vendor ID: fatal1ty_z87_professional: - 0x11020011 -> Creative CA0132[3] It should be noted that some factors (e.g. revision) can cause the chip name to differ even with the same vendor ID. This is especially common for Realtek audio codecs. The following chip names were identified using external sources: b75m-itx: - 0x10ec0892 -> Realtek ALC892[1][5] b75pro3-m: - 0x10ec0892 -> Realtek ALC892[2] z87_extreme3: - 0x10ec0892 -> Realtek ALC892[1][6] z87_extreme4: - 0x10ec0900 -> Realtek ALC1150[4][7] z87_pro4: - 0x10ec0892 -> Realtek ALC892[1][8] z87e-itx: - 0x10ec0900 -> Realtek ALC1150[4][9] z87m_extreme4: - 0x10ec0900 -> Realtek ALC1150[4][10] z87m_oc_formula: - 0x10ec0900 -> Realtek ALC1150[4][11] The Kconfigs were reverted using the following command: find src/mainboard/asrock -name 'Kconfig' | xargs git checkout main It should be noted that we do not modifiy the verb tables in any case, as it would break the regression test script mentioned in the TEST section below. For an overall rationale for this rework, see CB:88656. References: [1] Linux kernel: sound/hda/codecs/realtek/alc662.c:1101 [2] coreboot board status: kernel_log.txt [3] Linux kernel: sound/hda/codecs/ca0132.c:10144 [4] Linux kernel: sound/hda/codecs/realtek/alc882.c:844 [5] https://www.asrock.com/mb/Intel/B75M-ITX/index.asp [6] https://www.asrock.com/mb/intel/Z87%20Extreme3/ [7] https://www.asrock.com/mb/intel/Z87%20Extreme4/ [8] https://www.asrock.com/mb/Intel/Z87%20Pro4/ [9] https://www.asrock.com/mb/Intel/Z87E-ITX/ [10] https://www.asrock.com/mb/Intel/Z87M%20Extreme4/index.asp [11] https://www.asrock.com/mb/intel/z87m%20oc%20formula/ TEST= All boards passed regression test (CB:88763) Change-Id: I60ba4e8e048dfbf8ca5969251fd448ce3644d9e0 Signed-off-by: Nicholas Sudsgaard Reviewed-on: https://review.coreboot.org/c/coreboot/+/88661 Tested-by: build bot (Jenkins) Reviewed-by: Matt DeVillier Reviewed-by: Maxim Polyakov --- src/mainboard/asrock/b75m-itx/Kconfig | 1 - src/mainboard/asrock/b75m-itx/hda_verb.c | 30 +++++++--- src/mainboard/asrock/b75pro3-m/Kconfig | 1 - src/mainboard/asrock/b75pro3-m/hda_verb.c | 30 +++++++--- src/mainboard/asrock/b85m_pro4/Kconfig | 1 - src/mainboard/asrock/b85m_pro4/hda_verb.c | 43 ++++++++++---- .../asrock/fatal1ty_z87_professional/Kconfig | 1 - .../fatal1ty_z87_professional/hda_verb.c | 18 ++++-- src/mainboard/asrock/g41c-gs/Kconfig | 1 - src/mainboard/asrock/g41c-gs/hda_verb.c | 57 +++++++++++-------- src/mainboard/asrock/h110m/Kconfig | 1 - src/mainboard/asrock/h110m/hda_verb.c | 31 +++++++--- src/mainboard/asrock/h77pro4-m/Kconfig | 1 - src/mainboard/asrock/h77pro4-m/hda_verb.c | 30 +++++++--- src/mainboard/asrock/h81m-hds/Kconfig | 1 - src/mainboard/asrock/h81m-hds/hda_verb.c | 17 ++++-- src/mainboard/asrock/imb-1222/Kconfig | 1 - src/mainboard/asrock/imb-1222/hda_verb.c | 30 +++++++--- src/mainboard/asrock/z87_extreme3/Kconfig | 1 - src/mainboard/asrock/z87_extreme3/hda_verb.c | 17 ++++-- src/mainboard/asrock/z87_extreme4/Kconfig | 1 - src/mainboard/asrock/z87_extreme4/hda_verb.c | 17 ++++-- src/mainboard/asrock/z87_pro4/Kconfig | 1 - src/mainboard/asrock/z87_pro4/hda_verb.c | 17 ++++-- src/mainboard/asrock/z87e-itx/Kconfig | 1 - src/mainboard/asrock/z87e-itx/hda_verb.c | 17 ++++-- src/mainboard/asrock/z87m_extreme4/Kconfig | 1 - src/mainboard/asrock/z87m_extreme4/hda_verb.c | 17 ++++-- src/mainboard/asrock/z87m_oc_formula/Kconfig | 1 - .../asrock/z87m_oc_formula/hda_verb.c | 17 ++++-- src/mainboard/asrock/z97_extreme6/Kconfig | 1 - src/mainboard/asrock/z97_extreme6/hda_verb.c | 17 ++++-- src/mainboard/asrock/z97e-itx_ac/Kconfig | 1 - src/mainboard/asrock/z97e-itx_ac/hda_verb.c | 17 ++++-- 34 files changed, 312 insertions(+), 127 deletions(-) diff --git a/src/mainboard/asrock/b75m-itx/Kconfig b/src/mainboard/asrock/b75m-itx/Kconfig index 47634047a2..b882d6b8fc 100644 --- a/src/mainboard/asrock/b75m-itx/Kconfig +++ b/src/mainboard/asrock/b75m-itx/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_B75M_ITX config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/b75m-itx/hda_verb.c b/src/mainboard/asrock/b75m-itx/hda_verb.c index 37f763ed65..b06bb37a5b 100644 --- a/src/mainboard/asrock/b75m-itx/hda_verb.c +++ b/src/mainboard/asrock/b75m-itx/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek */ - 0x18498892, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x18498892), AZALIA_PIN_CFG(0, 0x11, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,10 +18,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4005e601), AZALIA_PIN_CFG(0, 0x1e, 0x01452130), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(3, 0x80860101), AZALIA_PIN_CFG(3, 0x05, 0x18560010), AZALIA_PIN_CFG(3, 0x06, 0x18560020), @@ -33,4 +29,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x18498892, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862806, + .subsystem_id = 0x80860101, + .address = 3, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/b75pro3-m/Kconfig b/src/mainboard/asrock/b75pro3-m/Kconfig index f7231c14d9..17d737f196 100644 --- a/src/mainboard/asrock/b75pro3-m/Kconfig +++ b/src/mainboard/asrock/b75pro3-m/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_B75PRO3_M config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select DRIVERS_ASMEDIA_ASM1061 select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/b75pro3-m/hda_verb.c b/src/mainboard/asrock/b75pro3-m/hda_verb.c index a3d894d6a1..d4250c185b 100644 --- a/src/mainboard/asrock/b75pro3-m/hda_verb.c +++ b/src/mainboard/asrock/b75pro3-m/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek */ - 0x18498892, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x18498892), AZALIA_PIN_CFG(0, 0x11, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,10 +18,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4005e601), AZALIA_PIN_CFG(0, 0x1e, 0x01452130), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(3, 0x80860101), AZALIA_PIN_CFG(3, 0x05, 0x18560010), AZALIA_PIN_CFG(3, 0x06, 0x18560020), @@ -33,4 +29,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x18498892, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862806, + .subsystem_id = 0x80860101, + .address = 3, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/b85m_pro4/Kconfig b/src/mainboard/asrock/b85m_pro4/Kconfig index 883547fdd1..65da20d4e0 100644 --- a/src/mainboard/asrock/b85m_pro4/Kconfig +++ b/src/mainboard/asrock/b85m_pro4/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_B85M_PRO4 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/b85m_pro4/hda_verb.c b/src/mainboard/asrock/b85m_pro4/hda_verb.c index 8b908c516c..39425d2e41 100644 --- a/src/mainboard/asrock/b85m_pro4/hda_verb.c +++ b/src/mainboard/asrock/b85m_pro4/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek ALC892 */ - 0x1849c892, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x1849c892), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x14, 0x01014020), @@ -17,10 +14,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x598301f0), AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x21, 0x0221102f), +}; - 0x10ec0887, /* Codec Vendor / Device ID: Realtek ALC887 */ - 0x1458a002, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_verbs[] = { AZALIA_SUBVENDOR(2, 0x1458a002), AZALIA_PIN_CFG(2, 0x11, 0x411110f0), AZALIA_PIN_CFG(2, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -36,10 +32,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(2, 0x1d, 0x4004c601), AZALIA_PIN_CFG(2, 0x1e, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(2, 0x1f, 0x41c46060), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel Haswell HDMI */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(3, 0x80860101), AZALIA_PIN_CFG(3, 0x05, 0x58560010), AZALIA_PIN_CFG(3, 0x06, 0x18560020), @@ -48,4 +43,32 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x1849c892, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { + .name = "Realtek ALC887", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x1458a002, + .address = 2, + .verbs = realtek_alc887_verbs, + .verb_count = ARRAY_SIZE(realtek_alc887_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862806, + .subsystem_id = 0x80860101, + .address = 3, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/fatal1ty_z87_professional/Kconfig b/src/mainboard/asrock/fatal1ty_z87_professional/Kconfig index 0081c11934..56bdad2d40 100644 --- a/src/mainboard/asrock/fatal1ty_z87_professional/Kconfig +++ b/src/mainboard/asrock/fatal1ty_z87_professional/Kconfig @@ -3,7 +3,6 @@ if BOARD_ASROCK_FATAL1TY_Z87_PROFESSIONAL config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select DRIVERS_ASMEDIA_ASM1061 select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/fatal1ty_z87_professional/hda_verb.c b/src/mainboard/asrock/fatal1ty_z87_professional/hda_verb.c index 9c381e650d..9566ac3d07 100644 --- a/src/mainboard/asrock/fatal1ty_z87_professional/hda_verb.c +++ b/src/mainboard/asrock/fatal1ty_z87_professional/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x11020011, /* Codec Vendor / Device ID: Creative */ - 0x18491020, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 creative_ca0132_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491020), AZALIA_PIN_CFG(0, 0x0b, 0x01014010), AZALIA_PIN_CFG(0, 0x0c, 0x014580f0), @@ -17,9 +14,20 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x12, 0x37a791f0), AZALIA_PIN_CFG(0, 0x13, 0x908700f0), AZALIA_PIN_CFG(0, 0x18, 0x500000f0), - }; const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Creative CA0132", + .vendor_id = 0x11020011, + .subsystem_id = 0x18491020, + .address = 0, + .verbs = creative_ca0132_verbs, + .verb_count = ARRAY_SIZE(creative_ca0132_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/g41c-gs/Kconfig b/src/mainboard/asrock/g41c-gs/Kconfig index 11f7d4f1a9..7ae84614a2 100644 --- a/src/mainboard/asrock/g41c-gs/Kconfig +++ b/src/mainboard/asrock/g41c-gs/Kconfig @@ -6,7 +6,6 @@ if BOARD_ASROCK_G41C_GS || BOARD_ASROCK_G41C_GS_R2_0 || \ config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select CPU_INTEL_SOCKET_LGA775 select NORTHBRIDGE_INTEL_X4X select SOUTHBRIDGE_INTEL_I82801GX diff --git a/src/mainboard/asrock/g41c-gs/hda_verb.c b/src/mainboard/asrock/g41c-gs/hda_verb.c index 134c34092f..467e9b3543 100644 --- a/src/mainboard/asrock/g41c-gs/hda_verb.c +++ b/src/mainboard/asrock/g41c-gs/hda_verb.c @@ -2,15 +2,7 @@ #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - /* Realtek ALC662 rev1 */ - 0x10ec0662, /* Vendor ID */ - 0x18493662, /* Subsystem ID */ - 10, /* Number of entries */ - - /* Pin Widget Verb Table */ - +static const u32 realtek_alc662_verbs_1[] = { AZALIA_PIN_CFG(0, 0x14, 0x01014010), AZALIA_PIN_CFG(0, 0x15, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x16, AZALIA_PIN_CFG_NC(0)), @@ -21,24 +13,13 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1c, 0x593301f0), AZALIA_PIN_CFG(0, 0x1d, 0x4004c601), AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), +}; - /* coreboot specific header */ - /* Intel Eaglelake HDMI */ - 0x80862803, /* Vendor ID */ - 0x80860101, /* Subsystem ID */ - 0x00000001, /* Number of entries */ - - /* Pin Widget Verb Table */ - +static const u32 intel_display_audio_verbs[] = { AZALIA_PIN_CFG(1, 0x03, 0x18560010), +}; - /* coreboot specific header */ - /* Realtek ALC662 rev1 */ - 0x10ec0662, /* Vendor ID */ - 0x1565821e, /* Subsystem ID */ - 10, /* Number of entries */ - - /* Pin Widget Verb Table */ +static const u32 realtek_alc662_verbs_2[] = { AZALIA_PIN_CFG(2, 0x14, 0x01014410), AZALIA_PIN_CFG(2, 0x15, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(2, 0x16, AZALIA_PIN_CFG_NC(0)), @@ -53,4 +34,32 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC662", + .vendor_id = 0x10ec0662, + .subsystem_id = 0x18493662, + .address = 0, + .verbs = realtek_alc662_verbs_1, + .verb_count = ARRAY_SIZE(realtek_alc662_verbs_1), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862803, + .subsystem_id = 0x80860101, + .address = 1, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { + .name = "Realtek ALC662", + .vendor_id = 0x10ec0662, + .subsystem_id = 0x1565821e, + .address = 2, + .verbs = realtek_alc662_verbs_2, + .verb_count = ARRAY_SIZE(realtek_alc662_verbs_2), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/h110m/Kconfig b/src/mainboard/asrock/h110m/Kconfig index 344831f03a..a470b6628d 100644 --- a/src/mainboard/asrock/h110m/Kconfig +++ b/src/mainboard/asrock/h110m/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_H110M_DVS config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/h110m/hda_verb.c b/src/mainboard/asrock/h110m/hda_verb.c index a19634e6f4..cf346a82d2 100644 --- a/src/mainboard/asrock/h110m/hda_verb.c +++ b/src/mainboard/asrock/h110m/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Codec Vendor / Device ID: Realtek ALC887 */ - 0x10438445, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438445), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,10 +18,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4026c629), AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862809, /* Codec Vendor / Device ID: Intel Skylake HDMI */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x05, 0x18560010), AZALIA_PIN_CFG(2, 0x06, 0x18560020), @@ -33,4 +29,25 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = { }; + +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC887", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x10438445, + .address = 0, + .verbs = realtek_alc887_verbs, + .verb_count = ARRAY_SIZE(realtek_alc887_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862809, + .subsystem_id = 0x80860101, + .address = 2, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/h77pro4-m/Kconfig b/src/mainboard/asrock/h77pro4-m/Kconfig index ab5d7b706a..a9918b5214 100644 --- a/src/mainboard/asrock/h77pro4-m/Kconfig +++ b/src/mainboard/asrock/h77pro4-m/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_H77PRO4_M config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select DRIVERS_ASMEDIA_ASM1061 select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/h77pro4-m/hda_verb.c b/src/mainboard/asrock/h77pro4-m/hda_verb.c index 7fbb3310a8..912ff52cf3 100644 --- a/src/mainboard/asrock/h77pro4-m/hda_verb.c +++ b/src/mainboard/asrock/h77pro4-m/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek ALC892 */ - 0x18498892, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x18498892), AZALIA_PIN_CFG(0, 0x11, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,10 +18,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4005e601), AZALIA_PIN_CFG(0, 0x1e, 0x01452130), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(3, 0x80860101), AZALIA_PIN_CFG(3, 0x05, 0x18560010), AZALIA_PIN_CFG(3, 0x06, 0x58560020), @@ -33,4 +29,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x18498892, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862806, + .subsystem_id = 0x80860101, + .address = 3, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/h81m-hds/Kconfig b/src/mainboard/asrock/h81m-hds/Kconfig index a3aff28514..4edd2bc387 100644 --- a/src/mainboard/asrock/h81m-hds/Kconfig +++ b/src/mainboard/asrock/h81m-hds/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_H81M_HDS config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_4096 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/h81m-hds/hda_verb.c b/src/mainboard/asrock/h81m-hds/hda_verb.c index eea210d1d0..1a5620fd29 100644 --- a/src/mainboard/asrock/h81m-hds/hda_verb.c +++ b/src/mainboard/asrock/h81m-hds/hda_verb.c @@ -3,10 +3,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0662, /* Realtek ALC662 rev1 */ - 0x18497662, /* Subsystem ID */ - 11, /* Number of entries */ +static const u32 realtek_alc662_verbs[] = { AZALIA_SUBVENDOR(1, 0x18497662), AZALIA_PIN_CFG(1, 0x14, 0x01014010), AZALIA_PIN_CFG(1, 0x15, 0x40000000), @@ -22,4 +19,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC662", + .vendor_id = 0x10ec0662, + .subsystem_id = 0x18497662, + .address = 1, + .verbs = realtek_alc662_verbs, + .verb_count = ARRAY_SIZE(realtek_alc662_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/imb-1222/Kconfig b/src/mainboard/asrock/imb-1222/Kconfig index dc40a3bc4a..93fe111acd 100644 --- a/src/mainboard/asrock/imb-1222/Kconfig +++ b/src/mainboard/asrock/imb-1222/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_IMB_1222 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_32768 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/imb-1222/hda_verb.c b/src/mainboard/asrock/imb-1222/hda_verb.c index c058d5e9ea..9997db894c 100644 --- a/src/mainboard/asrock/imb-1222/hda_verb.c +++ b/src/mainboard/asrock/imb-1222/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Realtek ALC887-VD */ - 0x1849588a, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_vd_verbs[] = { AZALIA_SUBVENDOR(0, 0x1849588a), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,10 +18,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4024c601), AZALIA_PIN_CFG(0, 0x1e, 0x01451140), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x8086280b, /* Intel Kabylake HDMI */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x05, 0x18560010), AZALIA_PIN_CFG(2, 0x06, 0x18560020), @@ -34,4 +30,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = { }; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC887-VD", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x1849588a, + .address = 0, + .verbs = realtek_alc887_vd_verbs, + .verb_count = ARRAY_SIZE(realtek_alc887_vd_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x8086280b, + .subsystem_id = 0x80860101, + .address = 2, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z87_extreme3/Kconfig b/src/mainboard/asrock/z87_extreme3/Kconfig index 42d10ccd2e..0b03123a7d 100644 --- a/src/mainboard/asrock/z87_extreme3/Kconfig +++ b/src/mainboard/asrock/z87_extreme3/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z87_EXTREME3 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/z87_extreme3/hda_verb.c b/src/mainboard/asrock/z87_extreme3/hda_verb.c index 8c07b9822b..550c58923d 100644 --- a/src/mainboard/asrock/z87_extreme3/hda_verb.c +++ b/src/mainboard/asrock/z87_extreme3/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek */ - 0x1849c892, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x1849c892), AZALIA_PIN_CFG(0, 0x11, 0x411111f0), AZALIA_PIN_CFG(0, 0x12, 0x411111f0), @@ -25,4 +22,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x1849c892, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z87_extreme4/Kconfig b/src/mainboard/asrock/z87_extreme4/Kconfig index 518ddc8b21..f2a2e7c723 100644 --- a/src/mainboard/asrock/z87_extreme4/Kconfig +++ b/src/mainboard/asrock/z87_extreme4/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z87_EXTREME4 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select DRIVERS_ASMEDIA_ASM1061 select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/z87_extreme4/hda_verb.c b/src/mainboard/asrock/z87_extreme4/hda_verb.c index ab7da869de..1399a3f3fb 100644 --- a/src/mainboard/asrock/z87_extreme4/hda_verb.c +++ b/src/mainboard/asrock/z87_extreme4/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0900, /* Codec Vendor / Device ID: Realtek */ - 0x18491151, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc1150_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491151), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x14, 0x01014010), @@ -21,4 +18,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1150", + .vendor_id = 0x10ec0900, + .subsystem_id = 0x18491151, + .address = 0, + .verbs = realtek_alc1150_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1150_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z87_pro4/Kconfig b/src/mainboard/asrock/z87_pro4/Kconfig index f65674a2b7..dee318d726 100644 --- a/src/mainboard/asrock/z87_pro4/Kconfig +++ b/src/mainboard/asrock/z87_pro4/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z87_PRO4 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/z87_pro4/hda_verb.c b/src/mainboard/asrock/z87_pro4/hda_verb.c index 038ad1f01f..2ac4972e4b 100644 --- a/src/mainboard/asrock/z87_pro4/hda_verb.c +++ b/src/mainboard/asrock/z87_pro4/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek */ - 0x18498892, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x18498892), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x12, 0x411111f0), @@ -25,4 +22,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x18498892, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z87e-itx/Kconfig b/src/mainboard/asrock/z87e-itx/Kconfig index 3e1b308cf2..9eebc90e68 100644 --- a/src/mainboard/asrock/z87e-itx/Kconfig +++ b/src/mainboard/asrock/z87e-itx/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z87E_ITX config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select GFX_GMA_ANALOG_I2C_HDMI_B select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/z87e-itx/hda_verb.c b/src/mainboard/asrock/z87e-itx/hda_verb.c index 7164c57149..ff58f69989 100644 --- a/src/mainboard/asrock/z87e-itx/hda_verb.c +++ b/src/mainboard/asrock/z87e-itx/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0900, /* Codec Vendor / Device ID: Realtek */ - 0x18491150, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc1150_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491150), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x14, 0x01014010), @@ -21,4 +18,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1150", + .vendor_id = 0x10ec0900, + .subsystem_id = 0x18491150, + .address = 0, + .verbs = realtek_alc1150_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1150_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z87m_extreme4/Kconfig b/src/mainboard/asrock/z87m_extreme4/Kconfig index 8b172fb62b..e02ac39cf0 100644 --- a/src/mainboard/asrock/z87m_extreme4/Kconfig +++ b/src/mainboard/asrock/z87m_extreme4/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z87M_EXTREME4 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/z87m_extreme4/hda_verb.c b/src/mainboard/asrock/z87m_extreme4/hda_verb.c index 912961cb09..b9d9e9d889 100644 --- a/src/mainboard/asrock/z87m_extreme4/hda_verb.c +++ b/src/mainboard/asrock/z87m_extreme4/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0900, /* Codec Vendor / Device ID: Realtek */ - 0x18491151, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc1150_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491151), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x14, 0x01014010), @@ -21,4 +18,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1150", + .vendor_id = 0x10ec0900, + .subsystem_id = 0x18491151, + .address = 0, + .verbs = realtek_alc1150_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1150_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z87m_oc_formula/Kconfig b/src/mainboard/asrock/z87m_oc_formula/Kconfig index 05f1536c00..c05f2fd85a 100644 --- a/src/mainboard/asrock/z87m_oc_formula/Kconfig +++ b/src/mainboard/asrock/z87m_oc_formula/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z87M_OC_FORMULA config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES diff --git a/src/mainboard/asrock/z87m_oc_formula/hda_verb.c b/src/mainboard/asrock/z87m_oc_formula/hda_verb.c index ab7da869de..1399a3f3fb 100644 --- a/src/mainboard/asrock/z87m_oc_formula/hda_verb.c +++ b/src/mainboard/asrock/z87m_oc_formula/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0900, /* Codec Vendor / Device ID: Realtek */ - 0x18491151, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc1150_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491151), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x14, 0x01014010), @@ -21,4 +18,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1150", + .vendor_id = 0x10ec0900, + .subsystem_id = 0x18491151, + .address = 0, + .verbs = realtek_alc1150_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1150_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z97_extreme6/Kconfig b/src/mainboard/asrock/z97_extreme6/Kconfig index 2a9162c81e..3cef429d04 100644 --- a/src/mainboard/asrock/z97_extreme6/Kconfig +++ b/src/mainboard/asrock/z97_extreme6/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASROCK_Z97_EXTREME6 config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select GFX_GMA_ANALOG_I2C_HDMI_B select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/z97_extreme6/hda_verb.c b/src/mainboard/asrock/z97_extreme6/hda_verb.c index db4364c4e3..1399a3f3fb 100644 --- a/src/mainboard/asrock/z97_extreme6/hda_verb.c +++ b/src/mainboard/asrock/z97_extreme6/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0900, /* Codec Vendor / Device ID: Realtek ALC1150 */ - 0x18491151, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc1150_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491151), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x14, 0x01014010), @@ -21,4 +18,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1150", + .vendor_id = 0x10ec0900, + .subsystem_id = 0x18491151, + .address = 0, + .verbs = realtek_alc1150_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1150_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asrock/z97e-itx_ac/Kconfig b/src/mainboard/asrock/z97e-itx_ac/Kconfig index 7e20680253..810bfd0814 100644 --- a/src/mainboard/asrock/z97e-itx_ac/Kconfig +++ b/src/mainboard/asrock/z97e-itx_ac/Kconfig @@ -3,7 +3,6 @@ if BOARD_ASROCK_Z97E_ITX_AC config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_8192 select GFX_GMA_ANALOG_I2C_HDMI_B select HAVE_ACPI_RESUME diff --git a/src/mainboard/asrock/z97e-itx_ac/hda_verb.c b/src/mainboard/asrock/z97e-itx_ac/hda_verb.c index 1eeed4cdf9..ff58f69989 100644 --- a/src/mainboard/asrock/z97e-itx_ac/hda_verb.c +++ b/src/mainboard/asrock/z97e-itx_ac/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0900, /* Codec Vendor / Device ID: Realtek ALC1150 */ - 0x18491150, /* Subsystem ID */ - 11, /* Number of 4 dword sets */ +static const u32 realtek_alc1150_verbs[] = { AZALIA_SUBVENDOR(0, 0x18491150), AZALIA_PIN_CFG(0, 0x11, 0x40000000), AZALIA_PIN_CFG(0, 0x14, 0x01014010), @@ -21,4 +18,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1150", + .vendor_id = 0x10ec0900, + .subsystem_id = 0x18491150, + .address = 0, + .verbs = realtek_alc1150_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1150_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES;