summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorQuinn Jensen <quinn.jensen@freescale.com>2007-10-24 21:25:19 -0600
committerQuinn Jensen <quinn.jensen@freescale.com>2007-10-24 21:25:19 -0600
commitae800b8c0e127e6f58c00fc1aed85ec87288f212 (patch)
tree5cea30010cbffed221dd62672e2e322c57761942 /arch
parent5f4f72844194949c73457d0943ff5d4d1bb1f3ac (diff)
CR ENGR00050502 add custom ioremap
Patch for CR ENGR00050502: add custom ioremap function to ensure IO register access through peripheral port. Applies to linux 2.6.22 kernel on MX platforms. http://www.bitshrine.org/gpp/linux-2.6.22-mx-CR-ENGR00050502-add-custom-ioremap.patch
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/plat-mxc/io.c75
1 files changed, 24 insertions, 51 deletions
diff --git a/arch/arm/plat-mxc/io.c b/arch/arm/plat-mxc/io.c
index ba6cc78055df..ee42c048d72d 100644
--- a/arch/arm/plat-mxc/io.c
+++ b/arch/arm/plat-mxc/io.c
@@ -1,68 +1,41 @@
/*
- * 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.
+ * Copyright 2007 Freescale Semiconductor, Inc. All Rights Reserved.
+ */
+
+/*
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
*
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
*/
+
+/*
+ * mxc custom ioremap implementation.
+ */
+
#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)
+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
+ if (mtype == MT_DEVICE && IS_MEM_DEVICE_NONSHARED(cookie)) {
+ mtype = MT_DEVICE_NONSHARED;
}
-
- return retval;
+ return __arm_ioremap(cookie, size, mtype);
}
+
EXPORT_SYMBOL(__mxc_ioremap);
-void __mxc_iounmap(void __iomem *addr)
+void __mxc_iounmap(void __iomem * addr)
{
- if (IS_STATIC_MAPPED((unsigned long)addr))
- return;
+ extern void __iounmap(volatile void __iomem * addr);
+
__iounmap(addr);
}
-EXPORT_SYMBOL(__mxc_iounmap);
-
-
+EXPORT_SYMBOL(__mxc_iounmap);