1/* 2 * File pci-acpi.h 3 * 4 * Copyright (C) 2004 Intel 5 * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) 6 */ 7 8#ifndef _PCI_ACPI_H_ 9#define _PCI_ACPI_H_ 10 11#include <linux/acpi.h> 12 13#ifdef CONFIG_ACPI 14extern acpi_status pci_acpi_add_bus_pm_notifier(struct acpi_device *dev, 15 struct pci_bus *pci_bus); 16extern acpi_status pci_acpi_remove_bus_pm_notifier(struct acpi_device *dev); 17extern acpi_status pci_acpi_add_pm_notifier(struct acpi_device *dev, 18 struct pci_dev *pci_dev); 19extern acpi_status pci_acpi_remove_pm_notifier(struct acpi_device *dev); 20extern phys_addr_t acpi_pci_root_get_mcfg_addr(acpi_handle handle); 21 22static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev) 23{ 24 struct pci_bus *pbus = pdev->bus; 25 /* Find a PCI root bus */ 26 while (!pci_is_root_bus(pbus)) 27 pbus = pbus->parent; 28 return acpi_get_pci_rootbridge_handle(pci_domain_nr(pbus), 29 pbus->number); 30} 31 32static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus) 33{ 34 if (!pci_is_root_bus(pbus)) 35 return DEVICE_ACPI_HANDLE(&(pbus->self->dev)); 36 return acpi_get_pci_rootbridge_handle(pci_domain_nr(pbus), 37 pbus->number); 38} 39#endif 40 41#ifdef CONFIG_ACPI_APEI 42extern bool aer_acpi_firmware_first(void); 43#else 44static inline bool aer_acpi_firmware_first(void) { return false; } 45#endif 46 47#endif /* _PCI_ACPI_H_ */ 48

