mb/google/zork: Add helpers for v3 schematics and wifi power enable
This change adds following two helper functions: 1. variant_uses_v3_schematics() - Check whether the variant is using v3 version of schematics. 2. variant_has_active_low_wifi_power() - Check whether the variant is using active low power enable for WiFi. In addition to this, Kconfig options are reorganized to add two new configs - VARIANT_SUPPORTS_PRE_V3_SCHEMATICS and VARIANT_SUPPORTS_WIFI_POWER_ACTIVE_HIGH. This allows the helper functions to return `true` early without checking for board version. Eventually, when a variant decides to drop support for pre-v3 schematics, it can be dropped from selecting VARIANT_SUPPORTS_PRE_V3_SCHEMATICS. Similarly, when the variant decides to drop support for active high power enable for WiFi, it can be dropped from selecting VARIANT_SUPPORTS_WIFI_POWER_ACTIVE_HIGH. Change-Id: I62851299e8dd7929a8e1e9a287389abd71c7706c Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/43224 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
ca36acf773
commit
30ee0d881b
|
@ -149,8 +149,24 @@ config VARIANT_BOARD_VER_FW_CONFIG_VALID
|
||||||
help
|
help
|
||||||
Which board version did FW_CONFIG become valid in CBI.
|
Which board version did FW_CONFIG become valid in CBI.
|
||||||
|
|
||||||
|
config VARIANT_SUPPORTS_PRE_V3_SCHEMATICS
|
||||||
|
bool
|
||||||
|
default y if BOARD_GOOGLE_TREMBYLE
|
||||||
|
default y if BOARD_GOOGLE_EZKINIL
|
||||||
|
default y if BOARD_GOOGLE_MORPHIUS
|
||||||
|
default y if BOARD_GOOGLE_BERKNIP
|
||||||
|
default y if BOARD_GOOGLE_DALBOZ
|
||||||
|
default y if BOARD_GOOGLE_VILBOZ
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Whether this variant supports pre-v3 version of schematics.
|
||||||
|
Eventually, when a variant moves to a point where it no
|
||||||
|
longer has to support pre-v3 schematics, `default y` entry
|
||||||
|
for it can be dropped.
|
||||||
|
|
||||||
config VARIANT_MIN_BOARD_ID_V3_SCHEMATICS
|
config VARIANT_MIN_BOARD_ID_V3_SCHEMATICS
|
||||||
int
|
int
|
||||||
|
depends on VARIANT_SUPPORTS_PRE_V3_SCHEMATICS
|
||||||
default 4 if BOARD_GOOGLE_TREMBYLE
|
default 4 if BOARD_GOOGLE_TREMBYLE
|
||||||
default 3 if BOARD_GOOGLE_EZKINIL
|
default 3 if BOARD_GOOGLE_EZKINIL
|
||||||
default 3 if BOARD_GOOGLE_MORPHIUS
|
default 3 if BOARD_GOOGLE_MORPHIUS
|
||||||
|
@ -158,12 +174,35 @@ config VARIANT_MIN_BOARD_ID_V3_SCHEMATICS
|
||||||
default 3 if BOARD_GOOGLE_DALBOZ
|
default 3 if BOARD_GOOGLE_DALBOZ
|
||||||
default 1 if BOARD_GOOGLE_VILBOZ
|
default 1 if BOARD_GOOGLE_VILBOZ
|
||||||
default 256
|
default 256
|
||||||
|
help
|
||||||
|
Minimum board version where the variant starts supporting
|
||||||
|
v3 version of reference schematics.
|
||||||
|
|
||||||
|
config VARIANT_SUPPORTS_WIFI_POWER_ACTIVE_HIGH
|
||||||
|
bool
|
||||||
|
default y if VARIANT_SUPPORTS_PRE_V3_SCHEMATICS
|
||||||
|
default y if BOARD_GOOGLE_BERKNIP
|
||||||
|
default y if BOARD_GOOGLE_VILBOZ
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Whether this variant supports active high power enable for
|
||||||
|
WiFi. For pre-v3 schematics, this is always true. There are
|
||||||
|
some variants which used v3 schematics, but did not pick up
|
||||||
|
the change for active low WiFi power enable. Those variants
|
||||||
|
will have to set this config to true. Eventually, when a
|
||||||
|
variant needs to only support v3 schematics with active low
|
||||||
|
power enable for WiFi, `default y` entry for it can be
|
||||||
|
dropped.
|
||||||
|
|
||||||
config VARIANT_MIN_BOARD_ID_WIFI_POWER_ACTIVE_LOW
|
config VARIANT_MIN_BOARD_ID_WIFI_POWER_ACTIVE_LOW
|
||||||
int
|
int
|
||||||
|
depends on VARIANT_SUPPORTS_WIFI_POWER_ACTIVE_HIGH
|
||||||
default 3 if BOARD_GOOGLE_BERKNIP
|
default 3 if BOARD_GOOGLE_BERKNIP
|
||||||
default 2 if BOARD_GOOGLE_VILBOZ
|
default 2 if BOARD_GOOGLE_VILBOZ
|
||||||
default VARIANT_MIN_BOARD_ID_V3_SCHEMATICS
|
default VARIANT_MIN_BOARD_ID_V3_SCHEMATICS
|
||||||
|
help
|
||||||
|
Minimum board version where the variant starts supporting
|
||||||
|
active low power enable for WiFi.
|
||||||
|
|
||||||
config VBOOT_STARTS_BEFORE_BOOTBLOCK
|
config VBOOT_STARTS_BEFORE_BOOTBLOCK
|
||||||
bool "PSP verstage"
|
bool "PSP verstage"
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
bootblock-y += gpio_baseboard_common.c
|
bootblock-y += gpio_baseboard_common.c
|
||||||
|
bootblock-y += helpers.c
|
||||||
bootblock-$(CONFIG_BOARD_GOOGLE_BASEBOARD_TREMBYLE) += gpio_baseboard_trembyle.c
|
bootblock-$(CONFIG_BOARD_GOOGLE_BASEBOARD_TREMBYLE) += gpio_baseboard_trembyle.c
|
||||||
bootblock-$(CONFIG_BOARD_GOOGLE_BASEBOARD_DALBOZ) += gpio_baseboard_dalboz.c
|
bootblock-$(CONFIG_BOARD_GOOGLE_BASEBOARD_DALBOZ) += gpio_baseboard_dalboz.c
|
||||||
|
|
||||||
verstage-y += gpio_baseboard_common.c
|
verstage-y += gpio_baseboard_common.c
|
||||||
|
verstage-y += helpers.c
|
||||||
ifeq ($(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK),y)
|
ifeq ($(CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK),y)
|
||||||
verstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_TREMBYLE) += gpio_baseboard_trembyle.c
|
verstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_TREMBYLE) += gpio_baseboard_trembyle.c
|
||||||
verstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_DALBOZ) += gpio_baseboard_dalboz.c
|
verstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_DALBOZ) += gpio_baseboard_dalboz.c
|
||||||
|
@ -12,6 +14,7 @@ endif
|
||||||
verstage-y += tpm_tis.c
|
verstage-y += tpm_tis.c
|
||||||
|
|
||||||
romstage-y += gpio_baseboard_common.c
|
romstage-y += gpio_baseboard_common.c
|
||||||
|
romstage-y += helpers.c
|
||||||
romstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_TREMBYLE) += gpio_baseboard_trembyle.c
|
romstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_TREMBYLE) += gpio_baseboard_trembyle.c
|
||||||
romstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_DALBOZ) += gpio_baseboard_dalboz.c
|
romstage-$(CONFIG_BOARD_GOOGLE_BASEBOARD_DALBOZ) += gpio_baseboard_dalboz.c
|
||||||
romstage-y += tpm_tis.c
|
romstage-y += tpm_tis.c
|
||||||
|
|
|
@ -181,10 +181,7 @@ static const struct soc_amd_gpio gpio_set_stage_ram[] = {
|
||||||
const __weak
|
const __weak
|
||||||
struct soc_amd_gpio *variant_romstage_gpio_table(size_t *size)
|
struct soc_amd_gpio *variant_romstage_gpio_table(size_t *size)
|
||||||
{
|
{
|
||||||
uint32_t board_version;
|
if (variant_uses_v3_schematics()) {
|
||||||
|
|
||||||
if (!google_chromeec_cbi_get_board_version(&board_version) &&
|
|
||||||
(board_version >= CONFIG_VARIANT_MIN_BOARD_ID_V3_SCHEMATICS)) {
|
|
||||||
*size = ARRAY_SIZE(gpio_set_stage_rom_v3);
|
*size = ARRAY_SIZE(gpio_set_stage_rom_v3);
|
||||||
return gpio_set_stage_rom_v3;
|
return gpio_set_stage_rom_v3;
|
||||||
}
|
}
|
||||||
|
@ -260,9 +257,9 @@ static void wifi_power_reset_configure_active_high_power(void)
|
||||||
gpio_set(GPIO_29, 0);
|
gpio_set(GPIO_29, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifi_power_reset_configure_v3(uint32_t board_version)
|
static void wifi_power_reset_configure_v3(void)
|
||||||
{
|
{
|
||||||
if (board_version >= CONFIG_VARIANT_MIN_BOARD_ID_WIFI_POWER_ACTIVE_LOW)
|
if (variant_has_active_low_wifi_power())
|
||||||
wifi_power_reset_configure_active_low_power();
|
wifi_power_reset_configure_active_low_power();
|
||||||
else
|
else
|
||||||
wifi_power_reset_configure_active_high_power();
|
wifi_power_reset_configure_active_high_power();
|
||||||
|
@ -296,14 +293,11 @@ static void wifi_power_reset_configure_pre_v3(void)
|
||||||
|
|
||||||
__weak void variant_pcie_power_reset_configure(void)
|
__weak void variant_pcie_power_reset_configure(void)
|
||||||
{
|
{
|
||||||
uint32_t board_version;
|
|
||||||
|
|
||||||
/* Deassert PCIE_RST1_L */
|
/* Deassert PCIE_RST1_L */
|
||||||
gpio_set(GPIO_27, 1);
|
gpio_set(GPIO_27, 1);
|
||||||
|
|
||||||
if (!google_chromeec_cbi_get_board_version(&board_version) &&
|
if (variant_uses_v3_schematics())
|
||||||
(board_version >= CONFIG_VARIANT_MIN_BOARD_ID_V3_SCHEMATICS))
|
wifi_power_reset_configure_v3();
|
||||||
wifi_power_reset_configure_v3(board_version);
|
|
||||||
else
|
else
|
||||||
wifi_power_reset_configure_pre_v3();
|
wifi_power_reset_configure_pre_v3();
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,10 +171,7 @@ static const struct soc_amd_gpio gpio_set_stage_ram[] = {
|
||||||
const __weak
|
const __weak
|
||||||
struct soc_amd_gpio *variant_romstage_gpio_table(size_t *size)
|
struct soc_amd_gpio *variant_romstage_gpio_table(size_t *size)
|
||||||
{
|
{
|
||||||
uint32_t board_version;
|
if (variant_uses_v3_schematics()) {
|
||||||
|
|
||||||
if (!google_chromeec_cbi_get_board_version(&board_version) &&
|
|
||||||
(board_version >= CONFIG_VARIANT_MIN_BOARD_ID_V3_SCHEMATICS)) {
|
|
||||||
*size = ARRAY_SIZE(gpio_set_stage_rom_v3);
|
*size = ARRAY_SIZE(gpio_set_stage_rom_v3);
|
||||||
return gpio_set_stage_rom_v3;
|
return gpio_set_stage_rom_v3;
|
||||||
}
|
}
|
||||||
|
@ -250,9 +247,9 @@ static void wifi_power_reset_configure_active_high_power(void)
|
||||||
gpio_set(GPIO_86, 1);
|
gpio_set(GPIO_86, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void wifi_power_reset_configure_v3(uint32_t board_version)
|
static void wifi_power_reset_configure_v3(void)
|
||||||
{
|
{
|
||||||
if (board_version >= CONFIG_VARIANT_MIN_BOARD_ID_WIFI_POWER_ACTIVE_LOW)
|
if (variant_has_active_low_wifi_power())
|
||||||
wifi_power_reset_configure_active_low_power();
|
wifi_power_reset_configure_active_low_power();
|
||||||
else
|
else
|
||||||
wifi_power_reset_configure_active_high_power();
|
wifi_power_reset_configure_active_high_power();
|
||||||
|
@ -286,11 +283,8 @@ static void wifi_power_reset_configure_pre_v3(void)
|
||||||
|
|
||||||
__weak void variant_pcie_power_reset_configure(void)
|
__weak void variant_pcie_power_reset_configure(void)
|
||||||
{
|
{
|
||||||
uint32_t board_version;
|
if (variant_uses_v3_schematics())
|
||||||
|
wifi_power_reset_configure_v3();
|
||||||
if (!google_chromeec_cbi_get_board_version(&board_version) &&
|
|
||||||
(board_version >= CONFIG_VARIANT_MIN_BOARD_ID_V3_SCHEMATICS))
|
|
||||||
wifi_power_reset_configure_v3(board_version);
|
|
||||||
else
|
else
|
||||||
wifi_power_reset_configure_pre_v3();
|
wifi_power_reset_configure_pre_v3();
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,3 +113,35 @@ int variant_has_nvme(void)
|
||||||
{
|
{
|
||||||
return !!extract_field(FW_CONFIG_MASK_NVME, FW_CONFIG_SHIFT_NVME);
|
return !!extract_field(FW_CONFIG_MASK_NVME, FW_CONFIG_SHIFT_NVME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool variant_uses_v3_schematics(void)
|
||||||
|
{
|
||||||
|
uint32_t board_version;
|
||||||
|
|
||||||
|
if (!CONFIG(VARIANT_SUPPORTS_PRE_V3_SCHEMATICS))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (google_chromeec_cbi_get_board_version(&board_version))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ((int)board_version < CONFIG_VARIANT_MIN_BOARD_ID_V3_SCHEMATICS)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool variant_has_active_low_wifi_power(void)
|
||||||
|
{
|
||||||
|
uint32_t board_version;
|
||||||
|
|
||||||
|
if (!CONFIG(VARIANT_SUPPORTS_WIFI_POWER_ACTIVE_HIGH))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (google_chromeec_cbi_get_board_version(&board_version))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ((int)board_version < CONFIG_VARIANT_MIN_BOARD_ID_WIFI_POWER_ACTIVE_LOW)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -63,4 +63,9 @@ int variant_has_nvme(void);
|
||||||
/* Determine if booting in factory by using CROS_SKU_UNPROVISIONED. */
|
/* Determine if booting in factory by using CROS_SKU_UNPROVISIONED. */
|
||||||
int boot_is_factory_unprovisioned(void);
|
int boot_is_factory_unprovisioned(void);
|
||||||
|
|
||||||
|
/* Return true if variant uses v3 version of reference schematics. */
|
||||||
|
bool variant_uses_v3_schematics(void);
|
||||||
|
/* Return true if variant has active low power enable fow WiFi. */
|
||||||
|
bool variant_has_active_low_wifi_power(void);
|
||||||
|
|
||||||
#endif /* __BASEBOARD_VARIANTS_H__ */
|
#endif /* __BASEBOARD_VARIANTS_H__ */
|
||||||
|
|
|
@ -8,11 +8,9 @@
|
||||||
void variant_audio_update(void)
|
void variant_audio_update(void)
|
||||||
{
|
{
|
||||||
struct soc_amd_picasso_config *cfg = config_of_soc();
|
struct soc_amd_picasso_config *cfg = config_of_soc();
|
||||||
uint32_t board_version;
|
|
||||||
struct acpi_gpio *gpio = &cfg->dmic_select_gpio;
|
struct acpi_gpio *gpio = &cfg->dmic_select_gpio;
|
||||||
|
|
||||||
if (!google_chromeec_cbi_get_board_version(&board_version) &&
|
if (!variant_uses_v3_schematics())
|
||||||
(board_version >= CONFIG_VARIANT_MIN_BOARD_ID_V3_SCHEMATICS))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (CONFIG(BOARD_GOOGLE_BASEBOARD_TREMBYLE))
|
if (CONFIG(BOARD_GOOGLE_BASEBOARD_TREMBYLE))
|
||||||
|
|
Loading…
Reference in New Issue