diff options
Diffstat (limited to 'arch/arm/mm/ioremap.c')
-rw-r--r-- | arch/arm/mm/ioremap.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index b81dbf9ffb77..18373f73f2fc 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -24,9 +24,10 @@ | |||
24 | #include <linux/errno.h> | 24 | #include <linux/errno.h> |
25 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
26 | #include <linux/vmalloc.h> | 26 | #include <linux/vmalloc.h> |
27 | #include <linux/io.h> | ||
27 | 28 | ||
29 | #include <asm/cputype.h> | ||
28 | #include <asm/cacheflush.h> | 30 | #include <asm/cacheflush.h> |
29 | #include <asm/io.h> | ||
30 | #include <asm/mmu_context.h> | 31 | #include <asm/mmu_context.h> |
31 | #include <asm/pgalloc.h> | 32 | #include <asm/pgalloc.h> |
32 | #include <asm/tlbflush.h> | 33 | #include <asm/tlbflush.h> |
@@ -55,8 +56,7 @@ static int remap_area_pte(pmd_t *pmd, unsigned long addr, unsigned long end, | |||
55 | if (!pte_none(*pte)) | 56 | if (!pte_none(*pte)) |
56 | goto bad; | 57 | goto bad; |
57 | 58 | ||
58 | set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot), | 59 | set_pte_ext(pte, pfn_pte(phys_addr >> PAGE_SHIFT, prot), 0); |
59 | type->prot_pte_ext); | ||
60 | phys_addr += PAGE_SIZE; | 60 | phys_addr += PAGE_SIZE; |
61 | } while (pte++, addr += PAGE_SIZE, addr != end); | 61 | } while (pte++, addr += PAGE_SIZE, addr != end); |
62 | return 0; | 62 | return 0; |
@@ -332,15 +332,14 @@ __arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype) | |||
332 | } | 332 | } |
333 | EXPORT_SYMBOL(__arm_ioremap); | 333 | EXPORT_SYMBOL(__arm_ioremap); |
334 | 334 | ||
335 | void __iounmap(volatile void __iomem *addr) | 335 | void __iounmap(volatile void __iomem *io_addr) |
336 | { | 336 | { |
337 | void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr); | ||
337 | #ifndef CONFIG_SMP | 338 | #ifndef CONFIG_SMP |
338 | struct vm_struct **p, *tmp; | 339 | struct vm_struct **p, *tmp; |
339 | #endif | 340 | #endif |
340 | unsigned int section_mapping = 0; | 341 | unsigned int section_mapping = 0; |
341 | 342 | ||
342 | addr = (volatile void __iomem *)(PAGE_MASK & (unsigned long)addr); | ||
343 | |||
344 | #ifndef CONFIG_SMP | 343 | #ifndef CONFIG_SMP |
345 | /* | 344 | /* |
346 | * If this is a section based mapping we need to handle it | 345 | * If this is a section based mapping we need to handle it |
@@ -351,7 +350,7 @@ void __iounmap(volatile void __iomem *addr) | |||
351 | */ | 350 | */ |
352 | write_lock(&vmlist_lock); | 351 | write_lock(&vmlist_lock); |
353 | for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { | 352 | for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { |
354 | if((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { | 353 | if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) { |
355 | if (tmp->flags & VM_ARM_SECTION_MAPPING) { | 354 | if (tmp->flags & VM_ARM_SECTION_MAPPING) { |
356 | *p = tmp->next; | 355 | *p = tmp->next; |
357 | unmap_area_sections((unsigned long)tmp->addr, | 356 | unmap_area_sections((unsigned long)tmp->addr, |
@@ -366,6 +365,6 @@ void __iounmap(volatile void __iomem *addr) | |||
366 | #endif | 365 | #endif |
367 | 366 | ||
368 | if (!section_mapping) | 367 | if (!section_mapping) |
369 | vunmap((void __force *)addr); | 368 | vunmap(addr); |
370 | } | 369 | } |
371 | EXPORT_SYMBOL(__iounmap); | 370 | EXPORT_SYMBOL(__iounmap); |