Skip to content

Commit

Permalink
xtensa: fix ioremap
Browse files Browse the repository at this point in the history
- fix ioremap_nocache to actually return non-cacheable address
- add explicit ioremap_cache
- fix KIO aperture checking arithmetic

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Chris Zankel <chris@zankel.net>
  • Loading branch information
Max Filippov authored and Chris Zankel committed Oct 3, 2012
1 parent af42e97 commit 02f3774
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions arch/xtensa/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@ static inline void * phys_to_virt(unsigned long address)
* Return the virtual (cached) address for the specified bus memory.
* Note that we currently don't support any address outside the KIO segment.
*/

static inline void *ioremap(unsigned long offset, unsigned long size)
static inline void __iomem *ioremap_nocache(unsigned long offset,
unsigned long size)
{
#ifdef CONFIG_MMU
if (offset >= XCHAL_KIO_PADDR
&& offset < XCHAL_KIO_PADDR + XCHAL_KIO_SIZE)
&& offset - XCHAL_KIO_PADDR < XCHAL_KIO_SIZE)
return (void*)(offset-XCHAL_KIO_PADDR+XCHAL_KIO_BYPASS_VADDR);
else
BUG();
Expand All @@ -81,11 +81,12 @@ static inline void *ioremap(unsigned long offset, unsigned long size)
#endif
}

static inline void *ioremap_nocache(unsigned long offset, unsigned long size)
static inline void __iomem *ioremap_cache(unsigned long offset,
unsigned long size)
{
#ifdef CONFIG_MMU
if (offset >= XCHAL_KIO_PADDR
&& offset < XCHAL_KIO_PADDR + XCHAL_KIO_SIZE)
&& offset - XCHAL_KIO_PADDR < XCHAL_KIO_SIZE)
return (void*)(offset-XCHAL_KIO_PADDR+XCHAL_KIO_CACHED_VADDR);
else
BUG();
Expand All @@ -94,7 +95,14 @@ static inline void *ioremap_nocache(unsigned long offset, unsigned long size)
#endif
}

static inline void iounmap(void *addr)
#define ioremap_wc ioremap_nocache

static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
{
return ioremap_nocache(offset, size);
}

static inline void iounmap(volatile void __iomem *addr)
{
}

Expand Down

0 comments on commit 02f3774

Please sign in to comment.