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 <ren.kuo@quanta.corp-partner.google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90258
Reviewed-by: Bob Moragues <moragues@google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Ren Kuo 2025-11-26 13:31:46 +08:00 committed by Matt DeVillier
commit 796d3b37aa
4 changed files with 70 additions and 61 deletions

View file

@ -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

View file

@ -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);
}

View file

@ -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

View file

@ -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;