Commit acf2c968 authored by Paul Mundt's avatar Paul Mundt

sh: Kill off duplicate address alignment in ioremap_fixed().

This is already taken care of in the top-level ioremap, and now that
no one should be calling ioremap_fixed() directly we can simply throw the
mapping displacement in as an additional argument.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent d57d6408
...@@ -239,12 +239,14 @@ void __iomem *__ioremap_caller(unsigned long offset, unsigned long size, ...@@ -239,12 +239,14 @@ void __iomem *__ioremap_caller(unsigned long offset, unsigned long size,
void __iounmap(void __iomem *addr); void __iounmap(void __iomem *addr);
#ifdef CONFIG_IOREMAP_FIXED #ifdef CONFIG_IOREMAP_FIXED
extern void __iomem *ioremap_fixed(resource_size_t, unsigned long, pgprot_t); extern void __iomem *ioremap_fixed(resource_size_t, unsigned long,
unsigned long, pgprot_t);
extern int iounmap_fixed(void __iomem *); extern int iounmap_fixed(void __iomem *);
extern void ioremap_fixed_init(void); extern void ioremap_fixed_init(void);
#else #else
static inline void __iomem * static inline void __iomem *
ioremap_fixed(resource_size t phys_addr, unsigned long size, pgprot_t prot) ioremap_fixed(resource_size t phys_addr, unsigned long offset,
unsigned long size, pgprot_t prot)
{ {
BUG(); BUG();
} }
......
...@@ -68,7 +68,7 @@ __ioremap_caller(unsigned long phys_addr, unsigned long size, ...@@ -68,7 +68,7 @@ __ioremap_caller(unsigned long phys_addr, unsigned long size,
* If we can't yet use the regular approach, go the fixmap route. * If we can't yet use the regular approach, go the fixmap route.
*/ */
if (!mem_init_done) if (!mem_init_done)
return ioremap_fixed(phys_addr, size, pgprot); return ioremap_fixed(phys_addr, offset, size, pgprot);
/* /*
* Ok, go for it.. * Ok, go for it..
......
...@@ -45,12 +45,11 @@ void __init ioremap_fixed_init(void) ...@@ -45,12 +45,11 @@ void __init ioremap_fixed_init(void)
} }
void __init __iomem * void __init __iomem *
ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot) ioremap_fixed(resource_size_t phys_addr, unsigned long offset,
unsigned long size, pgprot_t prot)
{ {
enum fixed_addresses idx0, idx; enum fixed_addresses idx0, idx;
resource_size_t last_addr;
struct ioremap_map *map; struct ioremap_map *map;
unsigned long offset;
unsigned int nrpages; unsigned int nrpages;
int i, slot; int i, slot;
...@@ -67,18 +66,6 @@ ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot) ...@@ -67,18 +66,6 @@ ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
if (slot < 0) if (slot < 0)
return NULL; return NULL;
/* Don't allow wraparound or zero size */
last_addr = phys_addr + size - 1;
if (!size || last_addr < phys_addr)
return NULL;
/*
* Fixmap mappings have to be page-aligned
*/
offset = phys_addr & ~PAGE_MASK;
phys_addr &= PAGE_MASK;
size = PAGE_ALIGN(last_addr + 1) - phys_addr;
/* /*
* Mappings have to fit in the FIX_IOREMAP area. * Mappings have to fit in the FIX_IOREMAP area.
*/ */
...@@ -111,7 +98,6 @@ int iounmap_fixed(void __iomem *addr) ...@@ -111,7 +98,6 @@ int iounmap_fixed(void __iomem *addr)
unsigned long offset; unsigned long offset;
unsigned int nrpages; unsigned int nrpages;
int i, slot; int i, slot;
pgprot_t prot;
slot = -1; slot = -1;
for (i = 0; i < FIX_N_IOREMAPS; i++) { for (i = 0; i < FIX_N_IOREMAPS; i++) {
...@@ -133,11 +119,9 @@ int iounmap_fixed(void __iomem *addr) ...@@ -133,11 +119,9 @@ int iounmap_fixed(void __iomem *addr)
offset = virt_addr & ~PAGE_MASK; offset = virt_addr & ~PAGE_MASK;
nrpages = PAGE_ALIGN(offset + map->size - 1) >> PAGE_SHIFT; nrpages = PAGE_ALIGN(offset + map->size - 1) >> PAGE_SHIFT;
pgprot_val(prot) = _PAGE_WIRED;
idx = FIX_IOREMAP_BEGIN + slot + nrpages; idx = FIX_IOREMAP_BEGIN + slot + nrpages;
while (nrpages > 0) { while (nrpages > 0) {
__clear_fixmap(idx, prot); __clear_fixmap(idx, __pgprot(_PAGE_WIRED));
--idx; --idx;
--nrpages; --nrpages;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment