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) |