summaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci-efi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/pci-efi.c')
-rw-r--r--drivers/pci/pci-efi.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/pci/pci-efi.c b/drivers/pci/pci-efi.c
index e1fe11d070..67868d09b6 100644
--- a/drivers/pci/pci-efi.c
+++ b/drivers/pci/pci-efi.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0
+// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2019 Ahmad Fatoum <a.fatoum@pengutronix.de>
*/
@@ -9,7 +9,7 @@
#include <init.h>
#include <xfuncs.h>
#include <efi.h>
-#include <efi/efi.h>
+#include <efi/efi-payload.h>
#include <efi/efi-device.h>
#include <linux/pci.h>
@@ -17,7 +17,7 @@
struct efi_pci_priv {
struct efi_pci_root_bridge_io_protocol *protocol;
- struct device_d *dev;
+ struct device *dev;
struct pci_controller pci;
struct resource mem;
struct resource mem_pref;
@@ -34,7 +34,7 @@ struct pci_child_id {
struct pci_child {
struct efi_pci_io_protocol *protocol;
- struct device_d *dev;
+ struct device *dev;
struct list_head list;
struct pci_child_id id;
};
@@ -209,15 +209,22 @@ static u8 *acpi_parse_resource(u8 *next, struct resource *out)
return next;
}
+static struct efi_driver efi_pci_driver;
+
/* EFI already enumerated the bus for us, match our new pci devices with the efi
* handles
*/
static void efi_pci_fixup_dev_parent(struct pci_dev *dev)
{
- struct efi_pci_priv *priv = host_to_efi_pci(dev->bus->host);
+ struct efi_pci_priv *priv;
struct pci_child *child;
struct pci_child_id id;
+ if (dev->dev.driver != &efi_pci_driver.driver)
+ return;
+
+ priv = host_to_efi_pci(dev->bus->host);
+
id.segmentno = priv->protocol->segmentno;
id.busno = dev->bus->number;
id.devno = PCI_SLOT(dev->devfn);
@@ -261,7 +268,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, efi_pci_fixup_dev_parent);
static int efi_pci_probe(struct efi_device *efidev)
{
- struct device_d *child;
+ struct device *child;
struct efi_pci_priv *priv;
efi_status_t efiret;
void *resources;