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>
This commit is contained in:
Reka Norman 2022-07-15 13:34:35 +10:00 committed by Felix Held
parent 202f60b960
commit 1411ecf6f0
3 changed files with 46 additions and 0 deletions

View File

@ -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

View File

@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
bootblock-y += gpio.c
bootblock-y += variant.c
romstage-y += gpio.c

View File

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