Martin Roth has uploaded this change for review.

View Change

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

To view, visit change 47309. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: Ia5200e3bcfe3a2beac9b3b6d7803aeac9dfc59e6
Gerrit-Change-Number: 47309
Gerrit-PatchSet: 1
Gerrit-Owner: Martin Roth <martinroth@google.com>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-MessageType: newchange