From f634121fa47648e204dfe8d70c90aca3be7194c0 Mon Sep 17 00:00:00 2001 From: Nicholas Sudsgaard Date: Thu, 7 Aug 2025 09:25:42 +0900 Subject: [PATCH] mb/purism: Replace verb tables with reworked implementation No modifications/assumptions about the codecs were made on these boards. The Kconfigs were reverted using the following command: find src/mainboard/purism -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. TEST= All boards passed regression test (CB:88763) Change-Id: I2ee7a93392a57e8194cc8116c3fc55116336234f Signed-off-by: Nicholas Sudsgaard Reviewed-on: https://review.coreboot.org/c/coreboot/+/88686 Reviewed-by: Matt DeVillier Tested-by: build bot (Jenkins) --- src/mainboard/purism/librem_bdw/Kconfig | 1 - src/mainboard/purism/librem_bdw/hda_verb.c | 18 ++++--- src/mainboard/purism/librem_cnl/Kconfig | 1 - .../librem_cnl/variants/librem_14/hda_verb.c | 49 +++++++++++++------ .../variants/librem_mini/hda_verb.c | 31 ++++++++---- src/mainboard/purism/librem_jsl/Kconfig | 1 - src/mainboard/purism/librem_jsl/hda_verb.c | 31 ++++++++---- src/mainboard/purism/librem_skl/Kconfig | 1 - src/mainboard/purism/librem_skl/hda_verb.c | 18 ++++--- 9 files changed, 102 insertions(+), 49 deletions(-) diff --git a/src/mainboard/purism/librem_bdw/Kconfig b/src/mainboard/purism/librem_bdw/Kconfig index 8c8f5ec5fc..d1ba25a81a 100644 --- a/src/mainboard/purism/librem_bdw/Kconfig +++ b/src/mainboard/purism/librem_bdw/Kconfig @@ -2,7 +2,6 @@ config BOARD_PURISM_BASEBOARD_LIBREM_BDW def_bool n - select AZALIA_USE_LEGACY_VERB_TABLE select SYSTEM_TYPE_LAPTOP select BOARD_ROMSIZE_KB_8192 select HAVE_ACPI_RESUME diff --git a/src/mainboard/purism/librem_bdw/hda_verb.c b/src/mainboard/purism/librem_bdw/hda_verb.c index a3e87aad7b..1cf41265d7 100644 --- a/src/mainboard/purism/librem_bdw/hda_verb.c +++ b/src/mainboard/purism/librem_bdw/hda_verb.c @@ -2,12 +2,7 @@ #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - 0x10ec0269, /* Codec Vendor / Device ID: Realtek ALC269 */ - 0x19910269, /* Subsystem ID */ - 12, /* Number of jacks (NID entries) */ - +static const u32 realtek_alc269_verbs[] = { AZALIA_RESET(1), AZALIA_SUBVENDOR(0, 0x19910269), AZALIA_PIN_CFG(0, 0x12, 0x40000000), @@ -24,4 +19,15 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC269", + .vendor_id = 0x10ec0269, + .subsystem_id = 0x19910269, + .address = 0, + .verbs = realtek_alc269_verbs, + .verb_count = ARRAY_SIZE(realtek_alc269_verbs), + }, +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/purism/librem_cnl/Kconfig b/src/mainboard/purism/librem_cnl/Kconfig index 9495365575..a718678605 100644 --- a/src/mainboard/purism/librem_cnl/Kconfig +++ b/src/mainboard/purism/librem_cnl/Kconfig @@ -2,7 +2,6 @@ config BOARD_PURISM_BASEBOARD_LIBREM_CNL def_bool n - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_16384 select DRIVERS_GENERIC_CBFS_SERIAL select DRIVERS_USB_ACPI diff --git a/src/mainboard/purism/librem_cnl/variants/librem_14/hda_verb.c b/src/mainboard/purism/librem_cnl/variants/librem_14/hda_verb.c index 70b3247c74..912f955710 100644 --- a/src/mainboard/purism/librem_cnl/variants/librem_14/hda_verb.c +++ b/src/mainboard/purism/librem_cnl/variants/librem_14/hda_verb.c @@ -4,12 +4,7 @@ #include #include -const u32 cim_verb_data[] = { - /* Board revision 01 has ALC256 */ - 0x10ec0256, /* Codec Vendor/Device ID: Realtek ALC256 */ - 0x10ec0256, /* Subsystem ID */ - 16, /* Number of entries */ - +static const u32 realtek_alc256_verbs[] = { AZALIA_RESET(0x1), AZALIA_SUBVENDOR(0, 0x10ec0256), @@ -47,12 +42,9 @@ const u32 cim_verb_data[] = { 0x02046901, 0x02050007, 0x02040200, +}; - /* Board revision 02 has ALC269 */ - 0x10ec0269, /* Codec Vendor/Device ID: Realtek ALC269 */ - 0x10ec0269, /* Subsystem ID */ - 16, /* Number of entries */ - +static const u32 realtek_alc269_verbs[] = { AZALIA_RESET(0x1), AZALIA_SUBVENDOR(0, 0x10ec129e), @@ -86,11 +78,9 @@ const u32 cim_verb_data[] = { 0x020400AF, 0x02050005, 0x020400C0, +}; - 0x8086280b, /* Codec Vendor/Device ID: Intel CometPoint HDMI */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of entries */ - +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x05, 0x18560010), AZALIA_PIN_CFG(2, 0x06, 0x18560010), @@ -99,6 +89,35 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + /* Board revision 01 has ALC256 */ + .name = "Realtek ALC256", + .vendor_id = 0x10ec0256, + .subsystem_id = 0x10ec0256, + .address = 0, + .verbs = realtek_alc256_verbs, + .verb_count = ARRAY_SIZE(realtek_alc256_verbs), + }, + { + /* Board revision 02 has ALC269 */ + .name = "Realtek ALC269", + .vendor_id = 0x10ec0269, + .subsystem_id = 0x10ec0269, + .address = 0, + .verbs = realtek_alc269_verbs, + .verb_count = ARRAY_SIZE(realtek_alc269_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), + }, +}; + AZALIA_ARRAY_SIZES; /* Older ALC256 verbs with no jack detect - needed if an older Librem EC is in diff --git a/src/mainboard/purism/librem_cnl/variants/librem_mini/hda_verb.c b/src/mainboard/purism/librem_cnl/variants/librem_mini/hda_verb.c index 4734390ceb..978a33c57d 100644 --- a/src/mainboard/purism/librem_cnl/variants/librem_mini/hda_verb.c +++ b/src/mainboard/purism/librem_cnl/variants/librem_mini/hda_verb.c @@ -2,11 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0269, /* Codec Vendor/Device ID: Realtek ALC269 */ - 0x10ec0269, /* Subsystem ID */ - 12, /* Number of entries */ - +static const u32 realtek_alc269_verbs[] = { AZALIA_RESET(0x1), AZALIA_SUBVENDOR(0, 0x10ec0269), @@ -20,11 +16,9 @@ const u32 cim_verb_data[] = { AZALIA_PIN_CFG(0, 0x1b, AZALIA_PIN_CFG_NC(0)), /* NC */ AZALIA_PIN_CFG(0, 0x1d, AZALIA_PIN_CFG_NC(0)), /* NC */ AZALIA_PIN_CFG(0, 0x1e, AZALIA_PIN_CFG_NC(0)), /* NC */ +}; - 0x8086280b, /* Codec Vendor/Device ID: Intel CannonPoint HDMI */ - 0x80860101, /* Subsystem ID */ - 4, /* Number of entries */ - +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x05, 0x18560010), AZALIA_PIN_CFG(2, 0x06, 0x18560010), @@ -33,4 +27,23 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC269", + .vendor_id = 0x10ec0269, + .subsystem_id = 0x10ec0269, + .address = 0, + .verbs = realtek_alc269_verbs, + .verb_count = ARRAY_SIZE(realtek_alc269_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), + }, +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/purism/librem_jsl/Kconfig b/src/mainboard/purism/librem_jsl/Kconfig index b971bda207..2198dd60f8 100644 --- a/src/mainboard/purism/librem_jsl/Kconfig +++ b/src/mainboard/purism/librem_jsl/Kconfig @@ -2,7 +2,6 @@ config BOARD_PURISM_BASEBOARD_LIBREM_JSL def_bool n - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_16384 select DRIVERS_GENERIC_CBFS_SERIAL select DRIVERS_USB_ACPI diff --git a/src/mainboard/purism/librem_jsl/hda_verb.c b/src/mainboard/purism/librem_jsl/hda_verb.c index 81e950acff..293b090e94 100644 --- a/src/mainboard/purism/librem_jsl/hda_verb.c +++ b/src/mainboard/purism/librem_jsl/hda_verb.c @@ -2,11 +2,7 @@ #include -const u32 cim_verb_data[] = { - 0x10ec0269, /* Codec Vendor/Device ID: Realtek ALC269 */ - 0x10ec0269, /* Subsystem ID */ - 16, /* Number of entries */ - +static const u32 realtek_alc269_verbs[] = { AZALIA_RESET(0x1), AZALIA_SUBVENDOR(0, 0x10ec0269), @@ -41,11 +37,9 @@ const u32 cim_verb_data[] = { 0x020400AF, 0x02050005, 0x020400C0, +}; - 0x8086281a, /* Codec Vendor/Device ID: Intel Jasper Lake HDMI */ - 0x80860101, /* Subsystem ID */ - 6, /* Number of entries */ - +static const u32 intel_display_audio_verbs[] = { AZALIA_SUBVENDOR(2, 0x80860101), AZALIA_PIN_CFG(2, 0x04, 0x18560010), AZALIA_PIN_CFG(2, 0x06, 0x18560010), @@ -56,4 +50,23 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC269", + .vendor_id = 0x10ec0269, + .subsystem_id = 0x10ec0269, + .address = 0, + .verbs = realtek_alc269_verbs, + .verb_count = ARRAY_SIZE(realtek_alc269_verbs), + }, + { + .name = "Intel Display Audio (HDMI/DP)", + .vendor_id = 0x8086281a, + .subsystem_id = 0x80860101, + .address = 2, + .verbs = intel_display_audio_verbs, + .verb_count = ARRAY_SIZE(intel_display_audio_verbs), + }, +}; + AZALIA_ARRAY_SIZES; diff --git a/src/mainboard/purism/librem_skl/Kconfig b/src/mainboard/purism/librem_skl/Kconfig index f2f71572d5..5f3ed06cd4 100644 --- a/src/mainboard/purism/librem_skl/Kconfig +++ b/src/mainboard/purism/librem_skl/Kconfig @@ -2,7 +2,6 @@ config BOARD_PURISM_BASEBOARD_LIBREM_SKL def_bool n - select AZALIA_USE_LEGACY_VERB_TABLE select BOARD_ROMSIZE_KB_16384 select DRIVERS_GENERIC_CBFS_SERIAL select GFX_GMA_IGNORE_PRESENCE_STRAPS diff --git a/src/mainboard/purism/librem_skl/hda_verb.c b/src/mainboard/purism/librem_skl/hda_verb.c index 28f0362641..e308482497 100644 --- a/src/mainboard/purism/librem_skl/hda_verb.c +++ b/src/mainboard/purism/librem_skl/hda_verb.c @@ -2,12 +2,7 @@ #include -const u32 cim_verb_data[] = { - /* coreboot specific header */ - 0x10ec0269, /* Codec Vendor / Device ID: Realtek ALC269 */ - 0x19910269, /* Subsystem ID */ - 12, /* Number of jacks (NID entries) */ - +static const u32 realtek_alc269_verbs[] = { AZALIA_RESET(1), AZALIA_SUBVENDOR(0, 0x19910269), AZALIA_PIN_CFG(0, 0x12, 0x40000000), @@ -24,4 +19,15 @@ const u32 cim_verb_data[] = { const u32 pc_beep_verbs[] = {}; +struct azalia_codec mainboard_azalia_codecs[] = { + { + .name = "Realtek ALC269", + .vendor_id = 0x10ec0269, + .subsystem_id = 0x19910269, + .address = 0, + .verbs = realtek_alc269_verbs, + .verb_count = ARRAY_SIZE(realtek_alc269_verbs), + }, +}; + AZALIA_ARRAY_SIZES;