From 1411ecf6f0b2c7395bcb96b856dcfdddb1b0c81b Mon Sep 17 00:00:00 2001 From: Reka Norman Date: Fri, 15 Jul 2022 13:34:35 +1000 Subject: [PATCH] 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 Reviewed-on: https://review.coreboot.org/c/coreboot/+/65870 Tested-by: build bot (Jenkins) Reviewed-by: Kangheui Won --- src/mainboard/google/brya/Kconfig.name | 1 + .../google/brya/variants/joxer/Makefile.inc | 1 + .../google/brya/variants/joxer/variant.c | 44 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 src/mainboard/google/brya/variants/joxer/variant.c 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 +#include +#include +#include + +/* + * 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)); + } +}