summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-10-24 21:19:04 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-10-24 21:19:04 -0600
commit07f5bd7a7ca1cc269ecff76c0e89f868bc13019a (patch)
treea5eb254aa46c19118fb6af5cb942b15a1e92847f /arch
parent3958bcec9da87bb69d76618ebce07f2aae55602b (diff)
Sony's implementation of __mxc_ioremap, ported to our kernel.
Patch of Sony's implementation of __mxc_ioremap, ported to the linux 2.6.22 MX kernel. Copyright Sony Corporation. Note: The contents of this patch ends up being completely replaced by code written by Freescale. http://www.bitshrine.org/gpp/linux-2.6.22-mx-Sony-s-implementation-of-__mxc_ioremap-por.patch
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/plat-mxc/Makefile2
-rw-r--r--arch/arm/plat-mxc/io.c68
2 files changed, 69 insertions, 1 deletions
diff --git a/arch/arm/plat-mxc/Makefile b/arch/arm/plat-mxc/Makefile
index eed2fc287b7c..208cab211bbc 100644
--- a/arch/arm/plat-mxc/Makefile
+++ b/arch/arm/plat-mxc/Makefile
@@ -3,7 +3,7 @@
#
# Common support
-obj-y := gpio.o clock.o wdog.o snoop.o irq.o
+obj-y := gpio.o clock.o wdog.o snoop.o irq.o io.o
ifneq ($(CONFIG_ARCH_MX27),y)
obj-y += time.o cpu_common.o spba.o sdma/
diff --git a/arch/arm/plat-mxc/io.c b/arch/arm/plat-mxc/io.c
new file mode 100644
index 000000000000..ba6cc78055df
--- /dev/null
+++ b/arch/arm/plat-mxc/io.c
@@ -0,0 +1,68 @@
+/*
+ * MX27/MX31 custom ioremap implementation.
+ *
+ * Copyright 2007 Sony Corporation.
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; version 2 of the License.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <asm/hardware.h>
+#include <asm/io.h>
+
+void __iomem *__mxc_ioremap(unsigned long cookie, size_t size,
+ unsigned int mtype)
+{
+ unsigned long addr;
+ void __iomem *retval;
+
+ addr = IO_ADDRESS(cookie);
+
+#ifdef DEBUG
+ __print_symbol("%s ", __builtin_return_address(0));
+ printk("called %s(): ", __FUNCTION__);
+#endif
+
+ if (addr != 0xdeadbeef) {
+ retval = (void __iomem *)addr;
+#ifdef DEBUG
+ printk("0x%08lx -> 0x%p\n", cookie, retval);
+#endif
+ } else {
+ retval = __arm_ioremap(cookie, size, mtype);
+#ifdef DEBUG
+ printk("Not using static map: 0x%08lx -> 0x%p\n", cookie, retval);
+#endif
+ }
+
+ return retval;
+}
+EXPORT_SYMBOL(__mxc_ioremap);
+
+void __mxc_iounmap(void __iomem *addr)
+{
+ if (IS_STATIC_MAPPED((unsigned long)addr))
+ return;
+ __iounmap(addr);
+}
+EXPORT_SYMBOL(__mxc_iounmap);
+
+
+