From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B1AEEC433EF for ; Sun, 9 Jan 2022 21:39:50 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 1EC9C80636; Sun, 9 Jan 2022 22:39:48 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id 6D8A580FF4; Sun, 9 Jan 2022 22:39:46 +0100 (CET) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by phobos.denx.de (Postfix) with ESMTP id 52500805F9 for ; Sun, 9 Jan 2022 22:39:43 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=andre.przywara@arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 81D21ED1; Sun, 9 Jan 2022 13:39:42 -0800 (PST) Received: from slackpad.fritz.box (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4419E3F5A1; Sun, 9 Jan 2022 13:39:40 -0800 (PST) Date: Sun, 9 Jan 2022 21:39:03 +0000 From: Andre Przywara To: Tom Rini , Rick Chen , Leo Cc: Simon Glass , Heinrich Schuchardt , Alison Wang , Michael Walle , Nishanth Menon , Priyanka Singh , Peter Hoyes , Marek Vasut , u-boot@lists.denx.de, Patrice Chotard , Patrick Delaunay , Rasmus Villemoes Subject: Re: [PATCH 4/6] arm: Clean up asm/io.h Message-ID: <20220109213903.35417cb4@slackpad.fritz.box> In-Reply-To: <20220109173009.25522-5-andre.przywara@arm.com> References: <20220109173009.25522-1-andre.przywara@arm.com> <20220109173009.25522-5-andre.przywara@arm.com> Organization: Arm Ltd. X-Mailer: Claws Mail 3.17.1 (GTK+ 2.24.31; x86_64-slackware-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean On Sun, 9 Jan 2022 17:30:07 +0000 Andre Przywara 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 > --- > 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 > #include > #include > #include > #include > -#if 0 /* XXX###XXX */ > -#include > -#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 > -#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 > @@ -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 > #include >