diff options
Diffstat (limited to 'include/linux/pci.h')
| -rw-r--r-- | include/linux/pci.h | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h index ea760e519c46..292491324b01 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -20,6 +20,8 @@ | |||
| 20 | /* Include the pci register defines */ | 20 | /* Include the pci register defines */ |
| 21 | #include <linux/pci_regs.h> | 21 | #include <linux/pci_regs.h> |
| 22 | 22 | ||
| 23 | struct pci_vpd; | ||
| 24 | |||
| 23 | /* | 25 | /* |
| 24 | * The PCI interface treats multi-function devices as independent | 26 | * The PCI interface treats multi-function devices as independent |
| 25 | * devices. The slot/function address of each device is encoded | 27 | * devices. The slot/function address of each device is encoded |
| @@ -128,11 +130,11 @@ struct pci_cap_saved_state { | |||
| 128 | u32 data[0]; | 130 | u32 data[0]; |
| 129 | }; | 131 | }; |
| 130 | 132 | ||
| 133 | struct pcie_link_state; | ||
| 131 | /* | 134 | /* |
| 132 | * The pci_dev structure is used to describe PCI devices. | 135 | * The pci_dev structure is used to describe PCI devices. |
| 133 | */ | 136 | */ |
| 134 | struct pci_dev { | 137 | struct pci_dev { |
| 135 | struct list_head global_list; /* node in list of all PCI devices */ | ||
| 136 | struct list_head bus_list; /* node in per-bus list */ | 138 | struct list_head bus_list; /* node in per-bus list */ |
| 137 | struct pci_bus *bus; /* bus this device is on */ | 139 | struct pci_bus *bus; /* bus this device is on */ |
| 138 | struct pci_bus *subordinate; /* bus this device bridges to */ | 140 | struct pci_bus *subordinate; /* bus this device bridges to */ |
| @@ -165,6 +167,10 @@ struct pci_dev { | |||
| 165 | this is D0-D3, D0 being fully functional, | 167 | this is D0-D3, D0 being fully functional, |
| 166 | and D3 being off. */ | 168 | and D3 being off. */ |
| 167 | 169 | ||
| 170 | #ifdef CONFIG_PCIEASPM | ||
| 171 | struct pcie_link_state *link_state; /* ASPM link state. */ | ||
| 172 | #endif | ||
| 173 | |||
| 168 | pci_channel_state_t error_state; /* current connectivity state */ | 174 | pci_channel_state_t error_state; /* current connectivity state */ |
| 169 | struct device dev; /* Generic device interface */ | 175 | struct device dev; /* Generic device interface */ |
| 170 | 176 | ||
| @@ -181,6 +187,7 @@ struct pci_dev { | |||
| 181 | unsigned int transparent:1; /* Transparent PCI bridge */ | 187 | unsigned int transparent:1; /* Transparent PCI bridge */ |
| 182 | unsigned int multifunction:1;/* Part of multi-function device */ | 188 | unsigned int multifunction:1;/* Part of multi-function device */ |
| 183 | /* keep track of device state */ | 189 | /* keep track of device state */ |
| 190 | unsigned int is_added:1; | ||
| 184 | unsigned int is_busmaster:1; /* device is busmaster */ | 191 | unsigned int is_busmaster:1; /* device is busmaster */ |
| 185 | unsigned int no_msi:1; /* device may not use msi */ | 192 | unsigned int no_msi:1; /* device may not use msi */ |
| 186 | unsigned int no_d1d2:1; /* only allow d0 or d3 */ | 193 | unsigned int no_d1d2:1; /* only allow d0 or d3 */ |
| @@ -201,11 +208,11 @@ struct pci_dev { | |||
| 201 | #ifdef CONFIG_PCI_MSI | 208 | #ifdef CONFIG_PCI_MSI |
| 202 | struct list_head msi_list; | 209 | struct list_head msi_list; |
| 203 | #endif | 210 | #endif |
| 211 | struct pci_vpd *vpd; | ||
| 204 | }; | 212 | }; |
| 205 | 213 | ||
| 206 | extern struct pci_dev *alloc_pci_dev(void); | 214 | extern struct pci_dev *alloc_pci_dev(void); |
| 207 | 215 | ||
| 208 | #define pci_dev_g(n) list_entry(n, struct pci_dev, global_list) | ||
| 209 | #define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) | 216 | #define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) |
| 210 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) | 217 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) |
| 211 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) | 218 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) |
| @@ -449,7 +456,6 @@ extern struct bus_type pci_bus_type; | |||
| 449 | /* Do NOT directly access these two variables, unless you are arch specific pci | 456 | /* Do NOT directly access these two variables, unless you are arch specific pci |
| 450 | * code, or pci core code. */ | 457 | * code, or pci core code. */ |
| 451 | extern struct list_head pci_root_buses; /* list of all known PCI buses */ | 458 | extern struct list_head pci_root_buses; /* list of all known PCI buses */ |
| 452 | extern struct list_head pci_devices; /* list of all devices */ | ||
| 453 | /* Some device drivers need know if pci is initiated */ | 459 | /* Some device drivers need know if pci is initiated */ |
| 454 | extern int no_pci_devices(void); | 460 | extern int no_pci_devices(void); |
| 455 | 461 | ||
| @@ -517,17 +523,13 @@ struct pci_bus *pci_find_next_bus(const struct pci_bus *from); | |||
| 517 | 523 | ||
| 518 | struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, | 524 | struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, |
| 519 | struct pci_dev *from); | 525 | struct pci_dev *from); |
| 520 | struct pci_dev *pci_get_device_reverse(unsigned int vendor, unsigned int device, | ||
| 521 | struct pci_dev *from); | ||
| 522 | |||
| 523 | struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, | 526 | struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, |
| 524 | unsigned int ss_vendor, unsigned int ss_device, | 527 | unsigned int ss_vendor, unsigned int ss_device, |
| 525 | struct pci_dev *from); | 528 | const struct pci_dev *from); |
| 526 | struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn); | 529 | struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn); |
| 527 | struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn); | 530 | struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn); |
| 528 | struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from); | 531 | struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from); |
| 529 | int pci_dev_present(const struct pci_device_id *ids); | 532 | int pci_dev_present(const struct pci_device_id *ids); |
| 530 | const struct pci_device_id *pci_find_present(const struct pci_device_id *ids); | ||
| 531 | 533 | ||
| 532 | int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn, | 534 | int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn, |
| 533 | int where, u8 *val); | 535 | int where, u8 *val); |
| @@ -601,7 +603,6 @@ int pcie_get_readrq(struct pci_dev *dev); | |||
| 601 | int pcie_set_readrq(struct pci_dev *dev, int rq); | 603 | int pcie_set_readrq(struct pci_dev *dev, int rq); |
| 602 | void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno); | 604 | void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno); |
| 603 | int __must_check pci_assign_resource(struct pci_dev *dev, int i); | 605 | int __must_check pci_assign_resource(struct pci_dev *dev, int i); |
| 604 | int __must_check pci_assign_resource_fixed(struct pci_dev *dev, int i); | ||
| 605 | int pci_select_bars(struct pci_dev *dev, unsigned long flags); | 606 | int pci_select_bars(struct pci_dev *dev, unsigned long flags); |
| 606 | 607 | ||
| 607 | /* ROM control related routines */ | 608 | /* ROM control related routines */ |
| @@ -626,6 +627,7 @@ int pci_claim_resource(struct pci_dev *, int); | |||
| 626 | void pci_assign_unassigned_resources(void); | 627 | void pci_assign_unassigned_resources(void); |
| 627 | void pdev_enable_device(struct pci_dev *); | 628 | void pdev_enable_device(struct pci_dev *); |
| 628 | void pdev_sort_resources(struct pci_dev *, struct resource_list *); | 629 | void pdev_sort_resources(struct pci_dev *, struct resource_list *); |
| 630 | int pci_enable_resources(struct pci_dev *, int mask); | ||
| 629 | void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *), | 631 | void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *), |
| 630 | int (*)(struct pci_dev *, u8, u8)); | 632 | int (*)(struct pci_dev *, u8, u8)); |
| 631 | #define HAVE_PCI_REQ_REGIONS 2 | 633 | #define HAVE_PCI_REQ_REGIONS 2 |
| @@ -793,18 +795,11 @@ static inline struct pci_dev *pci_get_device(unsigned int vendor, | |||
| 793 | return NULL; | 795 | return NULL; |
| 794 | } | 796 | } |
| 795 | 797 | ||
| 796 | static inline struct pci_dev *pci_get_device_reverse(unsigned int vendor, | ||
| 797 | unsigned int device, | ||
| 798 | struct pci_dev *from) | ||
| 799 | { | ||
| 800 | return NULL; | ||
| 801 | } | ||
| 802 | |||
| 803 | static inline struct pci_dev *pci_get_subsys(unsigned int vendor, | 798 | static inline struct pci_dev *pci_get_subsys(unsigned int vendor, |
| 804 | unsigned int device, | 799 | unsigned int device, |
| 805 | unsigned int ss_vendor, | 800 | unsigned int ss_vendor, |
| 806 | unsigned int ss_device, | 801 | unsigned int ss_device, |
| 807 | struct pci_dev *from) | 802 | const struct pci_dev *from) |
| 808 | { | 803 | { |
| 809 | return NULL; | 804 | return NULL; |
| 810 | } | 805 | } |
| @@ -817,7 +812,6 @@ static inline struct pci_dev *pci_get_class(unsigned int class, | |||
| 817 | 812 | ||
| 818 | #define pci_dev_present(ids) (0) | 813 | #define pci_dev_present(ids) (0) |
| 819 | #define no_pci_devices() (1) | 814 | #define no_pci_devices() (1) |
| 820 | #define pci_find_present(ids) (NULL) | ||
| 821 | #define pci_dev_put(dev) do { } while (0) | 815 | #define pci_dev_put(dev) do { } while (0) |
| 822 | 816 | ||
| 823 | static inline void pci_set_master(struct pci_dev *dev) | 817 | static inline void pci_set_master(struct pci_dev *dev) |
