diff options
Diffstat (limited to 'drivers/pci/hotplug/pciehp_acpi.c')
| -rw-r--r-- | drivers/pci/hotplug/pciehp_acpi.c | 23 | 
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/pci/hotplug/pciehp_acpi.c b/drivers/pci/hotplug/pciehp_acpi.c index 2574700db46..93cc9266e8c 100644 --- a/drivers/pci/hotplug/pciehp_acpi.c +++ b/drivers/pci/hotplug/pciehp_acpi.c @@ -27,6 +27,7 @@  #include <linux/pci.h>  #include <linux/pci_hotplug.h>  #include <linux/slab.h> +#include <linux/module.h>  #include "pciehp.h"  #define PCIEHP_DETECT_PCIE	(0) @@ -53,7 +54,7 @@ int pciehp_acpi_slot_detection_check(struct pci_dev *dev)  {  	if (slot_detection_mode != PCIEHP_DETECT_ACPI)  		return 0; -	if (acpi_pci_detect_ejectable(DEVICE_ACPI_HANDLE(&dev->dev))) +	if (acpi_pci_detect_ejectable(ACPI_HANDLE(&dev->dev)))  		return 0;  	return -ENODEV;  } @@ -77,45 +78,43 @@ static int __initdata dup_slot_id;  static int __initdata acpi_slot_detected;  static struct list_head __initdata dummy_slots = LIST_HEAD_INIT(dummy_slots); -/* Dummy driver for dumplicate name detection */ +/* Dummy driver for duplicate name detection */  static int __init dummy_probe(struct pcie_device *dev)  { -	int pos;  	u32 slot_cap;  	acpi_handle handle;  	struct dummy_slot *slot, *tmp;  	struct pci_dev *pdev = dev->port; -	pos = pci_pcie_cap(pdev); -	if (!pos) -		return -ENODEV; -	pci_read_config_dword(pdev, pos + PCI_EXP_SLTCAP, &slot_cap); +	pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &slot_cap);  	slot = kzalloc(sizeof(*slot), GFP_KERNEL);  	if (!slot)  		return -ENOMEM; -	slot->number = slot_cap >> 19; +	slot->number = (slot_cap & PCI_EXP_SLTCAP_PSN) >> 19;  	list_for_each_entry(tmp, &dummy_slots, list) {  		if (tmp->number == slot->number)  			dup_slot_id++;  	}  	list_add_tail(&slot->list, &dummy_slots); -	handle = DEVICE_ACPI_HANDLE(&pdev->dev); +	handle = ACPI_HANDLE(&pdev->dev);  	if (!acpi_slot_detected && acpi_pci_detect_ejectable(handle))  		acpi_slot_detected = 1;  	return -ENODEV;         /* dummy driver always returns error */  }  static struct pcie_port_service_driver __initdata dummy_driver = { -        .name           = "pciehp_dummy", +	.name		= "pciehp_dummy",  	.port_type	= PCIE_ANY_PORT,  	.service	= PCIE_PORT_SERVICE_HP, -        .probe          = dummy_probe, +	.probe		= dummy_probe,  };  static int __init select_detection_mode(void)  {  	struct dummy_slot *slot, *tmp; -	pcie_port_service_register(&dummy_driver); + +	if (pcie_port_service_register(&dummy_driver)) +		return PCIEHP_DETECT_ACPI;  	pcie_port_service_unregister(&dummy_driver);  	list_for_each_entry_safe(slot, tmp, &dummy_slots, list) {  		list_del(&slot->list);  | 
