11 #include <linux/kernel.h>
12 #include <linux/pci.h>
32 static int num_pcie_ports;
33 static struct resource pcie_io_space;
52 static void __init mv78xx0_pcie_preinit(
void)
59 pcie_io_space.name =
"PCIe I/O Space";
65 panic(
"can't allocate PCIe I/O space");
67 if (num_pcie_ports > 7)
68 panic(
"invalid number of PCIe ports");
73 for (i = 0; i < num_pcie_ports; i++) {
77 "PCIe %d.%d MEM", pp->
maj, pp->
min);
82 pp->
res.end = start + size_each - 1;
86 panic(
"can't allocate PCIe MEM sub-space");
89 resource_size(&pp->
res),
101 if (nr >= num_pcie_ports)
148 spin_unlock_irqrestore(&pp->
conf_lock, flags);
153 static int pcie_wr_conf(
struct pci_bus *bus,
u32 devfn,
154 int where,
int size,
u32 val)
166 spin_unlock_irqrestore(&pp->
conf_lock, flags);
171 static struct pci_ops pcie_ops = {
172 .read = pcie_rd_conf,
173 .write = pcie_wr_conf,
198 if (nr < num_pcie_ports) {
220 .preinit = mv78xx0_pcie_preinit,
221 .setup = mv78xx0_pcie_setup,
222 .scan = mv78xx0_pcie_scan_bus,
223 .map_irq = mv78xx0_pcie_map_irq,
242 printk(
"link down, ignoring\n");