[PATCH V4 2/2] powerpc/85xx: Add PCIe controller support for bsc9132qds

Subsystems: linux for powerpc (32-bit and 64-bit), linux for powerpc embedded ppc85xx, the rest

STALE3922d

2 messages, 2 authors, 2015-11-17 · open the first message on its own page

[PATCH V4 2/2] powerpc/85xx: Add PCIe controller support for bsc9132qds

From: Zhiqiang Hou <hidden>
Date: 2015-11-05 03:16:00

From: Harninder Rai <redacted>

1. Use machine_arch_initcall to hook mpc85xx_common_publish_devices
This can ensure before pcibios_init() is called, pci controllers have
been probed and added to the hose_list.
2. Add a workaround for errata A-005434
For the BSC9132, PEX_PEXIWARn[TRGT] for all windows defaults to 0xF,
which is mapped to CCSRBAR. However, for other products, 0xF is
mapped to the local memory. Therefore, for the BSC9132, any default
PCI Express access to the local memory (DDR) will now access the
CCSRBAR. This patch changes the mapping of targets of inbound windows
PEX_PEXIWARn[TRGT] to the Local address space – 0x0 (from 0xF).

Signed-off-by: Harninder Rai <redacted>
Signed-off-by: Minghuan Lian <redacted>
Signed-off-by: Hou Zhiqiang <redacted>
---
V4: V3:
 - Remove gerrit stuff.

 arch/powerpc/platforms/85xx/bsc913x_qds.c |  8 +++++++-
 arch/powerpc/sysdev/fsl_pci.c             | 13 +++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/85xx/bsc913x_qds.c b/arch/powerpc/platforms/85xx/bsc913x_qds.c
index f0927e5..dcfafd6 100644
--- a/arch/powerpc/platforms/85xx/bsc913x_qds.c
+++ b/arch/powerpc/platforms/85xx/bsc913x_qds.c
@@ -17,6 +17,7 @@
 #include <linux/pci.h>
 #include <asm/mpic.h>
 #include <sysdev/fsl_soc.h>
+#include <sysdev/fsl_pci.h>
 #include <asm/udbg.h>
 
 #include "mpc85xx.h"
@@ -46,10 +47,12 @@ static void __init bsc913x_qds_setup_arch(void)
 	mpc85xx_smp_init();
 #endif
 
+	fsl_pci_assign_primary();
+
 	pr_info("bsc913x board from Freescale Semiconductor\n");
 }
 
-machine_device_initcall(bsc9132_qds, mpc85xx_common_publish_devices);
+machine_arch_initcall(bsc9132_qds, mpc85xx_common_publish_devices);
 
 /*
  * Called very early, device-tree isn't unflattened
@@ -67,6 +70,9 @@ define_machine(bsc9132_qds) {
 	.probe			= bsc9132_qds_probe,
 	.setup_arch		= bsc913x_qds_setup_arch,
 	.init_IRQ		= bsc913x_qds_pic_init,
+#ifdef CONFIG_PCI
+	.pcibios_fixup_bus	= fsl_pcibios_fixup_bus,
+#endif
 	.get_irq		= mpic_get_irq,
 	.restart		= fsl_rstcr_restart,
 	.calibrate_decr		= generic_calibrate_decr,
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index ebc1f412..b8607f6 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -193,6 +193,19 @@ static void setup_pci_atmu(struct pci_controller *hose)
 	const u64 *reg;
 	int len;
 
+	if (of_device_is_compatible(hose->dn, "fsl,bsc9132-pcie")) {
+		/*
+		 * BSC9132 Rev1.0 has an issue where all the PEX inbound
+		 * windows have implemented the default target value as 0xf
+		 * for CCSR space.In all Freescale legacy devices the target
+		 * of 0xf is reserved for local memory space. 9132 Rev1.0
+		 * now has local mempry space mapped to target 0x0 instead of
+		 * 0xf. Hence adding a workaround to remove the target 0xf
+		 * defined for memory space from Inbound window attributes.
+		 */
+		piwar &= ~PIWAR_TGI_LOCAL;
+	}
+
 	if (early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) {
 		if (in_be32(&pci->block_rev1) >= PCIE_IP_REV_2_2) {
 			win_idx = 2;
-- 
2.1.0.27.g96db324

RE: [PATCH V4 2/2] powerpc/85xx: Add PCIe controller support for bsc9132qds

From: Hou Zhiqiang <hidden>
Date: 2015-11-17 02:31:44

SGksDQoNCkFueSByZXNwb25zZSwgcGxlYXNlIGNvbW1lbnQuDQoNCj4gLS0tLS1PcmlnaW5hbCBN
ZXNzYWdlLS0tLS0NCj4gRnJvbTogWmhpcWlhbmcgSG91IFttYWlsdG86WmhpcWlhbmcuSG91QGZy
ZWVzY2FsZS5jb21dDQo+IFNlbnQ6IDIwMTXlubQxMeaciDXml6UgMTE6MTYNCj4gVG86IGxpbnV4
cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyBXb29kIFNjb3R0LUIwNzQyMTsNCj4gZ2FsYWtAa2Vy
bmVsLmNyYXNoaW5nLm9yZzsgYmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnOyBwYXVsdXNAc2FtYmEu
b3JnOw0KPiBtcGVAZWxsZXJtYW4uaWQuYXU7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBy
b2JoK2R0QGtlcm5lbC5vcmc7DQo+IHBhd2VsLm1vbGxAYXJtLmNvbTsgbWFyay5ydXRsYW5kQGFy
bS5jb207IGlqYytkZXZpY2V0cmVlQGhlbGxpb24ub3JnLnVrOw0KPiBSYWkgSGFybmluZGVyLUIw
MTA0NA0KPiBDYzogTGlhbiBNaW5naHVhbi1CMzE5Mzk7IEh1IE1pbmdrYWktQjIxMjg0OyBIb3Ug
WmhpcWlhbmctQjQ4Mjg2DQo+IFN1YmplY3Q6IFtQQVRDSCBWNCAyLzJdIHBvd2VycGMvODV4eDog
QWRkIFBDSWUgY29udHJvbGxlciBzdXBwb3J0IGZvcg0KPiBic2M5MTMycWRzDQo+IA0KPiBGcm9t
OiBIYXJuaW5kZXIgUmFpIDxoYXJuaW5kZXIucmFpQGZyZWVzY2FsZS5jb20+DQo+IA0KPiAxLiBV
c2UgbWFjaGluZV9hcmNoX2luaXRjYWxsIHRvIGhvb2sgbXBjODV4eF9jb21tb25fcHVibGlzaF9k
ZXZpY2VzIFRoaXMNCj4gY2FuIGVuc3VyZSBiZWZvcmUgcGNpYmlvc19pbml0KCkgaXMgY2FsbGVk
LCBwY2kgY29udHJvbGxlcnMgaGF2ZSBiZWVuDQo+IHByb2JlZCBhbmQgYWRkZWQgdG8gdGhlIGhv
c2VfbGlzdC4NCj4gMi4gQWRkIGEgd29ya2Fyb3VuZCBmb3IgZXJyYXRhIEEtMDA1NDM0DQo+IEZv
ciB0aGUgQlNDOTEzMiwgUEVYX1BFWElXQVJuW1RSR1RdIGZvciBhbGwgd2luZG93cyBkZWZhdWx0
cyB0byAweEYsDQo+IHdoaWNoIGlzIG1hcHBlZCB0byBDQ1NSQkFSLiBIb3dldmVyLCBmb3Igb3Ro
ZXIgcHJvZHVjdHMsIDB4RiBpcyBtYXBwZWQgdG8NCj4gdGhlIGxvY2FsIG1lbW9yeS4gVGhlcmVm
b3JlLCBmb3IgdGhlIEJTQzkxMzIsIGFueSBkZWZhdWx0IFBDSSBFeHByZXNzDQo+IGFjY2VzcyB0
byB0aGUgbG9jYWwgbWVtb3J5IChERFIpIHdpbGwgbm93IGFjY2VzcyB0aGUgQ0NTUkJBUi4gVGhp
cyBwYXRjaA0KPiBjaGFuZ2VzIHRoZSBtYXBwaW5nIG9mIHRhcmdldHMgb2YgaW5ib3VuZCB3aW5k
b3dzIFBFWF9QRVhJV0FSbltUUkdUXSB0bw0KPiB0aGUgTG9jYWwgYWRkcmVzcyBzcGFjZSDigJMg
MHgwIChmcm9tIDB4RikuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBIYXJuaW5kZXIgUmFpIDxoYXJu
aW5kZXIucmFpQGZyZWVzY2FsZS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE1pbmdodWFuIExpYW4g
PE1pbmdodWFuLkxpYW5AZnJlZXNjYWxlLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSG91IFpoaXFp
YW5nIDxCNDgyODZAZnJlZXNjYWxlLmNvbT4NCj4gLS0tDQo+IFY0OiBWMzoNCj4gIC0gUmVtb3Zl
IGdlcnJpdCBzdHVmZi4NCj4gDQo+ICBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzg1eHgvYnNjOTEz
eF9xZHMuYyB8ICA4ICsrKysrKystDQo+ICBhcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9wY2kuYyAg
ICAgICAgICAgICB8IDEzICsrKysrKysrKysrKysNCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5z
ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJw
Yy9wbGF0Zm9ybXMvODV4eC9ic2M5MTN4X3Fkcy5jDQo+IGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jt
cy84NXh4L2JzYzkxM3hfcWRzLmMNCj4gaW5kZXggZjA5MjdlNS4uZGNmYWZkNiAxMDA2NDQNCj4g
LS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L2JzYzkxM3hfcWRzLmMNCj4gKysrIGIv
YXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84NXh4L2JzYzkxM3hfcWRzLmMNCj4gQEAgLTE3LDYgKzE3
LDcgQEANCj4gICNpbmNsdWRlIDxsaW51eC9wY2kuaD4NCj4gICNpbmNsdWRlIDxhc20vbXBpYy5o
Pg0KPiAgI2luY2x1ZGUgPHN5c2Rldi9mc2xfc29jLmg+DQo+ICsjaW5jbHVkZSA8c3lzZGV2L2Zz
bF9wY2kuaD4NCj4gICNpbmNsdWRlIDxhc20vdWRiZy5oPg0KPiANCj4gICNpbmNsdWRlICJtcGM4
NXh4LmgiDQo+IEBAIC00NiwxMCArNDcsMTIgQEAgc3RhdGljIHZvaWQgX19pbml0IGJzYzkxM3hf
cWRzX3NldHVwX2FyY2godm9pZCkNCj4gIAltcGM4NXh4X3NtcF9pbml0KCk7DQo+ICAjZW5kaWYN
Cj4gDQo+ICsJZnNsX3BjaV9hc3NpZ25fcHJpbWFyeSgpOw0KPiArDQo+ICAJcHJfaW5mbygiYnNj
OTEzeCBib2FyZCBmcm9tIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yXG4iKTsgIH0NCj4gDQo+IC1t
YWNoaW5lX2RldmljZV9pbml0Y2FsbChic2M5MTMyX3FkcywgbXBjODV4eF9jb21tb25fcHVibGlz
aF9kZXZpY2VzKTsNCj4gK21hY2hpbmVfYXJjaF9pbml0Y2FsbChic2M5MTMyX3FkcywgbXBjODV4
eF9jb21tb25fcHVibGlzaF9kZXZpY2VzKTsNCj4gDQo+ICAvKg0KPiAgICogQ2FsbGVkIHZlcnkg
ZWFybHksIGRldmljZS10cmVlIGlzbid0IHVuZmxhdHRlbmVkIEBAIC02Nyw2ICs3MCw5IEBADQo+
IGRlZmluZV9tYWNoaW5lKGJzYzkxMzJfcWRzKSB7DQo+ICAJLnByb2JlCQkJPSBic2M5MTMyX3Fk
c19wcm9iZSwNCj4gIAkuc2V0dXBfYXJjaAkJPSBic2M5MTN4X3Fkc19zZXR1cF9hcmNoLA0KPiAg
CS5pbml0X0lSUQkJPSBic2M5MTN4X3Fkc19waWNfaW5pdCwNCj4gKyNpZmRlZiBDT05GSUdfUENJ
DQo+ICsJLnBjaWJpb3NfZml4dXBfYnVzCT0gZnNsX3BjaWJpb3NfZml4dXBfYnVzLA0KPiArI2Vu
ZGlmDQo+ICAJLmdldF9pcnEJCT0gbXBpY19nZXRfaXJxLA0KPiAgCS5yZXN0YXJ0CQk9IGZzbF9y
c3Rjcl9yZXN0YXJ0LA0KPiAgCS5jYWxpYnJhdGVfZGVjcgkJPSBnZW5lcmljX2NhbGlicmF0ZV9k
ZWNyLA0KPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNpLmMNCj4gYi9h
cmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9wY2kuYyBpbmRleCBlYmMxZjQxMi4uYjg2MDdmNiAxMDA2
NDQNCj4gLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNpLmMNCj4gKysrIGIvYXJjaC9w
b3dlcnBjL3N5c2Rldi9mc2xfcGNpLmMNCj4gQEAgLTE5Myw2ICsxOTMsMTkgQEAgc3RhdGljIHZv
aWQgc2V0dXBfcGNpX2F0bXUoc3RydWN0IHBjaV9jb250cm9sbGVyDQo+ICpob3NlKQ0KPiAgCWNv
bnN0IHU2NCAqcmVnOw0KPiAgCWludCBsZW47DQo+IA0KPiArCWlmIChvZl9kZXZpY2VfaXNfY29t
cGF0aWJsZShob3NlLT5kbiwgImZzbCxic2M5MTMyLXBjaWUiKSkgew0KPiArCQkvKg0KPiArCQkg
KiBCU0M5MTMyIFJldjEuMCBoYXMgYW4gaXNzdWUgd2hlcmUgYWxsIHRoZSBQRVggaW5ib3VuZA0K
PiArCQkgKiB3aW5kb3dzIGhhdmUgaW1wbGVtZW50ZWQgdGhlIGRlZmF1bHQgdGFyZ2V0IHZhbHVl
IGFzIDB4Zg0KPiArCQkgKiBmb3IgQ0NTUiBzcGFjZS5JbiBhbGwgRnJlZXNjYWxlIGxlZ2FjeSBk
ZXZpY2VzIHRoZSB0YXJnZXQNCj4gKwkJICogb2YgMHhmIGlzIHJlc2VydmVkIGZvciBsb2NhbCBt
ZW1vcnkgc3BhY2UuIDkxMzIgUmV2MS4wDQo+ICsJCSAqIG5vdyBoYXMgbG9jYWwgbWVtcHJ5IHNw
YWNlIG1hcHBlZCB0byB0YXJnZXQgMHgwIGluc3RlYWQgb2YNCj4gKwkJICogMHhmLiBIZW5jZSBh
ZGRpbmcgYSB3b3JrYXJvdW5kIHRvIHJlbW92ZSB0aGUgdGFyZ2V0IDB4Zg0KPiArCQkgKiBkZWZp
bmVkIGZvciBtZW1vcnkgc3BhY2UgZnJvbSBJbmJvdW5kIHdpbmRvdyBhdHRyaWJ1dGVzLg0KPiAr
CQkgKi8NCj4gKwkJcGl3YXIgJj0gflBJV0FSX1RHSV9MT0NBTDsNCj4gKwl9DQo+ICsNCj4gIAlp
ZiAoZWFybHlfZmluZF9jYXBhYmlsaXR5KGhvc2UsIDAsIDAsIFBDSV9DQVBfSURfRVhQKSkgew0K
PiAgCQlpZiAoaW5fYmUzMigmcGNpLT5ibG9ja19yZXYxKSA+PSBQQ0lFX0lQX1JFVl8yXzIpIHsN
Cj4gIAkJCXdpbl9pZHggPSAyOw0KPiAtLQ0KPiAyLjEuMC4yNy5nOTZkYjMyNA0KDQpUaGFua3Ms
DQpaaGlxaWFuZw0K
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help