Martin Roth has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/47309 )
Change subject: mb/google/zork: Add func to determine fingerprint gpio init ......................................................................
mb/google/zork: Add func to determine fingerprint gpio init
Because fingerprint sensor isn't a CBI field, it needs to be determined by board and SKU. Berknip is the only board that some SKUs have a fingerprint sensor and others don't.
BUG=b:171837716 TEST=Verify that morphius fingerprint sensor works and Berknip SKU_0 does not show fingerprint as an option. BRANCH=Zork
Signed-off-by: Martin Roth martinroth@chromium.org Change-Id: Ia5200e3bcfe3a2beac9b3b6d7803aeac9dfc59e6 --- M src/mainboard/google/zork/variants/baseboard/helpers.c M src/mainboard/google/zork/variants/baseboard/include/baseboard/variants.h M src/mainboard/google/zork/variants/berknip/Makefile.inc M src/mainboard/google/zork/variants/berknip/variant.c M src/mainboard/google/zork/variants/morphius/Makefile.inc M src/mainboard/google/zork/variants/morphius/variant.c 6 files changed, 54 insertions(+), 12 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/09/47309/1
diff --git a/src/mainboard/google/zork/variants/baseboard/helpers.c b/src/mainboard/google/zork/variants/baseboard/helpers.c index 7071035..4ef222c 100644 --- a/src/mainboard/google/zork/variants/baseboard/helpers.c +++ b/src/mainboard/google/zork/variants/baseboard/helpers.c @@ -149,3 +149,11 @@ { return extract_field(FW_CONFIG_MASK_DB_INDEX, FW_CONFIG_DB_INDEX_SHIFT); } + +__weak int variant_init_fingerprint(void) +{ + /* Default to no fingerprint sensor */ + printk(BIOS_DEBUG, "Default gpio_init_fingerprint to disabled.\n"); + + return 0; +} diff --git a/src/mainboard/google/zork/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/zork/variants/baseboard/include/baseboard/variants.h index 5c040d3..61c8b3c 100644 --- a/src/mainboard/google/zork/variants/baseboard/include/baseboard/variants.h +++ b/src/mainboard/google/zork/variants/baseboard/include/baseboard/variants.h @@ -36,6 +36,9 @@ */ const struct soc_amd_gpio *variant_sleep_gpio_table(size_t *size, int slp_typ);
+/* Determine whether to init fingerprint sensor or not */ +int variant_init_fingerprint(void); + /* Modify devictree settings during ramstage. */ void variant_devtree_update(void); /* Update audio configuration in devicetree during ramstage. */ diff --git a/src/mainboard/google/zork/variants/berknip/Makefile.inc b/src/mainboard/google/zork/variants/berknip/Makefile.inc index 51d19fe..a478eb3 100644 --- a/src/mainboard/google/zork/variants/berknip/Makefile.inc +++ b/src/mainboard/google/zork/variants/berknip/Makefile.inc @@ -4,3 +4,6 @@
ramstage-y += gpio.c ramstage-y += variant.c + +bootblock-y += gpio.c +bootblock-y += variant.c diff --git a/src/mainboard/google/zork/variants/berknip/variant.c b/src/mainboard/google/zork/variants/berknip/variant.c index 092ff26..ec31cbc 100644 --- a/src/mainboard/google/zork/variants/berknip/variant.c +++ b/src/mainboard/google/zork/variants/berknip/variant.c @@ -1,16 +1,33 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */
#include <baseboard/variants.h> +#include <ec/google/chromeec/ec.h>
void variant_devtree_update(void) { struct soc_amd_picasso_config *cfg;
- cfg = config_of_soc(); + if (ENV_RAMSTAGE) { + cfg = (struct soc_amd_picasso_config *)config_of_soc();
- /* - * Enable eMMC if eMMC bit is set in FW_CONFIG or device is unprovisioned. - */ - if (!(variant_has_emmc() || boot_is_factory_unprovisioned())) - cfg->emmc_config.timing = SD_EMMC_DISABLE; + /* + * Enable eMMC if eMMC bit is set in FW_CONFIG or device is unprovisioned. + */ + if (!(variant_has_emmc() || boot_is_factory_unprovisioned())) + cfg->emmc_config.timing = SD_EMMC_DISABLE; + } +} + +#define BERKNIP_SKU0_ID 0x5A030020 + +/* Identify which SKUs have fingerprint */ +int variant_init_fingerprint(void) +{ + uint32_t sku; + if (google_chromeec_cbi_get_sku_id(&sku) == 0) { + if (sku == BERKNIP_SKU0_ID) + return 0; + } + + return 1; } diff --git a/src/mainboard/google/zork/variants/morphius/Makefile.inc b/src/mainboard/google/zork/variants/morphius/Makefile.inc index 51d19fe..a478eb3 100644 --- a/src/mainboard/google/zork/variants/morphius/Makefile.inc +++ b/src/mainboard/google/zork/variants/morphius/Makefile.inc @@ -4,3 +4,6 @@
ramstage-y += gpio.c ramstage-y += variant.c + +bootblock-y += gpio.c +bootblock-y += variant.c diff --git a/src/mainboard/google/zork/variants/morphius/variant.c b/src/mainboard/google/zork/variants/morphius/variant.c index 092ff26..ab2adba 100644 --- a/src/mainboard/google/zork/variants/morphius/variant.c +++ b/src/mainboard/google/zork/variants/morphius/variant.c @@ -6,11 +6,19 @@ { struct soc_amd_picasso_config *cfg;
- cfg = config_of_soc(); + if (ENV_RAMSTAGE) { + cfg = (struct soc_amd_picasso_config *)config_of_soc();
- /* - * Enable eMMC if eMMC bit is set in FW_CONFIG or device is unprovisioned. - */ - if (!(variant_has_emmc() || boot_is_factory_unprovisioned())) - cfg->emmc_config.timing = SD_EMMC_DISABLE; + /* + * Enable eMMC if eMMC bit is set in FW_CONFIG or device is unprovisioned. + */ + if (!(variant_has_emmc() || boot_is_factory_unprovisioned())) + cfg->emmc_config.timing = SD_EMMC_DISABLE; + } +} + +int variant_init_fingerprint(void) +{ + /* All Morphius SKUs have a fingerprint sensor */ + return 1; }