Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit acf2c968 authored by Paul Mundt's avatar Paul Mundt
Browse files

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
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -239,12 +239,14 @@ void __iomem *__ioremap_caller(unsigned long offset, unsigned long size,
void __iounmap(void __iomem *addr);

#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 void ioremap_fixed_init(void);
#else
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();
}
+1 −1
Original line number Diff line number Diff line
@@ -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 (!mem_init_done)
		return ioremap_fixed(phys_addr, size, pgprot);
		return ioremap_fixed(phys_addr, offset, size, pgprot);

	/*
	 * Ok, go for it..
+3 −19
Original line number Diff line number Diff line
@@ -45,12 +45,11 @@ void __init ioremap_fixed_init(void)
}

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;
	resource_size_t last_addr;
	struct ioremap_map *map;
	unsigned long offset;
	unsigned int nrpages;
	int i, slot;

@@ -67,18 +66,6 @@ ioremap_fixed(resource_size_t phys_addr, unsigned long size, pgprot_t prot)
	if (slot < 0)
		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.
	 */
@@ -111,7 +98,6 @@ int iounmap_fixed(void __iomem *addr)
	unsigned long offset;
	unsigned int nrpages;
	int i, slot;
	pgprot_t prot;

	slot = -1;
	for (i = 0; i < FIX_N_IOREMAPS; i++) {
@@ -133,11 +119,9 @@ int iounmap_fixed(void __iomem *addr)
	offset = virt_addr & ~PAGE_MASK;
	nrpages = PAGE_ALIGN(offset + map->size - 1) >> PAGE_SHIFT;

	pgprot_val(prot) = _PAGE_WIRED;

	idx = FIX_IOREMAP_BEGIN + slot + nrpages;
	while (nrpages > 0) {
		__clear_fixmap(idx, prot);
		__clear_fixmap(idx, __pgprot(_PAGE_WIRED));
		--idx;
		--nrpages;
	}