arm: Clean up asm/io.h
authorAndre Przywara <andre.przywara@arm.com>
Fri, 11 Feb 2022 11:29:37 +0000 (11:29 +0000)
committerTom Rini <trini@konsulko.com>
Wed, 2 Mar 2022 18:59:29 +0000 (13:59 -0500)
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.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
arch/arm/include/asm/io.h

index 36b8403..89b1015 100644 (file)
@@ -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))
@@ -248,13 +229,6 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
 #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
  *  -------------------------
  *
@@ -318,24 +292,12 @@ static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
 #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:
  */
 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>