diff --git a/src/mainboard/google/rauru/Kconfig b/src/mainboard/google/rauru/Kconfig index fbf2efa3a2..486e273874 100644 --- a/src/mainboard/google/rauru/Kconfig +++ b/src/mainboard/google/rauru/Kconfig @@ -29,6 +29,7 @@ config BOARD_SPECIFIC_OPTIONS select CHROMEOS_USE_EC_WATCHDOG_FLAG if CHROMEOS select EC_GOOGLE_CHROMEEC select EC_GOOGLE_CHROMEEC_BOARDID + select EC_GOOGLE_CHROMEEC_FW_CONFIG_FROM_UFSC if BOARD_GOOGLE_SAPPHIRE select EC_GOOGLE_CHROMEEC_SPI select I2C_TPM if VBOOT select MAINBOARD_HAS_TPM2 if VBOOT @@ -52,10 +53,13 @@ config MAINBOARD_PART_NUMBER default "Sapphire" if BOARD_GOOGLE_SAPPHIRE config VARIANT_DIR + default "hylia" if BOARD_GOOGLE_HYLIA default "navi" if BOARD_GOOGLE_NAVI + default "rauru" if BOARD_GOOGLE_RAURU + default "sapphire" if BOARD_GOOGLE_SAPPHIRE config OVERRIDE_DEVICETREE - default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" if BOARD_GOOGLE_NAVI + default "variants/\$(CONFIG_VARIANT_DIR)/overridetree.cb" config BOOT_DEVICE_SPI_FLASH_BUS int diff --git a/src/mainboard/google/rauru/chromeos.c b/src/mainboard/google/rauru/chromeos.c index 33316393ac..b784a2f3f7 100644 --- a/src/mainboard/google/rauru/chromeos.c +++ b/src/mainboard/google/rauru/chromeos.c @@ -2,8 +2,8 @@ #include #include -#include #include +#include #include "gpio.h" @@ -79,12 +79,20 @@ void fill_lb_gpios(struct lb_gpios *gpios) {GPIO_EN_SPKR.id, ACTIVE_HIGH, -1, "speaker enable"}, }; - if (fw_config_probe(FW_CONFIG(AUDIO_AMP, AMP_TAS2563))) - lb_add_gpios(gpios, smartamp_gpios, ARRAY_SIZE(smartamp_gpios)); - else if (fw_config_probe(FW_CONFIG(AUDIO_AMP, AMP_ALC5645))) - lb_add_gpios(gpios, alc5645_gpios, ARRAY_SIZE(alc5645_gpios)); - else + switch (get_audio_amp_id()) { + case AUD_AMP_ID_NAU8318: lb_add_gpios(gpios, nau8318_gpios, ARRAY_SIZE(nau8318_gpios)); + break; + case AUD_AMP_ID_TAS2563: + lb_add_gpios(gpios, smartamp_gpios, ARRAY_SIZE(smartamp_gpios)); + break; + case AUD_AMP_ID_ALC5645: + lb_add_gpios(gpios, alc5645_gpios, ARRAY_SIZE(alc5645_gpios)); + break; + case AUD_AMP_ID_UNKNOWN: + default: + break; + } struct lb_gpio edp_pwm_backlight_gpios[] = { {GPIO_BL_PWM_1V8.id, ACTIVE_HIGH, -1, "PWM control"}, diff --git a/src/mainboard/google/rauru/devicetree.cb b/src/mainboard/google/rauru/devicetree.cb index 1705dbeb9b..df65b3f24b 100644 --- a/src/mainboard/google/rauru/devicetree.cb +++ b/src/mainboard/google/rauru/devicetree.cb @@ -1,13 +1,5 @@ ## SPDX-License-Identifier: GPL-2.0-only -fw_config - field AUDIO_AMP 28 29 - option AMP_NAU8318 0 - option AMP_TAS2563 1 - option AMP_ALC5645 2 - end -end - chip soc/mediatek/mt8196 device cpu_cluster 0 on end diff --git a/src/mainboard/google/rauru/include/variants.h b/src/mainboard/google/rauru/include/variants.h index 853b64a8ba..56eb334051 100644 --- a/src/mainboard/google/rauru/include/variants.h +++ b/src/mainboard/google/rauru/include/variants.h @@ -5,6 +5,15 @@ #include +enum audio_amplifier_id { + AUD_AMP_ID_UNKNOWN, + AUD_AMP_ID_NAU8318, + AUD_AMP_ID_TAS2563, + AUD_AMP_ID_ALC5645, +}; + +enum audio_amplifier_id get_audio_amp_id(void); + void fw_config_panel_override(struct panel_description *panel); #endif /* __MAINBOARD_GOOGLE_RAURU_VARIANTS_H__ */ diff --git a/src/mainboard/google/rauru/mainboard.c b/src/mainboard/google/rauru/mainboard.c index f55da81329..d0ed3ad7f7 100644 --- a/src/mainboard/google/rauru/mainboard.c +++ b/src/mainboard/google/rauru/mainboard.c @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include @@ -17,6 +16,7 @@ #include #include #include +#include #include "gpio.h" #include "storage.h" @@ -52,15 +52,22 @@ static void configure_alc5645(void) printk(BIOS_INFO, "%s: done\n", __func__); } + static void configure_audio(void) { - if (fw_config_probe(FW_CONFIG(AUDIO_AMP, AMP_TAS2563))) { + switch (get_audio_amp_id()) { + case AUD_AMP_ID_TAS2563: mtk_i2c_bus_init(I2C3, I2C_SPEED_FAST); configure_tas2563(); - } else if (fw_config_probe(FW_CONFIG(AUDIO_AMP, AMP_ALC5645))) { + break; + case AUD_AMP_ID_ALC5645: configure_alc5645(); - } else { - printk(BIOS_INFO, "Audio configure default amps NAU8318\n"); + break; + case AUD_AMP_ID_NAU8318: + case AUD_AMP_ID_UNKNOWN: + default: + /* No configuration needed for NAU8318 or UNKNOWN */ + break; } printk(BIOS_INFO, "%s: done\n", __func__); diff --git a/src/mainboard/google/rauru/variants/hylia/Makefile.mk b/src/mainboard/google/rauru/variants/hylia/Makefile.mk new file mode 100644 index 0000000000..52fd109576 --- /dev/null +++ b/src/mainboard/google/rauru/variants/hylia/Makefile.mk @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +ramstage-y += fw_config.c diff --git a/src/mainboard/google/rauru/variants/hylia/fw_config.c b/src/mainboard/google/rauru/variants/hylia/fw_config.c new file mode 100644 index 0000000000..4332c97c62 --- /dev/null +++ b/src/mainboard/google/rauru/variants/hylia/fw_config.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#include +#include + +enum audio_amplifier_id get_audio_amp_id(void) +{ + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_TAS2563))) + return AUD_AMP_ID_TAS2563; + + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_ALC5645))) + return AUD_AMP_ID_ALC5645; + + return AUD_AMP_ID_NAU8318; +} diff --git a/src/mainboard/google/rauru/variants/hylia/overridetree.cb b/src/mainboard/google/rauru/variants/hylia/overridetree.cb new file mode 100644 index 0000000000..d3cc60d31b --- /dev/null +++ b/src/mainboard/google/rauru/variants/hylia/overridetree.cb @@ -0,0 +1,14 @@ +## SPDX-License-Identifier: GPL-2.0-only + +fw_config + field AUDIO_AMPLIFIER 28 29 + option AUDIO_AMPLIFIER_NAU8318 0 + option AUDIO_AMPLIFIER_TAS2563 1 + option AUDIO_AMPLIFIER_ALC5645 2 + end +end + +chip soc/mediatek/mt8196 + device domain 0 on + end +end diff --git a/src/mainboard/google/rauru/variants/navi/fw_config.c b/src/mainboard/google/rauru/variants/navi/fw_config.c index 50f5df9903..55d16e763e 100644 --- a/src/mainboard/google/rauru/variants/navi/fw_config.c +++ b/src/mainboard/google/rauru/variants/navi/fw_config.c @@ -9,3 +9,14 @@ void fw_config_panel_override(struct panel_description *panel) if (fw_config_probe(FW_CONFIG(OLED_WQXGA_PLUS, PRESENT))) panel->quirks |= PANEL_QUIRK_FORCE_MAX_SWING; } + +enum audio_amplifier_id get_audio_amp_id(void) +{ + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_TAS2563))) + return AUD_AMP_ID_TAS2563; + + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_ALC5645))) + return AUD_AMP_ID_ALC5645; + + return AUD_AMP_ID_NAU8318; +} diff --git a/src/mainboard/google/rauru/variants/navi/overridetree.cb b/src/mainboard/google/rauru/variants/navi/overridetree.cb index cbc5e29713..0f7e24f908 100644 --- a/src/mainboard/google/rauru/variants/navi/overridetree.cb +++ b/src/mainboard/google/rauru/variants/navi/overridetree.cb @@ -5,6 +5,11 @@ fw_config option PRESENT 1 option ABSENT 0 end + field AUDIO_AMPLIFIER 28 29 + option AUDIO_AMPLIFIER_NAU8318 0 + option AUDIO_AMPLIFIER_TAS2563 1 + option AUDIO_AMPLIFIER_ALC5645 2 + end end chip soc/mediatek/mt8196 diff --git a/src/mainboard/google/rauru/variants/rauru/Makefile.mk b/src/mainboard/google/rauru/variants/rauru/Makefile.mk new file mode 100644 index 0000000000..52fd109576 --- /dev/null +++ b/src/mainboard/google/rauru/variants/rauru/Makefile.mk @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +ramstage-y += fw_config.c diff --git a/src/mainboard/google/rauru/variants/rauru/fw_config.c b/src/mainboard/google/rauru/variants/rauru/fw_config.c new file mode 100644 index 0000000000..4332c97c62 --- /dev/null +++ b/src/mainboard/google/rauru/variants/rauru/fw_config.c @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#include +#include + +enum audio_amplifier_id get_audio_amp_id(void) +{ + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_TAS2563))) + return AUD_AMP_ID_TAS2563; + + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_ALC5645))) + return AUD_AMP_ID_ALC5645; + + return AUD_AMP_ID_NAU8318; +} diff --git a/src/mainboard/google/rauru/variants/rauru/overridetree.cb b/src/mainboard/google/rauru/variants/rauru/overridetree.cb new file mode 100644 index 0000000000..d3cc60d31b --- /dev/null +++ b/src/mainboard/google/rauru/variants/rauru/overridetree.cb @@ -0,0 +1,14 @@ +## SPDX-License-Identifier: GPL-2.0-only + +fw_config + field AUDIO_AMPLIFIER 28 29 + option AUDIO_AMPLIFIER_NAU8318 0 + option AUDIO_AMPLIFIER_TAS2563 1 + option AUDIO_AMPLIFIER_ALC5645 2 + end +end + +chip soc/mediatek/mt8196 + device domain 0 on + end +end diff --git a/src/mainboard/google/rauru/variants/sapphire/Makefile.mk b/src/mainboard/google/rauru/variants/sapphire/Makefile.mk new file mode 100644 index 0000000000..52fd109576 --- /dev/null +++ b/src/mainboard/google/rauru/variants/sapphire/Makefile.mk @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only + +ramstage-y += fw_config.c diff --git a/src/mainboard/google/rauru/variants/sapphire/fw_config.c b/src/mainboard/google/rauru/variants/sapphire/fw_config.c new file mode 100644 index 0000000000..c5a1b6a0f8 --- /dev/null +++ b/src/mainboard/google/rauru/variants/sapphire/fw_config.c @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0-only OR MIT */ + +#include +#include + +enum audio_amplifier_id get_audio_amp_id(void) +{ + if (fw_config_probe(FW_CONFIG(AUDIO_AMPLIFIER, AUDIO_AMPLIFIER_TAS2563))) + return AUD_AMP_ID_TAS2563; + + return AUD_AMP_ID_UNKNOWN; +} diff --git a/src/mainboard/google/rauru/variants/sapphire/overridetree.cb b/src/mainboard/google/rauru/variants/sapphire/overridetree.cb new file mode 100644 index 0000000000..5c70580d8d --- /dev/null +++ b/src/mainboard/google/rauru/variants/sapphire/overridetree.cb @@ -0,0 +1,41 @@ +## SPDX-License-Identifier: GPL-2.0-only + +fw_config + field AUDIO_CODEC 0 2 + option AUDIO_CODEC_UNKNOWN 0 + option AUDIO_CODEC_ALC5682IVS 1 + end + field AUDIO_AMPLIFIER 3 5 + option AUDIO_AMPLIFIER_UNKNOWN 0 + option AUDIO_AMPLIFIER_TAS2563 1 + end + field STORAGE_TYPE 12 14 + option STORAGE_TYPE_UNKNOWN 0 + option STORAGE_TYPE_UFS_40 1 + end + field FINGERPRINT_INTERFACE 24 25 + option FINGERPRINT_INTERFACE_UNKNOWN 0 + option FINGERPRINT_INTERFACE_USB 1 + end + field WIFI_INTERFACE 26 27 + option WIFI_INTERFACE_UNKNOWN 0 + option WIFI_INTERFACE_PCIE 1 + end + field FORM_FACTOR 30 31 + option FORM_FACTOR_UNKNOWN 0 + option FORM_FACTOR_DETACHABLE 1 + end + field PANEL_ID 39 42 + option PANEL_ID_NS130070_M00 9 + option PANEL_ID_UNKNOWN 15 + end + field STYLUS 48 48 + option STYLUS_PRESENT_ABSENT 0 + option STYLUS_PRESENT_PRESENT 1 + end +end + +chip soc/mediatek/mt8196 + device domain 0 on + end +end