root/include/linux/pci-acpi.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. pci_acpi_remove_bus_pm_notifier
  2. pci_acpi_remove_pm_notifier
  3. acpi_find_root_bridge_handle
  4. acpi_pci_get_bridge_handle
  5. acpi_pci_slot_init
  6. acpi_pci_slot_enumerate
  7. acpi_pci_slot_remove
  8. acpiphp_init
  9. acpiphp_enumerate_slots
  10. acpiphp_remove_slots
  11. acpiphp_check_host_bridge
  12. acpi_pci_add_bus
  13. acpi_pci_remove_bus
  14. aer_acpi_firmware_first

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  * File         pci-acpi.h
   4  *
   5  * Copyright (C) 2004 Intel
   6  * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com)
   7  */
   8 
   9 #ifndef _PCI_ACPI_H_
  10 #define _PCI_ACPI_H_
  11 
  12 #include <linux/acpi.h>
  13 
  14 #ifdef CONFIG_ACPI
  15 extern acpi_status pci_acpi_add_bus_pm_notifier(struct acpi_device *dev);
  16 static inline acpi_status pci_acpi_remove_bus_pm_notifier(struct acpi_device *dev)
  17 {
  18         return acpi_remove_pm_notifier(dev);
  19 }
  20 extern acpi_status pci_acpi_add_pm_notifier(struct acpi_device *dev,
  21                                              struct pci_dev *pci_dev);
  22 static inline acpi_status pci_acpi_remove_pm_notifier(struct acpi_device *dev)
  23 {
  24         return acpi_remove_pm_notifier(dev);
  25 }
  26 extern phys_addr_t acpi_pci_root_get_mcfg_addr(acpi_handle handle);
  27 
  28 struct pci_ecam_ops;
  29 extern int pci_mcfg_lookup(struct acpi_pci_root *root, struct resource *cfgres,
  30                            struct pci_ecam_ops **ecam_ops);
  31 
  32 static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev)
  33 {
  34         struct pci_bus *pbus = pdev->bus;
  35 
  36         /* Find a PCI root bus */
  37         while (!pci_is_root_bus(pbus))
  38                 pbus = pbus->parent;
  39 
  40         return ACPI_HANDLE(pbus->bridge);
  41 }
  42 
  43 static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus)
  44 {
  45         struct device *dev;
  46 
  47         if (pci_is_root_bus(pbus))
  48                 dev = pbus->bridge;
  49         else {
  50                 /* If pbus is a virtual bus, there is no bridge to it */
  51                 if (!pbus->self)
  52                         return NULL;
  53 
  54                 dev = &pbus->self->dev;
  55         }
  56 
  57         return ACPI_HANDLE(dev);
  58 }
  59 
  60 struct acpi_pci_root;
  61 struct acpi_pci_root_ops;
  62 
  63 struct acpi_pci_root_info {
  64         struct acpi_pci_root            *root;
  65         struct acpi_device              *bridge;
  66         struct acpi_pci_root_ops        *ops;
  67         struct list_head                resources;
  68         char                            name[16];
  69 };
  70 
  71 struct acpi_pci_root_ops {
  72         struct pci_ops *pci_ops;
  73         int (*init_info)(struct acpi_pci_root_info *info);
  74         void (*release_info)(struct acpi_pci_root_info *info);
  75         int (*prepare_resources)(struct acpi_pci_root_info *info);
  76 };
  77 
  78 extern int acpi_pci_probe_root_resources(struct acpi_pci_root_info *info);
  79 extern struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
  80                                             struct acpi_pci_root_ops *ops,
  81                                             struct acpi_pci_root_info *info,
  82                                             void *sd);
  83 
  84 void acpi_pci_add_bus(struct pci_bus *bus);
  85 void acpi_pci_remove_bus(struct pci_bus *bus);
  86 
  87 #ifdef  CONFIG_ACPI_PCI_SLOT
  88 void acpi_pci_slot_init(void);
  89 void acpi_pci_slot_enumerate(struct pci_bus *bus);
  90 void acpi_pci_slot_remove(struct pci_bus *bus);
  91 #else
  92 static inline void acpi_pci_slot_init(void) { }
  93 static inline void acpi_pci_slot_enumerate(struct pci_bus *bus) { }
  94 static inline void acpi_pci_slot_remove(struct pci_bus *bus) { }
  95 #endif
  96 
  97 #ifdef  CONFIG_HOTPLUG_PCI_ACPI
  98 void acpiphp_init(void);
  99 void acpiphp_enumerate_slots(struct pci_bus *bus);
 100 void acpiphp_remove_slots(struct pci_bus *bus);
 101 void acpiphp_check_host_bridge(struct acpi_device *adev);
 102 #else
 103 static inline void acpiphp_init(void) { }
 104 static inline void acpiphp_enumerate_slots(struct pci_bus *bus) { }
 105 static inline void acpiphp_remove_slots(struct pci_bus *bus) { }
 106 static inline void acpiphp_check_host_bridge(struct acpi_device *adev) { }
 107 #endif
 108 
 109 extern const guid_t pci_acpi_dsm_guid;
 110 #define IGNORE_PCI_BOOT_CONFIG_DSM      0x05
 111 #define DEVICE_LABEL_DSM                0x07
 112 #define RESET_DELAY_DSM                 0x08
 113 #define FUNCTION_DELAY_DSM              0x09
 114 
 115 #else   /* CONFIG_ACPI */
 116 static inline void acpi_pci_add_bus(struct pci_bus *bus) { }
 117 static inline void acpi_pci_remove_bus(struct pci_bus *bus) { }
 118 #endif  /* CONFIG_ACPI */
 119 
 120 #ifdef CONFIG_ACPI_APEI
 121 extern bool aer_acpi_firmware_first(void);
 122 #else
 123 static inline bool aer_acpi_firmware_first(void) { return false; }
 124 #endif
 125 
 126 #endif  /* _PCI_ACPI_H_ */

/* [<][>][^][v][top][bottom][index][help] */