diff options
author | Reka Norman <rekanorman@google.com> | 2022-07-15 13:34:35 +1000 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2022-07-26 12:42:24 +0000 |
commit | 1411ecf6f0b2c7395bcb96b856dcfdddb1b0c81b (patch) | |
tree | c45aa9976cf5da45101dc2c8e56511da89656a0f /src/mainboard/google/brya/variants | |
parent | 202f60b960dba924d5267f171bf4616c5dd89118 (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/mainboard/google/brya/variants')
-rw-r--r-- | src/mainboard/google/brya/variants/joxer/Makefile.inc | 1 | ||||
-rw-r--r-- | src/mainboard/google/brya/variants/joxer/variant.c | 44 |
2 files changed, 45 insertions, 0 deletions
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)); + } +} |