From a927d124be1f295107cbfb3c43e2e83b31b5b0cb Mon Sep 17 00:00:00 2001 From: Nicholas Sudsgaard Date: Thu, 7 Aug 2025 09:19:03 +0900 Subject: [PATCH] mb/asus: Replace verb tables with reworked implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some boards did not provide the chip name for the audio codecs in the comments, and were therefore identified using external sources: h61m-a_usb3: - 0x10ec0887 -> Realtek ALC887[1][5] h61m-cs: - 0x10ec0887 -> Realtek ALC887[1][6] p8h61-m_pro: - 0x10ec0887 -> Realtek ALC887-VD[3] p8h67-i_deluxe: - 0x10ec0892 -> Realtek ALC892[3][7] p5gc-mx: - 0x10ec0892 -> Realtek ALC662[2] p5qc: - 0x10ec0888 -> Realtek ALC1200[2] p5ql-em: - 0x10ec0888 -> Realtek ALC1200[8] p8z77-m: - 0x10ec0887 -> Realtek ALC887[1][9] p8z77-v: - 0x10ec0892 -> Realtek ALC892[3][10] p8z77-v_le_plus: - 0x10ec0889 -> Realtek ALC889[4][11] The Kconfigs were reverted using the following command: find src/mainboard/asus -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 commit 31fc5b06a6be ("device: Introduce reworked azalia verb table"). References: [1] Linux kernel: sound/hda/codecs/realtek/alc882.c:839 [2] coreboot board status: kernel_log.txt [3] Linux kernel: sound/hda/codecs/realtek/alc662.c:1101 [4] Linux kernel: sound/hda/codecs/realtek/alc882.c:842 [5] H61M-A/USB3 User's Manual (English), Version E8184 [6] H61M-CS User's Manual (English), Version E9069 [7] P8H67-I Deluxe User's Manual (English), Version E6964 [8] P5QL-EM user’s manual(English), Version E4165 [9] P8Z77-M User's Manual (English), Version E7075 [10] P8Z77-V User's Manual (English), Version E7074 [11] P8Z77-V LE PLUS User's Manual (English), Version E8001 TEST= All boards passed regression test (CB:88763) Change-Id: Id2d4895bb40885f83d602b3a80805a84e348771b Signed-off-by: Nicholas Sudsgaard Reviewed-on: https://review.coreboot.org/c/coreboot/+/88662 Tested-by: build bot (Jenkins) Reviewed-by: Maxim Polyakov --- src/mainboard/asus/h61-series/Kconfig | 1 - .../variants/h61m-a_usb3/hda_verb.c | 53 +++++++++++++++---- .../h61-series/variants/h61m-cs/hda_verb.c | 17 ++++-- .../h61-series/variants/p8h61-m_lx/hda_verb.c | 17 ++++-- .../variants/p8h61-m_lx3_r2_0/hda_verb.c | 17 ++++-- .../variants/p8h61-m_pro/hda_verb.c | 30 ++++++++--- .../variants/p8h61-m_pro_cm6630/hda_verb.c | 30 ++++++++--- .../variants/p8h67-i_deluxe/hda_verb.c | 30 ++++++++--- src/mainboard/asus/h610i-plus-d4/Kconfig | 1 - src/mainboard/asus/h610i-plus-d4/hda_verb.c | 31 ++++++++--- src/mainboard/asus/maximus_iv_gene-z/Kconfig | 1 - .../asus/maximus_iv_gene-z/hda_verb.c | 30 ++++++++--- src/mainboard/asus/p5gc-mx/Kconfig | 1 - src/mainboard/asus/p5gc-mx/hda_verb.c | 21 +++++--- src/mainboard/asus/p5qc/Kconfig | 1 - src/mainboard/asus/p5qc/hda_verb.c | 21 +++++--- src/mainboard/asus/p5ql-em/Kconfig | 1 - src/mainboard/asus/p5ql-em/hda_verb.c | 35 +++++++----- src/mainboard/asus/p5qpl-am/Kconfig | 1 - src/mainboard/asus/p5qpl-am/hda_verb.c | 22 ++++---- src/mainboard/asus/p8x7x-series/Kconfig | 1 - .../p8x7x-series/variants/p8c_ws/hda_verb.c | 17 ++++-- .../p8x7x-series/variants/p8h77-v/hda_verb.c | 30 ++++++++--- .../p8x7x-series/variants/p8z77-m/hda_verb.c | 30 ++++++++--- .../variants/p8z77-m_pro/hda_verb.c | 30 ++++++++--- .../p8x7x-series/variants/p8z77-v/hda_verb.c | 31 ++++++++--- .../variants/p8z77-v_le_plus/hda_verb.c | 31 ++++++++--- .../variants/p8z77-v_lx2/hda_verb.c | 30 ++++++++--- 28 files changed, 411 insertions(+), 150 deletions(-) diff --git a/src/mainboard/asus/h61-series/Kconfig b/src/mainboard/asus/h61-series/Kconfig index 6f21b75456..d09ed1e244 100644 --- a/src/mainboard/asus/h61-series/Kconfig +++ b/src/mainboard/asus/h61-series/Kconfig @@ -2,7 +2,6 @@ config BOARD_ASUS_H61_SERIES bool - select AZALIA_USE_LEGACY_VERB_TABLE select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select INTEL_GMA_HAVE_VBT diff --git a/src/mainboard/asus/h61-series/variants/h61m-a_usb3/hda_verb.c b/src/mainboard/asus/h61-series/variants/h61m-a_usb3/hda_verb.c index b9177d0f5a..df1fb43b95 100644 --- a/src/mainboard/asus/h61-series/variants/h61m-a_usb3/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/h61m-a_usb3/hda_verb.c @@ -3,10 +3,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Codec Vendor / Device ID: Realtek */ - 0x10438445, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438445), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, 0x40330000), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -22,10 +19,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, ALC887_PC_BEEP, 0x4024c601), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT1, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, ALC887_SPDIF_IN, AZALIA_PIN_CFG_NC(0)), +}; - 0x8086281c, /* Codec Vendor / Device ID: Intel */ - 0x80860101, /* Subsystem ID */ - 10, /* Number of 4 dword sets */ +static const u32 intel_display_audio_1_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x04, 0x18560010), AZALIA_PIN_CFG(2, 0x06, 0x18560010), @@ -36,17 +32,52 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(2, 0x0d, 0x18560010), AZALIA_PIN_CFG(2, 0x0e, 0x18560010), AZALIA_PIN_CFG(2, 0x0f, 0x18560010), +}; - 0x80862805, /* Codec Vendor / Device ID: Intel */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_2_verbs[] = { AZALIA_SUBVENDOR(3, 0x80860101), AZALIA_PIN_CFG(3, 0x05, 0x58560010), AZALIA_PIN_CFG(3, 0x06, 0x58560020), AZALIA_PIN_CFG(3, 0x07, 0x18560030), - }; const u32 pc_beep_verbs[0] = {}; +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), + }, + { + /* + * TODO: This seems out of place, the vendor ID suggests this + * codec is an Alder Lake P Intel Display Audio[1], and + * the user manual[2] does not mention this codec. Could someone + * with this board confirm what this is? + * + * [1] Linux kernel: sound/hda/codecs/hdmi/intelhdmi.c:789 + * [2] H61M-A/USB3 User's Manual (English), Version E8184 + */ + .name = "Intel Display Audio #1 (HDMI/DP)", + .vendor_id = 0x8086281c, + .subsystem_id = 0x80860101, + .address = 2, + .verbs = intel_display_audio_1_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_1_verbs), + }, + { + .name = "Intel Display Audio #2 (HDMI/DP)", + .vendor_id = 0x80862805, + .subsystem_id = 0x80860101, + .address = 3, + .verbs = intel_display_audio_2_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_2_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/h61-series/variants/h61m-cs/hda_verb.c b/src/mainboard/asus/h61-series/variants/h61m-cs/hda_verb.c index 956a716c76..c2226c5d4b 100644 --- a/src/mainboard/asus/h61-series/variants/h61m-cs/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/h61m-cs/hda_verb.c @@ -4,10 +4,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Codec Vendor / Device ID: Realtek */ - 0x10438445, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438445), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, 0x40330000), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -27,4 +24,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +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), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/h61-series/variants/p8h61-m_lx/hda_verb.c b/src/mainboard/asus/h61-series/variants/p8h61-m_lx/hda_verb.c index 5647a31c96..b351ed58b3 100644 --- a/src/mainboard/asus/h61-series/variants/p8h61-m_lx/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/p8h61-m_lx/hda_verb.c @@ -4,10 +4,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Realtek ALC887-VD */ - 0x10438445, /* Subsystem ID */ - 15, /* Number of entries */ +static const u32 realtek_alc887_vd_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438445), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, 0x99430130), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -27,4 +24,16 @@ 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 = 0x10438445, + .address = 0, + .verbs = realtek_alc887_vd_verbs, + .verb_count = ARRAY_SIZE(realtek_alc887_vd_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/h61-series/variants/p8h61-m_lx3_r2_0/hda_verb.c b/src/mainboard/asus/h61-series/variants/p8h61-m_lx3_r2_0/hda_verb.c index 7988e2b4ad..ef63e3e9d1 100644 --- a/src/mainboard/asus/h61-series/variants/p8h61-m_lx3_r2_0/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/p8h61-m_lx3_r2_0/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x11060397, /* Codec Vendor / Device ID: VIA VT1708S */ - 0x10438415, /* Subsystem ID */ - 12, /* Number of 4 dword sets */ +static const u32 via_vt1708s_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438415), AZALIA_PIN_CFG(0, 0x19, 0x410110f0), AZALIA_PIN_CFG(0, 0x1a, 0x01a19036), @@ -22,4 +19,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "VIA VT1708S", + .vendor_id = 0x11060397, + .subsystem_id = 0x10438415, + .address = 0, + .verbs = via_vt1708s_verbs, + .verb_count = ARRAY_SIZE(via_vt1708s_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/h61-series/variants/p8h61-m_pro/hda_verb.c b/src/mainboard/asus/h61-series/variants/p8h61-m_pro/hda_verb.c index e29bdcae14..ee94e3368e 100644 --- a/src/mainboard/asus/h61-series/variants/p8h61-m_pro/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/p8h61-m_pro/hda_verb.c @@ -3,10 +3,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Codec Vendor / Device ID: Realtek */ - 0x10438444, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_vd_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438444), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, 0x99430140), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -22,10 +19,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, ALC887_PC_BEEP, 0x4005e601), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT1, 0x01456130), AZALIA_PIN_CFG(0, ALC887_SPDIF_IN, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862805, /* 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, 0x58560010), AZALIA_PIN_CFG(3, 0x06, 0x58560020), @@ -34,4 +30,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC887-VD", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x10438444, + .address = 0, + .verbs = realtek_alc887_vd_verbs, + .verb_count = ARRAY_SIZE(realtek_alc887_vd_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862805, + .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/asus/h61-series/variants/p8h61-m_pro_cm6630/hda_verb.c b/src/mainboard/asus/h61-series/variants/p8h61-m_pro_cm6630/hda_verb.c index 0aa95d00a3..7018c22ece 100644 --- a/src/mainboard/asus/h61-series/variants/p8h61-m_pro_cm6630/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/p8h61-m_pro_cm6630/hda_verb.c @@ -3,10 +3,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Codec Vendor / Device ID: Realtek ALC887 */ - 0x10438444, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438444), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, 0x99430140), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -22,10 +19,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, ALC887_PC_BEEP, 0x4005e601), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT1, 0x01456130), AZALIA_PIN_CFG(0, ALC887_SPDIF_IN, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862805, /* Codec Vendor / Device ID: Intel 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, 0x58560020), @@ -34,4 +30,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC887", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x10438444, + .address = 0, + .verbs = realtek_alc887_verbs, + .verb_count = ARRAY_SIZE(realtek_alc887_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862805, + .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/asus/h61-series/variants/p8h67-i_deluxe/hda_verb.c b/src/mainboard/asus/h61-series/variants/p8h67-i_deluxe/hda_verb.c index 993767bcb7..7548c3addb 100644 --- a/src/mainboard/asus/h61-series/variants/p8h67-i_deluxe/hda_verb.c +++ b/src/mainboard/asus/h61-series/variants/p8h67-i_deluxe/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek */ - 0x1043848d, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x1043848d), AZALIA_PIN_CFG(0, 0x11, 0x99430140), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,10 +18,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4004c601), AZALIA_PIN_CFG(0, 0x1e, 0x01452130), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862805, /* Codec Vendor / Device ID: Intel */ - 0x80862805, /* Subsystem ID */ - 4, /* Number of 4 dword sets */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(3, 0x80862805), AZALIA_PIN_CFG(3, 0x05, 0x58560010), AZALIA_PIN_CFG(3, 0x06, 0x58560020), @@ -34,4 +30,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 = 0x1043848d, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862805, + .subsystem_id = 0x80862805, + .address = 3, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/h610i-plus-d4/Kconfig b/src/mainboard/asus/h610i-plus-d4/Kconfig index 5d76d2b508..e4f7598066 100644 --- a/src/mainboard/asus/h610i-plus-d4/Kconfig +++ b/src/mainboard/asus/h610i-plus-d4/Kconfig @@ -1,7 +1,6 @@ ## SPDX-License-Identifier: GPL-2.0-only config BOARD_ASUS_H610I_PLUS_D4 - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_16384 select DRIVERS_UART_8250IO select HAVE_ACPI_RESUME diff --git a/src/mainboard/asus/h610i-plus-d4/hda_verb.c b/src/mainboard/asus/h610i-plus-d4/hda_verb.c index 173845d32e..685e8fcd8b 100644 --- a/src/mainboard/asus/h610i-plus-d4/hda_verb.c +++ b/src/mainboard/asus/h610i-plus-d4/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0897, // Vendor/Device ID: Realtek ALC897 - 0x10438803, // Subsystem ID - 15, +static const u32 realtek_alc897_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438803), AZALIA_PIN_CFG(0, 0x11, AZALIA_PIN_CFG_NC(0)), @@ -70,10 +67,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4048ee29), // does not describe a jack or internal device AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862815, // Vendor/Device ID: Intel Alderlake HDMI - 0x80860101, // Subsystem ID - 10, +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x04, AZALIA_PIN_DESC( @@ -160,4 +156,25 @@ const u32 cim_verb_data[] = { }; const u32 pc_beep_verbs[] = {}; + +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC897", + .vendor_id = 0x10ec0897, + .subsystem_id = 0x10438803, + .address = 0, + .verbs = realtek_alc897_verbs, + .verb_count = ARRAY_SIZE(realtek_alc897_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862815, + .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/asus/maximus_iv_gene-z/Kconfig b/src/mainboard/asus/maximus_iv_gene-z/Kconfig index 97a531fd3c..b3b081c43b 100644 --- a/src/mainboard/asus/maximus_iv_gene-z/Kconfig +++ b/src/mainboard/asus/maximus_iv_gene-z/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASUS_MAXIMUS_IV_GENE_Z 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/asus/maximus_iv_gene-z/hda_verb.c b/src/mainboard/asus/maximus_iv_gene-z/hda_verb.c index 11a14a2f3f..fd2abc36bd 100644 --- a/src/mainboard/asus/maximus_iv_gene-z/hda_verb.c +++ b/src/mainboard/asus/maximus_iv_gene-z/hda_verb.c @@ -3,10 +3,7 @@ #include #include -const u32 cim_verb_data[] = { - 0x10ec0889, /* Realtek ALC889 */ - 0x10ec0889, /* Subsystem ID */ - 15, /* Number of entries */ +static const u32 realtek_alc889_verbs[] = { AZALIA_SUBVENDOR(0, 0x10ec0889), AZALIA_PIN_CFG(0, 0x11, 0x414471f0), AZALIA_PIN_CFG(0, 0x12, 0x59a3112e), @@ -22,10 +19,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x59f00190), AZALIA_PIN_CFG(0, 0x1e, 0x014471f0), AZALIA_PIN_CFG(0, 0x1f, 0x41c451f0), +}; - 0x80862805, /* Intel CougarPoint HDMI */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of entries */ +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(3, 0x80860101), AZALIA_PIN_CFG(3, 0x05, 0x18560010), AZALIA_PIN_CFG(3, 0x06, 0x18560010), @@ -34,4 +30,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC889", + .vendor_id = 0x10ec0889, + .subsystem_id = 0x10ec0889, + .address = 0, + .verbs = realtek_alc889_verbs, + .verb_count = ARRAY_SIZE(realtek_alc889_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x80862805, + .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/asus/p5gc-mx/Kconfig b/src/mainboard/asus/p5gc-mx/Kconfig index 7fc801cc65..4f49dbbaa5 100644 --- a/src/mainboard/asus/p5gc-mx/Kconfig +++ b/src/mainboard/asus/p5gc-mx/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASUS_P5GC_MX config BOARD_SPECIFIC_OPTIONS def_bool y - select AZALIA_USE_LEGACY_VERB_TABLE select CPU_INTEL_SOCKET_LGA775 select NORTHBRIDGE_INTEL_I945 select NORTHBRIDGE_INTEL_SUBTYPE_I945GC diff --git a/src/mainboard/asus/p5gc-mx/hda_verb.c b/src/mainboard/asus/p5gc-mx/hda_verb.c index 9da73841b9..b7901a2b9a 100644 --- a/src/mainboard/asus/p5gc-mx/hda_verb.c +++ b/src/mainboard/asus/p5gc-mx/hda_verb.c @@ -2,13 +2,7 @@ #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - 0x10ec0883, /* Vendor ID */ - 0x104382c7, /* Subsystem ID */ - 0x0000000c, /* Number of entries */ - - /* Pin Widget Verb Table */ +static const u32 realtek_alc662_verbs[] = { 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)), @@ -24,4 +18,17 @@ const u32 cim_verb_data[] = { }; const u32 pc_beep_verbs[0] = {}; + +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC662", + .vendor_id = 0x10ec0883, + .subsystem_id = 0x104382c7, + .address = 0, + .verbs = realtek_alc662_verbs, + .verb_count = ARRAY_SIZE(realtek_alc662_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/p5qc/Kconfig b/src/mainboard/asus/p5qc/Kconfig index d5a2e6ecbd..c501b7a010 100644 --- a/src/mainboard/asus/p5qc/Kconfig +++ b/src/mainboard/asus/p5qc/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASUS_P5QC || BOARD_ASUS_P5Q_PRO || BOARD_ASUS_P5QL_PRO || BOARD_ASUS_P5 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_I82801JX diff --git a/src/mainboard/asus/p5qc/hda_verb.c b/src/mainboard/asus/p5qc/hda_verb.c index 9fc478fcf1..ce6cc0e0c7 100644 --- a/src/mainboard/asus/p5qc/hda_verb.c +++ b/src/mainboard/asus/p5qc/hda_verb.c @@ -2,14 +2,7 @@ #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - 0x10ec0888, - 0x104382fe, // Subsystem ID - 13, // Number of entries - - /* Pin Widget Verb Table */ - +static const u32 realtek_alc1200_verbs[] = { AZALIA_PIN_CFG(0, 0x11, 0x99430140), AZALIA_PIN_CFG(0, 0x14, 0x01014010), AZALIA_PIN_CFG(0, 0x15, 0x01011012), @@ -27,4 +20,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1200", + .vendor_id = 0x10ec0888, + .subsystem_id = 0x104382fe, + .address = 0, + .verbs = realtek_alc1200_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1200_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/p5ql-em/Kconfig b/src/mainboard/asus/p5ql-em/Kconfig index f297d2974d..52ad800940 100644 --- a/src/mainboard/asus/p5ql-em/Kconfig +++ b/src/mainboard/asus/p5ql-em/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASUS_P5QL_EM 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_I82801JX diff --git a/src/mainboard/asus/p5ql-em/hda_verb.c b/src/mainboard/asus/p5ql-em/hda_verb.c index 861b659527..8b80ae9e5f 100644 --- a/src/mainboard/asus/p5ql-em/hda_verb.c +++ b/src/mainboard/asus/p5ql-em/hda_verb.c @@ -2,13 +2,7 @@ #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - 0x10ec0888, - 0x104382fe, // Subsystem ID - 13, // Number of entries - - /* Pin Widget Verb Table */ +static const u32 realtek_alc1200_verbs[] = { AZALIA_PIN_CFG(0, 0x11, 0x99430130), AZALIA_PIN_CFG(0, 0x14, 0x01014010), AZALIA_PIN_CFG(0, 0x15, 0x01011012), @@ -22,15 +16,32 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4015e601), AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - /* HDMI audio */ - 0x80862803, - 0x80860101, - 1, - +static const u32 intel_display_audio_verbs[] = { AZALIA_PIN_CFG(1, 0x03, 0x18560010), }; const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC1200", + .vendor_id = 0x10ec0888, + .subsystem_id = 0x104382fe, + .address = 0, + .verbs = realtek_alc1200_verbs, + .verb_count = ARRAY_SIZE(realtek_alc1200_verbs), + }, + { + .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), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/p5qpl-am/Kconfig b/src/mainboard/asus/p5qpl-am/Kconfig index aeafb4be4f..2359e324d8 100644 --- a/src/mainboard/asus/p5qpl-am/Kconfig +++ b/src/mainboard/asus/p5qpl-am/Kconfig @@ -4,7 +4,6 @@ if BOARD_ASUS_P5QPL_AM || BOARD_ASUS_P5G41T_M_LX 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/asus/p5qpl-am/hda_verb.c b/src/mainboard/asus/p5qpl-am/hda_verb.c index b49878a9a8..f1413543eb 100644 --- a/src/mainboard/asus/p5qpl-am/hda_verb.c +++ b/src/mainboard/asus/p5qpl-am/hda_verb.c @@ -3,15 +3,7 @@ #include #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - /* Realtek ALC662 rev1 */ - 0x10ec0887, /* Vendor ID */ - 0x1043840b, /* Subsystem ID */ - 14, /* Number of entries */ - - /* Pin Widget Verb Table */ - +static const u32 realtek_alc662_verbs[] = { AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, ALC887_FRONT, 0x01014010), @@ -30,4 +22,16 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC662", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x1043840b, + .address = 0, + .verbs = realtek_alc662_verbs, + .verb_count = ARRAY_SIZE(realtek_alc662_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/p8x7x-series/Kconfig b/src/mainboard/asus/p8x7x-series/Kconfig index 6f1632e4be..cfff67a0dc 100644 --- a/src/mainboard/asus/p8x7x-series/Kconfig +++ b/src/mainboard/asus/p8x7x-series/Kconfig @@ -2,7 +2,6 @@ config BOARD_ASUS_P8X7X_SERIES bool - select AZALIA_USE_LEGACY_VERB_TABLE select HAVE_ACPI_RESUME select HAVE_ACPI_TABLES select HAVE_CMOS_DEFAULT diff --git a/src/mainboard/asus/p8x7x-series/variants/p8c_ws/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8c_ws/hda_verb.c index 03430f1c35..7bf810d49b 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8c_ws/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8c_ws/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek ALC892 */ - 0x104384fb, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x104384fb), AZALIA_PIN_CFG(0, 0x11, 0x99430140), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -26,4 +23,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 = 0x104384fb, + .address = 0, + .verbs = realtek_alc892_verbs, + .verb_count = ARRAY_SIZE(realtek_alc892_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/asus/p8x7x-series/variants/p8h77-v/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8h77-v/hda_verb.c index f246af7018..4a7bf2edb3 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8h77-v/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8h77-v/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x11060397, /* Codec Vendor / Device ID: VIA VT1708S */ - 0x1043836c, /* Subsystem ID */ - 12, /* Number of 4 dword sets */ +static const u32 via_vt1708s_verbs[] = { AZALIA_SUBVENDOR(0, 0x1043836c), AZALIA_PIN_CFG(0, 0x19, 0x01011012), AZALIA_PIN_CFG(0, 0x1a, 0x01a19036), @@ -18,10 +15,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x21, 0x074521f0), AZALIA_PIN_CFG(0, 0x22, 0x01016011), AZALIA_PIN_CFG(0, 0x23, 0x01012014), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel 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, 0x18560010), AZALIA_PIN_CFG(3, 0x06, 0x58560020), @@ -31,4 +27,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "VIA VT1708S", + .vendor_id = 0x11060397, + .subsystem_id = 0x1043836c, + .address = 0, + .verbs = via_vt1708s_verbs, + .verb_count = ARRAY_SIZE(via_vt1708s_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/asus/p8x7x-series/variants/p8z77-m/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8z77-m/hda_verb.c index 05efa2d5af..25a7a4c87d 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8z77-m/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8z77-m/hda_verb.c @@ -6,10 +6,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0887, /* Codec Vendor / Device ID: Realtek */ - 0x104384a8, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc887_verbs[] = { AZALIA_SUBVENDOR(0, 0x104384a8), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT2, 0x90430130), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -25,10 +22,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, ALC887_PC_BEEP, 0x4016c629), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT1, 0x01446140), AZALIA_PIN_CFG(0, ALC887_SPDIF_IN, 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, 0x58560010), AZALIA_PIN_CFG(3, 0x06, 0x58560020), @@ -37,6 +33,26 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC887", + .vendor_id = 0x10ec0887, + .subsystem_id = 0x104384a8, + .address = 0, + .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; void mainboard_azalia_program_runtime_verbs(u8 *base, u32 viddid) diff --git a/src/mainboard/asus/p8x7x-series/variants/p8z77-m_pro/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8z77-m_pro/hda_verb.c index 696134b00a..67b5e930bc 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8z77-m_pro/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8z77-m_pro/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek */ - 0x10438436, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x10438436), AZALIA_PIN_CFG(0, 0x11, 0x99430140), 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, 0x01456130), 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, 0x58560010), 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 = 0x10438436, + .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/asus/p8x7x-series/variants/p8z77-v/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8z77-v/hda_verb.c index efbf7bf979..89368c70b3 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8z77-v/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8z77-v/hda_verb.c @@ -2,10 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0892, /* Codec Vendor / Device ID: Realtek ALC892 */ - 0x104384fb, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc892_verbs[] = { AZALIA_SUBVENDOR(0, 0x104384fb), AZALIA_PIN_CFG(0, 0x11, 0x99430140), AZALIA_PIN_CFG(0, 0x12, AZALIA_PIN_CFG_NC(0)), @@ -21,17 +18,35 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1d, 0x4005e601), AZALIA_PIN_CFG(0, 0x1e, 0x01456130), AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel 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), AZALIA_PIN_CFG(3, 0x07, 0x18560030), - }; const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC892", + .vendor_id = 0x10ec0892, + .subsystem_id = 0x104384fb, + .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/asus/p8x7x-series/variants/p8z77-v_le_plus/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8z77-v_le_plus/hda_verb.c index 5bfa977a98..39e12286d8 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8z77-v_le_plus/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8z77-v_le_plus/hda_verb.c @@ -11,10 +11,7 @@ AZALIA_PIN_DESC(AZALIA_JACK, AZALIA_REAR, dev, AZALIA_STEREO_MONO_1_8, \ AZALIA_PIN_DESC(AZALIA_JACK, AZALIA_FRONT, dev, AZALIA_STEREO_MONO_1_8, \ color, misc, association, sequence) -const u32 cim_verb_data[] = { - 0x10ec0889, /* Realtek ALC889 */ - 0x1043841a, /* Subsystem ID */ - 15, /* Number of 4 dword sets */ +static const u32 realtek_alc889_verbs[] = { AZALIA_SUBVENDOR(0, 0x1043841a), AZALIA_PIN_CFG(0, 0x11, AZALIA_PIN_DESC( AZALIA_INTEGRATED, @@ -76,19 +73,37 @@ const u32 cim_verb_data[] = { AZALIA_NO_JACK_PRESENCE_DETECT, 4, 0)), /* 0x01456140 */ AZALIA_PIN_CFG(0, 0x1f, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862806, /* 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), AZALIA_PIN_CFG(3, 0x07, 0x18560030), - }; const u32 pc_beep_verbs[0] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC889", + .vendor_id = 0x10ec0889, + .subsystem_id = 0x1043841a, + .address = 0, + .verbs = realtek_alc889_verbs, + .verb_count = ARRAY_SIZE(realtek_alc889_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; enum e_spdif2_dest { diff --git a/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/hda_verb.c b/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/hda_verb.c index c6f3b6b4c0..8a94dae4a5 100644 --- a/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/hda_verb.c +++ b/src/mainboard/asus/p8x7x-series/variants/p8z77-v_lx2/hda_verb.c @@ -3,10 +3,7 @@ #include #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, ALC887_SPDIF_OUT2, 0x99430130), AZALIA_PIN_CFG(0, ALC887_DMIC_LR, AZALIA_PIN_CFG_NC(0)), @@ -22,10 +19,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, ALC887_PC_BEEP, 0x4004c601), AZALIA_PIN_CFG(0, ALC887_SPDIF_OUT1, AZALIA_PIN_CFG_NC(0)), AZALIA_PIN_CFG(0, ALC887_SPDIF_IN, AZALIA_PIN_CFG_NC(0)), +}; - 0x80862806, /* Codec Vendor / Device ID: Intel 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, 0x58560020), @@ -35,4 +31,24 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[0] = {}; +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 = 0x80862806, + .subsystem_id = 0x80860101, + .address = 3, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, + { /* terminator */ } +}; + AZALIA_ARRAY_SIZES;