Linux kernel and device drivers for NXP i.MX platforms
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: Arnd Bergmann <arnd@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Linus Walleij <linusw@kernel.org>,
	Russell King <linux@armlinux.org.uk>
Cc: Drew Fustini <fustini@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
	Liviu Dudau <liviu.dudau@arm.com>,
	Sudeep Holla <sudeep.holla@kernel.org>,
	Lorenzo Pieralisi <lpieralisi@kernel.org>,
	Frank Li <Frank.Li@nxp.com>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	Vladimir Zapolskiy <vz@mleia.com>, Stefan Agner <stefan@agner.ch>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Aaro Koskinen <aaro.koskinen@iki.fi>,
	Andreas Kemnade <andreas@kemnade.info>,
	Kevin Hilman <khilman@baylibre.com>,
	Roger Quadros <rogerq@kernel.org>,
	Tony Lindgren <tony@atomide.com>,
	Nicolas Ferre <nicolas.ferre@microchip.com>,
	Claudiu Beznea <claudiu.beznea@tuxon.dev>,
	Andrew Lunn <andrew@lunn.ch>,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
	Gregory Clement <gregory.clement@bootlin.com>,
	Robert Jarzmik <robert.jarzmik@free.fr>,
	Kristoffer Ericson <kristoffer.ericson@gmail.com>,
	Ethan Nelson-Moore <enelsonmoore@gmail.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Alexander Sverdlin <alexander.sverdlin@siemens.com>,
	Shawn Guo <shawnguo@kernel.org>,
	Karl Mehltretter <kmehltretter@gmail.com>,
	"David Hildenbrand (Arm)" <david@kernel.org>,
	Nicolas Pitre <npitre@baylibre.com>,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	imx@lists.linux.dev, linux-stm32@st-md-mailman.stormreply.com,
	linux-omap@vger.kernel.org, Ian Molton <spyro@f2s.com>,
	Jens Axboe <axboe@kernel.dk>, Helge Deller <deller@gmx.de>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	linux-block@vger.kernel.org, linux-serial@vger.kernel.org,
	linux-fbdev@vger.kernel.org
Subject: Re: [PATCH 03/13] ARM: remove riscpc
Date: Wed, 9 Sep 2026 10:04:11 +0200	[thread overview]
Message-ID: <8d5d04f6-50b3-49b3-93bf-e36d825963b3@suse.de> (raw)
In-Reply-To: <20260908152808.3928630-4-arnd@kernel.org>

Hi

Am 08.09.26 um 17:27 schrieb Arnd Bergmann:
[...]

>   lib/fonts/font_acorn_8x8.c                  |    4 -

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> # lib/fonts


>   41 files changed, 12 insertions(+), 3688 deletions(-)
>   delete mode 100644 arch/arm/boot/compressed/font.c
>   delete mode 100644 arch/arm/boot/compressed/ll_char_wr.S
>   delete mode 100644 arch/arm/configs/rpc_defconfig
>   delete mode 100644 arch/arm/include/asm/ecard.h
>   delete mode 100644 arch/arm/include/asm/hardware/ioc.h
>   delete mode 100644 arch/arm/include/asm/hardware/iomd.h
>   delete mode 100644 arch/arm/include/asm/hardware/memc.h
>   delete mode 100644 arch/arm/mach-rpc/Kconfig
>   delete mode 100644 arch/arm/mach-rpc/Makefile
>   delete mode 100644 arch/arm/mach-rpc/dma.c
>   delete mode 100644 arch/arm/mach-rpc/ecard-loader.S
>   delete mode 100644 arch/arm/mach-rpc/ecard.c
>   delete mode 100644 arch/arm/mach-rpc/ecard.h
>   delete mode 100644 arch/arm/mach-rpc/fiq.S
>   delete mode 100644 arch/arm/mach-rpc/floppydma.S
>   delete mode 100644 arch/arm/mach-rpc/include/mach/acornfb.h
>   delete mode 100644 arch/arm/mach-rpc/include/mach/hardware.h
>   delete mode 100644 arch/arm/mach-rpc/include/mach/io.h
>   delete mode 100644 arch/arm/mach-rpc/include/mach/irqs.h
>   delete mode 100644 arch/arm/mach-rpc/include/mach/isa-dma.h
>   delete mode 100644 arch/arm/mach-rpc/include/mach/memory.h
>   delete mode 100644 arch/arm/mach-rpc/include/mach/uncompress.h
>   delete mode 100644 arch/arm/mach-rpc/io-acorn.S
>   delete mode 100644 arch/arm/mach-rpc/irq.c
>   delete mode 100644 arch/arm/mach-rpc/riscpc.c
>   delete mode 100644 arch/arm/mach-rpc/time.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 4380d5660402..6e8fe7640064 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2350,12 +2350,6 @@ F:	Documentation/devicetree/bindings/display/arm,malidp.yaml
>   F:	Documentation/gpu/afbc.rst
>   F:	drivers/gpu/drm/arm/
>   
> -ARM MFM AND FLOPPY DRIVERS
> -M:	Ian Molton <spyro@f2s.com>
> -S:	Maintained
> -F:	arch/arm/include/asm/floppy.h
> -F:	arch/arm/mach-rpc/floppydma.S
> -
>   ARM PMU PROFILING AND DEBUGGING
>   M:	Will Deacon <will@kernel.org>
>   M:	Mark Rutland <mark.rutland@arm.com>
> @@ -3494,20 +3488,6 @@ F:	include/linux/soc/renesas/
>   N:	rcar
>   K:	\brenesas,
>   
> -ARM/RISCPC ARCHITECTURE
> -M:	Russell King <linux@armlinux.org.uk>
> -L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> -S:	Maintained
> -W:	http://www.armlinux.org.uk/
> -F:	arch/arm/include/asm/hardware/ioc.h
> -F:	arch/arm/include/asm/hardware/iomd.h
> -F:	arch/arm/include/asm/hardware/memc.h
> -F:	arch/arm/mach-rpc/
> -F:	drivers/net/ethernet/8390/etherh.c
> -F:	drivers/net/ethernet/i825xx/ether1*
> -F:	drivers/net/ethernet/seeq/ether3*
> -F:	drivers/scsi/arm/
> -
>   ARM/Rockchip SoC support
>   M:	Heiko Stuebner <heiko@sntech.de>
>   L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index c3d6b8abc815..5770deca136d 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -55,7 +55,7 @@ config ARM
>   	select ARCH_WANT_LD_ORPHAN_WARN
>   	select BINFMT_FLAT_ARGVP_ENVP_ON_STACK
>   	select BUILDTIME_TABLE_SORT if MMU
> -	select COMMON_CLK if !ARCH_RPC
> +	select COMMON_CLK
>   	select CLONE_BACKWARDS
>   	select CPU_PM if SUSPEND || CPU_IDLE
>   	select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
> @@ -155,13 +155,13 @@ config ARM
>   	select PCI_SYSCALL if PCI
>   	select PERF_USE_VMALLOC
>   	select RTC_LIB
> -	select SPARSE_IRQ if !ARCH_RPC
> +	select SPARSE_IRQ
>   	select SYS_SUPPORTS_APM_EMULATION
>   	select THREAD_INFO_IN_TASK
>   	select TIMER_OF if OF
>   	select HAVE_ARCH_VMAP_STACK if MMU && ARM_HAS_GROUP_RELOCS
>   	select TRACE_IRQFLAGS_SUPPORT if !CPU_V7M
> -	select USE_OF if !ARCH_RPC
> +	select USE_OF
>   	# Above selects are sorted alphabetically; please add new ones
>   	# according to that.  Thanks.
>   	help
> @@ -277,25 +277,11 @@ config ARM_PATCH_PHYS_VIRT
>   	  this feature (eg, building a kernel for a single machine) and
>   	  you need to shrink the kernel to the minimal size.
>   
> -config NEED_MACH_IO_H
> -	bool
> -	help
> -	  Select this when mach/io.h is required to provide special
> -	  definitions for this platform.  The need for mach/io.h should
> -	  be avoided when possible.
> -
> -config NEED_MACH_MEMORY_H
> -	bool
> -	help
> -	  Select this when mach/memory.h is required to provide special
> -	  definitions for this platform.  The need for mach/memory.h should
> -	  be avoided when possible.
> -
>   config PHYS_OFFSET
>   	hex "Physical address of main memory" if MMU
>   	depends on !ARM_PATCH_PHYS_VIRT || !AUTO_ZRELADDR
>   	default DRAM_BASE if !MMU
> -	default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
> +	default 0x10000000 if ARCH_OMAP1
>   	default 0xa0000000 if ARCH_PXA
>   	default 0xc0000000 if ARCH_EP93XX
>   	default 0
> @@ -337,7 +323,7 @@ config ARCH_MMAP_RND_BITS_MAX
>   
>   config ARCH_MULTIPLATFORM
>   	bool "Require kernel to be portable to multiple machines" if EXPERT
> -	depends on MMU && !ARCH_RPC
> +	depends on MMU
>   	default y
>   	help
>   	  In general, all Arm machines can be supported in a single
> @@ -429,8 +415,6 @@ source "arch/arm/mach-qcom/Kconfig"
>   
>   source "arch/arm/mach-realtek/Kconfig"
>   
> -source "arch/arm/mach-rpc/Kconfig"
> -
>   source "arch/arm/mach-rockchip/Kconfig"
>   
>   source "arch/arm/mach-s3c/Kconfig"
> @@ -490,9 +474,6 @@ config ARCH_MPS2
>   	  This platform is scheduled for removal in early 2027
>   
>   # Definitions to make life easier
> -config ARCH_ACORN
> -	bool
> -
>   config PLAT_ORION
>   	bool
>   	select CLKSRC_MMIO
> @@ -1191,7 +1172,7 @@ config ARCH_SELECT_MEMORY_MODEL
>   	def_bool y
>   
>   config ARCH_FLATMEM_ENABLE
> -	def_bool !ARCH_RPC
> +	def_bool y
>   
>   config ARCH_SPARSEMEM_ENABLE
>   	def_bool y
> @@ -1594,7 +1575,7 @@ config ARCH_DEFAULT_CRASH_DUMP
>   
>   config AUTO_ZRELADDR
>   	bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
> -	default !ARCH_RPC
> +	default y
>   	help
>   	  ZRELADDR is the physical address where the decompressed kernel
>   	  image will be placed. If AUTO_ZRELADDR is selected, the address
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index f2a80955b7a0..56c090840c5a 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -1446,7 +1446,7 @@ config DEBUG_STM32_UART
>   config DEBUG_UART_FLOW_CONTROL
>   	bool "Enable flow control (CTS) for the debug UART"
>   	depends on DEBUG_LL
> -	default y if DEBUG_GEMINI || ARCH_RPC
> +	default y if DEBUG_GEMINI
>   	help
>   	  Some UART ports are connected to terminals that will use modem
>   	  control signals to indicate whether they are ready to receive text.
> @@ -1516,7 +1516,7 @@ config DEBUG_UART_PL01X
>   
>   # Compatibility options for 8250
>   config DEBUG_UART_8250
> -	def_bool ARCH_IXP4XX || ARCH_RPC
> +	def_bool ARCH_IXP4XX
>   
>   config DEBUG_UART_PHYS
>   	hex "Physical base address of debug UART"
> @@ -1527,7 +1527,6 @@ config DEBUG_UART_PHYS
>   	default 0x01f02800 if DEBUG_SUNXI_R_UART
>   	default 0x02530c00 if DEBUG_KEYSTONE_UART0
>   	default 0x02531000 if DEBUG_KEYSTONE_UART1
> -	default 0x03010fe0 if ARCH_RPC
>   	default 0x07000000 if DEBUG_SUN9I_UART0
>   	default 0x09530000 if DEBUG_STIH418_SBC_ASC0
>   	default 0x10009000 if DEBUG_REALVIEW_STD_PORT || \
> @@ -1654,7 +1653,6 @@ config DEBUG_UART_VIRT
>   	default 0xc881f000 if DEBUG_RV1108_UART2
>   	default 0xc8821000 if DEBUG_RV1108_UART1
>   	default 0xc8912000 if DEBUG_RV1108_UART0
> -	default 0xe0010fe0 if ARCH_RPC
>   	default 0xe0824200 if DEBUG_AT91_SAMA7G5_FLEXCOM3
>   	default 0xf0010000 if DEBUG_ASM9260_UART
>   	default 0xf0100000 if DEBUG_DIGICOLOR_UA0
> @@ -1779,7 +1777,6 @@ config DEBUG_UART_8250_PALMCHIP
>   config DEBUG_UNCOMPRESS
>   	bool "Enable decompressor debugging via DEBUG_LL output"
>   	depends on !ARCH_MULTIPLATFORM
> -	depends on !ARCH_RPC
>   	depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
>   		     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
>   		     !DEBUG_BRCMSTB_UART && !DEBUG_SEMIHOSTING
> @@ -1789,7 +1786,6 @@ config DEBUG_UNCOMPRESS
>   
>   config UNCOMPRESS_INCLUDE
>   	string
> -	default "mach/uncompress.h" if ARCH_RPC
>   	default "debug/uncompress.h"
>   
>   config EARLY_PRINTK
> diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
> index 12c61684b97f..1e47bf10069d 100644
> --- a/arch/arm/boot/bootp/Makefile
> +++ b/arch/arm/boot/bootp/Makefile
> @@ -19,8 +19,6 @@ add_hex = $(shell printf 0x%x $$(( $(1) + $(2) )) )
>   PARAMS_PHYS := $(call add_hex, $(PHYS_OFFSET), 0x100)
>   
>   # guess an initrd location if possible
> -initrd_offset-$(CONFIG_ARCH_RPC)	+= 0x08000000
> -INITRD_OFFSET := $(initrd_offset-y)
>   ifdef INITRD_OFFSET
>   INITRD_PHYS := $(call add_hex, $(PHYS_OFFSET), $(INITRD_OFFSET))
>   endif
> diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
> index d8d81ba741a2..32def10f5e03 100644
> --- a/arch/arm/boot/compressed/Makefile
> +++ b/arch/arm/boot/compressed/Makefile
> @@ -25,10 +25,6 @@ endif
>   #
>   # Architecture dependencies
>   #
> -ifeq ($(CONFIG_ARCH_ACORN),y)
> -OBJS		+= ll_char_wr.o font.o
> -endif
> -
>   ifeq ($(CONFIG_CPU_XSCALE),y)
>   OBJS		+= head-xscale.o
>   endif
> diff --git a/arch/arm/boot/compressed/font.c b/arch/arm/boot/compressed/font.c
> deleted file mode 100644
> index 46a677649db4..000000000000
> --- a/arch/arm/boot/compressed/font.c
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -#include "../../../../lib/fonts/font_acorn_8x8.c"
> diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
> index 845abffbc2d6..af579905b630 100644
> --- a/arch/arm/boot/compressed/head.S
> +++ b/arch/arm/boot/compressed/head.S
> @@ -668,14 +668,6 @@ LC1:		.word	.L_user_stack_end - LC1	@ sp
>   .Linflated_image_size_offset:
>   		.long	(input_data_end - 4) - .
>   
> -#ifdef CONFIG_ARCH_RPC
> -		.globl	params
> -params:		ldr	r0, =0x10000100		@ params_phys for RPC
> -		mov	pc, lr
> -		.ltorg
> -		.align
> -#endif
> -
>   /*
>    * dcache_line_size - get the minimum D-cache line size from the CTR register
>    * on ARMv7.
> diff --git a/arch/arm/boot/compressed/ll_char_wr.S b/arch/arm/boot/compressed/ll_char_wr.S
> deleted file mode 100644
> index 1ec8cb2898b1..000000000000
> --- a/arch/arm/boot/compressed/ll_char_wr.S
> +++ /dev/null
> @@ -1,131 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  linux/arch/arm/lib/ll_char_wr.S
> - *
> - *  Copyright (C) 1995, 1996 Russell King.
> - *
> - *  Speedups & 1bpp code (C) 1996 Philip Blundell & Russell King.
> - *
> - *  10-04-96	RMK	Various cleanups & reduced register usage.
> - *  08-04-98	RMK	Shifts re-ordered
> - */
> -
> -@ Regs: [] = corruptible
> -@       {} = used
> -@       () = do not use
> -
> -#include <linux/linkage.h>
> -#include <asm/assembler.h>
> -	.text
> -
> -LC0:	.word	LC0
> -	.word	bytes_per_char_h
> -	.word	video_size_row
> -	.word	acorndata_8x8
> -	.word	con_charconvtable
> -
> -/*
> - * r0 = ptr
> - * r1 = char
> - * r2 = white
> - */
> -ENTRY(ll_write_char)
> -	stmfd	sp!, {r4 - r7, lr}
> -@
> -@ Smashable regs: {r0 - r3}, [r4 - r7], (r8 - fp), [ip], (sp), [lr], (pc)
> -@
> -	/*
> -	 * calculate offset into character table
> -	 */
> -	mov	r1, r1, lsl #3
> -	/*
> -	 * calculate offset required for each row.
> -	 */
> -	adr	ip, LC0
> -	ldmia	ip, {r3, r4, r5, r6, lr}
> -	sub	ip, ip, r3
> -	add	r6, r6, ip
> -	add	lr, lr, ip
> -	ldr	r4, [r4, ip]
> -	ldr	r5, [r5, ip]
> -	/*
> -	 * Go to resolution-dependent routine...
> -	 */
> -	cmp	r4, #4
> -	blt	Lrow1bpp
> -	add	r0, r0, r5, lsl #3		@ Move to bottom of character
> -	orr	r1, r1, #7
> -	ldrb	r7, [r6, r1]
> -	teq	r4, #8
> -	beq	Lrow8bpplp
> -@
> -@ Smashable regs: {r0 - r3}, [r4], {r5 - r7}, (r8 - fp), [ip], (sp), {lr}, (pc)
> -@
> -Lrow4bpplp:
> -	ldr	r7, [lr, r7, lsl #2]
> -	mul	r7, r2, r7
> -	sub	r1, r1, #1			@ avoid using r7 directly after
> -	str	r7, [r0, -r5]!
> -	ldrb	r7, [r6, r1]
> -	ldr	r7, [lr, r7, lsl #2]
> -	mul	r7, r2, r7
> -	tst	r1, #7				@ avoid using r7 directly after
> -	str	r7, [r0, -r5]!
> -	subne	r1, r1, #1
> -	ldrbne	r7, [r6, r1]
> -	bne	Lrow4bpplp
> -	ldmfd	sp!, {r4 - r7, pc}
> -
> -@
> -@ Smashable regs: {r0 - r3}, [r4], {r5 - r7}, (r8 - fp), [ip], (sp), {lr}, (pc)
> -@
> -Lrow8bpplp:
> -	mov	ip, r7, lsr #4
> -	ldr	ip, [lr, ip, lsl #2]
> -	mul	r4, r2, ip
> -	and	ip, r7, #15			@ avoid r4
> -	ldr	ip, [lr, ip, lsl #2]		@ avoid r4
> -	mul	ip, r2, ip			@ avoid r4
> -	sub	r1, r1, #1			@ avoid ip
> -	sub	r0, r0, r5			@ avoid ip
> -	stmia	r0, {r4, ip}
> -	ldrb	r7, [r6, r1]
> -	mov	ip, r7, lsr #4
> -	ldr	ip, [lr, ip, lsl #2]
> -	mul	r4, r2, ip
> -	and	ip, r7, #15			@ avoid r4
> -	ldr	ip, [lr, ip, lsl #2]		@ avoid r4
> -	mul	ip, r2, ip			@ avoid r4
> -	tst	r1, #7				@ avoid ip
> -	sub	r0, r0, r5			@ avoid ip
> -	stmia	r0, {r4, ip}
> -	subne	r1, r1, #1
> -	ldrbne	r7, [r6, r1]
> -	bne	Lrow8bpplp
> -	ldmfd	sp!, {r4 - r7, pc}
> -
> -@
> -@ Smashable regs: {r0 - r3}, [r4], {r5, r6}, [r7], (r8 - fp), [ip], (sp), [lr], (pc)
> -@
> -Lrow1bpp:
> -	add	r6, r6, r1
> -	ldmia	r6, {r4, r7}
> -	strb	r4, [r0], r5
> -	mov	r4, r4, lsr #8
> -	strb	r4, [r0], r5
> -	mov	r4, r4, lsr #8
> -	strb	r4, [r0], r5
> -	mov	r4, r4, lsr #8
> -	strb	r4, [r0], r5
> -	strb	r7, [r0], r5
> -	mov	r7, r7, lsr #8
> -	strb	r7, [r0], r5
> -	mov	r7, r7, lsr #8
> -	strb	r7, [r0], r5
> -	mov	r7, r7, lsr #8
> -	strb	r7, [r0], r5
> -	ldmfd	sp!, {r4 - r7, pc}
> -
> -	.bss
> -ENTRY(con_charconvtable)
> -	.space	1024
> diff --git a/arch/arm/configs/rpc_defconfig b/arch/arm/configs/rpc_defconfig
> deleted file mode 100644
> index edb52d56f679..000000000000
> --- a/arch/arm/configs/rpc_defconfig
> +++ /dev/null
> @@ -1,127 +0,0 @@
> -# CONFIG_LOCALVERSION_AUTO is not set
> -CONFIG_SYSVIPC=y
> -CONFIG_LOG_BUF_SHIFT=14
> -CONFIG_BLK_DEV_INITRD=y
> -CONFIG_EXPERT=y
> -CONFIG_ARCH_MULTI_V4=y
> -# CONFIG_ARCH_MULTI_V7 is not set
> -CONFIG_ARCH_RPC=y
> -CONFIG_CPU_SA110=y
> -CONFIG_FPE_NWFPE=y
> -# CONFIG_AEABI is not set
> -CONFIG_ATAGS=y
> -CONFIG_MODULES=y
> -CONFIG_MODULE_UNLOAD=y
> -CONFIG_PARTITION_ADVANCED=y
> -CONFIG_BSD_DISKLABEL=y
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -CONFIG_IP_MULTICAST=y
> -# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
> -# CONFIG_INET_XFRM_MODE_TUNNEL is not set
> -# CONFIG_INET_XFRM_MODE_BEET is not set
> -# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
> -# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
> -# CONFIG_INET6_XFRM_MODE_BEET is not set
> -CONFIG_PARPORT=y
> -CONFIG_PARPORT_PC=y
> -CONFIG_PARPORT_PC_FIFO=y
> -CONFIG_BLK_DEV_FD=y
> -CONFIG_BLK_DEV_LOOP=m
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_BLK_DEV_SD=y
> -CONFIG_CHR_DEV_ST=m
> -CONFIG_BLK_DEV_SR=y
> -CONFIG_CHR_DEV_SG=y
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_SCSI_CONSTANTS=y
> -CONFIG_SCSI_LOGGING=y
> -CONFIG_SCSI_ARXESCSI=m
> -CONFIG_SCSI_CUMANA_2=m
> -CONFIG_SCSI_EESOXSCSI=m
> -CONFIG_SCSI_POWERTECSCSI=y
> -CONFIG_SCSI_CUMANA_1=m
> -CONFIG_SCSI_OAK1=m
> -CONFIG_ATA=y
> -CONFIG_PATA_ICSIDE=y
> -CONFIG_PATA_PLATFORM=y
> -CONFIG_NETDEVICES=y
> -CONFIG_ARM_ETHER1=y
> -CONFIG_ARM_ETHER3=y
> -CONFIG_ARM_ETHERH=y
> -CONFIG_PPP=m
> -CONFIG_PPPOE=m
> -CONFIG_INPUT_EVDEV=y
> -# CONFIG_MOUSE_PS2 is not set
> -CONFIG_MOUSE_RISCPC=y
> -# CONFIG_SERIO_SERPORT is not set
> -CONFIG_LEGACY_PTY_COUNT=64
> -CONFIG_SERIAL_8250=y
> -CONFIG_SERIAL_8250_CONSOLE=y
> -CONFIG_SERIAL_8250_NR_UARTS=16
> -CONFIG_SERIAL_8250_RUNTIME_UARTS=8
> -CONFIG_SERIAL_8250_ACORN=y
> -CONFIG_PRINTER=m
> -# CONFIG_HW_RANDOM is not set
> -CONFIG_I2C=y
> -CONFIG_I2C_CHARDEV=y
> -# CONFIG_HWMON is not set
> -CONFIG_FB=y
> -CONFIG_FB_ACORN=y
> -CONFIG_FRAMEBUFFER_CONSOLE=y
> -CONFIG_LOGO=y
> -CONFIG_SOUND=m
> -CONFIG_SOUND_PRIME=m
> -CONFIG_SOUND_OSS=m
> -CONFIG_SOUND_VIDC=m
> -# CONFIG_USB_SUPPORT is not set
> -CONFIG_RTC_CLASS=y
> -CONFIG_RTC_DRV_PCF8583=y
> -CONFIG_EXT2_FS=y
> -CONFIG_EXT4_FS=y
> -CONFIG_AUTOFS_FS=m
> -CONFIG_ISO9660_FS=y
> -CONFIG_JOLIET=y
> -CONFIG_MSDOS_FS=m
> -CONFIG_VFAT_FS=m
> -CONFIG_ADFS_FS=y
> -CONFIG_NFS_FS=y
> -# CONFIG_ACORN_PARTITION_CUMANA is not set
> -# CONFIG_ACORN_PARTITION_EESOX is not set
> -CONFIG_NLS_CODEPAGE_437=m
> -CONFIG_NLS_CODEPAGE_737=m
> -CONFIG_NLS_CODEPAGE_775=m
> -CONFIG_NLS_CODEPAGE_850=m
> -CONFIG_NLS_CODEPAGE_852=m
> -CONFIG_NLS_CODEPAGE_855=m
> -CONFIG_NLS_CODEPAGE_857=m
> -CONFIG_NLS_CODEPAGE_860=m
> -CONFIG_NLS_CODEPAGE_861=m
> -CONFIG_NLS_CODEPAGE_862=m
> -CONFIG_NLS_CODEPAGE_863=m
> -CONFIG_NLS_CODEPAGE_864=m
> -CONFIG_NLS_CODEPAGE_865=m
> -CONFIG_NLS_CODEPAGE_866=m
> -CONFIG_NLS_CODEPAGE_869=m
> -CONFIG_NLS_CODEPAGE_874=m
> -CONFIG_NLS_ISO8859_8=m
> -CONFIG_NLS_ASCII=y
> -CONFIG_NLS_ISO8859_1=m
> -CONFIG_NLS_ISO8859_2=m
> -CONFIG_NLS_ISO8859_3=m
> -CONFIG_NLS_ISO8859_4=m
> -CONFIG_NLS_ISO8859_5=m
> -CONFIG_NLS_ISO8859_6=m
> -CONFIG_NLS_ISO8859_7=m
> -CONFIG_NLS_ISO8859_9=m
> -CONFIG_NLS_KOI8_R=m
> -CONFIG_FONTS=y
> -CONFIG_FONT_8x16=y
> -CONFIG_FONT_ACORN_8x8=y
> -CONFIG_DEBUG_KERNEL=y
> -CONFIG_MAGIC_SYSRQ=y
> -CONFIG_DEBUG_USER=y
> -CONFIG_DEBUG_LL=y
> -CONFIG_DEBUG_LL_UART_8250=y
> diff --git a/arch/arm/include/asm/ecard.h b/arch/arm/include/asm/ecard.h
> deleted file mode 100644
> index 7cbe001bf9cc..000000000000
> --- a/arch/arm/include/asm/ecard.h
> +++ /dev/null
> @@ -1,219 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/include/asm/ecard.h
> - *
> - * definitions for expansion cards
> - *
> - * This is a new system as from Linux 1.2.3
> - *
> - * Changelog:
> - *  11-12-1996	RMK	Further minor improvements
> - *  12-09-1997	RMK	Added interrupt enable/disable for card level
> - *
> - * Reference: Acorns Risc OS 3 Programmers Reference Manuals.
> - */
> -
> -#ifndef __ASM_ECARD_H
> -#define __ASM_ECARD_H
> -
> -/*
> - * Currently understood cards (but not necessarily
> - * supported):
> - *                        Manufacturer  Product ID
> - */
> -#define MANU_ACORN		0x0000
> -#define PROD_ACORN_SCSI			0x0002
> -#define PROD_ACORN_ETHER1		0x0003
> -#define PROD_ACORN_MFM			0x000b
> -
> -#define MANU_ANT2		0x0011
> -#define PROD_ANT_ETHER3			0x00a4
> -
> -#define MANU_ATOMWIDE		0x0017
> -#define PROD_ATOMWIDE_3PSERIAL		0x0090
> -
> -#define MANU_IRLAM_INSTRUMENTS	0x001f
> -#define MANU_IRLAM_INSTRUMENTS_ETHERN	0x5678
> -
> -#define MANU_OAK		0x0021
> -#define PROD_OAK_SCSI			0x0058
> -
> -#define MANU_MORLEY		0x002b
> -#define PROD_MORLEY_SCSI_UNCACHED	0x0067
> -
> -#define MANU_CUMANA		0x003a
> -#define PROD_CUMANA_SCSI_2		0x003a
> -#define PROD_CUMANA_SCSI_1		0x00a0
> -
> -#define MANU_ICS		0x003c
> -#define PROD_ICS_IDE			0x00ae
> -
> -#define MANU_ICS2		0x003d
> -#define PROD_ICS2_IDE			0x00ae
> -
> -#define MANU_SERPORT		0x003f
> -#define PROD_SERPORT_DSPORT		0x00b9
> -
> -#define MANU_ARXE		0x0041
> -#define PROD_ARXE_SCSI			0x00be
> -
> -#define MANU_I3			0x0046
> -#define PROD_I3_ETHERLAN500		0x00d4
> -#define PROD_I3_ETHERLAN600		0x00ec
> -#define PROD_I3_ETHERLAN600A		0x011e
> -
> -#define MANU_ANT		0x0053
> -#define PROD_ANT_ETHERM			0x00d8
> -#define PROD_ANT_ETHERB			0x00e4
> -
> -#define MANU_ALSYSTEMS		0x005b
> -#define PROD_ALSYS_SCSIATAPI		0x0107
> -
> -#define MANU_MCS		0x0063
> -#define PROD_MCS_CONNECT32		0x0125
> -
> -#define MANU_EESOX		0x0064
> -#define PROD_EESOX_SCSI2		0x008c
> -
> -#define MANU_YELLOWSTONE	0x0096
> -#define PROD_YELLOWSTONE_RAPIDE32	0x0120
> -
> -#ifdef ECARD_C
> -#define CONST
> -#else
> -#define CONST const
> -#endif
> -
> -#define MAX_ECARDS	9
> -
> -struct ecard_id {			/* Card ID structure		*/
> -	unsigned short	manufacturer;
> -	unsigned short	product;
> -	void		*data;
> -};
> -
> -struct in_ecid {			/* Packed card ID information	*/
> -	unsigned short	product;	/* Product code			*/
> -	unsigned short	manufacturer;	/* Manufacturer code		*/
> -	unsigned char	id:4;		/* Simple ID			*/
> -	unsigned char	cd:1;		/* Chunk dir present		*/
> -	unsigned char	is:1;		/* Interrupt status pointers	*/
> -	unsigned char	w:2;		/* Width			*/
> -	unsigned char	country;	/* Country			*/
> -	unsigned char	irqmask;	/* IRQ mask			*/
> -	unsigned char	fiqmask;	/* FIQ mask			*/
> -	unsigned long	irqoff;		/* IRQ offset			*/
> -	unsigned long	fiqoff;		/* FIQ offset			*/
> -};
> -
> -typedef struct expansion_card ecard_t;
> -typedef unsigned long *loader_t;
> -
> -typedef struct expansion_card_ops {	/* Card handler routines	*/
> -	void (*irqenable)(ecard_t *ec, int irqnr);
> -	void (*irqdisable)(ecard_t *ec, int irqnr);
> -	int  (*irqpending)(ecard_t *ec);
> -	void (*fiqenable)(ecard_t *ec, int fiqnr);
> -	void (*fiqdisable)(ecard_t *ec, int fiqnr);
> -	int  (*fiqpending)(ecard_t *ec);
> -} expansioncard_ops_t;
> -
> -#define ECARD_NUM_RESOURCES	(6)
> -
> -#define ECARD_RES_IOCSLOW	(0)
> -#define ECARD_RES_IOCMEDIUM	(1)
> -#define ECARD_RES_IOCFAST	(2)
> -#define ECARD_RES_IOCSYNC	(3)
> -#define ECARD_RES_MEMC		(4)
> -#define ECARD_RES_EASI		(5)
> -
> -#define ecard_resource_start(ec,nr)	((ec)->resource[nr].start)
> -#define ecard_resource_end(ec,nr)	((ec)->resource[nr].end)
> -#define ecard_resource_len(ec,nr)	((ec)->resource[nr].end - \
> -					 (ec)->resource[nr].start + 1)
> -#define ecard_resource_flags(ec,nr)	((ec)->resource[nr].flags)
> -
> -/*
> - * This contains all the info needed on an expansion card
> - */
> -struct expansion_card {
> -	struct expansion_card  *next;
> -
> -	struct device		dev;
> -	struct resource		resource[ECARD_NUM_RESOURCES];
> -
> -	/* Public data */
> -	void __iomem		*irqaddr;	/* address of IRQ register	*/
> -	void __iomem		*fiqaddr;	/* address of FIQ register	*/
> -	unsigned char		irqmask;	/* IRQ mask			*/
> -	unsigned char		fiqmask;	/* FIQ mask			*/
> -	unsigned char  		claimed;	/* Card claimed?		*/
> -	unsigned char		easi;		/* EASI card			*/
> -
> -	void			*irq_data;	/* Data for use for IRQ by card	*/
> -	void			*fiq_data;	/* Data for use for FIQ by card	*/
> -	const expansioncard_ops_t *ops;		/* Enable/Disable Ops for card	*/
> -
> -	CONST unsigned int	slot_no;	/* Slot number			*/
> -	CONST unsigned int	dma;		/* DMA number (for request_dma)	*/
> -	CONST unsigned int	irq;		/* IRQ number (for request_irq)	*/
> -	CONST unsigned int	fiq;		/* FIQ number (for request_irq)	*/
> -	CONST struct in_ecid	cid;		/* Card Identification		*/
> -
> -	/* Private internal data */
> -	const char		*card_desc;	/* Card description		*/
> -	CONST loader_t		loader;		/* loader program */
> -	u64			dma_mask;
> -};
> -
> -void ecard_setirq(struct expansion_card *ec, const struct expansion_card_ops *ops, void *irq_data);
> -
> -struct in_chunk_dir {
> -	unsigned int start_offset;
> -	union {
> -		unsigned char string[256];
> -		unsigned char data[1];
> -	} d;
> -};
> -
> -/*
> - * Read a chunk from an expansion card
> - * cd : where to put read data
> - * ec : expansion card info struct
> - * id : id number to find
> - * num: (n+1)'th id to find.
> - */
> -extern int ecard_readchunk (struct in_chunk_dir *cd, struct expansion_card *ec, int id, int num);
> -
> -/*
> - * Request and release ecard resources
> - */
> -extern int ecard_request_resources(struct expansion_card *ec);
> -extern void ecard_release_resources(struct expansion_card *ec);
> -
> -void __iomem *ecardm_iomap(struct expansion_card *ec, unsigned int res,
> -			   unsigned long offset, unsigned long maxsize);
> -#define ecardm_iounmap(__ec, __addr)	devm_iounmap(&(__ec)->dev, __addr)
> -
> -extern const struct bus_type ecard_bus_type;
> -
> -#define ECARD_DEV(_d)	container_of((_d), struct expansion_card, dev)
> -
> -struct ecard_driver {
> -	int			(*probe)(struct expansion_card *, const struct ecard_id *id);
> -	void			(*remove)(struct expansion_card *);
> -	void			(*shutdown)(struct expansion_card *);
> -	const struct ecard_id	*id_table;
> -	unsigned int		id;
> -	struct device_driver	drv;
> -};
> -
> -#define ECARD_DRV(_d)	container_of((_d), struct ecard_driver, drv)
> -
> -#define ecard_set_drvdata(ec,data)	dev_set_drvdata(&(ec)->dev, (data))
> -#define ecard_get_drvdata(ec)		dev_get_drvdata(&(ec)->dev)
> -
> -int ecard_register_driver(struct ecard_driver *);
> -void ecard_remove_driver(struct ecard_driver *);
> -
> -#endif
> diff --git a/arch/arm/include/asm/hardware/ioc.h b/arch/arm/include/asm/hardware/ioc.h
> deleted file mode 100644
> index 6edd27fcd048..000000000000
> --- a/arch/arm/include/asm/hardware/ioc.h
> +++ /dev/null
> @@ -1,69 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/include/asm/hardware/ioc.h
> - *
> - *  Copyright (C) Russell King
> - *
> - *  Use these macros to read/write the IOC.  All it does is perform the actual
> - *  read/write.
> - */
> -#ifndef __ASMARM_HARDWARE_IOC_H
> -#define __ASMARM_HARDWARE_IOC_H
> -
> -#ifndef __ASSEMBLY__
> -
> -/*
> - * We use __raw_base variants here so that we give the compiler the
> - * chance to keep IOC_BASE in a register.
> - */
> -#define ioc_readb(off)		__raw_readb(IOC_BASE + (off))
> -#define ioc_writeb(val,off)	__raw_writeb(val, IOC_BASE + (off))
> -
> -#endif
> -
> -#define IOC_CONTROL	(0x00)
> -#define IOC_KARTTX	(0x04)
> -#define IOC_KARTRX	(0x04)
> -
> -#define IOC_IRQSTATA	(0x10)
> -#define IOC_IRQREQA	(0x14)
> -#define IOC_IRQCLRA	(0x14)
> -#define IOC_IRQMASKA	(0x18)
> -
> -#define IOC_IRQSTATB	(0x20)
> -#define IOC_IRQREQB	(0x24)
> -#define IOC_IRQMASKB	(0x28)
> -
> -#define IOC_FIQSTAT	(0x30)
> -#define IOC_FIQREQ	(0x34)
> -#define IOC_FIQMASK	(0x38)
> -
> -#define IOC_T0CNTL	(0x40)
> -#define IOC_T0LTCHL	(0x40)
> -#define IOC_T0CNTH	(0x44)
> -#define IOC_T0LTCHH	(0x44)
> -#define IOC_T0GO	(0x48)
> -#define IOC_T0LATCH	(0x4c)
> -
> -#define IOC_T1CNTL	(0x50)
> -#define IOC_T1LTCHL	(0x50)
> -#define IOC_T1CNTH	(0x54)
> -#define IOC_T1LTCHH	(0x54)
> -#define IOC_T1GO	(0x58)
> -#define IOC_T1LATCH	(0x5c)
> -
> -#define IOC_T2CNTL	(0x60)
> -#define IOC_T2LTCHL	(0x60)
> -#define IOC_T2CNTH	(0x64)
> -#define IOC_T2LTCHH	(0x64)
> -#define IOC_T2GO	(0x68)
> -#define IOC_T2LATCH	(0x6c)
> -
> -#define IOC_T3CNTL	(0x70)
> -#define IOC_T3LTCHL	(0x70)
> -#define IOC_T3CNTH	(0x74)
> -#define IOC_T3LTCHH	(0x74)
> -#define IOC_T3GO	(0x78)
> -#define IOC_T3LATCH	(0x7c)
> -
> -#endif
> diff --git a/arch/arm/include/asm/hardware/iomd.h b/arch/arm/include/asm/hardware/iomd.h
> deleted file mode 100644
> index 53006ba5350f..000000000000
> --- a/arch/arm/include/asm/hardware/iomd.h
> +++ /dev/null
> @@ -1,182 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/include/asm/hardware/iomd.h
> - *
> - *  Copyright (C) 1999 Russell King
> - *
> - *  This file contains information out the IOMD ASIC used in the
> - *  Acorn RiscPC and subsequently integrated into the CLPS7500 chips.
> - */
> -#ifndef __ASMARM_HARDWARE_IOMD_H
> -#define __ASMARM_HARDWARE_IOMD_H
> -
> -
> -#ifndef __ASSEMBLY__
> -
> -/*
> - * We use __raw_base variants here so that we give the compiler the
> - * chance to keep IOC_BASE in a register.
> - */
> -#define iomd_readb(off)		__raw_readb(IOMD_BASE + (off))
> -#define iomd_readl(off)		__raw_readl(IOMD_BASE + (off))
> -#define iomd_writeb(val,off)	__raw_writeb(val, IOMD_BASE + (off))
> -#define iomd_writel(val,off)	__raw_writel(val, IOMD_BASE + (off))
> -
> -#endif
> -
> -#define IOMD_CONTROL	(0x000)
> -#define IOMD_KARTTX	(0x004)
> -#define IOMD_KARTRX	(0x004)
> -#define IOMD_KCTRL	(0x008)
> -
> -#define IOMD_IRQSTATA	(0x010)
> -#define IOMD_IRQREQA	(0x014)
> -#define IOMD_IRQCLRA	(0x014)
> -#define IOMD_IRQMASKA	(0x018)
> -
> -#define IOMD_IRQSTATB	(0x020)
> -#define IOMD_IRQREQB	(0x024)
> -#define IOMD_IRQMASKB	(0x028)
> -
> -#define IOMD_FIQSTAT	(0x030)
> -#define IOMD_FIQREQ	(0x034)
> -#define IOMD_FIQMASK	(0x038)
> -
> -#define IOMD_T0CNTL	(0x040)
> -#define IOMD_T0LTCHL	(0x040)
> -#define IOMD_T0CNTH	(0x044)
> -#define IOMD_T0LTCHH	(0x044)
> -#define IOMD_T0GO	(0x048)
> -#define IOMD_T0LATCH	(0x04c)
> -
> -#define IOMD_T1CNTL	(0x050)
> -#define IOMD_T1LTCHL	(0x050)
> -#define IOMD_T1CNTH	(0x054)
> -#define IOMD_T1LTCHH	(0x054)
> -#define IOMD_T1GO	(0x058)
> -#define IOMD_T1LATCH	(0x05c)
> -
> -#define IOMD_ROMCR0	(0x080)
> -#define IOMD_ROMCR1	(0x084)
> -#ifdef CONFIG_ARCH_RPC
> -#define IOMD_DRAMCR	(0x088)
> -#endif
> -#define IOMD_REFCR	(0x08C)
> -
> -#define IOMD_FSIZE	(0x090)
> -#define IOMD_ID0	(0x094)
> -#define IOMD_ID1	(0x098)
> -#define IOMD_VERSION	(0x09C)
> -
> -#ifdef CONFIG_ARCH_RPC
> -#define IOMD_MOUSEX	(0x0A0)
> -#define IOMD_MOUSEY	(0x0A4)
> -#endif
> -
> -#ifdef CONFIG_ARCH_RPC
> -#define IOMD_DMATCR	(0x0C0)
> -#endif
> -#define IOMD_IOTCR	(0x0C4)
> -#define IOMD_ECTCR	(0x0C8)
> -#ifdef CONFIG_ARCH_RPC
> -#define IOMD_DMAEXT	(0x0CC)
> -#endif
> -
> -#ifdef CONFIG_ARCH_RPC
> -#define DMA_EXT_IO0	1
> -#define DMA_EXT_IO1	2
> -#define DMA_EXT_IO2	4
> -#define DMA_EXT_IO3	8
> -
> -#define IOMD_IO0CURA	(0x100)
> -#define IOMD_IO0ENDA	(0x104)
> -#define IOMD_IO0CURB	(0x108)
> -#define IOMD_IO0ENDB	(0x10C)
> -#define IOMD_IO0CR	(0x110)
> -#define IOMD_IO0ST	(0x114)
> -
> -#define IOMD_IO1CURA	(0x120)
> -#define IOMD_IO1ENDA	(0x124)
> -#define IOMD_IO1CURB	(0x128)
> -#define IOMD_IO1ENDB	(0x12C)
> -#define IOMD_IO1CR	(0x130)
> -#define IOMD_IO1ST	(0x134)
> -
> -#define IOMD_IO2CURA	(0x140)
> -#define IOMD_IO2ENDA	(0x144)
> -#define IOMD_IO2CURB	(0x148)
> -#define IOMD_IO2ENDB	(0x14C)
> -#define IOMD_IO2CR	(0x150)
> -#define IOMD_IO2ST	(0x154)
> -
> -#define IOMD_IO3CURA	(0x160)
> -#define IOMD_IO3ENDA	(0x164)
> -#define IOMD_IO3CURB	(0x168)
> -#define IOMD_IO3ENDB	(0x16C)
> -#define IOMD_IO3CR	(0x170)
> -#define IOMD_IO3ST	(0x174)
> -#endif
> -
> -#define IOMD_SD0CURA	(0x180)
> -#define IOMD_SD0ENDA	(0x184)
> -#define IOMD_SD0CURB	(0x188)
> -#define IOMD_SD0ENDB	(0x18C)
> -#define IOMD_SD0CR	(0x190)
> -#define IOMD_SD0ST	(0x194)
> -
> -#ifdef CONFIG_ARCH_RPC
> -#define IOMD_SD1CURA	(0x1A0)
> -#define IOMD_SD1ENDA	(0x1A4)
> -#define IOMD_SD1CURB	(0x1A8)
> -#define IOMD_SD1ENDB	(0x1AC)
> -#define IOMD_SD1CR	(0x1B0)
> -#define IOMD_SD1ST	(0x1B4)
> -#endif
> -
> -#define IOMD_CURSCUR	(0x1C0)
> -#define IOMD_CURSINIT	(0x1C4)
> -
> -#define IOMD_VIDCUR	(0x1D0)
> -#define IOMD_VIDEND	(0x1D4)
> -#define IOMD_VIDSTART	(0x1D8)
> -#define IOMD_VIDINIT	(0x1DC)
> -#define IOMD_VIDCR	(0x1E0)
> -
> -#define IOMD_DMASTAT	(0x1F0)
> -#define IOMD_DMAREQ	(0x1F4)
> -#define IOMD_DMAMASK	(0x1F8)
> -
> -#define DMA_END_S	(1 << 31)
> -#define DMA_END_L	(1 << 30)
> -
> -#define DMA_CR_C	0x80
> -#define DMA_CR_D	0x40
> -#define DMA_CR_E	0x20
> -
> -#define DMA_ST_OFL	4
> -#define DMA_ST_INT	2
> -#define DMA_ST_AB	1
> -
> -/*
> - * DMA (MEMC) compatibility
> - */
> -#define HALF_SAM	vram_half_sam
> -#define VDMA_ALIGNMENT	(HALF_SAM * 2)
> -#define VDMA_XFERSIZE	(HALF_SAM)
> -#define VDMA_INIT	IOMD_VIDINIT
> -#define VDMA_START	IOMD_VIDSTART
> -#define VDMA_END	IOMD_VIDEND
> -
> -#ifndef __ASSEMBLY__
> -extern unsigned int vram_half_sam;
> -#define video_set_dma(start,end,offset)				\
> -do {								\
> -	outl (SCREEN_START + start, VDMA_START);		\
> -	outl (SCREEN_START + end - VDMA_XFERSIZE, VDMA_END);	\
> -	if (offset >= end - VDMA_XFERSIZE)			\
> -		offset |= 0x40000000;				\
> -	outl (SCREEN_START + offset, VDMA_INIT);		\
> -} while (0)
> -#endif
> -
> -#endif
> diff --git a/arch/arm/include/asm/hardware/memc.h b/arch/arm/include/asm/hardware/memc.h
> deleted file mode 100644
> index 1d4ebe0a9678..000000000000
> --- a/arch/arm/include/asm/hardware/memc.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/include/asm/hardware/memc.h
> - *
> - *  Copyright (C) Russell King.
> - */
> -#define VDMA_ALIGNMENT	PAGE_SIZE
> -#define VDMA_XFERSIZE	16
> -#define VDMA_INIT	0
> -#define VDMA_START	1
> -#define VDMA_END	2
> -
> -#ifndef __ASSEMBLY__
> -extern void memc_write(unsigned int reg, unsigned long val);
> -
> -#define video_set_dma(start,end,offset)				\
> -do {								\
> -	memc_write (VDMA_START, (start >> 2));			\
> -	memc_write (VDMA_END, (end - VDMA_XFERSIZE) >> 2);	\
> -	memc_write (VDMA_INIT, (offset >> 2));			\
> -} while (0)
> -
> -#endif
> diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
> index e6bd9e79737c..c3661af2ca2a 100644
> --- a/arch/arm/include/asm/io.h
> +++ b/arch/arm/include/asm/io.h
> @@ -207,16 +207,13 @@ void __iomem *pci_remap_cfgspace(resource_size_t res_cookie, size_t size);
>   /*
>    * Now, pick up the machine-defined IO definitions
>    */
> -#ifdef CONFIG_NEED_MACH_IO_H
> -#include <mach/io.h>
> -#else
>   #if IS_ENABLED(CONFIG_PCMCIA) || defined(CONFIG_PCI)
>   #define IO_SPACE_LIMIT	((resource_size_t)0xfffff)
>   #else
>   #define IO_SPACE_LIMIT ((resource_size_t)0)
>   #endif
> +
>   #define __io(a)		__typesafe_io(PCI_IO_VIRT_BASE + ((a) & IO_SPACE_LIMIT))
> -#endif
>   
>   /*
>    *  IO port access primitives
> diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
> index 7c2fa7dcec6d..e10363ebdd1f 100644
> --- a/arch/arm/include/asm/memory.h
> +++ b/arch/arm/include/asm/memory.h
> @@ -20,9 +20,6 @@
>   #include <linux/types.h>
>   #include <linux/sizes.h>
>   
> -#ifdef CONFIG_NEED_MACH_MEMORY_H
> -#include <mach/memory.h>
> -#endif
>   #include <asm/kasan_def.h>
>   
>   /*
> diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
> index 42cae73fcc19..3cbbcdb63f7d 100644
> --- a/arch/arm/kernel/head-common.S
> +++ b/arch/arm/kernel/head-common.S
> @@ -221,19 +221,6 @@ str_p2:	.asciz	").\n"
>   ENDPROC(__error_p)
>   
>   __error:
> -#ifdef CONFIG_ARCH_RPC
> -/*
> - * Turn the screen red on a error - RiscPC only.
> - */
> -	mov	r0, #0x02000000
> -	mov	r3, #0x11
> -	orr	r3, r3, r3, lsl #8
> -	orr	r3, r3, r3, lsl #16
> -	str	r3, [r0], #4
> -	str	r3, [r0], #4
> -	str	r3, [r0], #4
> -	str	r3, [r0], #4
> -#endif
>   1:	mov	r0, r0
>   	b	1b
>   ENDPROC(__error)
> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
> index b12fe41e579b..2ffaea2c4c9b 100644
> --- a/arch/arm/kernel/head.S
> +++ b/arch/arm/kernel/head.S
> @@ -347,18 +347,6 @@ __create_page_tables:
>   	/* we don't need any serial debugging mappings */
>   	ldr	r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags
>   #endif
> -#ifdef CONFIG_ARCH_RPC
> -	/*
> -	 * Map in screen at 0x02000000 & SCREEN2_BASE
> -	 * Similar reasons here - for debug.  This is
> -	 * only for Acorn RiscPC architectures.
> -	 */
> -	add	r0, r4, #0x02000000 >> (SECTION_SHIFT - PMD_ENTRY_ORDER)
> -	orr	r3, r7, #0x02000000
> -	str	r3, [r0]
> -	add	r0, r4, #0xd8000000 >> (SECTION_SHIFT - PMD_ENTRY_ORDER)
> -	str	r3, [r0]
> -#endif
>   #endif
>   #ifdef CONFIG_ARM_LPAE
>   	sub	r4, r4, #0x1000		@ point to the PGD table
> diff --git a/arch/arm/lib/delay-loop.S b/arch/arm/lib/delay-loop.S
> index 33b08ca1c242..56f9eea56268 100644
> --- a/arch/arm/lib/delay-loop.S
> +++ b/arch/arm/lib/delay-loop.S
> @@ -9,10 +9,6 @@
>   #include <asm/assembler.h>
>   #include <asm/delay.h>
>   
> -#ifdef CONFIG_ARCH_RPC
> -		.arch	armv4
> -#endif
> -
>   		.text
>   
>   .LC0:		.word	loops_per_jiffy
> diff --git a/arch/arm/mach-rpc/Kconfig b/arch/arm/mach-rpc/Kconfig
> deleted file mode 100644
> index 60b3823b690c..000000000000
> --- a/arch/arm/mach-rpc/Kconfig
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -config ARCH_RPC
> -	bool "RiscPC (DEPRECATED)"
> -	depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5)
> -	depends on !(ARCH_FOOTBRIDGE || ARCH_SA1100 || ARCH_MOXART || ARCH_GEMINI)
> -	depends on !CC_IS_CLANG && GCC_VERSION < 90100 && GCC_VERSION >= 60000
> -	depends on CPU_LITTLE_ENDIAN
> -	depends on ATAGS
> -	depends on MMU
> -	select ARCH_ACORN
> -	select ARCH_MAY_HAVE_PC_FDC
> -	select CPU_SA110
> -	select FIQ
> -	select HAVE_PATA_PLATFORM
> -	select ISA_DMA_API
> -	select LEGACY_TIMER_TICK
> -	select NEED_MACH_IO_H
> -	select NEED_MACH_MEMORY_H
> -	select NO_IOPORT_MAP
> -	help
> -	  On the Acorn Risc-PC, Linux can support the internal IDE disk and
> -	  CD-ROM interface, serial and parallel port, and the floppy drive.
> -
> -	  Support for these machines will go away in 2027,
> -	  unless there are any remaining users that speak up.
> diff --git a/arch/arm/mach-rpc/Makefile b/arch/arm/mach-rpc/Makefile
> deleted file mode 100644
> index 90a645a18444..000000000000
> --- a/arch/arm/mach-rpc/Makefile
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-only
> -#
> -# Makefile for the linux kernel.
> -#
> -
> -# Object file lists.
> -
> -obj-y	:=dma.o ecard.o ecard-loader.o fiq.o floppydma.o io-acorn.o irq.o \
> -	  riscpc.o time.o
> diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c
> deleted file mode 100644
> index 50e0f97afd75..000000000000
> --- a/arch/arm/mach-rpc/dma.c
> +++ /dev/null
> @@ -1,393 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  linux/arch/arm/mach-rpc/dma.c
> - *
> - *  Copyright (C) 1998 Russell King
> - *
> - *  DMA functions specific to RiscPC architecture
> - */
> -#include <linux/mman.h>
> -#include <linux/init.h>
> -#include <linux/interrupt.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/io.h>
> -
> -#include <asm/page.h>
> -#include <asm/dma.h>
> -#include <asm/fiq.h>
> -#include <asm/irq.h>
> -#include <mach/hardware.h>
> -#include <linux/uaccess.h>
> -
> -#include <asm/mach/dma.h>
> -#include <asm/hardware/iomd.h>
> -
> -struct iomd_dma {
> -	struct dma_struct	dma;
> -	void __iomem		*base;		/* Controller base address */
> -	int			irq;		/* Controller IRQ */
> -	unsigned int		state;
> -	dma_addr_t		cur_addr;
> -	unsigned int		cur_len;
> -	dma_addr_t		dma_addr;
> -	unsigned int		dma_len;
> -};
> -
> -#if 0
> -typedef enum {
> -	dma_size_8	= 1,
> -	dma_size_16	= 2,
> -	dma_size_32	= 4,
> -	dma_size_128	= 16
> -} dma_size_t;
> -#endif
> -
> -#define TRANSFER_SIZE	2
> -
> -#define CURA	(0)
> -#define ENDA	(IOMD_IO0ENDA - IOMD_IO0CURA)
> -#define CURB	(IOMD_IO0CURB - IOMD_IO0CURA)
> -#define ENDB	(IOMD_IO0ENDB - IOMD_IO0CURA)
> -#define CR	(IOMD_IO0CR - IOMD_IO0CURA)
> -#define ST	(IOMD_IO0ST - IOMD_IO0CURA)
> -
> -static void iomd_get_next_sg(struct iomd_dma *idma)
> -{
> -	unsigned long end, offset, flags = 0;
> -
> -	if (idma->dma.sg) {
> -		idma->cur_addr = idma->dma_addr;
> -		offset = idma->cur_addr & ~PAGE_MASK;
> -
> -		end = offset + idma->dma_len;
> -
> -		if (end > PAGE_SIZE)
> -			end = PAGE_SIZE;
> -
> -		if (offset + TRANSFER_SIZE >= end)
> -			flags |= DMA_END_L;
> -
> -		idma->cur_len = end - TRANSFER_SIZE;
> -
> -		idma->dma_len -= end - offset;
> -		idma->dma_addr += end - offset;
> -
> -		if (idma->dma_len == 0) {
> -			if (idma->dma.sgcount > 1) {
> -				idma->dma.sg = sg_next(idma->dma.sg);
> -				idma->dma_addr = idma->dma.sg->dma_address;
> -				idma->dma_len = idma->dma.sg->length;
> -				idma->dma.sgcount--;
> -			} else {
> -				idma->dma.sg = NULL;
> -				flags |= DMA_END_S;
> -			}
> -		}
> -	} else {
> -		flags = DMA_END_S | DMA_END_L;
> -		idma->cur_addr = 0;
> -		idma->cur_len = 0;
> -	}
> -
> -	idma->cur_len |= flags;
> -}
> -
> -static irqreturn_t iomd_dma_handle(int irq, void *dev_id)
> -{
> -	struct iomd_dma *idma = dev_id;
> -	void __iomem *base = idma->base;
> -	unsigned int state = idma->state;
> -	unsigned int status, cur, end;
> -
> -	do {
> -		status = readb(base + ST);
> -		if (!(status & DMA_ST_INT))
> -			goto out;
> -
> -		if ((state ^ status) & DMA_ST_AB)
> -			iomd_get_next_sg(idma);
> -
> -		// This efficiently implements state = OFL != AB ? AB : 0
> -		state = ((status >> 2) ^ status) & DMA_ST_AB;
> -		if (state) {
> -			cur = CURA;
> -			end = ENDA;
> -		} else {
> -			cur = CURB;
> -			end = ENDB;
> -		}
> -		writel(idma->cur_addr, base + cur);
> -		writel(idma->cur_len, base + end);
> -
> -		if (status & DMA_ST_OFL &&
> -		    idma->cur_len == (DMA_END_S|DMA_END_L))
> -			break;
> -	} while (1);
> -
> -	state = ~DMA_ST_AB;
> -	disable_irq_nosync(irq);
> -out:
> -	idma->state = state;
> -	return IRQ_HANDLED;
> -}
> -
> -static int iomd_request_dma(unsigned int chan, dma_t *dma)
> -{
> -	struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma);
> -
> -	return request_irq(idma->irq, iomd_dma_handle,
> -			   0, idma->dma.device_id, idma);
> -}
> -
> -static void iomd_free_dma(unsigned int chan, dma_t *dma)
> -{
> -	struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma);
> -
> -	free_irq(idma->irq, idma);
> -}
> -
> -static struct device isa_dma_dev = {
> -	.init_name		= "fallback device",
> -	.coherent_dma_mask	= ~(dma_addr_t)0,
> -	.dma_mask		= &isa_dma_dev.coherent_dma_mask,
> -};
> -
> -static void iomd_enable_dma(unsigned int chan, dma_t *dma)
> -{
> -	struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma);
> -	void __iomem *base = idma->base;
> -	unsigned int ctrl = TRANSFER_SIZE | DMA_CR_E;
> -
> -	if (idma->dma.invalid) {
> -		idma->dma.invalid = 0;
> -
> -		/*
> -		 * Cope with ISA-style drivers which expect cache
> -		 * coherence.
> -		 */
> -		if (!idma->dma.sg) {
> -			idma->dma.sg = &idma->dma.buf;
> -			idma->dma.sgcount = 1;
> -			idma->dma.buf.length = idma->dma.count;
> -			idma->dma.buf.dma_address = dma_map_single(&isa_dma_dev,
> -				idma->dma.addr, idma->dma.count,
> -				idma->dma.dma_mode == DMA_MODE_READ ?
> -				DMA_FROM_DEVICE : DMA_TO_DEVICE);
> -		}
> -
> -		idma->dma_addr = idma->dma.sg->dma_address;
> -		idma->dma_len = idma->dma.sg->length;
> -
> -		writeb(DMA_CR_C, base + CR);
> -		idma->state = DMA_ST_AB;
> -	}
> -
> -	if (idma->dma.dma_mode == DMA_MODE_READ)
> -		ctrl |= DMA_CR_D;
> -
> -	writeb(ctrl, base + CR);
> -	enable_irq(idma->irq);
> -}
> -
> -static void iomd_disable_dma(unsigned int chan, dma_t *dma)
> -{
> -	struct iomd_dma *idma = container_of(dma, struct iomd_dma, dma);
> -	void __iomem *base = idma->base;
> -	unsigned long flags;
> -
> -	local_irq_save(flags);
> -	if (idma->state != ~DMA_ST_AB)
> -		disable_irq(idma->irq);
> -	writeb(0, base + CR);
> -	local_irq_restore(flags);
> -}
> -
> -static int iomd_set_dma_speed(unsigned int chan, dma_t *dma, int cycle)
> -{
> -	int tcr, speed;
> -
> -	if (cycle < 188)
> -		speed = 3;
> -	else if (cycle <= 250)
> -		speed = 2;
> -	else if (cycle < 438)
> -		speed = 1;
> -	else
> -		speed = 0;
> -
> -	tcr = iomd_readb(IOMD_DMATCR);
> -	speed &= 3;
> -
> -	switch (chan) {
> -	case DMA_0:
> -		tcr = (tcr & ~0x03) | speed;
> -		break;
> -
> -	case DMA_1:
> -		tcr = (tcr & ~0x0c) | (speed << 2);
> -		break;
> -
> -	case DMA_2:
> -		tcr = (tcr & ~0x30) | (speed << 4);
> -		break;
> -
> -	case DMA_3:
> -		tcr = (tcr & ~0xc0) | (speed << 6);
> -		break;
> -
> -	default:
> -		break;
> -	}
> -
> -	iomd_writeb(tcr, IOMD_DMATCR);
> -
> -	return speed;
> -}
> -
> -static struct dma_ops iomd_dma_ops = {
> -	.type		= "IOMD",
> -	.request	= iomd_request_dma,
> -	.free		= iomd_free_dma,
> -	.enable		= iomd_enable_dma,
> -	.disable	= iomd_disable_dma,
> -	.setspeed	= iomd_set_dma_speed,
> -};
> -
> -static struct fiq_handler fh = {
> -	.name	= "floppydma"
> -};
> -
> -struct floppy_dma {
> -	struct dma_struct	dma;
> -	unsigned int		fiq;
> -};
> -
> -static void floppy_enable_dma(unsigned int chan, dma_t *dma)
> -{
> -	struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma);
> -	void *fiqhandler_start;
> -	unsigned int fiqhandler_length;
> -	struct pt_regs regs;
> -
> -	if (fdma->dma.sg)
> -		BUG();
> -
> -	if (fdma->dma.dma_mode == DMA_MODE_READ) {
> -		extern unsigned char floppy_fiqin_start, floppy_fiqin_end;
> -		fiqhandler_start = &floppy_fiqin_start;
> -		fiqhandler_length = &floppy_fiqin_end - &floppy_fiqin_start;
> -	} else {
> -		extern unsigned char floppy_fiqout_start, floppy_fiqout_end;
> -		fiqhandler_start = &floppy_fiqout_start;
> -		fiqhandler_length = &floppy_fiqout_end - &floppy_fiqout_start;
> -	}
> -
> -	regs.ARM_r9  = fdma->dma.count;
> -	regs.ARM_r10 = (unsigned long)fdma->dma.addr;
> -	regs.ARM_fp  = (unsigned long)FLOPPYDMA_BASE;
> -
> -	if (claim_fiq(&fh)) {
> -		printk("floppydma: couldn't claim FIQ.\n");
> -		return;
> -	}
> -
> -	set_fiq_handler(fiqhandler_start, fiqhandler_length);
> -	set_fiq_regs(&regs);
> -	enable_fiq(fdma->fiq);
> -}
> -
> -static void floppy_disable_dma(unsigned int chan, dma_t *dma)
> -{
> -	struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma);
> -	disable_fiq(fdma->fiq);
> -	release_fiq(&fh);
> -}
> -
> -static int floppy_get_residue(unsigned int chan, dma_t *dma)
> -{
> -	struct pt_regs regs;
> -	get_fiq_regs(&regs);
> -	return regs.ARM_r9;
> -}
> -
> -static struct dma_ops floppy_dma_ops = {
> -	.type		= "FIQDMA",
> -	.enable		= floppy_enable_dma,
> -	.disable	= floppy_disable_dma,
> -	.residue	= floppy_get_residue,
> -};
> -
> -/*
> - * This is virtual DMA - we don't need anything here.
> - */
> -static void sound_enable_disable_dma(unsigned int chan, dma_t *dma)
> -{
> -}
> -
> -static struct dma_ops sound_dma_ops = {
> -	.type		= "VIRTUAL",
> -	.enable		= sound_enable_disable_dma,
> -	.disable	= sound_enable_disable_dma,
> -};
> -
> -static struct iomd_dma iomd_dma[6];
> -
> -static struct floppy_dma floppy_dma = {
> -	.dma		= {
> -		.d_ops	= &floppy_dma_ops,
> -	},
> -	.fiq		= FIQ_FLOPPYDATA,
> -};
> -
> -static dma_t sound_dma = {
> -	.d_ops		= &sound_dma_ops,
> -};
> -
> -static int __init rpc_dma_init(void)
> -{
> -	unsigned int i;
> -	int ret;
> -
> -	iomd_writeb(0, IOMD_IO0CR);
> -	iomd_writeb(0, IOMD_IO1CR);
> -	iomd_writeb(0, IOMD_IO2CR);
> -	iomd_writeb(0, IOMD_IO3CR);
> -
> -	iomd_writeb(0xa0, IOMD_DMATCR);
> -
> -	/*
> -	 * Setup DMA channels 2,3 to be for podules
> -	 * and channels 0,1 for internal devices
> -	 */
> -	iomd_writeb(DMA_EXT_IO3|DMA_EXT_IO2, IOMD_DMAEXT);
> -
> -	iomd_dma[DMA_0].base	= IOMD_BASE + IOMD_IO0CURA;
> -	iomd_dma[DMA_0].irq	= IRQ_DMA0;
> -	iomd_dma[DMA_1].base	= IOMD_BASE + IOMD_IO1CURA;
> -	iomd_dma[DMA_1].irq	= IRQ_DMA1;
> -	iomd_dma[DMA_2].base	= IOMD_BASE + IOMD_IO2CURA;
> -	iomd_dma[DMA_2].irq	= IRQ_DMA2;
> -	iomd_dma[DMA_3].base	= IOMD_BASE + IOMD_IO3CURA;
> -	iomd_dma[DMA_3].irq	= IRQ_DMA3;
> -	iomd_dma[DMA_S0].base	= IOMD_BASE + IOMD_SD0CURA;
> -	iomd_dma[DMA_S0].irq	= IRQ_DMAS0;
> -	iomd_dma[DMA_S1].base	= IOMD_BASE + IOMD_SD1CURA;
> -	iomd_dma[DMA_S1].irq	= IRQ_DMAS1;
> -
> -	for (i = DMA_0; i <= DMA_S1; i++) {
> -		iomd_dma[i].dma.d_ops = &iomd_dma_ops;
> -
> -		ret = isa_dma_add(i, &iomd_dma[i].dma);
> -		if (ret)
> -			printk("IOMDDMA%u: unable to register: %d\n", i, ret);
> -	}
> -
> -	ret = isa_dma_add(DMA_VIRTUAL_FLOPPY, &floppy_dma.dma);
> -	if (ret)
> -		printk("IOMDFLOPPY: unable to register: %d\n", ret);
> -	ret = isa_dma_add(DMA_VIRTUAL_SOUND, &sound_dma);
> -	if (ret)
> -		printk("IOMDSOUND: unable to register: %d\n", ret);
> -	return 0;
> -}
> -core_initcall(rpc_dma_init);
> diff --git a/arch/arm/mach-rpc/ecard-loader.S b/arch/arm/mach-rpc/ecard-loader.S
> deleted file mode 100644
> index eb8ac0412da6..000000000000
> --- a/arch/arm/mach-rpc/ecard-loader.S
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  linux/arch/arm/lib/ecard.S
> - *
> - *  Copyright (C) 1995, 1996 Russell King
> - *
> - * 27/03/03 Ian Molton Clean up CONFIG_CPU
> - */
> -#include <linux/linkage.h>
> -#include <asm/assembler.h>
> -
> -#define CPSR2SPSR(rt) \
> -		mrs	rt, cpsr; \
> -		msr	spsr_cxsf, rt
> -
> -@ Purpose: call an expansion card loader to read bytes.
> -@ Proto  : char read_loader(int offset, char *card_base, char *loader);
> -@ Returns: byte read
> -
> -ENTRY(ecard_loader_read)
> -		stmfd	sp!, {r4 - r12, lr}
> -		mov	r11, r1
> -		mov	r1, r0
> -		CPSR2SPSR(r0)
> -		mov	lr, pc
> -		mov	pc, r2
> -		ldmfd	sp!, {r4 - r12, pc}
> -
> -@ Purpose: call an expansion card loader to reset the card
> -@ Proto  : void read_loader(int card_base, char *loader);
> -@ Returns: byte read
> -
> -ENTRY(ecard_loader_reset)
> -		stmfd	sp!, {r4 - r12, lr}
> -		mov	r11, r0
> -		CPSR2SPSR(r0)
> -		mov	lr, pc
> -		add	pc, r1, #8
> -		ldmfd	sp!, {r4 - r12, pc}
> -
> diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
> deleted file mode 100644
> index 972465840548..000000000000
> --- a/arch/arm/mach-rpc/ecard.c
> +++ /dev/null
> @@ -1,1146 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  linux/arch/arm/kernel/ecard.c
> - *
> - *  Copyright 1995-2001 Russell King
> - *
> - *  Find all installed expansion cards, and handle interrupts from them.
> - *
> - *  Created from information from Acorns RiscOS3 PRMs
> - *
> - *  08-Dec-1996	RMK	Added code for the 9'th expansion card - the ether
> - *			podule slot.
> - *  06-May-1997	RMK	Added blacklist for cards whose loader doesn't work.
> - *  12-Sep-1997	RMK	Created new handling of interrupt enables/disables
> - *			- cards can now register their own routine to control
> - *			interrupts (recommended).
> - *  29-Sep-1997	RMK	Expansion card interrupt hardware not being re-enabled
> - *			on reset from Linux. (Caused cards not to respond
> - *			under RiscOS without hard reset).
> - *  15-Feb-1998	RMK	Added DMA support
> - *  12-Sep-1998	RMK	Added EASI support
> - *  10-Jan-1999	RMK	Run loaders in a simulated RISC OS environment.
> - *  17-Apr-1999	RMK	Support for EASI Type C cycles.
> - */
> -#define ECARD_C
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/types.h>
> -#include <linux/sched.h>
> -#include <linux/sched/mm.h>
> -#include <linux/interrupt.h>
> -#include <linux/completion.h>
> -#include <linux/reboot.h>
> -#include <linux/mm.h>
> -#include <linux/slab.h>
> -#include <linux/proc_fs.h>
> -#include <linux/seq_file.h>
> -#include <linux/device.h>
> -#include <linux/init.h>
> -#include <linux/mutex.h>
> -#include <linux/kthread.h>
> -#include <linux/irq.h>
> -#include <linux/io.h>
> -
> -#include <asm/dma.h>
> -#include <asm/ecard.h>
> -#include <mach/hardware.h>
> -#include <asm/irq.h>
> -#include <asm/mmu_context.h>
> -#include <asm/mach/irq.h>
> -#include <asm/tlbflush.h>
> -
> -#include "ecard.h"
> -
> -struct ecard_request {
> -	void		(*fn)(struct ecard_request *);
> -	ecard_t		*ec;
> -	unsigned int	address;
> -	unsigned int	length;
> -	unsigned int	use_loader;
> -	void		*buffer;
> -	struct completion *complete;
> -};
> -
> -struct expcard_quirklist {
> -	unsigned short	 manufacturer;
> -	unsigned short	 product;
> -	const char	*type;
> -	void (*init)(ecard_t *ec);
> -};
> -
> -static ecard_t *cards;
> -static ecard_t *slot_to_expcard[MAX_ECARDS];
> -static unsigned int ectcr;
> -
> -static void atomwide_3p_quirk(ecard_t *ec);
> -
> -/* List of descriptions of cards which don't have an extended
> - * identification, or chunk directories containing a description.
> - */
> -static struct expcard_quirklist quirklist[] __initdata = {
> -	{ MANU_ACORN, PROD_ACORN_ETHER1, "Acorn Ether1" },
> -	{ MANU_ATOMWIDE, PROD_ATOMWIDE_3PSERIAL, NULL, atomwide_3p_quirk },
> -};
> -
> -asmlinkage extern int
> -ecard_loader_reset(unsigned long base, loader_t loader);
> -asmlinkage extern int
> -ecard_loader_read(int off, unsigned long base, loader_t loader);
> -
> -static inline unsigned short ecard_getu16(unsigned char *v)
> -{
> -	return v[0] | v[1] << 8;
> -}
> -
> -static inline signed long ecard_gets24(unsigned char *v)
> -{
> -	return v[0] | v[1] << 8 | v[2] << 16 | ((v[2] & 0x80) ? 0xff000000 : 0);
> -}
> -
> -static inline ecard_t *slot_to_ecard(unsigned int slot)
> -{
> -	return slot < MAX_ECARDS ? slot_to_expcard[slot] : NULL;
> -}
> -
> -/* ===================== Expansion card daemon ======================== */
> -/*
> - * Since the loader programs on the expansion cards need to be run
> - * in a specific environment, create a separate task with this
> - * environment up, and pass requests to this task as and when we
> - * need to.
> - *
> - * This should allow 99% of loaders to be called from Linux.
> - *
> - * From a security standpoint, we trust the card vendors.  This
> - * may be a misplaced trust.
> - */
> -static void ecard_task_reset(struct ecard_request *req)
> -{
> -	struct expansion_card *ec = req->ec;
> -	struct resource *res;
> -
> -	res = ec->slot_no == 8
> -		? &ec->resource[ECARD_RES_MEMC]
> -		: ec->easi
> -		  ? &ec->resource[ECARD_RES_EASI]
> -		  : &ec->resource[ECARD_RES_IOCSYNC];
> -
> -	ecard_loader_reset(res->start, ec->loader);
> -}
> -
> -static void ecard_task_readbytes(struct ecard_request *req)
> -{
> -	struct expansion_card *ec = req->ec;
> -	unsigned char *buf = req->buffer;
> -	unsigned int len = req->length;
> -	unsigned int off = req->address;
> -
> -	if (ec->slot_no == 8) {
> -		void __iomem *base = (void __iomem *)
> -				ec->resource[ECARD_RES_MEMC].start;
> -
> -		/*
> -		 * The card maintains an index which increments the address
> -		 * into a 4096-byte page on each access.  We need to keep
> -		 * track of the counter.
> -		 */
> -		static unsigned int index;
> -		unsigned int page;
> -
> -		page = (off >> 12) * 4;
> -		if (page > 256 * 4)
> -			return;
> -
> -		off &= 4095;
> -
> -		/*
> -		 * If we are reading offset 0, or our current index is
> -		 * greater than the offset, reset the hardware index counter.
> -		 */
> -		if (off == 0 || index > off) {
> -			writeb(0, base);
> -			index = 0;
> -		}
> -
> -		/*
> -		 * Increment the hardware index counter until we get to the
> -		 * required offset.  The read bytes are discarded.
> -		 */
> -		while (index < off) {
> -			readb(base + page);
> -			index += 1;
> -		}
> -
> -		while (len--) {
> -			*buf++ = readb(base + page);
> -			index += 1;
> -		}
> -	} else {
> -		unsigned long base = (ec->easi
> -			 ? &ec->resource[ECARD_RES_EASI]
> -			 : &ec->resource[ECARD_RES_IOCSYNC])->start;
> -		void __iomem *pbase = (void __iomem *)base;
> -
> -		if (!req->use_loader || !ec->loader) {
> -			off *= 4;
> -			while (len--) {
> -				*buf++ = readb(pbase + off);
> -				off += 4;
> -			}
> -		} else {
> -			while(len--) {
> -				/*
> -				 * The following is required by some
> -				 * expansion card loader programs.
> -				 */
> -				*(unsigned long *)0x108 = 0;
> -				*buf++ = ecard_loader_read(off++, base,
> -							   ec->loader);
> -			}
> -		}
> -	}
> -
> -}
> -
> -static DECLARE_WAIT_QUEUE_HEAD(ecard_wait);
> -static struct ecard_request *ecard_req;
> -static DEFINE_MUTEX(ecard_mutex);
> -
> -/*
> - * Set up the expansion card daemon's page tables.
> - */
> -static void ecard_init_pgtables(struct mm_struct *mm)
> -{
> -	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, VM_EXEC);
> -
> -	/* We want to set up the page tables for the following mapping:
> -	 *  Virtual	Physical
> -	 *  0x03000000	0x03000000
> -	 *  0x03010000	unmapped
> -	 *  0x03210000	0x03210000
> -	 *  0x03400000	unmapped
> -	 *  0x08000000	0x08000000
> -	 *  0x10000000	unmapped
> -	 *
> -	 * FIXME: we don't follow this 100% yet.
> -	 */
> -	pgd_t *src_pgd, *dst_pgd;
> -
> -	src_pgd = pgd_offset(mm, (unsigned long)IO_BASE);
> -	dst_pgd = pgd_offset(mm, IO_START);
> -
> -	memcpy(dst_pgd, src_pgd, sizeof(pgd_t) * (IO_SIZE / PGDIR_SIZE));
> -
> -	src_pgd = pgd_offset(mm, (unsigned long)EASI_BASE);
> -	dst_pgd = pgd_offset(mm, EASI_START);
> -
> -	memcpy(dst_pgd, src_pgd, sizeof(pgd_t) * (EASI_SIZE / PGDIR_SIZE));
> -
> -	flush_tlb_range(&vma, IO_START, IO_START + IO_SIZE);
> -	flush_tlb_range(&vma, EASI_START, EASI_START + EASI_SIZE);
> -}
> -
> -static int ecard_init_mm(void)
> -{
> -	struct mm_struct * mm = mm_alloc();
> -	struct mm_struct *active_mm = current->active_mm;
> -
> -	if (!mm)
> -		return -ENOMEM;
> -
> -	current->mm = mm;
> -	current->active_mm = mm;
> -	activate_mm(active_mm, mm);
> -	mmdrop_lazy_tlb(active_mm);
> -	ecard_init_pgtables(mm);
> -	return 0;
> -}
> -
> -static int
> -ecard_task(void * unused)
> -{
> -	/*
> -	 * Allocate a mm.  We're not a lazy-TLB kernel task since we need
> -	 * to set page table entries where the user space would be.  Note
> -	 * that this also creates the page tables.  Failure is not an
> -	 * option here.
> -	 */
> -	if (ecard_init_mm())
> -		panic("kecardd: unable to alloc mm\n");
> -
> -	while (1) {
> -		struct ecard_request *req;
> -
> -		wait_event_interruptible(ecard_wait, ecard_req != NULL);
> -
> -		req = xchg(&ecard_req, NULL);
> -		if (req != NULL) {
> -			req->fn(req);
> -			complete(req->complete);
> -		}
> -	}
> -}
> -
> -/*
> - * Wake the expansion card daemon to action our request.
> - *
> - * FIXME: The test here is not sufficient to detect if the
> - * kcardd is running.
> - */
> -static void ecard_call(struct ecard_request *req)
> -{
> -	DECLARE_COMPLETION_ONSTACK(completion);
> -
> -	req->complete = &completion;
> -
> -	mutex_lock(&ecard_mutex);
> -	ecard_req = req;
> -	wake_up(&ecard_wait);
> -
> -	/*
> -	 * Now wait for kecardd to run.
> -	 */
> -	wait_for_completion(&completion);
> -	mutex_unlock(&ecard_mutex);
> -}
> -
> -/* ======================= Mid-level card control ===================== */
> -
> -static void
> -ecard_readbytes(void *addr, ecard_t *ec, int off, int len, int useld)
> -{
> -	struct ecard_request req;
> -
> -	req.fn		= ecard_task_readbytes;
> -	req.ec		= ec;
> -	req.address	= off;
> -	req.length	= len;
> -	req.use_loader	= useld;
> -	req.buffer	= addr;
> -
> -	ecard_call(&req);
> -}
> -
> -int ecard_readchunk(struct in_chunk_dir *cd, ecard_t *ec, int id, int num)
> -{
> -	struct ex_chunk_dir excd;
> -	int index = 16;
> -	int useld = 0;
> -
> -	if (!ec->cid.cd)
> -		return 0;
> -
> -	while(1) {
> -		ecard_readbytes(&excd, ec, index, 8, useld);
> -		index += 8;
> -		if (c_id(&excd) == 0) {
> -			if (!useld && ec->loader) {
> -				useld = 1;
> -				index = 0;
> -				continue;
> -			}
> -			return 0;
> -		}
> -		if (c_id(&excd) == 0xf0) { /* link */
> -			index = c_start(&excd);
> -			continue;
> -		}
> -		if (c_id(&excd) == 0x80) { /* loader */
> -			if (!ec->loader) {
> -				ec->loader = kmalloc(c_len(&excd),
> -							       GFP_KERNEL);
> -				if (ec->loader)
> -					ecard_readbytes(ec->loader, ec,
> -							(int)c_start(&excd),
> -							c_len(&excd), useld);
> -				else
> -					return 0;
> -			}
> -			continue;
> -		}
> -		if (c_id(&excd) == id && num-- == 0)
> -			break;
> -	}
> -
> -	if (c_id(&excd) & 0x80) {
> -		switch (c_id(&excd) & 0x70) {
> -		case 0x70:
> -			ecard_readbytes((unsigned char *)excd.d.string, ec,
> -					(int)c_start(&excd), c_len(&excd),
> -					useld);
> -			break;
> -		case 0x00:
> -			break;
> -		}
> -	}
> -	cd->start_offset = c_start(&excd);
> -	memcpy(cd->d.string, excd.d.string, 256);
> -	return 1;
> -}
> -
> -/* ======================= Interrupt control ============================ */
> -
> -static void ecard_def_irq_enable(ecard_t *ec, int irqnr)
> -{
> -}
> -
> -static void ecard_def_irq_disable(ecard_t *ec, int irqnr)
> -{
> -}
> -
> -static int ecard_def_irq_pending(ecard_t *ec)
> -{
> -	return !ec->irqmask || readb(ec->irqaddr) & ec->irqmask;
> -}
> -
> -static void ecard_def_fiq_enable(ecard_t *ec, int fiqnr)
> -{
> -	panic("ecard_def_fiq_enable called - impossible");
> -}
> -
> -static void ecard_def_fiq_disable(ecard_t *ec, int fiqnr)
> -{
> -	panic("ecard_def_fiq_disable called - impossible");
> -}
> -
> -static int ecard_def_fiq_pending(ecard_t *ec)
> -{
> -	return !ec->fiqmask || readb(ec->fiqaddr) & ec->fiqmask;
> -}
> -
> -static expansioncard_ops_t ecard_default_ops = {
> -	ecard_def_irq_enable,
> -	ecard_def_irq_disable,
> -	ecard_def_irq_pending,
> -	ecard_def_fiq_enable,
> -	ecard_def_fiq_disable,
> -	ecard_def_fiq_pending
> -};
> -
> -/*
> - * Enable and disable interrupts from expansion cards.
> - * (interrupts are disabled for these functions).
> - *
> - * They are not meant to be called directly, but via enable/disable_irq.
> - */
> -static void ecard_irq_unmask(struct irq_data *d)
> -{
> -	ecard_t *ec = irq_data_get_irq_chip_data(d);
> -
> -	if (ec) {
> -		if (!ec->ops)
> -			ec->ops = &ecard_default_ops;
> -
> -		if (ec->claimed && ec->ops->irqenable)
> -			ec->ops->irqenable(ec, d->irq);
> -		else
> -			printk(KERN_ERR "ecard: rejecting request to "
> -				"enable IRQs for %d\n", d->irq);
> -	}
> -}
> -
> -static void ecard_irq_mask(struct irq_data *d)
> -{
> -	ecard_t *ec = irq_data_get_irq_chip_data(d);
> -
> -	if (ec) {
> -		if (!ec->ops)
> -			ec->ops = &ecard_default_ops;
> -
> -		if (ec->ops && ec->ops->irqdisable)
> -			ec->ops->irqdisable(ec, d->irq);
> -	}
> -}
> -
> -static struct irq_chip ecard_chip = {
> -	.name		= "ECARD",
> -	.irq_ack	= ecard_irq_mask,
> -	.irq_mask	= ecard_irq_mask,
> -	.irq_unmask	= ecard_irq_unmask,
> -};
> -
> -void ecard_enablefiq(unsigned int fiqnr)
> -{
> -	ecard_t *ec = slot_to_ecard(fiqnr);
> -
> -	if (ec) {
> -		if (!ec->ops)
> -			ec->ops = &ecard_default_ops;
> -
> -		if (ec->claimed && ec->ops->fiqenable)
> -			ec->ops->fiqenable(ec, fiqnr);
> -		else
> -			printk(KERN_ERR "ecard: rejecting request to "
> -				"enable FIQs for %d\n", fiqnr);
> -	}
> -}
> -
> -void ecard_disablefiq(unsigned int fiqnr)
> -{
> -	ecard_t *ec = slot_to_ecard(fiqnr);
> -
> -	if (ec) {
> -		if (!ec->ops)
> -			ec->ops = &ecard_default_ops;
> -
> -		if (ec->ops->fiqdisable)
> -			ec->ops->fiqdisable(ec, fiqnr);
> -	}
> -}
> -
> -static void ecard_dump_irq_state(void)
> -{
> -	ecard_t *ec;
> -
> -	printk("Expansion card IRQ state:\n");
> -
> -	for (ec = cards; ec; ec = ec->next) {
> -		const char *claimed;
> -
> -		if (ec->slot_no == 8)
> -			continue;
> -
> -		claimed = ec->claimed ? "" : "not ";
> -
> -		if (ec->ops && ec->ops->irqpending &&
> -		    ec->ops != &ecard_default_ops)
> -			printk("  %d: %sclaimed irq %spending\n",
> -			       ec->slot_no, claimed,
> -			       ec->ops->irqpending(ec) ? "" : "not ");
> -		else
> -			printk("  %d: %sclaimed irqaddr %p, mask = %02X, status = %02X\n",
> -			       ec->slot_no, claimed,
> -			       ec->irqaddr, ec->irqmask, readb(ec->irqaddr));
> -	}
> -}
> -
> -static void ecard_check_lockup(struct irq_desc *desc)
> -{
> -	static unsigned long last;
> -	static int lockup;
> -
> -	/*
> -	 * If the timer interrupt has not run since the last million
> -	 * unrecognised expansion card interrupts, then there is
> -	 * something seriously wrong.  Disable the expansion card
> -	 * interrupts so at least we can continue.
> -	 *
> -	 * Maybe we ought to start a timer to re-enable them some time
> -	 * later?
> -	 */
> -	if (last == jiffies) {
> -		lockup += 1;
> -		if (lockup > 1000000) {
> -			printk(KERN_ERR "\nInterrupt lockup detected - "
> -			       "disabling all expansion card interrupts\n");
> -
> -			desc->irq_data.chip->irq_mask(&desc->irq_data);
> -			ecard_dump_irq_state();
> -		}
> -	} else
> -		lockup = 0;
> -
> -	/*
> -	 * If we did not recognise the source of this interrupt,
> -	 * warn the user, but don't flood the user with these messages.
> -	 */
> -	if (!last || time_after(jiffies, last + 5*HZ)) {
> -		last = jiffies;
> -		printk(KERN_WARNING "Unrecognised interrupt from backplane\n");
> -		ecard_dump_irq_state();
> -	}
> -}
> -
> -static void ecard_irq_handler(struct irq_desc *desc)
> -{
> -	ecard_t *ec;
> -	int called = 0;
> -
> -	desc->irq_data.chip->irq_mask(&desc->irq_data);
> -	for (ec = cards; ec; ec = ec->next) {
> -		int pending;
> -
> -		if (!ec->claimed || !ec->irq || ec->slot_no == 8)
> -			continue;
> -
> -		if (ec->ops && ec->ops->irqpending)
> -			pending = ec->ops->irqpending(ec);
> -		else
> -			pending = ecard_default_ops.irqpending(ec);
> -
> -		if (pending) {
> -			generic_handle_irq(ec->irq);
> -			called ++;
> -		}
> -	}
> -	desc->irq_data.chip->irq_unmask(&desc->irq_data);
> -
> -	if (called == 0)
> -		ecard_check_lockup(desc);
> -}
> -
> -static void __iomem *__ecard_address(ecard_t *ec, card_type_t type, card_speed_t speed)
> -{
> -	void __iomem *address = NULL;
> -	int slot = ec->slot_no;
> -
> -	if (ec->slot_no == 8)
> -		return ECARD_MEMC8_BASE;
> -
> -	ectcr &= ~(1 << slot);
> -
> -	switch (type) {
> -	case ECARD_MEMC:
> -		if (slot < 4)
> -			address = ECARD_MEMC_BASE + (slot << 14);
> -		break;
> -
> -	case ECARD_IOC:
> -		if (slot < 4)
> -			address = ECARD_IOC_BASE + (slot << 14);
> -		else
> -			address = ECARD_IOC4_BASE + ((slot - 4) << 14);
> -		if (address)
> -			address += speed << 19;
> -		break;
> -
> -	case ECARD_EASI:
> -		address = ECARD_EASI_BASE + (slot << 24);
> -		if (speed == ECARD_FAST)
> -			ectcr |= 1 << slot;
> -		break;
> -
> -	default:
> -		break;
> -	}
> -
> -#ifdef IOMD_ECTCR
> -	iomd_writeb(ectcr, IOMD_ECTCR);
> -#endif
> -	return address;
> -}
> -
> -static int ecard_prints(struct seq_file *m, ecard_t *ec)
> -{
> -	seq_printf(m, "  %d: %s ", ec->slot_no, ec->easi ? "EASI" : "    ");
> -
> -	if (ec->cid.id == 0) {
> -		struct in_chunk_dir incd;
> -
> -		seq_printf(m, "[%04X:%04X] ",
> -			ec->cid.manufacturer, ec->cid.product);
> -
> -		if (!ec->card_desc && ec->cid.cd &&
> -		    ecard_readchunk(&incd, ec, 0xf5, 0)) {
> -			ec->card_desc = kmalloc(strlen(incd.d.string)+1, GFP_KERNEL);
> -
> -			if (ec->card_desc)
> -				strcpy((char *)ec->card_desc, incd.d.string);
> -		}
> -
> -		seq_printf(m, "%s\n", ec->card_desc ? ec->card_desc : "*unknown*");
> -	} else
> -		seq_printf(m, "Simple card %d\n", ec->cid.id);
> -
> -	return 0;
> -}
> -
> -static int ecard_devices_proc_show(struct seq_file *m, void *v)
> -{
> -	ecard_t *ec = cards;
> -
> -	while (ec) {
> -		ecard_prints(m, ec);
> -		ec = ec->next;
> -	}
> -	return 0;
> -}
> -
> -static struct proc_dir_entry *proc_bus_ecard_dir = NULL;
> -
> -static void ecard_proc_init(void)
> -{
> -	proc_bus_ecard_dir = proc_mkdir("bus/ecard", NULL);
> -	proc_create_single("devices", 0, proc_bus_ecard_dir,
> -			ecard_devices_proc_show);
> -}
> -
> -#define ec_set_resource(ec,nr,st,sz)				\
> -	do {							\
> -		(ec)->resource[nr].name = dev_name(&ec->dev);	\
> -		(ec)->resource[nr].start = st;			\
> -		(ec)->resource[nr].end = (st) + (sz) - 1;	\
> -		(ec)->resource[nr].flags = IORESOURCE_MEM;	\
> -	} while (0)
> -
> -static void __init ecard_free_card(struct expansion_card *ec)
> -{
> -	int i;
> -
> -	for (i = 0; i < ECARD_NUM_RESOURCES; i++)
> -		if (ec->resource[i].flags)
> -			release_resource(&ec->resource[i]);
> -
> -	kfree(ec);
> -}
> -
> -static struct expansion_card *__init ecard_alloc_card(int type, int slot)
> -{
> -	struct expansion_card *ec;
> -	unsigned long base;
> -	int i;
> -
> -	ec = kzalloc_obj(ecard_t);
> -	if (!ec) {
> -		ec = ERR_PTR(-ENOMEM);
> -		goto nomem;
> -	}
> -
> -	ec->slot_no = slot;
> -	ec->easi = type == ECARD_EASI;
> -	ec->irq = 0;
> -	ec->fiq = 0;
> -	ec->dma = NO_DMA;
> -	ec->ops = &ecard_default_ops;
> -
> -	dev_set_name(&ec->dev, "ecard%d", slot);
> -	ec->dev.parent = NULL;
> -	ec->dev.bus = &ecard_bus_type;
> -	ec->dev.dma_mask = &ec->dma_mask;
> -	ec->dma_mask = (u64)0xffffffff;
> -	ec->dev.coherent_dma_mask = ec->dma_mask;
> -
> -	if (slot < 4) {
> -		ec_set_resource(ec, ECARD_RES_MEMC,
> -				PODSLOT_MEMC_BASE + (slot << 14),
> -				PODSLOT_MEMC_SIZE);
> -		base = PODSLOT_IOC0_BASE + (slot << 14);
> -	} else
> -		base = PODSLOT_IOC4_BASE + ((slot - 4) << 14);
> -
> -#ifdef CONFIG_ARCH_RPC
> -	if (slot < 8) {
> -		ec_set_resource(ec, ECARD_RES_EASI,
> -				PODSLOT_EASI_BASE + (slot << 24),
> -				PODSLOT_EASI_SIZE);
> -	}
> -
> -	if (slot == 8) {
> -		ec_set_resource(ec, ECARD_RES_MEMC, NETSLOT_BASE, NETSLOT_SIZE);
> -	} else
> -#endif
> -
> -	for (i = 0; i <= ECARD_RES_IOCSYNC - ECARD_RES_IOCSLOW; i++)
> -		ec_set_resource(ec, i + ECARD_RES_IOCSLOW,
> -				base + (i << 19), PODSLOT_IOC_SIZE);
> -
> -	for (i = 0; i < ECARD_NUM_RESOURCES; i++) {
> -		if (ec->resource[i].flags &&
> -		    request_resource(&iomem_resource, &ec->resource[i])) {
> -			dev_err(&ec->dev, "resource(s) not available\n");
> -			ec->resource[i].end -= ec->resource[i].start;
> -			ec->resource[i].start = 0;
> -			ec->resource[i].flags = 0;
> -		}
> -	}
> -
> - nomem:
> -	return ec;
> -}
> -
> -static ssize_t irq_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	return sprintf(buf, "%u\n", ec->irq);
> -}
> -static DEVICE_ATTR_RO(irq);
> -
> -static ssize_t dma_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	return sprintf(buf, "%u\n", ec->dma);
> -}
> -static DEVICE_ATTR_RO(dma);
> -
> -static ssize_t resource_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	char *str = buf;
> -	int i;
> -
> -	for (i = 0; i < ECARD_NUM_RESOURCES; i++)
> -		str += sprintf(str, "%08x %08x %08lx\n",
> -				ec->resource[i].start,
> -				ec->resource[i].end,
> -				ec->resource[i].flags);
> -
> -	return str - buf;
> -}
> -static DEVICE_ATTR_RO(resource);
> -
> -static ssize_t vendor_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	return sprintf(buf, "%u\n", ec->cid.manufacturer);
> -}
> -static DEVICE_ATTR_RO(vendor);
> -
> -static ssize_t device_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	return sprintf(buf, "%u\n", ec->cid.product);
> -}
> -static DEVICE_ATTR_RO(device);
> -
> -static ssize_t type_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	return sprintf(buf, "%s\n", ec->easi ? "EASI" : "IOC");
> -}
> -static DEVICE_ATTR_RO(type);
> -
> -static struct attribute *ecard_dev_attrs[] = {
> -	&dev_attr_device.attr,
> -	&dev_attr_dma.attr,
> -	&dev_attr_irq.attr,
> -	&dev_attr_resource.attr,
> -	&dev_attr_type.attr,
> -	&dev_attr_vendor.attr,
> -	NULL,
> -};
> -ATTRIBUTE_GROUPS(ecard_dev);
> -
> -int ecard_request_resources(struct expansion_card *ec)
> -{
> -	int i, err = 0;
> -
> -	for (i = 0; i < ECARD_NUM_RESOURCES; i++) {
> -		if (ecard_resource_end(ec, i) &&
> -		    !request_mem_region(ecard_resource_start(ec, i),
> -					ecard_resource_len(ec, i),
> -					ec->dev.driver->name)) {
> -			err = -EBUSY;
> -			break;
> -		}
> -	}
> -
> -	if (err) {
> -		while (i--)
> -			if (ecard_resource_end(ec, i))
> -				release_mem_region(ecard_resource_start(ec, i),
> -						   ecard_resource_len(ec, i));
> -	}
> -	return err;
> -}
> -EXPORT_SYMBOL(ecard_request_resources);
> -
> -void ecard_release_resources(struct expansion_card *ec)
> -{
> -	int i;
> -
> -	for (i = 0; i < ECARD_NUM_RESOURCES; i++)
> -		if (ecard_resource_end(ec, i))
> -			release_mem_region(ecard_resource_start(ec, i),
> -					   ecard_resource_len(ec, i));
> -}
> -EXPORT_SYMBOL(ecard_release_resources);
> -
> -void ecard_setirq(struct expansion_card *ec, const struct expansion_card_ops *ops, void *irq_data)
> -{
> -	ec->irq_data = irq_data;
> -	barrier();
> -	ec->ops = ops;
> -}
> -EXPORT_SYMBOL(ecard_setirq);
> -
> -void __iomem *ecardm_iomap(struct expansion_card *ec, unsigned int res,
> -			   unsigned long offset, unsigned long maxsize)
> -{
> -	unsigned long start = ecard_resource_start(ec, res);
> -	unsigned long end = ecard_resource_end(ec, res);
> -
> -	if (offset > (end - start))
> -		return NULL;
> -
> -	start += offset;
> -	if (maxsize && end - start > maxsize)
> -		end = start + maxsize;
> -	
> -	return devm_ioremap(&ec->dev, start, end - start);
> -}
> -EXPORT_SYMBOL(ecardm_iomap);
> -
> -static void atomwide_3p_quirk(ecard_t *ec)
> -{
> -	void __iomem *addr = __ecard_address(ec, ECARD_IOC, ECARD_SYNC);
> -	unsigned int i;
> -
> -	/* Disable interrupts on each port */
> -	for (i = 0x2000; i <= 0x2800; i += 0x0400)
> -		writeb(0, addr + i + 4);	
> -}
> -
> -/*
> - * Probe for an expansion card.
> - *
> - * If bit 1 of the first byte of the card is set, then the
> - * card does not exist.
> - */
> -static int __init ecard_probe(int slot, unsigned irq, card_type_t type)
> -{
> -	ecard_t **ecp;
> -	ecard_t *ec;
> -	struct ex_ecid cid;
> -	void __iomem *addr;
> -	int i, rc;
> -
> -	ec = ecard_alloc_card(type, slot);
> -	if (IS_ERR(ec)) {
> -		rc = PTR_ERR(ec);
> -		goto nomem;
> -	}
> -
> -	rc = -ENODEV;
> -	if ((addr = __ecard_address(ec, type, ECARD_SYNC)) == NULL)
> -		goto nodev;
> -
> -	cid.r_zero = 1;
> -	ecard_readbytes(&cid, ec, 0, 16, 0);
> -	if (cid.r_zero)
> -		goto nodev;
> -
> -	ec->cid.id	= cid.r_id;
> -	ec->cid.cd	= cid.r_cd;
> -	ec->cid.is	= cid.r_is;
> -	ec->cid.w	= cid.r_w;
> -	ec->cid.manufacturer = ecard_getu16(cid.r_manu);
> -	ec->cid.product = ecard_getu16(cid.r_prod);
> -	ec->cid.country = cid.r_country;
> -	ec->cid.irqmask = cid.r_irqmask;
> -	ec->cid.irqoff  = ecard_gets24(cid.r_irqoff);
> -	ec->cid.fiqmask = cid.r_fiqmask;
> -	ec->cid.fiqoff  = ecard_gets24(cid.r_fiqoff);
> -	ec->fiqaddr	=
> -	ec->irqaddr	= addr;
> -
> -	if (ec->cid.is) {
> -		ec->irqmask = ec->cid.irqmask;
> -		ec->irqaddr += ec->cid.irqoff;
> -		ec->fiqmask = ec->cid.fiqmask;
> -		ec->fiqaddr += ec->cid.fiqoff;
> -	} else {
> -		ec->irqmask = 1;
> -		ec->fiqmask = 4;
> -	}
> -
> -	for (i = 0; i < ARRAY_SIZE(quirklist); i++)
> -		if (quirklist[i].manufacturer == ec->cid.manufacturer &&
> -		    quirklist[i].product == ec->cid.product) {
> -			if (quirklist[i].type)
> -				ec->card_desc = quirklist[i].type;
> -			if (quirklist[i].init)
> -				quirklist[i].init(ec);
> -			break;
> -		}
> -
> -	ec->irq = irq;
> -
> -	/*
> -	 * hook the interrupt handlers
> -	 */
> -	if (slot < 8) {
> -		irq_set_chip_and_handler(ec->irq, &ecard_chip,
> -					 handle_level_irq);
> -		irq_set_chip_data(ec->irq, ec);
> -		irq_clear_status_flags(ec->irq, IRQ_NOREQUEST);
> -	}
> -
> -#ifdef CONFIG_ARCH_RPC
> -	/* On RiscPC, only first two slots have DMA capability */
> -	if (slot < 2)
> -		ec->dma = 2 + slot;
> -#endif
> -
> -	for (ecp = &cards; *ecp; ecp = &(*ecp)->next);
> -
> -	*ecp = ec;
> -	slot_to_expcard[slot] = ec;
> -
> -	rc = device_register(&ec->dev);
> -	if (rc)
> -		goto nodev;
> -
> -	return 0;
> -
> - nodev:
> -	ecard_free_card(ec);
> - nomem:
> -	return rc;
> -}
> -
> -/*
> - * Initialise the expansion card system.
> - * Locate all hardware - interrupt management and
> - * actual cards.
> - */
> -static int __init ecard_init(void)
> -{
> -	struct task_struct *task;
> -	int slot, irqbase;
> -
> -	irqbase = irq_alloc_descs(-1, 0, 8, -1);
> -	if (irqbase < 0)
> -		return irqbase;
> -
> -	task = kthread_run(ecard_task, NULL, "kecardd");
> -	if (IS_ERR(task)) {
> -		printk(KERN_ERR "Ecard: unable to create kernel thread: %ld\n",
> -		       PTR_ERR(task));
> -		irq_free_descs(irqbase, 8);
> -		return PTR_ERR(task);
> -	}
> -
> -	printk("Probing expansion cards\n");
> -
> -	for (slot = 0; slot < 8; slot ++) {
> -		if (ecard_probe(slot, irqbase + slot, ECARD_EASI) == -ENODEV)
> -			ecard_probe(slot, irqbase + slot, ECARD_IOC);
> -	}
> -
> -	ecard_probe(8, 11, ECARD_IOC);
> -
> -	irq_set_chained_handler(IRQ_EXPANSIONCARD, ecard_irq_handler);
> -
> -	ecard_proc_init();
> -
> -	return 0;
> -}
> -
> -subsys_initcall(ecard_init);
> -
> -/*
> - *	ECARD "bus"
> - */
> -static const struct ecard_id *
> -ecard_match_device(const struct ecard_id *ids, struct expansion_card *ec)
> -{
> -	int i;
> -
> -	for (i = 0; ids[i].manufacturer != 65535; i++)
> -		if (ec->cid.manufacturer == ids[i].manufacturer &&
> -		    ec->cid.product == ids[i].product)
> -			return ids + i;
> -
> -	return NULL;
> -}
> -
> -static int ecard_drv_probe(struct device *dev)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	struct ecard_driver *drv = ECARD_DRV(dev->driver);
> -	const struct ecard_id *id;
> -	int ret;
> -
> -	id = ecard_match_device(drv->id_table, ec);
> -
> -	ec->claimed = 1;
> -	ret = drv->probe(ec, id);
> -	if (ret)
> -		ec->claimed = 0;
> -	return ret;
> -}
> -
> -static void ecard_drv_remove(struct device *dev)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	struct ecard_driver *drv = ECARD_DRV(dev->driver);
> -
> -	drv->remove(ec);
> -	ec->claimed = 0;
> -
> -	/*
> -	 * Restore the default operations.  We ensure that the
> -	 * ops are set before we change the data.
> -	 */
> -	ec->ops = &ecard_default_ops;
> -	barrier();
> -	ec->irq_data = NULL;
> -}
> -
> -/*
> - * Before rebooting, we must make sure that the expansion card is in a
> - * sensible state, so it can be re-detected.  This means that the first
> - * page of the ROM must be visible.  We call the expansion cards reset
> - * handler, if any.
> - */
> -static void ecard_drv_shutdown(struct device *dev)
> -{
> -	struct expansion_card *ec = ECARD_DEV(dev);
> -	struct ecard_driver *drv = ECARD_DRV(dev->driver);
> -	struct ecard_request req;
> -
> -	if (dev->driver) {
> -		if (drv->shutdown)
> -			drv->shutdown(ec);
> -		ec->claimed = 0;
> -	}
> -
> -	/*
> -	 * If this card has a loader, call the reset handler.
> -	 */
> -	if (ec->loader) {
> -		req.fn = ecard_task_reset;
> -		req.ec = ec;
> -		ecard_call(&req);
> -	}
> -}
> -
> -int ecard_register_driver(struct ecard_driver *drv)
> -{
> -	drv->drv.bus = &ecard_bus_type;
> -
> -	return driver_register(&drv->drv);
> -}
> -
> -void ecard_remove_driver(struct ecard_driver *drv)
> -{
> -	driver_unregister(&drv->drv);
> -}
> -
> -static int ecard_match(struct device *_dev, const struct device_driver *_drv)
> -{
> -	struct expansion_card *ec = ECARD_DEV(_dev);
> -	struct ecard_driver *drv = ECARD_DRV(_drv);
> -	int ret;
> -
> -	if (drv->id_table) {
> -		ret = ecard_match_device(drv->id_table, ec) != NULL;
> -	} else {
> -		ret = ec->cid.id == drv->id;
> -	}
> -
> -	return ret;
> -}
> -
> -const struct bus_type ecard_bus_type = {
> -	.name		= "ecard",
> -	.dev_groups	= ecard_dev_groups,
> -	.match		= ecard_match,
> -	.probe		= ecard_drv_probe,
> -	.remove		= ecard_drv_remove,
> -	.shutdown	= ecard_drv_shutdown,
> -};
> -
> -static int ecard_bus_init(void)
> -{
> -	return bus_register(&ecard_bus_type);
> -}
> -
> -postcore_initcall(ecard_bus_init);
> -
> -EXPORT_SYMBOL(ecard_readchunk);
> -EXPORT_SYMBOL(ecard_register_driver);
> -EXPORT_SYMBOL(ecard_remove_driver);
> -EXPORT_SYMBOL(ecard_bus_type);
> diff --git a/arch/arm/mach-rpc/ecard.h b/arch/arm/mach-rpc/ecard.h
> deleted file mode 100644
> index 873dd3d9f274..000000000000
> --- a/arch/arm/mach-rpc/ecard.h
> +++ /dev/null
> @@ -1,66 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  ecard.h
> - *
> - *  Copyright 2007 Russell King
> - */
> -
> -/* Definitions internal to ecard.c - for it's use only!!
> - *
> - * External expansion card header as read from the card
> - */
> -struct ex_ecid {
> -	unsigned char	r_irq:1;
> -	unsigned char	r_zero:1;
> -	unsigned char	r_fiq:1;
> -	unsigned char	r_id:4;
> -	unsigned char	r_a:1;
> -
> -	unsigned char	r_cd:1;
> -	unsigned char	r_is:1;
> -	unsigned char	r_w:2;
> -	unsigned char	r_r1:4;
> -
> -	unsigned char	r_r2:8;
> -
> -	unsigned char	r_prod[2];
> -
> -	unsigned char	r_manu[2];
> -
> -	unsigned char	r_country;
> -
> -	unsigned char	r_fiqmask;
> -	unsigned char	r_fiqoff[3];
> -
> -	unsigned char	r_irqmask;
> -	unsigned char	r_irqoff[3];
> -};
> -
> -/*
> - * Chunk directory entry as read from the card
> - */
> -struct ex_chunk_dir {
> -	unsigned char r_id;
> -	unsigned char r_len[3];
> -	unsigned long r_start;
> -	union {
> -		char string[256];
> -		char data[1];
> -	} d;
> -#define c_id(x)		((x)->r_id)
> -#define c_len(x)	((x)->r_len[0]|((x)->r_len[1]<<8)|((x)->r_len[2]<<16))
> -#define c_start(x)	((x)->r_start)
> -};
> -
> -typedef enum ecard_type {		/* Cards address space		*/
> -	ECARD_IOC,
> -	ECARD_MEMC,
> -	ECARD_EASI
> -} card_type_t;
> -
> -typedef enum {				/* Speed for ECARD_IOC space	*/
> -	ECARD_SLOW	 = 0,
> -	ECARD_MEDIUM	 = 1,
> -	ECARD_FAST	 = 2,
> -	ECARD_SYNC	 = 3
> -} card_speed_t;
> diff --git a/arch/arm/mach-rpc/fiq.S b/arch/arm/mach-rpc/fiq.S
> deleted file mode 100644
> index 087bdf4bc093..000000000000
> --- a/arch/arm/mach-rpc/fiq.S
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#include <linux/linkage.h>
> -#include <asm/assembler.h>
> -#include <mach/hardware.h>
> -
> -	.equ	ioc_base_high, IOC_BASE & 0xff000000
> -	.equ	ioc_base_low, IOC_BASE & 0x00ff0000
> -
> -	.text
> -	.global	rpc_default_fiq_end
> -ENTRY(rpc_default_fiq_start)
> -	mov	r12, #ioc_base_high
> -	.if	ioc_base_low
> -	orr	r12, r12, #ioc_base_low
> -	.endif
> -	strb	r12, [r12, #0x38]	@ Disable FIQ register
> -	subs	pc, lr, #4
> -rpc_default_fiq_end:
> diff --git a/arch/arm/mach-rpc/floppydma.S b/arch/arm/mach-rpc/floppydma.S
> deleted file mode 100644
> index 6698b83050dc..000000000000
> --- a/arch/arm/mach-rpc/floppydma.S
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  linux/arch/arm/lib/floppydma.S
> - *
> - *  Copyright (C) 1995, 1996 Russell King
> - */
> -#include <linux/linkage.h>
> -#include <asm/assembler.h>
> -		.text
> -
> -		.global	floppy_fiqin_end
> -ENTRY(floppy_fiqin_start)
> -		subs	r9, r9, #1
> -		ldrbgt	r12, [r11, #-4]
> -		ldrble	r12, [r11], #0
> -		strb	r12, [r10], #1
> -		subs	pc, lr, #4
> -floppy_fiqin_end:
> -
> -		.global	floppy_fiqout_end
> -ENTRY(floppy_fiqout_start)
> -		subs	r9, r9, #1
> -		ldrbge	r12, [r10], #1
> -		movlt	r12, #0
> -		strble	r12, [r11], #0
> -		subsle	pc, lr, #4
> -		strb	r12, [r11, #-4]
> -		subs	pc, lr, #4
> -floppy_fiqout_end:
> diff --git a/arch/arm/mach-rpc/include/mach/acornfb.h b/arch/arm/mach-rpc/include/mach/acornfb.h
> deleted file mode 100644
> index 2bf18ab3d699..000000000000
> --- a/arch/arm/mach-rpc/include/mach/acornfb.h
> +++ /dev/null
> @@ -1,137 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/acornfb.h
> - *
> - *  Copyright (C) 1999 Russell King
> - *
> - *  AcornFB architecture specific code
> - */
> -
> -#define acornfb_bandwidth(var) ((var)->pixclock * 8 / (var)->bits_per_pixel)
> -
> -static inline int
> -acornfb_valid_pixrate(struct fb_var_screeninfo *var)
> -{
> -	u_long limit;
> -
> -	if (!var->pixclock)
> -		return 0;
> -
> -	/*
> -	 * Limits below are taken from RISC OS bandwidthlimit file
> -	 */
> -	if (current_par.using_vram) {
> -		if (current_par.vram_half_sam == 2048)
> -			limit = 6578;
> -		else
> -			limit = 13157;
> -	} else {
> -		limit = 26315;
> -	}
> -
> -	return acornfb_bandwidth(var) >= limit;
> -}
> -
> -/*
> - * Try to find the best PLL parameters for the pixel clock.
> - * This algorithm seems to give best predictable results,
> - * and produces the same values as detailed in the VIDC20
> - * data sheet.
> - */
> -static inline u_int
> -acornfb_vidc20_find_pll(u_int pixclk)
> -{
> -	u_int r, best_r = 2, best_v = 2;
> -	int best_d = 0x7fffffff;
> -
> -	for (r = 2; r <= 32; r++) {
> -		u_int rr, v, p;
> -		int d;
> -
> -		rr = 41667 * r;
> -
> -		v = (rr + pixclk / 2) / pixclk;
> -
> -		if (v > 32 || v < 2)
> -			continue;
> -
> -		p = (rr + v / 2) / v;
> -
> -		d = pixclk - p;
> -
> -		if (d < 0)
> -			d = -d;
> -
> -		if (d < best_d) {
> -			best_d = d;
> -			best_v = v - 1;
> -			best_r = r - 1;
> -		}
> -
> -		if (d == 0)
> -			break;
> -	}
> -
> -	return best_v << 8 | best_r;
> -}
> -
> -static inline void
> -acornfb_vidc20_find_rates(struct vidc_timing *vidc,
> -			  struct fb_var_screeninfo *var)
> -{
> -	u_int div;
> -
> -	/* Select pixel-clock divisor to keep PLL in range */
> -	div = var->pixclock / 9090; /*9921*/
> -
> -	/* Limit divisor */
> -	if (div == 0)
> -		div = 1;
> -	if (div > 8)
> -		div = 8;
> -
> -	/* Encode divisor to VIDC20 setting */
> -	switch (div) {
> -	case 1:	vidc->control |= VIDC20_CTRL_PIX_CK;  break;
> -	case 2:	vidc->control |= VIDC20_CTRL_PIX_CK2; break;
> -	case 3:	vidc->control |= VIDC20_CTRL_PIX_CK3; break;
> -	case 4:	vidc->control |= VIDC20_CTRL_PIX_CK4; break;
> -	case 5:	vidc->control |= VIDC20_CTRL_PIX_CK5; break;
> -	case 6:	vidc->control |= VIDC20_CTRL_PIX_CK6; break;
> -	case 7:	vidc->control |= VIDC20_CTRL_PIX_CK7; break;
> -	case 8: vidc->control |= VIDC20_CTRL_PIX_CK8; break;
> -	}
> -
> -	/*
> -	 * With VRAM, the FIFO can be set to the highest possible setting
> -	 * because there are no latency considerations for other memory
> -	 * accesses. However, in 64 bit bus mode the FIFO preload value
> -	 * must not be set to VIDC20_CTRL_FIFO_28 because this will let
> -	 * the FIFO overflow. See VIDC20 manual page 33 (6.0 Setting the
> -	 * FIFO preload value).
> -	 */
> -	if (current_par.using_vram) {
> -		if (current_par.vram_half_sam == 2048)
> -			vidc->control |= VIDC20_CTRL_FIFO_24;
> -		else
> -			vidc->control |= VIDC20_CTRL_FIFO_28;
> -	} else {
> -		unsigned long bandwidth = acornfb_bandwidth(var);
> -
> -		/* Encode bandwidth as VIDC20 setting */
> -		if (bandwidth > 33334)		/* < 30.0MB/s */
> -			vidc->control |= VIDC20_CTRL_FIFO_16;
> -		else if (bandwidth > 26666)	/* < 37.5MB/s */
> -			vidc->control |= VIDC20_CTRL_FIFO_20;
> -		else if (bandwidth > 22222)	/* < 45.0MB/s */
> -			vidc->control |= VIDC20_CTRL_FIFO_24;
> -		else				/* > 45.0MB/s */
> -			vidc->control |= VIDC20_CTRL_FIFO_28;
> -	}
> -
> -	/* Find the PLL values */
> -	vidc->pll_ctl = acornfb_vidc20_find_pll(var->pixclock / div);
> -}
> -
> -#define acornfb_default_control()	(VIDC20_CTRL_PIX_VCLK)
> -#define acornfb_default_econtrol()	(VIDC20_ECTL_DAC | VIDC20_ECTL_REG(3))
> diff --git a/arch/arm/mach-rpc/include/mach/hardware.h b/arch/arm/mach-rpc/include/mach/hardware.h
> deleted file mode 100644
> index 6f197706f979..000000000000
> --- a/arch/arm/mach-rpc/include/mach/hardware.h
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/hardware.h
> - *
> - *  Copyright (C) 1996-1999 Russell King.
> - *
> - *  This file contains the hardware definitions of the RiscPC series machines.
> - */
> -#ifndef __ASM_ARCH_HARDWARE_H
> -#define __ASM_ARCH_HARDWARE_H
> -
> -#include <mach/memory.h>
> -
> -/*
> - * What hardware must be present
> - */
> -#define HAS_IOMD
> -#define HAS_VIDC20
> -
> -/* Hardware addresses of major areas.
> - *  *_START is the physical address
> - *  *_SIZE  is the size of the region
> - *  *_BASE  is the virtual address
> - */
> -#define RPC_RAM_SIZE		0x10000000
> -#define RPC_RAM_START		0x10000000
> -
> -#define EASI_SIZE		0x08000000	/* EASI I/O */
> -#define EASI_START		0x08000000
> -#define EASI_BASE		IOMEM(0xe5000000)
> -
> -#define IO_START		0x03000000	/* I/O */
> -#define IO_SIZE			0x01000000
> -#define IO_BASE			IOMEM(0xe0000000)
> -
> -#define SCREEN_START		0x02000000	/* VRAM */
> -#define SCREEN_END		0xdfc00000
> -#define SCREEN_BASE		0xdf800000
> -
> -#define UNCACHEABLE_ADDR	(FLUSH_BASE + 0x10000)
> -
> -/*
> - * IO Addresses
> - */
> -#define ECARD_EASI_BASE		(EASI_BASE)
> -#define VIDC_BASE		(IO_BASE + 0x00400000)
> -#define EXPMASK_BASE		(IO_BASE + 0x00360000)
> -#define ECARD_IOC4_BASE		(IO_BASE + 0x00270000)
> -#define ECARD_IOC_BASE		(IO_BASE + 0x00240000)
> -#define IOMD_BASE		(IO_BASE + 0x00200000)
> -#define IOC_BASE		(IO_BASE + 0x00200000)
> -#define ECARD_MEMC8_BASE	(IO_BASE + 0x0002b000)
> -#define FLOPPYDMA_BASE		(IO_BASE + 0x0002a000)
> -#define PCIO_BASE		(IO_BASE + 0x00010000)
> -#define ECARD_MEMC_BASE		(IO_BASE + 0x00000000)
> -
> -#define vidc_writel(val)	__raw_writel(val, VIDC_BASE)
> -
> -#define NETSLOT_BASE		0x0302b000
> -#define NETSLOT_SIZE		0x00001000
> -
> -#define PODSLOT_IOC0_BASE	0x03240000
> -#define PODSLOT_IOC4_BASE	0x03270000
> -#define PODSLOT_IOC_SIZE	(1 << 14)
> -#define PODSLOT_MEMC_BASE	0x03000000
> -#define PODSLOT_MEMC_SIZE	(1 << 14)
> -#define PODSLOT_EASI_BASE	0x08000000
> -#define PODSLOT_EASI_SIZE	(1 << 24)
> -
> -#define	EXPMASK_STATUS		(EXPMASK_BASE + 0x00)
> -#define EXPMASK_ENABLE		(EXPMASK_BASE + 0x04)
> -
> -#endif
> diff --git a/arch/arm/mach-rpc/include/mach/io.h b/arch/arm/mach-rpc/include/mach/io.h
> deleted file mode 100644
> index 8a8f28406691..000000000000
> --- a/arch/arm/mach-rpc/include/mach/io.h
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/io.h
> - *
> - *  Copyright (C) 1997 Russell King
> - *
> - * Modifications:
> - *  06-Dec-1997	RMK	Created.
> - */
> -#ifndef __ASM_ARM_ARCH_IO_H
> -#define __ASM_ARM_ARCH_IO_H
> -
> -#include <mach/hardware.h>
> -
> -#define IO_SPACE_LIMIT 0xffff
> -
> -/*
> - * We need PC style IO addressing for:
> - *  - floppy (at 0x3f2,0x3f4,0x3f5,0x3f7)
> - *  - parport (at 0x278-0x27a, 0x27b-0x27f, 0x778-0x77a)
> - *  - 8250 serial (only for compile)
> - *
> - * These peripherals are found in an area of MMIO which looks very much
> - * like an ISA bus, but with registers at the low byte of each word.
> - */
> -#define __io(a)		(PCIO_BASE + ((a) << 2))
> -
> -#endif
> diff --git a/arch/arm/mach-rpc/include/mach/irqs.h b/arch/arm/mach-rpc/include/mach/irqs.h
> deleted file mode 100644
> index 0c3428fd9729..000000000000
> --- a/arch/arm/mach-rpc/include/mach/irqs.h
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/irqs.h
> - *
> - *  Copyright (C) 1996 Russell King
> - */
> -
> -#define IRQ_PRINTER		0
> -#define IRQ_BATLOW		1
> -#define IRQ_FLOPPYINDEX		2
> -#define IRQ_VSYNCPULSE		3
> -#define IRQ_POWERON		4
> -#define IRQ_TIMER0		5
> -#define IRQ_TIMER1		6
> -#define IRQ_IMMEDIATE		7
> -#define IRQ_EXPCARDFIQ		8
> -#define IRQ_HARDDISK		9
> -#define IRQ_SERIALPORT		10
> -#define IRQ_FLOPPYDISK		12
> -#define IRQ_EXPANSIONCARD	13
> -#define IRQ_KEYBOARDTX		14
> -#define IRQ_KEYBOARDRX		15
> -
> -#define IRQ_DMA0		16
> -#define IRQ_DMA1		17
> -#define IRQ_DMA2		18
> -#define IRQ_DMA3		19
> -#define IRQ_DMAS0		20
> -#define IRQ_DMAS1		21
> -
> -#define FIQ_FLOPPYDATA		0
> -#define FIQ_ECONET		2
> -#define FIQ_SERIALPORT		4
> -#define FIQ_EXPANSIONCARD	6
> -#define FIQ_FORCE		7
> -
> -/*
> - * This is the offset of the FIQ "IRQ" numbers
> - */
> -#define FIQ_START		64
> -
> -#define NR_IRQS			128
> diff --git a/arch/arm/mach-rpc/include/mach/isa-dma.h b/arch/arm/mach-rpc/include/mach/isa-dma.h
> deleted file mode 100644
> index d9c3af1ef718..000000000000
> --- a/arch/arm/mach-rpc/include/mach/isa-dma.h
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/isa-dma.h
> - *
> - *  Copyright (C) 1997 Russell King
> - */
> -#ifndef __ASM_ARCH_DMA_H
> -#define __ASM_ARCH_DMA_H
> -
> -#define MAX_DMA_CHANNELS	8
> -
> -#define DMA_0			0
> -#define DMA_1			1
> -#define DMA_2			2
> -#define DMA_3			3
> -#define DMA_S0			4
> -#define DMA_S1			5
> -#define DMA_VIRTUAL_FLOPPY	6
> -#define DMA_VIRTUAL_SOUND	7
> -
> -#define DMA_FLOPPY		DMA_VIRTUAL_FLOPPY
> -
> -#define IOMD_DMA_BOUNDARY	(PAGE_SIZE - 1)
> -
> -#endif /* _ASM_ARCH_DMA_H */
> -
> diff --git a/arch/arm/mach-rpc/include/mach/memory.h b/arch/arm/mach-rpc/include/mach/memory.h
> deleted file mode 100644
> index a586eb31b18d..000000000000
> --- a/arch/arm/mach-rpc/include/mach/memory.h
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/memory.h
> - *
> - *  Copyright (C) 1996,1997,1998 Russell King.
> - *
> - *  Changelog:
> - *   20-Oct-1996 RMK	Created
> - *   31-Dec-1997 RMK	Fixed definitions to reduce warnings
> - *   11-Jan-1998 RMK	Uninlined to reduce hits on cache
> - *   08-Feb-1998 RMK	Added __virt_to_bus and __bus_to_virt
> - *   21-Mar-1999 RMK	Renamed to memory.h
> - *		 RMK	Added TASK_SIZE and PAGE_OFFSET
> - */
> -#ifndef __ASM_ARCH_MEMORY_H
> -#define __ASM_ARCH_MEMORY_H
> -
> -/*
> - * Cache flushing area - ROM
> - */
> -#define FLUSH_BASE_PHYS		0x00000000
> -#define FLUSH_BASE		0xdf000000
> -
> -/*
> - * Sparsemem support.  Each section is a maximum of 64MB.  The sections
> - * are offset by 128MB and can cover 128MB, so that gives us a maximum
> - * of 29 physmem bits.
> - */
> -#define MAX_PHYSMEM_BITS	29
> -#define SECTION_SIZE_BITS	26
> -
> -#endif
> diff --git a/arch/arm/mach-rpc/include/mach/uncompress.h b/arch/arm/mach-rpc/include/mach/uncompress.h
> deleted file mode 100644
> index 1fbe7eb956fd..000000000000
> --- a/arch/arm/mach-rpc/include/mach/uncompress.h
> +++ /dev/null
> @@ -1,181 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-rpc/include/mach/uncompress.h
> - *
> - *  Copyright (C) 1996 Russell King
> - */
> -#define VIDMEM ((char *)SCREEN_START)
> -
> -#include <linux/io.h>
> -#include <mach/hardware.h>
> -#include <asm/setup.h>
> -#include <asm/page.h>
> -
> -int video_size_row;
> -unsigned char bytes_per_char_h;
> -extern unsigned long con_charconvtable[256];
> -
> -struct param_struct {
> -	unsigned long page_size;
> -	unsigned long nr_pages;
> -	unsigned long ramdisk_size;
> -	unsigned long mountrootrdonly;
> -	unsigned long rootdev;
> -	unsigned long video_num_cols;
> -	unsigned long video_num_rows;
> -	unsigned long video_x;
> -	unsigned long video_y;
> -	unsigned long memc_control_reg;
> -	unsigned char sounddefault;
> -	unsigned char adfsdrives;
> -	unsigned char bytes_per_char_h;
> -	unsigned char bytes_per_char_v;
> -	unsigned long unused[256/4-11];
> -};
> -
> -static const unsigned long palette_4[16] = {
> -	0x00000000,
> -	0x000000cc,
> -	0x0000cc00,             /* Green   */
> -	0x0000cccc,             /* Yellow  */
> -	0x00cc0000,             /* Blue    */
> -	0x00cc00cc,             /* Magenta */
> -	0x00cccc00,             /* Cyan    */
> -	0x00cccccc,             /* White   */
> -	0x00000000,
> -	0x000000ff,
> -	0x0000ff00,
> -	0x0000ffff,
> -	0x00ff0000,
> -	0x00ff00ff,
> -	0x00ffff00,
> -	0x00ffffff
> -};
> -
> -#define palette_setpixel(p)	*(unsigned long *)(IO_START+0x00400000) = 0x10000000|((p) & 255)
> -#define palette_write(v)	*(unsigned long *)(IO_START+0x00400000) = 0x00000000|((v) & 0x00ffffff)
> -
> -/*
> - * params_phys is a linker defined symbol - see
> - * arch/arm/boot/compressed/Makefile
> - */
> -extern __attribute__((pure)) struct param_struct *params(void);
> -#define params (params())
> -
> -#ifndef STANDALONE_DEBUG
> -unsigned long video_num_cols;
> -unsigned long video_num_rows;
> -unsigned long video_x;
> -unsigned long video_y;
> -unsigned char bytes_per_char_v;
> -int white;
> -
> -/*
> - * This does not append a newline
> - */
> -static inline void putc(int c)
> -{
> -	extern void ll_write_char(char *, char c, char white);
> -	int x,y;
> -	char *ptr;
> -
> -	x = video_x;
> -	y = video_y;
> -
> -	if (c == '\n') {
> -		if (++y >= video_num_rows)
> -			y--;
> -	} else if (c == '\r') {
> -		x = 0;
> -	} else {
> -		ptr = VIDMEM + ((y*video_num_cols*bytes_per_char_v+x)*bytes_per_char_h);
> -		ll_write_char(ptr, c, white);
> -		if (++x >= video_num_cols) {
> -			x = 0;
> -			if ( ++y >= video_num_rows ) {
> -				y--;
> -			}
> -		}
> -	}
> -
> -	video_x = x;
> -	video_y = y;
> -}
> -
> -static inline void flush(void)
> -{
> -}
> -
> -/*
> - * Setup for decompression
> - */
> -static void arch_decomp_setup(void)
> -{
> -	int i;
> -	struct tag *t = (struct tag *)params;
> -	unsigned int nr_pages = 0, page_size = PAGE_SIZE;
> -
> -	if (t->hdr.tag == ATAG_CORE) {
> -		for (; t->hdr.size; t = tag_next(t)) {
> -			if (t->hdr.tag == ATAG_VIDEOTEXT) {
> -				video_num_rows = t->u.videotext.video_lines;
> -				video_num_cols = t->u.videotext.video_cols;
> -				video_x = t->u.videotext.x;
> -				video_y = t->u.videotext.y;
> -			} else if (t->hdr.tag == ATAG_VIDEOLFB) {
> -				bytes_per_char_h = t->u.videolfb.lfb_depth;
> -				bytes_per_char_v = 8;
> -			} else if (t->hdr.tag == ATAG_MEM) {
> -				page_size = PAGE_SIZE;
> -				nr_pages += (t->u.mem.size / PAGE_SIZE);
> -			}
> -		}
> -	} else {
> -		nr_pages = params->nr_pages;
> -		page_size = params->page_size;
> -		video_num_rows = params->video_num_rows;
> -		video_num_cols = params->video_num_cols;
> -		video_x = params->video_x;
> -		video_y = params->video_y;
> -		bytes_per_char_h = params->bytes_per_char_h;
> -		bytes_per_char_v = params->bytes_per_char_v;
> -	}
> -
> -	video_size_row = video_num_cols * bytes_per_char_h;
> -	
> -	if (bytes_per_char_h == 4)
> -		for (i = 0; i < 256; i++)
> -			con_charconvtable[i] =
> -				(i & 128 ? 1 << 0  : 0) |
> -				(i & 64  ? 1 << 4  : 0) |
> -				(i & 32  ? 1 << 8  : 0) |
> -				(i & 16  ? 1 << 12 : 0) |
> -				(i & 8   ? 1 << 16 : 0) |
> -				(i & 4   ? 1 << 20 : 0) |
> -				(i & 2   ? 1 << 24 : 0) |
> -				(i & 1   ? 1 << 28 : 0);
> -	else
> -		for (i = 0; i < 16; i++)
> -			con_charconvtable[i] =
> -				(i & 8   ? 1 << 0  : 0) |
> -				(i & 4   ? 1 << 8  : 0) |
> -				(i & 2   ? 1 << 16 : 0) |
> -				(i & 1   ? 1 << 24 : 0);
> -
> -
> -	palette_setpixel(0);
> -	if (bytes_per_char_h == 1) {
> -		palette_write (0);
> -		palette_write (0x00ffffff);
> -		for (i = 2; i < 256; i++)
> -			palette_write (0);
> -		white = 1;
> -	} else {
> -		for (i = 0; i < 256; i++)
> -			palette_write (i < 16 ? palette_4[i] : 0);
> -		white = 7;
> -	}
> -
> -	if (nr_pages * page_size < 4096*1024) error("<4M of mem\n");
> -}
> -#endif
> diff --git a/arch/arm/mach-rpc/io-acorn.S b/arch/arm/mach-rpc/io-acorn.S
> deleted file mode 100644
> index aa9bf0d771c0..000000000000
> --- a/arch/arm/mach-rpc/io-acorn.S
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  linux/arch/arm/lib/io-acorn.S
> - *
> - *  Copyright (C) 1995, 1996 Russell King
> - *
> - * 27/03/03 Ian Molton Clean up CONFIG_CPU
> - */
> -#include <linux/linkage.h>
> -#include <linux/kern_levels.h>
> -#include <asm/assembler.h>
> -
> -		.text
> -		.align
> -
> -.Liosl_warning:
> -		.ascii	KERN_WARNING "insl/outsl not implemented, called from %08lX\0"
> -		.align
> -
> -/*
> - * These make no sense on Acorn machines.
> - * Print a warning message.
> - */
> -ENTRY(insl)
> -ENTRY(outsl)
> -		adr	r0, .Liosl_warning
> -		mov	r1, lr
> -		b	_printk
> diff --git a/arch/arm/mach-rpc/irq.c b/arch/arm/mach-rpc/irq.c
> deleted file mode 100644
> index dc29384b6ef8..000000000000
> --- a/arch/arm/mach-rpc/irq.c
> +++ /dev/null
> @@ -1,226 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <linux/init.h>
> -#include <linux/list.h>
> -#include <linux/io.h>
> -
> -#include <asm/mach/irq.h>
> -#include <asm/hardware/iomd.h>
> -#include <asm/irq.h>
> -#include <asm/fiq.h>
> -
> -// These are offsets from the stat register for each IRQ bank
> -#define STAT	0x00
> -#define REQ	0x04
> -#define CLR	0x04
> -#define MASK	0x08
> -
> -static const u8 irq_prio_h[256] = {
> -	 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10,
> -	12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10,
> -	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10,
> -	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10,
> -	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10,
> -};
> -
> -static const u8 irq_prio_d[256] = {
> -	 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16,
> -};
> -
> -static const u8 irq_prio_l[256] = {
> -	 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
> -	 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
> -	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
> -	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
> -	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3,
> -	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3,
> -	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
> -	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
> -};
> -
> -static int iomd_get_irq_nr(void)
> -{
> -	int irq;
> -	u8 reg;
> -
> -	/* get highest priority first */
> -	reg = readb(IOC_BASE + IOMD_IRQREQB);
> -	irq = irq_prio_h[reg];
> -	if (irq)
> -		return irq;
> -
> -	/* get DMA  */
> -	reg = readb(IOC_BASE + IOMD_DMAREQ);
> -	irq = irq_prio_d[reg];
> -	if (irq)
> -		return irq;
> -
> -	/* get low priority */
> -	reg = readb(IOC_BASE + IOMD_IRQREQA);
> -	irq = irq_prio_l[reg];
> -	if (irq)
> -		return irq;
> -	return 0;
> -}
> -
> -static void iomd_handle_irq(struct pt_regs *regs)
> -{
> -	int irq;
> -
> -	do {
> -		irq = iomd_get_irq_nr();
> -		if (irq)
> -			generic_handle_irq(irq);
> -	} while (irq);
> -}
> -
> -static void __iomem *iomd_get_base(struct irq_data *d)
> -{
> -	void *cd = irq_data_get_irq_chip_data(d);
> -
> -	return (void __iomem *)(unsigned long)cd;
> -}
> -
> -static void iomd_set_base_mask(unsigned int irq, void __iomem *base, u32 mask)
> -{
> -	struct irq_data *d = irq_get_irq_data(irq);
> -
> -	d->mask = mask;
> -	irq_set_chip_data(irq, (void *)(unsigned long)base);
> -}
> -
> -static void iomd_irq_mask_ack(struct irq_data *d)
> -{
> -	void __iomem *base = iomd_get_base(d);
> -	unsigned int val, mask = d->mask;
> -
> -	val = readb(base + MASK);
> -	writeb(val & ~mask, base + MASK);
> -	writeb(mask, base + CLR);
> -}
> -
> -static void iomd_irq_mask(struct irq_data *d)
> -{
> -	void __iomem *base = iomd_get_base(d);
> -	unsigned int val, mask = d->mask;
> -
> -	val = readb(base + MASK);
> -	writeb(val & ~mask, base + MASK);
> -}
> -
> -static void iomd_irq_unmask(struct irq_data *d)
> -{
> -	void __iomem *base = iomd_get_base(d);
> -	unsigned int val, mask = d->mask;
> -
> -	val = readb(base + MASK);
> -	writeb(val | mask, base + MASK);
> -}
> -
> -static struct irq_chip iomd_chip_clr = {
> -	.irq_mask_ack	= iomd_irq_mask_ack,
> -	.irq_mask	= iomd_irq_mask,
> -	.irq_unmask	= iomd_irq_unmask,
> -};
> -
> -static struct irq_chip iomd_chip_noclr = {
> -	.irq_mask	= iomd_irq_mask,
> -	.irq_unmask	= iomd_irq_unmask,
> -};
> -
> -extern unsigned char rpc_default_fiq_start, rpc_default_fiq_end;
> -
> -void __init rpc_init_irq(void)
> -{
> -	unsigned int irq, clr, set;
> -
> -	iomd_writeb(0, IOMD_IRQMASKA);
> -	iomd_writeb(0, IOMD_IRQMASKB);
> -	iomd_writeb(0, IOMD_FIQMASK);
> -	iomd_writeb(0, IOMD_DMAMASK);
> -
> -	set_fiq_handler(&rpc_default_fiq_start,
> -		&rpc_default_fiq_end - &rpc_default_fiq_start);
> -
> -	set_handle_irq(iomd_handle_irq);
> -
> -	for (irq = 0; irq < NR_IRQS; irq++) {
> -		clr = IRQ_NOREQUEST;
> -		set = 0;
> -
> -		if (irq <= 6 || (irq >= 9 && irq <= 15))
> -			clr |= IRQ_NOPROBE;
> -
> -		if (irq == 21 || (irq >= 16 && irq <= 19) ||
> -		    irq == IRQ_KEYBOARDTX)
> -			set |= IRQ_NOAUTOEN;
> -
> -		switch (irq) {
> -		case 0 ... 7:
> -			irq_set_chip_and_handler(irq, &iomd_chip_clr,
> -						 handle_level_irq);
> -			irq_modify_status(irq, clr, set);
> -			iomd_set_base_mask(irq, IOMD_BASE + IOMD_IRQSTATA,
> -					   BIT(irq));
> -			break;
> -
> -		case 8 ... 15:
> -			irq_set_chip_and_handler(irq, &iomd_chip_noclr,
> -						 handle_level_irq);
> -			irq_modify_status(irq, clr, set);
> -			iomd_set_base_mask(irq, IOMD_BASE + IOMD_IRQSTATB,
> -					   BIT(irq - 8));
> -			break;
> -
> -		case 16 ... 21:
> -			irq_set_chip_and_handler(irq, &iomd_chip_noclr,
> -						 handle_level_irq);
> -			irq_modify_status(irq, clr, set);
> -			iomd_set_base_mask(irq, IOMD_BASE + IOMD_DMASTAT,
> -					   BIT(irq - 16));
> -			break;
> -
> -		case 64 ... 71:
> -			irq_set_chip(irq, &iomd_chip_noclr);
> -			irq_modify_status(irq, clr, set);
> -			iomd_set_base_mask(irq, IOMD_BASE + IOMD_FIQSTAT,
> -					   BIT(irq - 64));
> -			break;
> -		}
> -	}
> -
> -	init_FIQ(FIQ_START);
> -}
> diff --git a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c
> deleted file mode 100644
> index f70fb9c4b0cb..000000000000
> --- a/arch/arm/mach-rpc/riscpc.c
> +++ /dev/null
> @@ -1,225 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  linux/arch/arm/mach-rpc/riscpc.c
> - *
> - *  Copyright (C) 1998-2001 Russell King
> - *
> - *  Architecture specific fixups.
> - */
> -#include <linux/kernel.h>
> -#include <linux/tty.h>
> -#include <linux/delay.h>
> -#include <linux/pm.h>
> -#include <linux/init.h>
> -#include <linux/sched.h>
> -#include <linux/device.h>
> -#include <linux/serial_8250.h>
> -#include <linux/ata_platform.h>
> -#include <linux/io.h>
> -#include <linux/i2c.h>
> -#include <linux/reboot.h>
> -
> -#include <asm/elf.h>
> -#include <asm/mach-types.h>
> -#include <mach/hardware.h>
> -#include <asm/hardware/iomd.h>
> -#include <asm/page.h>
> -#include <asm/domain.h>
> -#include <asm/setup.h>
> -#include <asm/system_misc.h>
> -
> -#include <asm/mach/map.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/time.h>
> -
> -extern void rpc_init_irq(void);
> -
> -unsigned int vram_size;
> -unsigned int memc_ctrl_reg;
> -unsigned int number_mfm_drives;
> -
> -static int __init parse_tag_acorn(const struct tag *tag)
> -{
> -	memc_ctrl_reg = tag->u.acorn.memc_control_reg;
> -	number_mfm_drives = tag->u.acorn.adfsdrives;
> -
> -	switch (tag->u.acorn.vram_pages) {
> -	case 512:
> -		vram_size += PAGE_SIZE * 256;
> -		fallthrough;	/* ??? */
> -	case 256:
> -		vram_size += PAGE_SIZE * 256;
> -		break;
> -	default:
> -		break;
> -	}
> -#if 0
> -	if (vram_size) {
> -		desc->video_start = 0x02000000;
> -		desc->video_end   = 0x02000000 + vram_size;
> -	}
> -#endif
> -	return 0;
> -}
> -
> -__tagtable(ATAG_ACORN, parse_tag_acorn);
> -
> -static struct map_desc rpc_io_desc[] __initdata = {
> - 	{	/* VRAM		*/
> -		.virtual	=  SCREEN_BASE,
> -		.pfn		= __phys_to_pfn(SCREEN_START),
> -		.length		= 	2*1048576,
> -		.type		= MT_DEVICE
> -	}, {	/* IO space	*/
> -		.virtual	=  (u32)IO_BASE,
> -		.pfn		= __phys_to_pfn(IO_START),
> -		.length		= 	IO_SIZE	 ,
> -		.type		= MT_DEVICE
> -	}, {	/* EASI space	*/
> -		.virtual	= (unsigned long)EASI_BASE,
> -		.pfn		= __phys_to_pfn(EASI_START),
> -		.length		= EASI_SIZE,
> -		.type		= MT_DEVICE
> -	}
> -};
> -
> -static void __init rpc_map_io(void)
> -{
> -	iotable_init(rpc_io_desc, ARRAY_SIZE(rpc_io_desc));
> -
> -	/*
> -	 * Turn off floppy.
> -	 */
> -	writeb(0xc, PCIO_BASE + (0x3f2 << 2));
> -
> -	/*
> -	 * RiscPC can't handle half-word loads and stores
> -	 */
> -	elf_hwcap &= ~HWCAP_HALF;
> -}
> -
> -static struct resource acornfb_resources[] = {
> -	/* VIDC */
> -	DEFINE_RES_MEM(0x03400000, 0x00200000),
> -	DEFINE_RES_IRQ(IRQ_VSYNCPULSE),
> -};
> -
> -static struct platform_device acornfb_device = {
> -	.name			= "acornfb",
> -	.id			= -1,
> -	.dev			= {
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources		= ARRAY_SIZE(acornfb_resources),
> -	.resource		= acornfb_resources,
> -};
> -
> -static struct resource iomd_resources[] = {
> -	DEFINE_RES_MEM(0x03200000, 0x10000),
> -};
> -
> -static struct platform_device iomd_device = {
> -	.name			= "iomd",
> -	.id			= -1,
> -	.num_resources		= ARRAY_SIZE(iomd_resources),
> -	.resource		= iomd_resources,
> -};
> -
> -static struct resource iomd_kart_resources[] = {
> -	DEFINE_RES_IRQ(IRQ_KEYBOARDRX),
> -	DEFINE_RES_IRQ(IRQ_KEYBOARDTX),
> -};
> -
> -static struct platform_device kbd_device = {
> -	.name			= "kart",
> -	.id			= -1,
> -	.dev			= {
> -		.parent 	= &iomd_device.dev,
> -	},
> -	.num_resources		= ARRAY_SIZE(iomd_kart_resources),
> -	.resource		= iomd_kart_resources,
> -};
> -
> -static struct plat_serial8250_port serial_platform_data[] = {
> -	{
> -		.mapbase	= 0x03010fe0,
> -		.irq		= IRQ_SERIALPORT,
> -		.uartclk	= 1843200,
> -		.regshift	= 2,
> -		.iotype		= UPIO_MEM,
> -		.flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP | UPF_SKIP_TEST,
> -	},
> -	{ },
> -};
> -
> -static struct platform_device serial_device = {
> -	.name			= "serial8250",
> -	.id			= PLAT8250_DEV_PLATFORM,
> -	.dev			= {
> -		.platform_data	= serial_platform_data,
> -	},
> -};
> -
> -static struct pata_platform_info pata_platform_data = {
> -	.ioport_shift		= 2,
> -};
> -
> -static struct resource pata_resources[] = {
> -	DEFINE_RES_MEM(0x030107c0, 0x20),
> -	DEFINE_RES_MEM(0x03010fd8, 0x04),
> -	DEFINE_RES_IRQ(IRQ_HARDDISK),
> -};
> -
> -static struct platform_device pata_device = {
> -	.name			= "pata_platform",
> -	.id			= -1,
> -	.num_resources		= ARRAY_SIZE(pata_resources),
> -	.resource		= pata_resources,
> -	.dev			= {
> -		.platform_data	= &pata_platform_data,
> -		.coherent_dma_mask = ~0,	/* grumble */
> -	},
> -};
> -
> -static struct platform_device *devs[] __initdata = {
> -	&iomd_device,
> -	&kbd_device,
> -	&serial_device,
> -	&acornfb_device,
> -	&pata_device,
> -};
> -
> -static struct i2c_board_info i2c_rtc = {
> -	I2C_BOARD_INFO("pcf8583", 0x50)
> -};
> -
> -static int __init rpc_init(void)
> -{
> -	i2c_register_board_info(0, &i2c_rtc, 1);
> -	return platform_add_devices(devs, ARRAY_SIZE(devs));
> -}
> -
> -arch_initcall(rpc_init);
> -
> -static void rpc_restart(enum reboot_mode mode, const char *cmd)
> -{
> -	iomd_writeb(0, IOMD_ROMCR0);
> -
> -	/*
> -	 * Jump into the ROM
> -	 */
> -	soft_restart(0);
> -}
> -
> -void ioc_timer_init(void);
> -
> -MACHINE_START(RISCPC, "Acorn-RiscPC")
> -	/* Maintainer: Russell King */
> -	.atag_offset	= 0x100,
> -	.reserve_lp0	= 1,
> -	.reserve_lp1	= 1,
> -	.map_io		= rpc_map_io,
> -	.init_irq	= rpc_init_irq,
> -	.init_time	= ioc_timer_init,
> -	.restart	= rpc_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-rpc/time.c b/arch/arm/mach-rpc/time.c
> deleted file mode 100644
> index 9f8edcfe9357..000000000000
> --- a/arch/arm/mach-rpc/time.c
> +++ /dev/null
> @@ -1,97 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  linux/arch/arm/common/time-acorn.c
> - *
> - *  Copyright (c) 1996-2000 Russell King.
> - *
> - *  Changelog:
> - *   24-Sep-1996	RMK	Created
> - *   10-Oct-1996	RMK	Brought up to date with arch-sa110eval
> - *   04-Dec-1997	RMK	Updated for new arch/arm/time.c
> - *   13=Jun-2004	DS	Moved to arch/arm/common b/c shared w/CLPS7500
> - */
> -#include <linux/clocksource.h>
> -#include <linux/init.h>
> -#include <linux/interrupt.h>
> -#include <linux/irq.h>
> -#include <linux/io.h>
> -
> -#include <mach/hardware.h>
> -#include <asm/hardware/ioc.h>
> -
> -#include <asm/mach/time.h>
> -
> -#define RPC_CLOCK_FREQ 2000000
> -#define RPC_LATCH DIV_ROUND_CLOSEST(RPC_CLOCK_FREQ, HZ)
> -
> -static u32 ioc_time;
> -
> -static u64 ioc_timer_read(struct clocksource *cs)
> -{
> -	unsigned int count1, count2, status;
> -	unsigned long flags;
> -	u32 ticks;
> -
> -	local_irq_save(flags);
> -	ioc_writeb (0, IOC_T0LATCH);
> -	barrier ();
> -	count1 = ioc_readb(IOC_T0CNTL) | (ioc_readb(IOC_T0CNTH) << 8);
> -	barrier ();
> -	status = ioc_readb(IOC_IRQREQA);
> -	barrier ();
> -	ioc_writeb (0, IOC_T0LATCH);
> -	barrier ();
> -	count2 = ioc_readb(IOC_T0CNTL) | (ioc_readb(IOC_T0CNTH) << 8);
> -	ticks = ioc_time + RPC_LATCH - count2;
> -	local_irq_restore(flags);
> -
> -	if (count2 < count1) {
> -		/*
> -		 * The timer has not reloaded between reading count1 and
> -		 * count2, check whether an interrupt was actually pending.
> -		 */
> -		if (status & (1 << 5))
> -			ticks += RPC_LATCH;
> -	} else if (count2 > count1) {
> -		/*
> -		 * The timer has reloaded, so count2 indicates the new
> -		 * count since the wrap.  The interrupt would not have
> -		 * been processed, so add the missed ticks.
> -		 */
> -		ticks += RPC_LATCH;
> -	}
> -
> -	return ticks;
> -}
> -
> -static struct clocksource ioctime_clocksource = {
> -	.read = ioc_timer_read,
> -	.mask = CLOCKSOURCE_MASK(32),
> -	.rating = 100,
> -};
> -
> -void __init ioctime_init(void)
> -{
> -	ioc_writeb(RPC_LATCH & 255, IOC_T0LTCHL);
> -	ioc_writeb(RPC_LATCH >> 8, IOC_T0LTCHH);
> -	ioc_writeb(0, IOC_T0GO);
> -}
> -
> -static irqreturn_t
> -ioc_timer_interrupt(int irq, void *dev_id)
> -{
> -	ioc_time += RPC_LATCH;
> -	legacy_timer_tick(1);
> -	return IRQ_HANDLED;
> -}
> -
> -/*
> - * Set up timer interrupt.
> - */
> -void __init ioc_timer_init(void)
> -{
> -	WARN_ON(clocksource_register_hz(&ioctime_clocksource, RPC_CLOCK_FREQ));
> -	ioctime_init();
> -	if (request_irq(IRQ_TIMER0, ioc_timer_interrupt, 0, "timer", NULL))
> -		pr_err("Failed to request irq %d (timer)\n", IRQ_TIMER0);
> -}
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index 350f6dcc24cc..07c2fda4d422 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -1112,7 +1112,7 @@ static void __init fill_pmd_gaps(void)
>   #define fill_pmd_gaps() do { } while (0)
>   #endif
>   
> -#if defined(CONFIG_PCI) && !defined(CONFIG_NEED_MACH_IO_H)
> +#if defined(CONFIG_PCI)
>   static void __init pci_reserve_io(void)
>   {
>   	struct static_vm *svm;
> diff --git a/block/partitions/Kconfig b/block/partitions/Kconfig
> index ce17e41451af..94e7df547e7a 100644
> --- a/block/partitions/Kconfig
> +++ b/block/partitions/Kconfig
> @@ -19,13 +19,11 @@ config PARTITION_ADVANCED
>   
>   config ACORN_PARTITION
>   	bool "Acorn partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	help
>   	  Support hard disks partitioned under Acorn operating systems.
>   
>   config ACORN_PARTITION_CUMANA
>   	bool "Cumana partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	depends on ACORN_PARTITION
>   	help
>   	  Say Y here if you would like to use hard disks under Linux which
> @@ -33,12 +31,10 @@ config ACORN_PARTITION_CUMANA
>   
>   config ACORN_PARTITION_EESOX
>   	bool "EESOX partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	depends on ACORN_PARTITION
>   
>   config ACORN_PARTITION_ICS
>   	bool "ICS partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	depends on ACORN_PARTITION
>   	help
>   	  Say Y here if you would like to use hard disks under Linux which
> @@ -46,7 +42,6 @@ config ACORN_PARTITION_ICS
>   
>   config ACORN_PARTITION_ADFS
>   	bool "Native filecore partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	depends on ACORN_PARTITION
>   	help
>   	  The Acorn Disc Filing System is the standard file system of the
> @@ -56,7 +51,6 @@ config ACORN_PARTITION_ADFS
>   
>   config ACORN_PARTITION_POWERTEC
>   	bool "PowerTec partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	depends on ACORN_PARTITION
>   	help
>   	  Support reading partition tables created on Acorn machines using
> @@ -64,7 +58,6 @@ config ACORN_PARTITION_POWERTEC
>   
>   config ACORN_PARTITION_RISCIX
>   	bool "RISCiX partition support" if PARTITION_ADVANCED
> -	default y if ARCH_ACORN
>   	depends on ACORN_PARTITION
>   	help
>   	  Once upon a time, there was a native Unix port for the Acorn series
> diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c
> index c41d850b29c6..9770c83aea74 100644
> --- a/drivers/tty/vt/keyboard.c
> +++ b/drivers/tty/vt/keyboard.c
> @@ -1308,7 +1308,7 @@ static void kbd_bh(struct tasklet_struct *unused)
>   #if defined(CONFIG_X86) || defined(CONFIG_ALPHA) ||\
>       defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_SPARC) ||\
>       defined(CONFIG_PARISC) || defined(CONFIG_SUPERH) ||\
> -    (defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD) && !defined(CONFIG_ARCH_RPC))
> +    (defined(CONFIG_ARM) && defined(CONFIG_KEYBOARD_ATKBD))
>   
>   static inline bool kbd_is_hw_raw(const struct input_dev *dev)
>   {
> diff --git a/lib/fonts/font_acorn_8x8.c b/lib/fonts/font_acorn_8x8.c
> index 4ff52c79f8c4..ec2b1e463ab9 100644
> --- a/lib/fonts/font_acorn_8x8.c
> +++ b/lib/fonts/font_acorn_8x8.c
> @@ -277,9 +277,5 @@ const struct font_desc font_acorn_8x8 = {
>   	.height	= 8,
>   	.charcount = 256,
>   	.data	= acorndata_8x8.data,
> -#ifdef CONFIG_ARCH_ACORN
> -	.pref	= 20,
> -#else
>   	.pref	= 0,
> -#endif
>   };

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, (HRB 36809, AG Nürnberg)



  parent reply	other threads:[~2026-09-09  8:04 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
2026-09-08 15:27 ` [PATCH 01/13] ARM: remove sa1100 platform Arnd Bergmann
2026-09-08 16:26   ` Guenter Roeck
2026-09-08 17:23   ` Linus Walleij
2026-09-08 19:39   ` Karl Mehltretter
2026-09-08 20:09     ` Arnd Bergmann
2026-09-08 20:36   ` Nicolas Pitre
2026-09-08 21:26     ` David Laight
2026-09-08 21:32     ` Arnd Bergmann
2026-09-09 12:38   ` Alexandre Belloni
2026-09-08 15:27 ` [PATCH 02/13] ARM: remove footbridge Arnd Bergmann
2026-09-08 15:55   ` sashiko-bot
2026-09-08 17:57     ` Arnd Bergmann
2026-09-08 17:27   ` Linus Walleij
2026-09-09 15:09     ` Ralph Siemsen
2026-09-08 15:27 ` [PATCH 03/13] ARM: remove riscpc Arnd Bergmann
2026-09-08 15:52   ` sashiko-bot
2026-09-08 16:10     ` Arnd Bergmann
2026-09-09  8:04   ` Thomas Zimmermann [this message]
2026-09-09 16:42   ` Bart Van Assche
2026-09-09 20:09     ` Arnd Bergmann
2026-09-11  3:44   ` Ethan Nelson-Moore
2026-09-11  9:07     ` Linus Walleij
2026-09-11 13:25       ` Bart Van Assche
2026-09-11 13:37         ` Linus Walleij
2026-09-11 14:38       ` Daniel Palmer
2026-09-11 18:14         ` Linus Walleij
2026-09-12  1:29           ` Daniel Palmer
2026-09-11 18:42     ` Karl Mehltretter
2026-09-12  2:08       ` Ethan Nelson-Moore
2026-09-12  3:59         ` Ethan Nelson-Moore
2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files Arnd Bergmann
2026-09-08 16:01   ` sashiko-bot
2026-09-08 18:06     ` Arnd Bergmann
2026-09-08 17:30   ` Linus Walleij
2026-09-08 18:32   ` Daniel Mack
2026-09-08 15:27 ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all " Arnd Bergmann
2026-09-08 15:34   ` Mark Brown
2026-09-08 16:11   ` sashiko-bot
2026-09-08 18:21     ` Arnd Bergmann
2026-09-09 12:42       ` [PATCH 05.2/13] ARM: orion5x: fold plat-orion/pcie.c and hw_pci into pci.c Arnd Bergmann
2026-09-08 16:12   ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files Ulf Hansson
2026-09-08 16:18   ` Andrew Lunn
2026-09-08 17:33   ` Linus Walleij
2026-09-08 20:14   ` Niklas Cassel
2026-09-09 12:54   ` Gregory CLEMENT
2026-09-11 10:22   ` Daniel Lezcano
2026-09-08 15:27 ` [PATCH 06/13] ARM: omap2: remove omap24xx support Arnd Bergmann
2026-09-08 17:18   ` Aaro Koskinen
2026-09-08 17:35   ` Linus Walleij
2026-09-08 19:21   ` Karl Mehltretter
2026-09-08 19:42     ` Arnd Bergmann
2026-09-09  8:06   ` Thomas Zimmermann
2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
2026-09-08 16:05   ` sashiko-bot
2026-09-08 18:01     ` Arnd Bergmann
2026-09-09  8:24   ` Vladimir Zapolskiy
2026-09-09  8:26   ` Daniel Baluta
2026-09-10 15:11   ` Frank Li
2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
2026-09-08 15:43   ` sashiko-bot
2026-09-09 20:17   ` Fabio Estevam
2026-09-09 20:21   ` Fabio Estevam
2026-09-10 13:08     ` Jesse T
2026-09-10 16:08     ` Giulio Benetti
2026-09-10 15:14   ` Frank Li
2026-09-08 15:27 ` [PATCH 09/13] ARM: lpc18xx: remove entire platform Arnd Bergmann
2026-09-08 15:41   ` sashiko-bot
2026-09-08 15:43     ` Arnd Bergmann
2026-09-08 17:36   ` Linus Walleij
2026-09-09  8:28   ` Vladimir Zapolskiy
2026-09-08 15:28 ` [PATCH 10/13] ARM: stm32: remove stm32f4/f7/h7 MCU support Arnd Bergmann
2026-09-08 15:43   ` sashiko-bot
2026-09-08 15:54     ` Arnd Bergmann
2026-09-08 17:36   ` Linus Walleij
2026-09-11 15:46   ` Alexandre TORGUE
2026-09-08 15:28 ` [PATCH 11/13] ARM: versatile: remove mps2 support Arnd Bergmann
2026-09-08 15:41   ` Vladimir Murzin
2026-09-08 15:51   ` sashiko-bot
2026-09-08 17:37   ` Linus Walleij
2026-09-08 19:49   ` Sudeep Holla
2026-09-08 19:51     ` Arnd Bergmann
2026-09-08 19:58       ` Sudeep Holla
2026-09-08 19:54     ` Sudeep Holla
2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
2026-09-08 15:55   ` sashiko-bot
2026-09-08 16:40     ` Arnd Bergmann
2026-09-08 17:39   ` Linus Walleij
2026-09-08 21:09   ` Rob Herring
2026-09-08 21:30     ` Arnd Bergmann
2026-09-10 12:25       ` Nicolas Ferre
2026-09-09 12:41   ` Alexandre Belloni
2026-09-10 12:23   ` Nicolas Ferre
2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
2026-09-08 15:55   ` sashiko-bot
2026-09-08 17:40   ` Linus Walleij
2026-09-08 18:23   ` Krzysztof Kozlowski
2026-09-08 16:53 ` [PATCH 00/13] ARM: deprecated platform removal Randy Dunlap
2026-09-08 16:56   ` Randy Dunlap
2026-09-08 18:33   ` Arnd Bergmann
2026-09-08 18:39     ` Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8d5d04f6-50b3-49b3-93bf-e36d825963b3@suse.de \
    --to=tzimmermann@suse.de \
    --cc=Frank.Li@nxp.com \
    --cc=aaro.koskinen@iki.fi \
    --cc=alexander.sverdlin@siemens.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andreas@kemnade.info \
    --cc=andrew@lunn.ch \
    --cc=arnd@arndb.de \
    --cc=arnd@kernel.org \
    --cc=axboe@kernel.dk \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=conor+dt@kernel.org \
    --cc=david@kernel.org \
    --cc=deller@gmx.de \
    --cc=devicetree@vger.kernel.org \
    --cc=enelsonmoore@gmail.com \
    --cc=festevam@gmail.com \
    --cc=fustini@kernel.org \
    --cc=geert@linux-m68k.org \
    --cc=gregory.clement@bootlin.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=khilman@baylibre.com \
    --cc=kmehltretter@gmail.com \
    --cc=kristoffer.ericson@gmail.com \
    --cc=krzk@kernel.org \
    --cc=linusw@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux@armlinux.org.uk \
    --cc=liviu.dudau@arm.com \
    --cc=lpieralisi@kernel.org \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=nicolas.ferre@microchip.com \
    --cc=npitre@baylibre.com \
    --cc=paulmck@kernel.org \
    --cc=robert.jarzmik@free.fr \
    --cc=robh@kernel.org \
    --cc=rogerq@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=shawnguo@kernel.org \
    --cc=spyro@f2s.com \
    --cc=stefan@agner.ch \
    --cc=sudeep.holla@kernel.org \
    --cc=tony@atomide.com \
    --cc=vz@mleia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox