soc/qualcomm/sc7280: Skip PCIe ops for eMMC SKUs

On Herobrine, we will determine if we have an NVMe device based on SKU
id.  Basically, if bit 0 is 2 (or Z), then we know that we have an
NVMe device and thus will need to go through PCIe initialization.
Otherwise, we know that we are booting an eMMC device.

BUG=b:254281839
BRANCH=None
TEST=build firmware image and boot and make sure we can boot up Tested
     on villager, which does not have NVMe and made sure that it boots
     still.  Check cbmem dump to make sure that device configuration
     entry is still low since it's not initializing PCIe devices:

     40:device configuration 730,203 (1,295)

Change-Id: I1fa0ad392ba6320fdbab54b3b5dc83ac28cd20ba
Signed-off-by: Shelley Chen <shchen@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/69690
Reviewed-by: Julius Werner <jwerner@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Shelley Chen
2022-11-16 17:02:32 -08:00
committed by Felix Held
parent b5af064f54
commit f6307ca9c2
2 changed files with 9 additions and 3 deletions

View File

@@ -416,6 +416,9 @@ static enum cb_err qcom_dw_pcie_enable(struct qcom_pcie_cntlr_t *pcie)
*/
enum cb_err fill_lb_pcie(struct lb_pcie *pcie)
{
if (!mainboard_needs_pcie_init())
return CB_ERR_NOT_IMPLEMENTED;
pcie_cntlr_cfg_t *pcierc = qcom_pcie_cfg.cntlr_cfg;
pcie->ctrl_base = (uintptr_t)pcierc->dbi_base;
return CB_SUCCESS;

View File

@@ -43,9 +43,12 @@ static struct device_operations soc_ops = {
static void enable_soc_dev(struct device *dev)
{
/* Set the operations if it is a special bus type */
if (dev->path.type == DEVICE_PATH_DOMAIN)
dev->ops = &pci_domain_ops;
else if (dev->path.type == DEVICE_PATH_CPU_CLUSTER)
if (dev->path.type == DEVICE_PATH_DOMAIN) {
if (mainboard_needs_pcie_init())
dev->ops = &pci_domain_ops;
else
printk(BIOS_DEBUG, "Skip setting PCIe ops\n");
} else if (dev->path.type == DEVICE_PATH_CPU_CLUSTER)
dev->ops = &soc_ops;
}