Commit a5ecbab7 authored by Linus Walleij's avatar Linus Walleij
Browse files

ARM: integrator: remap PCIv3 base dynamically



Remove the static mapping for the PCIv3 PCI bridge controller
and do this dynamically when probing instead.

Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 207bcf45
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -325,7 +325,6 @@

#define PCI_MEMORY_VADDR		IOMEM(0xe8000000)
#define PCI_CONFIG_VADDR		IOMEM(0xec000000)
#define PCI_V3_VADDR			IOMEM(0xed000000)

/* ------------------------------------------------------------------------
 *  Integrator Interrupt Controllers
+0 −6
Original line number Diff line number Diff line
@@ -80,7 +80,6 @@ void __iomem *ap_syscon_base;
 * Logical      Physical
 * e8000000	40000000	PCI memory		PHYS_PCI_MEM_BASE	(max 512M)
 * ec000000	61000000	PCI config space	PHYS_PCI_CONFIG_BASE	(max 16M)
 * ed000000	62000000	PCI V3 regs		PHYS_PCI_V3_BASE	(max 64k)
 * fee00000	60000000	PCI IO			PHYS_PCI_IO_BASE	(max 16M)
 * ef000000			Cache flush
 * f1000000	10000000	Core module registers
@@ -140,11 +139,6 @@ static struct map_desc ap_io_desc[] __initdata __maybe_unused = {
		.pfn		= __phys_to_pfn(PHYS_PCI_CONFIG_BASE),
		.length		= SZ_16M,
		.type		= MT_DEVICE
	}, {
		.virtual	= (unsigned long)PCI_V3_VADDR,
		.pfn		= __phys_to_pfn(PHYS_PCI_V3_BASE),
		.length		= SZ_64K,
		.type		= MT_DEVICE
	}
};

+14 −6
Original line number Diff line number Diff line
@@ -260,15 +260,17 @@
 * the mappings into PCI memory.
 */

static void __iomem *pci_v3_base;

// V3 access routines
#define v3_writeb(o,v) __raw_writeb(v, PCI_V3_VADDR + (unsigned int)(o))
#define v3_readb(o)    (__raw_readb(PCI_V3_VADDR + (unsigned int)(o)))
#define v3_writeb(o,v) __raw_writeb(v, pci_v3_base + (unsigned int)(o))
#define v3_readb(o)    (__raw_readb(pci_v3_base + (unsigned int)(o)))

#define v3_writew(o,v) __raw_writew(v, PCI_V3_VADDR + (unsigned int)(o))
#define v3_readw(o)    (__raw_readw(PCI_V3_VADDR + (unsigned int)(o)))
#define v3_writew(o,v) __raw_writew(v, pci_v3_base + (unsigned int)(o))
#define v3_readw(o)    (__raw_readw(pci_v3_base + (unsigned int)(o)))

#define v3_writel(o,v) __raw_writel(v, PCI_V3_VADDR + (unsigned int)(o))
#define v3_readl(o)    (__raw_readl(PCI_V3_VADDR + (unsigned int)(o)))
#define v3_writel(o,v) __raw_writel(v, pci_v3_base + (unsigned int)(o))
#define v3_readl(o)    (__raw_readl(pci_v3_base + (unsigned int)(o)))

/*============================================================================
 *
@@ -835,6 +837,12 @@ static int __init pci_v3_probe(struct platform_device *pdev)
		return -ENODEV;
	}

	pci_v3_base = devm_ioremap(&pdev->dev, PHYS_PCI_V3_BASE, SZ_64K);
	if (!pci_v3_base) {
		dev_err(&pdev->dev, "unable to remap PCIv3 base\n");
		return -ENODEV;
	}

	ret = devm_request_irq(&pdev->dev, IRQ_AP_V3INT, v3_irq, 0, "V3", NULL);
	if (ret) {
		dev_err(&pdev->dev, "unable to grab PCI error interrupt: %d\n",