diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-18 04:54:00 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-18 04:54:00 -0400 |
| commit | 4741c336d27dec3ea68a35659abb8dc82b142388 (patch) | |
| tree | a8576df82129354b77b0144c480c446ec7aba7b2 /include/linux/pci.h | |
| parent | 26ec634c31a11a003040e10b4d650495158632fd (diff) | |
| parent | a9a5cd5d2a57fb76dbae2115450f777b69beccf7 (diff) | |
Merge branch 'master'
Diffstat (limited to 'include/linux/pci.h')
| -rw-r--r-- | include/linux/pci.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h index 0aad5a378e95..3a6a4e37a482 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -97,7 +97,13 @@ enum pci_channel_state { | |||
| 97 | 97 | ||
| 98 | typedef unsigned short __bitwise pci_bus_flags_t; | 98 | typedef unsigned short __bitwise pci_bus_flags_t; |
| 99 | enum pci_bus_flags { | 99 | enum pci_bus_flags { |
| 100 | PCI_BUS_FLAGS_NO_MSI = (pci_bus_flags_t) 1, | 100 | PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, |
| 101 | }; | ||
| 102 | |||
| 103 | struct pci_cap_saved_state { | ||
| 104 | struct hlist_node next; | ||
| 105 | char cap_nr; | ||
| 106 | u32 data[0]; | ||
| 101 | }; | 107 | }; |
| 102 | 108 | ||
| 103 | /* | 109 | /* |
| @@ -159,6 +165,7 @@ struct pci_dev { | |||
| 159 | unsigned int block_ucfg_access:1; /* userspace config space access is blocked */ | 165 | unsigned int block_ucfg_access:1; /* userspace config space access is blocked */ |
| 160 | 166 | ||
| 161 | u32 saved_config_space[16]; /* config space saved at suspend time */ | 167 | u32 saved_config_space[16]; /* config space saved at suspend time */ |
| 168 | struct hlist_head saved_cap_space; | ||
| 162 | struct bin_attribute *rom_attr; /* attribute descriptor for sysfs ROM entry */ | 169 | struct bin_attribute *rom_attr; /* attribute descriptor for sysfs ROM entry */ |
| 163 | int rom_attr_enabled; /* has display of the rom attribute been enabled? */ | 170 | int rom_attr_enabled; /* has display of the rom attribute been enabled? */ |
| 164 | struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; /* sysfs file for resources */ | 171 | struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; /* sysfs file for resources */ |
| @@ -169,6 +176,30 @@ struct pci_dev { | |||
| 169 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) | 176 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) |
| 170 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) | 177 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) |
| 171 | 178 | ||
| 179 | static inline struct pci_cap_saved_state *pci_find_saved_cap( | ||
| 180 | struct pci_dev *pci_dev,char cap) | ||
| 181 | { | ||
| 182 | struct pci_cap_saved_state *tmp; | ||
| 183 | struct hlist_node *pos; | ||
| 184 | |||
| 185 | hlist_for_each_entry(tmp, pos, &pci_dev->saved_cap_space, next) { | ||
| 186 | if (tmp->cap_nr == cap) | ||
| 187 | return tmp; | ||
| 188 | } | ||
| 189 | return NULL; | ||
| 190 | } | ||
| 191 | |||
| 192 | static inline void pci_add_saved_cap(struct pci_dev *pci_dev, | ||
| 193 | struct pci_cap_saved_state *new_cap) | ||
| 194 | { | ||
| 195 | hlist_add_head(&new_cap->next, &pci_dev->saved_cap_space); | ||
| 196 | } | ||
| 197 | |||
| 198 | static inline void pci_remove_saved_cap(struct pci_cap_saved_state *cap) | ||
| 199 | { | ||
| 200 | hlist_del(&cap->next); | ||
| 201 | } | ||
| 202 | |||
| 172 | /* | 203 | /* |
| 173 | * For PCI devices, the region numbers are assigned this way: | 204 | * For PCI devices, the region numbers are assigned this way: |
| 174 | * | 205 | * |
