sh: pci: Support root complex config accesses on SH7786 PCIe.
authorPaul Mundt <lethal@linux-sh.org>
Mon, 20 Sep 2010 06:39:54 +0000 (15:39 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 20 Sep 2010 06:39:54 +0000 (15:39 +0900)
commit2c65d75ec4dde5e619a462e70cdd7b67e0e64bb8
tree92bf4545d694888073a39c963b1d4f278785642c
parentcabdf8bf488bfa3b565360b9fa1322d2db7747eb
sh: pci: Support root complex config accesses on SH7786 PCIe.

The SH7786 PCIe is presently unable to enumerate itself in root complex
mode, and has no visibility through either type 0 or type 1 accesses,
despite having a mostly sensible extended config space for each port.
Attempts to generate type 0 or type 1 config cycles result in completer
aborts, so we're ultimately forced to use SuperHyway transactions
instead.

As each port has a single port <-> device mapping that resolves for any
PCI_SLOT definition, we simply hijack devfn 0 for the SuperHyway
transaction and bump up the devfn limit.

With enumeration of the root complex now possible, we also need to insert
an early fixup to hide the BARs from the kernel. With all of that done,
it's now possible to use the pcieport services with all of the PCIe
ports, which is the first step to power management support.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/drivers/pci/ops-sh7786.c
arch/sh/drivers/pci/pcie-sh7786.c