summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorReka Norman <rekanorman@google.com>2022-07-15 13:34:35 +1000
committerFelix Held <felix-coreboot@felixheld.de>2022-07-26 12:42:24 +0000
commit1411ecf6f0b2c7395bcb96b856dcfdddb1b0c81b (patch)
treec45aa9976cf5da45101dc2c8e56511da89656a0f /src
parent202f60b960dba924d5267f171bf4616c5dd89118 (diff)
mb/google/nissa/var/joxer: Configure descriptor for eMMC or UFS
Joxer will have both eMMC and UFS SKUs, which require different settings in the descriptor. So update the descriptor at run-time based on fw_config. By default, the descriptor is configured for UFS. This configuration still boots fine on eMMC SKUs, it just might cause problems with S0ix. This is a temporary workaround. It will be removed once we've implemented a proper solution for configuring the descriptor differently for different SKUs. BUG=b:238234376 TEST=Make an identical change for nivviks. On both nivviks (eMMC) and nirwen (UFS), check that it boots and that the logs show the descriptor being configured as expected. Change-Id: I14232eb773936f2ecd183687208d332136935601 Signed-off-by: Reka Norman <rekanorman@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/65870 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kangheui Won <khwon@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/brya/Kconfig.name1
-rw-r--r--src/mainboard/google/brya/variants/joxer/Makefile.inc1
-rw-r--r--src/mainboard/google/brya/variants/joxer/variant.c44
3 files changed, 46 insertions, 0 deletions
diff --git a/src/mainboard/google/brya/Kconfig.name b/src/mainboard/google/brya/Kconfig.name
index 6608193284..2c639bf2ff 100644
--- a/src/mainboard/google/brya/Kconfig.name
+++ b/src/mainboard/google/brya/Kconfig.name
@@ -254,6 +254,7 @@ config BOARD_GOOGLE_KULDAX
config BOARD_GOOGLE_JOXER
bool "-> Joxer"
+ select ALDERLAKE_CONFIGURE_DESCRIPTOR
select BOARD_GOOGLE_BASEBOARD_NISSA
select DRIVERS_GENESYSLOGIC_GL9750
diff --git a/src/mainboard/google/brya/variants/joxer/Makefile.inc b/src/mainboard/google/brya/variants/joxer/Makefile.inc
index d38141ca24..ee9b555ab7 100644
--- a/src/mainboard/google/brya/variants/joxer/Makefile.inc
+++ b/src/mainboard/google/brya/variants/joxer/Makefile.inc
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
bootblock-y += gpio.c
+bootblock-y += variant.c
romstage-y += gpio.c
diff --git a/src/mainboard/google/brya/variants/joxer/variant.c b/src/mainboard/google/brya/variants/joxer/variant.c
new file mode 100644
index 0000000000..702468280d
--- /dev/null
+++ b/src/mainboard/google/brya/variants/joxer/variant.c
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <baseboard/variants.h>
+#include <console/console.h>
+#include <fw_config.h>
+#include <soc/bootblock.h>
+
+/*
+ * TODO(b/229022567): This is a workaround which will be removed once we
+ * implement a proper solution for configuring the descriptor differently for
+ * different SKUs.
+ */
+void variant_update_descriptor(void)
+{
+ /*
+ * UfsCont1Config = "Disabled"
+ * IshSupported = "No"
+ */
+ struct descriptor_byte emmc_bytes[] = {
+ { 0x1f8, 0x55 },
+ { 0x1f9, 0x55 },
+ { 0xc18, 0x89 },
+ { 0xc1d, 0xb8 },
+ };
+
+ /*
+ * UfsCont1Config = "X2"
+ * IshSupported = "Yes"
+ */
+ struct descriptor_byte ufs_bytes[] = {
+ { 0x1f8, 0x95 },
+ { 0x1f9, 0x59 },
+ { 0xc18, 0x09 },
+ { 0xc1d, 0x28 },
+ };
+
+ if (fw_config_probe(FW_CONFIG(STORAGE, STORAGE_UFS))) {
+ printk(BIOS_INFO, "Configuring descriptor for UFS\n");
+ configure_descriptor(ufs_bytes, ARRAY_SIZE(ufs_bytes));
+ } else {
+ printk(BIOS_INFO, "Configuring descriptor for eMMC\n");
+ configure_descriptor(emmc_bytes, ARRAY_SIZE(emmc_bytes));
+ }
+}