|
@@ -143,18 +143,20 @@ static void __init setup_pci_atmu(struct pci_controller *hose,
|
|
|
pr_debug("PCI memory map start 0x%016llx, size 0x%016llx\n",
|
|
|
(u64)rsrc->start, (u64)resource_size(rsrc));
|
|
|
|
|
|
- if (of_device_is_compatible(hose->dn, "fsl,qoriq-pcie-v2.2")) {
|
|
|
- win_idx = 2;
|
|
|
- start_idx = 0;
|
|
|
- end_idx = 3;
|
|
|
- }
|
|
|
-
|
|
|
pci = ioremap(rsrc->start, resource_size(rsrc));
|
|
|
if (!pci) {
|
|
|
dev_err(hose->parent, "Unable to map ATMU registers\n");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ 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;
|
|
|
+ start_idx = 0;
|
|
|
+ end_idx = 3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/* Disable all windows (except powar0 since it's ignored) */
|
|
|
for(i = 1; i < 5; i++)
|
|
|
out_be32(&pci->pow[i].powar, 0);
|