]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/arm/mach-kirkwood/pcie.c
Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes...
[karo-tx-linux.git] / arch / arm / mach-kirkwood / pcie.c
index 513ad3102d7c192d2fdc00229b6cdb527b002d87..74b992d810ea0137c4919a13f18c68cd937422d2 100644 (file)
 #include <linux/pci.h>
 #include <linux/slab.h>
 #include <linux/mbus.h>
+#include <video/vga.h>
 #include <asm/irq.h>
 #include <asm/mach/pci.h>
 #include <plat/pcie.h>
 #include <mach/bridge-regs.h>
 #include "common.h"
 
+void kirkwood_enable_pcie(void)
+{
+       u32 curr = readl(CLOCK_GATING_CTRL);
+       if (!(curr & CGC_PEX0))
+               writel(curr | CGC_PEX0, CLOCK_GATING_CTRL);
+}
+
 void __init kirkwood_pcie_id(u32 *dev, u32 *rev)
 {
+       kirkwood_enable_pcie();
        *dev = orion_pcie_dev_id((void __iomem *)PCIE_VIRT_BASE);
        *rev = orion_pcie_rev((void __iomem *)PCIE_VIRT_BASE);
 }
@@ -236,7 +245,8 @@ kirkwood_pcie_scan_bus(int nr, struct pci_sys_data *sys)
        return bus;
 }
 
-static int __init kirkwood_pcie_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
+static int __init kirkwood_pcie_map_irq(const struct pci_dev *dev, u8 slot,
+       u8 pin)
 {
        struct pcie_port *pp = bus_to_port(dev->bus);
 
@@ -263,6 +273,8 @@ static void __init add_pcie_port(int index, unsigned long base)
 
 void __init kirkwood_pcie_init(unsigned int portmask)
 {
+       vga_base = KIRKWOOD_PCIE_MEM_PHYS_BASE;
+
        if (portmask & KW_PCIE0)
                add_pcie_port(0, PCIE_VIRT_BASE);