On Sun, 9 Jan 2022 17:30:07 +0000 Andre Przywara <andre.przyw...@arm.com> wrote:
Hi Rick, Leo: > asm/io.h is the header file containing the central MMIO accessor macros. > Judging by the header and the comments, it was apparently once copied > from the Linux kernel, but has deviated since then *heavily*. There is > absolutely no point in staying close to the original Linux code anymore, > so just remove the old cruft, by: > - removing pointless Linux history > - removing commented code > - removing outdated comments > - removing unused definitions (for mem_isa) > > This massively improves the readability of the file. it looks like arch/risc-v/include/asm/io.h is a copy of the ARM version, and includes the same pointless legacy. You might want to remove those parts there as well. Cheers, Andre > Signed-off-by: Andre Przywara <andre.przyw...@arm.com> > --- > arch/arm/include/asm/io.h | 98 +-------------------------------------- > 1 file changed, 2 insertions(+), 96 deletions(-) > > diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h > index 36b840378a9..89b1015bc4d 100644 > --- a/arch/arm/include/asm/io.h > +++ b/arch/arm/include/asm/io.h > @@ -1,45 +1,26 @@ > /* > - * linux/include/asm-arm/io.h > + * I/O device access primitives. Based on early versions from the Linux > kernel. > * > * Copyright (C) 1996-2000 Russell King > * > * This program is free software; you can redistribute it and/or modify > * it under the terms of the GNU General Public License version 2 as > * published by the Free Software Foundation. > - * > - * Modifications: > - * 16-Sep-1996 RMK Inlined the inx/outx functions & optimised for > both > - * constant addresses and variable addresses. > - * 04-Dec-1997 RMK Moved a lot of this stuff to the new > architecture > - * specific IO header files. > - * 27-Mar-1999 PJB Second parameter of memcpy_toio is const.. > - * 04-Apr-1999 PJB Added check_signature. > - * 12-Dec-1999 RMK More cleanups > - * 18-Jun-2000 RMK Removed virt_to_* and friends definitions > */ > #ifndef __ASM_ARM_IO_H > #define __ASM_ARM_IO_H > > -#ifdef __KERNEL__ > - > #include <linux/types.h> > #include <linux/kernel.h> > #include <asm/byteorder.h> > #include <asm/memory.h> > #include <asm/barriers.h> > -#if 0 /* XXX###XXX */ > -#include <asm/arch/hardware.h> > -#endif /* XXX###XXX */ > > static inline void sync(void) > { > } > > -/* > - * Generic virtual read/write. Note that we don't support half-word > - * read/writes. We define __arch_*[bl] here, and leave __arch_*w > - * to the architecture specific code. > - */ > +/* Generic virtual read/write. */ > #define __arch_getb(a) (*(volatile unsigned char *)(a)) > #define __arch_getw(a) (*(volatile unsigned short > *)(a)) > #define __arch_getl(a) (*(volatile unsigned int *)(a)) > @@ -247,13 +228,6 @@ static inline void __raw_readsl(unsigned long addr, void > *data, int longlen) > #define setbits_64(addr, set) setbits(64, addr, set) > #define clrsetbits_64(addr, clear, set) clrsetbits(64, addr, clear, set) > > -/* > - * Now, pick up the machine-defined IO definitions > - */ > -#if 0 /* XXX###XXX */ > -#include <asm/arch/io.h> > -#endif /* XXX###XXX */ > - > /* > * IO port access primitives > * ------------------------- > @@ -317,16 +291,6 @@ static inline void __raw_readsl(unsigned long addr, void > *data, int longlen) > #define writesb(a, d, s) __raw_writesb((unsigned long)a, d, s) > #define readsb(a, d, s) __raw_readsb((unsigned long)a, d, s) > > -/* > - * DMA-consistent mapping functions. These allocate/free a region of > - * uncached, unwrite-buffered mapped memory space for use with DMA > - * devices. This is the "generic" version. The PCI specific version > - * is in pci.h > - */ > -extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle); > -extern void consistent_free(void *vaddr, size_t size, dma_addr_t handle); > -extern void consistent_sync(void *vaddr, size_t size, int rw); > - > /* > * String version of IO memory access ops: > */ > @@ -334,8 +298,6 @@ extern void _memcpy_fromio(void *, unsigned long, size_t); > extern void _memcpy_toio(unsigned long, const void *, size_t); > extern void _memset_io(unsigned long, int, size_t); > > -extern void __readwrite_bug(const char *fn); > - > /* Optimized copy functions to read from/write to IO sapce */ > #ifdef CONFIG_ARM64 > #include <cpu_func.h> > @@ -441,62 +403,6 @@ void __memset_io(volatile void __iomem *dst, int c, > size_t count) > #define memcpy_toio(a, b, c) memcpy((void *)(a), (b), (c)) > #endif > > -/* > - * If this architecture has ISA IO, then define the isa_read/isa_write > - * macros. > - */ > -#ifdef __mem_isa > - > -#define isa_readb(addr) __raw_readb(__mem_isa(addr)) > -#define isa_readw(addr) __raw_readw(__mem_isa(addr)) > -#define isa_readl(addr) __raw_readl(__mem_isa(addr)) > -#define isa_writeb(val,addr) __raw_writeb(val,__mem_isa(addr)) > -#define isa_writew(val,addr) __raw_writew(val,__mem_isa(addr)) > -#define isa_writel(val,addr) __raw_writel(val,__mem_isa(addr)) > -#define isa_memset_io(a,b,c) _memset_io(__mem_isa(a),(b),(c)) > -#define isa_memcpy_fromio(a,b,c) _memcpy_fromio((a),__mem_isa(b),(c)) > -#define isa_memcpy_toio(a,b,c) > _memcpy_toio(__mem_isa((a)),(b),(c)) > - > -#define isa_eth_io_copy_and_sum(a,b,c,d) \ > - eth_copy_and_sum((a),__mem_isa(b),(c),(d)) > - > -static inline int > -isa_check_signature(unsigned long io_addr, const unsigned char *signature, > - int length) > -{ > - int retval = 0; > - do { > - if (isa_readb(io_addr) != *signature) > - goto out; > - io_addr++; > - signature++; > - length--; > - } while (length); > - retval = 1; > -out: > - return retval; > -} > - > -#else /* __mem_isa */ > - > -#define isa_readb(addr) (__readwrite_bug("isa_readb"),0) > -#define isa_readw(addr) (__readwrite_bug("isa_readw"),0) > -#define isa_readl(addr) (__readwrite_bug("isa_readl"),0) > -#define isa_writeb(val,addr) __readwrite_bug("isa_writeb") > -#define isa_writew(val,addr) __readwrite_bug("isa_writew") > -#define isa_writel(val,addr) __readwrite_bug("isa_writel") > -#define isa_memset_io(a,b,c) __readwrite_bug("isa_memset_io") > -#define isa_memcpy_fromio(a,b,c) __readwrite_bug("isa_memcpy_fromio") > -#define isa_memcpy_toio(a,b,c) > __readwrite_bug("isa_memcpy_toio") > - > -#define isa_eth_io_copy_and_sum(a,b,c,d) \ > - __readwrite_bug("isa_eth_io_copy_and_sum") > - > -#define isa_check_signature(io,sig,len) (0) > - > -#endif /* __mem_isa */ > -#endif /* __KERNEL__ */ > - > #include <asm-generic/io.h> > #include <iotrace.h> >