diff options
Diffstat (limited to 'arch/tile/kernel/pci.c')
-rw-r--r-- | arch/tile/kernel/pci.c | 34 |
1 files changed, 6 insertions, 28 deletions
diff --git a/arch/tile/kernel/pci.c b/arch/tile/kernel/pci.c index 33c10864d2f7..759822687e8f 100644 --- a/arch/tile/kernel/pci.c +++ b/arch/tile/kernel/pci.c | |||
@@ -246,16 +246,13 @@ static void __devinit fixup_read_and_payload_sizes(void) | |||
246 | 246 | ||
247 | /* Scan for the smallest maximum payload size. */ | 247 | /* Scan for the smallest maximum payload size. */ |
248 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { | 248 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { |
249 | int pcie_caps_offset; | ||
250 | u32 devcap; | 249 | u32 devcap; |
251 | int max_payload; | 250 | int max_payload; |
252 | 251 | ||
253 | pcie_caps_offset = pci_find_capability(dev, PCI_CAP_ID_EXP); | 252 | if (!pci_is_pcie(dev)) |
254 | if (pcie_caps_offset == 0) | ||
255 | continue; | 253 | continue; |
256 | 254 | ||
257 | pci_read_config_dword(dev, pcie_caps_offset + PCI_EXP_DEVCAP, | 255 | pcie_capability_read_dword(dev, PCI_EXP_DEVCAP, &devcap); |
258 | &devcap); | ||
259 | max_payload = devcap & PCI_EXP_DEVCAP_PAYLOAD; | 256 | max_payload = devcap & PCI_EXP_DEVCAP_PAYLOAD; |
260 | if (max_payload < smallest_max_payload) | 257 | if (max_payload < smallest_max_payload) |
261 | smallest_max_payload = max_payload; | 258 | smallest_max_payload = max_payload; |
@@ -263,21 +260,10 @@ static void __devinit fixup_read_and_payload_sizes(void) | |||
263 | 260 | ||
264 | /* Now, set the max_payload_size for all devices to that value. */ | 261 | /* Now, set the max_payload_size for all devices to that value. */ |
265 | new_values = (max_read_size << 12) | (smallest_max_payload << 5); | 262 | new_values = (max_read_size << 12) | (smallest_max_payload << 5); |
266 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { | 263 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) |
267 | int pcie_caps_offset; | 264 | pcie_capability_clear_and_set_word(dev, PCI_EXP_DEVCTL, |
268 | u16 devctl; | 265 | PCI_EXP_DEVCTL_PAYLOAD | PCI_EXP_DEVCTL_READRQ, |
269 | 266 | new_values); | |
270 | pcie_caps_offset = pci_find_capability(dev, PCI_CAP_ID_EXP); | ||
271 | if (pcie_caps_offset == 0) | ||
272 | continue; | ||
273 | |||
274 | pci_read_config_word(dev, pcie_caps_offset + PCI_EXP_DEVCTL, | ||
275 | &devctl); | ||
276 | devctl &= ~(PCI_EXP_DEVCTL_PAYLOAD | PCI_EXP_DEVCTL_READRQ); | ||
277 | devctl |= new_values; | ||
278 | pci_write_config_word(dev, pcie_caps_offset + PCI_EXP_DEVCTL, | ||
279 | devctl); | ||
280 | } | ||
281 | } | 267 | } |
282 | 268 | ||
283 | 269 | ||
@@ -404,14 +390,6 @@ void pcibios_set_master(struct pci_dev *dev) | |||
404 | } | 390 | } |
405 | 391 | ||
406 | /* | 392 | /* |
407 | * This is called from the generic Linux layer. | ||
408 | */ | ||
409 | void __devinit pcibios_update_irq(struct pci_dev *dev, int irq) | ||
410 | { | ||
411 | pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); | ||
412 | } | ||
413 | |||
414 | /* | ||
415 | * Enable memory and/or address decoding, as appropriate, for the | 393 | * Enable memory and/or address decoding, as appropriate, for the |
416 | * device described by the 'dev' struct. | 394 | * device described by the 'dev' struct. |
417 | * | 395 | * |