diff options
author | Meera Ravindranath <meera.ravindranath@intel.com> | 2022-09-22 14:33:36 +0530 |
---|---|---|
committer | Nick Vaccaro <nvaccaro@google.com> | 2022-10-04 18:31:09 +0000 |
commit | 598c0dda158bd2062442cbf0b42214d5ed95006f (patch) | |
tree | c56c67e95e8d4238750efd75907ecd03b7dc437a /src/soc/intel/common/block | |
parent | d49c3f278eb77faff098dceb5e7767b53950cd5d (diff) |
soc/intel/alderlake: Fix UFS OCP fabric timeout
The delayed return of certain fetch instruction from memory to
the UFS causes the OCP fabric to timeout on the transaction
and become non-responsive.
As recommended by the SoC and IP teams,program the
OCP fabric register to avoid the timeout in the OCP fabric.
This patch adds the following changes
1. Program the OCP fabric registers in the PS0 routine.
2. Move the ssdt contents of UFS to dsdt asl code to avoid
duplication of UFS device creation
BUG=b:240222922
TEST=Build and boot Nirwen UFS board, observe no system hang
during Chrome PLT test.
Signed-off-by: Meera Ravindranath <meera.ravindranath@intel.com>
Change-Id: I949a4538ea5c5c378a4e8ff7bb88546db1412df2
Reviewed-on: https://review.coreboot.org/c/coreboot/+/67770
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nick Vaccaro <nvaccaro@google.com>
Diffstat (limited to 'src/soc/intel/common/block')
-rw-r--r-- | src/soc/intel/common/block/scs/Kconfig | 7 | ||||
-rw-r--r-- | src/soc/intel/common/block/scs/Makefile.inc | 1 | ||||
-rw-r--r-- | src/soc/intel/common/block/scs/ufs.c | 47 |
3 files changed, 0 insertions, 55 deletions
diff --git a/src/soc/intel/common/block/scs/Kconfig b/src/soc/intel/common/block/scs/Kconfig index 6b5f49ea67..192425c4a0 100644 --- a/src/soc/intel/common/block/scs/Kconfig +++ b/src/soc/intel/common/block/scs/Kconfig @@ -19,10 +19,3 @@ config SOC_INTEL_COMMON_MMC_OVERRIDE help Override the MMC settings after FSP-S. It should be used only when there is no FSP UPDs for certain setting. - -config SOC_INTEL_COMMON_UFS_SUPPORT - bool - default n - help - Enable UFS support. Should be enabled when a particular SoC supports - boot from UFS. diff --git a/src/soc/intel/common/block/scs/Makefile.inc b/src/soc/intel/common/block/scs/Makefile.inc index aa5f2b5d95..0b77f5fa21 100644 --- a/src/soc/intel/common/block/scs/Makefile.inc +++ b/src/soc/intel/common/block/scs/Makefile.inc @@ -2,5 +2,4 @@ ifneq ($(CONFIG_SOC_INTEL_ALDERLAKE_PCH_N),y) ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_SCS) += sd.c endif ramstage-$(CONFIG_SOC_INTEL_COMMON_BLOCK_SCS) += mmc.c -ramstage-$(CONFIG_SOC_INTEL_COMMON_UFS_SUPPORT) += ufs.c romstage-$(CONFIG_SOC_INTEL_COMMON_EARLY_MMC_WAKE) += early_mmc.c diff --git a/src/soc/intel/common/block/scs/ufs.c b/src/soc/intel/common/block/scs/ufs.c deleted file mode 100644 index e70c87bfff..0000000000 --- a/src/soc/intel/common/block/scs/ufs.c +++ /dev/null @@ -1,47 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -#include <acpi/acpi_device.h> -#include <acpi/acpigen.h> -#include <acpi/acpigen_pci.h> -#include <device/pci.h> -#include <device/pci_ids.h> - -#if CONFIG(HAVE_ACPI_TABLES) -static void ufs_fill_ssdt(const struct device *dev) -{ - struct acpi_dp *dsd; - - const char *scope = acpi_device_scope(dev); - - acpigen_write_scope(scope); - acpigen_write_device("UFS"); - acpigen_write_ADR_pci_device(dev); - acpigen_write_name_string("_DDN", "UFS Controller"); - - dsd = acpi_dp_new_table("_DSD"); - acpi_dp_add_integer(dsd, "ref-clk-freq", CONFIG_SOC_INTEL_UFS_CLK_FREQ_HZ); - acpi_dp_write(dsd); - acpigen_write_device_end(); - acpigen_pop_len(); -} -#endif - -static struct device_operations dev_ops = { - .read_resources = pci_dev_read_resources, - .set_resources = pci_dev_set_resources, - .enable_resources = pci_dev_enable_resources, -#if CONFIG(HAVE_ACPI_TABLES) - .acpi_fill_ssdt = ufs_fill_ssdt, -#endif - .ops_pci = &pci_dev_ops_pci, -}; - -static const unsigned short pci_device_ids[] = { - PCI_DID_INTEL_ADP_UFS, - 0 -}; - -static const struct pci_driver pch_ufs __pci_driver = { - .ops = &dev_ops, - .vendor = PCI_VID_INTEL, - .devices = pci_device_ids -}; |