arch/*/io.h: remove ioremap_uc in some architectures

ioremap_uc() is only meaningful on old x86-32 systems with the PAT
extension, and on ia64 with its slightly unconventional ioremap()
behavior. So remove the ioremap_uc() definition in architecutures
other than x86 and ia64. These architectures all have asm-generic/io.h
included and will have the default ioremap_uc() definition which
returns NULL.

This changes the existing behaviour, while no need to worry about
any breakage because in the only callsite of ioremap_uc(), code
has been adjusted to eliminate the impact. Please see
atyfb_setup_generic() of drivers/video/fbdev/aty/atyfb_base.c.

If any new invocation of ioremap_uc() need be added, please consider
using ioremap() intead or adding a ARCH specific version if necessary.

Signed-off-by: Baoquan He <bhe@redhat.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Acked-by: Helge Deller <deller@gmx.de>  # parisc
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> (SuperH)
Cc: linux-alpha@vger.kernel.org
Cc: linux-hexagon@vger.kernel.org
Cc: linux-m68k@lists.linux-m68k.org
Cc: linux-mips@vger.kernel.org
Cc: linux-parisc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-sh@vger.kernel.org
Cc: sparclinux@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Baoquan He 2023-09-21 19:04:23 +08:00 committed by Arnd Bergmann
parent 4bfb53e7d3
commit 026246f114
9 changed files with 5 additions and 16 deletions

View File

@ -408,11 +408,12 @@ functions for details on the CPU side of things.
ioremap_uc() ioremap_uc()
------------ ------------
ioremap_uc() behaves like ioremap() except that on the x86 architecture without ioremap_uc() is only meaningful on old x86-32 systems with the PAT extension,
'PAT' mode, it marks memory as uncached even when the MTRR has designated and on ia64 with its slightly unconventional ioremap() behavior, everywhere
it as cacheable, see Documentation/arch/x86/pat.rst. elss ioremap_uc() defaults to return NULL.
Portable drivers should avoid the use of ioremap_uc().
Portable drivers should avoid the use of ioremap_uc(), use ioremap() instead.
ioremap_cache() ioremap_cache()
--------------- ---------------

View File

@ -308,7 +308,6 @@ static inline void __iomem *ioremap(unsigned long port, unsigned long size)
} }
#define ioremap_wc ioremap #define ioremap_wc ioremap
#define ioremap_uc ioremap
static inline void iounmap(volatile void __iomem *addr) static inline void iounmap(volatile void __iomem *addr)
{ {

View File

@ -174,9 +174,6 @@ static inline void writel(u32 data, volatile void __iomem *addr)
#define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \ #define _PAGE_IOREMAP (_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \
(__HEXAGON_C_DEV << 6)) (__HEXAGON_C_DEV << 6))
#define ioremap_uc(addr, size) ioremap((addr), (size))
#define __raw_writel writel #define __raw_writel writel
static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, static inline void memcpy_fromio(void *dst, const volatile void __iomem *src,

View File

@ -25,7 +25,6 @@ static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size)
return __ioremap(physaddr, size, IOMAP_NOCACHE_SER); return __ioremap(physaddr, size, IOMAP_NOCACHE_SER);
} }
#define ioremap_uc ioremap
#define ioremap_wt ioremap_wt #define ioremap_wt ioremap_wt
static inline void __iomem *ioremap_wt(unsigned long physaddr, static inline void __iomem *ioremap_wt(unsigned long physaddr,
unsigned long size) unsigned long size)

View File

@ -170,7 +170,6 @@ void iounmap(const volatile void __iomem *addr);
*/ */
#define ioremap(offset, size) \ #define ioremap(offset, size) \
ioremap_prot((offset), (size), _CACHE_UNCACHED) ioremap_prot((offset), (size), _CACHE_UNCACHED)
#define ioremap_uc ioremap
/* /*
* ioremap_cache - map bus memory into CPU space * ioremap_cache - map bus memory into CPU space

View File

@ -132,8 +132,6 @@ static inline void gsc_writeq(unsigned long long val, unsigned long addr)
#define ioremap_wc(addr, size) \ #define ioremap_wc(addr, size) \
ioremap_prot((addr), (size), _PAGE_IOREMAP) ioremap_prot((addr), (size), _PAGE_IOREMAP)
#define ioremap_uc(addr, size) \
ioremap_prot((addr), (size), _PAGE_IOREMAP)
#define pci_iounmap pci_iounmap #define pci_iounmap pci_iounmap

View File

@ -900,7 +900,6 @@ void __iomem *ioremap_wt(phys_addr_t address, unsigned long size);
#endif #endif
void __iomem *ioremap_coherent(phys_addr_t address, unsigned long size); void __iomem *ioremap_coherent(phys_addr_t address, unsigned long size);
#define ioremap_uc(addr, size) ioremap((addr), (size))
#define ioremap_cache(addr, size) \ #define ioremap_cache(addr, size) \
ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL)) ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL))

View File

@ -302,8 +302,6 @@ unsigned long long poke_real_address_q(unsigned long long addr,
ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL)) ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL))
#endif /* CONFIG_MMU */ #endif /* CONFIG_MMU */
#define ioremap_uc ioremap
/* /*
* Convert a physical pointer to a virtual kernel pointer for /dev/mem * Convert a physical pointer to a virtual kernel pointer for /dev/mem
* access * access

View File

@ -423,7 +423,6 @@ static inline void __iomem *ioremap(unsigned long offset, unsigned long size)
return (void __iomem *)offset; return (void __iomem *)offset;
} }
#define ioremap_uc(X,Y) ioremap((X),(Y))
#define ioremap_wc(X,Y) ioremap((X),(Y)) #define ioremap_wc(X,Y) ioremap((X),(Y))
#define ioremap_wt(X,Y) ioremap((X),(Y)) #define ioremap_wt(X,Y) ioremap((X),(Y))
static inline void __iomem *ioremap_np(unsigned long offset, unsigned long size) static inline void __iomem *ioremap_np(unsigned long offset, unsigned long size)