diff --git a/src/mainboard/google/ocelot/variants/ojal/fw_config.c b/src/mainboard/google/ocelot/variants/ojal/fw_config.c index 36bc5183a9..709723709f 100644 --- a/src/mainboard/google/ocelot/variants/ojal/fw_config.c +++ b/src/mainboard/google/ocelot/variants/ojal/fw_config.c @@ -11,6 +11,74 @@ /* t: table */ #define GPIO_CONFIGURE_PADS(t) gpio_configure_pads(t, ARRAY_SIZE(t)) +static const struct pad_config hda_enable_pads[] = { + /* GPP_D10: HDA_BCLK (HDR) */ + PAD_CFG_NF(GPP_D10, NONE, DEEP, NF1), + /* GPP_D11: HDA_SYNC (HDR) */ + PAD_CFG_NF(GPP_D11, NONE, DEEP, NF1), + /* GPP_D12: HDA_SDO (HDR) */ + PAD_CFG_NF(GPP_D12, NONE, DEEP, NF1), + /* GPP_D13: HDA_SDI0 (HDR) */ + PAD_CFG_NF(GPP_D13, NONE, DEEP, NF1), + /* GPP_D16: HDA_RST_N (HDR) */ + PAD_CFG_NF(GPP_D16, NONE, DEEP, NF1), + /* GPP_D17: HDA_SDI1 (HDR) */ + PAD_CFG_NF(GPP_D17, NONE, DEEP, NF1), + /* GPP_S04: DMIC0_CLK (HDR) */ + PAD_CFG_NF(GPP_S04, NONE, DEEP, NF5), + /* GPP_S05: DMIC0_DATA (HDR) */ + PAD_CFG_NF(GPP_S05, NONE, DEEP, NF5), + /* GPP_S06: DMIC1_CLK (HDR) */ + PAD_CFG_NF(GPP_S06, NONE, DEEP, NF5), + /* GPP_S07: DMIC1_DATA (HDR) */ + PAD_CFG_NF(GPP_S07, NONE, DEEP, NF5), +}; + +static const struct pad_config sndw_cs42l43_enable_pads[] = { + /* Soundwire GPIO Config */ + /* GPP_S00: SNDW3_CLK_CODEC (HDR) */ + PAD_CFG_NF(GPP_S00, NONE, DEEP, NF1), + /* GPP_S01: SNDW3_DATA0_CODEC (HDR) */ + PAD_CFG_NF(GPP_S01, NONE, DEEP, NF1), + /* GPP_S02: SNDW3_DATA1_CODEC (HDR) */ + PAD_CFG_NF(GPP_S02, NONE, DEEP, NF1), + /* GPP_S04: DMIC0_CLK (HDR) */ + PAD_CFG_NF(GPP_S04, NONE, DEEP, NF5), + /* GPP_S05: DMIC0_DATA (HDR) */ + PAD_CFG_NF(GPP_S05, NONE, DEEP, NF5), +}; + +static const struct pad_config audio_disable_pads[] = { + /* GPP_D10: HDA_BCLK (HDR) */ + PAD_NC(GPP_D10, NONE), + /* GPP_D11: HDA_SYNC (HDR) */ + PAD_NC(GPP_D11, NONE), + /* GPP_D12: HDA_SDO (HDR) */ + PAD_NC(GPP_D12, NONE), + /* GPP_D13: HDA_SDI0 (HDR) */ + PAD_NC(GPP_D13, NONE), + /* GPP_D16: HDA_RST_N (HDR) */ + PAD_NC(GPP_D16, NONE), + /* GPP_D17: HDA_SDI1 (HDR) */ + PAD_NC(GPP_D17, NONE), + /* GPP_S00: SNDW3_CLK_CODEC (HDR) */ + PAD_NC(GPP_S00, NONE), + /* GPP_S01: SNDW3_DATA0_CODEC (HDR) */ + PAD_NC(GPP_S01, NONE), + /* GPP_S02: SNDW3_DATA1_CODEC (HDR) */ + PAD_NC(GPP_S02, NONE), + /* GPP_S03: SNDW3_DATA2_CODEC (HDR) */ + PAD_NC(GPP_S03, NONE), + /* GPP_S04: DMIC0_CLK (HDR) */ + PAD_NC(GPP_S04, NONE), + /* GPP_S05: DMIC0_DATA (HDR) */ + PAD_NC(GPP_S05, NONE), + /* GPP_S06: DMIC1_CLK (HDR) */ + PAD_NC(GPP_S06, NONE), + /* GPP_S07: DMIC1_DATA (HDR) */ + PAD_NC(GPP_S07, NONE), +}; + static const struct pad_config pre_mem_gen4_ssd_pwr_pads[] = { /* GPP_H18: GEN4_SSD_PWREN */ PAD_CFG_GPO(GPP_H18, 0, PLTRST), @@ -167,6 +235,14 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) GPIO_PADBASED_OVERRIDE(padbased_table, ufs_enable_pads); } + if (fw_config_probe(FW_CONFIG(AUDIO, AUDIO_NONE))) { + GPIO_PADBASED_OVERRIDE(padbased_table, audio_disable_pads); + } else if (fw_config_probe(FW_CONFIG(AUDIO, AUDIO_CS42L43_SNDW))) { + GPIO_PADBASED_OVERRIDE(padbased_table, sndw_cs42l43_enable_pads); + } else if (fw_config_probe(FW_CONFIG(AUDIO, AUDIO_ALC256_HDA))) { + GPIO_PADBASED_OVERRIDE(padbased_table, hda_enable_pads); + } + if (fw_config_probe(FW_CONFIG(WIFI, WIFI_CNVI_6)) || fw_config_probe(FW_CONFIG(WIFI, WIFI_CNVI_7))) { GPIO_PADBASED_OVERRIDE(padbased_table, cnvi_enable_pads); diff --git a/src/mainboard/google/ocelot/variants/ojal/overridetree.cb b/src/mainboard/google/ocelot/variants/ojal/overridetree.cb index a8686cd986..adb8ece6a1 100644 --- a/src/mainboard/google/ocelot/variants/ojal/overridetree.cb +++ b/src/mainboard/google/ocelot/variants/ojal/overridetree.cb @@ -306,5 +306,19 @@ chip soc/intel/pantherlake end device ref smbus on end + device ref hda on + chip drivers/intel/soundwire + device generic 0 on + chip drivers/soundwire/cs42l43 + # SoundWire Link 3 ID 1 + register "desc" = ""Headset Codec"" + register "sub" = ""1337"" + device generic 3.1 on + probe AUDIO AUDIO_CS42L43_SNDW + end + end + end + end + end end end