From 796d3b37aa3dddf2a6ae4bc2bdfd3cb8d24cffd1 Mon Sep 17 00:00:00 2001 From: Ren Kuo Date: Wed, 26 Nov 2025 13:31:46 +0800 Subject: [PATCH] mb/google/fatcat/var/moonstone: Update fw_config definitions with UFSC Enable Unified Firmware and Secondary Source Configuration (UFSC) support for moonstone. UFSC standardizes the bitfields and bitmap definitions for firmware configuration. Update coreboot code with new UFSC definitions and enable EC_GOOGLE_CHROMEEC_FW_CONFIG_FROM_UFSC. BUG=b:464077440 TEST=emerge-fatcat coreboot depthcharge chromeos-bootimage BRANCH=none Change-Id: I8ecd9accb4ad09aae3a6fb9e3f92d8d0a3c9bb9c Signed-off-by: Ren Kuo Reviewed-on: https://review.coreboot.org/c/coreboot/+/90258 Reviewed-by: Bob Moragues Reviewed-by: Subrata Banik Tested-by: build bot (Jenkins) --- src/mainboard/google/fatcat/Kconfig | 1 + .../fatcat/variants/moonstone/fw_config.c | 24 +---- .../fatcat/variants/moonstone/overridetree.cb | 96 ++++++++++++------- .../fatcat/variants/moonstone/variant.c | 10 +- 4 files changed, 70 insertions(+), 61 deletions(-) diff --git a/src/mainboard/google/fatcat/Kconfig b/src/mainboard/google/fatcat/Kconfig index d66905ab67..b38a4e90b9 100644 --- a/src/mainboard/google/fatcat/Kconfig +++ b/src/mainboard/google/fatcat/Kconfig @@ -147,6 +147,7 @@ config BOARD_GOOGLE_LAPIS config BOARD_GOOGLE_MOONSTONE select BOARD_GOOGLE_BASEBOARD_FATCAT select DRIVERS_SOUNDWIRE_ALC1320 + select EC_GOOGLE_CHROMEEC_FW_CONFIG_FROM_UFSC select FSP_UGOP_EARLY_SIGN_OF_LIFE select HAVE_SLP_S0_GATE select MAINBOARD_HAS_GOOGLE_STRAUSS_KEYBOARD diff --git a/src/mainboard/google/fatcat/variants/moonstone/fw_config.c b/src/mainboard/google/fatcat/variants/moonstone/fw_config.c index 22168413ba..baff0bd640 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/fw_config.c +++ b/src/mainboard/google/fatcat/variants/moonstone/fw_config.c @@ -77,17 +77,6 @@ static const struct pad_config pre_mem_fp_spi_enable_pads[] = { PAD_CFG_GPO(GPP_C15, 0, DEEP), }; -static const struct pad_config touchscreen_disable_pads[] = { - /* GPP_F08: EN_TCHSCR_PWR => NC */ - PAD_NC(GPP_F08, NONE), - /* GPP_F16: TCHSCR_RST_L => NC */ - PAD_NC(GPP_F16, NONE), - /* GPP_F18: TCHSCR_INT_L => NC */ - PAD_NC(GPP_F18, NONE), - /* GPP_E05: TCHSCR_RPT_EN => NC */ - PAD_NC(GPP_E05, NONE), -}; - void fw_config_configure_pre_mem_gpio(void) { if (!fw_config_is_provisioned()) { @@ -95,7 +84,7 @@ void fw_config_configure_pre_mem_gpio(void) return; } - if (fw_config_probe(FW_CONFIG(FPMCU, FP_SPI))) + if (fw_config_probe(FW_CONFIG(FINGERPRINT_INTERFACE, FINGERPRINT_INTERFACE_SPI))) GPIO_CONFIGURE_PADS(pre_mem_fp_spi_enable_pads); } @@ -113,7 +102,7 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) *| FPMCU | GSPI0 | usb2_port6 | *+-------+--------+-------------+ */ - if (fw_config_probe(FW_CONFIG(FPMCU, FP_SPI))) { + if (fw_config_probe(FW_CONFIG(FINGERPRINT_INTERFACE, FINGERPRINT_INTERFACE_SPI))) { GPIO_PADBASED_OVERRIDE(padbased_table, fp_spi_enable_pads); } else { GPIO_PADBASED_OVERRIDE(padbased_table, fp_spi_disable_pads); @@ -121,10 +110,10 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) /* Probe fw_config : "IO_PORT" to reconfigure port settings accordingly. * proto0 : IO_PORT => "USB2A2C_HDMI:0" * porot1.5: IO_PORT => "USB3C:1" - * +-----------------+------------------+------------------+ + *+-----------------+------------------+------------------+ *| IO_PORT | USB2A2C_HDMI | USB3C | *+-----------------+------------------+------------------+ - *| tcss_usb3_port0 | USB4_C0 (MB-TBT) | USB4_C0 (MB-TBT) | + *| tcss_usb3_port0 | USB4_C0 (MB-TBT) | USB4_C0 (MB) | *+-----------------+------------------+------------------+ *| tcss_usb3_port1 | N/A | USB3.2 C2 (DB) | *+-----------------+------------------+------------------+ @@ -141,11 +130,8 @@ void fw_config_gpio_padbased_override(struct pad_config *padbased_table) *| usb2_port6 | USB2_A1 | USB_FP | *+-----------------+------------------+------------------+ */ - if (fw_config_probe(FW_CONFIG(IO_PORT, USB3C))) + if (fw_config_probe(FW_CONFIG(AP_OEM_2BIT_FIELD0, IO_BOARD_USB3C))) GPIO_PADBASED_OVERRIDE(padbased_table, use_usb3c_enable_pads); else GPIO_PADBASED_OVERRIDE(padbased_table, use_usb2a2c_hdmi_enable_pads); - - if (fw_config_probe(FW_CONFIG(TOUCH_SCREEN, ABSENCE))) - GPIO_PADBASED_OVERRIDE(padbased_table, touchscreen_disable_pads); } diff --git a/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb b/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb index 8f02787cb2..17d461248c 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb +++ b/src/mainboard/google/fatcat/variants/moonstone/overridetree.cb @@ -1,24 +1,45 @@ fw_config - field WIFI 2 2 - option WIFI_CNVI_7 0 + field AUDIO_CODEC 0 2 + option AUDIO_CODEC_UNKNOWN 0 + option AUDIO_CODEC_ALC721 1 end - field AUDIO 3 5 - option AUDIO_UNKNOWN 0 - option AUDIO_ALC721_SNDW 1 - option AUDIO_ALC1320_ALC721_SNDW 2 + field AUDIO_AMPLIFIER 3 5 + option AUDIO_AMPLIFIER_UNKNOWN 0 + option AUDIO_AMPLIFIER_ALC1320 1 end - field FPMCU 6 7 - option FP_ABSENT 0 - option FP_SPI 1 - option FP_USB 2 + field STORAGE_TYPE 12 14 + option STORAGE_TYPE_UNKNOWN 0 + option STORAGE_TYPE_NVME_GEN4 1 end - field IO_PORT 12 12 - option USB2A2C_HDMI 0 - option USB3C 1 + field SENSOR_HUB_PRESENT 23 23 + option ISH_ABSENT 0 + option ISH_PRESENT 1 end - field TOUCH_SCREEN 13 13 - option ABSENCE 0 - option PRESENCE 1 + field FINGERPRINT_INTERFACE 24 25 + option FINGERPRINT_INTERFACE_UNKNOWN 0 + option FINGERPRINT_INTERFACE_SPI 1 + option FINGERPRINT_INTERFACE_USB 2 + end + field WIFI_INTERFACE 26 27 + option WIFI_INTERFACE_UNKNOWN 0 + option WIFI_INTERFACE_CNVI 1 + end + field FORM_FACTOR 30 31 + option FORM_FACTOR_UNKNOWN 0 + option FORM_FACTOR_CLAMSHELL 1 + option FORM_FACTOR_CONVERTIBLE 2 + end + field KB_BACKLIGHT_PRESENT 43 43 + option KB_BACKLIGHT_ABSENT 0 + option KB_BACKLIGHT_PRESENT 1 + end + field KEYBOARD_LAYOUT 45 47 + option KEYBOARD_LAYOUT_DEFAULT 0 + option KEYBOARD_LAYOUT_CA_FR 1 + end + field AP_OEM_2BIT_FIELD0 59 60 + option IO_BOARD_USB2A2C_HDMI 0 + option IO_BOARD_USB3C 1 end end @@ -222,9 +243,11 @@ chip soc/intel/pantherlake device ref iaa off end device ref tbt_pcie_rp2 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI + end + device ref tbt_pcie_rp3 on + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB3C end - device ref tbt_pcie_rp3 on end device ref tcss_xhci on chip drivers/usb/acpi device ref tcss_root_hub on @@ -239,7 +262,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" register "group" = "ACPI_PLD_GROUP(3, 2)" device ref tcss_usb3_port1 on - probe IO_PORT USB3C + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB3C end end chip drivers/usb/acpi @@ -247,7 +270,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" register "group" = "ACPI_PLD_GROUP(2, 2)" device ref tcss_usb3_port2 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI end end chip drivers/usb/acpi @@ -255,7 +278,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" register "group" = "ACPI_PLD_GROUP(2, 2)" device ref tcss_usb3_port3 on - probe IO_PORT USB3C + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB3C end end end @@ -267,14 +290,14 @@ chip soc/intel/pantherlake register "dfp[0].power_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_B21)" use tcss_usb3_port2 as dfp[0].typec_port device generic 0 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI end end chip drivers/intel/usb4/retimer register "dfp[0].power_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_B21)" use tcss_usb3_port3 as dfp[0].typec_port device generic 0 on - probe IO_PORT USB3C + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB3C end end end @@ -306,7 +329,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_C_USB2_SS_SWITCH" register "group" = "ACPI_PLD_GROUP(3, 1)" device ref usb2_port5 on - probe IO_PORT USB3C + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB3C end end chip drivers/usb/acpi @@ -321,7 +344,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_A" register "group" = "ACPI_PLD_GROUP(3, 1)" device ref usb2_port5 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI end end chip drivers/usb/acpi @@ -329,7 +352,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_A" register "group" = "ACPI_PLD_GROUP(4, 1)" device ref usb2_port6 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI end end chip drivers/usb/acpi @@ -338,7 +361,7 @@ chip soc/intel/pantherlake register "has_power_resource" = "true" register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E19)" device ref usb2_port6 on - probe FPMCU FP_USB + probe FINGERPRINT_INTERFACE FINGERPRINT_INTERFACE_USB end end chip drivers/usb/acpi @@ -346,7 +369,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_USB3_A" register "group" = "ACPI_PLD_GROUP(3, 2)" device ref usb3_port1 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI end end chip drivers/usb/acpi @@ -354,7 +377,7 @@ chip soc/intel/pantherlake register "type" = "UPC_TYPE_USB3_A" register "group" = "ACPI_PLD_GROUP(4, 2)" device ref usb3_port2 on - probe IO_PORT USB2A2C_HDMI + probe AP_OEM_2BIT_FIELD0 IO_BOARD_USB2A2C_HDMI end end end @@ -432,7 +455,6 @@ chip soc/intel/pantherlake end end # I2C4 device ref i2c5 on - probe TOUCH_SCREEN PRESENCE chip drivers/i2c/hid register "generic.hid" = ""ELAN9004"" register "generic.desc" = ""ELAN Touchscreen"" @@ -467,7 +489,7 @@ chip soc/intel/pantherlake end end # I2C5 device ref gspi0 on - probe FPMCU FP_SPI + probe FINGERPRINT_INTERFACE FINGERPRINT_INTERFACE_SPI chip drivers/spi/acpi register "name" = ""CRFP"" register "hid" = "ACPI_DT_NAMESPACE_HID" @@ -481,15 +503,15 @@ chip soc/intel/pantherlake register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_E19)" register "enable_delay_ms" = "3" device spi 0 on - probe FPMCU FP_SPI + probe FINGERPRINT_INTERFACE FINGERPRINT_INTERFACE_SPI end end end device ref smbus on end device ref hda on - probe AUDIO AUDIO_ALC721_SNDW - probe AUDIO AUDIO_ALC1320_ALC721_SNDW + probe AUDIO_CODEC AUDIO_CODEC_ALC721 + probe AUDIO_AMPLIFIER AUDIO_AMPLIFIER_ALC1320 chip drivers/intel/soundwire device generic 0 on chip drivers/soundwire/alc711 @@ -500,8 +522,8 @@ chip soc/intel/pantherlake register "disable_clkstop_sm_support" = "true" # SoundWire Link 3 ID 1 device generic 3.1 on - probe AUDIO AUDIO_ALC721_SNDW - probe AUDIO AUDIO_ALC1320_ALC721_SNDW + probe AUDIO_CODEC AUDIO_CODEC_ALC721 + probe AUDIO_AMPLIFIER AUDIO_AMPLIFIER_ALC1320 end end chip drivers/soundwire/alc1320 @@ -511,7 +533,7 @@ chip soc/intel/pantherlake register "alc1320_address.part_id" = "MIPI_DEV_ID_REALTEK_ALC1320" # SoundWire Link 3 ID 2 device generic 3.2 on - probe AUDIO AUDIO_ALC1320_ALC721_SNDW + probe AUDIO_AMPLIFIER AUDIO_AMPLIFIER_ALC1320 end # ALC1320 Smart Amp end end diff --git a/src/mainboard/google/fatcat/variants/moonstone/variant.c b/src/mainboard/google/fatcat/variants/moonstone/variant.c index bf159c7e76..17ce4d2c2f 100644 --- a/src/mainboard/google/fatcat/variants/moonstone/variant.c +++ b/src/mainboard/google/fatcat/variants/moonstone/variant.c @@ -8,7 +8,7 @@ const char *get_wifi_sar_cbfs_filename(void) { - return get_wifi_sar_fw_config_filename(FW_CONFIG_FIELD(WIFI)); + return get_wifi_sar_fw_config_filename(FW_CONFIG_FIELD(WIFI_INTERFACE)); } void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) @@ -20,7 +20,7 @@ void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) *| FPMCU | GSPI0 | usb2_port6 | *+-------+--------+-------------+ */ - if (fw_config_probe(FW_CONFIG(FPMCU, FP_USB))) { + if (fw_config_probe(FW_CONFIG(FINGERPRINT_INTERFACE, FINGERPRINT_INTERFACE_USB))) { printk(BIOS_INFO, "Disable GSPI\n"); config->serial_io_gspi_mode[PchSerialIoIndexGSPI0] = PchSerialIoDisabled; printk(BIOS_INFO, "usb2_port6 to FP\n"); @@ -29,10 +29,10 @@ void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) /* Probe fw_config : "IO_PORT" to reconfigure port settings accordingly. * proto0 : IO_PORT => "USB2A2C_HDMI:0" * porot1.5: IO_PORT => "USB3C:1" - * +-----------------+------------------+------------------+ + *+-----------------+------------------+------------------+ *| IO_PORT | USB2A2C_HDMI | USB3C | *+-----------------+------------------+------------------+ - *| tcss_usb3_port0 | USB4_C0 (MB-TBT) | USB4_C0 (MB-TBT) | + *| tcss_usb3_port0 | USB4_C0 (MB-TBT) | USB4_C0 (MB) | *+-----------------+------------------+------------------+ *| tcss_usb3_port1 | N/A | USB3.2 C2 (DB) | *+-----------------+------------------+------------------+ @@ -50,7 +50,7 @@ void variant_update_soc_chip_config(struct soc_intel_pantherlake_config *config) *+-----------------+------------------+------------------+ */ - if (fw_config_probe(FW_CONFIG(IO_PORT, USB3C))) { + if (fw_config_probe(FW_CONFIG(AP_OEM_2BIT_FIELD0, IO_BOARD_USB3C))) { printk(BIOS_INFO, "Disable Type-A Port A0/A1\n"); config->usb3_ports[0] = (struct usb3_port_config) USB3_PORT_EMPTY; config->usb3_ports[1] = (struct usb3_port_config) USB3_PORT_EMPTY;