diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2012-12-07 14:11:52 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2012-12-07 14:11:52 -0500 |
commit | 27e1c8ee0170e80f6426c35d54f3b5cd9dadb25b (patch) | |
tree | 5188300ea7cc05db7aebee53366c0556e5d8eaf9 /drivers/pci | |
parent | 72e1e868ca8f14ef34c95e0e8b73f64b6acf5934 (diff) | |
parent | a875621ec15318f0ba35907726ee2cb9e9e0c6b7 (diff) |
Merge branch 'pci/bjorn-pcie-cap' into next
* pci/bjorn-pcie-cap:
ath9k: Use standard #defines for PCIe Capability ASPM fields
iwlwifi: Use standard #defines for PCIe Capability ASPM fields
iwlwifi: collapse wrapper for pcie_capability_read_word()
iwlegacy: Use standard #defines for PCIe Capability ASPM fields
iwlegacy: collapse wrapper for pcie_capability_read_word()
cxgb3: Use standard #defines for PCIe Capability ASPM fields
PCI: Add standard PCIe Capability Link ASPM field names
PCI/portdrv: Use PCI Express Capability accessors
PCI: Use standard PCIe Capability Link register field names
PCI: Add and use standard PCI-X Capability register names
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pcie/aspm.c | 11 | ||||
-rw-r--r-- | drivers/pci/pcie/portdrv_core.c | 3 | ||||
-rw-r--r-- | drivers/pci/probe.c | 19 |
3 files changed, 18 insertions, 15 deletions
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 3da9ecc9ab84..b52630b8eada 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c | |||
@@ -426,7 +426,8 @@ static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist) | |||
426 | 426 | ||
427 | static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val) | 427 | static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val) |
428 | { | 428 | { |
429 | pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL, 0x3, val); | 429 | pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL, |
430 | PCI_EXP_LNKCTL_ASPMC, val); | ||
430 | } | 431 | } |
431 | 432 | ||
432 | static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state) | 433 | static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state) |
@@ -441,12 +442,12 @@ static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state) | |||
441 | return; | 442 | return; |
442 | /* Convert ASPM state to upstream/downstream ASPM register state */ | 443 | /* Convert ASPM state to upstream/downstream ASPM register state */ |
443 | if (state & ASPM_STATE_L0S_UP) | 444 | if (state & ASPM_STATE_L0S_UP) |
444 | dwstream |= PCIE_LINK_STATE_L0S; | 445 | dwstream |= PCI_EXP_LNKCTL_ASPM_L0S; |
445 | if (state & ASPM_STATE_L0S_DW) | 446 | if (state & ASPM_STATE_L0S_DW) |
446 | upstream |= PCIE_LINK_STATE_L0S; | 447 | upstream |= PCI_EXP_LNKCTL_ASPM_L0S; |
447 | if (state & ASPM_STATE_L1) { | 448 | if (state & ASPM_STATE_L1) { |
448 | upstream |= PCIE_LINK_STATE_L1; | 449 | upstream |= PCI_EXP_LNKCTL_ASPM_L1; |
449 | dwstream |= PCIE_LINK_STATE_L1; | 450 | dwstream |= PCI_EXP_LNKCTL_ASPM_L1; |
450 | } | 451 | } |
451 | /* | 452 | /* |
452 | * Spec 2.0 suggests all functions should be configured the | 453 | * Spec 2.0 suggests all functions should be configured the |
diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c index ed129b414624..b42133afca98 100644 --- a/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c | |||
@@ -120,8 +120,7 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) | |||
120 | * the value in this field indicates which MSI-X Table entry is | 120 | * the value in this field indicates which MSI-X Table entry is |
121 | * used to generate the interrupt message." | 121 | * used to generate the interrupt message." |
122 | */ | 122 | */ |
123 | pos = pci_pcie_cap(dev); | 123 | pcie_capability_read_word(dev, PCI_EXP_FLAGS, ®16); |
124 | pci_read_config_word(dev, pos + PCI_EXP_FLAGS, ®16); | ||
125 | entry = (reg16 & PCI_EXP_FLAGS_IRQ) >> 9; | 124 | entry = (reg16 & PCI_EXP_FLAGS_IRQ) >> 9; |
126 | if (entry >= nr_entries) | 125 | if (entry >= nr_entries) |
127 | goto Error; | 126 | goto Error; |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 293af5a6f912..d46ef2df23da 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -521,7 +521,7 @@ static unsigned char pcie_link_speed[] = { | |||
521 | 521 | ||
522 | void pcie_update_link_speed(struct pci_bus *bus, u16 linksta) | 522 | void pcie_update_link_speed(struct pci_bus *bus, u16 linksta) |
523 | { | 523 | { |
524 | bus->cur_bus_speed = pcie_link_speed[linksta & 0xf]; | 524 | bus->cur_bus_speed = pcie_link_speed[linksta & PCI_EXP_LNKSTA_CLS]; |
525 | } | 525 | } |
526 | EXPORT_SYMBOL_GPL(pcie_update_link_speed); | 526 | EXPORT_SYMBOL_GPL(pcie_update_link_speed); |
527 | 527 | ||
@@ -579,14 +579,16 @@ static void pci_set_bus_speed(struct pci_bus *bus) | |||
579 | if (pos) { | 579 | if (pos) { |
580 | u16 status; | 580 | u16 status; |
581 | enum pci_bus_speed max; | 581 | enum pci_bus_speed max; |
582 | pci_read_config_word(bridge, pos + 2, &status); | ||
583 | 582 | ||
584 | if (status & 0x8000) { | 583 | pci_read_config_word(bridge, pos + PCI_X_BRIDGE_SSTATUS, |
584 | &status); | ||
585 | |||
586 | if (status & PCI_X_SSTATUS_533MHZ) { | ||
585 | max = PCI_SPEED_133MHz_PCIX_533; | 587 | max = PCI_SPEED_133MHz_PCIX_533; |
586 | } else if (status & 0x4000) { | 588 | } else if (status & PCI_X_SSTATUS_266MHZ) { |
587 | max = PCI_SPEED_133MHz_PCIX_266; | 589 | max = PCI_SPEED_133MHz_PCIX_266; |
588 | } else if (status & 0x0002) { | 590 | } else if (status & PCI_X_SSTATUS_133MHZ) { |
589 | if (((status >> 12) & 0x3) == 2) { | 591 | if ((status & PCI_X_SSTATUS_VERS) == PCI_X_SSTATUS_V2) { |
590 | max = PCI_SPEED_133MHz_PCIX_ECC; | 592 | max = PCI_SPEED_133MHz_PCIX_ECC; |
591 | } else { | 593 | } else { |
592 | max = PCI_SPEED_133MHz_PCIX; | 594 | max = PCI_SPEED_133MHz_PCIX; |
@@ -596,7 +598,8 @@ static void pci_set_bus_speed(struct pci_bus *bus) | |||
596 | } | 598 | } |
597 | 599 | ||
598 | bus->max_bus_speed = max; | 600 | bus->max_bus_speed = max; |
599 | bus->cur_bus_speed = pcix_bus_speed[(status >> 6) & 0xf]; | 601 | bus->cur_bus_speed = pcix_bus_speed[ |
602 | (status & PCI_X_SSTATUS_FREQ) >> 6]; | ||
600 | 603 | ||
601 | return; | 604 | return; |
602 | } | 605 | } |
@@ -607,7 +610,7 @@ static void pci_set_bus_speed(struct pci_bus *bus) | |||
607 | u16 linksta; | 610 | u16 linksta; |
608 | 611 | ||
609 | pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap); | 612 | pcie_capability_read_dword(bridge, PCI_EXP_LNKCAP, &linkcap); |
610 | bus->max_bus_speed = pcie_link_speed[linkcap & 0xf]; | 613 | bus->max_bus_speed = pcie_link_speed[linkcap & PCI_EXP_LNKCAP_SLS]; |
611 | 614 | ||
612 | pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta); | 615 | pcie_capability_read_word(bridge, PCI_EXP_LNKSTA, &linksta); |
613 | pcie_update_link_speed(bus, linksta); | 616 | pcie_update_link_speed(bus, linksta); |