All of lore.kernel.org
 help / color / mirror / Atom feed
From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 21/30] ARM: Add fixed PCI i/o mapping
Date: Thu,  1 Mar 2012 21:13:33 -0600	[thread overview]
Message-ID: <1330658022-14559-22-git-send-email-robherring2@gmail.com> (raw)
In-Reply-To: <1330658022-14559-1-git-send-email-robherring2@gmail.com>

From: Rob Herring <rob.herring@calxeda.com>

This adds a fixed virtual mapping for PCI i/o addresses. The mapping is
located at the last 1MB of vmalloc region (0xfef00000).

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
---
 arch/arm/include/asm/io.h       |    5 +++++
 arch/arm/include/asm/mach/pci.h |   18 ++++++++++++++++++
 arch/arm/kernel/bios32.c        |   23 +++++++++++++++++++++++
 3 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index d7861b9..5a01930 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -106,11 +106,16 @@ static inline void __iomem *__typesafe_io(unsigned long addr)
 #define __iowmb()		do { } while (0)
 #endif
 
+#define PCI_IO_VIRT_BASE	0xfef00000
+
 /*
  * Now, pick up the machine-defined IO definitions
  */
 #ifdef CONFIG_NEED_MACH_IO_H
 #include <mach/io.h>
+#elif defined(CONFIG_PCI)
+#define IO_SPACE_LIMIT	((resource_size_t)0xfffff)
+#define __io(a)		__typesafe_io(PCI_IO_VIRT_BASE + ((a) & IO_SPACE_LIMIT))
 #else
 #define __io(a)		({ (void)(a); __typesafe_io(0); })
 #endif
diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h
index d943b7d..6d326d7 100644
--- a/arch/arm/include/asm/mach/pci.h
+++ b/arch/arm/include/asm/mach/pci.h
@@ -60,6 +60,24 @@ struct pci_sys_data {
 void pci_common_init(struct hw_pci *);
 
 /*
+ * Setup fixed I/O mapping. Must be called from .map_io function.
+ */
+#ifdef CONFIG_PCI
+extern void pci_map_io_pfn(unsigned long pfn[], int nr);
+#else
+static inline void pci_map_io_pfn(unsigned long pfn[], int nr) {}
+#endif
+static inline void __init pci_map_io_single_pfn(unsigned long pfn)
+{
+	pci_map_io_pfn(&pfn, 1);
+}
+
+static inline void __init pci_map_io_single(unsigned long paddr)
+{
+	pci_map_io_single_pfn(__phys_to_pfn(paddr));
+}
+
+/*
  * PCI controllers
  */
 extern int iop3xx_pci_setup(int nr, struct pci_sys_data *);
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index f58ba35..199f383 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -13,6 +13,7 @@
 #include <linux/io.h>
 
 #include <asm/mach-types.h>
+#include <asm/mach/map.h>
 #include <asm/mach/pci.h>
 
 static int debug_pci;
@@ -674,3 +675,25 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
 
 	return 0;
 }
+
+static struct map_desc pci_io_desc __initdata = {
+	.virtual	= PCI_IO_VIRT_BASE,
+	.length		= SZ_1M,
+	.type		= MT_DEVICE,
+};
+
+void __init pci_map_io_pfn(unsigned long pfn[], int nr)
+{
+	int i;
+
+	if (nr > 1)
+		pci_io_desc.length = SZ_64K;
+
+	for (i = 0; i < nr; i++) {
+		pci_io_desc.pfn = pfn[i];
+		iotable_init(&pci_io_desc, 1);
+
+		pci_io_desc.virtual += SZ_64K;
+	}
+}
+
-- 
1.7.5.4

  parent reply	other threads:[~2012-03-02  3:13 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-02  3:13 [PATCH v3 00/30] mach/io.h cleanup and removal Rob Herring
2012-03-02  3:13 ` [PATCH v3 01/30] usb: ohci-pxa27x: add explicit include of hardware.h Rob Herring
2012-03-02  3:13   ` Rob Herring
2012-03-02  3:13 ` [PATCH v3 02/30] ARM: provide runtime hook for ioremap/iounmap Rob Herring
2012-03-05 19:21   ` Nicolas Pitre
2012-03-05 20:13     ` Arnd Bergmann
2012-03-05 21:11       ` Nicolas Pitre
2012-03-06  4:02         ` [PATCH v4 1/4] " Rob Herring
2012-03-06  4:02           ` [PATCH v4 2/4] ARM: imx: convert to common runtime ioremap hook Rob Herring
2012-03-06  4:02           ` [PATCH v4 3/4] ARM: msm: use " Rob Herring
2012-03-06 20:59             ` David Brown
2012-03-06 21:10               ` Rob Herring
2012-03-06  4:03           ` [PATCH v4 4/4] ARM: iop13xx: " Rob Herring
2012-03-06 16:53           ` [PATCH v4 1/4] ARM: provide runtime hook for ioremap/iounmap Arnd Bergmann
2012-03-06 17:18           ` Nicolas Pitre
2012-03-06  4:07         ` [PATCH v3 02/30] " Rob Herring
2012-03-06 17:20           ` Nicolas Pitre
2012-03-06 21:45         ` [PATCH v5 1/7] " Rob Herring
2012-03-06 21:45           ` [PATCH v5 2/7] ARM: imx: convert to common runtime ioremap hook Rob Herring
2012-03-06 21:45           ` [PATCH v5 3/7] ARM: msm: use " Rob Herring
2012-03-06 21:45           ` [PATCH v5 4/7] ARM: iop13xx: " Rob Herring
2012-03-06 21:45           ` [PATCH v5 5/7] ARM: ixp4xx: " Rob Herring
2012-03-06 22:11             ` Russell King - ARM Linux
2012-03-06 22:49               ` Rob Herring
2012-03-06 22:50                 ` Rob Herring
2012-03-06 21:45           ` [PATCH v5 6/7] ARM: ebsa110: " Rob Herring
2012-03-06 22:06             ` Nicolas Pitre
2012-03-07  3:36               ` [PATCH] " Rob Herring
2012-03-06 21:45           ` [PATCH v5 7/7] ARM: remove compile time __arch_ioremap/__arch_iounmap Rob Herring
2012-03-06 22:01             ` Nicolas Pitre
2012-03-06 21:57           ` [PATCH v5 1/7] ARM: provide runtime hook for ioremap/iounmap Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 03/30] ARM: imx: convert to common runtime ioremap hook Rob Herring
2012-03-02  3:13 ` [PATCH v3 04/30] ARM: msm: use " Rob Herring
2012-03-02  3:13 ` [PATCH v3 05/30] ARM: msm: clean-up mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 06/30] ARM: iop13xx: use runtime ioremap hook Rob Herring
2012-03-02  3:13 ` [PATCH v3 07/30] ARM: iop13xx: move io.h externs to pci.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 08/30] ARM: OMAP: Remove remaining includes for mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 09/30] [media] davinci: remove includes of mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 10/30] ARM: davinci: remove unneeded mach/io.h include Rob Herring
2012-03-02  3:13 ` [PATCH v3 11/30] ARM: orion5x: clean-up mach/io.h Rob Herring
2012-03-05 19:14   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 12/30] ARM: tegra: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 13/30] ARM: ep93xx: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 14/30] ARM: at91: add explicit include of hardware.h to uncompressor Rob Herring
2012-03-02  3:13 ` [PATCH v3 15/30] ARM: dove: add explicit include of dove.h to addr-map.c Rob Herring
2012-03-05 19:26   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 16/30] ARM: clps711x: remove unneeded include of mach/io.h Rob Herring
2012-03-02  3:13 ` [PATCH v3 17/30] ARM: make mach/io.h include optional Rob Herring
2012-03-05 19:31   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 18/30] ARM: remove bunch of now unused mach/io.h files Rob Herring
2012-03-05 19:33   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 19/30] ARM: kill off __mem_pci Rob Herring
2012-03-02  3:13 ` [PATCH v3 20/30] iop13xx: use more regular PCI I/O space handling Rob Herring
2012-03-02  3:13 ` Rob Herring [this message]
2012-03-05 19:41   ` [PATCH v3 21/30] ARM: Add fixed PCI i/o mapping Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 22/30] ARM: tegra: use " Rob Herring
2012-03-02  6:59   ` Thierry Reding
2012-03-02  3:13 ` [PATCH v3 23/30] ARM: integrator: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 24/30] ARM: shark: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 25/30] ARM: footbridge: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 26/30] ARM: dove: " Rob Herring
2012-03-05 20:12   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 27/30] ARM: kirkwood: " Rob Herring
2012-03-05 19:59   ` Nicolas Pitre
2012-03-02  3:13 ` [PATCH v3 28/30] ARM: ixp23xx: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 29/30] ARM: iop13xx: " Rob Herring
2012-03-02  3:13 ` [PATCH v3 30/30] ARM: orion5x: " Rob Herring
2012-03-05 20:13   ` Nicolas Pitre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1330658022-14559-22-git-send-email-robherring2@gmail.com \
    --to=robherring2@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.