diff --git a/src/soc/intel/alderlake/chip.c b/src/soc/intel/alderlake/chip.c index 25b412eed8..7cdeb7cc9a 100644 --- a/src/soc/intel/alderlake/chip.c +++ b/src/soc/intel/alderlake/chip.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -244,6 +245,7 @@ static struct device_operations cpu_bus_ops = { static void soc_enable(struct device *dev) { + struct device_operations *soc_p2sb_ops = (struct device_operations *)&p2sb_ops; /* * Set the operations if it is a special bus type or a hidden PCI * device. @@ -255,6 +257,9 @@ static void soc_enable(struct device *dev) else if (dev->path.type == DEVICE_PATH_PCI && dev->path.pci.devfn == PCH_DEVFN_PMC) dev->ops = &pmc_ops; + else if (dev->path.type == DEVICE_PATH_PCI && + dev->path.pci.devfn == PCH_DEVFN_P2SB) + dev->ops = soc_p2sb_ops; else if (dev->path.type == DEVICE_PATH_GPIO) block_gpio_enable(dev); } diff --git a/src/soc/intel/alderlake/include/soc/p2sb.h b/src/soc/intel/alderlake/include/soc/p2sb.h index 27268511a5..367ace2004 100644 --- a/src/soc/intel/alderlake/include/soc/p2sb.h +++ b/src/soc/intel/alderlake/include/soc/p2sb.h @@ -14,4 +14,6 @@ #define PCH_P2SB_EPMASK0 0x220 +extern const struct device_operations p2sb_ops; + #endif