aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2012-12-07 14:11:52 -0500
committerBjorn Helgaas <bhelgaas@google.com>2012-12-07 14:11:52 -0500
commit27e1c8ee0170e80f6426c35d54f3b5cd9dadb25b (patch)
tree5188300ea7cc05db7aebee53366c0556e5d8eaf9 /drivers/pci
parent72e1e868ca8f14ef34c95e0e8b73f64b6acf5934 (diff)
parenta875621ec15318f0ba35907726ee2cb9e9e0c6b7 (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.c11
-rw-r--r--drivers/pci/pcie/portdrv_core.c3
-rw-r--r--drivers/pci/probe.c19
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
427static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val) 427static 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
432static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state) 433static 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, &reg16);
124 pci_read_config_word(dev, pos + PCI_EXP_FLAGS, &reg16);
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
522void pcie_update_link_speed(struct pci_bus *bus, u16 linksta) 522void 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}
526EXPORT_SYMBOL_GPL(pcie_update_link_speed); 526EXPORT_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);