diff options
| author | Bjorn Helgaas <bhelgaas@google.com> | 2014-01-13 18:47:08 -0500 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2014-01-13 18:47:08 -0500 |
| commit | 597db6f38c4bcb90406d4e2f56446ba5a5dc20c6 (patch) | |
| tree | 82cb8a6e1cec2df8adaf527b92667a4c5ba29254 | |
| parent | 6b9bd1e3ee8f23b55d407becf4f6f422ec4610f2 (diff) | |
| parent | 0b950f0f3c67e42f18c655a3ab3e36ea192635bb (diff) | |
Merge branch 'pci/dead-code' into next
* pci/dead-code:
PCI: Make local functions static
PCI: Remove unused alloc_pci_dev()
PCI: Remove unused pci_renumber_slot()
PCI: Remove unused pcie_aspm_enabled()
PCI: Remove unused pci_vpd_truncate()
PCI: Remove unused ID-Based Ordering support
PCI: Remove unused Optimized Buffer Flush/Fill support
PCI: Remove unused Latency Tolerance Reporting support
PCI: Removed unused parts of Page Request Interface support
Conflicts:
drivers/pci/pci.c
include/linux/pci.h
| -rw-r--r-- | drivers/pci/access.c | 24 | ||||
| -rw-r--r-- | drivers/pci/ats.c | 82 | ||||
| -rw-r--r-- | drivers/pci/hotplug/pciehp.h | 1 | ||||
| -rw-r--r-- | drivers/pci/hotplug/pciehp_core.c | 2 | ||||
| -rw-r--r-- | drivers/pci/pci.c | 286 | ||||
| -rw-r--r-- | drivers/pci/pci.h | 2 | ||||
| -rw-r--r-- | drivers/pci/pcie/aspm.c | 12 | ||||
| -rw-r--r-- | drivers/pci/probe.c | 117 | ||||
| -rw-r--r-- | drivers/pci/slot.c | 26 | ||||
| -rw-r--r-- | include/linux/pci-ats.h | 17 | ||||
| -rw-r--r-- | include/linux/pci.h | 43 |
11 files changed, 82 insertions, 530 deletions
diff --git a/drivers/pci/access.c b/drivers/pci/access.c index 0857ca981fae..7f8b78c08879 100644 --- a/drivers/pci/access.c +++ b/drivers/pci/access.c | |||
| @@ -381,30 +381,6 @@ int pci_vpd_pci22_init(struct pci_dev *dev) | |||
| 381 | } | 381 | } |
| 382 | 382 | ||
| 383 | /** | 383 | /** |
| 384 | * pci_vpd_truncate - Set available Vital Product Data size | ||
| 385 | * @dev: pci device struct | ||
| 386 | * @size: available memory in bytes | ||
| 387 | * | ||
| 388 | * Adjust size of available VPD area. | ||
| 389 | */ | ||
| 390 | int pci_vpd_truncate(struct pci_dev *dev, size_t size) | ||
| 391 | { | ||
| 392 | if (!dev->vpd) | ||
| 393 | return -EINVAL; | ||
| 394 | |||
| 395 | /* limited by the access method */ | ||
| 396 | if (size > dev->vpd->len) | ||
| 397 | return -EINVAL; | ||
| 398 | |||
| 399 | dev->vpd->len = size; | ||
| 400 | if (dev->vpd->attr) | ||
| 401 | dev->vpd->attr->size = size; | ||
| 402 | |||
| 403 | return 0; | ||
| 404 | } | ||
| 405 | EXPORT_SYMBOL(pci_vpd_truncate); | ||
| 406 | |||
| 407 | /** | ||
| 408 | * pci_cfg_access_lock - Lock PCI config reads/writes | 384 | * pci_cfg_access_lock - Lock PCI config reads/writes |
| 409 | * @dev: pci device struct | 385 | * @dev: pci device struct |
| 410 | * | 386 | * |
diff --git a/drivers/pci/ats.c b/drivers/pci/ats.c index e52d7ffa38b9..a8099d4d0c9d 100644 --- a/drivers/pci/ats.c +++ b/drivers/pci/ats.c | |||
| @@ -235,27 +235,6 @@ void pci_disable_pri(struct pci_dev *pdev) | |||
| 235 | EXPORT_SYMBOL_GPL(pci_disable_pri); | 235 | EXPORT_SYMBOL_GPL(pci_disable_pri); |
| 236 | 236 | ||
| 237 | /** | 237 | /** |
| 238 | * pci_pri_enabled - Checks if PRI capability is enabled | ||
| 239 | * @pdev: PCI device structure | ||
| 240 | * | ||
| 241 | * Returns true if PRI is enabled on the device, false otherwise | ||
| 242 | */ | ||
| 243 | bool pci_pri_enabled(struct pci_dev *pdev) | ||
| 244 | { | ||
| 245 | u16 control; | ||
| 246 | int pos; | ||
| 247 | |||
| 248 | pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI); | ||
| 249 | if (!pos) | ||
| 250 | return false; | ||
| 251 | |||
| 252 | pci_read_config_word(pdev, pos + PCI_PRI_CTRL, &control); | ||
| 253 | |||
| 254 | return (control & PCI_PRI_CTRL_ENABLE) ? true : false; | ||
| 255 | } | ||
| 256 | EXPORT_SYMBOL_GPL(pci_pri_enabled); | ||
| 257 | |||
| 258 | /** | ||
| 259 | * pci_reset_pri - Resets device's PRI state | 238 | * pci_reset_pri - Resets device's PRI state |
| 260 | * @pdev: PCI device structure | 239 | * @pdev: PCI device structure |
| 261 | * | 240 | * |
| @@ -282,67 +261,6 @@ int pci_reset_pri(struct pci_dev *pdev) | |||
| 282 | return 0; | 261 | return 0; |
| 283 | } | 262 | } |
| 284 | EXPORT_SYMBOL_GPL(pci_reset_pri); | 263 | EXPORT_SYMBOL_GPL(pci_reset_pri); |
| 285 | |||
| 286 | /** | ||
| 287 | * pci_pri_stopped - Checks whether the PRI capability is stopped | ||
| 288 | * @pdev: PCI device structure | ||
| 289 | * | ||
| 290 | * Returns true if the PRI capability on the device is disabled and the | ||
| 291 | * device has no outstanding PRI requests, false otherwise. The device | ||
| 292 | * indicates this via the STOPPED bit in the status register of the | ||
| 293 | * capability. | ||
| 294 | * The device internal state can be cleared by resetting the PRI state | ||
| 295 | * with pci_reset_pri(). This can force the capability into the STOPPED | ||
| 296 | * state. | ||
| 297 | */ | ||
| 298 | bool pci_pri_stopped(struct pci_dev *pdev) | ||
| 299 | { | ||
| 300 | u16 control, status; | ||
| 301 | int pos; | ||
| 302 | |||
| 303 | pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI); | ||
| 304 | if (!pos) | ||
| 305 | return true; | ||
| 306 | |||
| 307 | pci_read_config_word(pdev, pos + PCI_PRI_CTRL, &control); | ||
| 308 | pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status); | ||
| 309 | |||
| 310 | if (control & PCI_PRI_CTRL_ENABLE) | ||
| 311 | return false; | ||
| 312 | |||
| 313 | return (status & PCI_PRI_STATUS_STOPPED) ? true : false; | ||
| 314 | } | ||
| 315 | EXPORT_SYMBOL_GPL(pci_pri_stopped); | ||
| 316 | |||
| 317 | /** | ||
| 318 | * pci_pri_status - Request PRI status of a device | ||
| 319 | * @pdev: PCI device structure | ||
| 320 | * | ||
| 321 | * Returns negative value on failure, status on success. The status can | ||
| 322 | * be checked against status-bits. Supported bits are currently: | ||
| 323 | * PCI_PRI_STATUS_RF: Response failure | ||
| 324 | * PCI_PRI_STATUS_UPRGI: Unexpected Page Request Group Index | ||
| 325 | * PCI_PRI_STATUS_STOPPED: PRI has stopped | ||
| 326 | */ | ||
| 327 | int pci_pri_status(struct pci_dev *pdev) | ||
| 328 | { | ||
| 329 | u16 status, control; | ||
| 330 | int pos; | ||
| 331 | |||
| 332 | pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_PRI); | ||
| 333 | if (!pos) | ||
| 334 | return -EINVAL; | ||
| 335 | |||
| 336 | pci_read_config_word(pdev, pos + PCI_PRI_CTRL, &control); | ||
| 337 | pci_read_config_word(pdev, pos + PCI_PRI_STATUS, &status); | ||
| 338 | |||
| 339 | /* Stopped bit is undefined when enable == 1, so clear it */ | ||
| 340 | if (control & PCI_PRI_CTRL_ENABLE) | ||
| 341 | status &= ~PCI_PRI_STATUS_STOPPED; | ||
| 342 | |||
| 343 | return status; | ||
| 344 | } | ||
| 345 | EXPORT_SYMBOL_GPL(pci_pri_status); | ||
| 346 | #endif /* CONFIG_PCI_PRI */ | 264 | #endif /* CONFIG_PCI_PRI */ |
| 347 | 265 | ||
| 348 | #ifdef CONFIG_PCI_PASID | 266 | #ifdef CONFIG_PCI_PASID |
diff --git a/drivers/pci/hotplug/pciehp.h b/drivers/pci/hotplug/pciehp.h index ffe6a6b336cf..ccb0925bcd7b 100644 --- a/drivers/pci/hotplug/pciehp.h +++ b/drivers/pci/hotplug/pciehp.h | |||
| @@ -43,7 +43,6 @@ | |||
| 43 | extern bool pciehp_poll_mode; | 43 | extern bool pciehp_poll_mode; |
| 44 | extern int pciehp_poll_time; | 44 | extern int pciehp_poll_time; |
| 45 | extern bool pciehp_debug; | 45 | extern bool pciehp_debug; |
| 46 | extern bool pciehp_force; | ||
| 47 | 46 | ||
| 48 | #define dbg(format, arg...) \ | 47 | #define dbg(format, arg...) \ |
| 49 | do { \ | 48 | do { \ |
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 143a389d81fa..53b58debc288 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | bool pciehp_debug; | 41 | bool pciehp_debug; |
| 42 | bool pciehp_poll_mode; | 42 | bool pciehp_poll_mode; |
| 43 | int pciehp_poll_time; | 43 | int pciehp_poll_time; |
| 44 | bool pciehp_force; | 44 | static bool pciehp_force; |
| 45 | 45 | ||
| 46 | #define DRIVER_VERSION "0.4" | 46 | #define DRIVER_VERSION "0.4" |
| 47 | #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>" | 47 | #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>" |
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 508e560b7d2a..1cbd590cf1d1 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
| @@ -683,6 +683,28 @@ static int pci_platform_power_transition(struct pci_dev *dev, pci_power_t state) | |||
| 683 | } | 683 | } |
| 684 | 684 | ||
| 685 | /** | 685 | /** |
| 686 | * pci_wakeup - Wake up a PCI device | ||
| 687 | * @pci_dev: Device to handle. | ||
| 688 | * @ign: ignored parameter | ||
| 689 | */ | ||
| 690 | static int pci_wakeup(struct pci_dev *pci_dev, void *ign) | ||
| 691 | { | ||
| 692 | pci_wakeup_event(pci_dev); | ||
| 693 | pm_request_resume(&pci_dev->dev); | ||
| 694 | return 0; | ||
| 695 | } | ||
| 696 | |||
| 697 | /** | ||
| 698 | * pci_wakeup_bus - Walk given bus and wake up devices on it | ||
| 699 | * @bus: Top bus of the subtree to walk. | ||
| 700 | */ | ||
| 701 | static void pci_wakeup_bus(struct pci_bus *bus) | ||
| 702 | { | ||
| 703 | if (bus) | ||
| 704 | pci_walk_bus(bus, pci_wakeup, NULL); | ||
| 705 | } | ||
| 706 | |||
| 707 | /** | ||
| 686 | * __pci_start_power_transition - Start power transition of a PCI device | 708 | * __pci_start_power_transition - Start power transition of a PCI device |
| 687 | * @dev: PCI device to handle. | 709 | * @dev: PCI device to handle. |
| 688 | * @state: State to put the device into. | 710 | * @state: State to put the device into. |
| @@ -1110,7 +1132,8 @@ EXPORT_SYMBOL_GPL(pci_store_saved_state); | |||
| 1110 | * @dev: PCI device that we're dealing with | 1132 | * @dev: PCI device that we're dealing with |
| 1111 | * @state: Saved state returned from pci_store_saved_state() | 1133 | * @state: Saved state returned from pci_store_saved_state() |
| 1112 | */ | 1134 | */ |
| 1113 | int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state) | 1135 | static int pci_load_saved_state(struct pci_dev *dev, |
| 1136 | struct pci_saved_state *state) | ||
| 1114 | { | 1137 | { |
| 1115 | struct pci_cap_saved_data *cap; | 1138 | struct pci_cap_saved_data *cap; |
| 1116 | 1139 | ||
| @@ -1138,7 +1161,6 @@ int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state) | |||
| 1138 | dev->state_saved = true; | 1161 | dev->state_saved = true; |
| 1139 | return 0; | 1162 | return 0; |
| 1140 | } | 1163 | } |
| 1141 | EXPORT_SYMBOL_GPL(pci_load_saved_state); | ||
| 1142 | 1164 | ||
| 1143 | /** | 1165 | /** |
| 1144 | * pci_load_and_free_saved_state - Reload the save state pointed to by state, | 1166 | * pci_load_and_free_saved_state - Reload the save state pointed to by state, |
| @@ -1570,27 +1592,6 @@ void pci_pme_wakeup_bus(struct pci_bus *bus) | |||
| 1570 | pci_walk_bus(bus, pci_pme_wakeup, (void *)true); | 1592 | pci_walk_bus(bus, pci_pme_wakeup, (void *)true); |
| 1571 | } | 1593 | } |
| 1572 | 1594 | ||
| 1573 | /** | ||
| 1574 | * pci_wakeup - Wake up a PCI device | ||
| 1575 | * @pci_dev: Device to handle. | ||
| 1576 | * @ign: ignored parameter | ||
| 1577 | */ | ||
| 1578 | static int pci_wakeup(struct pci_dev *pci_dev, void *ign) | ||
| 1579 | { | ||
| 1580 | pci_wakeup_event(pci_dev); | ||
| 1581 | pm_request_resume(&pci_dev->dev); | ||
| 1582 | return 0; | ||
| 1583 | } | ||
| 1584 | |||
| 1585 | /** | ||
| 1586 | * pci_wakeup_bus - Walk given bus and wake up devices on it | ||
| 1587 | * @bus: Top bus of the subtree to walk. | ||
| 1588 | */ | ||
| 1589 | void pci_wakeup_bus(struct pci_bus *bus) | ||
| 1590 | { | ||
| 1591 | if (bus) | ||
| 1592 | pci_walk_bus(bus, pci_wakeup, NULL); | ||
| 1593 | } | ||
| 1594 | 1595 | ||
| 1595 | /** | 1596 | /** |
| 1596 | * pci_pme_capable - check the capability of PCI device to generate PME# | 1597 | * pci_pme_capable - check the capability of PCI device to generate PME# |
| @@ -1804,7 +1805,7 @@ int pci_wake_from_d3(struct pci_dev *dev, bool enable) | |||
| 1804 | * If the platform can't manage @dev, return the deepest state from which it | 1805 | * If the platform can't manage @dev, return the deepest state from which it |
| 1805 | * can generate wake events, based on any available PME info. | 1806 | * can generate wake events, based on any available PME info. |
| 1806 | */ | 1807 | */ |
| 1807 | pci_power_t pci_target_state(struct pci_dev *dev) | 1808 | static pci_power_t pci_target_state(struct pci_dev *dev) |
| 1808 | { | 1809 | { |
| 1809 | pci_power_t target_state = PCI_D3hot; | 1810 | pci_power_t target_state = PCI_D3hot; |
| 1810 | 1811 | ||
| @@ -2168,242 +2169,6 @@ void pci_configure_ari(struct pci_dev *dev) | |||
| 2168 | } | 2169 | } |
| 2169 | } | 2170 | } |
| 2170 | 2171 | ||
| 2171 | /** | ||
| 2172 | * pci_enable_ido - enable ID-based Ordering on a device | ||
| 2173 | * @dev: the PCI device | ||
| 2174 | * @type: which types of IDO to enable | ||
| 2175 | * | ||
| 2176 | * Enable ID-based ordering on @dev. @type can contain the bits | ||
| 2177 | * %PCI_EXP_IDO_REQUEST and/or %PCI_EXP_IDO_COMPLETION to indicate | ||
| 2178 | * which types of transactions are allowed to be re-ordered. | ||
| 2179 | */ | ||
| 2180 | void pci_enable_ido(struct pci_dev *dev, unsigned long type) | ||
| 2181 | { | ||
| 2182 | u16 ctrl = 0; | ||
| 2183 | |||
| 2184 | if (type & PCI_EXP_IDO_REQUEST) | ||
| 2185 | ctrl |= PCI_EXP_DEVCTL2_IDO_REQ_EN; | ||
| 2186 | if (type & PCI_EXP_IDO_COMPLETION) | ||
| 2187 | ctrl |= PCI_EXP_DEVCTL2_IDO_CMP_EN; | ||
| 2188 | if (ctrl) | ||
| 2189 | pcie_capability_set_word(dev, PCI_EXP_DEVCTL2, ctrl); | ||
| 2190 | } | ||
| 2191 | EXPORT_SYMBOL(pci_enable_ido); | ||
| 2192 | |||
| 2193 | /** | ||
| 2194 | * pci_disable_ido - disable ID-based ordering on a device | ||
| 2195 | * @dev: the PCI device | ||
| 2196 | * @type: which types of IDO to disable | ||
| 2197 | */ | ||
| 2198 | void pci_disable_ido(struct pci_dev *dev, unsigned long type) | ||
| 2199 | { | ||
| 2200 | u16 ctrl = 0; | ||
| 2201 | |||
| 2202 | if (type & PCI_EXP_IDO_REQUEST) | ||
| 2203 | ctrl |= PCI_EXP_DEVCTL2_IDO_REQ_EN; | ||
| 2204 | if (type & PCI_EXP_IDO_COMPLETION) | ||
| 2205 | ctrl |= PCI_EXP_DEVCTL2_IDO_CMP_EN; | ||
| 2206 | if (ctrl) | ||
| 2207 | pcie_capability_clear_word(dev, PCI_EXP_DEVCTL2, ctrl); | ||
| 2208 | } | ||
| 2209 | EXPORT_SYMBOL(pci_disable_ido); | ||
| 2210 | |||
| 2211 | /** | ||
| 2212 | * pci_enable_obff - enable optimized buffer flush/fill | ||
| 2213 | * @dev: PCI device | ||
| 2214 | * @type: type of signaling to use | ||
| 2215 | * | ||
| 2216 | * Try to enable @type OBFF signaling on @dev. It will try using WAKE# | ||
| 2217 | * signaling if possible, falling back to message signaling only if | ||
| 2218 | * WAKE# isn't supported. @type should indicate whether the PCIe link | ||
| 2219 | * be brought out of L0s or L1 to send the message. It should be either | ||
| 2220 | * %PCI_EXP_OBFF_SIGNAL_ALWAYS or %PCI_OBFF_SIGNAL_L0. | ||
| 2221 | * | ||
| 2222 | * If your device can benefit from receiving all messages, even at the | ||
| 2223 | * power cost of bringing the link back up from a low power state, use | ||
| 2224 | * %PCI_EXP_OBFF_SIGNAL_ALWAYS. Otherwise, use %PCI_OBFF_SIGNAL_L0 (the | ||
| 2225 | * preferred type). | ||
| 2226 | * | ||
| 2227 | * RETURNS: | ||
| 2228 | * Zero on success, appropriate error number on failure. | ||
| 2229 | */ | ||
| 2230 | int pci_enable_obff(struct pci_dev *dev, enum pci_obff_signal_type type) | ||
| 2231 | { | ||
| 2232 | u32 cap; | ||
| 2233 | u16 ctrl; | ||
| 2234 | int ret; | ||
| 2235 | |||
| 2236 | pcie_capability_read_dword(dev, PCI_EXP_DEVCAP2, &cap); | ||
| 2237 | if (!(cap & PCI_EXP_DEVCAP2_OBFF_MASK)) | ||
| 2238 | return -ENOTSUPP; /* no OBFF support at all */ | ||
| 2239 | |||
| 2240 | /* Make sure the topology supports OBFF as well */ | ||
| 2241 | if (dev->bus->self) { | ||
| 2242 | ret = pci_enable_obff(dev->bus->self, type); | ||
| 2243 | if (ret) | ||
| 2244 | return ret; | ||
| 2245 | } | ||
| 2246 | |||
| 2247 | pcie_capability_read_word(dev, PCI_EXP_DEVCTL2, &ctrl); | ||
| 2248 | if (cap & PCI_EXP_DEVCAP2_OBFF_WAKE) | ||
| 2249 | ctrl |= PCI_EXP_DEVCTL2_OBFF_WAKE_EN; | ||
| 2250 | else { | ||
| 2251 | switch (type) { | ||
| 2252 | case PCI_EXP_OBFF_SIGNAL_L0: | ||
| 2253 | if (!(ctrl & PCI_EXP_DEVCTL2_OBFF_WAKE_EN)) | ||
| 2254 | ctrl |= PCI_EXP_DEVCTL2_OBFF_MSGA_EN; | ||
| 2255 | break; | ||
| 2256 | case PCI_EXP_OBFF_SIGNAL_ALWAYS: | ||
| 2257 | ctrl &= ~PCI_EXP_DEVCTL2_OBFF_WAKE_EN; | ||
| 2258 | ctrl |= PCI_EXP_DEVCTL2_OBFF_MSGB_EN; | ||
| 2259 | break; | ||
| 2260 | default: | ||
| 2261 | WARN(1, "bad OBFF signal type\n"); | ||
| 2262 | return -ENOTSUPP; | ||
| 2263 | } | ||
| 2264 | } | ||
| 2265 | pcie_capability_write_word(dev, PCI_EXP_DEVCTL2, ctrl); | ||
| 2266 | |||
| 2267 | return 0; | ||
| 2268 | } | ||
| 2269 | EXPORT_SYMBOL(pci_enable_obff); | ||
| 2270 | |||
| 2271 | /** | ||
| 2272 | * pci_disable_obff - disable optimized buffer flush/fill | ||
| 2273 | * @dev: PCI device | ||
| 2274 | * | ||
| 2275 | * Disable OBFF on @dev. | ||
| 2276 | */ | ||
| 2277 | void pci_disable_obff(struct pci_dev *dev) | ||
| 2278 | { | ||
| 2279 | pcie_capability_clear_word(dev, PCI_EXP_DEVCTL2, | ||
| 2280 | PCI_EXP_DEVCTL2_OBFF_WAKE_EN); | ||
| 2281 | } | ||
| 2282 | EXPORT_SYMBOL(pci_disable_obff); | ||
| 2283 | |||
| 2284 | /** | ||
| 2285 | * pci_ltr_supported - check whether a device supports LTR | ||
| 2286 | * @dev: PCI device | ||
| 2287 | * | ||
| 2288 | * RETURNS: | ||
| 2289 | * True if @dev supports latency tolerance reporting, false otherwise. | ||
| 2290 | */ | ||
| 2291 | static bool pci_ltr_supported(struct pci_dev *dev) | ||
| 2292 | { | ||
| 2293 | u32 cap; | ||
| 2294 | |||
| 2295 | pcie_capability_read_dword(dev, PCI_EXP_DEVCAP2, &cap); | ||
| 2296 | |||
| 2297 | return cap & PCI_EXP_DEVCAP2_LTR; | ||
| 2298 | } | ||
| 2299 | |||
| 2300 | /** | ||
| 2301 | * pci_enable_ltr - enable latency tolerance reporting | ||
| 2302 | * @dev: PCI device | ||
| 2303 | * | ||
| 2304 | * Enable LTR on @dev if possible, which means enabling it first on | ||
| 2305 | * upstream ports. | ||
| 2306 | * | ||
| 2307 | * RETURNS: | ||
| 2308 | * Zero on success, errno on failure. | ||
| 2309 | */ | ||
| 2310 | int pci_enable_ltr(struct pci_dev *dev) | ||
| 2311 | { | ||
| 2312 | int ret; | ||
| 2313 | |||
| 2314 | /* Only primary function can enable/disable LTR */ | ||
| 2315 | if (PCI_FUNC(dev->devfn) != 0) | ||
| 2316 | return -EINVAL; | ||
| 2317 | |||
| 2318 | if (!pci_ltr_supported(dev)) | ||
| 2319 | return -ENOTSUPP; | ||
| 2320 | |||
| 2321 | /* Enable upstream ports first */ | ||
| 2322 | if (dev->bus->self) { | ||
| 2323 | ret = pci_enable_ltr(dev->bus->self); | ||
| 2324 | if (ret) | ||
| 2325 | return ret; | ||
| 2326 | } | ||
| 2327 | |||
| 2328 | return pcie_capability_set_word(dev, PCI_EXP_DEVCTL2, | ||
| 2329 | PCI_EXP_DEVCTL2_LTR_EN); | ||
| 2330 | } | ||
| 2331 | EXPORT_SYMBOL(pci_enable_ltr); | ||
| 2332 | |||
| 2333 | /** | ||
| 2334 | * pci_disable_ltr - disable latency tolerance reporting | ||
| 2335 | * @dev: PCI device | ||
| 2336 | */ | ||
| 2337 | void pci_disable_ltr(struct pci_dev *dev) | ||
| 2338 | { | ||
| 2339 | /* Only primary function can enable/disable LTR */ | ||
| 2340 | if (PCI_FUNC(dev->devfn) != 0) | ||
| 2341 | return; | ||
| 2342 | |||
| 2343 | if (!pci_ltr_supported(dev)) | ||
| 2344 | return; | ||
| 2345 | |||
| 2346 | pcie_capability_clear_word(dev, PCI_EXP_DEVCTL2, | ||
| 2347 | PCI_EXP_DEVCTL2_LTR_EN); | ||
| 2348 | } | ||
| 2349 | EXPORT_SYMBOL(pci_disable_ltr); | ||
| 2350 | |||
| 2351 | static int __pci_ltr_scale(int *val) | ||
| 2352 | { | ||
| 2353 | int scale = 0; | ||
| 2354 | |||
| 2355 | while (*val > 1023) { | ||
| 2356 | *val = (*val + 31) / 32; | ||
| 2357 | scale++; | ||
| 2358 | } | ||
| 2359 | return scale; | ||
| 2360 | } | ||
| 2361 | |||
| 2362 | /** | ||
| 2363 | * pci_set_ltr - set LTR latency values | ||
| 2364 | * @dev: PCI device | ||
| 2365 | * @snoop_lat_ns: snoop latency in nanoseconds | ||
| 2366 | * @nosnoop_lat_ns: nosnoop latency in nanoseconds | ||
| 2367 | * | ||
| 2368 | * Figure out the scale and set the LTR values accordingly. | ||
| 2369 | */ | ||
| 2370 | int pci_set_ltr(struct pci_dev *dev, int snoop_lat_ns, int nosnoop_lat_ns) | ||
| 2371 | { | ||
| 2372 | int pos, ret, snoop_scale, nosnoop_scale; | ||
| 2373 | u16 val; | ||
| 2374 | |||
| 2375 | if (!pci_ltr_supported(dev)) | ||
| 2376 | return -ENOTSUPP; | ||
| 2377 | |||
| 2378 | snoop_scale = __pci_ltr_scale(&snoop_lat_ns); | ||
| 2379 | nosnoop_scale = __pci_ltr_scale(&nosnoop_lat_ns); | ||
| 2380 | |||
| 2381 | if (snoop_lat_ns > PCI_LTR_VALUE_MASK || | ||
| 2382 | nosnoop_lat_ns > PCI_LTR_VALUE_MASK) | ||
| 2383 | return -EINVAL; | ||
| 2384 | |||
| 2385 | if ((snoop_scale > (PCI_LTR_SCALE_MASK >> PCI_LTR_SCALE_SHIFT)) || | ||
| 2386 | (nosnoop_scale > (PCI_LTR_SCALE_MASK >> PCI_LTR_SCALE_SHIFT))) | ||
| 2387 | return -EINVAL; | ||
| 2388 | |||
| 2389 | pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_LTR); | ||
| 2390 | if (!pos) | ||
| 2391 | return -ENOTSUPP; | ||
| 2392 | |||
| 2393 | val = (snoop_scale << PCI_LTR_SCALE_SHIFT) | snoop_lat_ns; | ||
| 2394 | ret = pci_write_config_word(dev, pos + PCI_LTR_MAX_SNOOP_LAT, val); | ||
| 2395 | if (ret != 4) | ||
| 2396 | return -EIO; | ||
| 2397 | |||
| 2398 | val = (nosnoop_scale << PCI_LTR_SCALE_SHIFT) | nosnoop_lat_ns; | ||
| 2399 | ret = pci_write_config_word(dev, pos + PCI_LTR_MAX_NOSNOOP_LAT, val); | ||
| 2400 | if (ret != 4) | ||
| 2401 | return -EIO; | ||
| 2402 | |||
| 2403 | return 0; | ||
| 2404 | } | ||
| 2405 | EXPORT_SYMBOL(pci_set_ltr); | ||
| 2406 | |||
| 2407 | static int pci_acs_enable; | 2172 | static int pci_acs_enable; |
| 2408 | 2173 | ||
| 2409 | /** | 2174 | /** |
| @@ -4482,7 +4247,6 @@ EXPORT_SYMBOL(pci_restore_state); | |||
| 4482 | EXPORT_SYMBOL(pci_pme_capable); | 4247 | EXPORT_SYMBOL(pci_pme_capable); |
| 4483 | EXPORT_SYMBOL(pci_pme_active); | 4248 | EXPORT_SYMBOL(pci_pme_active); |
| 4484 | EXPORT_SYMBOL(pci_wake_from_d3); | 4249 | EXPORT_SYMBOL(pci_wake_from_d3); |
| 4485 | EXPORT_SYMBOL(pci_target_state); | ||
| 4486 | EXPORT_SYMBOL(pci_prepare_to_sleep); | 4250 | EXPORT_SYMBOL(pci_prepare_to_sleep); |
| 4487 | EXPORT_SYMBOL(pci_back_from_sleep); | 4251 | EXPORT_SYMBOL(pci_back_from_sleep); |
| 4488 | EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state); | 4252 | EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state); |
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 9c91ecc1301b..4df38df224f4 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h | |||
| @@ -6,7 +6,6 @@ | |||
| 6 | #define PCI_CFG_SPACE_SIZE 256 | 6 | #define PCI_CFG_SPACE_SIZE 256 |
| 7 | #define PCI_CFG_SPACE_EXP_SIZE 4096 | 7 | #define PCI_CFG_SPACE_EXP_SIZE 4096 |
| 8 | 8 | ||
| 9 | extern const unsigned char pcix_bus_speed[]; | ||
| 10 | extern const unsigned char pcie_link_speed[]; | 9 | extern const unsigned char pcie_link_speed[]; |
| 11 | 10 | ||
| 12 | /* Functions internal to the PCI core code */ | 11 | /* Functions internal to the PCI core code */ |
| @@ -68,7 +67,6 @@ void pci_power_up(struct pci_dev *dev); | |||
| 68 | void pci_disable_enabled_device(struct pci_dev *dev); | 67 | void pci_disable_enabled_device(struct pci_dev *dev); |
| 69 | int pci_finish_runtime_suspend(struct pci_dev *dev); | 68 | int pci_finish_runtime_suspend(struct pci_dev *dev); |
| 70 | int __pci_pme_wakeup(struct pci_dev *dev, void *ign); | 69 | int __pci_pme_wakeup(struct pci_dev *dev, void *ign); |
| 71 | void pci_wakeup_bus(struct pci_bus *bus); | ||
| 72 | void pci_config_pm_runtime_get(struct pci_dev *dev); | 70 | void pci_config_pm_runtime_get(struct pci_dev *dev); |
| 73 | void pci_config_pm_runtime_put(struct pci_dev *dev); | 71 | void pci_config_pm_runtime_put(struct pci_dev *dev); |
| 74 | void pci_pm_init(struct pci_dev *dev); | 72 | void pci_pm_init(struct pci_dev *dev); |
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index f1272dc54de1..e1e7026b838d 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c | |||
| @@ -984,18 +984,6 @@ void pcie_no_aspm(void) | |||
| 984 | } | 984 | } |
| 985 | } | 985 | } |
| 986 | 986 | ||
| 987 | /** | ||
| 988 | * pcie_aspm_enabled - is PCIe ASPM enabled? | ||
| 989 | * | ||
| 990 | * Returns true if ASPM has not been disabled by the command-line option | ||
| 991 | * pcie_aspm=off. | ||
| 992 | **/ | ||
| 993 | int pcie_aspm_enabled(void) | ||
| 994 | { | ||
| 995 | return !aspm_disabled; | ||
| 996 | } | ||
| 997 | EXPORT_SYMBOL(pcie_aspm_enabled); | ||
| 998 | |||
| 999 | bool pcie_aspm_support_enabled(void) | 987 | bool pcie_aspm_support_enabled(void) |
| 1000 | { | 988 | { |
| 1001 | return aspm_support_enabled; | 989 | return aspm_support_enabled; |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 23cdfac0bdb3..c86c8638d3c4 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */ | 16 | #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */ |
| 17 | #define CARDBUS_RESERVE_BUSNR 3 | 17 | #define CARDBUS_RESERVE_BUSNR 3 |
| 18 | 18 | ||
| 19 | struct resource busn_resource = { | 19 | static struct resource busn_resource = { |
| 20 | .name = "PCI busn", | 20 | .name = "PCI busn", |
| 21 | .start = 0, | 21 | .start = 0, |
| 22 | .end = 255, | 22 | .end = 255, |
| @@ -518,7 +518,7 @@ static struct pci_host_bridge *pci_alloc_host_bridge(struct pci_bus *b) | |||
| 518 | return bridge; | 518 | return bridge; |
| 519 | } | 519 | } |
| 520 | 520 | ||
| 521 | const unsigned char pcix_bus_speed[] = { | 521 | static const unsigned char pcix_bus_speed[] = { |
| 522 | PCI_SPEED_UNKNOWN, /* 0 */ | 522 | PCI_SPEED_UNKNOWN, /* 0 */ |
| 523 | PCI_SPEED_66MHz_PCIX, /* 1 */ | 523 | PCI_SPEED_66MHz_PCIX, /* 1 */ |
| 524 | PCI_SPEED_100MHz_PCIX, /* 2 */ | 524 | PCI_SPEED_100MHz_PCIX, /* 2 */ |
| @@ -999,6 +999,60 @@ void set_pcie_hotplug_bridge(struct pci_dev *pdev) | |||
| 999 | pdev->is_hotplug_bridge = 1; | 999 | pdev->is_hotplug_bridge = 1; |
| 1000 | } | 1000 | } |
| 1001 | 1001 | ||
| 1002 | |||
| 1003 | /** | ||
| 1004 | * pci_cfg_space_size - get the configuration space size of the PCI device. | ||
| 1005 | * @dev: PCI device | ||
| 1006 | * | ||
| 1007 | * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices | ||
| 1008 | * have 4096 bytes. Even if the device is capable, that doesn't mean we can | ||
| 1009 | * access it. Maybe we don't have a way to generate extended config space | ||
| 1010 | * accesses, or the device is behind a reverse Express bridge. So we try | ||
| 1011 | * reading the dword at 0x100 which must either be 0 or a valid extended | ||
| 1012 | * capability header. | ||
| 1013 | */ | ||
| 1014 | static int pci_cfg_space_size_ext(struct pci_dev *dev) | ||
| 1015 | { | ||
| 1016 | u32 status; | ||
| 1017 | int pos = PCI_CFG_SPACE_SIZE; | ||
| 1018 | |||
| 1019 | if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL) | ||
| 1020 | goto fail; | ||
| 1021 | if (status == 0xffffffff) | ||
| 1022 | goto fail; | ||
| 1023 | |||
| 1024 | return PCI_CFG_SPACE_EXP_SIZE; | ||
| 1025 | |||
| 1026 | fail: | ||
| 1027 | return PCI_CFG_SPACE_SIZE; | ||
| 1028 | } | ||
| 1029 | |||
| 1030 | int pci_cfg_space_size(struct pci_dev *dev) | ||
| 1031 | { | ||
| 1032 | int pos; | ||
| 1033 | u32 status; | ||
| 1034 | u16 class; | ||
| 1035 | |||
| 1036 | class = dev->class >> 8; | ||
| 1037 | if (class == PCI_CLASS_BRIDGE_HOST) | ||
| 1038 | return pci_cfg_space_size_ext(dev); | ||
| 1039 | |||
| 1040 | if (!pci_is_pcie(dev)) { | ||
| 1041 | pos = pci_find_capability(dev, PCI_CAP_ID_PCIX); | ||
| 1042 | if (!pos) | ||
| 1043 | goto fail; | ||
| 1044 | |||
| 1045 | pci_read_config_dword(dev, pos + PCI_X_STATUS, &status); | ||
| 1046 | if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ))) | ||
| 1047 | goto fail; | ||
| 1048 | } | ||
| 1049 | |||
| 1050 | return pci_cfg_space_size_ext(dev); | ||
| 1051 | |||
| 1052 | fail: | ||
| 1053 | return PCI_CFG_SPACE_SIZE; | ||
| 1054 | } | ||
| 1055 | |||
| 1002 | #define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED) | 1056 | #define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED) |
| 1003 | 1057 | ||
| 1004 | /** | 1058 | /** |
| @@ -1190,59 +1244,6 @@ static void pci_release_dev(struct device *dev) | |||
| 1190 | kfree(pci_dev); | 1244 | kfree(pci_dev); |
| 1191 | } | 1245 | } |
| 1192 | 1246 | ||
| 1193 | /** | ||
| 1194 | * pci_cfg_space_size - get the configuration space size of the PCI device. | ||
| 1195 | * @dev: PCI device | ||
| 1196 | * | ||
| 1197 | * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices | ||
| 1198 | * have 4096 bytes. Even if the device is capable, that doesn't mean we can | ||
| 1199 | * access it. Maybe we don't have a way to generate extended config space | ||
| 1200 | * accesses, or the device is behind a reverse Express bridge. So we try | ||
| 1201 | * reading the dword at 0x100 which must either be 0 or a valid extended | ||
| 1202 | * capability header. | ||
| 1203 | */ | ||
| 1204 | int pci_cfg_space_size_ext(struct pci_dev *dev) | ||
| 1205 | { | ||
| 1206 | u32 status; | ||
| 1207 | int pos = PCI_CFG_SPACE_SIZE; | ||
| 1208 | |||
| 1209 | if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL) | ||
| 1210 | goto fail; | ||
| 1211 | if (status == 0xffffffff) | ||
| 1212 | goto fail; | ||
| 1213 | |||
| 1214 | return PCI_CFG_SPACE_EXP_SIZE; | ||
| 1215 | |||
| 1216 | fail: | ||
| 1217 | return PCI_CFG_SPACE_SIZE; | ||
| 1218 | } | ||
| 1219 | |||
| 1220 | int pci_cfg_space_size(struct pci_dev *dev) | ||
| 1221 | { | ||
| 1222 | int pos; | ||
| 1223 | u32 status; | ||
| 1224 | u16 class; | ||
| 1225 | |||
| 1226 | class = dev->class >> 8; | ||
| 1227 | if (class == PCI_CLASS_BRIDGE_HOST) | ||
| 1228 | return pci_cfg_space_size_ext(dev); | ||
| 1229 | |||
| 1230 | if (!pci_is_pcie(dev)) { | ||
| 1231 | pos = pci_find_capability(dev, PCI_CAP_ID_PCIX); | ||
| 1232 | if (!pos) | ||
| 1233 | goto fail; | ||
| 1234 | |||
| 1235 | pci_read_config_dword(dev, pos + PCI_X_STATUS, &status); | ||
| 1236 | if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ))) | ||
| 1237 | goto fail; | ||
| 1238 | } | ||
| 1239 | |||
| 1240 | return pci_cfg_space_size_ext(dev); | ||
| 1241 | |||
| 1242 | fail: | ||
| 1243 | return PCI_CFG_SPACE_SIZE; | ||
| 1244 | } | ||
| 1245 | |||
| 1246 | struct pci_dev *pci_alloc_dev(struct pci_bus *bus) | 1247 | struct pci_dev *pci_alloc_dev(struct pci_bus *bus) |
| 1247 | { | 1248 | { |
| 1248 | struct pci_dev *dev; | 1249 | struct pci_dev *dev; |
| @@ -1259,12 +1260,6 @@ struct pci_dev *pci_alloc_dev(struct pci_bus *bus) | |||
| 1259 | } | 1260 | } |
| 1260 | EXPORT_SYMBOL(pci_alloc_dev); | 1261 | EXPORT_SYMBOL(pci_alloc_dev); |
| 1261 | 1262 | ||
| 1262 | struct pci_dev *alloc_pci_dev(void) | ||
| 1263 | { | ||
| 1264 | return pci_alloc_dev(NULL); | ||
| 1265 | } | ||
| 1266 | EXPORT_SYMBOL(alloc_pci_dev); | ||
| 1267 | |||
| 1268 | bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l, | 1263 | bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l, |
| 1269 | int crs_timeout) | 1264 | int crs_timeout) |
| 1270 | { | 1265 | { |
diff --git a/drivers/pci/slot.c b/drivers/pci/slot.c index 448ca562d1f8..7dd62fa9d0bd 100644 --- a/drivers/pci/slot.c +++ b/drivers/pci/slot.c | |||
| @@ -320,32 +320,6 @@ err: | |||
| 320 | EXPORT_SYMBOL_GPL(pci_create_slot); | 320 | EXPORT_SYMBOL_GPL(pci_create_slot); |
| 321 | 321 | ||
| 322 | /** | 322 | /** |
| 323 | * pci_renumber_slot - update %struct pci_slot -> number | ||
| 324 | * @slot: &struct pci_slot to update | ||
| 325 | * @slot_nr: new number for slot | ||
| 326 | * | ||
| 327 | * The primary purpose of this interface is to allow callers who earlier | ||
| 328 | * created a placeholder slot in pci_create_slot() by passing a -1 as | ||
| 329 | * slot_nr, to update their %struct pci_slot with the correct @slot_nr. | ||
| 330 | */ | ||
| 331 | void pci_renumber_slot(struct pci_slot *slot, int slot_nr) | ||
| 332 | { | ||
| 333 | struct pci_slot *tmp; | ||
| 334 | |||
| 335 | down_write(&pci_bus_sem); | ||
| 336 | |||
| 337 | list_for_each_entry(tmp, &slot->bus->slots, list) { | ||
| 338 | WARN_ON(tmp->number == slot_nr); | ||
| 339 | goto out; | ||
| 340 | } | ||
| 341 | |||
| 342 | slot->number = slot_nr; | ||
| 343 | out: | ||
| 344 | up_write(&pci_bus_sem); | ||
| 345 | } | ||
| 346 | EXPORT_SYMBOL_GPL(pci_renumber_slot); | ||
| 347 | |||
| 348 | /** | ||
| 349 | * pci_destroy_slot - decrement refcount for physical PCI slot | 323 | * pci_destroy_slot - decrement refcount for physical PCI slot |
| 350 | * @slot: struct pci_slot to decrement | 324 | * @slot: struct pci_slot to decrement |
| 351 | * | 325 | * |
diff --git a/include/linux/pci-ats.h b/include/linux/pci-ats.h index 68bcefd7fca0..72031785fe1d 100644 --- a/include/linux/pci-ats.h +++ b/include/linux/pci-ats.h | |||
| @@ -56,10 +56,7 @@ static inline int pci_ats_enabled(struct pci_dev *dev) | |||
| 56 | 56 | ||
| 57 | int pci_enable_pri(struct pci_dev *pdev, u32 reqs); | 57 | int pci_enable_pri(struct pci_dev *pdev, u32 reqs); |
| 58 | void pci_disable_pri(struct pci_dev *pdev); | 58 | void pci_disable_pri(struct pci_dev *pdev); |
| 59 | bool pci_pri_enabled(struct pci_dev *pdev); | ||
| 60 | int pci_reset_pri(struct pci_dev *pdev); | 59 | int pci_reset_pri(struct pci_dev *pdev); |
| 61 | bool pci_pri_stopped(struct pci_dev *pdev); | ||
| 62 | int pci_pri_status(struct pci_dev *pdev); | ||
| 63 | 60 | ||
| 64 | #else /* CONFIG_PCI_PRI */ | 61 | #else /* CONFIG_PCI_PRI */ |
| 65 | 62 | ||
| @@ -72,25 +69,11 @@ static inline void pci_disable_pri(struct pci_dev *pdev) | |||
| 72 | { | 69 | { |
| 73 | } | 70 | } |
| 74 | 71 | ||
| 75 | static inline bool pci_pri_enabled(struct pci_dev *pdev) | ||
| 76 | { | ||
| 77 | return false; | ||
| 78 | } | ||
| 79 | |||
| 80 | static inline int pci_reset_pri(struct pci_dev *pdev) | 72 | static inline int pci_reset_pri(struct pci_dev *pdev) |
| 81 | { | 73 | { |
| 82 | return -ENODEV; | 74 | return -ENODEV; |
| 83 | } | 75 | } |
| 84 | 76 | ||
| 85 | static inline bool pci_pri_stopped(struct pci_dev *pdev) | ||
| 86 | { | ||
| 87 | return true; | ||
| 88 | } | ||
| 89 | |||
| 90 | static inline int pci_pri_status(struct pci_dev *pdev) | ||
| 91 | { | ||
| 92 | return -ENODEV; | ||
| 93 | } | ||
| 94 | #endif /* CONFIG_PCI_PRI */ | 77 | #endif /* CONFIG_PCI_PRI */ |
| 95 | 78 | ||
| 96 | #ifdef CONFIG_PCI_PASID | 79 | #ifdef CONFIG_PCI_PASID |
diff --git a/include/linux/pci.h b/include/linux/pci.h index f7d1dcc002fa..eba7764b1586 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -376,7 +376,6 @@ static inline struct pci_dev *pci_physfn(struct pci_dev *dev) | |||
| 376 | } | 376 | } |
| 377 | 377 | ||
| 378 | struct pci_dev *pci_alloc_dev(struct pci_bus *bus); | 378 | struct pci_dev *pci_alloc_dev(struct pci_bus *bus); |
| 379 | struct pci_dev * __deprecated alloc_pci_dev(void); | ||
| 380 | 379 | ||
| 381 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) | 380 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) |
| 382 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) | 381 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) |
| @@ -386,8 +385,6 @@ static inline int pci_channel_offline(struct pci_dev *pdev) | |||
| 386 | return (pdev->error_state != pci_channel_io_normal); | 385 | return (pdev->error_state != pci_channel_io_normal); |
| 387 | } | 386 | } |
| 388 | 387 | ||
| 389 | extern struct resource busn_resource; | ||
| 390 | |||
| 391 | struct pci_host_bridge_window { | 388 | struct pci_host_bridge_window { |
| 392 | struct list_head list; | 389 | struct list_head list; |
| 393 | struct resource *res; /* host bridge aperture (CPU address) */ | 390 | struct resource *res; /* host bridge aperture (CPU address) */ |
| @@ -763,7 +760,6 @@ struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, | |||
| 763 | const char *name, | 760 | const char *name, |
| 764 | struct hotplug_slot *hotplug); | 761 | struct hotplug_slot *hotplug); |
| 765 | void pci_destroy_slot(struct pci_slot *slot); | 762 | void pci_destroy_slot(struct pci_slot *slot); |
| 766 | void pci_renumber_slot(struct pci_slot *slot, int slot_nr); | ||
| 767 | int pci_scan_slot(struct pci_bus *bus, int devfn); | 763 | int pci_scan_slot(struct pci_bus *bus, int devfn); |
| 768 | struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); | 764 | struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); |
| 769 | void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); | 765 | void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); |
| @@ -974,7 +970,6 @@ void __iomem __must_check *pci_platform_rom(struct pci_dev *pdev, size_t *size); | |||
| 974 | int pci_save_state(struct pci_dev *dev); | 970 | int pci_save_state(struct pci_dev *dev); |
| 975 | void pci_restore_state(struct pci_dev *dev); | 971 | void pci_restore_state(struct pci_dev *dev); |
| 976 | struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev); | 972 | struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev); |
| 977 | int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state); | ||
| 978 | int pci_load_and_free_saved_state(struct pci_dev *dev, | 973 | int pci_load_and_free_saved_state(struct pci_dev *dev, |
| 979 | struct pci_saved_state **state); | 974 | struct pci_saved_state **state); |
| 980 | struct pci_cap_saved_state *pci_find_saved_cap(struct pci_dev *dev, char cap); | 975 | struct pci_cap_saved_state *pci_find_saved_cap(struct pci_dev *dev, char cap); |
| @@ -991,7 +986,6 @@ void pci_pme_active(struct pci_dev *dev, bool enable); | |||
| 991 | int __pci_enable_wake(struct pci_dev *dev, pci_power_t state, | 986 | int __pci_enable_wake(struct pci_dev *dev, pci_power_t state, |
| 992 | bool runtime, bool enable); | 987 | bool runtime, bool enable); |
| 993 | int pci_wake_from_d3(struct pci_dev *dev, bool enable); | 988 | int pci_wake_from_d3(struct pci_dev *dev, bool enable); |
| 994 | pci_power_t pci_target_state(struct pci_dev *dev); | ||
| 995 | int pci_prepare_to_sleep(struct pci_dev *dev); | 989 | int pci_prepare_to_sleep(struct pci_dev *dev); |
| 996 | int pci_back_from_sleep(struct pci_dev *dev); | 990 | int pci_back_from_sleep(struct pci_dev *dev); |
| 997 | bool pci_dev_run_wake(struct pci_dev *dev); | 991 | bool pci_dev_run_wake(struct pci_dev *dev); |
| @@ -1009,22 +1003,6 @@ int pci_save_vc_state(struct pci_dev *dev); | |||
| 1009 | void pci_restore_vc_state(struct pci_dev *dev); | 1003 | void pci_restore_vc_state(struct pci_dev *dev); |
| 1010 | void pci_allocate_vc_save_buffers(struct pci_dev *dev); | 1004 | void pci_allocate_vc_save_buffers(struct pci_dev *dev); |
| 1011 | 1005 | ||
| 1012 | #define PCI_EXP_IDO_REQUEST (1<<0) | ||
| 1013 | #define PCI_EXP_IDO_COMPLETION (1<<1) | ||
| 1014 | void pci_enable_ido(struct pci_dev *dev, unsigned long type); | ||
| 1015 | void pci_disable_ido(struct pci_dev *dev, unsigned long type); | ||
| 1016 | |||
| 1017 | enum pci_obff_signal_type { | ||
| 1018 | PCI_EXP_OBFF_SIGNAL_L0 = 0, | ||
| 1019 | PCI_EXP_OBFF_SIGNAL_ALWAYS = 1, | ||
| 1020 | }; | ||
| 1021 | int pci_enable_obff(struct pci_dev *dev, enum pci_obff_signal_type); | ||
| 1022 | void pci_disable_obff(struct pci_dev *dev); | ||
| 1023 | |||
| 1024 | int pci_enable_ltr(struct pci_dev *dev); | ||
| 1025 | void pci_disable_ltr(struct pci_dev *dev); | ||
| 1026 | int pci_set_ltr(struct pci_dev *dev, int snoop_lat_ns, int nosnoop_lat_ns); | ||
| 1027 | |||
| 1028 | /* For use by arch with custom probe code */ | 1006 | /* For use by arch with custom probe code */ |
| 1029 | void set_pcie_port_type(struct pci_dev *pdev); | 1007 | void set_pcie_port_type(struct pci_dev *pdev); |
| 1030 | void set_pcie_hotplug_bridge(struct pci_dev *pdev); | 1008 | void set_pcie_hotplug_bridge(struct pci_dev *pdev); |
| @@ -1037,7 +1015,6 @@ unsigned int pci_rescan_bus(struct pci_bus *bus); | |||
| 1037 | /* Vital product data routines */ | 1015 | /* Vital product data routines */ |
| 1038 | ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf); | 1016 | ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf); |
| 1039 | ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf); | 1017 | ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf); |
| 1040 | int pci_vpd_truncate(struct pci_dev *dev, size_t size); | ||
| 1041 | 1018 | ||
| 1042 | /* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */ | 1019 | /* Helper functions for low-level code (drivers/pci/setup-[bus,res].c) */ |
| 1043 | resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx); | 1020 | resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx); |
| @@ -1134,7 +1111,6 @@ int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, | |||
| 1134 | 1111 | ||
| 1135 | void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), | 1112 | void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), |
| 1136 | void *userdata); | 1113 | void *userdata); |
| 1137 | int pci_cfg_space_size_ext(struct pci_dev *dev); | ||
| 1138 | int pci_cfg_space_size(struct pci_dev *dev); | 1114 | int pci_cfg_space_size(struct pci_dev *dev); |
| 1139 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); | 1115 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); |
| 1140 | void pci_setup_bridge(struct pci_bus *bus); | 1116 | void pci_setup_bridge(struct pci_bus *bus); |
| @@ -1250,10 +1226,8 @@ extern bool pcie_ports_auto; | |||
| 1250 | #endif | 1226 | #endif |
| 1251 | 1227 | ||
| 1252 | #ifndef CONFIG_PCIEASPM | 1228 | #ifndef CONFIG_PCIEASPM |
| 1253 | static inline int pcie_aspm_enabled(void) { return 0; } | ||
| 1254 | static inline bool pcie_aspm_support_enabled(void) { return false; } | 1229 | static inline bool pcie_aspm_support_enabled(void) { return false; } |
| 1255 | #else | 1230 | #else |
| 1256 | int pcie_aspm_enabled(void); | ||
| 1257 | bool pcie_aspm_support_enabled(void); | 1231 | bool pcie_aspm_support_enabled(void); |
| 1258 | #endif | 1232 | #endif |
| 1259 | 1233 | ||
| @@ -1456,23 +1430,6 @@ static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state, | |||
| 1456 | return 0; | 1430 | return 0; |
| 1457 | } | 1431 | } |
| 1458 | 1432 | ||
| 1459 | static inline void pci_enable_ido(struct pci_dev *dev, unsigned long type) | ||
| 1460 | { | ||
| 1461 | } | ||
| 1462 | |||
| 1463 | static inline void pci_disable_ido(struct pci_dev *dev, unsigned long type) | ||
| 1464 | { | ||
| 1465 | } | ||
| 1466 | |||
| 1467 | static inline int pci_enable_obff(struct pci_dev *dev, unsigned long type) | ||
| 1468 | { | ||
| 1469 | return 0; | ||
| 1470 | } | ||
| 1471 | |||
| 1472 | static inline void pci_disable_obff(struct pci_dev *dev) | ||
| 1473 | { | ||
| 1474 | } | ||
| 1475 | |||
| 1476 | static inline int pci_request_regions(struct pci_dev *dev, const char *res_name) | 1433 | static inline int pci_request_regions(struct pci_dev *dev, const char *res_name) |
| 1477 | { | 1434 | { |
| 1478 | return -EIO; | 1435 | return -EIO; |
