sh: Make iounmap_fixed() return success/failure for iounmap() path.
This converts iounmap_fixed() to return success/error if it handled the unmap request or not. At the same time, drop the __init label, as this can be called in to later. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
0b59e38ffa
commit
4f744affc3
|
@ -22,6 +22,7 @@
|
||||||
* for old compat code for I/O offseting to SuperIOs, all of which are
|
* for old compat code for I/O offseting to SuperIOs, all of which are
|
||||||
* better handled through the machvec ioport mapping routines these days.
|
* better handled through the machvec ioport mapping routines these days.
|
||||||
*/
|
*/
|
||||||
|
#include <linux/errno.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/addrspace.h>
|
#include <asm/addrspace.h>
|
||||||
|
@ -239,7 +240,7 @@ 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, pgprot_t);
|
||||||
extern void 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 *
|
||||||
|
@ -249,7 +250,7 @@ ioremap_fixed(resource_size t phys_addr, unsigned long size, pgprot_t prot)
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void ioremap_fixed_init(void) { }
|
static inline void ioremap_fixed_init(void) { }
|
||||||
static inline void iounmap_fixed(void __iomem *addr) { }
|
static inline int iounmap_fixed(void __iomem *addr) { return -EINVAL; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline void __iomem *
|
static inline void __iomem *
|
||||||
|
|
|
@ -103,7 +103,7 @@ ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
|
||||||
return map->addr;
|
return map->addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init iounmap_fixed(void __iomem *addr)
|
int iounmap_fixed(void __iomem *addr)
|
||||||
{
|
{
|
||||||
enum fixed_addresses idx;
|
enum fixed_addresses idx;
|
||||||
unsigned long virt_addr;
|
unsigned long virt_addr;
|
||||||
|
@ -122,8 +122,11 @@ void __init iounmap_fixed(void __iomem *addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we don't match, it's not for us.
|
||||||
|
*/
|
||||||
if (slot < 0)
|
if (slot < 0)
|
||||||
return;
|
return -EINVAL;
|
||||||
|
|
||||||
virt_addr = (unsigned long)addr;
|
virt_addr = (unsigned long)addr;
|
||||||
|
|
||||||
|
@ -141,4 +144,6 @@ void __init iounmap_fixed(void __iomem *addr)
|
||||||
|
|
||||||
map->size = 0;
|
map->size = 0;
|
||||||
map->addr = NULL;
|
map->addr = NULL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue