|
@@ -58,9 +58,17 @@
|
|
|
#define SYS_RC_INTX_EN 0x330
|
|
|
#define SYS_RC_INTX_MASK 0xf
|
|
|
|
|
|
-static inline struct iproc_pcie *sys_to_pcie(struct pci_sys_data *sys)
|
|
|
+static inline struct iproc_pcie *iproc_data(struct pci_bus *bus)
|
|
|
{
|
|
|
- return sys->private_data;
|
|
|
+ struct iproc_pcie *pcie;
|
|
|
+#ifdef CONFIG_ARM
|
|
|
+ struct pci_sys_data *sys = bus->sysdata;
|
|
|
+
|
|
|
+ pcie = sys->private_data;
|
|
|
+#else
|
|
|
+ pcie = bus->sysdata;
|
|
|
+#endif
|
|
|
+ return pcie;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -71,8 +79,7 @@ static void __iomem *iproc_pcie_map_cfg_bus(struct pci_bus *bus,
|
|
|
unsigned int devfn,
|
|
|
int where)
|
|
|
{
|
|
|
- struct pci_sys_data *sys = bus->sysdata;
|
|
|
- struct iproc_pcie *pcie = sys_to_pcie(sys);
|
|
|
+ struct iproc_pcie *pcie = iproc_data(bus);
|
|
|
unsigned slot = PCI_SLOT(devfn);
|
|
|
unsigned fn = PCI_FUNC(devfn);
|
|
|
unsigned busno = bus->number;
|
|
@@ -186,6 +193,7 @@ static void iproc_pcie_enable(struct iproc_pcie *pcie)
|
|
|
int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
|
|
|
{
|
|
|
int ret;
|
|
|
+ void *sysdata;
|
|
|
struct pci_bus *bus;
|
|
|
|
|
|
if (!pcie || !pcie->dev || !pcie->base)
|
|
@@ -208,10 +216,13 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
|
|
|
|
|
|
iproc_pcie_reset(pcie);
|
|
|
|
|
|
+#ifdef CONFIG_ARM
|
|
|
pcie->sysdata.private_data = pcie;
|
|
|
-
|
|
|
- bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops,
|
|
|
- &pcie->sysdata, res);
|
|
|
+ sysdata = &pcie->sysdata;
|
|
|
+#else
|
|
|
+ sysdata = pcie;
|
|
|
+#endif
|
|
|
+ bus = pci_create_root_bus(pcie->dev, 0, &iproc_pcie_ops, sysdata, res);
|
|
|
if (!bus) {
|
|
|
dev_err(pcie->dev, "unable to create PCI root bus\n");
|
|
|
ret = -ENOMEM;
|
|
@@ -229,7 +240,9 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
|
|
|
|
|
|
pci_scan_child_bus(bus);
|
|
|
pci_assign_unassigned_bus_resources(bus);
|
|
|
+#ifdef CONFIG_ARM
|
|
|
pci_fixup_irqs(pci_common_swizzle, pcie->map_irq);
|
|
|
+#endif
|
|
|
pci_bus_add_devices(bus);
|
|
|
|
|
|
return 0;
|