Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/59856 )
Change subject: mb/google/octopus: add ALC5682I-VS to be supported in the SSFC ......................................................................
mb/google/octopus: add ALC5682I-VS to be supported in the SSFC
Add ALC5682I-VS codec support. ALC5682I-VD/ALC5682I-VS load different hid name depending on SSFC.
BUG=b:198722640 BRANCH=octopus TEST=Set CBI SSFC BIT9-11 to select codec, and test audio works
Change-Id: I80be12d88e100ce8586371fc49b36447859e24f8 Signed-off-by: Paul Huang paul2_huang@pegatron.corp-partner.google.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/59856 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Marco Chen marcochen@google.com --- M src/mainboard/google/octopus/mainboard.c M src/mainboard/google/octopus/variants/baseboard/include/baseboard/cbi_ssfc.h M src/mainboard/google/octopus/variants/baseboard/nhlt.c 3 files changed, 24 insertions(+), 6 deletions(-)
Approvals: build bot (Jenkins): Verified Marco Chen: Looks good to me, approved
diff --git a/src/mainboard/google/octopus/mainboard.c b/src/mainboard/google/octopus/mainboard.c index 9ffd633..fbebe57 100644 --- a/src/mainboard/google/octopus/mainboard.c +++ b/src/mainboard/google/octopus/mainboard.c @@ -62,6 +62,7 @@ /* For RT5682, GPIO 137 should be set as EDGE_BOTH. */ const struct pad_config rt5682_gpio_137 = PAD_CFG_GPI_APIC_IOS(GPIO_137, NONE, DEEP, EDGE_BOTH, INVERT, HIZCRx1, DISPUPD); + enum ssfc_audio_codec codec = ssfc_get_audio_codec();
if (table == NULL || num == 0) return; @@ -72,7 +73,8 @@ * provide override_table right now so it will be returned earlier since * table above is NULL. */ - if (ssfc_get_audio_codec() != SSFC_AUDIO_CODEC_RT5682) + if ((codec != SSFC_AUDIO_CODEC_RT5682) && + (codec != SSFC_AUDIO_CODEC_RT5682_VS)) return;
while (num--) { @@ -192,13 +194,26 @@ continue; }
- if ((audio_dev->chip_ops == &drivers_i2c_generic_ops) && - (codec == SSFC_AUDIO_CODEC_RT5682)) { + if (audio_dev->chip_ops == &drivers_i2c_generic_ops) { struct drivers_i2c_generic_config *cfg = audio_dev->chip_info;
- if (cfg != NULL && !strcmp(cfg->hid, "10EC5682")) { - printk(BIOS_INFO, "enable RT5682.\n"); + if ((cfg != NULL && !strcmp(cfg->hid, "10EC5682")) && + (codec == SSFC_AUDIO_CODEC_RT5682)) { + printk(BIOS_INFO, "enable RT5682 VD.\n"); + continue; + } + + if ((cfg != NULL && !strcmp(cfg->hid, "10EC5682")) && + (codec == SSFC_AUDIO_CODEC_RT5682_VS)) { + cfg->hid = "RTL5682"; + printk(BIOS_INFO, "enable RT5682 VS.\n"); + continue; + } + + if ((cfg != NULL && !strcmp(cfg->hid, "RTL5682")) && + (codec == SSFC_AUDIO_CODEC_RT5682_VS)) { + printk(BIOS_INFO, "enable RT5682 VS.\n"); continue; } } diff --git a/src/mainboard/google/octopus/variants/baseboard/include/baseboard/cbi_ssfc.h b/src/mainboard/google/octopus/variants/baseboard/include/baseboard/cbi_ssfc.h index cef047a..cd160ba 100644 --- a/src/mainboard/google/octopus/variants/baseboard/include/baseboard/cbi_ssfc.h +++ b/src/mainboard/google/octopus/variants/baseboard/include/baseboard/cbi_ssfc.h @@ -30,6 +30,7 @@ SSFC_AUDIO_CODEC_DA7219, SSFC_AUDIO_CODEC_RT5682, SSFC_AUDIO_CODEC_CS42L42, + SSFC_AUDIO_CODEC_RT5682_VS, }; #define SSFC_AUDIO_CODEC_OFFSET 9 #define SSFC_AUDIO_CODEC_MASK 0x7 diff --git a/src/mainboard/google/octopus/variants/baseboard/nhlt.c b/src/mainboard/google/octopus/variants/baseboard/nhlt.c index 9c9316c..13a40b3 100644 --- a/src/mainboard/google/octopus/variants/baseboard/nhlt.c +++ b/src/mainboard/google/octopus/variants/baseboard/nhlt.c @@ -28,7 +28,9 @@ printk(BIOS_ERR, "Added Dialog_7219 codec.\n"); }
- if (CONFIG(NHLT_RT5682) && codec == SSFC_AUDIO_CODEC_RT5682) { + if (CONFIG(NHLT_RT5682) && + (codec == SSFC_AUDIO_CODEC_RT5682 || + codec == SSFC_AUDIO_CODEC_RT5682_VS)) { /* Realtek for Headset codec */ if (!nhlt_soc_add_rt5682(nhlt, AUDIO_LINK_SSP2)) printk(BIOS_ERR, "Added ALC5682 codec.\n");