From b24eadb973cdaffabdb03452338aaaca868ca380 Mon Sep 17 00:00:00 2001 From: Tyler Wang Date: Tue, 21 Nov 2023 15:38:57 +0800 Subject: mb/google/rex/var/karis: Enable audio BT offload BUG=b:312099281 TEST=Build and boot to Karis. Verify the config from serial logs. w/o this CL - ``` [SPEW ] ------------------ CNVi Config ------------------ [SPEW ] CNVi Mode = 1 [SPEW ] Wi-Fi Core = 1 [SPEW ] BT Core = 1 [SPEW ] BT Audio Offload = 0 [SPEW ] BT Interface = 1 ``` w/ this CL - ``` [SPEW ] ------------------ CNVi Config ------------------ [SPEW ] CNVi Mode = 1 [SPEW ] Wi-Fi Core = 1 [SPEW ] BT Core = 1 [SPEW ] BT Audio Offload = 1 [SPEW ] BT Interface = 1 ``` Change-Id: Icd2c42261fdcfa5aac17be28fde3804348ddf9b4 Signed-off-by: Tyler Wang Reviewed-on: https://review.coreboot.org/c/coreboot/+/79210 Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik --- .../google/rex/variants/karis/fw_config.c | 51 ++++++++++++++++++++++ src/mainboard/google/rex/variants/karis/variant.c | 5 +++ 2 files changed, 56 insertions(+) diff --git a/src/mainboard/google/rex/variants/karis/fw_config.c b/src/mainboard/google/rex/variants/karis/fw_config.c index ea9f9ebd18..ae74a42fa4 100644 --- a/src/mainboard/google/rex/variants/karis/fw_config.c +++ b/src/mainboard/google/rex/variants/karis/fw_config.c @@ -34,6 +34,43 @@ static const struct pad_config stylus_disable_pads[] = { PAD_NC(GPP_E09, NONE), }; +static const struct pad_config cnvi_bt_disable_pads[] = { + /* GPP_F04 : [] ==> CNV_RF_RST_L */ + PAD_NC(GPP_F04, NONE), + /* GPP_F05 : [] ==> CNV_CLKREQ */ + PAD_NC(GPP_F05, NONE), +}; + +static const struct pad_config bt_i2s_enable_pads[] = { + /* GPP_V30 : [] ==> BT_I2S_BCLK */ + PAD_CFG_NF(GPP_VGPIO30, NONE, DEEP, NF2), + /* GPP_V31 : [] ==> BT_I2S_SYNC */ + PAD_CFG_NF(GPP_VGPIO31, NONE, DEEP, NF2), + /* GPP_V32 : [] ==> BT_I2S_SDO */ + PAD_CFG_NF(GPP_VGPIO32, NONE, DEEP, NF2), + /* GPP_V33 : [] ==> BT_I2S_SDI */ + PAD_CFG_NF(GPP_VGPIO33, NONE, DEEP, NF2), + /* GPP_V34 : [] ==> SSP2_SCLK */ + PAD_CFG_NF(GPP_VGPIO34, NONE, DEEP, NF1), + /* GPP_V35 : [] ==> SSP2_SFRM */ + PAD_CFG_NF(GPP_VGPIO35, NONE, DEEP, NF1), + /* GPP_V36 : [] ==> SSP_TXD */ + PAD_CFG_NF(GPP_VGPIO36, NONE, DEEP, NF1), + /* GPP_V37 : [] ==> SSP_RXD */ + PAD_CFG_NF(GPP_VGPIO37, NONE, DEEP, NF1), +}; + +static const struct pad_config discrete_bt_i2s_enable_pads[] = { + /* GPP_S00 : [] ==> I2S1_SCLK */ + PAD_CFG_NF(GPP_S00, NONE, DEEP, NF6), + /* GPP_S01 : [] ==> I2S1_SFRM */ + PAD_CFG_NF(GPP_S01, NONE, DEEP, NF6), + /* GPP_S02 : [] ==> I2S1_TXD */ + PAD_CFG_NF(GPP_S02, NONE, DEEP, NF6), + /* GPP_S03 : [] ==> I2S1_RXD */ + PAD_CFG_NF(GPP_S03, NONE, DEEP, NF6), +}; + void fw_config_gpio_padbased_override(struct pad_config *padbased_table) { if (fw_config_probe(FW_CONFIG(STYLUS, STYLUS_ABSENT))) { @@ -44,4 +81,18 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) printk(BIOS_INFO, "Configure GPIOs for no FP module.\n"); GPIO_PADBASED_OVERRIDE(padbased_table, fp_disable_pads); } + if (fw_config_probe(FW_CONFIG(AUDIO, ALC5650_NO_AMP_I2S))) { + printk(BIOS_INFO, "Configure GPIOs for BT offload mode.\n"); + GPIO_PADBASED_OVERRIDE(padbased_table, bt_i2s_enable_pads); + } + if (fw_config_probe(FW_CONFIG(WIFI_TYPE, WIFI_CNVI))) { + printk(BIOS_INFO, "Configure GPIOs for CNVi WIFI/BT module.\n"); + GPIO_PADBASED_OVERRIDE(padbased_table, bt_i2s_enable_pads); + } + if (fw_config_probe(FW_CONFIG(WIFI_TYPE, WIFI_PCIE))) { + printk(BIOS_INFO, "Configure GPIOs for discrete WIFI/BT module.\n"); + GPIO_PADBASED_OVERRIDE(padbased_table, discrete_bt_i2s_enable_pads); + printk(BIOS_INFO, "Configure GPIOs for discrete PCM BT path.\n"); + GPIO_PADBASED_OVERRIDE(padbased_table, cnvi_bt_disable_pads); + } } diff --git a/src/mainboard/google/rex/variants/karis/variant.c b/src/mainboard/google/rex/variants/karis/variant.c index 308eea6a28..85a908a846 100644 --- a/src/mainboard/google/rex/variants/karis/variant.c +++ b/src/mainboard/google/rex/variants/karis/variant.c @@ -9,3 +9,8 @@ const char *get_wifi_sar_cbfs_filename(void) { return get_wifi_sar_fw_config_filename(FW_CONFIG_FIELD(WIFI_TYPE)); } + +void variant_update_soc_chip_config(struct soc_intel_meteorlake_config *config) +{ + config->cnvi_bt_audio_offload = true; +} -- cgit v1.2.3