pci-acpi.h 1.5 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10
/*
 * File		pci-acpi.h
 *
 * Copyright (C) 2004 Intel
 * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
 */

#ifndef _PCI_ACPI_H_
#define _PCI_ACPI_H_

11 12
#include <linux/acpi.h>

L
Linus Torvalds 已提交
13
#ifdef CONFIG_ACPI
14 15 16 17 18 19
extern acpi_status pci_acpi_add_bus_pm_notifier(struct acpi_device *dev,
						 struct pci_bus *pci_bus);
extern acpi_status pci_acpi_remove_bus_pm_notifier(struct acpi_device *dev);
extern acpi_status pci_acpi_add_pm_notifier(struct acpi_device *dev,
					     struct pci_dev *pci_dev);
extern acpi_status pci_acpi_remove_pm_notifier(struct acpi_device *dev);
20
extern phys_addr_t acpi_pci_root_get_mcfg_addr(acpi_handle handle);
21

22 23
static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev)
{
24
	struct pci_bus *pbus = pdev->bus;
25

26
	/* Find a PCI root bus */
27
	while (!pci_is_root_bus(pbus))
28
		pbus = pbus->parent;
29 30

	return DEVICE_ACPI_HANDLE(pbus->bridge);
31
}
32 33 34

static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus)
{
35 36 37 38 39 40 41 42
	struct device *dev;

	if (pci_is_root_bus(pbus))
		dev = pbus->bridge;
	else
		dev = &pbus->self->dev;

	return DEVICE_ACPI_HANDLE(dev);
43
}
44 45 46 47 48 49 50

void acpi_pci_add_bus(struct pci_bus *bus);
void acpi_pci_remove_bus(struct pci_bus *bus);
#else	/* CONFIG_ACPI */
static inline void acpi_pci_add_bus(struct pci_bus *bus) { }
static inline void acpi_pci_remove_bus(struct pci_bus *bus) { }
#endif	/* CONFIG_ACPI */
L
Linus Torvalds 已提交
51

52 53 54 55 56 57
#ifdef CONFIG_ACPI_APEI
extern bool aer_acpi_firmware_first(void);
#else
static inline bool aer_acpi_firmware_first(void) { return false; }
#endif

L
Linus Torvalds 已提交
58
#endif	/* _PCI_ACPI_H_ */