Patchwork [05/12] PCI: Add standard PCIe Capability Link ASPM field names

login
register
mail settings
Submitter Bjorn Helgaas
Date Dec. 5, 2012, 8:57 p.m.
Message ID <20121205205745.13851.5032.stgit@bhelgaas.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/203950/
State Accepted
Headers show

Comments

Bjorn Helgaas - Dec. 5, 2012, 8:57 p.m.
Add standard #defines for ASPM fields in PCI Express Link Capability and
Link Control registers.

Previously we used PCIE_LINK_STATE_L0S and PCIE_LINK_STATE_L1 directly, but
these are defined for the Linux ASPM interfaces, e.g.,
pci_disable_link_state(), and only coincidentally match the actual register
bits.  PCIE_LINK_STATE_CLKPM, also part of that interface, does not match
the register bit.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
CC: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
CC: Shaohua Li <shaohua.li@intel.com>
---
 drivers/pci/pcie/aspm.c       |   11 ++++++-----
 include/uapi/linux/pci_regs.h |    2 ++
 2 files changed, 8 insertions(+), 5 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kenji Kaneshige - Dec. 6, 2012, 2:29 a.m.
UmV2aWV3ZWQtYnk6IEtlbmppIEthbmVzaGlnZSA8a2FuZXNoaWdlLmtlbmppQGpwLmZ1aml0c3Uu
Y29tPg0KQWNrZWQtYnk6IEtlbmppIEthbmVzaGlnZSA8a2FuZXNoaWdlLmtlbmppQGpwLmZ1aml0
c3UuY29tPg0KDQpSZWdhcmRzLA0KS2VuamkgS2FuZXNoaWdlDQoNCj4gLS0tLS1PcmlnaW5hbCBN
ZXNzYWdlLS0tLS0NCj4gRnJvbTogQmpvcm4gSGVsZ2FhcyBbbWFpbHRvOmJoZWxnYWFzQGdvb2ds
ZS5jb21dDQo+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAwNiwgMjAxMiA1OjU4IEFNDQo+IFRv
OiBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnDQo+IENjOiBTaGFvaHVhIExpOyBLYW5lc2hpZ2Us
IEtlbmppL+mHkemHjSDmhrLmsrsNCj4gU3ViamVjdDogW1BBVENIIDA1LzEyXSBQQ0k6IEFkZCBz
dGFuZGFyZCBQQ0llIENhcGFiaWxpdHkgTGluayBBU1BNIGZpZWxkIG5hbWVzDQo+IA0KPiBBZGQg
c3RhbmRhcmQgI2RlZmluZXMgZm9yIEFTUE0gZmllbGRzIGluIFBDSSBFeHByZXNzIExpbmsgQ2Fw
YWJpbGl0eSBhbmQNCj4gTGluayBDb250cm9sIHJlZ2lzdGVycy4NCj4gDQo+IFByZXZpb3VzbHkg
d2UgdXNlZCBQQ0lFX0xJTktfU1RBVEVfTDBTIGFuZCBQQ0lFX0xJTktfU1RBVEVfTDEgZGlyZWN0
bHksIGJ1dA0KPiB0aGVzZSBhcmUgZGVmaW5lZCBmb3IgdGhlIExpbnV4IEFTUE0gaW50ZXJmYWNl
cywgZS5nLiwNCj4gcGNpX2Rpc2FibGVfbGlua19zdGF0ZSgpLCBhbmQgb25seSBjb2luY2lkZW50
YWxseSBtYXRjaCB0aGUgYWN0dWFsIHJlZ2lzdGVyDQo+IGJpdHMuICBQQ0lFX0xJTktfU1RBVEVf
Q0xLUE0sIGFsc28gcGFydCBvZiB0aGF0IGludGVyZmFjZSwgZG9lcyBub3QgbWF0Y2gNCj4gdGhl
IHJlZ2lzdGVyIGJpdC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEJqb3JuIEhlbGdhYXMgPGJoZWxn
YWFzQGdvb2dsZS5jb20+DQo+IENDOiBLZW5qaSBLYW5lc2hpZ2UgPGthbmVzaGlnZS5rZW5qaUBq
cC5mdWppdHN1LmNvbT4NCj4gQ0M6IFNoYW9odWEgTGkgPHNoYW9odWEubGlAaW50ZWwuY29tPg0K
PiAtLS0NCj4gIGRyaXZlcnMvcGNpL3BjaWUvYXNwbS5jICAgICAgIHwgICAxMSArKysrKystLS0t
LQ0KPiAgaW5jbHVkZS91YXBpL2xpbnV4L3BjaV9yZWdzLmggfCAgICAyICsrDQo+ICAyIGZpbGVz
IGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1n
aXQgYS9kcml2ZXJzL3BjaS9wY2llL2FzcG0uYyBiL2RyaXZlcnMvcGNpL3BjaWUvYXNwbS5jDQo+
IGluZGV4IDIxMzc1M2IuLmMyZmFmOWQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGNpL3BjaWUv
YXNwbS5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL3BjaWUvYXNwbS5jDQo+IEBAIC00MjcsNyArNDI3
LDggQEAgc3RhdGljIHZvaWQgcGNpZV9hc3BtX2NhcF9pbml0KHN0cnVjdCBwY2llX2xpbmtfc3Rh
dGUgKmxpbmssIGludCBibGFja2xpc3QpDQo+IA0KPiAgc3RhdGljIHZvaWQgcGNpZV9jb25maWdf
YXNwbV9kZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHUzMiB2YWwpDQo+ICB7DQo+IC0JcGNpZV9j
YXBhYmlsaXR5X2NsZWFyX2FuZF9zZXRfd29yZChwZGV2LCBQQ0lfRVhQX0xOS0NUTCwgMHgzLCB2
YWwpOw0KPiArCXBjaWVfY2FwYWJpbGl0eV9jbGVhcl9hbmRfc2V0X3dvcmQocGRldiwgUENJX0VY
UF9MTktDVEwsDQo+ICsJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMX0FTUE1DLCB2YWwpOw0KPiAgfQ0K
PiANCj4gIHN0YXRpYyB2b2lkIHBjaWVfY29uZmlnX2FzcG1fbGluayhzdHJ1Y3QgcGNpZV9saW5r
X3N0YXRlICpsaW5rLCB1MzIgc3RhdGUpDQo+IEBAIC00NDIsMTIgKzQ0MywxMiBAQCBzdGF0aWMg
dm9pZCBwY2llX2NvbmZpZ19hc3BtX2xpbmsoc3RydWN0IHBjaWVfbGlua19zdGF0ZSAqbGluaywg
dTMyIHN0YXRlKQ0KPiAgCQlyZXR1cm47DQo+ICAJLyogQ29udmVydCBBU1BNIHN0YXRlIHRvIHVw
c3RyZWFtL2Rvd25zdHJlYW0gQVNQTSByZWdpc3RlciBzdGF0ZSAqLw0KPiAgCWlmIChzdGF0ZSAm
IEFTUE1fU1RBVEVfTDBTX1VQKQ0KPiAtCQlkd3N0cmVhbSB8PSBQQ0lFX0xJTktfU1RBVEVfTDBT
Ow0KPiArCQlkd3N0cmVhbSB8PSBQQ0lfRVhQX0xOS0NUTF9BU1BNX0wwUzsNCj4gIAlpZiAoc3Rh
dGUgJiBBU1BNX1NUQVRFX0wwU19EVykNCj4gLQkJdXBzdHJlYW0gfD0gUENJRV9MSU5LX1NUQVRF
X0wwUzsNCj4gKwkJdXBzdHJlYW0gfD0gUENJX0VYUF9MTktDVExfQVNQTV9MMFM7DQo+ICAJaWYg
KHN0YXRlICYgQVNQTV9TVEFURV9MMSkgew0KPiAtCQl1cHN0cmVhbSB8PSBQQ0lFX0xJTktfU1RB
VEVfTDE7DQo+IC0JCWR3c3RyZWFtIHw9IFBDSUVfTElOS19TVEFURV9MMTsNCj4gKwkJdXBzdHJl
YW0gfD0gUENJX0VYUF9MTktDVExfQVNQTV9MMTsNCj4gKwkJZHdzdHJlYW0gfD0gUENJX0VYUF9M
TktDVExfQVNQTV9MMTsNCj4gIAl9DQo+ICAJLyoNCj4gIAkgKiBTcGVjIDIuMCBzdWdnZXN0cyBh
bGwgZnVuY3Rpb25zIHNob3VsZCBiZSBjb25maWd1cmVkIHRoZQ0KPiBkaWZmIC0tZ2l0IGEvaW5j
bHVkZS91YXBpL2xpbnV4L3BjaV9yZWdzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcGNpX3JlZ3Mu
aA0KPiBpbmRleCA0Y2NhODM0Li4wYjZkYmU0IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL3VhcGkv
bGludXgvcGNpX3JlZ3MuaA0KPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvcGNpX3JlZ3MuaA0K
PiBAQCAtNDY5LDYgKzQ2OSw4IEBADQo+ICAjZGVmaW5lICBQQ0lfRVhQX0xOS0NBUF9QTgkweGZm
MDAwMDAwIC8qIFBvcnQgTnVtYmVyICovDQo+ICAjZGVmaW5lIFBDSV9FWFBfTE5LQ1RMCQkxNgkv
KiBMaW5rIENvbnRyb2wgKi8NCj4gICNkZWZpbmUgIFBDSV9FWFBfTE5LQ1RMX0FTUE1DCTB4MDAw
MwkvKiBBU1BNIENvbnRyb2wgKi8NCj4gKyNkZWZpbmUgIFBDSV9FWFBfTE5LQ1RMX0FTUE1fTDBT
ICAweDAxCS8qIEwwcyBFbmFibGUgKi8NCj4gKyNkZWZpbmUgIFBDSV9FWFBfTE5LQ1RMX0FTUE1f
TDEgICAweDAyCS8qIEwxIEVuYWJsZSAqLw0KPiAgI2RlZmluZSAgUENJX0VYUF9MTktDVExfUkNC
CTB4MDAwOAkvKiBSZWFkIENvbXBsZXRpb24gQm91bmRhcnkgKi8NCj4gICNkZWZpbmUgIFBDSV9F
WFBfTE5LQ1RMX0xECTB4MDAxMAkvKiBMaW5rIERpc2FibGUgKi8NCj4gICNkZWZpbmUgIFBDSV9F
WFBfTE5LQ1RMX1JMCTB4MDAyMAkvKiBSZXRyYWluIExpbmsgKi8NCg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 213753b..c2faf9d 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -427,7 +427,8 @@  static void pcie_aspm_cap_init(struct pcie_link_state *link, int blacklist)
 
 static void pcie_config_aspm_dev(struct pci_dev *pdev, u32 val)
 {
-	pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL, 0x3, val);
+	pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL,
+					   PCI_EXP_LNKCTL_ASPMC, val);
 }
 
 static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state)
@@ -442,12 +443,12 @@  static void pcie_config_aspm_link(struct pcie_link_state *link, u32 state)
 		return;
 	/* Convert ASPM state to upstream/downstream ASPM register state */
 	if (state & ASPM_STATE_L0S_UP)
-		dwstream |= PCIE_LINK_STATE_L0S;
+		dwstream |= PCI_EXP_LNKCTL_ASPM_L0S;
 	if (state & ASPM_STATE_L0S_DW)
-		upstream |= PCIE_LINK_STATE_L0S;
+		upstream |= PCI_EXP_LNKCTL_ASPM_L0S;
 	if (state & ASPM_STATE_L1) {
-		upstream |= PCIE_LINK_STATE_L1;
-		dwstream |= PCIE_LINK_STATE_L1;
+		upstream |= PCI_EXP_LNKCTL_ASPM_L1;
+		dwstream |= PCI_EXP_LNKCTL_ASPM_L1;
 	}
 	/*
 	 * Spec 2.0 suggests all functions should be configured the
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
index 4cca834..0b6dbe4 100644
--- a/include/uapi/linux/pci_regs.h
+++ b/include/uapi/linux/pci_regs.h
@@ -469,6 +469,8 @@ 
 #define  PCI_EXP_LNKCAP_PN	0xff000000 /* Port Number */
 #define PCI_EXP_LNKCTL		16	/* Link Control */
 #define  PCI_EXP_LNKCTL_ASPMC	0x0003	/* ASPM Control */
+#define  PCI_EXP_LNKCTL_ASPM_L0S  0x01	/* L0s Enable */
+#define  PCI_EXP_LNKCTL_ASPM_L1   0x02	/* L1 Enable */
 #define  PCI_EXP_LNKCTL_RCB	0x0008	/* Read Completion Boundary */
 #define  PCI_EXP_LNKCTL_LD	0x0010	/* Link Disable */
 #define  PCI_EXP_LNKCTL_RL	0x0020	/* Retrain Link */