diff options
author | Quinn Jensen <quinn.jensen@freescale.com> | 2007-10-24 21:25:19 -0600 |
---|---|---|
committer | Quinn Jensen <quinn.jensen@freescale.com> | 2007-10-24 21:25:19 -0600 |
commit | ae800b8c0e127e6f58c00fc1aed85ec87288f212 (patch) | |
tree | 5cea30010cbffed221dd62672e2e322c57761942 /arch | |
parent | 5f4f72844194949c73457d0943ff5d4d1bb1f3ac (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.c | 75 |
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); |