device: Use pcidev_path_on_root()

Change-Id: I2e28b9f4ecaf258bff8a062b5a54cb3d8e2bb9b0
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/30400
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
diff --git a/src/drivers/usb/pci_ehci.c b/src/drivers/usb/pci_ehci.c
index a61779c..e0f88ec 100644
--- a/src/drivers/usb/pci_ehci.c
+++ b/src/drivers/usb/pci_ehci.c
@@ -37,8 +37,7 @@
 #ifdef __SIMPLE_DEVICE__
 	pci_devfn_t dev = dbg_dev;
 #else
-	struct device *dev = dev_find_slot(PCI_DEV2SEGBUS(dbg_dev),
-					   PCI_DEV2DEVFN(dbg_dev));
+	struct device *dev = pcidev_path_on_root(PCI_DEV2DEVFN(dbg_dev));
 #endif
 
 	u32 class = pci_read_config32(dev, PCI_CLASS_REVISION) >> 8;
@@ -124,8 +123,7 @@
 #ifdef __SIMPLE_DEVICE__
 	u8 *base = (u8 *)(pci_read_config32(sdev, EHCI_BAR_INDEX) & ~0x0f);
 #else
-	struct device *dev = dev_find_slot(PCI_DEV2SEGBUS(sdev),
-					   PCI_DEV2DEVFN(sdev));
+	struct device *dev = pcidev_path_on_root(PCI_DEV2DEVFN(sdev));
 	u8 *base = (u8 *)(pci_read_config32(dev, EHCI_BAR_INDEX) & ~0x0f);
 #endif
 	return base + HC_LENGTH(read32(base));
diff --git a/src/mainboard/google/kahlee/OemCustomize.c b/src/mainboard/google/kahlee/OemCustomize.c
index ce70b8d..5c480bf 100644
--- a/src/mainboard/google/kahlee/OemCustomize.c
+++ b/src/mainboard/google/kahlee/OemCustomize.c
@@ -79,7 +79,7 @@
 void set_board_env_params(GNB_ENV_CONFIGURATION *params)
 {
 	const struct soc_amd_stoneyridge_config *cfg;
-	const struct device *dev = dev_find_slot(0, GNB_DEVFN);
+	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 	if (!dev || !dev->chip_info) {
 		printk(BIOS_WARNING, "Warning: Cannot find SoC devicetree config\n");
 		return;
diff --git a/src/mainboard/google/octopus/mainboard.c b/src/mainboard/google/octopus/mainboard.c
index 57a614e..5b011c8 100644
--- a/src/mainboard/google/octopus/mainboard.c
+++ b/src/mainboard/google/octopus/mainboard.c
@@ -36,7 +36,7 @@
 
 static bool is_cnvi_held_in_reset(void)
 {
-	struct device *dev = dev_find_slot(0, PCH_DEVFN_CNVI);
+	struct device *dev = pcidev_path_on_root(PCH_DEVFN_CNVI);
 	uint32_t reg = pci_read_config32(dev, PCI_VENDOR_ID);
 
 	/*
@@ -167,7 +167,7 @@
 	else
 		devfn = PCH_DEVFN_PCIE1;
 
-	dev = dev_find_slot(0, devfn);
+	dev = pcidev_path_on_root(devfn);
 	if (dev)
 		dev->enabled = 0;
 }
diff --git a/src/mainboard/google/octopus/variants/phaser/variant.c b/src/mainboard/google/octopus/variants/phaser/variant.c
index 724dd13..22f4f71 100644
--- a/src/mainboard/google/octopus/variants/phaser/variant.c
+++ b/src/mainboard/google/octopus/variants/phaser/variant.c
@@ -25,7 +25,7 @@
 	uint32_t sku_id = SKU_UNKNOWN;
 	struct device *touchscreen_i2c_host;
 
-	touchscreen_i2c_host = dev_find_slot(0, PCH_DEVFN_I2C7);
+	touchscreen_i2c_host = pcidev_path_on_root(PCH_DEVFN_I2C7);
 
 	if (touchscreen_i2c_host == NULL)
 		return;
diff --git a/src/mainboard/google/poppy/variants/atlas/gpio.c b/src/mainboard/google/poppy/variants/atlas/gpio.c
index 02c145c..4de65d4 100644
--- a/src/mainboard/google/poppy/variants/atlas/gpio.c
+++ b/src/mainboard/google/poppy/variants/atlas/gpio.c
@@ -419,7 +419,7 @@
 const struct pad_config *variant_sku_gpio_table(size_t *num)
 {
 	const struct pad_config *board_gpio_tables;
-	const struct device *dev = dev_find_slot(0, PCH_DEVFN_ISH);
+	const struct device *dev = pcidev_path_on_root(PCH_DEVFN_ISH);
 	if (dev && dev->enabled) {
 		*num = ARRAY_SIZE(ish_enabled_gpio_table);
 		board_gpio_tables = ish_enabled_gpio_table;
diff --git a/src/mainboard/purism/librem_skl/hda_verb.c b/src/mainboard/purism/librem_skl/hda_verb.c
index e8eecdf..c0de990 100644
--- a/src/mainboard/purism/librem_skl/hda_verb.c
+++ b/src/mainboard/purism/librem_skl/hda_verb.c
@@ -62,7 +62,7 @@
 		return;
 
 	/* Find base address */
-	dev = dev_find_slot(0, PCH_DEVFN_HDA);
+	dev = pcidev_path_on_root(PCH_DEVFN_HDA);
 	if (dev == NULL)
 		return;
 	res = find_resource(dev, PCI_BASE_ADDRESS_0);
diff --git a/src/northbridge/amd/amdfam10/amdfam10_util.c b/src/northbridge/amd/amdfam10/amdfam10_util.c
index 9d249e2..c9b3ad2 100644
--- a/src/northbridge/amd/amdfam10/amdfam10_util.c
+++ b/src/northbridge/amd/amdfam10/amdfam10_util.c
@@ -26,7 +26,7 @@
 #include <include/device/pci_def.h>
 u32 Get_NB32(u32 dev, u32 reg)
 {
-	return pci_read_config32(dev_find_slot(0, PCI_DEV2DEVFN(dev)), reg);
+	return pci_read_config32(pcidev_path_on_root(PCI_DEV2DEVFN(dev)), reg);
 }
 #endif
 
diff --git a/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c b/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c
index fcba7c1..7977575 100644
--- a/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c
+++ b/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c
@@ -59,7 +59,7 @@
 	DEVTREE_CONST config_t *config;
 	printk(BIOS_DEBUG, "Configure Default UPD Data\n");
 
-	dev = dev_find_slot(0, SOC_DEV_FUNC);
+	dev = pcidev_path_on_root(SOC_DEV_FUNC);
 	config = dev->chip_info;
 
 	/* Set SPD addresses */
diff --git a/src/northbridge/intel/gm45/raminit.c b/src/northbridge/intel/gm45/raminit.c
index 2d7965f..4996c86 100644
--- a/src/northbridge/intel/gm45/raminit.c
+++ b/src/northbridge/intel/gm45/raminit.c
@@ -1165,7 +1165,7 @@
 	const struct device *dev;
 	const struct northbridge_intel_gm45_config *cfg = NULL;
 
-	dev = dev_find_slot(0, HOST_BRIDGE);
+	dev = pcidev_path_on_root(HOST_BRIDGE);
 	if (dev)
 		cfg = dev->chip_info;
 
diff --git a/src/northbridge/intel/haswell/northbridge.c b/src/northbridge/intel/haswell/northbridge.c
index 8ae5a4a..106d9a1 100644
--- a/src/northbridge/intel/haswell/northbridge.c
+++ b/src/northbridge/intel/haswell/northbridge.c
@@ -459,7 +459,7 @@
 	deven = pci_read_config32(host_dev, DEVEN);
 
 	for (i = 0; i < ARRAY_SIZE(nb_devs); i++) {
-		struct device *dev = dev_find_slot(0, nb_devs[i].devfn);
+		struct device *dev = pcidev_path_on_root(nb_devs[i].devfn);
 		if (!dev || !dev->enabled) {
 			printk(BIOS_DEBUG, "Disabling %s.\n", nb_devs[i].name);
 			deven &= ~nb_devs[i].mask;
diff --git a/src/northbridge/intel/nehalem/raminit.c b/src/northbridge/intel/nehalem/raminit.c
index 54ef278..5a1b26e 100644
--- a/src/northbridge/intel/nehalem/raminit.c
+++ b/src/northbridge/intel/nehalem/raminit.c
@@ -1366,7 +1366,7 @@
 	const struct device *dev;
 	const struct northbridge_intel_nehalem_config *cfg = NULL;
 
-	dev = dev_find_slot(0, HOST_BRIDGE);
+	dev = pcidev_path_on_root(HOST_BRIDGE);
 	if (dev)
 		cfg = dev->chip_info;
 
diff --git a/src/northbridge/intel/sandybridge/raminit_common.c b/src/northbridge/intel/sandybridge/raminit_common.c
index 4ce059a..4897581 100644
--- a/src/northbridge/intel/sandybridge/raminit_common.c
+++ b/src/northbridge/intel/sandybridge/raminit_common.c
@@ -383,7 +383,7 @@
 	const struct device *dev;
 	const struct northbridge_intel_sandybridge_config *cfg = NULL;
 
-	dev = dev_find_slot(0, HOST_BRIDGE);
+	dev = pcidev_path_on_root(HOST_BRIDGE);
 	if (dev)
 		cfg = dev->chip_info;
 
@@ -449,7 +449,7 @@
 	const struct device *dev;
 	const struct northbridge_intel_sandybridge_config *cfg = NULL;
 
-	dev = dev_find_slot(0, HOST_BRIDGE);
+	dev = pcidev_path_on_root(HOST_BRIDGE);
 	if (dev)
 		cfg = dev->chip_info;
 
diff --git a/src/soc/amd/common/block/pi/agesawrapper.c b/src/soc/amd/common/block/pi/agesawrapper.c
index 9c10fec..d376e6d 100644
--- a/src/soc/amd/common/block/pi/agesawrapper.c
+++ b/src/soc/amd/common/block/pi/agesawrapper.c
@@ -324,7 +324,7 @@
 	 */
 	AMD_LATE_PARAMS *LateParams = create_struct(&AmdParamStruct);
 
-	const struct device *dev = dev_find_slot(0, IOMMU_DEVFN);
+	const struct device *dev = pcidev_path_on_root(IOMMU_DEVFN);
 	if (dev && dev->enabled) {
 		LateParams->GnbLateConfiguration.GnbIoapicId = CONFIG_MAX_CPUS
 									+ 1;
diff --git a/src/soc/amd/stoneyridge/BiosCallOuts.c b/src/soc/amd/stoneyridge/BiosCallOuts.c
index fdef166..018975f 100644
--- a/src/soc/amd/stoneyridge/BiosCallOuts.c
+++ b/src/soc/amd/stoneyridge/BiosCallOuts.c
@@ -52,7 +52,7 @@
 							void *ConfigPtr)
 {
 	AMD_CONFIG_PARAMS *StdHeader = ConfigPtr;
-	const struct device *dev = dev_find_slot(0, SATA_DEVFN);
+	const struct device *dev = pcidev_path_on_root(SATA_DEVFN);
 
 	if (StdHeader->Func == AMD_INIT_ENV) {
 		FCH_DATA_BLOCK *FchParams_env = (FCH_DATA_BLOCK *)FchData;
@@ -104,7 +104,7 @@
 	if (!ENV_ROMSTAGE)
 		return AGESA_UNSUPPORTED;
 
-	dev = dev_find_slot(0, DCT_DEVFN);
+	dev = pcidev_path_on_root(DCT_DEVFN);
 	if (dev == NULL)
 		return AGESA_ERROR;
 
diff --git a/src/soc/amd/stoneyridge/gpio.c b/src/soc/amd/stoneyridge/gpio.c
index 3eaa3a0..955cc6a 100644
--- a/src/soc/amd/stoneyridge/gpio.c
+++ b/src/soc/amd/stoneyridge/gpio.c
@@ -347,7 +347,7 @@
 void sb_reset_i2c_slaves(void)
 {
 	const struct soc_amd_stoneyridge_config *cfg;
-	const struct device *dev = dev_find_slot(0, GNB_DEVFN);
+	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 	struct soc_amd_i2c_save save_table[saved_pins_count];
 	uint8_t i, j, control;
 
diff --git a/src/soc/amd/stoneyridge/i2c.c b/src/soc/amd/stoneyridge/i2c.c
index b90e5d7..45057a0 100644
--- a/src/soc/amd/stoneyridge/i2c.c
+++ b/src/soc/amd/stoneyridge/i2c.c
@@ -45,7 +45,7 @@
 
 static const struct soc_amd_stoneyridge_config *get_soc_config(void)
 {
-	const struct device *dev = dev_find_slot(0, GNB_DEVFN);
+	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 
 	if (!dev || !dev->chip_info) {
 		printk(BIOS_ERR, "%s: Could not find SoC devicetree config!\n",
diff --git a/src/soc/amd/stoneyridge/romstage.c b/src/soc/amd/stoneyridge/romstage.c
index 9314488..9f8aed8 100644
--- a/src/soc/amd/stoneyridge/romstage.c
+++ b/src/soc/amd/stoneyridge/romstage.c
@@ -187,7 +187,7 @@
 void SetMemParams(AMD_POST_PARAMS *PostParams)
 {
 	const struct soc_amd_stoneyridge_config *cfg;
-	const struct device *dev = dev_find_slot(0, GNB_DEVFN);
+	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 
 	if (!dev || !dev->chip_info) {
 		printk(BIOS_ERR, "ERROR: Cannot find SoC devicetree config\n");
@@ -224,7 +224,7 @@
 void soc_customize_init_early(AMD_EARLY_PARAMS *InitEarly)
 {
 	const struct soc_amd_stoneyridge_config *cfg;
-	const struct device *dev = dev_find_slot(0, GNB_DEVFN);
+	const struct device *dev = pcidev_path_on_root(GNB_DEVFN);
 	struct _PLATFORM_CONFIGURATION *platform;
 
 	if (!dev || !dev->chip_info) {
diff --git a/src/soc/amd/stoneyridge/southbridge.c b/src/soc/amd/stoneyridge/southbridge.c
index f56123c..eb41882 100644
--- a/src/soc/amd/stoneyridge/southbridge.c
+++ b/src/soc/amd/stoneyridge/southbridge.c
@@ -73,7 +73,7 @@
 
 void SetFchResetParams(FCH_RESET_INTERFACE *params)
 {
-	const struct device *dev = dev_find_slot(0, SATA_DEVFN);
+	const struct device *dev = pcidev_path_on_root(SATA_DEVFN);
 	params->Xhci0Enable = IS_ENABLED(CONFIG_STONEYRIDGE_XHCI_ENABLE);
 	if (dev && dev->enabled) {
 		params->SataEnable = sb_sata_enable();
@@ -86,7 +86,7 @@
 
 void SetFchEnvParams(FCH_INTERFACE *params)
 {
-	const struct device *dev = dev_find_slot(0, SATA_DEVFN);
+	const struct device *dev = pcidev_path_on_root(SATA_DEVFN);
 	params->AzaliaController = AzEnable;
 	params->SataClass = CONFIG_STONEYRIDGE_SATA_MODE;
 	if (dev && dev->enabled) {
@@ -904,9 +904,9 @@
 	gnvs->aoac.ehce = is_aoac_device_enabled(FCH_AOAC_D3_STATE_USB2);
 	gnvs->aoac.xhce = is_aoac_device_enabled(FCH_AOAC_D3_STATE_USB3);
 	/* Rely on these being in sync with devicetree */
-	sd = dev_find_slot(0, SD_DEVFN);
+	sd = pcidev_path_on_root(SD_DEVFN);
 	gnvs->aoac.st_e = sd && sd->enabled ? 1 : 0;
-	sata = dev_find_slot(0, SATA_DEVFN);
+	sata = pcidev_path_on_root(SATA_DEVFN);
 	gnvs->aoac.sd_e = sata && sata->enabled ? 1 : 0;
 	gnvs->aoac.espi = 1;
 
diff --git a/src/soc/intel/common/block/chip/chip.c b/src/soc/intel/common/block/chip/chip.c
index aecf060..3dae621 100644
--- a/src/soc/intel/common/block/chip/chip.c
+++ b/src/soc/intel/common/block/chip/chip.c
@@ -22,7 +22,7 @@
 	const struct soc_intel_common_config *soc_config;
 	const config_t *config;
 	int devfn = SA_DEVFN_ROOT;
-	const struct device *dev = dev_find_slot(0, devfn);
+	const struct device *dev = pcidev_path_on_root(devfn);
 
 	if (!dev || !dev->chip_info)
 		die("Could not find SA_DEV_ROOT devicetree config!\n");
diff --git a/src/soc/intel/common/block/gspi/gspi.c b/src/soc/intel/common/block/gspi/gspi.c
index d4cb9f2..445da36 100644
--- a/src/soc/intel/common/block/gspi/gspi.c
+++ b/src/soc/intel/common/block/gspi/gspi.c
@@ -236,7 +236,7 @@
 	if (devfn < 0)
 		return 0;
 
-	dev = dev_find_slot(0, devfn);
+	dev = pcidev_path_on_root(devfn);
 	if (!dev || !dev->enabled)
 		return 0;
 
diff --git a/src/soc/intel/common/block/i2c/i2c.c b/src/soc/intel/common/block/i2c/i2c.c
index 01a9bc3..f72adfc 100644
--- a/src/soc/intel/common/block/i2c/i2c.c
+++ b/src/soc/intel/common/block/i2c/i2c.c
@@ -65,7 +65,7 @@
 
 	/* Look up the controller device in the devicetree */
 	dev = PCI_DEV(0, PCI_SLOT(devfn), PCI_FUNC(devfn));
-	tree_dev = dev_find_slot(0, devfn);
+	tree_dev = pcidev_path_on_root(devfn);
 	if (!tree_dev || !tree_dev->enabled) {
 		printk(BIOS_ERR, "I2C%u device not enabled\n", bus);
 		return -1;
@@ -134,7 +134,7 @@
 		return (uintptr_t)NULL;
 
 	/* devfn -> dev */
-	dev = dev_find_slot(0, devfn);
+	dev = pcidev_path_on_root(devfn);
 	if (!dev || !dev->enabled)
 		return (uintptr_t)NULL;
 
diff --git a/src/soc/intel/fsp_baytrail/acpi.c b/src/soc/intel/fsp_baytrail/acpi.c
index f3436c0..55e4a86 100644
--- a/src/soc/intel/fsp_baytrail/acpi.c
+++ b/src/soc/intel/fsp_baytrail/acpi.c
@@ -173,7 +173,7 @@
 void acpi_fill_in_fadt(acpi_fadt_t * fadt, acpi_facs_t * facs, void *dsdt)
 {
 	acpi_header_t *header = &(fadt->header);
-	struct device *lpcdev = dev_find_slot(0, FADT_SOC_LPC_DEVFN);
+	struct device *lpcdev = pcidev_path_on_root(FADT_SOC_LPC_DEVFN);
 	u16 pmbase = pci_read_config16(lpcdev, ABASE) & 0xfff0;
 	config_t *config = lpcdev->chip_info;
 
diff --git a/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c b/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c
index 13bc883..3786c0c 100644
--- a/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c
+++ b/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c
@@ -86,7 +86,7 @@
 	DEVTREE_CONST config_t *config;
 	printk(FSP_INFO_LEVEL, "Configure Default UPD Data\n");
 
-	dev = dev_find_slot(0, SOC_DEV_FUNC);
+	dev = pcidev_path_on_root(SOC_DEV_FUNC);
 	config = dev->chip_info;
 
 	/* Set up default verb tables - Just HDMI audio */
diff --git a/src/soc/intel/fsp_broadwell_de/acpi.c b/src/soc/intel/fsp_broadwell_de/acpi.c
index 0b07ea8..71aa0a3 100644
--- a/src/soc/intel/fsp_broadwell_de/acpi.c
+++ b/src/soc/intel/fsp_broadwell_de/acpi.c
@@ -312,7 +312,7 @@
 static unsigned long acpi_fill_dmar(unsigned long current)
 {
 	uint32_t vtbar, tmp = current;
-	struct device *dev = dev_find_slot(0, VTD_DEV_FUNC);
+	struct device *dev = pcidev_path_on_root(VTD_DEV_FUNC);
 	uint16_t bdf, hpet_bdf[8];
 	uint8_t i, j;
 
@@ -329,7 +329,7 @@
 	current += acpi_create_dmar_ds_ioapic(current,
 			9, 0, 5, 4);
 	/* Get the PCI BDF for the PCH I/O APIC */
-	dev = dev_find_slot(0, LPC_DEV_FUNC);
+	dev = pcidev_path_on_root(LPC_DEV_FUNC);
 	bdf = pci_read_config16(dev, 0x6c);
 	current += acpi_create_dmar_ds_ioapic(current,
 			8, (bdf >> 8), PCI_SLOT(bdf), PCI_FUNC(bdf));
diff --git a/src/soc/intel/quark/romstage/fsp1_1.c b/src/soc/intel/quark/romstage/fsp1_1.c
index d5c5f19..88f7376 100644
--- a/src/soc/intel/quark/romstage/fsp1_1.c
+++ b/src/soc/intel/quark/romstage/fsp1_1.c
@@ -84,7 +84,7 @@
 	size_t rmu_data_len;
 
 	/* Locate the configuration data from devicetree.cb */
-	dev = dev_find_slot(0, LPC_DEV_FUNC);
+	dev = pcidev_path_on_root(LPC_DEV_FUNC);
 	if (!dev) {
 		printk(BIOS_CRIT,
 			"Error! Device (PCI:0:%02x.%01x) not found, "
diff --git a/src/soc/intel/quark/romstage/fsp2_0.c b/src/soc/intel/quark/romstage/fsp2_0.c
index 3e61988..23051bd 100644
--- a/src/soc/intel/quark/romstage/fsp2_0.c
+++ b/src/soc/intel/quark/romstage/fsp2_0.c
@@ -120,7 +120,7 @@
 		die("Microcode file (rmu.bin) not found.");
 
 	/* Locate the configuration data from devicetree.cb */
-	dev = dev_find_slot(0, LPC_DEV_FUNC);
+	dev = pcidev_path_on_root(LPC_DEV_FUNC);
 	if (!dev)
 		die("ERROR - LPC device not found!");
 	config = dev->chip_info;
diff --git a/src/southbridge/intel/fsp_rangeley/acpi.c b/src/southbridge/intel/fsp_rangeley/acpi.c
index fbdc6e3..96ddea5 100644
--- a/src/southbridge/intel/fsp_rangeley/acpi.c
+++ b/src/southbridge/intel/fsp_rangeley/acpi.c
@@ -34,7 +34,7 @@
 void acpi_fill_in_fadt(acpi_fadt_t * fadt, acpi_facs_t * facs, void *dsdt)
 {
 	acpi_header_t *header = &(fadt->header);
-	struct device *lpcdev = dev_find_slot(0, SOC_LPC_DEVFN);
+	struct device *lpcdev = pcidev_path_on_root(SOC_LPC_DEVFN);
 	u16 pmbase = pci_read_config16(lpcdev, ABASE) & 0xfff0;
 	config_t *config = lpcdev->chip_info;
 
diff --git a/src/southbridge/intel/i82801dx/i82801dx.c b/src/southbridge/intel/i82801dx/i82801dx.c
index 8db591c..f233eed 100644
--- a/src/southbridge/intel/i82801dx/i82801dx.c
+++ b/src/southbridge/intel/i82801dx/i82801dx.c
@@ -26,7 +26,7 @@
 
 //      all 82801dbm devices are in bus 0
 	unsigned int devfn = PCI_DEVFN(0x1f, 0);	// lpc
-	struct device *lpc_dev = dev_find_slot(0, devfn);	// 0
+	struct device *lpc_dev = pcidev_path_on_root(devfn);	// 0
 	if (!lpc_dev)
 		return;
 
diff --git a/src/southbridge/intel/i82801ix/i82801ix.c b/src/southbridge/intel/i82801ix/i82801ix.c
index 46838fc..f3027bf 100644
--- a/src/southbridge/intel/i82801ix/i82801ix.c
+++ b/src/southbridge/intel/i82801ix/i82801ix.c
@@ -137,7 +137,7 @@
 
 static int i82801ix_function_disabled(const unsigned devfn)
 {
-	const struct device *const dev = dev_find_slot(0, devfn);
+	struct device *const dev = pcidev_path_on_root(devfn);
 	if (!dev) {
 		printk(BIOS_EMERG,
 		       "PCI device 00:%x.%x",
diff --git a/src/southbridge/intel/i82801jx/i82801jx.c b/src/southbridge/intel/i82801jx/i82801jx.c
index 2f3ed4b..64859f8 100644
--- a/src/southbridge/intel/i82801jx/i82801jx.c
+++ b/src/southbridge/intel/i82801jx/i82801jx.c
@@ -136,7 +136,7 @@
 
 static int i82801jx_function_disabled(const unsigned int devfn)
 {
-	const struct device *const dev = dev_find_slot(0, devfn);
+	struct device *const dev = pcidev_path_on_root(devfn);
 	if (!dev) {
 		printk(BIOS_EMERG,
 		       "PCI device 00:%x.%x",