From 49236d4430a685ac519a0e885583da0841c8d792 Mon Sep 17 00:00:00 2001 From: Piotr Szymaniak Date: Wed, 17 Mar 2021 22:09:59 +0100 Subject: mb/lenovo/t420: Copy HDA verbs from vendor firmware Background story (I think that's what great in opensource - ppl leave there part of their lives): ;-) While trying to fix audio jack not working with coreboot and Windows 10 with some help from hell__ and nico_h on IRC nico_h discovered that t420 and t430 hda_verb.c are the same: oddly, in coreboot source T420 and T430 have the same numbers for very different codecs... I suspect copy-pasta Difference between /sys/class/sound/cardX/hwCXDY/init_pin_config in vendor BIOS helped with the updated config. Connecting audio jack now works flawless both in Linux and Windows. Audio-related keyboard buttons: volup, voldown, mute works fine both in Linux (Debian-based) and Windows 10. mutemic button works (tested ie. with xev) but both in Linux and Windows 10 wont light up or makes any effect. +-----------------------------------+ | init_pin_config dump from: | +----= VENDOR =---+---= coreboot =--+ | 0x19 0x04211040 | 0x19 0x04211040 | | 0x1a 0x61a19050 | 0x1a 0x61a19050 | | 0x1b 0x04a11060 | 0x1b 0x04a11060 | | 0x1c 0x6121401f | 0x1c 0x6121401f | | 0x1d 0x40f001f0 | 0x1d 0x40f001f0 | | 0x1e 0x40f001f0 | 0x1e 0x40f001f0 | | 0x1f 0x90170110 | 0x1f 0x90170110 | | 0x20 0x40f001f0 | 0x20 0x40f001f0 | | 0x22 0x40f001f0 | 0x22 0x40f001f0 | | 0x23 0x90a60170 | 0x23 0x90a60170 | +-----------------+-----------------+ Tested-by: Piotr Szymaniak Signed-off-by: Piotr Szymaniak Change-Id: Ie5eba84e5ea590b7db00e189cd68e714bee7e410 Reviewed-on: https://review.coreboot.org/c/coreboot/+/51612 Reviewed-by: Angel Pons Tested-by: build bot (Jenkins) --- src/mainboard/lenovo/t420/hda_verb.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/mainboard/lenovo/t420/hda_verb.c b/src/mainboard/lenovo/t420/hda_verb.c index 6f27490f9c0f..3d5deefc5e97 100644 --- a/src/mainboard/lenovo/t420/hda_verb.c +++ b/src/mainboard/lenovo/t420/hda_verb.c @@ -11,17 +11,17 @@ const u32 cim_verb_data[] = { 0x14f1506e, /* Codec VID / DID: Conexant CX20590 - schematic shows CX20672 */ 0x17aa21ce, /* Subsystem ID */ 13, /* Number of 4 dword sets */ - AZALIA_SUBVENDOR(0, 0x17aa21d2), - AZALIA_PIN_CFG(0, 0x12, 0x90a60140), - AZALIA_PIN_CFG(0, 0x14, 0x90170110), - AZALIA_PIN_CFG(0, 0x15, 0x03211020), - AZALIA_PIN_CFG(0, 0x17, 0x411111f0), - AZALIA_PIN_CFG(0, 0x18, 0x03a11830), - AZALIA_PIN_CFG(0, 0x19, 0x411111f0), - AZALIA_PIN_CFG(0, 0x1a, 0x411111f0), - AZALIA_PIN_CFG(0, 0x1b, 0x411111f0), - AZALIA_PIN_CFG(0, 0x1d, 0x40138205), - AZALIA_PIN_CFG(0, 0x1e, 0x411111f0), + AZALIA_SUBVENDOR(0, 0x17aa21ce), + AZALIA_PIN_CFG(0, 0x19, 0x04211040), + AZALIA_PIN_CFG(0, 0x1a, 0x61a19050), + AZALIA_PIN_CFG(0, 0x1b, 0x04a11060), + AZALIA_PIN_CFG(0, 0x1c, 0x6121401f), + AZALIA_PIN_CFG(0, 0x1d, 0x40f001f0), + AZALIA_PIN_CFG(0, 0x1e, 0x40f001f0), + AZALIA_PIN_CFG(0, 0x1f, 0x90170110), + AZALIA_PIN_CFG(0, 0x20, 0x40f001f0), + AZALIA_PIN_CFG(0, 0x22, 0x40f001f0), + AZALIA_PIN_CFG(0, 0x23, 0x90a60170), /* Misc entries */ 0x00b707C0, /* Enable PortB as Output with HP amp */ @@ -35,6 +35,15 @@ const u32 cim_verb_data[] = { 0x00170500, /* Set power state to D0 */ 0x00170500, /* Padding */ 0x00170500, /* Padding */ + + /* --- Codec #3 --- */ + 0x80862805, /* Codec Vendor / Device ID: Intel PantherPoint HDMI */ + 0x80860101, /* Subsystem ID */ + 4, /* Number of 4 dword sets */ + AZALIA_SUBVENDOR(3, 0x80860101), + AZALIA_PIN_CFG(3, 0x05, 0x18560010), + AZALIA_PIN_CFG(3, 0x06, 0x18560020), + AZALIA_PIN_CFG(3, 0x07, 0x18560030), }; const u32 pc_beep_verbs[] = { -- cgit v1.2.3