mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 00/13] ARM: deprecated platform removal
@ 2026-09-08 15:27 Arnd Bergmann
  2026-09-08 15:27 ` [PATCH 01/13] ARM: remove sa1100 platform Arnd Bergmann
                   ` (13 more replies)
  0 siblings, 14 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

From: Arnd Bergmann <arnd@arndb.de>

In the 7.3 kernel, I marked a number of platforms and features as
deprecated, with the plan to keep these around for the LTS kernel, but
remove them in 7.4, see [1].

Cleaning out the deprecated platform code has turned into a larger effort
than I expected, currently standing at 300 patches, with a lot of them
still in need of being split up into smaller ones, see [2] for a current
snapshot.

The first series here removes just the bits in arch/arm/mach-*/, plus
the portions that directly depend on the removed Kconfig symbols where
these are trivial to remove.

The parts that are not included are those that remove architectural
features and device drivers that become unused after this part. Some of
those may also make their way into 7.4, but at this point I would target
7.5 for most of them, to keep the dependencies simple.

This also gives everyone a chance to voice their objections in case
that some of the removed platform code does have active users after all,
before all the corresponding drivers are gone.

     Arnd

Links:
[1] https://lore.kernel.org/all/20260701212353.2196041-1-arnd@kernel.org/
[2] https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/log/?h=board-remove-7.3

Arnd Bergmann (13):
  ARM: remove sa1100 platform
  ARM: remove footbridge
  ARM: remove riscpc
  ARM: remove legacy pxa board files
  ARM: orion/dove/mv78xx0: remove all board files
  ARM: omap2: remove omap24xx support
  ARM: imx: remove i.MX31 SoC support
  ARM: imx: remove nommu support
  ARM: lpc18xx: remove entire platform
  ARM: stm32: remove stm32f4/f7/h7 MCU support
  ARM: versatile: remove mps2 support
  ARM: at91: remove samv7 support
  ARM: axxia: remove entire platform

 Documentation/arch/arm/index.rst              |    1 -
 Documentation/arch/arm/netwinder.rst          |   85 -
 .../devicetree/bindings/arm/axxia.yaml        |   23 -
 MAINTAINERS                                   |   60 -
 arch/arm/Kconfig                              |   80 +-
 arch/arm/Kconfig.debug                        |  106 +-
 arch/arm/Makefile                             |   13 -
 arch/arm/boot/bootp/Makefile                  |    4 -
 arch/arm/boot/compressed/Makefile             |   12 -
 arch/arm/boot/compressed/font.c               |    2 -
 arch/arm/boot/compressed/head-sa1100.S        |   45 -
 arch/arm/boot/compressed/head-sharpsl.S       |  151 --
 arch/arm/boot/compressed/head.S               |   15 -
 arch/arm/boot/compressed/ll_char_wr.S         |  131 --
 arch/arm/boot/dts/arm/Makefile                |    3 -
 arch/arm/boot/dts/arm/mps2-an385.dts          |   92 -
 arch/arm/boot/dts/arm/mps2-an399.dts          |   92 -
 arch/arm/boot/dts/arm/mps2.dtsi               |  220 --
 arch/arm/boot/dts/intel/Makefile              |    1 -
 arch/arm/boot/dts/intel/axm/Makefile          |    5 -
 .../boot/dts/intel/axm/axm5516-amarillo.dts   |   47 -
 arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi |  200 --
 arch/arm/boot/dts/intel/axm/axm55xx.dtsi      |  200 --
 arch/arm/boot/dts/nxp/imx/Makefile            |    5 -
 arch/arm/boot/dts/nxp/imx/imx31-bug.dts       |   22 -
 arch/arm/boot/dts/nxp/imx/imx31-lite.dts      |  178 --
 arch/arm/boot/dts/nxp/imx/imx31.dtsi          |  371 ----
 arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
 arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 ---------
 arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
 arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 --------------
 arch/arm/boot/dts/nxp/lpc/Makefile            |    5 -
 arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi        |  543 -----
 arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts    |  221 --
 .../boot/dts/nxp/lpc/lpc4350-hitex-eval.dts   |  485 -----
 arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi        |   48 -
 .../dts/nxp/lpc/lpc4357-ea4357-devkit.dts     |  624 ------
 .../boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts  |  621 ------
 arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi        |   52 -
 arch/arm/boot/dts/nxp/vf/Makefile             |    2 -
 arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts  |   61 -
 arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts   |   88 -
 arch/arm/boot/dts/nxp/vf/vf610m4.dtsi         |   61 -
 arch/arm/boot/dts/st/Makefile                 |   11 -
 arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi     |  482 -----
 arch/arm/boot/dts/st/stm32f429-disco.dts      |  243 ---
 arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi   |   91 -
 arch/arm/boot/dts/st/stm32f429.dtsi           |  800 --------
 arch/arm/boot/dts/st/stm32f469-disco.dts      |  260 ---
 arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi   |   92 -
 arch/arm/boot/dts/st/stm32f469.dtsi           |   18 -
 arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi     |  436 ----
 arch/arm/boot/dts/st/stm32f746-disco.dts      |  234 ---
 arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi   |   55 -
 arch/arm/boot/dts/st/stm32f746.dtsi           |  727 -------
 .../dts/st/stm32f769-disco-mb1166-reva09.dts  |   13 -
 arch/arm/boot/dts/st/stm32f769-disco.dts      |  243 ---
 arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi   |   55 -
 arch/arm/boot/dts/st/stm32f769.dtsi           |   37 -
 arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi     |  301 ---
 arch/arm/boot/dts/st/stm32h743.dtsi           |  738 -------
 arch/arm/boot/dts/st/stm32h743i-disco.dts     |  145 --
 arch/arm/boot/dts/st/stm32h743i-eval.dts      |  185 --
 arch/arm/boot/dts/st/stm32h747i-disco.dts     |  149 --
 arch/arm/boot/dts/st/stm32h750.dtsi           |    6 -
 arch/arm/boot/dts/st/stm32h750i-art-pi.dts    |  229 ---
 arch/arm/boot/dts/ti/omap/Makefile            |    6 -
 arch/arm/boot/dts/ti/omap/omap2.dtsi          |  338 ----
 .../arm/boot/dts/ti/omap/omap2420-clocks.dtsi |  267 ---
 arch/arm/boot/dts/ti/omap/omap2420-h4.dts     |   63 -
 arch/arm/boot/dts/ti/omap/omap2420-n800.dts   |    9 -
 .../boot/dts/ti/omap/omap2420-n810-wimax.dts  |    9 -
 arch/arm/boot/dts/ti/omap/omap2420-n810.dts   |   75 -
 .../dts/ti/omap/omap2420-n8x0-common.dtsi     |  123 --
 arch/arm/boot/dts/ti/omap/omap2420.dtsi       |  262 ---
 .../arm/boot/dts/ti/omap/omap2430-clocks.dtsi |  341 ----
 arch/arm/boot/dts/ti/omap/omap2430-sdp.dts    |   70 -
 arch/arm/boot/dts/ti/omap/omap2430.dtsi       |  366 ----
 .../arm/boot/dts/ti/omap/omap24xx-clocks.dtsi | 1241 ------------
 arch/arm/common/Kconfig                       |   13 -
 arch/arm/common/Makefile                      |    4 -
 arch/arm/common/locomo.c                      |  886 --------
 arch/arm/common/sa1111.c                      | 1413 -------------
 arch/arm/common/scoop.c                       |  269 ---
 arch/arm/common/sharpsl_param.c               |   63 -
 arch/arm/configs/am200epdkit_defconfig        |   91 -
 arch/arm/configs/assabet_defconfig            |   57 -
 arch/arm/configs/axm55xx_defconfig            |  231 ---
 arch/arm/configs/collie_defconfig             |   87 -
 arch/arm/configs/dove_defconfig               |  134 --
 arch/arm/configs/footbridge_defconfig         |  114 --
 arch/arm/configs/h3600_defconfig              |   63 -
 arch/arm/configs/imx_v6_v7_defconfig          |    1 -
 arch/arm/configs/imxrt_defconfig              |   35 -
 arch/arm/configs/jornada720_defconfig         |   95 -
 arch/arm/configs/lpc18xx_defconfig            |  158 --
 arch/arm/configs/mps2_defconfig               |  102 -
 arch/arm/configs/mv78xx0_defconfig            |  120 --
 arch/arm/configs/neponset_defconfig           |   88 -
 arch/arm/configs/netwinder_defconfig          |   88 -
 arch/arm/configs/omap2plus_defconfig          |    2 -
 arch/arm/configs/rpc_defconfig                |  127 --
 arch/arm/configs/spitz_defconfig              |  237 ---
 arch/arm/configs/stm32_defconfig              |   80 -
 arch/arm/configs/vf610m4_defconfig            |   39 -
 arch/arm/include/asm/ecard.h                  |  219 --
 arch/arm/include/asm/hardware/dec21285.h      |  138 --
 arch/arm/include/asm/hardware/ioc.h           |   69 -
 arch/arm/include/asm/hardware/iomd.h          |  182 --
 arch/arm/include/asm/hardware/locomo.h        |  217 --
 arch/arm/include/asm/hardware/memc.h          |   23 -
 arch/arm/include/asm/hardware/scoop.h         |   67 -
 arch/arm/include/asm/hardware/ssp.h           |   25 -
 arch/arm/include/asm/io.h                     |    5 +-
 arch/arm/include/asm/mach/pci.h               |   14 -
 arch/arm/include/asm/mach/sharpsl_param.h     |   33 -
 arch/arm/include/asm/memory.h                 |    3 -
 arch/arm/include/debug/dc21285.S              |   41 -
 arch/arm/include/debug/sa1100.S               |   67 -
 arch/arm/kernel/atags_parse.c                 |   18 -
 arch/arm/kernel/bios32.c                      |   12 -
 arch/arm/kernel/head-common.S                 |   13 -
 arch/arm/kernel/head.S                        |   22 -
 arch/arm/lib/delay-loop.S                     |    4 -
 arch/arm/mach-at91/Kconfig                    |   11 +-
 arch/arm/mach-at91/Makefile                   |    1 -
 arch/arm/mach-at91/samv7.c                    |   17 -
 arch/arm/mach-axxia/Kconfig                   |   17 -
 arch/arm/mach-axxia/Makefile                  |    3 -
 arch/arm/mach-axxia/axxia.c                   |   19 -
 arch/arm/mach-axxia/platsmp.c                 |   87 -
 arch/arm/mach-dove/Kconfig                    |   32 -
 arch/arm/mach-dove/Makefile                   |    7 -
 arch/arm/mach-dove/bridge-regs.h              |   50 -
 arch/arm/mach-dove/cm-a510.c                  |   94 -
 arch/arm/mach-dove/common.c                   |  449 ----
 arch/arm/mach-dove/common.h                   |   46 -
 arch/arm/mach-dove/dove.h                     |  185 --
 arch/arm/mach-dove/irq.c                      |   81 -
 arch/arm/mach-dove/irqs.h                     |   89 -
 arch/arm/mach-dove/mpp.c                      |  159 --
 arch/arm/mach-dove/mpp.h                      |  197 --
 arch/arm/mach-dove/pcie.c                     |  226 ---
 arch/arm/mach-dove/pm.h                       |   58 -
 arch/arm/mach-footbridge/Kconfig              |   57 -
 arch/arm/mach-footbridge/Makefile             |   18 -
 arch/arm/mach-footbridge/common.c             |  280 ---
 arch/arm/mach-footbridge/common.h             |   15 -
 arch/arm/mach-footbridge/dc21285-timer.c      |  136 --
 arch/arm/mach-footbridge/dc21285.c            |  360 ----
 arch/arm/mach-footbridge/dma-isa.c            |  230 ---
 arch/arm/mach-footbridge/ebsa285-pci.c        |   48 -
 arch/arm/mach-footbridge/ebsa285.c            |  124 --
 .../mach-footbridge/include/mach/hardware.h   |   90 -
 arch/arm/mach-footbridge/include/mach/irqs.h  |   97 -
 .../mach-footbridge/include/mach/isa-dma.h    |   18 -
 .../arm/mach-footbridge/include/mach/memory.h |   26 -
 .../mach-footbridge/include/mach/uncompress.h |   34 -
 arch/arm/mach-footbridge/isa-irq.c            |  177 --
 arch/arm/mach-footbridge/isa-rtc.c            |   57 -
 arch/arm/mach-footbridge/isa-timer.c          |   36 -
 arch/arm/mach-footbridge/isa.c                |   94 -
 arch/arm/mach-footbridge/netwinder-hw.c       |  772 -------
 arch/arm/mach-footbridge/netwinder-pci.c      |   62 -
 arch/arm/mach-imx/Kconfig                     |   38 +-
 arch/arm/mach-imx/Makefile                    |    4 -
 arch/arm/mach-imx/cpu-imx31.c                 |   72 -
 arch/arm/mach-imx/mach-imx31.c                |   18 -
 arch/arm/mach-imx/mach-imx7d-cm4.c            |   18 -
 arch/arm/mach-imx/mach-imxrt.c                |   19 -
 arch/arm/mach-imx/mm-imx3.c                   |   44 -
 arch/arm/mach-lpc18xx/Makefile                |    2 -
 arch/arm/mach-lpc18xx/board-dt.c              |   19 -
 arch/arm/mach-mv78xx0/Kconfig                 |   27 -
 arch/arm/mach-mv78xx0/Makefile                |    5 -
 arch/arm/mach-mv78xx0/bridge-regs.h           |   31 -
 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c     |  183 --
 arch/arm/mach-mv78xx0/common.c                |  444 ----
 arch/arm/mach-mv78xx0/common.h                |   54 -
 arch/arm/mach-mv78xx0/irq.c                   |   69 -
 arch/arm/mach-mv78xx0/irqs.h                  |   87 -
 arch/arm/mach-mv78xx0/mpp.c                   |   34 -
 arch/arm/mach-mv78xx0/mpp.h                   |  337 ---
 arch/arm/mach-mv78xx0/mv78xx0.h               |  134 --
 arch/arm/mach-mv78xx0/pcie.c                  |  280 ---
 arch/arm/mach-omap2/Kconfig                   |   62 +-
 arch/arm/mach-omap2/Makefile                  |   63 +-
 arch/arm/mach-omap2/board-generic.c           |   34 -
 arch/arm/mach-omap2/board-n8x0.c              |  512 -----
 arch/arm/mach-omap2/clkt2xxx_dpll.c           |   56 -
 arch/arm/mach-omap2/clkt2xxx_dpllcore.c       |  194 --
 arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c  |  259 ---
 arch/arm/mach-omap2/clock.c                   |   12 +-
 arch/arm/mach-omap2/clock2xxx.h               |   17 -
 arch/arm/mach-omap2/clockdomain.c             |    4 +-
 arch/arm/mach-omap2/clockdomain.h             |    5 -
 arch/arm/mach-omap2/clockdomains2420_data.c   |  154 --
 arch/arm/mach-omap2/clockdomains2430_data.c   |  181 --
 .../mach-omap2/clockdomains2xxx_3xxx_data.c   |   29 +-
 arch/arm/mach-omap2/cm-regbits-24xx.h         |   51 -
 arch/arm/mach-omap2/cm2xxx.c                  |  302 ---
 arch/arm/mach-omap2/cm2xxx.h                  |   60 -
 arch/arm/mach-omap2/cm_common.c               |   12 -
 arch/arm/mach-omap2/common-board-devices.h    |   11 -
 arch/arm/mach-omap2/common.h                  |   12 -
 arch/arm/mach-omap2/control.h                 |   56 -
 arch/arm/mach-omap2/display.c                 |    4 +-
 arch/arm/mach-omap2/dma.c                     |   53 +-
 arch/arm/mach-omap2/fb.c                      |   14 +-
 arch/arm/mach-omap2/gpmc.h                    |   10 -
 arch/arm/mach-omap2/i2c.c                     |    2 +-
 arch/arm/mach-omap2/id.c                      |   80 +-
 arch/arm/mach-omap2/io.c                      |  140 +-
 arch/arm/mach-omap2/iomap.h                   |   46 -
 arch/arm/mach-omap2/l3_2xxx.h                 |   15 -
 arch/arm/mach-omap2/l4_2xxx.h                 |   19 -
 arch/arm/mach-omap2/mmc.h                     |   18 -
 arch/arm/mach-omap2/msdi.c                    |   75 -
 arch/arm/mach-omap2/omap2-restart.c           |   62 -
 arch/arm/mach-omap2/omap24xx.h                |   73 -
 arch/arm/mach-omap2/omap_hwmod.c              |   18 +-
 arch/arm/mach-omap2/omap_hwmod.h              |    2 -
 arch/arm/mach-omap2/omap_hwmod_2420_data.c    |  402 ----
 arch/arm/mach-omap2/omap_hwmod_2430_data.c    |  606 ------
 .../omap_hwmod_2xxx_interconnect_data.c       |  256 ---
 .../mach-omap2/omap_hwmod_2xxx_ipblock_data.c |  668 ------
 arch/arm/mach-omap2/omap_hwmod_common_data.h  |   66 -
 arch/arm/mach-omap2/opp2420_data.c            |  131 --
 arch/arm/mach-omap2/opp2430_data.c            |  136 --
 arch/arm/mach-omap2/opp2xxx.h                 |  430 ----
 arch/arm/mach-omap2/pdata-quirks.c            |   35 +-
 arch/arm/mach-omap2/pm.h                      |    5 -
 arch/arm/mach-omap2/powerdomain.h             |    3 -
 arch/arm/mach-omap2/powerdomains2xxx_data.c   |  134 --
 arch/arm/mach-omap2/prcm-common.h             |  147 --
 arch/arm/mach-omap2/prm-regbits-24xx.h        |   39 -
 arch/arm/mach-omap2/prm2xxx.c                 |  229 ---
 arch/arm/mach-omap2/prm2xxx.h                 |  128 --
 arch/arm/mach-omap2/prm2xxx_3xxx.c            |    1 -
 arch/arm/mach-omap2/prm_common.c              |   11 -
 arch/arm/mach-omap2/sdrc.h                    |   21 -
 arch/arm/mach-omap2/sdrc2xxx.c                |  164 --
 arch/arm/mach-omap2/sleep24xx.S               |   91 -
 arch/arm/mach-omap2/soc.h                     |   59 -
 arch/arm/mach-omap2/sram.c                    |  159 +-
 arch/arm/mach-omap2/sram.h                    |   32 -
 arch/arm/mach-omap2/sram242x.S                |  317 ---
 arch/arm/mach-omap2/sram243x.S                |  317 ---
 arch/arm/mach-omap2/usb-tusb6010.c            |  217 --
 arch/arm/mach-omap2/usb-tusb6010.h            |   12 -
 arch/arm/mach-omap2/voltagedomains2xxx_data.c |   29 -
 arch/arm/mach-orion5x/Kconfig                 |   95 -
 arch/arm/mach-orion5x/Makefile                |    9 -
 arch/arm/mach-orion5x/board-dt.c              |    3 +-
 arch/arm/mach-orion5x/common.c                |  238 +--
 arch/arm/mach-orion5x/common.h                |   15 -
 arch/arm/mach-orion5x/dns323-setup.c          |  757 -------
 arch/arm/mach-orion5x/kurobox_pro-setup.c     |  407 ----
 arch/arm/mach-orion5x/mv2120-setup.c          |  256 ---
 arch/arm/mach-orion5x/net2big-setup.c         |  444 ----
 arch/arm/mach-orion5x/pci.c                   |    1 -
 .../arm/mach-orion5x/terastation_pro2-setup.c |  366 ----
 arch/arm/mach-orion5x/ts209-setup.c           |  331 ---
 arch/arm/mach-orion5x/ts409-setup.c           |  329 ---
 arch/arm/mach-orion5x/ts78xx-fpga.h           |   42 -
 arch/arm/mach-orion5x/ts78xx-setup.c          |  574 ------
 arch/arm/mach-orion5x/tsx09-common.c          |  129 --
 arch/arm/mach-orion5x/tsx09-common.h          |   21 -
 arch/arm/mach-pxa/Kconfig                     |   89 -
 arch/arm/mach-pxa/Makefile                    |    8 -
 arch/arm/mach-pxa/am200epd.c                  |  395 ----
 arch/arm/mach-pxa/am300epd.c                  |  296 ---
 arch/arm/mach-pxa/devices.c                   |  705 -------
 arch/arm/mach-pxa/devices.h                   |   68 -
 arch/arm/mach-pxa/generic.h                   |    5 -
 arch/arm/mach-pxa/gumstix.c                   |  237 ---
 arch/arm/mach-pxa/gumstix.h                   |   89 -
 arch/arm/mach-pxa/pxa25x.c                    |   59 -
 arch/arm/mach-pxa/pxa27x.c                    |   77 -
 arch/arm/mach-pxa/pxa300.c                    |    1 -
 arch/arm/mach-pxa/pxa320.c                    |    1 -
 arch/arm/mach-pxa/pxa3xx.c                    |    6 -
 arch/arm/mach-pxa/sharpsl_pm.c                |  941 ---------
 arch/arm/mach-pxa/sharpsl_pm.h                |  108 -
 arch/arm/mach-pxa/spitz.c                     | 1174 -----------
 arch/arm/mach-pxa/spitz.h                     |  185 --
 arch/arm/mach-pxa/spitz_pm.c                  |  257 ---
 arch/arm/mach-rpc/Kconfig                     |   24 -
 arch/arm/mach-rpc/Makefile                    |    9 -
 arch/arm/mach-rpc/dma.c                       |  393 ----
 arch/arm/mach-rpc/ecard-loader.S              |   40 -
 arch/arm/mach-rpc/ecard.c                     | 1146 -----------
 arch/arm/mach-rpc/ecard.h                     |   66 -
 arch/arm/mach-rpc/fiq.S                       |   18 -
 arch/arm/mach-rpc/floppydma.S                 |   29 -
 arch/arm/mach-rpc/include/mach/acornfb.h      |  137 --
 arch/arm/mach-rpc/include/mach/hardware.h     |   73 -
 arch/arm/mach-rpc/include/mach/io.h           |   28 -
 arch/arm/mach-rpc/include/mach/irqs.h         |   42 -
 arch/arm/mach-rpc/include/mach/isa-dma.h      |   26 -
 arch/arm/mach-rpc/include/mach/memory.h       |   32 -
 arch/arm/mach-rpc/include/mach/uncompress.h   |  181 --
 arch/arm/mach-rpc/io-acorn.S                  |   28 -
 arch/arm/mach-rpc/irq.c                       |  226 ---
 arch/arm/mach-rpc/riscpc.c                    |  225 ---
 arch/arm/mach-rpc/time.c                      |   97 -
 arch/arm/mach-sa1100/Kconfig                  |   92 -
 arch/arm/mach-sa1100/Makefile                 |   20 -
 arch/arm/mach-sa1100/assabet.c                |  770 -------
 arch/arm/mach-sa1100/clock.c                  |  145 --
 arch/arm/mach-sa1100/collie.c                 |  447 ----
 arch/arm/mach-sa1100/generic.c                |  470 -----
 arch/arm/mach-sa1100/generic.h                |   58 -
 arch/arm/mach-sa1100/h3600.c                  |  134 --
 arch/arm/mach-sa1100/h3xxx.c                  |  305 ---
 arch/arm/mach-sa1100/include/mach/SA-1100.h   | 1798 -----------------
 arch/arm/mach-sa1100/include/mach/assabet.h   |   99 -
 arch/arm/mach-sa1100/include/mach/bitfield.h  |  113 --
 arch/arm/mach-sa1100/include/mach/collie.h    |   94 -
 arch/arm/mach-sa1100/include/mach/generic.h   |    1 -
 arch/arm/mach-sa1100/include/mach/h3xxx.h     |   81 -
 arch/arm/mach-sa1100/include/mach/hardware.h  |   56 -
 arch/arm/mach-sa1100/include/mach/irqs.h      |  101 -
 .../arm/mach-sa1100/include/mach/jornada720.h |   28 -
 arch/arm/mach-sa1100/include/mach/memory.h    |   37 -
 arch/arm/mach-sa1100/include/mach/mtd-xip.h   |   23 -
 arch/arm/mach-sa1100/include/mach/neponset.h  |   31 -
 arch/arm/mach-sa1100/include/mach/reset.h     |   18 -
 .../arm/mach-sa1100/include/mach/uncompress.h |   52 -
 arch/arm/mach-sa1100/jornada720.c             |  380 ----
 arch/arm/mach-sa1100/jornada720_ssp.c         |  202 --
 arch/arm/mach-sa1100/neponset.c               |  438 ----
 arch/arm/mach-sa1100/pm.c                     |  128 --
 arch/arm/mach-sa1100/sleep.S                  |  143 --
 arch/arm/mach-sa1100/ssp.c                    |  240 ---
 arch/arm/mach-stm32/Kconfig                   |   38 +-
 arch/arm/mach-versatile/Makefile              |    3 -
 arch/arm/mach-versatile/v2m-mps2.c            |   17 -
 arch/arm/mm/Kconfig                           |    2 +-
 arch/arm/mm/init.c                            |    5 -
 arch/arm/mm/mmu.c                             |   10 +-
 arch/arm/plat-orion/Makefile                  |    2 +-
 arch/arm/plat-orion/common.c                  |  826 --------
 arch/arm/plat-orion/include/plat/addr-map.h   |   54 -
 arch/arm/plat-orion/include/plat/common.h     |  104 -
 arch/arm/plat-orion/include/plat/time.h       |   20 -
 arch/arm/plat-orion/pcie.c                    |    1 -
 arch/arm/plat-orion/time.c                    |  238 ---
 block/partitions/Kconfig                      |    7 -
 drivers/ata/Kconfig                           |    3 +-
 drivers/crypto/Kconfig                        |    2 +-
 drivers/i2c/busses/Kconfig                    |    2 +-
 drivers/media/platform/ti/omap/Kconfig        |    4 +-
 drivers/mmc/host/Kconfig                      |    2 +-
 drivers/mtd/nand/onenand/Kconfig              |    4 +-
 drivers/pci/controller/Kconfig                |    2 +-
 drivers/phy/marvell/Kconfig                   |    2 +-
 drivers/rtc/Kconfig                           |    6 +-
 drivers/rtc/rtc-sa1100.c                      |   16 +-
 drivers/soc/Makefile                          |    1 -
 drivers/soc/atmel/soc.c                       |   35 -
 drivers/thermal/Kconfig                       |    2 +-
 drivers/tty/vt/keyboard.c                     |    2 +-
 drivers/video/console/Kconfig                 |    6 +-
 drivers/video/console/dummycon.c              |    6 -
 drivers/video/fbdev/cyber2000fb.c             |   10 -
 drivers/video/fbdev/omap2/omapfb/Kconfig      |    2 +-
 drivers/watchdog/Kconfig                      |   14 +-
 include/linux/clk/ti.h                        |    8 -
 lib/fonts/font_acorn_8x8.c                    |    4 -
 sound/soc/kirkwood/Kconfig                    |    2 +-
 371 files changed, 115 insertions(+), 55679 deletions(-)
 delete mode 100644 Documentation/arch/arm/netwinder.rst
 delete mode 100644 Documentation/devicetree/bindings/arm/axxia.yaml
 delete mode 100644 arch/arm/boot/compressed/font.c
 delete mode 100644 arch/arm/boot/compressed/head-sa1100.S
 delete mode 100644 arch/arm/boot/compressed/head-sharpsl.S
 delete mode 100644 arch/arm/boot/compressed/ll_char_wr.S
 delete mode 100644 arch/arm/boot/dts/arm/mps2-an385.dts
 delete mode 100644 arch/arm/boot/dts/arm/mps2-an399.dts
 delete mode 100644 arch/arm/boot/dts/arm/mps2.dtsi
 delete mode 100644 arch/arm/boot/dts/intel/axm/Makefile
 delete mode 100644 arch/arm/boot/dts/intel/axm/axm5516-amarillo.dts
 delete mode 100644 arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi
 delete mode 100644 arch/arm/boot/dts/intel/axm/axm55xx.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-bug.dts
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-lite.dts
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4350-hitex-eval.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4357-ea4357-devkit.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
 delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
 delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f429-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f429.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f469-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f469.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f746-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f746.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f769-disco-mb1166-reva09.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f769-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f769.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h743.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h743i-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32h743i-eval.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32h747i-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32h750.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h750i-art-pi.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-h4.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n800.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n810.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
 delete mode 100644 arch/arm/common/locomo.c
 delete mode 100644 arch/arm/common/sa1111.c
 delete mode 100644 arch/arm/common/scoop.c
 delete mode 100644 arch/arm/common/sharpsl_param.c
 delete mode 100644 arch/arm/configs/am200epdkit_defconfig
 delete mode 100644 arch/arm/configs/assabet_defconfig
 delete mode 100644 arch/arm/configs/axm55xx_defconfig
 delete mode 100644 arch/arm/configs/collie_defconfig
 delete mode 100644 arch/arm/configs/dove_defconfig
 delete mode 100644 arch/arm/configs/footbridge_defconfig
 delete mode 100644 arch/arm/configs/h3600_defconfig
 delete mode 100644 arch/arm/configs/imxrt_defconfig
 delete mode 100644 arch/arm/configs/jornada720_defconfig
 delete mode 100644 arch/arm/configs/lpc18xx_defconfig
 delete mode 100644 arch/arm/configs/mps2_defconfig
 delete mode 100644 arch/arm/configs/mv78xx0_defconfig
 delete mode 100644 arch/arm/configs/neponset_defconfig
 delete mode 100644 arch/arm/configs/netwinder_defconfig
 delete mode 100644 arch/arm/configs/rpc_defconfig
 delete mode 100644 arch/arm/configs/spitz_defconfig
 delete mode 100644 arch/arm/configs/stm32_defconfig
 delete mode 100644 arch/arm/configs/vf610m4_defconfig
 delete mode 100644 arch/arm/include/asm/ecard.h
 delete mode 100644 arch/arm/include/asm/hardware/dec21285.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/locomo.h
 delete mode 100644 arch/arm/include/asm/hardware/memc.h
 delete mode 100644 arch/arm/include/asm/hardware/scoop.h
 delete mode 100644 arch/arm/include/asm/hardware/ssp.h
 delete mode 100644 arch/arm/include/asm/mach/sharpsl_param.h
 delete mode 100644 arch/arm/include/debug/dc21285.S
 delete mode 100644 arch/arm/include/debug/sa1100.S
 delete mode 100644 arch/arm/mach-at91/samv7.c
 delete mode 100644 arch/arm/mach-axxia/Kconfig
 delete mode 100644 arch/arm/mach-axxia/Makefile
 delete mode 100644 arch/arm/mach-axxia/axxia.c
 delete mode 100644 arch/arm/mach-axxia/platsmp.c
 delete mode 100644 arch/arm/mach-dove/Kconfig
 delete mode 100644 arch/arm/mach-dove/Makefile
 delete mode 100644 arch/arm/mach-dove/bridge-regs.h
 delete mode 100644 arch/arm/mach-dove/cm-a510.c
 delete mode 100644 arch/arm/mach-dove/common.c
 delete mode 100644 arch/arm/mach-dove/common.h
 delete mode 100644 arch/arm/mach-dove/dove.h
 delete mode 100644 arch/arm/mach-dove/irq.c
 delete mode 100644 arch/arm/mach-dove/irqs.h
 delete mode 100644 arch/arm/mach-dove/mpp.c
 delete mode 100644 arch/arm/mach-dove/mpp.h
 delete mode 100644 arch/arm/mach-dove/pcie.c
 delete mode 100644 arch/arm/mach-dove/pm.h
 delete mode 100644 arch/arm/mach-footbridge/Kconfig
 delete mode 100644 arch/arm/mach-footbridge/Makefile
 delete mode 100644 arch/arm/mach-footbridge/common.c
 delete mode 100644 arch/arm/mach-footbridge/common.h
 delete mode 100644 arch/arm/mach-footbridge/dc21285-timer.c
 delete mode 100644 arch/arm/mach-footbridge/dc21285.c
 delete mode 100644 arch/arm/mach-footbridge/dma-isa.c
 delete mode 100644 arch/arm/mach-footbridge/ebsa285-pci.c
 delete mode 100644 arch/arm/mach-footbridge/ebsa285.c
 delete mode 100644 arch/arm/mach-footbridge/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/irqs.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/isa-dma.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/memory.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-footbridge/isa-irq.c
 delete mode 100644 arch/arm/mach-footbridge/isa-rtc.c
 delete mode 100644 arch/arm/mach-footbridge/isa-timer.c
 delete mode 100644 arch/arm/mach-footbridge/isa.c
 delete mode 100644 arch/arm/mach-footbridge/netwinder-hw.c
 delete mode 100644 arch/arm/mach-footbridge/netwinder-pci.c
 delete mode 100644 arch/arm/mach-imx/cpu-imx31.c
 delete mode 100644 arch/arm/mach-imx/mach-imx31.c
 delete mode 100644 arch/arm/mach-imx/mach-imx7d-cm4.c
 delete mode 100644 arch/arm/mach-imx/mach-imxrt.c
 delete mode 100644 arch/arm/mach-lpc18xx/Makefile
 delete mode 100644 arch/arm/mach-lpc18xx/board-dt.c
 delete mode 100644 arch/arm/mach-mv78xx0/Kconfig
 delete mode 100644 arch/arm/mach-mv78xx0/Makefile
 delete mode 100644 arch/arm/mach-mv78xx0/bridge-regs.h
 delete mode 100644 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
 delete mode 100644 arch/arm/mach-mv78xx0/common.c
 delete mode 100644 arch/arm/mach-mv78xx0/common.h
 delete mode 100644 arch/arm/mach-mv78xx0/irq.c
 delete mode 100644 arch/arm/mach-mv78xx0/irqs.h
 delete mode 100644 arch/arm/mach-mv78xx0/mpp.c
 delete mode 100644 arch/arm/mach-mv78xx0/mpp.h
 delete mode 100644 arch/arm/mach-mv78xx0/mv78xx0.h
 delete mode 100644 arch/arm/mach-mv78xx0/pcie.c
 delete mode 100644 arch/arm/mach-omap2/board-n8x0.c
 delete mode 100644 arch/arm/mach-omap2/clkt2xxx_dpll.c
 delete mode 100644 arch/arm/mach-omap2/clkt2xxx_dpllcore.c
 delete mode 100644 arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
 delete mode 100644 arch/arm/mach-omap2/clock2xxx.h
 delete mode 100644 arch/arm/mach-omap2/clockdomains2420_data.c
 delete mode 100644 arch/arm/mach-omap2/clockdomains2430_data.c
 delete mode 100644 arch/arm/mach-omap2/cm-regbits-24xx.h
 delete mode 100644 arch/arm/mach-omap2/cm2xxx.c
 delete mode 100644 arch/arm/mach-omap2/cm2xxx.h
 delete mode 100644 arch/arm/mach-omap2/common-board-devices.h
 delete mode 100644 arch/arm/mach-omap2/gpmc.h
 delete mode 100644 arch/arm/mach-omap2/l3_2xxx.h
 delete mode 100644 arch/arm/mach-omap2/l4_2xxx.h
 delete mode 100644 arch/arm/mach-omap2/mmc.h
 delete mode 100644 arch/arm/mach-omap2/msdi.c
 delete mode 100644 arch/arm/mach-omap2/omap2-restart.c
 delete mode 100644 arch/arm/mach-omap2/omap24xx.h
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2420_data.c
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2430_data.c
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
 delete mode 100644 arch/arm/mach-omap2/opp2420_data.c
 delete mode 100644 arch/arm/mach-omap2/opp2430_data.c
 delete mode 100644 arch/arm/mach-omap2/opp2xxx.h
 delete mode 100644 arch/arm/mach-omap2/powerdomains2xxx_data.c
 delete mode 100644 arch/arm/mach-omap2/prm-regbits-24xx.h
 delete mode 100644 arch/arm/mach-omap2/prm2xxx.c
 delete mode 100644 arch/arm/mach-omap2/prm2xxx.h
 delete mode 100644 arch/arm/mach-omap2/sdrc2xxx.c
 delete mode 100644 arch/arm/mach-omap2/sleep24xx.S
 delete mode 100644 arch/arm/mach-omap2/sram242x.S
 delete mode 100644 arch/arm/mach-omap2/sram243x.S
 delete mode 100644 arch/arm/mach-omap2/usb-tusb6010.c
 delete mode 100644 arch/arm/mach-omap2/usb-tusb6010.h
 delete mode 100644 arch/arm/mach-omap2/voltagedomains2xxx_data.c
 delete mode 100644 arch/arm/mach-orion5x/dns323-setup.c
 delete mode 100644 arch/arm/mach-orion5x/kurobox_pro-setup.c
 delete mode 100644 arch/arm/mach-orion5x/mv2120-setup.c
 delete mode 100644 arch/arm/mach-orion5x/net2big-setup.c
 delete mode 100644 arch/arm/mach-orion5x/terastation_pro2-setup.c
 delete mode 100644 arch/arm/mach-orion5x/ts209-setup.c
 delete mode 100644 arch/arm/mach-orion5x/ts409-setup.c
 delete mode 100644 arch/arm/mach-orion5x/ts78xx-fpga.h
 delete mode 100644 arch/arm/mach-orion5x/ts78xx-setup.c
 delete mode 100644 arch/arm/mach-orion5x/tsx09-common.c
 delete mode 100644 arch/arm/mach-orion5x/tsx09-common.h
 delete mode 100644 arch/arm/mach-pxa/am200epd.c
 delete mode 100644 arch/arm/mach-pxa/am300epd.c
 delete mode 100644 arch/arm/mach-pxa/devices.h
 delete mode 100644 arch/arm/mach-pxa/gumstix.c
 delete mode 100644 arch/arm/mach-pxa/gumstix.h
 delete mode 100644 arch/arm/mach-pxa/sharpsl_pm.c
 delete mode 100644 arch/arm/mach-pxa/sharpsl_pm.h
 delete mode 100644 arch/arm/mach-pxa/spitz.c
 delete mode 100644 arch/arm/mach-pxa/spitz.h
 delete mode 100644 arch/arm/mach-pxa/spitz_pm.c
 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
 delete mode 100644 arch/arm/mach-sa1100/Kconfig
 delete mode 100644 arch/arm/mach-sa1100/Makefile
 delete mode 100644 arch/arm/mach-sa1100/assabet.c
 delete mode 100644 arch/arm/mach-sa1100/clock.c
 delete mode 100644 arch/arm/mach-sa1100/collie.c
 delete mode 100644 arch/arm/mach-sa1100/generic.c
 delete mode 100644 arch/arm/mach-sa1100/generic.h
 delete mode 100644 arch/arm/mach-sa1100/h3600.c
 delete mode 100644 arch/arm/mach-sa1100/h3xxx.c
 delete mode 100644 arch/arm/mach-sa1100/include/mach/SA-1100.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/assabet.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/bitfield.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/collie.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/generic.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/h3xxx.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/irqs.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/jornada720.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/memory.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/mtd-xip.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/neponset.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/reset.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-sa1100/jornada720.c
 delete mode 100644 arch/arm/mach-sa1100/jornada720_ssp.c
 delete mode 100644 arch/arm/mach-sa1100/neponset.c
 delete mode 100644 arch/arm/mach-sa1100/pm.c
 delete mode 100644 arch/arm/mach-sa1100/sleep.S
 delete mode 100644 arch/arm/mach-sa1100/ssp.c
 delete mode 100644 arch/arm/mach-versatile/v2m-mps2.c
 delete mode 100644 arch/arm/plat-orion/common.c
 delete mode 100644 arch/arm/plat-orion/include/plat/addr-map.h
 delete mode 100644 arch/arm/plat-orion/include/plat/common.h
 delete mode 100644 arch/arm/plat-orion/include/plat/time.h
 delete mode 100644 arch/arm/plat-orion/time.c

-- 
2.53.0

Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Sudeep Holla <sudeep.holla@kernel.org>
Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
Cc: Frank Li <Frank.Li@nxp.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Vladimir Zapolskiy <vz@mleia.com>
Cc: Stefan Agner <stefan@agner.ch>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: Andreas Kemnade <andreas@kemnade.info>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Roger Quadros <rogerq@kernel.org>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: Gregory Clement <gregory.clement@bootlin.com>
Cc: Robert Jarzmik <robert.jarzmik@free.fr>
Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
Cc: Linus Walleij <linusw@kernel.org>
Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Karl Mehltretter <kmehltretter@gmail.com>
Cc: "David Hildenbrand (Arm)" <david@kernel.org>
Cc: Nicolas Pitre <npitre@baylibre.com>
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: devicetree@vger.kernel.org
Cc: imx@lists.linux.dev
Cc: linux-stm32@st-md-mailman.stormreply.com
Cc: linux-omap@vger.kernel.org

^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 01/13] ARM: remove sa1100 platform
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
@ 2026-09-08 15:27 ` Arnd Bergmann
  2026-09-08 16:26   ` Guenter Roeck
                     ` (3 more replies)
  2026-09-08 15:27 ` [PATCH 02/13] ARM: remove footbridge Arnd Bergmann
                   ` (12 subsequent siblings)
  13 siblings, 4 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Guenter Roeck

From: Arnd Bergmann <arnd@arndb.de>

Most sa1100 platforms were removed a few years, with the remaining
ones left as a starting point for a conversion to devicetree.

Nothing ever happened on that front, so remove the rest now,
including the sa1111 and locomo drivers that were once shared
with pxa but are already sa1100-exclusive now.

Cc: Russell King <linux@armlinux.org.uk>
Cc: Linus Walleij <linusw@kernel.org>
Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/arch/arm/index.rst              |    3 -
 Documentation/arch/arm/sa1100/assabet.rst     |  301 ---
 Documentation/arch/arm/sa1100/cerf.rst        |   35 -
 Documentation/arch/arm/sa1100/index.rst       |   13 -
 Documentation/arch/arm/sa1100/lart.rst        |   15 -
 Documentation/arch/arm/sa1100/serial_uart.rst |   51 -
 MAINTAINERS                                   |    8 -
 arch/arm/Kconfig                              |   16 +-
 arch/arm/Kconfig.debug                        |   13 +-
 arch/arm/Makefile                             |    6 -
 arch/arm/boot/bootp/Makefile                  |    1 -
 arch/arm/boot/compressed/Makefile             |    4 -
 arch/arm/boot/compressed/head-sa1100.S        |   45 -
 arch/arm/boot/compressed/head.S               |    7 -
 arch/arm/common/Kconfig                       |    7 -
 arch/arm/common/Makefile                      |    2 -
 arch/arm/common/locomo.c                      |  886 --------
 arch/arm/common/sa1111.c                      | 1413 -------------
 arch/arm/configs/assabet_defconfig            |   57 -
 arch/arm/configs/collie_defconfig             |   87 -
 arch/arm/configs/h3600_defconfig              |   63 -
 arch/arm/configs/jornada720_defconfig         |   95 -
 arch/arm/configs/neponset_defconfig           |   88 -
 arch/arm/include/asm/cputype.h                |    4 -
 arch/arm/include/asm/hardware/locomo.h        |  217 --
 arch/arm/include/asm/hardware/sa1111.h        |  442 ----
 arch/arm/include/asm/hardware/ssp.h           |   25 -
 arch/arm/include/debug/sa1100.S               |   67 -
 arch/arm/mach-sa1100/Kconfig                  |   92 -
 arch/arm/mach-sa1100/Makefile                 |   20 -
 arch/arm/mach-sa1100/assabet.c                |  770 -------
 arch/arm/mach-sa1100/clock.c                  |  145 --
 arch/arm/mach-sa1100/collie.c                 |  447 ----
 arch/arm/mach-sa1100/generic.c                |  470 -----
 arch/arm/mach-sa1100/generic.h                |   58 -
 arch/arm/mach-sa1100/h3600.c                  |  134 --
 arch/arm/mach-sa1100/h3xxx.c                  |  305 ---
 arch/arm/mach-sa1100/include/mach/SA-1100.h   | 1798 -----------------
 arch/arm/mach-sa1100/include/mach/assabet.h   |   99 -
 arch/arm/mach-sa1100/include/mach/bitfield.h  |  113 --
 arch/arm/mach-sa1100/include/mach/collie.h    |   94 -
 arch/arm/mach-sa1100/include/mach/generic.h   |    1 -
 arch/arm/mach-sa1100/include/mach/h3xxx.h     |   81 -
 arch/arm/mach-sa1100/include/mach/hardware.h  |   56 -
 arch/arm/mach-sa1100/include/mach/irqs.h      |  101 -
 .../arm/mach-sa1100/include/mach/jornada720.h |   28 -
 arch/arm/mach-sa1100/include/mach/memory.h    |   37 -
 arch/arm/mach-sa1100/include/mach/mtd-xip.h   |   23 -
 arch/arm/mach-sa1100/include/mach/neponset.h  |   31 -
 arch/arm/mach-sa1100/include/mach/reset.h     |   18 -
 .../arm/mach-sa1100/include/mach/uncompress.h |   52 -
 arch/arm/mach-sa1100/jornada720.c             |  380 ----
 arch/arm/mach-sa1100/jornada720_ssp.c         |  202 --
 arch/arm/mach-sa1100/neponset.c               |  438 ----
 arch/arm/mach-sa1100/pm.c                     |  128 --
 arch/arm/mach-sa1100/sleep.S                  |  143 --
 arch/arm/mach-sa1100/ssp.c                    |  240 ---
 arch/arm/mm/init.c                            |    5 -
 arch/arm/mm/mmu.c                             |    8 -
 drivers/rtc/Kconfig                           |    4 +-
 drivers/rtc/rtc-sa1100.c                      |   16 +-
 drivers/watchdog/Kconfig                      |   12 +-
 62 files changed, 19 insertions(+), 10501 deletions(-)
 delete mode 100644 Documentation/arch/arm/sa1100/assabet.rst
 delete mode 100644 Documentation/arch/arm/sa1100/cerf.rst
 delete mode 100644 Documentation/arch/arm/sa1100/index.rst
 delete mode 100644 Documentation/arch/arm/sa1100/lart.rst
 delete mode 100644 Documentation/arch/arm/sa1100/serial_uart.rst
 delete mode 100644 arch/arm/boot/compressed/head-sa1100.S
 delete mode 100644 arch/arm/common/locomo.c
 delete mode 100644 arch/arm/common/sa1111.c
 delete mode 100644 arch/arm/configs/assabet_defconfig
 delete mode 100644 arch/arm/configs/collie_defconfig
 delete mode 100644 arch/arm/configs/h3600_defconfig
 delete mode 100644 arch/arm/configs/jornada720_defconfig
 delete mode 100644 arch/arm/configs/neponset_defconfig
 delete mode 100644 arch/arm/include/asm/hardware/locomo.h
 delete mode 100644 arch/arm/include/asm/hardware/sa1111.h
 delete mode 100644 arch/arm/include/asm/hardware/ssp.h
 delete mode 100644 arch/arm/include/debug/sa1100.S
 delete mode 100644 arch/arm/mach-sa1100/Kconfig
 delete mode 100644 arch/arm/mach-sa1100/Makefile
 delete mode 100644 arch/arm/mach-sa1100/assabet.c
 delete mode 100644 arch/arm/mach-sa1100/clock.c
 delete mode 100644 arch/arm/mach-sa1100/collie.c
 delete mode 100644 arch/arm/mach-sa1100/generic.c
 delete mode 100644 arch/arm/mach-sa1100/generic.h
 delete mode 100644 arch/arm/mach-sa1100/h3600.c
 delete mode 100644 arch/arm/mach-sa1100/h3xxx.c
 delete mode 100644 arch/arm/mach-sa1100/include/mach/SA-1100.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/assabet.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/bitfield.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/collie.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/generic.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/h3xxx.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/irqs.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/jornada720.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/memory.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/mtd-xip.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/neponset.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/reset.h
 delete mode 100644 arch/arm/mach-sa1100/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-sa1100/jornada720.c
 delete mode 100644 arch/arm/mach-sa1100/jornada720_ssp.c
 delete mode 100644 arch/arm/mach-sa1100/neponset.c
 delete mode 100644 arch/arm/mach-sa1100/pm.c
 delete mode 100644 arch/arm/mach-sa1100/sleep.S
 delete mode 100644 arch/arm/mach-sa1100/ssp.c

diff --git a/Documentation/arch/arm/index.rst b/Documentation/arch/arm/index.rst
index b15621093f7a..a292b8ac41ce 100644
--- a/Documentation/arch/arm/index.rst
+++ b/Documentation/arch/arm/index.rst
@@ -48,9 +48,6 @@ SoC-specific documents
 
    pxa/mfp
 
-
-   sa1100/index
-
    stm32/stm32f746-overview
    stm32/overview
    stm32/stm32h743-overview
diff --git a/Documentation/arch/arm/sa1100/assabet.rst b/Documentation/arch/arm/sa1100/assabet.rst
deleted file mode 100644
index a761e128fb08..000000000000
--- a/Documentation/arch/arm/sa1100/assabet.rst
+++ /dev/null
@@ -1,301 +0,0 @@
-============================================
-The Intel Assabet (SA-1110 evaluation) board
-============================================
-
-Please see:
-http://developer.intel.com
-
-Also some notes from John G Dorsey <jd5q@andrew.cmu.edu>:
-http://www.cs.cmu.edu/~wearable/software/assabet.html
-
-
-Building the kernel
--------------------
-
-To build the kernel with current defaults::
-
-	make assabet_defconfig
-	make oldconfig
-	make zImage
-
-The resulting kernel image should be available in linux/arch/arm/boot/zImage.
-
-
-Installing a bootloader
------------------------
-
-A couple of bootloaders able to boot Linux on Assabet are available:
-
-BLOB (http://www.lartmaker.nl/lartware/blob/)
-
-   BLOB is a bootloader used within the LART project.  Some contributed
-   patches were merged into BLOB to add support for Assabet.
-
-Compaq's Bootldr + John Dorsey's patch for Assabet support
-(http://www.handhelds.org/Compaq/bootldr.html)
-(http://www.wearablegroup.org/software/bootldr/)
-
-   Bootldr is the bootloader developed by Compaq for the iPAQ Pocket PC.
-   John Dorsey has produced add-on patches to add support for Assabet and
-   the JFFS filesystem.
-
-RedBoot (http://sources.redhat.com/redboot/)
-
-   RedBoot is a bootloader developed by Red Hat based on the eCos RTOS
-   hardware abstraction layer.  It supports Assabet amongst many other
-   hardware platforms.
-
-RedBoot is currently the recommended choice since it's the only one to have
-networking support, and is the most actively maintained.
-
-Brief examples on how to boot Linux with RedBoot are shown below.  But first
-you need to have RedBoot installed in your flash memory.  A known to work
-precompiled RedBoot binary is available from the following location:
-
-- ftp://ftp.netwinder.org/users/n/nico/
-- ftp://ftp.arm.linux.org.uk/pub/linux/arm/people/nico/
-- ftp://ftp.handhelds.org/pub/linux/arm/sa-1100-patches/
-
-Look for redboot-assabet*.tgz.  Some installation infos are provided in
-redboot-assabet*.txt.
-
-
-Initial RedBoot configuration
------------------------------
-
-The commands used here are explained in The RedBoot User's Guide available
-on-line at http://sources.redhat.com/ecos/docs.html.
-Please refer to it for explanations.
-
-If you have a CF network card (my Assabet kit contained a CF+ LP-E from
-Socket Communications Inc.), you should strongly consider using it for TFTP
-file transfers.  You must insert it before RedBoot runs since it can't detect
-it dynamically.
-
-To initialize the flash directory::
-
-	fis init -f
-
-To initialize the non-volatile settings, like whether you want to use BOOTP or
-a static IP address, etc, use this command::
-
-	fconfig -i
-
-
-Writing a kernel image into flash
----------------------------------
-
-First, the kernel image must be loaded into RAM.  If you have the zImage file
-available on a TFTP server::
-
-	load zImage -r -b 0x100000
-
-If you rather want to use Y-Modem upload over the serial port::
-
-	load -m ymodem -r -b 0x100000
-
-To write it to flash::
-
-	fis create "Linux kernel" -b 0x100000 -l 0xc0000
-
-
-Booting the kernel
-------------------
-
-The kernel still requires a filesystem to boot.  A ramdisk image can be loaded
-as follows::
-
-	load ramdisk_image.gz -r -b 0x800000
-
-Again, Y-Modem upload can be used instead of TFTP by replacing the file name
-by '-y ymodem'.
-
-Now the kernel can be retrieved from flash like this::
-
-	fis load "Linux kernel"
-
-or loaded as described previously.  To boot the kernel::
-
-	exec -b 0x100000 -l 0xc0000
-
-The ramdisk image could be stored into flash as well, but there are better
-solutions for on-flash filesystems as mentioned below.
-
-
-Using JFFS2
------------
-
-Using JFFS2 (the Second Journalling Flash File System) is probably the most
-convenient way to store a writable filesystem into flash.  JFFS2 is used in
-conjunction with the MTD layer which is responsible for low-level flash
-management.  More information on the Linux MTD can be found on-line at:
-http://www.linux-mtd.infradead.org/.  A JFFS howto with some infos about
-creating JFFS/JFFS2 images is available from the same site.
-
-For instance, a sample JFFS2 image can be retrieved from the same FTP sites
-mentioned below for the precompiled RedBoot image.
-
-To load this file::
-
-	load sample_img.jffs2 -r -b 0x100000
-
-The result should look like::
-
-	RedBoot> load sample_img.jffs2 -r -b 0x100000
-	Raw file loaded 0x00100000-0x00377424
-
-Now we must know the size of the unallocated flash::
-
-	fis free
-
-Result::
-
-	RedBoot> fis free
-	  0x500E0000 .. 0x503C0000
-
-The values above may be different depending on the size of the filesystem and
-the type of flash.  See their usage below as an example and take care of
-substituting yours appropriately.
-
-We must determine some values::
-
-	size of unallocated flash:	0x503c0000 - 0x500e0000 = 0x2e0000
-	size of the filesystem image:	0x00377424 - 0x00100000 = 0x277424
-
-We want to fit the filesystem image of course, but we also want to give it all
-the remaining flash space as well.  To write it::
-
-	fis unlock -f 0x500E0000 -l 0x2e0000
-	fis erase -f 0x500E0000 -l 0x2e0000
-	fis write -b 0x100000 -l 0x277424 -f 0x500E0000
-	fis create "JFFS2" -n -f 0x500E0000 -l 0x2e0000
-
-Now the filesystem is associated to a MTD "partition" once Linux has discovered
-what they are in the boot process.  From Redboot, the 'fis list' command
-displays them::
-
-	RedBoot> fis list
-	Name              FLASH addr  Mem addr    Length      Entry point
-	RedBoot           0x50000000  0x50000000  0x00020000  0x00000000
-	RedBoot config    0x503C0000  0x503C0000  0x00020000  0x00000000
-	FIS directory     0x503E0000  0x503E0000  0x00020000  0x00000000
-	Linux kernel      0x50020000  0x00100000  0x000C0000  0x00000000
-	JFFS2             0x500E0000  0x500E0000  0x002E0000  0x00000000
-
-However Linux should display something like::
-
-	SA1100 flash: probing 32-bit flash bus
-	SA1100 flash: Found 2 x16 devices at 0x0 in 32-bit mode
-	Using RedBoot partition definition
-	Creating 5 MTD partitions on "SA1100 flash":
-	0x00000000-0x00020000 : "RedBoot"
-	0x00020000-0x000e0000 : "Linux kernel"
-	0x000e0000-0x003c0000 : "JFFS2"
-	0x003c0000-0x003e0000 : "RedBoot config"
-	0x003e0000-0x00400000 : "FIS directory"
-
-What's important here is the position of the partition we are interested in,
-which is the third one.  Within Linux, this correspond to /dev/mtdblock2.
-Therefore to boot Linux with the kernel and its root filesystem in flash, we
-need this RedBoot command::
-
-	fis load "Linux kernel"
-	exec -b 0x100000 -l 0xc0000 -c "root=/dev/mtdblock2"
-
-Of course other filesystems than JFFS might be used, like cramfs for example.
-You might want to boot with a root filesystem over NFS, etc.  It is also
-possible, and sometimes more convenient, to flash a filesystem directly from
-within Linux while booted from a ramdisk or NFS.  The Linux MTD repository has
-many tools to deal with flash memory as well, to erase it for example.  JFFS2
-can then be mounted directly on a freshly erased partition and files can be
-copied over directly.  Etc...
-
-
-RedBoot scripting
------------------
-
-All the commands above aren't so useful if they have to be typed in every
-time the Assabet is rebooted.  Therefore it's possible to automate the boot
-process using RedBoot's scripting capability.
-
-For example, I use this to boot Linux with both the kernel and the ramdisk
-images retrieved from a TFTP server on the network::
-
-	RedBoot> fconfig
-	Run script at boot: false true
-	Boot script:
-	Enter script, terminate with empty line
-	>> load zImage -r -b 0x100000
-	>> load ramdisk_ks.gz -r -b 0x800000
-	>> exec -b 0x100000 -l 0xc0000
-	>>
-	Boot script timeout (1000ms resolution): 3
-	Use BOOTP for network configuration: true
-	GDB connection port: 9000
-	Network debug at boot time: false
-	Update RedBoot non-volatile configuration - are you sure (y/n)? y
-
-Then, rebooting the Assabet is just a matter of waiting for the login prompt.
-
-
-
-Nicolas Pitre
-nico@fluxnic.net
-
-June 12, 2001
-
-
-Status of peripherals in -rmk tree (updated 14/10/2001)
--------------------------------------------------------
-
-Assabet:
- Serial ports:
-  Radio:		TX, RX, CTS, DSR, DCD, RI
-   - PM:		Not tested.
-   - COM:		TX, RX, CTS, DSR, DCD, RTS, DTR, PM
-   - PM:		Not tested.
-   - I2C:		Implemented, not fully tested.
-   - L3:		Fully tested, pass.
-   - PM:		Not tested.
-
- Video:
-  - LCD:		Fully tested.  PM
-
-   (LCD doesn't like being blanked with neponset connected)
-
-  - Video out:		Not fully
-
- Audio:
-  UDA1341:
-  -  Playback:		Fully tested, pass.
-  -  Record:		Implemented, not tested.
-  -  PM:			Not tested.
-
-  UCB1200:
-  -  Audio play:	Implemented, not heavily tested.
-  -  Audio rec:		Implemented, not heavily tested.
-  -  Telco audio play:	Implemented, not heavily tested.
-  -  Telco audio rec:	Implemented, not heavily tested.
-  -  POTS control:	No
-  -  Touchscreen:	Yes
-  -  PM:		Not tested.
-
- Other:
-  - PCMCIA:
-  - LPE:		Fully tested, pass.
-  - USB:		No
-  - IRDA:
-  - SIR:		Fully tested, pass.
-  - FIR:		Fully tested, pass.
-  - PM:			Not tested.
-
-Neponset:
- Serial ports:
-  - COM1,2:		TX, RX, CTS, DSR, DCD, RTS, DTR
-  - PM:			Not tested.
-  - USB:		Implemented, not heavily tested.
-  - PCMCIA:		Implemented, not heavily tested.
-  - CF:			Implemented, not heavily tested.
-  - PM:			Not tested.
-
-More stuff can be found in the -np (Nicolas Pitre's) tree.
diff --git a/Documentation/arch/arm/sa1100/cerf.rst b/Documentation/arch/arm/sa1100/cerf.rst
deleted file mode 100644
index 7fa71b609bf9..000000000000
--- a/Documentation/arch/arm/sa1100/cerf.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-==============
-CerfBoard/Cube
-==============
-
-*** The StrongARM version of the CerfBoard/Cube has been discontinued ***
-
-The Intrinsyc CerfBoard is a StrongARM 1110-based computer on a board
-that measures approximately 2" square. It includes an Ethernet
-controller, an RS232-compatible serial port, a USB function port, and
-one CompactFlash+ slot on the back. Pictures can be found at the
-Intrinsyc website, http://www.intrinsyc.com.
-
-This document describes the support in the Linux kernel for the
-Intrinsyc CerfBoard.
-
-Supported in this version
-=========================
-
-   - CompactFlash+ slot (select PCMCIA in General Setup and any options
-     that may be required)
-   - Onboard Crystal CS8900 Ethernet controller (Cerf CS8900A support in
-     Network Devices)
-   - Serial ports with a serial console (hardcoded to 38400 8N1)
-
-In order to get this kernel onto your Cerf, you need a server that runs
-both BOOTP and TFTP. Detailed instructions should have come with your
-evaluation kit on how to use the bootloader. This series of commands
-will suffice::
-
-   make ARCH=arm CROSS_COMPILE=arm-linux- cerfcube_defconfig
-   make ARCH=arm CROSS_COMPILE=arm-linux- zImage
-   make ARCH=arm CROSS_COMPILE=arm-linux- modules
-   cp arch/arm/boot/zImage <TFTP directory>
-
-support@intrinsyc.com
diff --git a/Documentation/arch/arm/sa1100/index.rst b/Documentation/arch/arm/sa1100/index.rst
deleted file mode 100644
index c9aed43280ff..000000000000
--- a/Documentation/arch/arm/sa1100/index.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-.. SPDX-License-Identifier: GPL-2.0
-
-====================
-Intel StrongARM 1100
-====================
-
-.. toctree::
-    :maxdepth: 1
-
-    assabet
-    cerf
-    lart
-    serial_uart
diff --git a/Documentation/arch/arm/sa1100/lart.rst b/Documentation/arch/arm/sa1100/lart.rst
deleted file mode 100644
index 94c0568d1095..000000000000
--- a/Documentation/arch/arm/sa1100/lart.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-====================================
-Linux Advanced Radio Terminal (LART)
-====================================
-
-The LART is a small (7.5 x 10cm) SA-1100 board, designed for embedded
-applications. It has 32 MB DRAM, 4MB Flash ROM, double RS232 and all
-other StrongARM-gadgets. Almost all SA signals are directly accessible
-through a number of connectors. The powersupply accepts voltages
-between 3.5V and 16V and is overdimensioned to support a range of
-daughterboards. A quad Ethernet / IDE / PS2 / sound daughterboard
-is under development, with plenty of others in different stages of
-planning.
-
-The hardware designs for this board have been released under an open license;
-see the LART page at http://www.lartmaker.nl/ for more information.
diff --git a/Documentation/arch/arm/sa1100/serial_uart.rst b/Documentation/arch/arm/sa1100/serial_uart.rst
deleted file mode 100644
index ea983642b9be..000000000000
--- a/Documentation/arch/arm/sa1100/serial_uart.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-==================
-SA1100 serial port
-==================
-
-The SA1100 serial port had its major/minor numbers officially assigned::
-
-  > Date: Sun, 24 Sep 2000 21:40:27 -0700
-  > From: H. Peter Anvin <hpa@transmeta.com>
-  > To: Nicolas Pitre <nico@CAM.ORG>
-  > Cc: Device List Maintainer <device@lanana.org>
-  > Subject: Re: device
-  >
-  > Okay.  Note that device numbers 204 and 205 are used for "low density
-  > serial devices", so you will have a range of minors on those majors (the
-  > tty device layer handles this just fine, so you don't have to worry about
-  > doing anything special.)
-  >
-  > So your assignments are:
-  >
-  > 204 char        Low-density serial ports
-  >                   5 = /dev/ttySA0               SA1100 builtin serial port 0
-  >                   6 = /dev/ttySA1               SA1100 builtin serial port 1
-  >                   7 = /dev/ttySA2               SA1100 builtin serial port 2
-  >
-  > 205 char        Low-density serial ports (alternate device)
-  >                   5 = /dev/cusa0                Callout device for ttySA0
-  >                   6 = /dev/cusa1                Callout device for ttySA1
-  >                   7 = /dev/cusa2                Callout device for ttySA2
-  >
-
-You must create those inodes in /dev on the root filesystem used
-by your SA1100-based device::
-
-	mknod ttySA0 c 204 5
-	mknod ttySA1 c 204 6
-	mknod ttySA2 c 204 7
-	mknod cusa0 c 205 5
-	mknod cusa1 c 205 6
-	mknod cusa2 c 205 7
-
-In addition to the creation of the appropriate device nodes above, you
-must ensure your user space applications make use of the correct device
-name. The classic example is the content of the /etc/inittab file where
-you might have a getty process started on ttyS0.
-
-In this case:
-
-- replace occurrences of ttyS0 with ttySA0, ttyS1 with ttySA1, etc.
-
-- don't forget to add 'ttySA0', 'console', or the appropriate tty name
-  in /etc/securetty for root to be allowed to login as well.
diff --git a/MAINTAINERS b/MAINTAINERS
index 6215fcb07770..fd213c4bc257 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2977,14 +2977,6 @@ F:	arch/arm/boot/dts/hisilicon/
 F:	arch/arm/mach-hisi/
 F:	arch/arm64/boot/dts/hisilicon/
 
-ARM/HP JORNADA 7XX MACHINE SUPPORT
-M:	Kristoffer Ericson <kristoffer.ericson@gmail.com>
-S:	Maintained
-W:	www.jlime.com
-T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git
-F:	arch/arm/mach-sa1100/include/mach/jornada720.h
-F:	arch/arm/mach-sa1100/jornada720.c
-
 ARM/HPE GXP ARCHITECTURE
 M:	Jean-Marie Verdun <verdun@hpe.com>
 M:	Nick Hawkins <nick.hawkins@hpe.com>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index ffbc7f386131..7f4c2973d630 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -161,7 +161,7 @@ config ARM
 	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_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
+	select USE_OF if !(ARCH_FOOTBRIDGE || ARCH_RPC)
 	# Above selects are sorted alphabetically; please add new ones
 	# according to that.  Thanks.
 	help
@@ -261,9 +261,6 @@ config GENERIC_ISA_DMA
 config FIQ
 	bool
 
-config ARCH_MTD_XIP
-	bool
-
 config ARM_PATCH_PHYS_VIRT
 	bool "Patch physical to virtual translations at runtime" if !ARCH_MULTIPLATFORM
 	default y
@@ -301,7 +298,7 @@ config PHYS_OFFSET
 	default 0x00000000 if ARCH_FOOTBRIDGE
 	default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
 	default 0xa0000000 if ARCH_PXA
-	default 0xc0000000 if ARCH_EP93XX || ARCH_SA1100
+	default 0xc0000000 if ARCH_EP93XX
 	default 0
 	help
 	  Please provide the physical address corresponding to the
@@ -341,7 +338,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_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
+	depends on MMU && !(ARCH_FOOTBRIDGE || ARCH_RPC)
 	default y
 	help
 	  In general, all Arm machines can be supported in a single
@@ -445,8 +442,6 @@ source "arch/arm/mach-s3c/Kconfig"
 
 source "arch/arm/mach-s5pv210/Kconfig"
 
-source "arch/arm/mach-sa1100/Kconfig"
-
 source "arch/arm/mach-shmobile/Kconfig"
 
 source "arch/arm/mach-socfpga/Kconfig"
@@ -1201,7 +1196,7 @@ config ARCH_SELECT_MEMORY_MODEL
 	def_bool y
 
 config ARCH_FLATMEM_ENABLE
-	def_bool !(ARCH_RPC || ARCH_SA1100)
+	def_bool !ARCH_RPC
 
 config ARCH_SPARSEMEM_ENABLE
 	def_bool !ARCH_FOOTBRIDGE
@@ -1293,7 +1288,6 @@ config ARM_MODULE_PLTS
 config ARCH_FORCE_MAX_ORDER
 	int "Order of maximal physically contiguous allocations"
 	default "11" if SOC_AM33XX
-	default "8" if SA1111
 	default "10"
 	help
 	  The kernel page allocator limits the size of maximal physically
@@ -1605,7 +1599,7 @@ config ARCH_DEFAULT_CRASH_DUMP
 
 config AUTO_ZRELADDR
 	bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
-	default !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
+	default !(ARCH_FOOTBRIDGE || ARCH_RPC)
 	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 366f162e147d..ad0feced4369 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -1048,14 +1048,6 @@ choice
 		  their output to UART 3. The port must have been initialised
 		  by the boot-loader before use.
 
-	config DEBUG_SA1100
-		depends on ARCH_SA1100
-		bool "Use SA1100 UARTs for low-level debug"
-		help
-		  Say Y here if you want kernel low-level debugging support
-		  on SA-11x0 UART ports. The kernel will check for the first
-		  enabled UART in a sequence 3-1-2.
-
 	config DEBUG_SD5203_UART
 		bool "Hisilicon SD5203 Debug UART"
 		depends on ARCH_SD5203
@@ -1479,7 +1471,6 @@ config DEBUG_UART_FLOW_CONTROL
 
 config DEBUG_LL_INCLUDE
 	string
-	default "debug/sa1100.S" if DEBUG_SA1100
 	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
 	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
 	default "debug/at91.S" if DEBUG_AT91_UART
@@ -1807,7 +1798,7 @@ config DEBUG_UART_8250_PALMCHIP
 config DEBUG_UNCOMPRESS
 	bool "Enable decompressor debugging via DEBUG_LL output"
 	depends on !ARCH_MULTIPLATFORM
-	depends on !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
+	depends on !(ARCH_FOOTBRIDGE || ARCH_RPC)
 	depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
 		     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
 		     !DEBUG_BRCMSTB_UART && !DEBUG_SEMIHOSTING
@@ -1817,7 +1808,7 @@ config DEBUG_UNCOMPRESS
 
 config UNCOMPRESS_INCLUDE
 	string
-	default "mach/uncompress.h" if ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100
+	default "mach/uncompress.h" if ARCH_FOOTBRIDGE || ARCH_RPC
 	default "debug/uncompress.h"
 
 config EARLY_PRINTK
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 573813ef5e77..ea3da21202c8 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -162,10 +162,6 @@ CHECKFLAGS	+= -D__arm__
 textofs-y	:= 0x00008000
 # RTD1195 has Boot ROM at start of address space
 textofs-$(CONFIG_ARCH_REALTEK)  := 0x00108000
-# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
-ifeq ($(CONFIG_ARCH_SA1100),y)
-textofs-$(CONFIG_SA1111) := 0x00208000
-endif
 textofs-$(CONFIG_ARCH_QCOM_RESERVE_SMEM) := 0x00208000
 textofs-$(CONFIG_ARCH_MESON) := 0x00208000
 textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
@@ -214,7 +210,6 @@ machine-$(CONFIG_ARCH_ROCKCHIP)		+= rockchip
 machine-$(CONFIG_ARCH_RPC)		+= rpc
 machine-$(CONFIG_PLAT_SAMSUNG)		+= s3c
 machine-$(CONFIG_ARCH_S5PV210)		+= s5pv210
-machine-$(CONFIG_ARCH_SA1100)		+= sa1100
 machine-$(CONFIG_ARCH_RENESAS)	 	+= shmobile
 machine-$(CONFIG_ARCH_INTEL_SOCFPGA)	+= socfpga
 machine-$(CONFIG_ARCH_STI)		+= sti
@@ -232,7 +227,6 @@ machine-$(CONFIG_PLAT_SPEAR)		+= spear
 # these three are mutually exclusive
 machdirs-$(CONFIG_ARCH_FOOTBRIDGE)	+= arch/arm/mach-footbridge
 machdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
-machdirs-$(CONFIG_ARCH_SA1100)		+= arch/arm/mach-sa1100
 KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
 
 # The byte offset of the kernel image in RAM from the start of RAM.
diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
index f3443f7d7b02..a1a1f4bec783 100644
--- a/arch/arm/boot/bootp/Makefile
+++ b/arch/arm/boot/bootp/Makefile
@@ -20,7 +20,6 @@ PARAMS_PHYS := $(call add_hex, $(PHYS_OFFSET), 0x100)
 
 # guess an initrd location if possible
 initrd_offset-$(CONFIG_ARCH_FOOTBRIDGE)	+= 0x00800000
-initrd_offset-$(CONFIG_ARCH_SA1100)	+= 0x00800000
 initrd_offset-$(CONFIG_ARCH_RPC)	+= 0x08000000
 INITRD_OFFSET := $(initrd_offset-y)
 ifdef INITRD_OFFSET
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index e3f550d62857..d8d81ba741a2 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -29,10 +29,6 @@ ifeq ($(CONFIG_ARCH_ACORN),y)
 OBJS		+= ll_char_wr.o font.o
 endif
 
-ifeq ($(CONFIG_ARCH_SA1100),y)
-OBJS		+= head-sa1100.o
-endif
-
 ifeq ($(CONFIG_CPU_XSCALE),y)
 OBJS		+= head-xscale.o
 endif
diff --git a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S
deleted file mode 100644
index 23eae1a65064..000000000000
--- a/arch/arm/boot/compressed/head-sa1100.S
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* 
- * linux/arch/arm/boot/compressed/head-sa1100.S
- * 
- * Copyright (C) 1999 Nicolas Pitre <nico@fluxnic.net>
- * 
- * SA1100 specific tweaks.  This is merged into head.S by the linker.
- *
- */
-
-#include <linux/linkage.h>
-#include <asm/mach-types.h>
-
-		.section        ".start", "ax"
-		.arch	armv4
-
-__SA1100_start:
-
-		@ Preserve r8/r7 i.e. kernel entry values
-#ifdef CONFIG_SA1100_COLLIE
-		mov	r7, #MACH_TYPE_COLLIE
-#endif
-		mrc	p15, 0, r0, c1, c0, 0	@ read control reg
-		ands	r0, r0, #0x0d
-		beq	99f
-
-		@ Data cache might be active.
-		@ Be sure to flush kernel binary out of the cache,
-		@ whatever state it is, before it is turned off.
-		@ This is done by fetching through currently executed
-		@ memory to be sure we hit the same cache.
-		bic	r2, pc, #0x1f
-		add	r3, r2, #0x4000		@ 16 kb is quite enough...
-1:		ldr	r0, [r2], #32
-		teq	r2, r3
-		bne	1b
-		mcr	p15, 0, r0, c7, c10, 4	@ drain WB
-		mcr	p15, 0, r0, c7, c7, 0	@ flush I & D caches
-
-		@ disabling MMU and caches
-		mrc	p15, 0, r0, c1, c0, 0	@ read control reg
-		bic	r0, r0, #0x0d		@ clear WB, DC, MMU
-		bic	r0, r0, #0x1000		@ clear Icache
-		mcr	p15, 0, r0, c1, c0, 0
-99:
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 9f406e9c0ea6..845abffbc2d6 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -64,17 +64,10 @@
 		busyuart \tmp, \rb
 		.endm
 
-#if defined(CONFIG_ARCH_SA1100)
-		.macro	loadsp, rb, tmp1, tmp2
-		mov	\rb, #0x80000000	@ physical base address
-		add	\rb, \rb, #0x00010000	@ Ser1
-		.endm
-#else
 		.macro	loadsp,	rb, tmp1, tmp2
 		addruart \rb, \tmp1, \tmp2
 		.endm
 #endif
-#endif
 #endif
 
 		.macro	kputc,val
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index d2fdb1796f48..d72dccf6f3c2 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -1,14 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
-config SA1111
-	bool
-	select ZONE_DMA if ARCH_SA1100
-
 config KRAIT_L2_ACCESSORS
 	bool
 
-config SHARP_LOCOMO
-	bool
-
 config SHARP_PARAM
 	bool
 
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
index 9733381074e0..e1bcc250874f 100644
--- a/arch/arm/common/Makefile
+++ b/arch/arm/common/Makefile
@@ -5,9 +5,7 @@
 
 obj-y				+= firmware.o
 
-obj-$(CONFIG_SA1111)		+= sa1111.o
 obj-$(CONFIG_KRAIT_L2_ACCESSORS) += krait-l2-accessors.o
-obj-$(CONFIG_SHARP_LOCOMO)	+= locomo.o
 obj-$(CONFIG_SHARP_PARAM)	+= sharpsl_param.o
 obj-$(CONFIG_SHARP_SCOOP)	+= scoop.o
 obj-$(CONFIG_CPU_V7)		+= secure_cntvoff.o
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
deleted file mode 100644
index 55e360452828..000000000000
--- a/arch/arm/common/locomo.c
+++ /dev/null
@@ -1,886 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/common/locomo.c
- *
- * Sharp LoCoMo support
- *
- * This file contains all generic LoCoMo support.
- *
- * All initialization functions provided here are intended to be called
- * from machine specific code with proper arguments when required.
- *
- * Based on sa1111.c
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/platform_device.h>
-#include <linux/slab.h>
-#include <linux/spinlock.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/mach/irq.h>
-
-#include <asm/hardware/locomo.h>
-
-/* LoCoMo Interrupts */
-#define IRQ_LOCOMO_KEY		(0)
-#define IRQ_LOCOMO_GPIO		(1)
-#define IRQ_LOCOMO_LT		(2)
-#define IRQ_LOCOMO_SPI		(3)
-
-/* M62332 output channel selection */
-#define M62332_EVR_CH	1	/* M62332 volume channel number  */
-				/*   0 : CH.1 , 1 : CH. 2        */
-/* DAC send data */
-#define	M62332_SLAVE_ADDR	0x4e	/* Slave address  */
-#define	M62332_W_BIT		0x00	/* W bit (0 only) */
-#define	M62332_SUB_ADDR		0x00	/* Sub address    */
-#define	M62332_A_BIT		0x00	/* A bit (0 only) */
-
-/* DAC setup and hold times (expressed in us) */
-#define DAC_BUS_FREE_TIME	5	/*   4.7 us */
-#define DAC_START_SETUP_TIME	5	/*   4.7 us */
-#define DAC_STOP_SETUP_TIME	4	/*   4.0 us */
-#define DAC_START_HOLD_TIME	5	/*   4.7 us */
-#define DAC_SCL_LOW_HOLD_TIME	5	/*   4.7 us */
-#define DAC_SCL_HIGH_HOLD_TIME	4	/*   4.0 us */
-#define DAC_DATA_SETUP_TIME	1	/*   250 ns */
-#define DAC_DATA_HOLD_TIME	1	/*   300 ns */
-#define DAC_LOW_SETUP_TIME	1	/*   300 ns */
-#define DAC_HIGH_SETUP_TIME	1	/*  1000 ns */
-
-/* the following is the overall data for the locomo chip */
-struct locomo {
-	struct device *dev;
-	unsigned long phys;
-	unsigned int irq;
-	int irq_base;
-	spinlock_t lock;
-	void __iomem *base;
-#ifdef CONFIG_PM
-	void *saved_state;
-#endif
-};
-
-static const struct bus_type locomo_bus_type;
-
-struct locomo_dev_info {
-	unsigned long	offset;
-	unsigned long	length;
-	unsigned int	devid;
-	unsigned int	irq[1];
-	const char *	name;
-};
-
-/* All the locomo devices.  If offset is non-zero, the mapbase for the
- * locomo_dev will be set to the chip base plus offset.  If offset is
- * zero, then the mapbase for the locomo_dev will be set to zero.  An
- * offset of zero means the device only uses GPIOs or other helper
- * functions inside this file */
-static struct locomo_dev_info locomo_devices[] = {
-	{
-		.devid 		= LOCOMO_DEVID_KEYBOARD,
-		.irq		= { IRQ_LOCOMO_KEY },
-		.name		= "locomo-keyboard",
-		.offset		= LOCOMO_KEYBOARD,
-		.length		= 16,
-	},
-	{
-		.devid		= LOCOMO_DEVID_FRONTLIGHT,
-		.irq		= {},
-		.name		= "locomo-frontlight",
-		.offset		= LOCOMO_FRONTLIGHT,
-		.length		= 8,
-
-	},
-	{
-		.devid		= LOCOMO_DEVID_BACKLIGHT,
-		.irq		= {},
-		.name		= "locomo-backlight",
-		.offset		= LOCOMO_BACKLIGHT,
-		.length		= 8,
-	},
-	{
-		.devid		= LOCOMO_DEVID_AUDIO,
-		.irq		= {},
-		.name		= "locomo-audio",
-		.offset		= LOCOMO_AUDIO,
-		.length		= 4,
-	},
-	{
-		.devid		= LOCOMO_DEVID_LED,
-		.irq 		= {},
-		.name		= "locomo-led",
-		.offset		= LOCOMO_LED,
-		.length		= 8,
-	},
-	{
-		.devid		= LOCOMO_DEVID_UART,
-		.irq		= {},
-		.name		= "locomo-uart",
-		.offset		= 0,
-		.length		= 0,
-	},
-	{
-		.devid		= LOCOMO_DEVID_SPI,
-		.irq		= {},
-		.name		= "locomo-spi",
-		.offset		= LOCOMO_SPI,
-		.length		= 0x30,
-	},
-};
-
-static void locomo_handler(struct irq_desc *desc)
-{
-	struct locomo *lchip = irq_desc_get_handler_data(desc);
-	int req, i;
-
-	/* Acknowledge the parent IRQ */
-	desc->irq_data.chip->irq_ack(&desc->irq_data);
-
-	/* check why this interrupt was generated */
-	req = locomo_readl(lchip->base + LOCOMO_ICR) & 0x0f00;
-
-	if (req) {
-		unsigned int irq;
-
-		/* generate the next interrupt(s) */
-		irq = lchip->irq_base;
-		for (i = 0; i <= 3; i++, irq++) {
-			if (req & (0x0100 << i)) {
-				generic_handle_irq(irq);
-			}
-
-		}
-	}
-}
-
-static void locomo_ack_irq(struct irq_data *d)
-{
-}
-
-static void locomo_mask_irq(struct irq_data *d)
-{
-	struct locomo *lchip = irq_data_get_irq_chip_data(d);
-	unsigned int r;
-	r = locomo_readl(lchip->base + LOCOMO_ICR);
-	r &= ~(0x0010 << (d->irq - lchip->irq_base));
-	locomo_writel(r, lchip->base + LOCOMO_ICR);
-}
-
-static void locomo_unmask_irq(struct irq_data *d)
-{
-	struct locomo *lchip = irq_data_get_irq_chip_data(d);
-	unsigned int r;
-	r = locomo_readl(lchip->base + LOCOMO_ICR);
-	r |= (0x0010 << (d->irq - lchip->irq_base));
-	locomo_writel(r, lchip->base + LOCOMO_ICR);
-}
-
-static struct irq_chip locomo_chip = {
-	.name		= "LOCOMO",
-	.irq_ack	= locomo_ack_irq,
-	.irq_mask	= locomo_mask_irq,
-	.irq_unmask	= locomo_unmask_irq,
-};
-
-static void locomo_setup_irq(struct locomo *lchip)
-{
-	int irq = lchip->irq_base;
-
-	/*
-	 * Install handler for IRQ_LOCOMO_HW.
-	 */
-	irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
-	irq_set_chained_handler_and_data(lchip->irq, locomo_handler, lchip);
-
-	/* Install handlers for IRQ_LOCOMO_* */
-	for ( ; irq <= lchip->irq_base + 3; irq++) {
-		irq_set_chip_and_handler(irq, &locomo_chip, handle_level_irq);
-		irq_set_chip_data(irq, lchip);
-		irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
-	}
-}
-
-
-static void locomo_dev_release(struct device *_dev)
-{
-	struct locomo_dev *dev = LOCOMO_DEV(_dev);
-
-	kfree(dev);
-}
-
-static int
-locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info)
-{
-	struct locomo_dev *dev;
-	int ret;
-
-	dev = kzalloc_obj(struct locomo_dev);
-	if (!dev) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	/*
-	 * If the parent device has a DMA mask associated with it,
-	 * propagate it down to the children.
-	 */
-	if (lchip->dev->dma_mask) {
-		dev->dma_mask = *lchip->dev->dma_mask;
-		dev->dev.dma_mask = &dev->dma_mask;
-	}
-
-	dev_set_name(&dev->dev, "%s", info->name);
-	dev->devid	 = info->devid;
-	dev->dev.parent  = lchip->dev;
-	dev->dev.bus     = &locomo_bus_type;
-	dev->dev.release = locomo_dev_release;
-	dev->dev.coherent_dma_mask = lchip->dev->coherent_dma_mask;
-
-	if (info->offset)
-		dev->mapbase = lchip->base + info->offset;
-	else
-		dev->mapbase = 0;
-	dev->length = info->length;
-
-	dev->irq[0] = (lchip->irq_base == NO_IRQ) ?
-			NO_IRQ : lchip->irq_base + info->irq[0];
-
-	ret = device_register(&dev->dev);
-	if (ret) {
- out:
-		kfree(dev);
-	}
-	return ret;
-}
-
-#ifdef CONFIG_PM
-
-struct locomo_save_data {
-	u16	LCM_GPO;
-	u16	LCM_SPICT;
-	u16	LCM_GPE;
-	u16	LCM_ASD;
-	u16	LCM_SPIMD;
-};
-
-static int locomo_suspend(struct platform_device *dev, pm_message_t state)
-{
-	struct locomo *lchip = platform_get_drvdata(dev);
-	struct locomo_save_data *save;
-	unsigned long flags;
-
-	save = kmalloc_obj(struct locomo_save_data);
-	if (!save)
-		return -ENOMEM;
-
-	lchip->saved_state = save;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-
-	save->LCM_GPO     = locomo_readl(lchip->base + LOCOMO_GPO);	/* GPIO */
-	locomo_writel(0x00, lchip->base + LOCOMO_GPO);
-	save->LCM_SPICT   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT);	/* SPI */
-	locomo_writel(0x40, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
-	save->LCM_GPE     = locomo_readl(lchip->base + LOCOMO_GPE);	/* GPIO */
-	locomo_writel(0x00, lchip->base + LOCOMO_GPE);
-	save->LCM_ASD     = locomo_readl(lchip->base + LOCOMO_ASD);	/* ADSTART */
-	locomo_writel(0x00, lchip->base + LOCOMO_ASD);
-	save->LCM_SPIMD   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);	/* SPI */
-	locomo_writel(0x3C14, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
-
-	locomo_writel(0x00, lchip->base + LOCOMO_PAIF);
-	locomo_writel(0x00, lchip->base + LOCOMO_DAC);
-	locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC);
-
-	if ((locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88))
-		locomo_writel(0x00, lchip->base + LOCOMO_C32K); 	/* CLK32 off */
-	else
-		/* 18MHz already enabled, so no wait */
-		locomo_writel(0xc1, lchip->base + LOCOMO_C32K); 	/* CLK32 on */
-
-	locomo_writel(0x00, lchip->base + LOCOMO_TADC);		/* 18MHz clock off*/
-	locomo_writel(0x00, lchip->base + LOCOMO_AUDIO + LOCOMO_ACC);			/* 22MHz/24MHz clock off */
-	locomo_writel(0x00, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);			/* FL */
-
-	spin_unlock_irqrestore(&lchip->lock, flags);
-
-	return 0;
-}
-
-static int locomo_resume(struct platform_device *dev)
-{
-	struct locomo *lchip = platform_get_drvdata(dev);
-	struct locomo_save_data *save;
-	unsigned long r;
-	unsigned long flags;
-
-	save = lchip->saved_state;
-	if (!save)
-		return 0;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-
-	locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO);
-	locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
-	locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE);
-	locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD);
-	locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
-
-	locomo_writel(0x00, lchip->base + LOCOMO_C32K);
-	locomo_writel(0x90, lchip->base + LOCOMO_TADC);
-
-	locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KSC);
-	r = locomo_readl(lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
-	r &= 0xFEFF;
-	locomo_writel(r, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
-	locomo_writel(0x1, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KCMD);
-
-	spin_unlock_irqrestore(&lchip->lock, flags);
-
-	lchip->saved_state = NULL;
-	kfree(save);
-
-	return 0;
-}
-#endif
-
-static int
-__locomo_probe(struct device *me, struct resource *mem, int irq)
-{
-	struct locomo_platform_data *pdata = me->platform_data;
-	struct locomo *lchip;
-	unsigned long r;
-	int i, ret = -ENODEV;
-
-	lchip = kzalloc_obj(struct locomo);
-	if (!lchip)
-		return -ENOMEM;
-
-	spin_lock_init(&lchip->lock);
-
-	lchip->dev = me;
-	dev_set_drvdata(lchip->dev, lchip);
-
-	lchip->phys = mem->start;
-	lchip->irq = irq;
-	lchip->irq_base = (pdata) ? pdata->irq_base : NO_IRQ;
-
-	/*
-	 * Map the whole region.  This also maps the
-	 * registers for our children.
-	 */
-	lchip->base = ioremap(mem->start, PAGE_SIZE);
-	if (!lchip->base) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	/* locomo initialize */
-	locomo_writel(0, lchip->base + LOCOMO_ICR);
-	/* KEYBOARD */
-	locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
-
-	/* GPIO */
-	locomo_writel(0, lchip->base + LOCOMO_GPO);
-	locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
-			, lchip->base + LOCOMO_GPE);
-	locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
-			, lchip->base + LOCOMO_GPD);
-	locomo_writel(0, lchip->base + LOCOMO_GIE);
-
-	/* Frontlight */
-	locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
-	locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
-
-	/* Longtime timer */
-	locomo_writel(0, lchip->base + LOCOMO_LTINT);
-	/* SPI */
-	locomo_writel(0, lchip->base + LOCOMO_SPI + LOCOMO_SPIIE);
-
-	locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD);
-	r = locomo_readl(lchip->base + LOCOMO_ASD);
-	r |= 0x8000;
-	locomo_writel(r, lchip->base + LOCOMO_ASD);
-
-	locomo_writel(6 + 8 + 320 + 30 - 10 - 128 + 4, lchip->base + LOCOMO_HSD);
-	r = locomo_readl(lchip->base + LOCOMO_HSD);
-	r |= 0x8000;
-	locomo_writel(r, lchip->base + LOCOMO_HSD);
-
-	locomo_writel(128 / 8, lchip->base + LOCOMO_HSC);
-
-	/* XON */
-	locomo_writel(0x80, lchip->base + LOCOMO_TADC);
-	udelay(1000);
-	/* CLK9MEN */
-	r = locomo_readl(lchip->base + LOCOMO_TADC);
-	r |= 0x10;
-	locomo_writel(r, lchip->base + LOCOMO_TADC);
-	udelay(100);
-
-	/* init DAC */
-	r = locomo_readl(lchip->base + LOCOMO_DAC);
-	r |= LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
-	locomo_writel(r, lchip->base + LOCOMO_DAC);
-
-	r = locomo_readl(lchip->base + LOCOMO_VER);
-	printk(KERN_INFO "LoCoMo Chip: %lu%lu\n", (r >> 8), (r & 0xff));
-
-	/*
-	 * The interrupt controller must be initialised before any
-	 * other device to ensure that the interrupts are available.
-	 */
-	if (lchip->irq != NO_IRQ && lchip->irq_base != NO_IRQ)
-		locomo_setup_irq(lchip);
-
-	for (i = 0; i < ARRAY_SIZE(locomo_devices); i++)
-		locomo_init_one_child(lchip, &locomo_devices[i]);
-	return 0;
-
- out:
-	kfree(lchip);
-	return ret;
-}
-
-static int locomo_remove_child(struct device *dev, void *data)
-{
-	device_unregister(dev);
-	return 0;
-} 
-
-static void __locomo_remove(struct locomo *lchip)
-{
-	device_for_each_child(lchip->dev, NULL, locomo_remove_child);
-
-	if (lchip->irq != NO_IRQ) {
-		irq_set_chained_handler_and_data(lchip->irq, NULL, NULL);
-	}
-
-	iounmap(lchip->base);
-	kfree(lchip);
-}
-
-/**
- *	locomo_probe - probe for a single LoCoMo chip.
- *	@dev: platform device
- *
- *	Probe for a LoCoMo chip.  This must be called
- *	before any other locomo-specific code.
- *
- *	Returns:
- *	* %-EINVAL	- device's IORESOURCE_MEM not found
- *	* %-ENXIO	- could not allocate an IRQ for the device
- *	* %-ENODEV	- device not found.
- *	* %-EBUSY	- physical address already marked in-use.
- *	* %-ENOMEM	- could not allocate or iomap memory.
- *	* %0		- successful.
- */
-static int locomo_probe(struct platform_device *dev)
-{
-	struct resource *mem;
-	int irq;
-
-	mem = platform_get_resource(dev, IORESOURCE_MEM, 0);
-	if (!mem)
-		return -EINVAL;
-	irq = platform_get_irq(dev, 0);
-	if (irq < 0)
-		return -ENXIO;
-
-	return __locomo_probe(&dev->dev, mem, irq);
-}
-
-static void locomo_remove(struct platform_device *dev)
-{
-	struct locomo *lchip = platform_get_drvdata(dev);
-
-	if (lchip) {
-		__locomo_remove(lchip);
-		platform_set_drvdata(dev, NULL);
-	}
-}
-
-/*
- *	Not sure if this should be on the system bus or not yet.
- *	We really want some way to register a system device at
- *	the per-machine level, and then have this driver pick
- *	up the registered devices.
- */
-static struct platform_driver locomo_device_driver = {
-	.probe		= locomo_probe,
-	.remove		= locomo_remove,
-#ifdef CONFIG_PM
-	.suspend	= locomo_suspend,
-	.resume		= locomo_resume,
-#endif
-	.driver		= {
-		.name	= "locomo",
-	},
-};
-
-/*
- *	Get the parent device driver (us) structure
- *	from a child function device
- */
-static inline struct locomo *locomo_chip_driver(struct locomo_dev *ldev)
-{
-	return (struct locomo *)dev_get_drvdata(ldev->dev.parent);
-}
-
-void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir)
-{
-	struct locomo *lchip = dev_get_drvdata(dev);
-	unsigned long flags;
-	unsigned int r;
-
-	if (!lchip)
-		return;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-
-	r = locomo_readl(lchip->base + LOCOMO_GPD);
-	if (dir)
-		r |= bits;
-	else
-		r &= ~bits;
-	locomo_writel(r, lchip->base + LOCOMO_GPD);
-
-	r = locomo_readl(lchip->base + LOCOMO_GPE);
-	if (dir)
-		r |= bits;
-	else
-		r &= ~bits;
-	locomo_writel(r, lchip->base + LOCOMO_GPE);
-
-	spin_unlock_irqrestore(&lchip->lock, flags);
-}
-EXPORT_SYMBOL(locomo_gpio_set_dir);
-
-int locomo_gpio_read_level(struct device *dev, unsigned int bits)
-{
-	struct locomo *lchip = dev_get_drvdata(dev);
-	unsigned long flags;
-	unsigned int ret;
-
-	if (!lchip)
-		return -ENODEV;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-	ret = locomo_readl(lchip->base + LOCOMO_GPL);
-	spin_unlock_irqrestore(&lchip->lock, flags);
-
-	ret &= bits;
-	return ret;
-}
-EXPORT_SYMBOL(locomo_gpio_read_level);
-
-int locomo_gpio_read_output(struct device *dev, unsigned int bits)
-{
-	struct locomo *lchip = dev_get_drvdata(dev);
-	unsigned long flags;
-	unsigned int ret;
-
-	if (!lchip)
-		return -ENODEV;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-	ret = locomo_readl(lchip->base + LOCOMO_GPO);
-	spin_unlock_irqrestore(&lchip->lock, flags);
-
-	ret &= bits;
-	return ret;
-}
-EXPORT_SYMBOL(locomo_gpio_read_output);
-
-void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set)
-{
-	struct locomo *lchip = dev_get_drvdata(dev);
-	unsigned long flags;
-	unsigned int r;
-
-	if (!lchip)
-		return;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-
-	r = locomo_readl(lchip->base + LOCOMO_GPO);
-	if (set)
-		r |= bits;
-	else
-		r &= ~bits;
-	locomo_writel(r, lchip->base + LOCOMO_GPO);
-
-	spin_unlock_irqrestore(&lchip->lock, flags);
-}
-EXPORT_SYMBOL(locomo_gpio_write);
-
-static void locomo_m62332_sendbit(void *mapbase, int bit)
-{
-	unsigned int r;
-
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SCLOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	udelay(DAC_DATA_HOLD_TIME);	/* 300 nsec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SCLOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
-
-	if (bit & 1) {
-		r = locomo_readl(mapbase + LOCOMO_DAC);
-		r |=  LOCOMO_DAC_SDAOEB;
-		locomo_writel(r, mapbase + LOCOMO_DAC);
-		udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	} else {
-		r = locomo_readl(mapbase + LOCOMO_DAC);
-		r &=  ~(LOCOMO_DAC_SDAOEB);
-		locomo_writel(r, mapbase + LOCOMO_DAC);
-		udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	}
-
-	udelay(DAC_DATA_SETUP_TIME);	/* 250 nsec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/*  4.0 usec */
-}
-
-void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel)
-{
-	struct locomo *lchip = locomo_chip_driver(ldev);
-	int i;
-	unsigned char data;
-	unsigned int r;
-	void *mapbase = lchip->base;
-	unsigned long flags;
-
-	spin_lock_irqsave(&lchip->lock, flags);
-
-	/* Start */
-	udelay(DAC_BUS_FREE_TIME);	/* 5.0 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.0 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SDAOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_START_HOLD_TIME);	/* 5.0 usec */
-	udelay(DAC_DATA_HOLD_TIME);	/* 300 nsec */
-
-	/* Send slave address and W bit (LSB is W bit) */
-	data = (M62332_SLAVE_ADDR << 1) | M62332_W_BIT;
-	for (i = 1; i <= 8; i++) {
-		locomo_m62332_sendbit(mapbase, data >> (8 - i));
-	}
-
-	/* Check A bit */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SCLOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SDAOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
-	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
-		printk(KERN_WARNING "locomo: m62332_senddata Error 1\n");
-		goto out;
-	}
-
-	/* Send Sub address (LSB is channel select) */
-	/*    channel = 0 : ch1 select              */
-	/*            = 1 : ch2 select              */
-	data = M62332_SUB_ADDR + channel;
-	for (i = 1; i <= 8; i++) {
-		locomo_m62332_sendbit(mapbase, data >> (8 - i));
-	}
-
-	/* Check A bit */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SCLOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SDAOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
-	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
-		printk(KERN_WARNING "locomo: m62332_senddata Error 2\n");
-		goto out;
-	}
-
-	/* Send DAC data */
-	for (i = 1; i <= 8; i++) {
-		locomo_m62332_sendbit(mapbase, dac_data >> (8 - i));
-	}
-
-	/* Check A bit */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SCLOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SDAOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
-	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
-		printk(KERN_WARNING "locomo: m62332_senddata Error 3\n");
-	}
-
-out:
-	/* stop */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r &=  ~(LOCOMO_DAC_SCLOEB);
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
-	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4 usec */
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SDAOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4 usec */
-
-	r = locomo_readl(mapbase + LOCOMO_DAC);
-	r |=  LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
-	locomo_writel(r, mapbase + LOCOMO_DAC);
-	udelay(DAC_LOW_SETUP_TIME);	/* 1000 nsec */
-	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
-
-	spin_unlock_irqrestore(&lchip->lock, flags);
-}
-EXPORT_SYMBOL(locomo_m62332_senddata);
-
-/*
- *	Frontlight control
- */
-
-void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf)
-{
-	unsigned long flags;
-	struct locomo *lchip = locomo_chip_driver(dev);
-
-	if (vr)
-		locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 1);
-	else
-		locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 0);
-
-	spin_lock_irqsave(&lchip->lock, flags);
-	locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
-	udelay(100);
-	locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
-	locomo_writel(bpwf | LOCOMO_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
-	spin_unlock_irqrestore(&lchip->lock, flags);
-}
-EXPORT_SYMBOL(locomo_frontlight_set);
-
-/*
- *	LoCoMo "Register Access Bus."
- *
- *	We model this as a regular bus type, and hang devices directly
- *	off this.
- */
-static int locomo_match(struct device *_dev, const struct device_driver *_drv)
-{
-	struct locomo_dev *dev = LOCOMO_DEV(_dev);
-	const struct locomo_driver *drv = LOCOMO_DRV(_drv);
-
-	return dev->devid == drv->devid;
-}
-
-static int locomo_bus_probe(struct device *dev)
-{
-	struct locomo_dev *ldev = LOCOMO_DEV(dev);
-	struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
-	int ret = -ENODEV;
-
-	if (drv->probe)
-		ret = drv->probe(ldev);
-	return ret;
-}
-
-static void locomo_bus_remove(struct device *dev)
-{
-	struct locomo_dev *ldev = LOCOMO_DEV(dev);
-	struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
-
-	if (drv->remove)
-		drv->remove(ldev);
-}
-
-static const struct bus_type locomo_bus_type = {
-	.name		= "locomo-bus",
-	.match		= locomo_match,
-	.probe		= locomo_bus_probe,
-	.remove		= locomo_bus_remove,
-};
-
-int locomo_driver_register(struct locomo_driver *driver)
-{
-	driver->drv.bus = &locomo_bus_type;
-	return driver_register(&driver->drv);
-}
-EXPORT_SYMBOL(locomo_driver_register);
-
-void locomo_driver_unregister(struct locomo_driver *driver)
-{
-	driver_unregister(&driver->drv);
-}
-EXPORT_SYMBOL(locomo_driver_unregister);
-
-static int __init locomo_init(void)
-{
-	int ret = bus_register(&locomo_bus_type);
-	if (ret == 0)
-		platform_driver_register(&locomo_device_driver);
-	return ret;
-}
-
-static void __exit locomo_exit(void)
-{
-	platform_driver_unregister(&locomo_device_driver);
-	bus_unregister(&locomo_bus_type);
-}
-
-module_init(locomo_init);
-module_exit(locomo_exit);
-
-MODULE_DESCRIPTION("Sharp LoCoMo core driver");
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("John Lenz <lenz@cs.wisc.edu>");
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
deleted file mode 100644
index a0f854cf4748..000000000000
--- a/arch/arm/common/sa1111.c
+++ /dev/null
@@ -1,1413 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/common/sa1111.c
- *
- * SA1111 support
- *
- * Original code by John Dorsey
- *
- * This file contains all generic SA1111 support.
- *
- * All initialization functions provided here are intended to be called
- * from machine specific code with proper arguments when required.
- */
-#include <linux/module.h>
-#include <linux/gpio/driver.h>
-#include <linux/init.h>
-#include <linux/irq.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/platform_device.h>
-#include <linux/slab.h>
-#include <linux/spinlock.h>
-#include <linux/dma-map-ops.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-
-#include <asm/mach/irq.h>
-#include <asm/mach-types.h>
-#include <linux/sizes.h>
-
-#include <asm/hardware/sa1111.h>
-
-#ifdef CONFIG_ARCH_SA1100
-#include <mach/hardware.h>
-#endif
-
-/* SA1111 IRQs */
-#define IRQ_GPAIN0		(0)
-#define IRQ_GPAIN1		(1)
-#define IRQ_GPAIN2		(2)
-#define IRQ_GPAIN3		(3)
-#define IRQ_GPBIN0		(4)
-#define IRQ_GPBIN1		(5)
-#define IRQ_GPBIN2		(6)
-#define IRQ_GPBIN3		(7)
-#define IRQ_GPBIN4		(8)
-#define IRQ_GPBIN5		(9)
-#define IRQ_GPCIN0		(10)
-#define IRQ_GPCIN1		(11)
-#define IRQ_GPCIN2		(12)
-#define IRQ_GPCIN3		(13)
-#define IRQ_GPCIN4		(14)
-#define IRQ_GPCIN5		(15)
-#define IRQ_GPCIN6		(16)
-#define IRQ_GPCIN7		(17)
-#define IRQ_MSTXINT		(18)
-#define IRQ_MSRXINT		(19)
-#define IRQ_MSSTOPERRINT	(20)
-#define IRQ_TPTXINT		(21)
-#define IRQ_TPRXINT		(22)
-#define IRQ_TPSTOPERRINT	(23)
-#define SSPXMTINT		(24)
-#define SSPRCVINT		(25)
-#define SSPROR			(26)
-#define AUDXMTDMADONEA		(32)
-#define AUDRCVDMADONEA		(33)
-#define AUDXMTDMADONEB		(34)
-#define AUDRCVDMADONEB		(35)
-#define AUDTFSR			(36)
-#define AUDRFSR			(37)
-#define AUDTUR			(38)
-#define AUDROR			(39)
-#define AUDDTS			(40)
-#define AUDRDD			(41)
-#define AUDSTO			(42)
-#define IRQ_USBPWR		(43)
-#define IRQ_HCIM		(44)
-#define IRQ_HCIBUFFACC		(45)
-#define IRQ_HCIRMTWKP		(46)
-#define IRQ_NHCIMFCIR		(47)
-#define IRQ_USB_PORT_RESUME	(48)
-#define IRQ_S0_READY_NINT	(49)
-#define IRQ_S1_READY_NINT	(50)
-#define IRQ_S0_CD_VALID		(51)
-#define IRQ_S1_CD_VALID		(52)
-#define IRQ_S0_BVD1_STSCHG	(53)
-#define IRQ_S1_BVD1_STSCHG	(54)
-#define SA1111_IRQ_NR		(55)
-
-extern void sa1110_mb_enable(void);
-extern void sa1110_mb_disable(void);
-
-/*
- * We keep the following data for the overall SA1111.  Note that the
- * struct device and struct resource are "fake"; they should be supplied
- * by the bus above us.  However, in the interests of getting all SA1111
- * drivers converted over to the device model, we provide this as an
- * anchor point for all the other drivers.
- */
-struct sa1111 {
-	struct device	*dev;
-	struct clk	*clk;
-	unsigned long	phys;
-	int		irq;
-	int		irq_base;	/* base for cascaded on-chip IRQs */
-	spinlock_t	lock;
-	void __iomem	*base;
-	struct sa1111_platform_data *pdata;
-	struct irq_domain *irqdomain;
-	struct gpio_chip gc;
-#ifdef CONFIG_PM
-	void		*saved_state;
-#endif
-};
-
-/*
- * We _really_ need to eliminate this.  Its only users
- * are the PWM and DMA checking code.
- */
-static struct sa1111 *g_sa1111;
-
-struct sa1111_dev_info {
-	unsigned long	offset;
-	unsigned long	skpcr_mask;
-	bool		dma;
-	unsigned int	devid;
-	unsigned int	hwirq[6];
-};
-
-static struct sa1111_dev_info sa1111_devices[] = {
-	{
-		.offset		= SA1111_USB,
-		.skpcr_mask	= SKPCR_UCLKEN,
-		.dma		= true,
-		.devid		= SA1111_DEVID_USB,
-		.hwirq = {
-			IRQ_USBPWR,
-			IRQ_HCIM,
-			IRQ_HCIBUFFACC,
-			IRQ_HCIRMTWKP,
-			IRQ_NHCIMFCIR,
-			IRQ_USB_PORT_RESUME
-		},
-	},
-	{
-		.offset		= 0x0600,
-		.skpcr_mask	= SKPCR_I2SCLKEN | SKPCR_L3CLKEN,
-		.dma		= true,
-		.devid		= SA1111_DEVID_SAC,
-		.hwirq = {
-			AUDXMTDMADONEA,
-			AUDXMTDMADONEB,
-			AUDRCVDMADONEA,
-			AUDRCVDMADONEB
-		},
-	},
-	{
-		.offset		= 0x0800,
-		.skpcr_mask	= SKPCR_SCLKEN,
-		.devid		= SA1111_DEVID_SSP,
-	},
-	{
-		.offset		= SA1111_KBD,
-		.skpcr_mask	= SKPCR_PTCLKEN,
-		.devid		= SA1111_DEVID_PS2_KBD,
-		.hwirq = {
-			IRQ_TPRXINT,
-			IRQ_TPTXINT
-		},
-	},
-	{
-		.offset		= SA1111_MSE,
-		.skpcr_mask	= SKPCR_PMCLKEN,
-		.devid		= SA1111_DEVID_PS2_MSE,
-		.hwirq = {
-			IRQ_MSRXINT,
-			IRQ_MSTXINT
-		},
-	},
-	{
-		.offset		= 0x1800,
-		.skpcr_mask	= 0,
-		.devid		= SA1111_DEVID_PCMCIA,
-		.hwirq = {
-			IRQ_S0_READY_NINT,
-			IRQ_S0_CD_VALID,
-			IRQ_S0_BVD1_STSCHG,
-			IRQ_S1_READY_NINT,
-			IRQ_S1_CD_VALID,
-			IRQ_S1_BVD1_STSCHG,
-		},
-	},
-};
-
-static int sa1111_map_irq(struct sa1111 *sachip, irq_hw_number_t hwirq)
-{
-	return irq_create_mapping(sachip->irqdomain, hwirq);
-}
-
-/*
- * SA1111 interrupt support.  Since clearing an IRQ while there are
- * active IRQs causes the interrupt output to pulse, the upper levels
- * will call us again if there are more interrupts to process.
- */
-static void sa1111_irq_handler(struct irq_desc *desc)
-{
-	unsigned int stat0, stat1, i;
-	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
-	struct irq_domain *irqdomain;
-	void __iomem *mapbase = sachip->base + SA1111_INTC;
-
-	stat0 = readl_relaxed(mapbase + SA1111_INTSTATCLR0);
-	stat1 = readl_relaxed(mapbase + SA1111_INTSTATCLR1);
-
-	writel_relaxed(stat0, mapbase + SA1111_INTSTATCLR0);
-
-	desc->irq_data.chip->irq_ack(&desc->irq_data);
-
-	writel_relaxed(stat1, mapbase + SA1111_INTSTATCLR1);
-
-	if (stat0 == 0 && stat1 == 0) {
-		handle_bad_irq(desc);
-		return;
-	}
-
-	irqdomain = sachip->irqdomain;
-
-	for (i = 0; stat0; i++, stat0 >>= 1)
-		if (stat0 & 1)
-			generic_handle_domain_irq(irqdomain, i);
-
-	for (i = 32; stat1; i++, stat1 >>= 1)
-		if (stat1 & 1)
-			generic_handle_domain_irq(irqdomain, i);
-
-	/* For level-based interrupts */
-	desc->irq_data.chip->irq_unmask(&desc->irq_data);
-}
-
-static u32 sa1111_irqmask(struct irq_data *d)
-{
-	return BIT(irqd_to_hwirq(d) & 31);
-}
-
-static int sa1111_irqbank(struct irq_data *d)
-{
-	return (irqd_to_hwirq(d) / 32) * 4;
-}
-
-static void sa1111_ack_irq(struct irq_data *d)
-{
-}
-
-static void sa1111_mask_irq(struct irq_data *d)
-{
-	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
-	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
-	u32 ie;
-
-	ie = readl_relaxed(mapbase + SA1111_INTEN0);
-	ie &= ~sa1111_irqmask(d);
-	writel(ie, mapbase + SA1111_INTEN0);
-}
-
-static void sa1111_unmask_irq(struct irq_data *d)
-{
-	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
-	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
-	u32 ie;
-
-	ie = readl_relaxed(mapbase + SA1111_INTEN0);
-	ie |= sa1111_irqmask(d);
-	writel_relaxed(ie, mapbase + SA1111_INTEN0);
-}
-
-/*
- * Attempt to re-trigger the interrupt.  The SA1111 contains a register
- * (INTSET) which claims to do this.  However, in practice no amount of
- * manipulation of INTEN and INTSET guarantees that the interrupt will
- * be triggered.  In fact, its very difficult, if not impossible to get
- * INTSET to re-trigger the interrupt.
- */
-static int sa1111_retrigger_irq(struct irq_data *d)
-{
-	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
-	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
-	u32 ip, mask = sa1111_irqmask(d);
-	int i;
-
-	ip = readl_relaxed(mapbase + SA1111_INTPOL0);
-	for (i = 0; i < 8; i++) {
-		writel_relaxed(ip ^ mask, mapbase + SA1111_INTPOL0);
-		writel_relaxed(ip, mapbase + SA1111_INTPOL0);
-		if (readl_relaxed(mapbase + SA1111_INTSTATCLR0) & mask)
-			break;
-	}
-
-	if (i == 8) {
-		pr_err("Danger Will Robinson: failed to re-trigger IRQ%d\n",
-		       d->irq);
-		return 0;
-	}
-
-	return 1;
-}
-
-static int sa1111_type_irq(struct irq_data *d, unsigned int flags)
-{
-	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
-	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
-	u32 ip, mask = sa1111_irqmask(d);
-
-	if (flags == IRQ_TYPE_PROBE)
-		return 0;
-
-	if ((!(flags & IRQ_TYPE_EDGE_RISING) ^ !(flags & IRQ_TYPE_EDGE_FALLING)) == 0)
-		return -EINVAL;
-
-	ip = readl_relaxed(mapbase + SA1111_INTPOL0);
-	if (flags & IRQ_TYPE_EDGE_RISING)
-		ip &= ~mask;
-	else
-		ip |= mask;
-	writel_relaxed(ip, mapbase + SA1111_INTPOL0);
-	writel_relaxed(ip, mapbase + SA1111_WAKEPOL0);
-
-	return 0;
-}
-
-static int sa1111_wake_irq(struct irq_data *d, unsigned int on)
-{
-	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
-	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
-	u32 we, mask = sa1111_irqmask(d);
-
-	we = readl_relaxed(mapbase + SA1111_WAKEEN0);
-	if (on)
-		we |= mask;
-	else
-		we &= ~mask;
-	writel_relaxed(we, mapbase + SA1111_WAKEEN0);
-
-	return 0;
-}
-
-static struct irq_chip sa1111_irq_chip = {
-	.name		= "SA1111",
-	.irq_ack	= sa1111_ack_irq,
-	.irq_mask	= sa1111_mask_irq,
-	.irq_unmask	= sa1111_unmask_irq,
-	.irq_retrigger	= sa1111_retrigger_irq,
-	.irq_set_type	= sa1111_type_irq,
-	.irq_set_wake	= sa1111_wake_irq,
-};
-
-static int sa1111_irqdomain_map(struct irq_domain *d, unsigned int irq,
-	irq_hw_number_t hwirq)
-{
-	struct sa1111 *sachip = d->host_data;
-
-	/* Disallow unavailable interrupts */
-	if (hwirq > SSPROR && hwirq < AUDXMTDMADONEA)
-		return -EINVAL;
-
-	irq_set_chip_data(irq, sachip);
-	irq_set_chip_and_handler(irq, &sa1111_irq_chip, handle_edge_irq);
-	irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
-
-	return 0;
-}
-
-static const struct irq_domain_ops sa1111_irqdomain_ops = {
-	.map = sa1111_irqdomain_map,
-	.xlate = irq_domain_xlate_twocell,
-};
-
-static int sa1111_setup_irq(struct sa1111 *sachip, unsigned irq_base)
-{
-	void __iomem *irqbase = sachip->base + SA1111_INTC;
-	int ret;
-
-	/*
-	 * We're guaranteed that this region hasn't been taken.
-	 */
-	request_mem_region(sachip->phys + SA1111_INTC, 512, "irq");
-
-	ret = irq_alloc_descs(-1, irq_base, SA1111_IRQ_NR, -1);
-	if (ret <= 0) {
-		dev_err(sachip->dev, "unable to allocate %u irqs: %d\n",
-			SA1111_IRQ_NR, ret);
-		if (ret == 0)
-			ret = -EINVAL;
-		return ret;
-	}
-
-	sachip->irq_base = ret;
-
-	/* disable all IRQs */
-	writel_relaxed(0, irqbase + SA1111_INTEN0);
-	writel_relaxed(0, irqbase + SA1111_INTEN1);
-	writel_relaxed(0, irqbase + SA1111_WAKEEN0);
-	writel_relaxed(0, irqbase + SA1111_WAKEEN1);
-
-	/*
-	 * detect on rising edge.  Note: Feb 2001 Errata for SA1111
-	 * specifies that S0ReadyInt and S1ReadyInt should be '1'.
-	 */
-	writel_relaxed(0, irqbase + SA1111_INTPOL0);
-	writel_relaxed(BIT(IRQ_S0_READY_NINT & 31) |
-		       BIT(IRQ_S1_READY_NINT & 31),
-		       irqbase + SA1111_INTPOL1);
-
-	/* clear all IRQs */
-	writel_relaxed(~0, irqbase + SA1111_INTSTATCLR0);
-	writel_relaxed(~0, irqbase + SA1111_INTSTATCLR1);
-
-	sachip->irqdomain = irq_domain_create_linear(NULL, SA1111_IRQ_NR,
-						     &sa1111_irqdomain_ops,
-						     sachip);
-	if (!sachip->irqdomain) {
-		irq_free_descs(sachip->irq_base, SA1111_IRQ_NR);
-		return -ENOMEM;
-	}
-
-	irq_domain_associate_many(sachip->irqdomain,
-				  sachip->irq_base + IRQ_GPAIN0,
-				  IRQ_GPAIN0, SSPROR + 1 - IRQ_GPAIN0);
-	irq_domain_associate_many(sachip->irqdomain,
-				  sachip->irq_base + AUDXMTDMADONEA,
-				  AUDXMTDMADONEA,
-				  IRQ_S1_BVD1_STSCHG + 1 - AUDXMTDMADONEA);
-
-	/*
-	 * Register SA1111 interrupt
-	 */
-	irq_set_irq_type(sachip->irq, IRQ_TYPE_EDGE_RISING);
-	irq_set_chained_handler_and_data(sachip->irq, sa1111_irq_handler,
-					 sachip);
-
-	dev_info(sachip->dev, "Providing IRQ%u-%u\n",
-		sachip->irq_base, sachip->irq_base + SA1111_IRQ_NR - 1);
-
-	return 0;
-}
-
-static void sa1111_remove_irq(struct sa1111 *sachip)
-{
-	struct irq_domain *domain = sachip->irqdomain;
-	void __iomem *irqbase = sachip->base + SA1111_INTC;
-	int i;
-
-	/* disable all IRQs */
-	writel_relaxed(0, irqbase + SA1111_INTEN0);
-	writel_relaxed(0, irqbase + SA1111_INTEN1);
-	writel_relaxed(0, irqbase + SA1111_WAKEEN0);
-	writel_relaxed(0, irqbase + SA1111_WAKEEN1);
-
-	irq_set_chained_handler_and_data(sachip->irq, NULL, NULL);
-	for (i = 0; i < SA1111_IRQ_NR; i++)
-		irq_dispose_mapping(irq_find_mapping(domain, i));
-	irq_domain_remove(domain);
-
-	release_mem_region(sachip->phys + SA1111_INTC, 512);
-}
-
-enum {
-	SA1111_GPIO_PXDDR = (SA1111_GPIO_PADDR - SA1111_GPIO_PADDR),
-	SA1111_GPIO_PXDRR = (SA1111_GPIO_PADRR - SA1111_GPIO_PADDR),
-	SA1111_GPIO_PXDWR = (SA1111_GPIO_PADWR - SA1111_GPIO_PADDR),
-	SA1111_GPIO_PXSDR = (SA1111_GPIO_PASDR - SA1111_GPIO_PADDR),
-	SA1111_GPIO_PXSSR = (SA1111_GPIO_PASSR - SA1111_GPIO_PADDR),
-};
-
-static struct sa1111 *gc_to_sa1111(struct gpio_chip *gc)
-{
-	return container_of(gc, struct sa1111, gc);
-}
-
-static void __iomem *sa1111_gpio_map_reg(struct sa1111 *sachip, unsigned offset)
-{
-	void __iomem *reg = sachip->base + SA1111_GPIO;
-
-	if (offset < 4)
-		return reg + SA1111_GPIO_PADDR;
-	if (offset < 10)
-		return reg + SA1111_GPIO_PBDDR;
-	if (offset < 18)
-		return reg + SA1111_GPIO_PCDDR;
-	return NULL;
-}
-
-static u32 sa1111_gpio_map_bit(unsigned offset)
-{
-	if (offset < 4)
-		return BIT(offset);
-	if (offset < 10)
-		return BIT(offset - 4);
-	if (offset < 18)
-		return BIT(offset - 10);
-	return 0;
-}
-
-static void sa1111_gpio_modify(void __iomem *reg, u32 mask, u32 set)
-{
-	u32 val;
-
-	val = readl_relaxed(reg);
-	val &= ~mask;
-	val |= mask & set;
-	writel_relaxed(val, reg);
-}
-
-static int sa1111_gpio_get_direction(struct gpio_chip *gc, unsigned offset)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
-	u32 mask = sa1111_gpio_map_bit(offset);
-
-	return !!(readl_relaxed(reg + SA1111_GPIO_PXDDR) & mask);
-}
-
-static int sa1111_gpio_direction_input(struct gpio_chip *gc, unsigned offset)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-	unsigned long flags;
-	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
-	u32 mask = sa1111_gpio_map_bit(offset);
-
-	spin_lock_irqsave(&sachip->lock, flags);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXDDR, mask, mask);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXSDR, mask, mask);
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-	return 0;
-}
-
-static int sa1111_gpio_direction_output(struct gpio_chip *gc, unsigned offset,
-	int value)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-	unsigned long flags;
-	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
-	u32 mask = sa1111_gpio_map_bit(offset);
-
-	spin_lock_irqsave(&sachip->lock, flags);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXDWR, mask, value ? mask : 0);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXSSR, mask, value ? mask : 0);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXDDR, mask, 0);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXSDR, mask, 0);
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-	return 0;
-}
-
-static int sa1111_gpio_get(struct gpio_chip *gc, unsigned offset)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
-	u32 mask = sa1111_gpio_map_bit(offset);
-
-	return !!(readl_relaxed(reg + SA1111_GPIO_PXDRR) & mask);
-}
-
-static int sa1111_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-	unsigned long flags;
-	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
-	u32 mask = sa1111_gpio_map_bit(offset);
-
-	spin_lock_irqsave(&sachip->lock, flags);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXDWR, mask, value ? mask : 0);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PXSSR, mask, value ? mask : 0);
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-	return 0;
-}
-
-static int sa1111_gpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
-				    unsigned long *bits)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-	unsigned long flags;
-	void __iomem *reg = sachip->base + SA1111_GPIO;
-	u32 msk, val;
-
-	msk = *mask;
-	val = *bits;
-
-	spin_lock_irqsave(&sachip->lock, flags);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PADWR, msk & 15, val);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PASSR, msk & 15, val);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PBDWR, (msk >> 4) & 255, val >> 4);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PBSSR, (msk >> 4) & 255, val >> 4);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PCDWR, (msk >> 12) & 255, val >> 12);
-	sa1111_gpio_modify(reg + SA1111_GPIO_PCSSR, (msk >> 12) & 255, val >> 12);
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-	return 0;
-}
-
-static int sa1111_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
-{
-	struct sa1111 *sachip = gc_to_sa1111(gc);
-
-	return sa1111_map_irq(sachip, offset);
-}
-
-static int sa1111_setup_gpios(struct sa1111 *sachip)
-{
-	sachip->gc.label = "sa1111";
-	sachip->gc.parent = sachip->dev;
-	sachip->gc.owner = THIS_MODULE;
-	sachip->gc.get_direction = sa1111_gpio_get_direction;
-	sachip->gc.direction_input = sa1111_gpio_direction_input;
-	sachip->gc.direction_output = sa1111_gpio_direction_output;
-	sachip->gc.get = sa1111_gpio_get;
-	sachip->gc.set = sa1111_gpio_set;
-	sachip->gc.set_multiple = sa1111_gpio_set_multiple;
-	sachip->gc.to_irq = sa1111_gpio_to_irq;
-	sachip->gc.base = -1;
-	sachip->gc.ngpio = 18;
-
-	return devm_gpiochip_add_data(sachip->dev, &sachip->gc, sachip);
-}
-
-/*
- * Bring the SA1111 out of reset.  This requires a set procedure:
- *  1. nRESET asserted (by hardware)
- *  2. CLK turned on from SA1110
- *  3. nRESET deasserted
- *  4. VCO turned on, PLL_BYPASS turned off
- *  5. Wait lock time, then assert RCLKEn
- *  7. PCR set to allow clocking of individual functions
- *
- * Until we've done this, the only registers we can access are:
- *   SBI_SKCR
- *   SBI_SMCR
- *   SBI_SKID
- */
-static void sa1111_wake(struct sa1111 *sachip)
-{
-	unsigned long flags, r;
-
-	spin_lock_irqsave(&sachip->lock, flags);
-
-	clk_enable(sachip->clk);
-
-	/*
-	 * Turn VCO on, and disable PLL Bypass.
-	 */
-	r = readl_relaxed(sachip->base + SA1111_SKCR);
-	r &= ~SKCR_VCO_OFF;
-	writel_relaxed(r, sachip->base + SA1111_SKCR);
-	r |= SKCR_PLL_BYPASS | SKCR_OE_EN;
-	writel_relaxed(r, sachip->base + SA1111_SKCR);
-
-	/*
-	 * Wait lock time.  SA1111 manual _doesn't_
-	 * specify a figure for this!  We choose 100us.
-	 */
-	udelay(100);
-
-	/*
-	 * Enable RCLK.  We also ensure that RDYEN is set.
-	 */
-	r |= SKCR_RCLKEN | SKCR_RDYEN;
-	writel_relaxed(r, sachip->base + SA1111_SKCR);
-
-	/*
-	 * Wait 14 RCLK cycles for the chip to finish coming out
-	 * of reset. (RCLK=24MHz).  This is 590ns.
-	 */
-	udelay(1);
-
-	/*
-	 * Ensure all clocks are initially off.
-	 */
-	writel_relaxed(0, sachip->base + SA1111_SKPCR);
-
-	spin_unlock_irqrestore(&sachip->lock, flags);
-}
-
-#ifdef CONFIG_ARCH_SA1100
-
-static u32 sa1111_dma_mask[] = {
-	~0,
-	~(1 << 20),
-	~(1 << 23),
-	~(1 << 24),
-	~(1 << 25),
-	~(1 << 20),
-	~(1 << 20),
-	0,
-};
-
-/*
- * Configure the SA1111 shared memory controller.
- */
-static void
-sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
-		     unsigned int cas_latency)
-{
-	unsigned int smcr = SMCR_DTIM | SMCR_MBGE | FInsrt(drac, SMCR_DRAC);
-
-	if (cas_latency == 3)
-		smcr |= SMCR_CLAT;
-
-	writel_relaxed(smcr, sachip->base + SA1111_SMCR);
-
-	/*
-	 * Now clear the bits in the DMA mask to work around the SA1111
-	 * DMA erratum (Intel StrongARM SA-1111 Microprocessor Companion
-	 * Chip Specification Update, June 2000, Erratum #7).
-	 */
-	if (sachip->dev->dma_mask)
-		*sachip->dev->dma_mask &= sa1111_dma_mask[drac >> 2];
-
-	sachip->dev->coherent_dma_mask &= sa1111_dma_mask[drac >> 2];
-}
-#endif
-
-static void sa1111_dev_release(struct device *_dev)
-{
-	struct sa1111_dev *dev = to_sa1111_device(_dev);
-
-	kfree(dev);
-}
-
-static int
-sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
-		      struct sa1111_dev_info *info)
-{
-	struct sa1111_dev *dev;
-	unsigned i;
-	int ret;
-
-	dev = kzalloc_obj(struct sa1111_dev);
-	if (!dev) {
-		ret = -ENOMEM;
-		goto err_alloc;
-	}
-
-	device_initialize(&dev->dev);
-	dev_set_name(&dev->dev, "%4.4lx", info->offset);
-	dev->devid	 = info->devid;
-	dev->dev.parent  = sachip->dev;
-	dev->dev.bus     = &sa1111_bus_type;
-	dev->dev.release = sa1111_dev_release;
-	dev->res.start   = sachip->phys + info->offset;
-	dev->res.end     = dev->res.start + 511;
-	dev->res.name    = dev_name(&dev->dev);
-	dev->res.flags   = IORESOURCE_MEM;
-	dev->mapbase     = sachip->base + info->offset;
-	dev->skpcr_mask  = info->skpcr_mask;
-
-	for (i = 0; i < ARRAY_SIZE(info->hwirq); i++)
-		dev->hwirq[i] = info->hwirq[i];
-
-	/*
-	 * If the parent device has a DMA mask associated with it, and
-	 * this child supports DMA, propagate it down to the children.
-	 */
-	if (info->dma && sachip->dev->dma_mask) {
-		dev->dma_mask = *sachip->dev->dma_mask;
-		dev->dev.dma_mask = &dev->dma_mask;
-		dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask;
-	}
-
-	ret = request_resource(parent, &dev->res);
-	if (ret) {
-		dev_err(sachip->dev, "failed to allocate resource for %s\n",
-			dev->res.name);
-		goto err_resource;
-	}
-
-	ret = device_add(&dev->dev);
-	if (ret)
-		goto err_add;
-	return 0;
-
- err_add:
-	release_resource(&dev->res);
- err_resource:
-	put_device(&dev->dev);
- err_alloc:
-	return ret;
-}
-
-static int __sa1111_probe(struct device *me, struct resource *mem, int irq)
-{
-	struct sa1111_platform_data *pd = me->platform_data;
-	struct sa1111 *sachip;
-	unsigned long id;
-	unsigned int has_devs;
-	int i, ret = -ENODEV;
-
-	if (!pd)
-		return -EINVAL;
-
-	sachip = devm_kzalloc(me, sizeof(struct sa1111), GFP_KERNEL);
-	if (!sachip)
-		return -ENOMEM;
-
-	sachip->clk = devm_clk_get(me, "SA1111_CLK");
-	if (IS_ERR(sachip->clk))
-		return PTR_ERR(sachip->clk);
-
-	ret = clk_prepare(sachip->clk);
-	if (ret)
-		return ret;
-
-	spin_lock_init(&sachip->lock);
-
-	sachip->dev = me;
-	dev_set_drvdata(sachip->dev, sachip);
-
-	sachip->pdata = pd;
-	sachip->phys = mem->start;
-	sachip->irq = irq;
-
-	/*
-	 * Map the whole region.  This also maps the
-	 * registers for our children.
-	 */
-	sachip->base = ioremap(mem->start, PAGE_SIZE * 2);
-	if (!sachip->base) {
-		ret = -ENOMEM;
-		goto err_clk_unprep;
-	}
-
-	/*
-	 * Probe for the chip.  Only touch the SBI registers.
-	 */
-	id = readl_relaxed(sachip->base + SA1111_SKID);
-	if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
-		printk(KERN_DEBUG "SA1111 not detected: ID = %08lx\n", id);
-		ret = -ENODEV;
-		goto err_unmap;
-	}
-
-	pr_info("SA1111 Microprocessor Companion Chip: silicon revision %lx, metal revision %lx\n",
-		(id & SKID_SIREV_MASK) >> 4, id & SKID_MTREV_MASK);
-
-	/*
-	 * We found it.  Wake the chip up, and initialise.
-	 */
-	sa1111_wake(sachip);
-
-	/*
-	 * The interrupt controller must be initialised before any
-	 * other device to ensure that the interrupts are available.
-	 */
-	ret = sa1111_setup_irq(sachip, pd->irq_base);
-	if (ret)
-		goto err_clk;
-
-	/* Setup the GPIOs - should really be done after the IRQ setup */
-	ret = sa1111_setup_gpios(sachip);
-	if (ret)
-		goto err_irq;
-
-#ifdef CONFIG_ARCH_SA1100
-	{
-	unsigned int val;
-
-	/*
-	 * The SDRAM configuration of the SA1110 and the SA1111 must
-	 * match.  This is very important to ensure that SA1111 accesses
-	 * don't corrupt the SDRAM.  Note that this ungates the SA1111's
-	 * MBGNT signal, so we must have called sa1110_mb_disable()
-	 * beforehand.
-	 */
-	sa1111_configure_smc(sachip, 1,
-			     FExtr(MDCNFG, MDCNFG_SA1110_DRAC0),
-			     FExtr(MDCNFG, MDCNFG_SA1110_TDL0));
-
-	/*
-	 * We only need to turn on DCLK whenever we want to use the
-	 * DMA.  It can otherwise be held firmly in the off position.
-	 * (currently, we always enable it.)
-	 */
-	val = readl_relaxed(sachip->base + SA1111_SKPCR);
-	writel_relaxed(val | SKPCR_DCLKEN, sachip->base + SA1111_SKPCR);
-
-	/*
-	 * Enable the SA1110 memory bus request and grant signals.
-	 */
-	sa1110_mb_enable();
-	}
-#endif
-
-	g_sa1111 = sachip;
-
-	has_devs = ~0;
-	if (pd)
-		has_devs &= ~pd->disable_devs;
-
-	for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++)
-		if (sa1111_devices[i].devid & has_devs)
-			sa1111_init_one_child(sachip, mem, &sa1111_devices[i]);
-
-	return 0;
-
- err_irq:
-	sa1111_remove_irq(sachip);
- err_clk:
-	clk_disable(sachip->clk);
- err_unmap:
-	iounmap(sachip->base);
- err_clk_unprep:
-	clk_unprepare(sachip->clk);
-	return ret;
-}
-
-static int sa1111_remove_one(struct device *dev, void *data)
-{
-	struct sa1111_dev *sadev = to_sa1111_device(dev);
-	if (dev->bus != &sa1111_bus_type)
-		return 0;
-	device_del(&sadev->dev);
-	release_resource(&sadev->res);
-	put_device(&sadev->dev);
-	return 0;
-}
-
-static void __sa1111_remove(struct sa1111 *sachip)
-{
-	device_for_each_child(sachip->dev, NULL, sa1111_remove_one);
-
-	sa1111_remove_irq(sachip);
-
-	clk_disable(sachip->clk);
-	clk_unprepare(sachip->clk);
-
-	iounmap(sachip->base);
-}
-
-struct sa1111_save_data {
-	unsigned int	skcr;
-	unsigned int	skpcr;
-	unsigned int	skcdr;
-	unsigned char	skaud;
-	unsigned char	skpwm0;
-	unsigned char	skpwm1;
-
-	/*
-	 * Interrupt controller
-	 */
-	unsigned int	intpol0;
-	unsigned int	intpol1;
-	unsigned int	inten0;
-	unsigned int	inten1;
-	unsigned int	wakepol0;
-	unsigned int	wakepol1;
-	unsigned int	wakeen0;
-	unsigned int	wakeen1;
-};
-
-#ifdef CONFIG_PM
-
-static int sa1111_suspend_noirq(struct device *dev)
-{
-	struct sa1111 *sachip = dev_get_drvdata(dev);
-	struct sa1111_save_data *save;
-	unsigned long flags;
-	unsigned int val;
-	void __iomem *base;
-
-	save = kmalloc_obj(struct sa1111_save_data);
-	if (!save)
-		return -ENOMEM;
-	sachip->saved_state = save;
-
-	spin_lock_irqsave(&sachip->lock, flags);
-
-	/*
-	 * Save state.
-	 */
-	base = sachip->base;
-	save->skcr     = readl_relaxed(base + SA1111_SKCR);
-	save->skpcr    = readl_relaxed(base + SA1111_SKPCR);
-	save->skcdr    = readl_relaxed(base + SA1111_SKCDR);
-	save->skaud    = readl_relaxed(base + SA1111_SKAUD);
-	save->skpwm0   = readl_relaxed(base + SA1111_SKPWM0);
-	save->skpwm1   = readl_relaxed(base + SA1111_SKPWM1);
-
-	writel_relaxed(0, sachip->base + SA1111_SKPWM0);
-	writel_relaxed(0, sachip->base + SA1111_SKPWM1);
-
-	base = sachip->base + SA1111_INTC;
-	save->intpol0  = readl_relaxed(base + SA1111_INTPOL0);
-	save->intpol1  = readl_relaxed(base + SA1111_INTPOL1);
-	save->inten0   = readl_relaxed(base + SA1111_INTEN0);
-	save->inten1   = readl_relaxed(base + SA1111_INTEN1);
-	save->wakepol0 = readl_relaxed(base + SA1111_WAKEPOL0);
-	save->wakepol1 = readl_relaxed(base + SA1111_WAKEPOL1);
-	save->wakeen0  = readl_relaxed(base + SA1111_WAKEEN0);
-	save->wakeen1  = readl_relaxed(base + SA1111_WAKEEN1);
-
-	/*
-	 * Disable.
-	 */
-	val = readl_relaxed(sachip->base + SA1111_SKCR);
-	writel_relaxed(val | SKCR_SLEEP, sachip->base + SA1111_SKCR);
-
-	clk_disable(sachip->clk);
-
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-#ifdef CONFIG_ARCH_SA1100
-	sa1110_mb_disable();
-#endif
-
-	return 0;
-}
-
-/*
- *	sa1111_resume - Restore the SA1111 device state.
- *	@dev: device to restore
- *
- *	Restore the general state of the SA1111; clock control and
- *	interrupt controller.  Other parts of the SA1111 must be
- *	restored by their respective drivers, and must be called
- *	via LDM after this function.
- */
-static int sa1111_resume_noirq(struct device *dev)
-{
-	struct sa1111 *sachip = dev_get_drvdata(dev);
-	struct sa1111_save_data *save;
-	unsigned long flags, id;
-	void __iomem *base;
-
-	save = sachip->saved_state;
-	if (!save)
-		return 0;
-
-	/*
-	 * Ensure that the SA1111 is still here.
-	 * FIXME: shouldn't do this here.
-	 */
-	id = readl_relaxed(sachip->base + SA1111_SKID);
-	if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
-		__sa1111_remove(sachip);
-		dev_set_drvdata(dev, NULL);
-		kfree(save);
-		return 0;
-	}
-
-	/*
-	 * First of all, wake up the chip.
-	 */
-	sa1111_wake(sachip);
-
-#ifdef CONFIG_ARCH_SA1100
-	/* Enable the memory bus request/grant signals */
-	sa1110_mb_enable();
-#endif
-
-	/*
-	 * Only lock for write ops. Also, sa1111_wake must be called with
-	 * released spinlock!
-	 */
-	spin_lock_irqsave(&sachip->lock, flags);
-
-	writel_relaxed(0, sachip->base + SA1111_INTC + SA1111_INTEN0);
-	writel_relaxed(0, sachip->base + SA1111_INTC + SA1111_INTEN1);
-
-	base = sachip->base;
-	writel_relaxed(save->skcr,     base + SA1111_SKCR);
-	writel_relaxed(save->skpcr,    base + SA1111_SKPCR);
-	writel_relaxed(save->skcdr,    base + SA1111_SKCDR);
-	writel_relaxed(save->skaud,    base + SA1111_SKAUD);
-	writel_relaxed(save->skpwm0,   base + SA1111_SKPWM0);
-	writel_relaxed(save->skpwm1,   base + SA1111_SKPWM1);
-
-	base = sachip->base + SA1111_INTC;
-	writel_relaxed(save->intpol0,  base + SA1111_INTPOL0);
-	writel_relaxed(save->intpol1,  base + SA1111_INTPOL1);
-	writel_relaxed(save->inten0,   base + SA1111_INTEN0);
-	writel_relaxed(save->inten1,   base + SA1111_INTEN1);
-	writel_relaxed(save->wakepol0, base + SA1111_WAKEPOL0);
-	writel_relaxed(save->wakepol1, base + SA1111_WAKEPOL1);
-	writel_relaxed(save->wakeen0,  base + SA1111_WAKEEN0);
-	writel_relaxed(save->wakeen1,  base + SA1111_WAKEEN1);
-
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-	sachip->saved_state = NULL;
-	kfree(save);
-
-	return 0;
-}
-
-#else
-#define sa1111_suspend_noirq NULL
-#define sa1111_resume_noirq  NULL
-#endif
-
-/**
- *	sa1111_probe - probe for a single SA1111 chip.
- *	@pdev: platform device.
- *
- *	Probe for a SA1111 chip.  This must be called
- *	before any other SA1111-specific code.
- *
- *	Returns:
- *	* %-ENODEV	- device not found.
- *	* %-ENOMEM	- memory allocation failure.
- *	* %-EBUSY	- physical address already marked in-use.
- *	* %-EINVAL	- no platform data passed
- *	* %0		- successful.
- */
-static int sa1111_probe(struct platform_device *pdev)
-{
-	struct resource *mem;
-	int irq;
-
-	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!mem)
-		return -EINVAL;
-	irq = platform_get_irq(pdev, 0);
-	if (irq < 0)
-		return irq;
-
-	return __sa1111_probe(&pdev->dev, mem, irq);
-}
-
-static void sa1111_remove(struct platform_device *pdev)
-{
-	struct sa1111 *sachip = platform_get_drvdata(pdev);
-
-	if (sachip) {
-#ifdef CONFIG_PM
-		kfree(sachip->saved_state);
-		sachip->saved_state = NULL;
-#endif
-		__sa1111_remove(sachip);
-		platform_set_drvdata(pdev, NULL);
-	}
-}
-
-static struct dev_pm_ops sa1111_pm_ops = {
-	.suspend_noirq = sa1111_suspend_noirq,
-	.resume_noirq = sa1111_resume_noirq,
-};
-
-/*
- *	Not sure if this should be on the system bus or not yet.
- *	We really want some way to register a system device at
- *	the per-machine level, and then have this driver pick
- *	up the registered devices.
- *
- *	We also need to handle the SDRAM configuration for
- *	PXA250/SA1110 machine classes.
- */
-static struct platform_driver sa1111_device_driver = {
-	.probe		= sa1111_probe,
-	.remove		= sa1111_remove,
-	.driver		= {
-		.name	= "sa1111",
-		.pm	= &sa1111_pm_ops,
-	},
-};
-
-/*
- *	Get the parent device driver (us) structure
- *	from a child function device
- */
-static inline struct sa1111 *sa1111_chip_driver(struct sa1111_dev *sadev)
-{
-	return (struct sa1111 *)dev_get_drvdata(sadev->dev.parent);
-}
-
-/*
- * The bits in the opdiv field are non-linear.
- */
-static unsigned char opdiv_table[] = { 1, 4, 2, 8 };
-
-static unsigned int __sa1111_pll_clock(struct sa1111 *sachip)
-{
-	unsigned int skcdr, fbdiv, ipdiv, opdiv;
-
-	skcdr = readl_relaxed(sachip->base + SA1111_SKCDR);
-
-	fbdiv = (skcdr & 0x007f) + 2;
-	ipdiv = ((skcdr & 0x0f80) >> 7) + 2;
-	opdiv = opdiv_table[(skcdr & 0x3000) >> 12];
-
-	return 3686400 * fbdiv / (ipdiv * opdiv);
-}
-
-/**
- *	sa1111_pll_clock - return the current PLL clock frequency.
- *	@sadev: SA1111 function block
- *
- *	BUG: we should look at SKCR.  We also blindly believe that
- *	the chip is being fed with the 3.6864MHz clock.
- *
- *	Returns the PLL clock in Hz.
- */
-unsigned int sa1111_pll_clock(struct sa1111_dev *sadev)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-
-	return __sa1111_pll_clock(sachip);
-}
-EXPORT_SYMBOL(sa1111_pll_clock);
-
-/**
- *	sa1111_select_audio_mode - select I2S or AC link mode
- *	@sadev: SA1111 function block
- *	@mode: One of %SA1111_AUDIO_ACLINK or %SA1111_AUDIO_I2S
- *
- *	Frob the SKCR to select AC Link mode or I2S mode for
- *	the audio block.
- */
-void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-	unsigned long flags;
-	unsigned int val;
-
-	spin_lock_irqsave(&sachip->lock, flags);
-
-	val = readl_relaxed(sachip->base + SA1111_SKCR);
-	if (mode == SA1111_AUDIO_I2S) {
-		val &= ~SKCR_SELAC;
-	} else {
-		val |= SKCR_SELAC;
-	}
-	writel_relaxed(val, sachip->base + SA1111_SKCR);
-
-	spin_unlock_irqrestore(&sachip->lock, flags);
-}
-EXPORT_SYMBOL(sa1111_select_audio_mode);
-
-/**
- *	sa1111_set_audio_rate - set the audio sample rate
- *	@sadev: SA1111 SAC function block
- *	@rate: sample rate to select
- */
-int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-	unsigned int div;
-
-	if (sadev->devid != SA1111_DEVID_SAC)
-		return -EINVAL;
-
-	div = (__sa1111_pll_clock(sachip) / 256 + rate / 2) / rate;
-	if (div == 0)
-		div = 1;
-	if (div > 128)
-		div = 128;
-
-	writel_relaxed(div - 1, sachip->base + SA1111_SKAUD);
-
-	return 0;
-}
-EXPORT_SYMBOL(sa1111_set_audio_rate);
-
-/**
- *	sa1111_get_audio_rate - get the audio sample rate
- *	@sadev: SA1111 SAC function block device
- */
-int sa1111_get_audio_rate(struct sa1111_dev *sadev)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-	unsigned long div;
-
-	if (sadev->devid != SA1111_DEVID_SAC)
-		return -EINVAL;
-
-	div = readl_relaxed(sachip->base + SA1111_SKAUD) + 1;
-
-	return __sa1111_pll_clock(sachip) / (256 * div);
-}
-EXPORT_SYMBOL(sa1111_get_audio_rate);
-
-/*
- * Individual device operations.
- */
-
-/**
- *	sa1111_enable_device - enable an on-chip SA1111 function block
- *	@sadev: SA1111 function block device to enable
- */
-int sa1111_enable_device(struct sa1111_dev *sadev)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-	unsigned long flags;
-	unsigned int val;
-	int ret = 0;
-
-	if (sachip->pdata && sachip->pdata->enable)
-		ret = sachip->pdata->enable(sachip->pdata->data, sadev->devid);
-
-	if (ret == 0) {
-		spin_lock_irqsave(&sachip->lock, flags);
-		val = readl_relaxed(sachip->base + SA1111_SKPCR);
-		writel_relaxed(val | sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
-		spin_unlock_irqrestore(&sachip->lock, flags);
-	}
-	return ret;
-}
-EXPORT_SYMBOL(sa1111_enable_device);
-
-/**
- *	sa1111_disable_device - disable an on-chip SA1111 function block
- *	@sadev: SA1111 function block device to disable
- */
-void sa1111_disable_device(struct sa1111_dev *sadev)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-	unsigned long flags;
-	unsigned int val;
-
-	spin_lock_irqsave(&sachip->lock, flags);
-	val = readl_relaxed(sachip->base + SA1111_SKPCR);
-	writel_relaxed(val & ~sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
-	spin_unlock_irqrestore(&sachip->lock, flags);
-
-	if (sachip->pdata && sachip->pdata->disable)
-		sachip->pdata->disable(sachip->pdata->data, sadev->devid);
-}
-EXPORT_SYMBOL(sa1111_disable_device);
-
-int sa1111_get_irq(struct sa1111_dev *sadev, unsigned num)
-{
-	struct sa1111 *sachip = sa1111_chip_driver(sadev);
-	if (num >= ARRAY_SIZE(sadev->hwirq))
-		return -EINVAL;
-	return sa1111_map_irq(sachip, sadev->hwirq[num]);
-}
-EXPORT_SYMBOL_GPL(sa1111_get_irq);
-
-/*
- *	SA1111 "Register Access Bus."
- *
- *	We model this as a regular bus type, and hang devices directly
- *	off this.
- */
-static int sa1111_match(struct device *_dev, const struct device_driver *_drv)
-{
-	struct sa1111_dev *dev = to_sa1111_device(_dev);
-	const struct sa1111_driver *drv = SA1111_DRV(_drv);
-
-	return !!(dev->devid & drv->devid);
-}
-
-static int sa1111_bus_probe(struct device *dev)
-{
-	struct sa1111_dev *sadev = to_sa1111_device(dev);
-	struct sa1111_driver *drv = SA1111_DRV(dev->driver);
-	int ret = -ENODEV;
-
-	if (drv->probe)
-		ret = drv->probe(sadev);
-	return ret;
-}
-
-static void sa1111_bus_remove(struct device *dev)
-{
-	struct sa1111_dev *sadev = to_sa1111_device(dev);
-	struct sa1111_driver *drv = SA1111_DRV(dev->driver);
-
-	if (drv->remove)
-		drv->remove(sadev);
-}
-
-const struct bus_type sa1111_bus_type = {
-	.name		= "sa1111-rab",
-	.match		= sa1111_match,
-	.probe		= sa1111_bus_probe,
-	.remove		= sa1111_bus_remove,
-};
-EXPORT_SYMBOL(sa1111_bus_type);
-
-int sa1111_driver_register(struct sa1111_driver *driver)
-{
-	driver->drv.bus = &sa1111_bus_type;
-	return driver_register(&driver->drv);
-}
-EXPORT_SYMBOL(sa1111_driver_register);
-
-void sa1111_driver_unregister(struct sa1111_driver *driver)
-{
-	driver_unregister(&driver->drv);
-}
-EXPORT_SYMBOL(sa1111_driver_unregister);
-
-static int __init sa1111_init(void)
-{
-	int ret = bus_register(&sa1111_bus_type);
-	if (ret == 0)
-		platform_driver_register(&sa1111_device_driver);
-	return ret;
-}
-
-static void __exit sa1111_exit(void)
-{
-	platform_driver_unregister(&sa1111_device_driver);
-	bus_unregister(&sa1111_bus_type);
-}
-
-subsys_initcall(sa1111_init);
-module_exit(sa1111_exit);
-
-MODULE_DESCRIPTION("Intel Corporation SA1111 core driver");
-MODULE_LICENSE("GPL");
diff --git a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig
deleted file mode 100644
index e4264fdac2e5..000000000000
--- a/arch/arm/configs/assabet_defconfig
+++ /dev/null
@@ -1,57 +0,0 @@
-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_SA1100=y
-CONFIG_SA1100_ASSABET=y
-# CONFIG_AEABI is not set
-CONFIG_ATAGS=y
-CONFIG_CMDLINE="mem=32M console=ttySA0,38400n8 initrd=0xc0800000,3M root=/dev/ram"
-CONFIG_FPE_NWFPE=y
-CONFIG_PM=y
-CONFIG_MODULES=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_NET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IPV6 is not set
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_SA1100=y
-CONFIG_MTD=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_I1 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_SA1100=y
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_NETDEVICES=y
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_PCNET=y
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_FB=y
-CONFIG_FB_SA1100=y
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_SOUND=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_EXT2_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_NFS_FS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_DEBUG_USER=y
diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig
deleted file mode 100644
index 570a5f8bc57b..000000000000
--- a/arch/arm/configs/collie_defconfig
+++ /dev/null
@@ -1,87 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_EXPERT=y
-CONFIG_BASE_SMALL=y
-# CONFIG_EPOLL is not set
-CONFIG_ARCH_MULTI_V4=y
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_SA1100=y
-CONFIG_SA1100_COLLIE=y
-CONFIG_ATAGS=y
-CONFIG_CMDLINE="noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1"
-CONFIG_PM=y
-# CONFIG_SWAP is not set
-CONFIG_SLUB_TINY=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IPV6 is not set
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_SA1100=y
-CONFIG_PCMCIA_DEBUG=y
-CONFIG_MTD=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
-# CONFIG_MTD_CFI_I1 is not set
-# CONFIG_MTD_CFI_I2 is not set
-CONFIG_MTD_CFI_I4=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_SA1100=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=1024
-CONFIG_BLK_DEV_SD=y
-CONFIG_ATA=y
-CONFIG_PATA_PCMCIA=y
-# CONFIG_INPUT_MOUSEDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_KEYBOARD_ATKBD is not set
-CONFIG_KEYBOARD_LOCOMO=y
-# CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-# CONFIG_SERIO_SERPORT is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CS=y
-CONFIG_SERIAL_8250_EXTENDED=y
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_HWMON is not set
-CONFIG_MCP_SA11X0=y
-CONFIG_MCP_UCB1200=y
-CONFIG_MCP_UCB1200_TS=y
-CONFIG_FB=y
-CONFIG_FB_SA1100=y
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_LOCOMO=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_DISK=y
-# CONFIG_DNOTIFY is not set
-CONFIG_VFAT_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_ROMFS_FS=y
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_FONTS=y
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DETECT_SOFTLOCKUP is not set
-CONFIG_DEBUG_MUTEXES=y
diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig
deleted file mode 100644
index 3e8da62d959d..000000000000
--- a/arch/arm/configs/h3600_defconfig
+++ /dev/null
@@ -1,63 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_NO_HZ_IDLE=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=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_SA1100=y
-CONFIG_SA1100_H3600=y
-# CONFIG_CPU_FREQ_STAT is not set
-CONFIG_ATAGS=y
-CONFIG_MODULES=y
-CONFIG_NET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IPV6 is not set
-# CONFIG_WIRELESS is not set
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_SA1100=y
-CONFIG_MTD=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_CFI_I1 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_SA1100=y
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_SD=y
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_ATA=y
-CONFIG_PATA_PCMCIA=y
-CONFIG_NETDEVICES=y
-CONFIG_PCMCIA_PCNET=y
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_ASYNC=m
-# CONFIG_WLAN is not set
-# CONFIG_KEYBOARD_ATKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-# CONFIG_HWMON is not set
-CONFIG_FB=y
-CONFIG_FB_SA1100=y
-# CONFIG_USB_SUPPORT is not set
-CONFIG_EXT2_FS=y
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_JFFS2_FS=y
-CONFIG_CRAMFS=m
-CONFIG_NFS_FS=y
-CONFIG_NFSD=m
-CONFIG_NLS=y
diff --git a/arch/arm/configs/jornada720_defconfig b/arch/arm/configs/jornada720_defconfig
deleted file mode 100644
index a96cfb81aba5..000000000000
--- a/arch/arm/configs/jornada720_defconfig
+++ /dev/null
@@ -1,95 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_EXPERT=y
-CONFIG_ARCH_MULTI_V4=y
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_SA1100=y
-CONFIG_SA1100_JORNADA720=y
-CONFIG_SA1100_JORNADA720_SSP=y
-CONFIG_PM=y
-CONFIG_ATAGS=y
-CONFIG_MODULES=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IPV6 is not set
-CONFIG_NETFILTER=y
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_SA1100=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_NBD=y
-CONFIG_BLK_DEV_SD=y
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_ATA=y
-CONFIG_PATA_PCMCIA=y
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=y
-CONFIG_NET_PCMCIA=y
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
-# CONFIG_KEYBOARD_ATKBD is not set
-CONFIG_KEYBOARD_HP7XX=y
-# CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_HP7XX=y
-CONFIG_LEGACY_PTY_COUNT=32
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-# CONFIG_HWMON is not set
-CONFIG_FB=y
-CONFIG_FB_S1D13XXX=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
-# CONFIG_USB_SUPPORT is not set
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_SA1100=y
-CONFIG_EXT2_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-# CONFIG_NETWORK_FILESYSTEMS 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_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-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_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_FTRACE is not set
-CONFIG_DEBUG_LL=y
diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig
deleted file mode 100644
index 164643f1b6c0..000000000000
--- a/arch/arm/configs/neponset_defconfig
+++ /dev/null
@@ -1,88 +0,0 @@
-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_SA1100=y
-CONFIG_SA1100_ASSABET=y
-CONFIG_ASSABET_NEPONSET=y
-CONFIG_ATAGS=y
-CONFIG_ZBOOT_ROM_TEXT=0x80000
-CONFIG_ZBOOT_ROM_BSS=0xc1000000
-CONFIG_ZBOOT_ROM=y
-CONFIG_CMDLINE="console=ttySA0,38400n8 cpufreq=221200 rw root=/dev/mtdblock2 mtdparts=sa1100:512K(boot),1M(kernel),2560K(initrd),4M(root) mem=32M noinitrd initrd=0xc0800000,3M"
-CONFIG_FPE_NWFPE=y
-# CONFIG_AEABI is not set
-CONFIG_PM=y
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_MSDOS_PARTITION is not set
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IPV6 is not set
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_SA1100=y
-CONFIG_PCMCIA_SA1111=y
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_RAM=y
-CONFIG_MTD_SA1100=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_SCSI=m
-CONFIG_BLK_DEV_SD=m
-CONFIG_NETDEVICES=y
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_PCMCIA_PCNET=y
-CONFIG_SMC91X=y
-CONFIG_NET_PCMCIA=y
-# CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_SERIO_SERPORT=m
-CONFIG_SERIO_SA1111=y
-CONFIG_LEGACY_PTY_COUNT=64
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CS=y
-CONFIG_SERIAL_SA1100=y
-CONFIG_SERIAL_SA1100_CONSOLE=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_WATCHDOG=y
-CONFIG_SA1100_WATCHDOG=m
-CONFIG_FB=y
-CONFIG_FB_SA1100=y
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=y
-# CONFIG_USB_HID is not set
-CONFIG_USB=m
-CONFIG_USB_MON=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_STORAGE=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_EXT2_FS=y
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_JFFS2_FS=y
-CONFIG_NFS_FS=y
-CONFIG_NLS=y
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_DEBUG_KERNEL=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_LL=y
diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index 0163c3e78a67..d58f6b5c4c35 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -262,10 +262,6 @@ static inline unsigned int __attribute_const__ read_cpuid_mpidr(void)
 	return read_cpuid(CPUID_MPIDR);
 }
 
-/* StrongARM-11x0 CPUs */
-#define cpu_is_sa1100() (read_cpuid_part() == ARM_CPU_PART_SA1100)
-#define cpu_is_sa1110() (read_cpuid_part() == ARM_CPU_PART_SA1110)
-
 /*
  * Intel's XScale3 core supports some v6 features (supersections, L2)
  * but advertises itself as v5 as it does not support the v6 ISA.  For
diff --git a/arch/arm/include/asm/hardware/locomo.h b/arch/arm/include/asm/hardware/locomo.h
deleted file mode 100644
index 3190e1e5067a..000000000000
--- a/arch/arm/include/asm/hardware/locomo.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * arch/arm/include/asm/hardware/locomo.h
- *
- * This file contains the definitions for the LoCoMo G/A Chip
- *
- * (C) Copyright 2004 John Lenz
- *
- * May be copied or modified under the terms of the GNU General Public
- * License.  See linux/COPYING for more information.
- *
- * Based on sa1111.h
- */
-#ifndef _ASM_ARCH_LOCOMO
-#define _ASM_ARCH_LOCOMO
-
-#define locomo_writel(val,addr)	({ *(volatile u16 *)(addr) = (val); })
-#define locomo_readl(addr)	(*(volatile u16 *)(addr))
-
-/* LOCOMO version */
-#define LOCOMO_VER	0x00
-
-/* Pin status */
-#define LOCOMO_ST	0x04
-
-/* Pin status */
-#define LOCOMO_C32K	0x08
-
-/* Interrupt controller */
-#define LOCOMO_ICR	0x0C
-
-/* MCS decoder for boot selecting */
-#define LOCOMO_MCSX0	0x10
-#define LOCOMO_MCSX1	0x14
-#define LOCOMO_MCSX2	0x18
-#define LOCOMO_MCSX3	0x1c
-
-/* Touch panel controller */
-#define LOCOMO_ASD	0x20		/* AD start delay */
-#define LOCOMO_HSD	0x28		/* HSYS delay */
-#define LOCOMO_HSC	0x2c		/* HSYS period */
-#define LOCOMO_TADC	0x30		/* tablet ADC clock */
-
-
-/* Long time timer */
-#define LOCOMO_LTC	0xd8		/* LTC interrupt setting */
-#define LOCOMO_LTINT	0xdc		/* LTC interrupt */
-
-/* DAC control signal for LCD (COMADJ ) */
-#define LOCOMO_DAC		0xe0
-/* DAC control */
-#define	LOCOMO_DAC_SCLOEB	0x08	/* SCL pin output data       */
-#define	LOCOMO_DAC_TEST		0x04	/* Test bit                  */
-#define	LOCOMO_DAC_SDA		0x02	/* SDA pin level (read-only) */
-#define	LOCOMO_DAC_SDAOEB	0x01	/* SDA pin output data       */
-
-/* SPI interface */
-#define LOCOMO_SPI	0x60
-#define LOCOMO_SPIMD	0x00		/* SPI mode setting */
-#define LOCOMO_SPICT	0x04		/* SPI mode control */
-#define LOCOMO_SPIST	0x08		/* SPI status */
-#define	LOCOMO_SPI_TEND	(1 << 3)	/* Transfer end bit */
-#define	LOCOMO_SPI_REND	(1 << 2)	/* Receive end bit */
-#define	LOCOMO_SPI_RFW	(1 << 1)	/* write buffer bit */
-#define	LOCOMO_SPI_RFR	(1)		/* read buffer bit */
-
-#define LOCOMO_SPIIS	0x10		/* SPI interrupt status */
-#define LOCOMO_SPIWE	0x14		/* SPI interrupt status write enable */
-#define LOCOMO_SPIIE	0x18		/* SPI interrupt enable */
-#define LOCOMO_SPIIR	0x1c		/* SPI interrupt request */
-#define LOCOMO_SPITD	0x20		/* SPI transfer data write */
-#define LOCOMO_SPIRD	0x24		/* SPI receive data read */
-#define LOCOMO_SPITS	0x28		/* SPI transfer data shift */
-#define LOCOMO_SPIRS	0x2C		/* SPI receive data shift */
-
-/* GPIO */
-#define LOCOMO_GPD		0x90	/* GPIO direction */
-#define LOCOMO_GPE		0x94	/* GPIO input enable */
-#define LOCOMO_GPL		0x98	/* GPIO level */
-#define LOCOMO_GPO		0x9c	/* GPIO out data setting */
-#define LOCOMO_GRIE		0xa0	/* GPIO rise detection */
-#define LOCOMO_GFIE		0xa4	/* GPIO fall detection */
-#define LOCOMO_GIS		0xa8	/* GPIO edge detection status */
-#define LOCOMO_GWE		0xac	/* GPIO status write enable */
-#define LOCOMO_GIE		0xb0	/* GPIO interrupt enable */
-#define LOCOMO_GIR		0xb4	/* GPIO interrupt request */
-#define	LOCOMO_GPIO(Nb)		(0x01 << (Nb))
-#define LOCOMO_GPIO_RTS		LOCOMO_GPIO(0)
-#define LOCOMO_GPIO_CTS		LOCOMO_GPIO(1)
-#define LOCOMO_GPIO_DSR		LOCOMO_GPIO(2)
-#define LOCOMO_GPIO_DTR		LOCOMO_GPIO(3)
-#define LOCOMO_GPIO_LCD_VSHA_ON	LOCOMO_GPIO(4)
-#define LOCOMO_GPIO_LCD_VSHD_ON	LOCOMO_GPIO(5)
-#define LOCOMO_GPIO_LCD_VEE_ON	LOCOMO_GPIO(6)
-#define LOCOMO_GPIO_LCD_MOD	LOCOMO_GPIO(7)
-#define LOCOMO_GPIO_DAC_ON	LOCOMO_GPIO(8)
-#define LOCOMO_GPIO_FL_VR	LOCOMO_GPIO(9)
-#define LOCOMO_GPIO_DAC_SDATA	LOCOMO_GPIO(10)
-#define LOCOMO_GPIO_DAC_SCK	LOCOMO_GPIO(11)
-#define LOCOMO_GPIO_DAC_SLOAD	LOCOMO_GPIO(12)
-#define LOCOMO_GPIO_CARD_DETECT LOCOMO_GPIO(13)
-#define LOCOMO_GPIO_WRITE_PROT  LOCOMO_GPIO(14)
-#define LOCOMO_GPIO_CARD_POWER  LOCOMO_GPIO(15)
-
-/* Start the definitions of the devices.  Each device has an initial
- * base address and a series of offsets from that base address. */
-
-/* Keyboard controller */
-#define LOCOMO_KEYBOARD		0x40
-#define LOCOMO_KIB		0x00	/* KIB level */
-#define LOCOMO_KSC		0x04	/* KSTRB control */
-#define LOCOMO_KCMD		0x08	/* KSTRB command */
-#define LOCOMO_KIC		0x0c	/* Key interrupt */
-
-/* Front light adjustment controller */
-#define LOCOMO_FRONTLIGHT	0xc8
-#define LOCOMO_ALS		0x00	/* Adjust light cycle */
-#define LOCOMO_ALD		0x04	/* Adjust light duty */
-
-#define LOCOMO_ALC_EN		0x8000
-
-/* Backlight controller: TFT signal */
-#define LOCOMO_BACKLIGHT	0x38
-#define LOCOMO_TC		0x00		/* TFT control signal */
-#define LOCOMO_CPSD		0x04		/* CPS delay */
-
-/* Audio controller */
-#define LOCOMO_AUDIO		0x54
-#define LOCOMO_ACC		0x00	/* Audio clock */
-#define LOCOMO_PAIF		0xD0	/* PCM audio interface */
-/* Audio clock */
-#define	LOCOMO_ACC_XON		0x80
-#define	LOCOMO_ACC_XEN		0x40
-#define	LOCOMO_ACC_XSEL0	0x00
-#define	LOCOMO_ACC_XSEL1	0x20
-#define	LOCOMO_ACC_MCLKEN	0x10
-#define	LOCOMO_ACC_64FSEN	0x08
-#define	LOCOMO_ACC_CLKSEL000	0x00	/* mclk  2 */
-#define	LOCOMO_ACC_CLKSEL001	0x01	/* mclk  3 */
-#define	LOCOMO_ACC_CLKSEL010	0x02	/* mclk  4 */
-#define	LOCOMO_ACC_CLKSEL011	0x03	/* mclk  6 */
-#define	LOCOMO_ACC_CLKSEL100	0x04	/* mclk  8 */
-#define	LOCOMO_ACC_CLKSEL101	0x05	/* mclk 12 */
-/* PCM audio interface */
-#define	LOCOMO_PAIF_SCINV	0x20
-#define	LOCOMO_PAIF_SCEN	0x10
-#define	LOCOMO_PAIF_LRCRST	0x08
-#define	LOCOMO_PAIF_LRCEVE	0x04
-#define	LOCOMO_PAIF_LRCINV	0x02
-#define	LOCOMO_PAIF_LRCEN	0x01
-
-/* LED controller */
-#define LOCOMO_LED		0xe8
-#define LOCOMO_LPT0		0x00
-#define LOCOMO_LPT1		0x04
-/* LED control */
-#define LOCOMO_LPT_TOFH		0x80
-#define LOCOMO_LPT_TOFL		0x08
-#define LOCOMO_LPT_TOH(TOH)	((TOH & 0x7) << 4)
-#define LOCOMO_LPT_TOL(TOL)	((TOL & 0x7))
-
-#define LOCOMO_DEVID_KEYBOARD	0
-#define LOCOMO_DEVID_FRONTLIGHT	1
-#define LOCOMO_DEVID_BACKLIGHT	2
-#define LOCOMO_DEVID_AUDIO	3
-#define LOCOMO_DEVID_LED	4
-#define LOCOMO_DEVID_UART	5
-#define LOCOMO_DEVID_SPI	6
-
-struct locomo_dev {
-	struct device	dev;
-	unsigned int	devid;
-	unsigned int	irq[1];
-
-	void		*mapbase;
-	unsigned long	length;
-
-	u64		dma_mask;
-};
-
-#define LOCOMO_DEV(_d)	container_of((_d), struct locomo_dev, dev)
-
-#define locomo_get_drvdata(d)	dev_get_drvdata(&(d)->dev)
-#define locomo_set_drvdata(d,p)	dev_set_drvdata(&(d)->dev, p)
-
-struct locomo_driver {
-	struct device_driver	drv;
-	unsigned int		devid;
-	int (*probe)(struct locomo_dev *);
-	void (*remove)(struct locomo_dev *);
-};
-
-#define LOCOMO_DRV(_d)	container_of_const((_d), struct locomo_driver, drv)
-
-#define LOCOMO_DRIVER_NAME(_ldev) ((_ldev)->dev.driver->name)
-
-extern void locomolcd_power(int on);
-
-int locomo_driver_register(struct locomo_driver *);
-void locomo_driver_unregister(struct locomo_driver *);
-
-/* GPIO control functions */
-void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir);
-int locomo_gpio_read_level(struct device *dev, unsigned int bits);
-int locomo_gpio_read_output(struct device *dev, unsigned int bits);
-void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set);
-
-/* M62332 control function */
-void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel);
-
-/* Frontlight control */
-void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf);
-
-struct locomo_platform_data {
-	int	irq_base;	/* IRQ base for cascaded on-chip IRQs */
-};
-
-#endif
diff --git a/arch/arm/include/asm/hardware/sa1111.h b/arch/arm/include/asm/hardware/sa1111.h
deleted file mode 100644
index 90b6a832108d..000000000000
--- a/arch/arm/include/asm/hardware/sa1111.h
+++ /dev/null
@@ -1,442 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/include/asm/hardware/sa1111.h
- *
- * Copyright (C) 2000 John G Dorsey <john+@cs.cmu.edu>
- *
- * This file contains definitions for the SA-1111 Companion Chip.
- * (Structure and naming borrowed from SA-1101.h, by Peter Danielsson.)
- *
- * Macro that calculates real address for registers in the SA-1111
- */
-
-#ifndef _ASM_ARCH_SA1111
-#define _ASM_ARCH_SA1111
-
-/*
- * Don't ask the (SAC) DMA engines to move less than this amount.
- */
-
-#define SA1111_SAC_DMA_MIN_XFER	(0x800)
-
-/*
- * System Bus Interface (SBI)
- *
- * Registers
- *    SKCR	Control Register
- *    SMCR	Shared Memory Controller Register
- *    SKID	ID Register
- */
-#define SA1111_SKCR	0x0000
-#define SA1111_SMCR	0x0004
-#define SA1111_SKID	0x0008
-
-#define SKCR_PLL_BYPASS	(1<<0)
-#define SKCR_RCLKEN	(1<<1)
-#define SKCR_SLEEP	(1<<2)
-#define SKCR_DOZE	(1<<3)
-#define SKCR_VCO_OFF	(1<<4)
-#define SKCR_SCANTSTEN	(1<<5)
-#define SKCR_CLKTSTEN	(1<<6)
-#define SKCR_RDYEN	(1<<7)
-#define SKCR_SELAC	(1<<8)
-#define SKCR_OPPC	(1<<9)
-#define SKCR_PLLTSTEN	(1<<10)
-#define SKCR_USBIOTSTEN	(1<<11)
-/*
- * Don't believe the specs!  Take them, throw them outside.  Leave them
- * there for a week.  Spit on them.  Walk on them.  Stamp on them.
- * Pour gasoline over them and finally burn them.  Now think about coding.
- *  - The October 1999 errata (278260-007) says its bit 13, 1 to enable.
- *  - The Feb 2001 errata (278260-010) says that the previous errata
- *    (278260-009) is wrong, and its bit actually 12, fixed in spec
- *    278242-003.
- *  - The SA1111 manual (278242) says bit 12, but 0 to enable.
- *  - Reality is bit 13, 1 to enable.
- *      -- rmk
- */
-#define SKCR_OE_EN	(1<<13)
-
-#define SMCR_DTIM	(1<<0)
-#define SMCR_MBGE	(1<<1)
-#define SMCR_DRAC_0	(1<<2)
-#define SMCR_DRAC_1	(1<<3)
-#define SMCR_DRAC_2	(1<<4)
-#define SMCR_DRAC	Fld(3, 2)
-#define SMCR_CLAT	(1<<5)
-
-#define SKID_SIREV_MASK	(0x000000f0)
-#define SKID_MTREV_MASK (0x0000000f)
-#define SKID_ID_MASK	(0xffffff00)
-#define SKID_SA1111_ID	(0x690cc200)
-
-/*
- * System Controller
- *
- * Registers
- *    SKPCR	Power Control Register
- *    SKCDR	Clock Divider Register
- *    SKAUD	Audio Clock Divider Register
- *    SKPMC	PS/2 Mouse Clock Divider Register
- *    SKPTC	PS/2 Track Pad Clock Divider Register
- *    SKPEN0	PWM0 Enable Register
- *    SKPWM0	PWM0 Clock Register
- *    SKPEN1	PWM1 Enable Register
- *    SKPWM1	PWM1 Clock Register
- */
-#define SA1111_SKPCR	0x0200
-#define SA1111_SKCDR	0x0204
-#define SA1111_SKAUD	0x0208
-#define SA1111_SKPMC	0x020c
-#define SA1111_SKPTC	0x0210
-#define SA1111_SKPEN0	0x0214
-#define SA1111_SKPWM0	0x0218
-#define SA1111_SKPEN1	0x021c
-#define SA1111_SKPWM1	0x0220
-
-#define SKPCR_UCLKEN	(1<<0)
-#define SKPCR_ACCLKEN	(1<<1)
-#define SKPCR_I2SCLKEN	(1<<2)
-#define SKPCR_L3CLKEN	(1<<3)
-#define SKPCR_SCLKEN	(1<<4)
-#define SKPCR_PMCLKEN	(1<<5)
-#define SKPCR_PTCLKEN	(1<<6)
-#define SKPCR_DCLKEN	(1<<7)
-#define SKPCR_PWMCLKEN	(1<<8)
-
-/* USB Host controller */
-#define SA1111_USB		0x0400
-
-/*
- * Serial Audio Controller
- *
- * Registers
- *    SACR0             Serial Audio Common Control Register
- *    SACR1             Serial Audio Alternate Mode (I2C/MSB) Control Register
- *    SACR2             Serial Audio AC-link Control Register
- *    SASR0             Serial Audio I2S/MSB Interface & FIFO Status Register
- *    SASR1             Serial Audio AC-link Interface & FIFO Status Register
- *    SASCR             Serial Audio Status Clear Register
- *    L3_CAR            L3 Control Bus Address Register
- *    L3_CDR            L3 Control Bus Data Register
- *    ACCAR             AC-link Command Address Register
- *    ACCDR             AC-link Command Data Register
- *    ACSAR             AC-link Status Address Register
- *    ACSDR             AC-link Status Data Register
- *    SADTCS            Serial Audio DMA Transmit Control/Status Register
- *    SADTSA            Serial Audio DMA Transmit Buffer Start Address A
- *    SADTCA            Serial Audio DMA Transmit Buffer Count Register A
- *    SADTSB            Serial Audio DMA Transmit Buffer Start Address B
- *    SADTCB            Serial Audio DMA Transmit Buffer Count Register B
- *    SADRCS            Serial Audio DMA Receive Control/Status Register
- *    SADRSA            Serial Audio DMA Receive Buffer Start Address A
- *    SADRCA            Serial Audio DMA Receive Buffer Count Register A
- *    SADRSB            Serial Audio DMA Receive Buffer Start Address B
- *    SADRCB            Serial Audio DMA Receive Buffer Count Register B
- *    SAITR             Serial Audio Interrupt Test Register
- *    SADR              Serial Audio Data Register (16 x 32-bit)
- */
-
-#define SA1111_SERAUDIO		0x0600
-
-/*
- * These are offsets from the above base.
- */
-#define SA1111_SACR0		0x00
-#define SA1111_SACR1		0x04
-#define SA1111_SACR2		0x08
-#define SA1111_SASR0		0x0c
-#define SA1111_SASR1		0x10
-#define SA1111_SASCR		0x18
-#define SA1111_L3_CAR		0x1c
-#define SA1111_L3_CDR		0x20
-#define SA1111_ACCAR		0x24
-#define SA1111_ACCDR		0x28
-#define SA1111_ACSAR		0x2c
-#define SA1111_ACSDR		0x30
-#define SA1111_SADTCS		0x34
-#define SA1111_SADTSA		0x38
-#define SA1111_SADTCA		0x3c
-#define SA1111_SADTSB		0x40
-#define SA1111_SADTCB		0x44
-#define SA1111_SADRCS		0x48
-#define SA1111_SADRSA		0x4c
-#define SA1111_SADRCA		0x50
-#define SA1111_SADRSB		0x54
-#define SA1111_SADRCB		0x58
-#define SA1111_SAITR		0x5c
-#define SA1111_SADR		0x80
-
-#ifndef CONFIG_ARCH_PXA
-
-#define SACR0_ENB	(1<<0)
-#define SACR0_BCKD	(1<<2)
-#define SACR0_RST	(1<<3)
-
-#define SACR1_AMSL	(1<<0)
-#define SACR1_L3EN	(1<<1)
-#define SACR1_L3MB	(1<<2)
-#define SACR1_DREC	(1<<3)
-#define SACR1_DRPL	(1<<4)
-#define SACR1_ENLBF	(1<<5)
-
-#define SACR2_TS3V	(1<<0)
-#define SACR2_TS4V	(1<<1)
-#define SACR2_WKUP	(1<<2)
-#define SACR2_DREC	(1<<3)
-#define SACR2_DRPL	(1<<4)
-#define SACR2_ENLBF	(1<<5)
-#define SACR2_RESET	(1<<6)
-
-#define SASR0_TNF	(1<<0)
-#define SASR0_RNE	(1<<1)
-#define SASR0_BSY	(1<<2)
-#define SASR0_TFS	(1<<3)
-#define SASR0_RFS	(1<<4)
-#define SASR0_TUR	(1<<5)
-#define SASR0_ROR	(1<<6)
-#define SASR0_L3WD	(1<<16)
-#define SASR0_L3RD	(1<<17)
-
-#define SASR1_TNF	(1<<0)
-#define SASR1_RNE	(1<<1)
-#define SASR1_BSY	(1<<2)
-#define SASR1_TFS	(1<<3)
-#define SASR1_RFS	(1<<4)
-#define SASR1_TUR	(1<<5)
-#define SASR1_ROR	(1<<6)
-#define SASR1_CADT	(1<<16)
-#define SASR1_SADR	(1<<17)
-#define SASR1_RSTO	(1<<18)
-#define SASR1_CLPM	(1<<19)
-#define SASR1_CRDY	(1<<20)
-#define SASR1_RS3V	(1<<21)
-#define SASR1_RS4V	(1<<22)
-
-#define SASCR_TUR	(1<<5)
-#define SASCR_ROR	(1<<6)
-#define SASCR_DTS	(1<<16)
-#define SASCR_RDD	(1<<17)
-#define SASCR_STO	(1<<18)
-
-#define SADTCS_TDEN	(1<<0)
-#define SADTCS_TDIE	(1<<1)
-#define SADTCS_TDBDA	(1<<3)
-#define SADTCS_TDSTA	(1<<4)
-#define SADTCS_TDBDB	(1<<5)
-#define SADTCS_TDSTB	(1<<6)
-#define SADTCS_TBIU	(1<<7)
-
-#define SADRCS_RDEN	(1<<0)
-#define SADRCS_RDIE	(1<<1)
-#define SADRCS_RDBDA	(1<<3)
-#define SADRCS_RDSTA	(1<<4)
-#define SADRCS_RDBDB	(1<<5)
-#define SADRCS_RDSTB	(1<<6)
-#define SADRCS_RBIU	(1<<7)
-
-#define SAD_CS_DEN	(1<<0)
-#define SAD_CS_DIE	(1<<1)	/* Not functional on metal 1 */
-#define SAD_CS_DBDA	(1<<3)	/* Not functional on metal 1 */
-#define SAD_CS_DSTA	(1<<4)
-#define SAD_CS_DBDB	(1<<5)	/* Not functional on metal 1 */
-#define SAD_CS_DSTB	(1<<6)
-#define SAD_CS_BIU	(1<<7)	/* Not functional on metal 1 */
-
-#define SAITR_TFS	(1<<0)
-#define SAITR_RFS	(1<<1)
-#define SAITR_TUR	(1<<2)
-#define SAITR_ROR	(1<<3)
-#define SAITR_CADT	(1<<4)
-#define SAITR_SADR	(1<<5)
-#define SAITR_RSTO	(1<<6)
-#define SAITR_TDBDA	(1<<8)
-#define SAITR_TDBDB	(1<<9)
-#define SAITR_RDBDA	(1<<10)
-#define SAITR_RDBDB	(1<<11)
-
-#endif  /* !CONFIG_ARCH_PXA */
-
-/*
- * General-Purpose I/O Interface
- *
- * Registers
- *    PA_DDR		GPIO Block A Data Direction
- *    PA_DRR/PA_DWR	GPIO Block A Data Value Register (read/write)
- *    PA_SDR		GPIO Block A Sleep Direction
- *    PA_SSR		GPIO Block A Sleep State
- *    PB_DDR		GPIO Block B Data Direction
- *    PB_DRR/PB_DWR	GPIO Block B Data Value Register (read/write)
- *    PB_SDR		GPIO Block B Sleep Direction
- *    PB_SSR		GPIO Block B Sleep State
- *    PC_DDR		GPIO Block C Data Direction
- *    PC_DRR/PC_DWR	GPIO Block C Data Value Register (read/write)
- *    PC_SDR		GPIO Block C Sleep Direction
- *    PC_SSR		GPIO Block C Sleep State
- */
-
-#define SA1111_GPIO	0x1000
-
-#define SA1111_GPIO_PADDR	(0x000)
-#define SA1111_GPIO_PADRR	(0x004)
-#define SA1111_GPIO_PADWR	(0x004)
-#define SA1111_GPIO_PASDR	(0x008)
-#define SA1111_GPIO_PASSR	(0x00c)
-#define SA1111_GPIO_PBDDR	(0x010)
-#define SA1111_GPIO_PBDRR	(0x014)
-#define SA1111_GPIO_PBDWR	(0x014)
-#define SA1111_GPIO_PBSDR	(0x018)
-#define SA1111_GPIO_PBSSR	(0x01c)
-#define SA1111_GPIO_PCDDR	(0x020)
-#define SA1111_GPIO_PCDRR	(0x024)
-#define SA1111_GPIO_PCDWR	(0x024)
-#define SA1111_GPIO_PCSDR	(0x028)
-#define SA1111_GPIO_PCSSR	(0x02c)
-
-#define GPIO_A0		(1 << 0)
-#define GPIO_A1		(1 << 1)
-#define GPIO_A2		(1 << 2)
-#define GPIO_A3		(1 << 3)
-
-#define GPIO_B0		(1 << 8)
-#define GPIO_B1		(1 << 9)
-#define GPIO_B2		(1 << 10)
-#define GPIO_B3		(1 << 11)
-#define GPIO_B4		(1 << 12)
-#define GPIO_B5		(1 << 13)
-#define GPIO_B6		(1 << 14)
-#define GPIO_B7		(1 << 15)
-
-#define GPIO_C0		(1 << 16)
-#define GPIO_C1		(1 << 17)
-#define GPIO_C2		(1 << 18)
-#define GPIO_C3		(1 << 19)
-#define GPIO_C4		(1 << 20)
-#define GPIO_C5		(1 << 21)
-#define GPIO_C6		(1 << 22)
-#define GPIO_C7		(1 << 23)
-
-/*
- * Interrupt Controller
- *
- * Registers
- *    INTTEST0		Test register 0
- *    INTTEST1		Test register 1
- *    INTEN0		Interrupt Enable register 0
- *    INTEN1		Interrupt Enable register 1
- *    INTPOL0		Interrupt Polarity selection 0
- *    INTPOL1		Interrupt Polarity selection 1
- *    INTTSTSEL		Interrupt source selection
- *    INTSTATCLR0	Interrupt Status/Clear 0
- *    INTSTATCLR1	Interrupt Status/Clear 1
- *    INTSET0		Interrupt source set 0
- *    INTSET1		Interrupt source set 1
- *    WAKE_EN0		Wake-up source enable 0
- *    WAKE_EN1		Wake-up source enable 1
- *    WAKE_POL0		Wake-up polarity selection 0
- *    WAKE_POL1		Wake-up polarity selection 1
- */
-#define SA1111_INTC		0x1600
-
-/*
- * These are offsets from the above base.
- */
-#define SA1111_INTTEST0		0x0000
-#define SA1111_INTTEST1		0x0004
-#define SA1111_INTEN0		0x0008
-#define SA1111_INTEN1		0x000c
-#define SA1111_INTPOL0		0x0010
-#define SA1111_INTPOL1		0x0014
-#define SA1111_INTTSTSEL	0x0018
-#define SA1111_INTSTATCLR0	0x001c
-#define SA1111_INTSTATCLR1	0x0020
-#define SA1111_INTSET0		0x0024
-#define SA1111_INTSET1		0x0028
-#define SA1111_WAKEEN0		0x002c
-#define SA1111_WAKEEN1		0x0030
-#define SA1111_WAKEPOL0		0x0034
-#define SA1111_WAKEPOL1		0x0038
-
-/* PS/2 Trackpad and Mouse Interfaces */
-#define SA1111_KBD		0x0a00
-#define SA1111_MSE		0x0c00
-
-/* PCMCIA Interface */
-#define SA1111_PCMCIA		0x1600
-
-
-
-
-
-extern const struct bus_type sa1111_bus_type;
-
-#define SA1111_DEVID_SBI	(1 << 0)
-#define SA1111_DEVID_SK		(1 << 1)
-#define SA1111_DEVID_USB	(1 << 2)
-#define SA1111_DEVID_SAC	(1 << 3)
-#define SA1111_DEVID_SSP	(1 << 4)
-#define SA1111_DEVID_PS2	(3 << 5)
-#define SA1111_DEVID_PS2_KBD	(1 << 5)
-#define SA1111_DEVID_PS2_MSE	(1 << 6)
-#define SA1111_DEVID_GPIO	(1 << 7)
-#define SA1111_DEVID_INT	(1 << 8)
-#define SA1111_DEVID_PCMCIA	(1 << 9)
-
-struct sa1111_dev {
-	struct device	dev;
-	unsigned int	devid;
-	struct resource	res;
-	void __iomem	*mapbase;
-	unsigned int	skpcr_mask;
-	unsigned int	hwirq[6];
-	u64		dma_mask;
-};
-
-#define to_sa1111_device(x)	container_of(x, struct sa1111_dev, dev)
-
-#define sa1111_get_drvdata(d)	dev_get_drvdata(&(d)->dev)
-#define sa1111_set_drvdata(d,p)	dev_set_drvdata(&(d)->dev, p)
-
-struct sa1111_driver {
-	struct device_driver	drv;
-	unsigned int		devid;
-	int (*probe)(struct sa1111_dev *);
-	void (*remove)(struct sa1111_dev *);
-};
-
-#define SA1111_DRV(_d)	container_of_const((_d), struct sa1111_driver, drv)
-
-#define SA1111_DRIVER_NAME(_sadev) ((_sadev)->dev.driver->name)
-
-/*
- * These frob the SKPCR register, and call platform specific
- * enable/disable functions.
- */
-int sa1111_enable_device(struct sa1111_dev *);
-void sa1111_disable_device(struct sa1111_dev *);
-
-int sa1111_get_irq(struct sa1111_dev *, unsigned num);
-
-unsigned int sa1111_pll_clock(struct sa1111_dev *);
-
-#define SA1111_AUDIO_ACLINK	0
-#define SA1111_AUDIO_I2S	1
-
-void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode);
-int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate);
-int sa1111_get_audio_rate(struct sa1111_dev *sadev);
-
-int sa1111_check_dma_bug(dma_addr_t addr);
-
-int sa1111_driver_register(struct sa1111_driver *);
-void sa1111_driver_unregister(struct sa1111_driver *);
-
-struct sa1111_platform_data {
-	int	irq_base;	/* base for cascaded on-chip IRQs */
-	unsigned disable_devs;
-	void	*data;
-	int	(*enable)(void *, unsigned);
-	void	(*disable)(void *, unsigned);
-};
-
-#endif  /* _ASM_ARCH_SA1111 */
diff --git a/arch/arm/include/asm/hardware/ssp.h b/arch/arm/include/asm/hardware/ssp.h
deleted file mode 100644
index 72d176790308..000000000000
--- a/arch/arm/include/asm/hardware/ssp.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  ssp.h
- *
- *  Copyright (C) 2003 Russell King, All Rights Reserved.
- */
-#ifndef SSP_H
-#define SSP_H
-
-struct ssp_state {
-	unsigned int	cr0;
-	unsigned int	cr1;
-};
-
-int ssp_write_word(u16 data);
-int ssp_read_word(u16 *data);
-int ssp_flush(void);
-void ssp_enable(void);
-void ssp_disable(void);
-void ssp_save_state(struct ssp_state *ssp);
-void ssp_restore_state(struct ssp_state *ssp);
-int ssp_init(void);
-void ssp_exit(void);
-
-#endif
diff --git a/arch/arm/include/debug/sa1100.S b/arch/arm/include/debug/sa1100.S
deleted file mode 100644
index 7968ea52df3d..000000000000
--- a/arch/arm/include/debug/sa1100.S
+++ /dev/null
@@ -1,67 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* arch/arm/include/debug/sa1100.S
- *
- * Debugging macro include header
- *
- *  Copyright (C) 1994-1999 Russell King
- *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
-*/
-
-#define UTCR3		0x0c
-#define UTDR		0x14
-#define UTSR1		0x20
-#define UTCR3_TXE	0x00000002	/* Transmit Enable                 */
-#define UTSR1_TBY	0x00000001	/* Transmitter BusY (read)         */
-#define UTSR1_TNF	0x00000004	/* Transmit FIFO Not Full (read)   */
-
-		.macro	addruart, rp, rv, tmp
-		mrc	p15, 0, \rp, c1, c0
-		tst	\rp, #1			@ MMU enabled?
-		moveq	\rp, #0x80000000	@ physical base address
-		movne	\rp, #0xf8000000	@ virtual address
-
-		@ We probe for the active serial port here, coherently with
-		@ the comment in arch/arm/mach-sa1100/include/mach/uncompress.h.
-		@ We assume r1 can be clobbered.
-
-		@ see if Ser3 is active
-		add	\rp, \rp, #0x00050000
-		ldr	\rv, [\rp, #UTCR3]
-		tst	\rv, #UTCR3_TXE
-
-		@ if Ser3 is inactive, then try Ser1
-		addeq	\rp, \rp, #(0x00010000 - 0x00050000)
-		ldreq	\rv, [\rp, #UTCR3]
-		tsteq	\rv, #UTCR3_TXE
-
-		@ if Ser1 is inactive, then try Ser2
-		addeq	\rp, \rp, #(0x00030000 - 0x00010000)
-		ldreq	\rv, [\rp, #UTCR3]
-		tsteq	\rv, #UTCR3_TXE
-
-		@ clear top bits, and generate both phys and virt addresses
-		lsl	\rp, \rp, #8
-		lsr	\rp, \rp, #8
-		orr	\rv, \rp, #0xf8000000	@ virtual
-		orr	\rp, \rp, #0x80000000	@ physical
-
-		.endm
-
-		.macro	senduart,rd,rx
-		str	\rd, [\rx, #UTDR]
-		.endm
-
-		.macro	waituartcts,rd,rx
-		.endm
-
-		.macro	waituarttxrdy,rd,rx
-1001:		ldr	\rd, [\rx, #UTSR1]
-		tst	\rd, #UTSR1_TNF
-		beq	1001b
-		.endm
-
-		.macro	busyuart,rd,rx
-1001:		ldr	\rd, [\rx, #UTSR1]
-		tst	\rd, #UTSR1_TBY
-		bne	1001b
-		.endm
diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig
deleted file mode 100644
index d50721e39641..000000000000
--- a/arch/arm/mach-sa1100/Kconfig
+++ /dev/null
@@ -1,92 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-menuconfig ARCH_SA1100
-	bool "SA11x0 Implementations (DEPRECATED)"
-	depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5)
-	depends on !(ARCH_MOXART || ARCH_GEMINI)
-	depends on ATAGS
-	depends on CPU_LITTLE_ENDIAN
-	depends on MMU
-	select ARCH_NO_SG_CHAIN
-	select ARCH_MTD_XIP
-	select CLKSRC_MMIO
-	select CLKSRC_PXA
-	select CPU_FREQ
-	select CPU_SA1100
-	select GPIOLIB
-	select GPIOLIB_LEGACY
-	select IRQ_DOMAIN
-	select ISA
-	select NEED_MACH_MEMORY_H
-	help
-	  Support for StrongARM 11x0 based boards.
-
-	  Support for these machines will go away in 2027,
-	  unless there are any remaining users that speak up.
-
-if ARCH_SA1100
-
-config SA1100_ASSABET
-	bool "Assabet"
-	select ARM_SA1110_CPUFREQ
-	select GPIO_REG
-	select LEDS_GPIO_REGISTER
-	select REGULATOR
-	select REGULATOR_FIXED_VOLTAGE
-	help
-	  Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
-	  Microprocessor Development Board (also known as the Assabet).
-
-config ASSABET_NEPONSET
-	bool "Include support for Neponset"
-	depends on SA1100_ASSABET
-	select SA1111
-	help
-	  Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
-	  Microprocessor Development Board (Assabet)  with the SA-1111
-	  Development Board (Nepon).
-
-config SA1100_COLLIE
-	bool "Sharp Zaurus SL5500"
-	# FIXME: select ARM_SA11x0_CPUFREQ
-	select SHARP_LOCOMO
-	select SHARP_PARAM
-	select SHARP_SCOOP
-	help
-	  Say Y here to support the Sharp Zaurus SL5500 PDAs.
-
-config SA1100_H3600
-	bool "Compaq iPAQ H3600/H3700"
-	select ARM_SA1110_CPUFREQ
-	select HTC_EGPIO
-	select MFD_IPAQ_MICRO
-	help
-	  Say Y here if you intend to run this kernel on the Compaq iPAQ
-	  H3600 and H3700 handheld computers.
-
-config SA1100_JORNADA720
-	bool "HP Jornada 720"
-	# FIXME: select ARM_SA11x0_CPUFREQ
-	select SA1111
-	help
-	  Say Y here if you want to build a kernel for the HP Jornada 720
-	  handheld computer.  See 
-	  <http://h10025.www1.hp.com/ewfrf/wc/product?product=61677&cc=us&lc=en&dlc=en&product=61677#> 
-
-config SA1100_JORNADA720_SSP
-	bool "HP Jornada 720 Extended SSP driver"
-	depends on SA1100_JORNADA720
-	select SA1100_SSP
-	help
-	  Say Y here if you have a HP Jornada 7xx handheld computer and you
-	  want to access devices connected to the MCU. Those include the
-	  keyboard, touchscreen, backlight and battery. This driver also activates
-	  the generic SSP which it extends.
-
-config SA1100_SSP
-	tristate "Generic PIO SSP"
-	help
-	  Say Y here to enable support for the generic PIO SSP driver.
-	  This isn't for audio support, but for attached sensors and
-	  other devices, eg for BadgePAD 4 sensor support.
-
-endif
diff --git a/arch/arm/mach-sa1100/Makefile b/arch/arm/mach-sa1100/Makefile
deleted file mode 100644
index b5816d675152..000000000000
--- a/arch/arm/mach-sa1100/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# Makefile for the linux kernel.
-#
-
-# Common support
-obj-y := clock.o generic.o #nmi-oopser.o
-
-# Specific board support
-obj-$(CONFIG_SA1100_ASSABET)		+= assabet.o
-obj-$(CONFIG_ASSABET_NEPONSET)		+= neponset.o
-obj-$(CONFIG_SA1100_COLLIE)		+= collie.o
-obj-$(CONFIG_SA1100_H3600)		+= h3600.o h3xxx.o
-obj-$(CONFIG_SA1100_JORNADA720)		+= jornada720.o
-obj-$(CONFIG_SA1100_JORNADA720_SSP)	+= jornada720_ssp.o
-
-# Miscellaneous functions
-obj-$(CONFIG_PM)			+= pm.o sleep.o
-obj-$(CONFIG_SA1100_SSP)		+= ssp.o
-
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
deleted file mode 100644
index b001f0b6a3fa..000000000000
--- a/arch/arm/mach-sa1100/assabet.c
+++ /dev/null
@@ -1,770 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/mach-sa1100/assabet.c
- *
- * Author: Nicolas Pitre
- *
- * This file contains all Assabet-specific tweaks.
- */
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/errno.h>
-#include <linux/gpio/driver.h>
-#include <linux/gpio/gpio-reg.h>
-#include <linux/gpio/machine.h>
-#include <linux/gpio/property.h>
-#include <linux/input.h>
-#include <linux/ioport.h>
-#include <linux/property.h>
-#include <linux/platform_data/sa11x0-serial.h>
-#include <linux/regulator/fixed.h>
-#include <linux/regulator/machine.h>
-#include <linux/serial_core.h>
-#include <linux/platform_device.h>
-#include <linux/mfd/ucb1x00.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/delay.h>
-#include <linux/mm.h>
-#include <linux/leds.h>
-#include <linux/slab.h>
-
-#include <video/sa1100fb.h>
-
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/setup.h>
-#include <asm/page.h>
-#include <asm/pgtable-hwdef.h>
-#include <asm/tlbflush.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-#include <mach/assabet.h>
-#include <linux/platform_data/mfd-mcp-sa11x0.h>
-#include <mach/irqs.h>
-
-#include "generic.h"
-
-#define ASSABET_BCR_DB1110 \
-	(ASSABET_BCR_SPK_OFF    | \
-	 ASSABET_BCR_LED_GREEN  | ASSABET_BCR_LED_RED   | \
-	 ASSABET_BCR_RS232EN    | ASSABET_BCR_LCD_12RGB | \
-	 ASSABET_BCR_IRDA_MD0)
-
-#define ASSABET_BCR_DB1111 \
-	(ASSABET_BCR_SPK_OFF    | \
-	 ASSABET_BCR_LED_GREEN  | ASSABET_BCR_LED_RED   | \
-	 ASSABET_BCR_RS232EN    | ASSABET_BCR_LCD_12RGB | \
-	 ASSABET_BCR_CF_BUS_OFF | ASSABET_BCR_STEREO_LB | \
-	 ASSABET_BCR_IRDA_MD0   | ASSABET_BCR_CF_RST)
-
-unsigned long SCR_value = ASSABET_SCR_INIT;
-EXPORT_SYMBOL(SCR_value);
-
-static struct gpio_chip *assabet_bcr_gc;
-
-static const char *assabet_names[] = {
-	"cf_pwr", "cf_gfx_reset", "nsoft_reset", "irda_fsel",
-	"irda_md0", "irda_md1", "stereo_loopback", "ncf_bus_on",
-	"audio_pwr_on", "light_pwr_on", "lcd16data", "lcd_pwr_on",
-	"rs232_on", "nred_led", "ngreen_led", "vib_on",
-	"com_dtr", "com_rts", "radio_wake_mod", "i2c_enab",
-	"tvir_enab", "qmute", "radio_pwr_on", "spkr_off",
-	"rs232_valid", "com_dcd", "com_cts", "com_dsr",
-	"radio_cts", "radio_dsr", "radio_dcd", "radio_ri",
-};
-
-/* The old deprecated interface */
-void ASSABET_BCR_frob(unsigned int mask, unsigned int val)
-{
-	unsigned long m = mask, v = val;
-
-	assabet_bcr_gc->set_multiple(assabet_bcr_gc, &m, &v);
-}
-EXPORT_SYMBOL(ASSABET_BCR_frob);
-
-static void __init assabet_init_gpio(void __iomem *reg, u32 def_val)
-{
-	struct gpio_chip *gc;
-
-	writel_relaxed(def_val, reg);
-
-	gc = gpio_reg_init(NULL, reg, -1, 32, "assabet", 0xff000000, def_val,
-			   assabet_names, NULL, NULL);
-
-	if (IS_ERR(gc))
-		return;
-
-	assabet_bcr_gc = gc;
-}
-
-/*
- * The codec reset goes to three devices, so we need to release
- * the rest when any one of these requests it.  However, that
- * causes the ADV7171 to consume around 100mA - more than half
- * the LCD-blanked power.
- *
- * With the ADV7171, LCD and backlight enabled, we go over
- * budget on the MAX846 Li-Ion charger, and if no Li-Ion battery
- * is connected, the Assabet crashes.
- */
-#define RST_UCB1X00 (1 << 0)
-#define RST_UDA1341 (1 << 1)
-#define RST_ADV7171 (1 << 2)
-
-#define SDA GPIO_GPIO(15)
-#define SCK GPIO_GPIO(18)
-#define MOD GPIO_GPIO(17)
-
-static void adv7171_start(void)
-{
-	GPSR = SCK;
-	udelay(1);
-	GPSR = SDA;
-	udelay(2);
-	GPCR = SDA;
-}
-
-static void adv7171_stop(void)
-{
-	GPSR = SCK;
-	udelay(2);
-	GPSR = SDA;
-	udelay(1);
-}
-
-static void adv7171_send(unsigned byte)
-{
-	unsigned i;
-
-	for (i = 0; i < 8; i++, byte <<= 1) {
-		GPCR = SCK;
-		udelay(1);
-		if (byte & 0x80)
-			GPSR = SDA;
-		else
-			GPCR = SDA;
-		udelay(1);
-		GPSR = SCK;
-		udelay(1);
-	}
-	GPCR = SCK;
-	udelay(1);
-	GPSR = SDA;
-	udelay(1);
-	GPDR &= ~SDA;
-	GPSR = SCK;
-	udelay(1);
-	if (GPLR & SDA)
-		printk(KERN_WARNING "No ACK from ADV7171\n");
-	udelay(1);
-	GPCR = SCK | SDA;
-	udelay(1);
-	GPDR |= SDA;
-	udelay(1);
-}
-
-static void adv7171_write(unsigned reg, unsigned val)
-{
-	unsigned gpdr = GPDR;
-	unsigned gplr = GPLR;
-
-	ASSABET_BCR_frob(ASSABET_BCR_AUDIO_ON, ASSABET_BCR_AUDIO_ON);
-	udelay(100);
-
-	GPCR = SDA | SCK | MOD; /* clear L3 mode to ensure UDA1341 doesn't respond */
-	GPDR = (GPDR | SCK | MOD) & ~SDA;
-	udelay(10);
-	if (!(GPLR & SDA))
-		printk(KERN_WARNING "Something dragging SDA down?\n");
-	GPDR |= SDA;
-
-	adv7171_start();
-	adv7171_send(0x54);
-	adv7171_send(reg);
-	adv7171_send(val);
-	adv7171_stop();
-
-	/* Restore GPIO state for L3 bus */
-	GPSR = gplr & (SDA | SCK | MOD);
-	GPCR = (~gplr) & (SDA | SCK | MOD);
-	GPDR = gpdr;
-}
-
-static void adv7171_sleep(void)
-{
-	/* Put the ADV7171 into sleep mode */
-	adv7171_write(0x04, 0x40);
-}
-
-static unsigned codec_nreset;
-
-static void assabet_codec_reset(unsigned mask, int set)
-{
-	unsigned long flags;
-	bool old;
-
-	local_irq_save(flags);
-	old = !codec_nreset;
-	if (set)
-		codec_nreset &= ~mask;
-	else
-		codec_nreset |= mask;
-
-	if (old != !codec_nreset) {
-		if (codec_nreset) {
-			ASSABET_BCR_set(ASSABET_BCR_NCODEC_RST);
-			adv7171_sleep();
-		} else {
-			ASSABET_BCR_clear(ASSABET_BCR_NCODEC_RST);
-		}
-	}
-	local_irq_restore(flags);
-}
-
-static void assabet_ucb1x00_reset(enum ucb1x00_reset state)
-{
-	int set = state == UCB_RST_REMOVE || state == UCB_RST_SUSPEND ||
-		state == UCB_RST_PROBE_FAIL;
-	assabet_codec_reset(RST_UCB1X00, set);
-}
-
-void assabet_uda1341_reset(int set)
-{
-	assabet_codec_reset(RST_UDA1341, set);
-}
-EXPORT_SYMBOL(assabet_uda1341_reset);
-
-
-/*
- * Assabet flash support code.
- */
-
-#ifdef ASSABET_REV_4
-/*
- * Phase 4 Assabet has two 28F160B3 flash parts in bank 0:
- */
-static struct mtd_partition assabet_partitions[] = {
-	{
-		.name		= "bootloader",
-		.size		= 0x00020000,
-		.offset		= 0,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "bootloader params",
-		.size		= 0x00020000,
-		.offset		= MTDPART_OFS_APPEND,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "jffs",
-		.size		= MTDPART_SIZ_FULL,
-		.offset		= MTDPART_OFS_APPEND,
-	}
-};
-#else
-/*
- * Phase 5 Assabet has two 28F128J3A flash parts in bank 0:
- */
-static struct mtd_partition assabet_partitions[] = {
-	{
-		.name		= "bootloader",
-		.size		= 0x00040000,
-		.offset		= 0,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "bootloader params",
-		.size		= 0x00040000,
-		.offset		= MTDPART_OFS_APPEND,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "jffs",
-		.size		= MTDPART_SIZ_FULL,
-		.offset		= MTDPART_OFS_APPEND,
-	}
-};
-#endif
-
-static struct flash_platform_data assabet_flash_data = {
-	.map_name	= "cfi_probe",
-	.parts		= assabet_partitions,
-	.nr_parts	= ARRAY_SIZE(assabet_partitions),
-};
-
-static struct resource assabet_flash_resources[] = {
-	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M),
-	DEFINE_RES_MEM(SA1100_CS1_PHYS, SZ_32M),
-};
-
-
-static struct ucb1x00_plat_data assabet_ucb1x00_data = {
-	.reset		= assabet_ucb1x00_reset,
-	.gpio_base	= -1,
-	.can_wakeup	= 1,
-};
-
-static struct mcp_plat_data assabet_mcp_data = {
-	.mccr0		= MCCR0_ADM,
-	.sclk_rate	= 11981000,
-	.codec_pdata	= &assabet_ucb1x00_data,
-};
-
-static void assabet_lcd_set_visual(u32 visual)
-{
-	u_int is_true_color = visual == FB_VISUAL_TRUECOLOR;
-
-	if (machine_is_assabet()) {
-#if 1		// phase 4 or newer Assabet's
-		if (is_true_color)
-			ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB);
-		else
-			ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB);
-#else
-		// older Assabet's
-		if (is_true_color)
-			ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB);
-		else
-			ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB);
-#endif
-	}
-}
-
-#ifndef ASSABET_PAL_VIDEO
-static void assabet_lcd_backlight_power(int on)
-{
-	if (on)
-		ASSABET_BCR_set(ASSABET_BCR_LIGHT_ON);
-	else
-		ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON);
-}
-
-/*
- * Turn on/off the backlight.  When turning the backlight on, we wait
- * 500us after turning it on so we don't cause the supplies to droop
- * when we enable the LCD controller (and cause a hard reset.)
- */
-static void assabet_lcd_power(int on)
-{
-	if (on) {
-		ASSABET_BCR_set(ASSABET_BCR_LCD_ON);
-		udelay(500);
-	} else
-		ASSABET_BCR_clear(ASSABET_BCR_LCD_ON);
-}
-
-/*
- * The assabet uses a sharp LQ039Q2DS54 LCD module.  It is actually
- * takes an RGB666 signal, but we provide it with an RGB565 signal
- * instead (def_rgb_16).
- */
-static struct sa1100fb_mach_info lq039q2ds54_info = {
-	.pixclock	= 171521,	.bpp		= 16,
-	.xres		= 320,		.yres		= 240,
-
-	.hsync_len	= 5,		.vsync_len	= 1,
-	.left_margin	= 61,		.upper_margin	= 3,
-	.right_margin	= 9,		.lower_margin	= 0,
-
-	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-
-	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
-	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
-
-	.backlight_power = assabet_lcd_backlight_power,
-	.lcd_power = assabet_lcd_power,
-	.set_visual = assabet_lcd_set_visual,
-};
-#else
-static void assabet_pal_backlight_power(int on)
-{
-	ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON);
-}
-
-static void assabet_pal_power(int on)
-{
-	ASSABET_BCR_clear(ASSABET_BCR_LCD_ON);
-}
-
-static struct sa1100fb_mach_info pal_info = {
-	.pixclock	= 67797,	.bpp		= 16,
-	.xres		= 640,		.yres		= 512,
-
-	.hsync_len	= 64,		.vsync_len	= 6,
-	.left_margin	= 125,		.upper_margin	= 70,
-	.right_margin	= 115,		.lower_margin	= 36,
-
-	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
-	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(512),
-
-	.backlight_power = assabet_pal_backlight_power,
-	.lcd_power = assabet_pal_power,
-	.set_visual = assabet_lcd_set_visual,
-};
-#endif
-
-#ifdef CONFIG_ASSABET_NEPONSET
-static struct resource neponset_resources[] = {
-	DEFINE_RES_MEM(0x10000000, 0x08000000),
-	DEFINE_RES_MEM(0x18000000, 0x04000000),
-	DEFINE_RES_MEM(0x40000000, SZ_8K),
-	DEFINE_RES_IRQ(IRQ_GPIO25),
-};
-#endif
-
-static struct gpiod_lookup_table assabet_cf_gpio_table = {
-	.dev_id = "sa11x0-pcmcia.1",
-	.table = {
-		GPIO_LOOKUP("gpio", 21, "ready", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("gpio", 22, "detect", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("gpio", 24, "bvd2", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("gpio", 25, "bvd1", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("assabet", 1, "reset", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("assabet", 7, "bus-enable", GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct regulator_consumer_supply assabet_cf_vcc_consumers[] = {
-	REGULATOR_SUPPLY("vcc", "sa11x0-pcmcia.1"),
-};
-
-static struct fixed_voltage_config assabet_cf_vcc_pdata __initdata = {
-	.supply_name = "cf-power",
-	.microvolts = 3300000,
-};
-
-static struct gpiod_lookup_table assabet_cf_vcc_gpio_table = {
-	.dev_id = "reg-fixed-voltage.0",
-	.table = {
-		GPIO_LOOKUP("assabet", 0, NULL, GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-static struct gpiod_lookup_table assabet_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP("assabet", 13, NULL, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 14, NULL, GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpio_led assabet_leds[] __initdata = {
-	{
-		.name = "assabet:red",
-		.default_trigger = "cpu0",
-		.default_state = LEDS_GPIO_DEFSTATE_KEEP,
-	}, {
-		.name = "assabet:green",
-		.default_trigger = "heartbeat",
-		.default_state = LEDS_GPIO_DEFSTATE_KEEP,
-	},
-};
-
-static const struct gpio_led_platform_data assabet_leds_pdata __initconst = {
-	.num_leds = ARRAY_SIZE(assabet_leds),
-	.leds = assabet_leds,
-};
-
-static const struct software_node assabet_gpio_keys_node = {
-	.name = "assabet-gpio-keys",
-};
-
-static const struct property_entry assabet_key0_props[] = {
-	PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED),
-	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
-			    0, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_STRING("label", "gpio0"),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	PROPERTY_ENTRY_BOOL("linux,can-disable"),
-	PROPERTY_ENTRY_U32("debounce-interval", 5),
-	{ }
-};
-
-static const struct software_node assabet_key0_node = {
-	.parent = &assabet_gpio_keys_node,
-	.properties = assabet_key0_props,
-};
-
-static const struct property_entry assabet_key1_props[] = {
-	PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED),
-	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
-			    1, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_STRING("label", "gpio1"),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	PROPERTY_ENTRY_BOOL("linux,can-disable"),
-	PROPERTY_ENTRY_U32("debounce-interval", 5),
-	{ }
-};
-
-static const struct software_node assabet_key1_node = {
-	.parent = &assabet_gpio_keys_node,
-	.properties = assabet_key1_props,
-};
-
-static const struct software_node * const assabet_gpio_keys_swnodes[] __initconst = {
-	&assabet_gpio_keys_node,
-	&assabet_key0_node,
-	&assabet_key1_node,
-	NULL
-};
-
-static const struct platform_device_info assabet_gpio_keys_dev_info __initconst = {
-	.name = "gpio-keys",
-	.id = PLATFORM_DEVID_NONE,
-	.swnode = &assabet_gpio_keys_node,
-};
-
-static struct gpiod_lookup_table assabet_uart1_gpio_table = {
-	.dev_id = "sa11x0-uart.1",
-	.table = {
-		GPIO_LOOKUP("assabet", 16, "dtr", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 17, "rts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 25, "dcd", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 26, "cts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 27, "dsr", GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpiod_lookup_table assabet_uart3_gpio_table = {
-	.dev_id = "sa11x0-uart.3",
-	.table = {
-		GPIO_LOOKUP("assabet", 28, "cts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 29, "dsr", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 30, "dcd", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("assabet", 31, "rng", GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static void __init assabet_init(void)
-{
-	/*
-	 * Ensure that the power supply is in "high power" mode.
-	 */
-	GPSR = GPIO_GPIO16;
-	GPDR |= GPIO_GPIO16;
-
-	/*
-	 * Ensure that these pins are set as outputs and are driving
-	 * logic 0.  This ensures that we won't inadvertently toggle
-	 * the WS latch in the CPLD, and we don't float causing
-	 * excessive power drain.  --rmk
-	 */
-	GPCR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
-	GPDR |= GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
-
-	/*
-	 * Also set GPIO27 as an output; this is used to clock UART3
-	 * via the FPGA and as otherwise has no pullups or pulldowns,
-	 * so stop it floating.
-	 */
-	GPCR = GPIO_GPIO27;
-	GPDR |= GPIO_GPIO27;
-
-	/*
-	 * Set up registers for sleep mode.
-	 */
-	PWER = PWER_GPIO0;
-	PGSR = 0;
-	PCFR = 0;
-	PSDR = 0;
-	PPDR |= PPC_TXD3 | PPC_TXD1;
-	PPSR |= PPC_TXD3 | PPC_TXD1;
-
-	sa11x0_ppc_configure_mcp();
-
-	if (machine_has_neponset()) {
-#ifndef CONFIG_ASSABET_NEPONSET
-		printk( "Warning: Neponset detected but full support "
-			"hasn't been configured in the kernel\n" );
-#else
-		platform_device_register_simple("neponset", 0,
-			neponset_resources, ARRAY_SIZE(neponset_resources));
-#endif
-	} else {
-		gpiod_add_lookup_table(&assabet_uart1_gpio_table);
-		gpiod_add_lookup_table(&assabet_uart3_gpio_table);
-		gpiod_add_lookup_table(&assabet_cf_vcc_gpio_table);
-
-		sa11x0_register_fixed_regulator(0, &assabet_cf_vcc_pdata,
-					assabet_cf_vcc_consumers,
-					ARRAY_SIZE(assabet_cf_vcc_consumers),
-					true);
-
-	}
-
-	software_node_register_node_group(assabet_gpio_keys_swnodes);
-	platform_device_register_full(&assabet_gpio_keys_dev_info);
-
-	gpiod_add_lookup_table(&assabet_leds_gpio_table);
-	gpio_led_register_device(-1, &assabet_leds_pdata);
-
-#ifndef ASSABET_PAL_VIDEO
-	sa11x0_register_lcd(&lq039q2ds54_info);
-#else
-	sa11x0_register_lcd(&pal_video);
-#endif
-	sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources,
-			    ARRAY_SIZE(assabet_flash_resources));
-	sa11x0_register_mcp(&assabet_mcp_data);
-
-	if (!machine_has_neponset())
-		sa11x0_register_pcmcia(1, &assabet_cf_gpio_table);
-}
-
-/*
- * On Assabet, we must probe for the Neponset board _before_
- * paging_init() has occurred to actually determine the amount
- * of RAM available.  To do so, we map the appropriate IO section
- * in the page table here in order to access GPIO registers.
- */
-static void __init map_sa1100_gpio_regs( void )
-{
-	unsigned long phys = __PREG(GPLR) & PMD_MASK;
-	unsigned long virt = (unsigned long)io_p2v(phys);
-	int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO);
-	pmd_t *pmd;
-
-	pmd = pmd_off_k(virt);
-	*pmd = __pmd(phys | prot);
-	flush_pmd_entry(pmd);
-}
-
-/*
- * Read System Configuration "Register"
- * (taken from "Intel StrongARM SA-1110 Microprocessor Development Board
- * User's Guide", section 4.4.1)
- *
- * This same scan is performed in arch/arm/boot/compressed/head-sa1100.S
- * to set up the serial port for decompression status messages. We
- * repeat it here because the kernel may not be loaded as a zImage, and
- * also because it's a hassle to communicate the SCR value to the kernel
- * from the decompressor.
- *
- * Note that IRQs are guaranteed to be disabled.
- */
-static void __init get_assabet_scr(void)
-{
-	unsigned long scr, i;
-
-	GPDR |= 0x3fc;			/* Configure GPIO 9:2 as outputs */
-	GPSR = 0x3fc;			/* Write 0xFF to GPIO 9:2 */
-	GPDR &= ~(0x3fc);		/* Configure GPIO 9:2 as inputs */
-	for(i = 100; i--; )		/* Read GPIO 9:2 */
-		scr = GPLR;
-	GPDR |= 0x3fc;			/*  restore correct pin direction */
-	scr &= 0x3fc;			/* save as system configuration byte. */
-	SCR_value = scr;
-}
-
-static void __init
-fixup_assabet(struct tag *tags, char **cmdline)
-{
-	/* This must be done before any call to machine_has_neponset() */
-	map_sa1100_gpio_regs();
-	get_assabet_scr();
-
-	if (machine_has_neponset())
-		printk("Neponset expansion board detected\n");
-}
-
-
-static void assabet_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
-{
-	if (port->mapbase == _Ser1UTCR0) {
-		if (state)
-			ASSABET_BCR_clear(ASSABET_BCR_RS232EN);
-		else
-			ASSABET_BCR_set(ASSABET_BCR_RS232EN);
-	}
-}
-
-static struct sa1100_port_fns assabet_port_fns __initdata = {
-	.pm		= assabet_uart_pm,
-};
-
-static struct map_desc assabet_io_desc[] __initdata = {
-  	{	/* Board Control Register */
-		.virtual	=  0xf1000000,
-		.pfn		= __phys_to_pfn(0x12000000),
-		.length		= 0x00100000,
-		.type		= MT_DEVICE
-	}, {	/* MQ200 */
-		.virtual	=  0xf2800000,
-		.pfn		= __phys_to_pfn(0x4b800000),
-		.length		= 0x00800000,
-		.type		= MT_DEVICE
-	}
-};
-
-static void __init assabet_map_io(void)
-{
-	sa1100_map_io();
-	iotable_init(assabet_io_desc, ARRAY_SIZE(assabet_io_desc));
-
-	/*
-	 * Set SUS bit in SDCR0 so serial port 1 functions.
-	 * Its called GPCLKR0 in my SA1110 manual.
-	 */
-	Ser1SDCR0 |= SDCR0_SUS;
-	MSC1 = (MSC1 & ~0xffff) |
-		MSC_NonBrst | MSC_32BitStMem |
-		MSC_RdAcc(2) | MSC_WrAcc(2) | MSC_Rec(0);
-
-	if (!machine_has_neponset())
-		sa1100_register_uart_fns(&assabet_port_fns);
-
-	/*
-	 * When Neponset is attached, the first UART should be
-	 * UART3.  That's what Angel is doing and many documents
-	 * are stating this.
-	 *
-	 * We do the Neponset mapping even if Neponset support
-	 * isn't compiled in so the user will still get something on
-	 * the expected physical serial port.
-	 *
-	 * We no longer do this; not all boot loaders support it,
-	 * and UART3 appears to be somewhat unreliable with blob.
-	 */
-	sa1100_register_uart(0, 1);
-	sa1100_register_uart(2, 3);
-}
-
-static void __init assabet_init_irq(void)
-{
-	u32 def_val;
-
-	sa1100_init_irq();
-
-	if (machine_has_neponset())
-		def_val = ASSABET_BCR_DB1111;
-	else
-		def_val = ASSABET_BCR_DB1110;
-
-	/*
-	 * Angel sets this, but other bootloaders may not.
-	 *
-	 * This must precede any driver calls to BCR_set() or BCR_clear().
-	 */
-	assabet_init_gpio((void *)&ASSABET_BCR, def_val);
-}
-
-MACHINE_START(ASSABET, "Intel-Assabet")
-	.atag_offset	= 0x100,
-	.fixup		= fixup_assabet,
-	.map_io		= assabet_map_io,
-	.nr_irqs	= SA1100_NR_IRQS,
-	.init_irq	= assabet_init_irq,
-	.init_time	= sa1100_timer_init,
-	.init_machine	= assabet_init,
-	.init_late	= sa11x0_init_late,
-#ifdef CONFIG_SA1111
-	.dma_zone_size	= SZ_1M,
-#endif
-	.restart	= sa11x0_restart,
-MACHINE_END
diff --git a/arch/arm/mach-sa1100/clock.c b/arch/arm/mach-sa1100/clock.c
deleted file mode 100644
index eafeb38502af..000000000000
--- a/arch/arm/mach-sa1100/clock.c
+++ /dev/null
@@ -1,145 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- *  linux/arch/arm/mach-sa1100/clock.c
- */
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/clkdev.h>
-#include <linux/clk-provider.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-
-#include <mach/hardware.h>
-#include <mach/generic.h>
-
-static const char * const clk_tucr_parents[] = {
-	"clk32768", "clk3686400",
-};
-
-static DEFINE_SPINLOCK(tucr_lock);
-
-static int clk_gpio27_enable(struct clk_hw *hw)
-{
-	unsigned long flags;
-
-	/*
-	 * First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
-	 * (SA-1110 Developer's Manual, section 9.1.2.1)
-	 */
-	local_irq_save(flags);
-	GAFR |= GPIO_32_768kHz;
-	GPDR |= GPIO_32_768kHz;
-	local_irq_restore(flags);
-
-	return 0;
-}
-
-static void clk_gpio27_disable(struct clk_hw *hw)
-{
-	unsigned long flags;
-
-	local_irq_save(flags);
-	GPDR &= ~GPIO_32_768kHz;
-	GAFR &= ~GPIO_32_768kHz;
-	local_irq_restore(flags);
-}
-
-static const struct clk_ops clk_gpio27_ops = {
-	.enable = clk_gpio27_enable,
-	.disable = clk_gpio27_disable,
-};
-
-static const char * const clk_gpio27_parents[] = {
-	"tucr-mux",
-};
-
-static const struct clk_init_data clk_gpio27_init_data __initconst = {
-	.name = "gpio27",
-	.ops = &clk_gpio27_ops,
-	.parent_names = clk_gpio27_parents,
-	.num_parents = ARRAY_SIZE(clk_gpio27_parents),
-};
-
-/*
- * Derived from the table 8-1 in the SA1110 manual, the MPLL appears to
- * multiply its input rate by 4 x (4 + PPCR).  This calculation gives
- * the exact rate.  The figures given in the table are the rates rounded
- * to 100kHz.  Stick with sa11x0_getspeed() for the time being.
- */
-static unsigned long clk_mpll_recalc_rate(struct clk_hw *hw,
-	unsigned long prate)
-{
-	return sa11x0_getspeed(0) * 1000;
-}
-
-static const struct clk_ops clk_mpll_ops = {
-	.recalc_rate = clk_mpll_recalc_rate,
-};
-
-static const char * const clk_mpll_parents[] = {
-	"clk3686400",
-};
-
-static const struct clk_init_data clk_mpll_init_data __initconst = {
-	.name = "mpll",
-	.ops = &clk_mpll_ops,
-	.parent_names = clk_mpll_parents,
-	.num_parents = ARRAY_SIZE(clk_mpll_parents),
-	.flags = CLK_GET_RATE_NOCACHE | CLK_IS_CRITICAL,
-};
-
-int __init sa11xx_clk_init(void)
-{
-	struct clk_hw *hw;
-	int ret;
-
-	hw = clk_hw_register_fixed_rate(NULL, "clk32768", NULL, 0, 32768);
-	if (IS_ERR(hw))
-		return PTR_ERR(hw);
-
-	clk_hw_register_clkdev(hw, NULL, "sa1100-rtc");
-
-	hw = clk_hw_register_fixed_rate(NULL, "clk3686400", NULL, 0, 3686400);
-	if (IS_ERR(hw))
-		return PTR_ERR(hw);
-
-	clk_hw_register_clkdev(hw, "OSTIMER0", NULL);
-
-	hw = kzalloc_obj(*hw);
-	if (!hw)
-		return -ENOMEM;
-	hw->init = &clk_mpll_init_data;
-	ret = clk_hw_register(NULL, hw);
-	if (ret) {
-		kfree(hw);
-		return ret;
-	}
-
-	clk_hw_register_clkdev(hw, NULL, "sa11x0-fb");
-	clk_hw_register_clkdev(hw, NULL, "sa11x0-pcmcia");
-	clk_hw_register_clkdev(hw, NULL, "sa11x0-pcmcia.0");
-	clk_hw_register_clkdev(hw, NULL, "sa11x0-pcmcia.1");
-	clk_hw_register_clkdev(hw, NULL, "1800");
-
-	hw = clk_hw_register_mux(NULL, "tucr-mux", clk_tucr_parents,
-				 ARRAY_SIZE(clk_tucr_parents), 0,
-				 (void __iomem *)&TUCR, FShft(TUCR_TSEL),
-				 FAlnMsk(TUCR_TSEL), 0, &tucr_lock);
-	clk_set_rate(hw->clk, 3686400);
-
-	hw = kzalloc_obj(*hw);
-	if (!hw)
-		return -ENOMEM;
-	hw->init = &clk_gpio27_init_data;
-	ret = clk_hw_register(NULL, hw);
-	if (ret) {
-		kfree(hw);
-		return ret;
-	}
-
-	clk_hw_register_clkdev(hw, NULL, "sa1111.0");
-
-	return 0;
-}
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
deleted file mode 100644
index d1931f51c900..000000000000
--- a/arch/arm/mach-sa1100/collie.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * linux/arch/arm/mach-sa1100/collie.c
- *
- * May be copied or modified under the terms of the GNU General Public
- * License.  See linux/COPYING for more information.
- *
- * This file contains all Collie-specific tweaks.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * ChangeLog:
- *  2006 Pavel Machek <pavel@ucw.cz>
- *  03-06-2004 John Lenz <lenz@cs.wisc.edu>
- *  06-04-2002 Chris Larson <kergoth@digitalnemesis.net>
- *  04-16-2001 Lineo Japan,Inc. ...
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/tty.h>
-#include <linux/delay.h>
-#include <linux/platform_data/sa11x0-serial.h>
-#include <linux/platform_device.h>
-#include <linux/mfd/ucb1x00.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/timer.h>
-#include <linux/gpio/property.h>
-#include <linux/input.h>
-#include <linux/gpio/legacy.h>
-#include <linux/gpio/machine.h>
-#include <linux/property.h>
-#include <linux/power/gpio-charger.h>
-
-#include <video/sa1100fb.h>
-
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/page.h>
-#include <asm/setup.h>
-#include <mach/collie.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <asm/hardware/scoop.h>
-#include <asm/mach/sharpsl_param.h>
-#include <asm/hardware/locomo.h>
-#include <linux/platform_data/mfd-mcp-sa11x0.h>
-#include <mach/irqs.h>
-
-#include "generic.h"
-
-static struct resource collie_scoop_resources[] = {
-	[0] = DEFINE_RES_MEM(0x40800000, SZ_4K),
-};
-
-static struct scoop_config collie_scoop_setup = {
-	.io_dir 	= COLLIE_SCOOP_IO_DIR,
-	.io_out		= COLLIE_SCOOP_IO_OUT,
-	.gpio_base	= COLLIE_SCOOP_GPIO_BASE,
-};
-
-struct platform_device colliescoop_device = {
-	.name		= "sharp-scoop",
-	.id		= -1,
-	.dev		= {
- 		.platform_data	= &collie_scoop_setup,
-	},
-	.num_resources	= ARRAY_SIZE(collie_scoop_resources),
-	.resource	= collie_scoop_resources,
-};
-
-static struct scoop_pcmcia_dev collie_pcmcia_scoop[] = {
-	{
-	.dev		= &colliescoop_device.dev,
-	.irq		= COLLIE_IRQ_GPIO_CF_IRQ,
-	.cd_irq		= COLLIE_IRQ_GPIO_CF_CD,
-	.cd_irq_str	= "PCMCIA0 CD",
-	},
-};
-
-static struct scoop_pcmcia_config collie_pcmcia_config = {
-	.devs		= &collie_pcmcia_scoop[0],
-	.num_devs	= 1,
-};
-
-static struct ucb1x00_plat_data collie_ucb1x00_data = {
-	.gpio_base	= COLLIE_TC35143_GPIO_BASE,
-};
-
-static struct mcp_plat_data collie_mcp_data = {
-	.mccr0		= MCCR0_ADM | MCCR0_ExtClk,
-	.sclk_rate	= 9216000,
-	.codec_pdata	= &collie_ucb1x00_data,
-};
-
-/* Battery management GPIOs */
-static struct gpiod_lookup_table collie_battery_gpiod_table = {
-	/* the MCP codec mcp0 has the ucb1x00 as attached device */
-	.dev_id = "ucb1x00",
-	.table = {
-		/* This is found on the main GPIO on the SA1100 */
-		GPIO_LOOKUP("gpio", COLLIE_GPIO_CO,
-			    "main battery full", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("gpio", COLLIE_GPIO_MAIN_BAT_LOW,
-			    "main battery low", GPIO_ACTIVE_HIGH),
-		/*
-		 * This is GPIO 0 on the Scoop expander, which is registered
-		 * from common/scoop.c with this gpio chip label.
-		 */
-		GPIO_LOOKUP("sharp-scoop", 0,
-			    "main charge on", GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-/*
- * Collie AC IN
- */
-static struct gpiod_lookup_table collie_power_gpiod_table = {
-	.dev_id = "gpio-charger",
-	.table = {
-		GPIO_LOOKUP("gpio", COLLIE_GPIO_AC_IN,
-			    NULL, GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-static char *collie_ac_supplied_to[] = {
-	"main-battery",
-	"backup-battery",
-};
-
-static struct gpio_charger_platform_data collie_power_data = {
-	.name			= "charger",
-	.type			= POWER_SUPPLY_TYPE_MAINS,
-	.supplied_to		= collie_ac_supplied_to,
-	.num_supplicants	= ARRAY_SIZE(collie_ac_supplied_to),
-};
-
-static struct platform_device collie_power_device = {
-	.name			= "gpio-charger",
-	.id			= -1,
-	.dev.platform_data	= &collie_power_data,
-};
-
-#ifdef CONFIG_SHARP_LOCOMO
-/*
- * low-level UART features.
- */
-struct platform_device collie_locomo_device;
-
-static void collie_uart_set_mctrl(struct uart_port *port, u_int mctrl)
-{
-	if (mctrl & TIOCM_RTS)
-		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_RTS, 0);
-	else
-		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_RTS, 1);
-
-	if (mctrl & TIOCM_DTR)
-		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_DTR, 0);
-	else
-		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_DTR, 1);
-}
-
-static u_int collie_uart_get_mctrl(struct uart_port *port)
-{
-	int ret = TIOCM_CD;
-	unsigned int r;
-
-	r = locomo_gpio_read_output(&collie_locomo_device.dev, LOCOMO_GPIO_CTS & LOCOMO_GPIO_DSR);
-	if (r == -ENODEV)
-		return ret;
-	if (r & LOCOMO_GPIO_CTS)
-		ret |= TIOCM_CTS;
-	if (r & LOCOMO_GPIO_DSR)
-		ret |= TIOCM_DSR;
-
-	return ret;
-}
-
-static struct sa1100_port_fns collie_port_fns __initdata = {
-	.set_mctrl	= collie_uart_set_mctrl,
-	.get_mctrl	= collie_uart_get_mctrl,
-};
-
-static int collie_uart_probe(struct locomo_dev *dev)
-{
-	return 0;
-}
-
-static struct locomo_driver collie_uart_driver = {
-	.drv = {
-		.name = "collie_uart",
-	},
-	.devid	= LOCOMO_DEVID_UART,
-	.probe	= collie_uart_probe,
-};
-
-static int __init collie_uart_init(void)
-{
-	return locomo_driver_register(&collie_uart_driver);
-}
-device_initcall(collie_uart_init);
-
-#endif
-
-
-static struct resource locomo_resources[] = {
-	[0] = DEFINE_RES_MEM(0x40000000, SZ_8K),
-	[1] = DEFINE_RES_IRQ(IRQ_GPIO25),
-};
-
-static struct locomo_platform_data locomo_info = {
-	.irq_base	= IRQ_BOARD_START,
-};
-
-struct platform_device collie_locomo_device = {
-	.name		= "locomo",
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &locomo_info,
-	},
-	.num_resources	= ARRAY_SIZE(locomo_resources),
-	.resource	= locomo_resources,
-};
-
-static const struct software_node collie_gpio_keys_node = {
-	.name = "collie-gpio-keys",
-};
-
-static const struct property_entry collie_on_key_props[] = {
-	PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED),
-	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
-			    COLLIE_GPIO_ON_KEY, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_STRING("label", "On key"),
-	PROPERTY_ENTRY_U32("linux,input-type", EV_PWR),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	{ }
-};
-
-static const struct software_node collie_on_key_node = {
-	.parent = &collie_gpio_keys_node,
-	.properties = collie_on_key_props,
-};
-
-static const struct property_entry collie_wakeup_key_props[] = {
-	PROPERTY_ENTRY_U32("linux,code", KEY_WAKEUP),
-	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
-			    COLLIE_GPIO_WAKEUP, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_STRING("label", "Sync"),
-	PROPERTY_ENTRY_U32("linux,input-type", EV_PWR),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	{ }
-};
-
-static const struct software_node collie_wakeup_key_node = {
-	.parent = &collie_gpio_keys_node,
-	.properties = collie_wakeup_key_props,
-};
-
-static const struct software_node * const collie_gpio_keys_swnodes[] __initconst = {
-	&collie_gpio_keys_node,
-	&collie_on_key_node,
-	&collie_wakeup_key_node,
-	NULL
-};
-
-static const struct platform_device_info collie_gpio_keys_dev_info __initconst = {
-	.name = "gpio-keys",
-	.id = PLATFORM_DEVID_NONE,
-	.swnode = &collie_gpio_keys_node,
-};
-
-static struct platform_device *devices[] __initdata = {
-	&collie_locomo_device,
-	&colliescoop_device,
-	&collie_power_device,
-};
-
-static struct mtd_partition collie_partitions[] = {
-	{
-		.name		= "bootloader",
-		.offset 	= 0,
-		.size		= 0x000C0000,
-		.mask_flags	= MTD_WRITEABLE
-	}, {
-		.name		= "kernel",
-		.offset 	= MTDPART_OFS_APPEND,
-		.size		= 0x00100000,
-	}, {
-		.name		= "rootfs",
-		.offset 	= MTDPART_OFS_APPEND,
-		.size		= 0x00e20000,
-	}, {
-		.name		= "bootblock",
-		.offset		= MTDPART_OFS_APPEND,
-		.size		= 0x00020000,
-		.mask_flags	= MTD_WRITEABLE
-	}
-};
-
-static int collie_flash_init(void)
-{
-	int rc = gpio_request(COLLIE_GPIO_VPEN, "flash Vpp enable");
-	if (rc)
-		return rc;
-
-	rc = gpio_direction_output(COLLIE_GPIO_VPEN, 1);
-	if (rc)
-		gpio_free(COLLIE_GPIO_VPEN);
-
-	return rc;
-}
-
-static void collie_set_vpp(int vpp)
-{
-	gpio_set_value(COLLIE_GPIO_VPEN, vpp);
-}
-
-static void collie_flash_exit(void)
-{
-	gpio_free(COLLIE_GPIO_VPEN);
-}
-
-static struct flash_platform_data collie_flash_data = {
-	.map_name	= "cfi_probe",
-	.init		= collie_flash_init,
-	.set_vpp	= collie_set_vpp,
-	.exit		= collie_flash_exit,
-	.parts		= collie_partitions,
-	.nr_parts	= ARRAY_SIZE(collie_partitions),
-};
-
-static struct resource collie_flash_resources[] = {
-	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M),
-};
-
-static struct sa1100fb_mach_info collie_lcd_info = {
-	.pixclock	= 171521,	.bpp		= 16,
-	.xres		= 320,		.yres		= 240,
-
-	.hsync_len	= 5,		.vsync_len	= 1,
-	.left_margin	= 11,		.upper_margin	= 2,
-	.right_margin	= 30,		.lower_margin	= 0,
-
-	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-
-	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
-	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
-
-#ifdef CONFIG_BACKLIGHT_LOCOMO
-	.lcd_power	= locomolcd_power
-#endif
-};
-
-static void __init collie_init(void)
-{
-	int ret = 0;
-
-	/* cpu initialize */
-	GAFR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK |
-		GPIO_MCP_CLK | GPIO_32_768kHz;
-
-	GPDR = GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 |
-		GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD |
-		GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK |
-		_COLLIE_GPIO_UCB1x00_RESET | _COLLIE_GPIO_nMIC_ON |
-		_COLLIE_GPIO_nREMOCON_ON | GPIO_32_768kHz;
-
-	PPDR = PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 |
-		PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS |
-		PPC_TXD1 | PPC_TXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM;
-
-	PWER = 0;
-
-	PGSR = _COLLIE_GPIO_nREMOCON_ON;
-
-	PSDR = PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4;
-
-	PCFR = PCFR_OPDE;
-
-	GPSR |= _COLLIE_GPIO_UCB1x00_RESET;
-
-	sa11x0_ppc_configure_mcp();
-
-
-	platform_scoop_config = &collie_pcmcia_config;
-
-	gpiod_add_lookup_table(&collie_power_gpiod_table);
-	gpiod_add_lookup_table(&collie_battery_gpiod_table);
-
-	ret = platform_add_devices(devices, ARRAY_SIZE(devices));
-	if (ret) {
-		printk(KERN_WARNING "collie: Unable to register LoCoMo device\n");
-	}
-
-	software_node_register_node_group(collie_gpio_keys_swnodes);
-	platform_device_register_full(&collie_gpio_keys_dev_info);
-
-	sa11x0_register_lcd(&collie_lcd_info);
-	sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
-			    ARRAY_SIZE(collie_flash_resources));
-	sa11x0_register_mcp(&collie_mcp_data);
-
-	sharpsl_save_param();
-}
-
-static struct map_desc collie_io_desc[] __initdata = {
-	{	/* 32M main flash (cs0) */
-		.virtual	= 0xe8000000,
-		.pfn		= __phys_to_pfn(0x00000000),
-		.length		= 0x02000000,
-		.type		= MT_DEVICE
-	}, {	/* 32M boot flash (cs1) */
-		.virtual	= 0xea000000,
-		.pfn		= __phys_to_pfn(0x08000000),
-		.length		= 0x02000000,
-		.type		= MT_DEVICE
-	}
-};
-
-static void __init collie_map_io(void)
-{
-	sa1100_map_io();
-	iotable_init(collie_io_desc, ARRAY_SIZE(collie_io_desc));
-
-#ifdef CONFIG_SHARP_LOCOMO
-	sa1100_register_uart_fns(&collie_port_fns);
-#endif
-	sa1100_register_uart(0, 3);
-	sa1100_register_uart(1, 1);
-}
-
-MACHINE_START(COLLIE, "Sharp-Collie")
-	.map_io		= collie_map_io,
-	.nr_irqs	= SA1100_NR_IRQS,
-	.init_irq	= sa1100_init_irq,
-	.init_time	= sa1100_timer_init,
-	.init_machine	= collie_init,
-	.init_late	= sa11x0_init_late,
-	.restart	= sa11x0_restart,
-MACHINE_END
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c
deleted file mode 100644
index a995625ab1a0..000000000000
--- a/arch/arm/mach-sa1100/generic.c
+++ /dev/null
@@ -1,470 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/mach-sa1100/generic.c
- *
- * Author: Nicolas Pitre
- *
- * Code common to all SA11x0 machines.
- */
-#include <linux/gpio/consumer.h>
-#include <linux/gpio/machine.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/dma-mapping.h>
-#include <linux/pm.h>
-#include <linux/cpufreq.h>
-#include <linux/ioport.h>
-#include <linux/platform_device.h>
-#include <linux/reboot.h>
-#include <linux/regulator/fixed.h>
-#include <linux/regulator/machine.h>
-#include <linux/irqchip/irq-sa11x0.h>
-
-#include <video/sa1100fb.h>
-
-#include <soc/sa1100/pwer.h>
-
-#include <asm/div64.h>
-#include <asm/mach/map.h>
-#include <asm/mach/flash.h>
-#include <asm/irq.h>
-#include <asm/system_misc.h>
-
-#include <mach/hardware.h>
-#include <mach/irqs.h>
-#include <mach/reset.h>
-
-#include "generic.h"
-#include <clocksource/pxa.h>
-
-#define NR_FREQS	16
-
-/*
- * This table is setup for a 3.6864MHz Crystal.
- */
-struct cpufreq_frequency_table sa11x0_freq_table[NR_FREQS+1] = {
-	{ .frequency = 59000,	/*  59.0 MHz */},
-	{ .frequency = 73700,	/*  73.7 MHz */},
-	{ .frequency = 88500,	/*  88.5 MHz */},
-	{ .frequency = 103200,	/* 103.2 MHz */},
-	{ .frequency = 118000,	/* 118.0 MHz */},
-	{ .frequency = 132700,	/* 132.7 MHz */},
-	{ .frequency = 147500,	/* 147.5 MHz */},
-	{ .frequency = 162200,	/* 162.2 MHz */},
-	{ .frequency = 176900,	/* 176.9 MHz */},
-	{ .frequency = 191700,	/* 191.7 MHz */},
-	{ .frequency = 206400,	/* 206.4 MHz */},
-	{ .frequency = 221200,	/* 221.2 MHz */},
-	{ .frequency = 235900,	/* 235.9 MHz */},
-	{ .frequency = 250700,	/* 250.7 MHz */},
-	{ .frequency = 265400,	/* 265.4 MHz */},
-	{ .frequency = 280200,	/* 280.2 MHz */},
-	{ .frequency = CPUFREQ_TABLE_END, },
-};
-
-unsigned int sa11x0_getspeed(unsigned int cpu)
-{
-	if (cpu)
-		return 0;
-	return sa11x0_freq_table[PPCR & 0xf].frequency;
-}
-
-/*
- * Default power-off for SA1100
- */
-static void sa1100_power_off(void)
-{
-	mdelay(100);
-	local_irq_disable();
-	/* disable internal oscillator, float CS lines */
-	PCFR = (PCFR_OPDE | PCFR_FP | PCFR_FS);
-	/* enable wake-up on GPIO0 (Assabet...) */
-	PWER = GFER = GRER = 1;
-	/*
-	 * set scratchpad to zero, just in case it is used as a
-	 * restart address by the bootloader.
-	 */
-	PSPR = 0;
-	/* enter sleep mode */
-	PMCR = PMCR_SF;
-}
-
-void sa11x0_restart(enum reboot_mode mode, const char *cmd)
-{
-	clear_reset_status(RESET_STATUS_ALL);
-
-	if (mode == REBOOT_SOFT) {
-		/* Jump into ROM at address 0 */
-		soft_restart(0);
-	} else {
-		/* Use on-chip reset capability */
-		RSRR = RSRR_SWR;
-	}
-}
-
-static void sa11x0_register_device(struct platform_device *dev, void *data)
-{
-	int err;
-	dev->dev.platform_data = data;
-	err = platform_device_register(dev);
-	if (err)
-		printk(KERN_ERR "Unable to register device %s: %d\n",
-			dev->name, err);
-}
-
-
-static struct resource sa11x0udc_resources[] = {
-	[0] = DEFINE_RES_MEM(__PREG(Ser0UDCCR), SZ_64K),
-	[1] = DEFINE_RES_IRQ(IRQ_Ser0UDC),
-};
-
-static u64 sa11x0udc_dma_mask = 0xffffffffUL;
-
-static struct platform_device sa11x0udc_device = {
-	.name		= "sa11x0-udc",
-	.id		= -1,
-	.dev		= {
-		.dma_mask = &sa11x0udc_dma_mask,
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(sa11x0udc_resources),
-	.resource	= sa11x0udc_resources,
-};
-
-static struct resource sa11x0uart1_resources[] = {
-	[0] = DEFINE_RES_MEM(__PREG(Ser1UTCR0), SZ_64K),
-	[1] = DEFINE_RES_IRQ(IRQ_Ser1UART),
-};
-
-static struct platform_device sa11x0uart1_device = {
-	.name		= "sa11x0-uart",
-	.id		= 1,
-	.num_resources	= ARRAY_SIZE(sa11x0uart1_resources),
-	.resource	= sa11x0uart1_resources,
-};
-
-static struct resource sa11x0uart3_resources[] = {
-	[0] = DEFINE_RES_MEM(__PREG(Ser3UTCR0), SZ_64K),
-	[1] = DEFINE_RES_IRQ(IRQ_Ser3UART),
-};
-
-static struct platform_device sa11x0uart3_device = {
-	.name		= "sa11x0-uart",
-	.id		= 3,
-	.num_resources	= ARRAY_SIZE(sa11x0uart3_resources),
-	.resource	= sa11x0uart3_resources,
-};
-
-static struct resource sa11x0mcp_resources[] = {
-	[0] = DEFINE_RES_MEM(__PREG(Ser4MCCR0), SZ_64K),
-	[1] = DEFINE_RES_MEM(__PREG(Ser4MCCR1), 4),
-	[2] = DEFINE_RES_IRQ(IRQ_Ser4MCP),
-};
-
-static u64 sa11x0mcp_dma_mask = 0xffffffffUL;
-
-static struct platform_device sa11x0mcp_device = {
-	.name		= "sa11x0-mcp",
-	.id		= -1,
-	.dev = {
-		.dma_mask = &sa11x0mcp_dma_mask,
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(sa11x0mcp_resources),
-	.resource	= sa11x0mcp_resources,
-};
-
-void __init sa11x0_ppc_configure_mcp(void)
-{
-	/* Setup the PPC unit for the MCP */
-	PPDR &= ~PPC_RXD4;
-	PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
-	PSDR |= PPC_RXD4;
-	PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
-	PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
-}
-
-void sa11x0_register_mcp(struct mcp_plat_data *data)
-{
-	sa11x0_register_device(&sa11x0mcp_device, data);
-}
-
-static struct resource sa11x0ssp_resources[] = {
-	[0] = DEFINE_RES_MEM(0x80070000, SZ_64K),
-	[1] = DEFINE_RES_IRQ(IRQ_Ser4SSP),
-};
-
-static u64 sa11x0ssp_dma_mask = 0xffffffffUL;
-
-static struct platform_device sa11x0ssp_device = {
-	.name		= "sa11x0-ssp",
-	.id		= -1,
-	.dev = {
-		.dma_mask = &sa11x0ssp_dma_mask,
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(sa11x0ssp_resources),
-	.resource	= sa11x0ssp_resources,
-};
-
-static struct resource sa11x0fb_resources[] = {
-	[0] = DEFINE_RES_MEM(0xb0100000, SZ_64K),
-	[1] = DEFINE_RES_IRQ(IRQ_LCD),
-};
-
-static struct platform_device sa11x0fb_device = {
-	.name		= "sa11x0-fb",
-	.id		= -1,
-	.dev = {
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(sa11x0fb_resources),
-	.resource	= sa11x0fb_resources,
-};
-
-void sa11x0_register_lcd(struct sa1100fb_mach_info *inf)
-{
-	sa11x0_register_device(&sa11x0fb_device, inf);
-}
-
-void sa11x0_register_pcmcia(int socket, struct gpiod_lookup_table *table)
-{
-	if (table)
-		gpiod_add_lookup_table(table);
-	platform_device_register_simple("sa11x0-pcmcia", socket, NULL, 0);
-}
-
-static struct platform_device sa11x0mtd_device = {
-	.name		= "sa1100-mtd",
-	.id		= -1,
-};
-
-void sa11x0_register_mtd(struct flash_platform_data *flash,
-			 struct resource *res, int nr)
-{
-	flash->name = "sa1100";
-	sa11x0mtd_device.resource = res;
-	sa11x0mtd_device.num_resources = nr;
-	sa11x0_register_device(&sa11x0mtd_device, flash);
-}
-
-static struct resource sa1100_rtc_resources[] = {
-	DEFINE_RES_MEM(0x90010000, 0x40),
-	DEFINE_RES_IRQ_NAMED(IRQ_RTC1Hz, "rtc 1Hz"),
-	DEFINE_RES_IRQ_NAMED(IRQ_RTCAlrm, "rtc alarm"),
-};
-
-static struct platform_device sa11x0rtc_device = {
-	.name		= "sa1100-rtc",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(sa1100_rtc_resources),
-	.resource	= sa1100_rtc_resources,
-};
-
-static struct resource sa11x0dma_resources[] = {
-	DEFINE_RES_MEM(DMA_PHYS, DMA_SIZE),
-	DEFINE_RES_IRQ(IRQ_DMA0),
-	DEFINE_RES_IRQ(IRQ_DMA1),
-	DEFINE_RES_IRQ(IRQ_DMA2),
-	DEFINE_RES_IRQ(IRQ_DMA3),
-	DEFINE_RES_IRQ(IRQ_DMA4),
-	DEFINE_RES_IRQ(IRQ_DMA5),
-};
-
-static u64 sa11x0dma_dma_mask = DMA_BIT_MASK(32);
-
-static struct platform_device sa11x0dma_device = {
-	.name		= "sa11x0-dma",
-	.id		= -1,
-	.dev = {
-		.dma_mask = &sa11x0dma_dma_mask,
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(sa11x0dma_resources),
-	.resource	= sa11x0dma_resources,
-};
-
-static struct platform_device *sa11x0_devices[] __initdata = {
-	&sa11x0udc_device,
-	&sa11x0uart1_device,
-	&sa11x0uart3_device,
-	&sa11x0ssp_device,
-	&sa11x0rtc_device,
-	&sa11x0dma_device,
-};
-
-static int __init sa1100_init(void)
-{
-	struct resource wdt_res = DEFINE_RES_MEM(0x90000000, 0x20);
-	register_platform_power_off(sa1100_power_off);
-
-	regulator_has_full_constraints();
-
-	platform_device_register_simple("sa1100_wdt", -1, &wdt_res, 1);
-
-	return platform_add_devices(sa11x0_devices, ARRAY_SIZE(sa11x0_devices));
-}
-
-arch_initcall(sa1100_init);
-
-void __init sa11x0_init_late(void)
-{
-	sa11x0_pm_init();
-}
-
-int __init sa11x0_register_fixed_regulator(int n,
-	struct fixed_voltage_config *cfg,
-	struct regulator_consumer_supply *supplies, unsigned num_supplies,
-	bool uses_gpio)
-{
-	struct regulator_init_data *id;
-
-	cfg->init_data = id = kzalloc_obj(*cfg->init_data);
-	if (!cfg->init_data)
-		return -ENOMEM;
-
-	if (!uses_gpio)
-		id->constraints.always_on = 1;
-	id->constraints.name = cfg->supply_name;
-	id->constraints.min_uV = cfg->microvolts;
-	id->constraints.max_uV = cfg->microvolts;
-	id->constraints.valid_modes_mask = REGULATOR_MODE_NORMAL;
-	id->constraints.valid_ops_mask = REGULATOR_CHANGE_STATUS;
-	id->consumer_supplies = supplies;
-	id->num_consumer_supplies = num_supplies;
-
-	platform_device_register_resndata(NULL, "reg-fixed-voltage", n,
-					  NULL, 0, cfg, sizeof(*cfg));
-	return 0;
-}
-
-/*
- * Common I/O mapping:
- *
- * Typically, static virtual address mappings are as follow:
- *
- * 0xf0000000-0xf3ffffff:	miscellaneous stuff (CPLDs, etc.)
- * 0xf4000000-0xf4ffffff:	SA-1111
- * 0xf5000000-0xf5ffffff:	reserved (used by cache flushing area)
- * 0xf6000000-0xfffeffff:	reserved (internal SA1100 IO defined above)
- * 0xffff0000-0xffff0fff:	SA1100 exception vectors
- * 0xffff2000-0xffff2fff:	Minicache copy_user_page area
- *
- * Below 0xe8000000 is reserved for vm allocation.
- *
- * The machine specific code must provide the extra mapping beside the
- * default mapping provided here.
- */
-
-static struct map_desc standard_io_desc[] __initdata = {
-	{	/* PCM */
-		.virtual	=  0xf8000000,
-		.pfn		= __phys_to_pfn(0x80000000),
-		.length		= 0x00100000,
-		.type		= MT_DEVICE
-	}, {	/* SCM */
-		.virtual	=  0xfa000000,
-		.pfn		= __phys_to_pfn(0x90000000),
-		.length		= 0x00100000,
-		.type		= MT_DEVICE
-	}, {	/* MER */
-		.virtual	=  0xfc000000,
-		.pfn		= __phys_to_pfn(0xa0000000),
-		.length		= 0x00100000,
-		.type		= MT_DEVICE
-	}, {	/* LCD + DMA */
-		.virtual	=  0xfe000000,
-		.pfn		= __phys_to_pfn(0xb0000000),
-		.length		= 0x00200000,
-		.type		= MT_DEVICE
-	},
-};
-
-void __init sa1100_map_io(void)
-{
-	iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc));
-}
-
-void __init sa1100_timer_init(void)
-{
-	pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x90000000));
-}
-
-static struct resource irq_resource =
-	DEFINE_RES_MEM_NAMED(0x90050000, SZ_64K, "irqs");
-
-void __init sa1100_init_irq(void)
-{
-	request_resource(&iomem_resource, &irq_resource);
-
-	sa11x0_init_irq_nodt(IRQ_GPIO0_SC, irq_resource.start);
-
-	sa1100_init_gpio();
-	sa11xx_clk_init();
-}
-
-/*
- * Disable the memory bus request/grant signals on the SA1110 to
- * ensure that we don't receive spurious memory requests.  We set
- * the MBGNT signal false to ensure the SA1111 doesn't own the
- * SDRAM bus.
- */
-void sa1110_mb_disable(void)
-{
-	unsigned long flags;
-
-	local_irq_save(flags);
-	
-	PGSR &= ~GPIO_MBGNT;
-	GPCR = GPIO_MBGNT;
-	GPDR = (GPDR & ~GPIO_MBREQ) | GPIO_MBGNT;
-
-	GAFR &= ~(GPIO_MBGNT | GPIO_MBREQ);
-
-	local_irq_restore(flags);
-}
-
-/*
- * If the system is going to use the SA-1111 DMA engines, set up
- * the memory bus request/grant pins.
- */
-void sa1110_mb_enable(void)
-{
-	unsigned long flags;
-
-	local_irq_save(flags);
-
-	PGSR &= ~GPIO_MBGNT;
-	GPCR = GPIO_MBGNT;
-	GPDR = (GPDR & ~GPIO_MBREQ) | GPIO_MBGNT;
-
-	GAFR |= (GPIO_MBGNT | GPIO_MBREQ);
-	TUCR |= TUCR_MR;
-
-	local_irq_restore(flags);
-}
-
-int sa11x0_gpio_set_wake(unsigned int gpio, unsigned int on)
-{
-	if (on)
-		PWER |= BIT(gpio);
-	else
-		PWER &= ~BIT(gpio);
-
-	return 0;
-}
-
-int sa11x0_sc_set_wake(unsigned int irq, unsigned int on)
-{
-	if (BIT(irq) != IC_RTCAlrm)
-		return -EINVAL;
-
-	if (on)
-		PWER |= PWER_RTC;
-	else
-		PWER &= ~PWER_RTC;
-
-	return 0;
-}
diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h
deleted file mode 100644
index 3cfe3b647711..000000000000
--- a/arch/arm/mach-sa1100/generic.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * linux/arch/arm/mach-sa1100/generic.h
- *
- * Author: Nicolas Pitre
- */
-#include <linux/cpufreq.h>
-#include <linux/reboot.h>
-
-extern void sa1100_timer_init(void);
-extern void __init sa1100_map_io(void);
-extern void __init sa1100_init_irq(void);
-extern void __init sa1100_init_gpio(void);
-extern void sa11x0_restart(enum reboot_mode, const char *);
-extern void sa11x0_init_late(void);
-
-#define SET_BANK(__nr,__start,__size) \
-	mi->bank[__nr].start = (__start), \
-	mi->bank[__nr].size = (__size)
-
-extern void sa1110_mb_enable(void);
-extern void sa1110_mb_disable(void);
-
-extern struct cpufreq_frequency_table sa11x0_freq_table[];
-extern unsigned int sa11x0_getspeed(unsigned int cpu);
-
-struct flash_platform_data;
-struct resource;
-
-void sa11x0_register_mtd(struct flash_platform_data *flash,
-			 struct resource *res, int nr);
-
-struct mcp_plat_data;
-void sa11x0_ppc_configure_mcp(void);
-void sa11x0_register_mcp(struct mcp_plat_data *data);
-
-struct sa1100fb_mach_info;
-void sa11x0_register_lcd(struct sa1100fb_mach_info *inf);
-
-#ifdef CONFIG_PM
-int sa11x0_pm_init(void);
-#else
-static inline int sa11x0_pm_init(void) { return 0; }
-#endif
-
-int sa11xx_clk_init(void);
-
-struct gpiod_lookup_table;
-void sa11x0_register_pcmcia(int socket, struct gpiod_lookup_table *);
-
-struct software_node;
-extern const struct software_node sa1100_gpiochip_node;
-
-struct fixed_voltage_config;
-struct regulator_consumer_supply;
-int sa11x0_register_fixed_regulator(int n, struct fixed_voltage_config *cfg,
-	struct regulator_consumer_supply *supplies, unsigned num_supplies,
-	bool uses_gpio);
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
deleted file mode 100644
index 59e9251a138e..000000000000
--- a/arch/arm/mach-sa1100/h3600.c
+++ /dev/null
@@ -1,134 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Support for Compaq iPAQ H3600 handheld computer
- *
- * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
- * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/gpio/legacy.h>
-
-#include <video/sa1100fb.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-
-#include <mach/h3xxx.h>
-#include <mach/irqs.h>
-
-#include "generic.h"
-
-static bool h3600_lcd_request(void)
-{
-	static bool h3600_lcd_ok;
-	int rc;
-
-	if (h3600_lcd_ok)
-		return true;
-
-	rc = gpio_request(H3XXX_EGPIO_LCD_ON, "LCD power");
-	if (rc)
-		goto out;
-	rc = gpio_direction_output(H3XXX_EGPIO_LCD_ON, 0);
-	if (rc)
-		goto out_free_on;
-	rc = gpio_request(H3600_EGPIO_LCD_PCI, "LCD control");
-	if (rc)
-		goto out_free_on;
-	rc = gpio_direction_output(H3600_EGPIO_LCD_PCI, 0);
-	if (rc)
-		goto out_free_pci;
-	rc = gpio_request(H3600_EGPIO_LCD_5V_ON, "LCD 5v");
-	if (rc)
-		goto out_free_pci;
-	rc = gpio_direction_output(H3600_EGPIO_LCD_5V_ON, 0);
-	if (rc)
-		goto out_free_5v_on;
-	rc = gpio_request(H3600_EGPIO_LVDD_ON, "LCD 9v/-6.5v");
-	if (rc)
-		goto out_free_5v_on;
-	rc = gpio_direction_output(H3600_EGPIO_LVDD_ON, 0);
-	if (rc)
-		goto out_free_lvdd_on;
-
-	goto out;
-
-out_free_lvdd_on:
-	gpio_free(H3600_EGPIO_LVDD_ON);
-out_free_5v_on:
-	gpio_free(H3600_EGPIO_LCD_5V_ON);
-out_free_pci:
-	gpio_free(H3600_EGPIO_LCD_PCI);
-out_free_on:
-	gpio_free(H3XXX_EGPIO_LCD_ON);
-out:
-	if (rc)
-		pr_err("%s: can't request GPIOs\n", __func__);
-	else
-		h3600_lcd_ok = true;
-
-	return h3600_lcd_ok;
-}
-
-static void h3600_lcd_power(int enable)
-{
-	if (!h3600_lcd_request())
-		return;
-
-	gpio_direction_output(H3XXX_EGPIO_LCD_ON, enable);
-	gpio_direction_output(H3600_EGPIO_LCD_PCI, enable);
-	gpio_direction_output(H3600_EGPIO_LCD_5V_ON, enable);
-	gpio_direction_output(H3600_EGPIO_LVDD_ON, enable);
-}
-
-static const struct sa1100fb_rgb h3600_rgb_16 = {
-	.red	= { .offset = 12, .length = 4, },
-	.green	= { .offset = 7,  .length = 4, },
-	.blue	= { .offset = 1,  .length = 4, },
-	.transp	= { .offset = 0,  .length = 0, },
-};
-
-static struct sa1100fb_mach_info h3600_lcd_info = {
-	.pixclock	= 174757, 	.bpp		= 16,
-	.xres		= 320,		.yres		= 240,
-
-	.hsync_len	= 3,		.vsync_len	= 3,
-	.left_margin	= 12,		.upper_margin	= 10,
-	.right_margin	= 17,		.lower_margin	= 1,
-
-	.cmap_static	= 1,
-
-	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
-	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
-
-	.rgb[RGB_16] = &h3600_rgb_16,
-
-	.lcd_power = h3600_lcd_power,
-};
-
-
-static void __init h3600_map_io(void)
-{
-	h3xxx_map_io();
-}
-
-static void __init h3600_mach_init(void)
-{
-	h3xxx_mach_init();
-
-	sa11x0_register_lcd(&h3600_lcd_info);
-}
-
-MACHINE_START(H3600, "Compaq iPAQ H3600")
-	.atag_offset	= 0x100,
-	.map_io		= h3600_map_io,
-	.nr_irqs	= SA1100_NR_IRQS,
-	.init_irq	= sa1100_init_irq,
-	.init_time	= sa1100_timer_init,
-	.init_machine	= h3600_mach_init,
-	.init_late	= sa11x0_init_late,
-	.restart	= sa11x0_restart,
-MACHINE_END
-
diff --git a/arch/arm/mach-sa1100/h3xxx.c b/arch/arm/mach-sa1100/h3xxx.c
deleted file mode 100644
index 6f4c5d2be569..000000000000
--- a/arch/arm/mach-sa1100/h3xxx.c
+++ /dev/null
@@ -1,305 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Support for Compaq iPAQ H3100 and H3600 handheld computers (common code)
- *
- * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
- * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
- */
-
-#include <linux/kernel.h>
-#include <linux/gpio/machine.h>
-#include <linux/gpio/legacy.h>
-#include <linux/gpio_keys.h>
-#include <linux/gpio/property.h>
-#include <linux/gpio/consumer.h>
-#include <linux/input.h>
-#include <linux/property.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/platform_data/gpio-htc-egpio.h>
-#include <linux/platform_data/sa11x0-serial.h>
-#include <linux/platform_device.h>
-#include <linux/serial_core.h>
-
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <mach/h3xxx.h>
-#include <mach/irqs.h>
-
-#include "generic.h"
-
-/*
- * H3xxx flash support
- */
-static struct mtd_partition h3xxx_partitions[] = {
-	{
-		.name		= "H3XXX boot firmware",
-		.size		= 0x00040000,
-		.offset		= 0,
-		.mask_flags	= MTD_WRITEABLE,  /* force read-only */
-	}, {
-		.name		= "H3XXX rootfs",
-		.size		= MTDPART_SIZ_FULL,
-		.offset		= 0x00040000,
-	}
-};
-
-static void h3xxx_set_vpp(int vpp)
-{
-	gpio_set_value(H3XXX_EGPIO_VPP_ON, vpp);
-}
-
-static int h3xxx_flash_init(void)
-{
-	int err = gpio_request(H3XXX_EGPIO_VPP_ON, "Flash Vpp");
-	if (err) {
-		pr_err("%s: can't request H3XXX_EGPIO_VPP_ON\n", __func__);
-		return err;
-	}
-
-	err = gpio_direction_output(H3XXX_EGPIO_VPP_ON, 0);
-	if (err)
-		gpio_free(H3XXX_EGPIO_VPP_ON);
-
-	return err;
-}
-
-static void h3xxx_flash_exit(void)
-{
-	gpio_free(H3XXX_EGPIO_VPP_ON);
-}
-
-static struct flash_platform_data h3xxx_flash_data = {
-	.map_name	= "cfi_probe",
-	.set_vpp	= h3xxx_set_vpp,
-	.init		= h3xxx_flash_init,
-	.exit		= h3xxx_flash_exit,
-	.parts		= h3xxx_partitions,
-	.nr_parts	= ARRAY_SIZE(h3xxx_partitions),
-};
-
-static struct resource h3xxx_flash_resource =
-	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M);
-
-
-/*
- * H3xxx uart support
- */
-static void h3xxx_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
-{
-	if (port->mapbase == _Ser3UTCR0) {
-		if (!gpio_request(H3XXX_EGPIO_RS232_ON, "RS232 transceiver")) {
-			gpio_direction_output(H3XXX_EGPIO_RS232_ON, !state);
-			gpio_free(H3XXX_EGPIO_RS232_ON);
-		} else {
-			pr_err("%s: can't request H3XXX_EGPIO_RS232_ON\n",
-				__func__);
-		}
-	}
-}
-
-/*
- * Enable/Disable wake up events for this serial port.
- * Obviously, we only support this on the normal COM port.
- */
-static int h3xxx_uart_set_wake(struct uart_port *port, u_int enable)
-{
-	int err = -EINVAL;
-
-	if (port->mapbase == _Ser3UTCR0) {
-		if (enable)
-			PWER |= PWER_GPIO23 | PWER_GPIO25; /* DCD and CTS */
-		else
-			PWER &= ~(PWER_GPIO23 | PWER_GPIO25); /* DCD and CTS */
-		err = 0;
-	}
-	return err;
-}
-
-static struct sa1100_port_fns h3xxx_port_fns __initdata = {
-	.pm		= h3xxx_uart_pm,
-	.set_wake	= h3xxx_uart_set_wake,
-};
-
-static struct gpiod_lookup_table h3xxx_uart3_gpio_table = {
-	.dev_id = "sa11x0-uart.3",
-	.table = {
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_COM_DCD, "dcd", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_COM_CTS, "cts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_COM_RTS, "rts", GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-/*
- * EGPIO
- */
-
-static struct resource egpio_resources[] = {
-	[0] = DEFINE_RES_MEM(H3600_EGPIO_PHYS, 0x4),
-};
-
-static struct htc_egpio_chip egpio_chips[] = {
-	[0] = {
-		.reg_start	= 0,
-		.gpio_base	= H3XXX_EGPIO_BASE,
-		.num_gpios	= 16,
-		.direction	= HTC_EGPIO_OUTPUT,
-		.initial_values	= 0x0080, /* H3XXX_EGPIO_RS232_ON */
-	},
-};
-
-static struct htc_egpio_platform_data egpio_info = {
-	.reg_width	= 16,
-	.bus_width	= 16,
-	.chip		= egpio_chips,
-	.num_chips	= ARRAY_SIZE(egpio_chips),
-};
-
-static struct platform_device h3xxx_egpio = {
-	.name		= "htc-egpio",
-	.id		= -1,
-	.resource	= egpio_resources,
-	.num_resources	= ARRAY_SIZE(egpio_resources),
-	.dev		= {
-		.platform_data = &egpio_info,
-	},
-};
-
-/*
- * GPIO keys
- */
-
-static const struct software_node h3xxx_gpio_keys_node = {
-	.name = "h3xxx-gpio-keys",
-};
-
-static const struct property_entry h3xxx_power_key_props[] = {
-	PROPERTY_ENTRY_U32("linux,code", KEY_POWER),
-	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
-			    H3XXX_GPIO_PWR_BUTTON, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_STRING("label", "Power Button"),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	{ }
-};
-
-static const struct software_node h3xxx_power_key_node = {
-	.parent = &h3xxx_gpio_keys_node,
-	.properties = h3xxx_power_key_props,
-};
-
-static const struct property_entry h3xxx_action_key_props[] = {
-	PROPERTY_ENTRY_U32("linux,code", KEY_ENTER),
-	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
-			    H3XXX_GPIO_ACTION_BUTTON, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_STRING("label", "Action button"),
-	{ }
-};
-
-static const struct software_node h3xxx_action_key_node = {
-	.parent = &h3xxx_gpio_keys_node,
-	.properties = h3xxx_action_key_props,
-};
-
-static const struct software_node * const h3xxx_gpio_keys_swnodes[] __initconst = {
-	&h3xxx_gpio_keys_node,
-	&h3xxx_power_key_node,
-	&h3xxx_action_key_node,
-	NULL
-};
-
-static const struct platform_device_info h3xxx_gpio_keys_dev_info __initconst = {
-	.name = "gpio-keys",
-	.id = PLATFORM_DEVID_NONE,
-	.swnode = &h3xxx_gpio_keys_node,
-};
-
-static struct resource h3xxx_micro_resources[] = {
-	DEFINE_RES_MEM(0x80010000, SZ_4K),
-	DEFINE_RES_MEM(0x80020000, SZ_4K),
-	DEFINE_RES_IRQ(IRQ_Ser1UART),
-};
-
-struct platform_device h3xxx_micro_asic = {
-	.name = "ipaq-h3xxx-micro",
-	.id = -1,
-	.resource = h3xxx_micro_resources,
-	.num_resources = ARRAY_SIZE(h3xxx_micro_resources),
-};
-
-static struct platform_device *h3xxx_devices[] = {
-	&h3xxx_egpio,
-	&h3xxx_micro_asic,
-};
-
-static struct gpiod_lookup_table h3xxx_pcmcia_gpio_table = {
-	.dev_id = "sa11x0-pcmcia",
-	.table = {
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_CD0,
-			    "pcmcia0-detect", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_IRQ0,
-			    "pcmcia0-ready", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_CD1,
-			    "pcmcia1-detect", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_IRQ1,
-			    "pcmcia1-ready", GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-void __init h3xxx_mach_init(void)
-{
-	gpiod_add_lookup_table(&h3xxx_pcmcia_gpio_table);
-	gpiod_add_lookup_table(&h3xxx_uart3_gpio_table);
-	sa1100_register_uart_fns(&h3xxx_port_fns);
-	sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1);
-	platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices));
-	software_node_register_node_group(h3xxx_gpio_keys_swnodes);
-	platform_device_register_full(&h3xxx_gpio_keys_dev_info);
-}
-
-static struct map_desc h3600_io_desc[] __initdata = {
-	{	/* static memory bank 2  CS#2 */
-		.virtual	=  H3600_BANK_2_VIRT,
-		.pfn		= __phys_to_pfn(SA1100_CS2_PHYS),
-		.length		= 0x02800000,
-		.type		= MT_DEVICE
-	}, {	/* static memory bank 4  CS#4 */
-		.virtual	=  H3600_BANK_4_VIRT,
-		.pfn		= __phys_to_pfn(SA1100_CS4_PHYS),
-		.length		= 0x00800000,
-		.type		= MT_DEVICE
-	}, {	/* EGPIO 0		CS#5 */
-		.virtual	=  H3600_EGPIO_VIRT,
-		.pfn		= __phys_to_pfn(H3600_EGPIO_PHYS),
-		.length		= 0x01000000,
-		.type		= MT_DEVICE
-	}
-};
-
-/*
- * Common map_io initialization
- */
-
-void __init h3xxx_map_io(void)
-{
-	sa1100_map_io();
-	iotable_init(h3600_io_desc, ARRAY_SIZE(h3600_io_desc));
-
-	sa1100_register_uart(0, 3); /* Common serial port */
-//	sa1100_register_uart(1, 1); /* Microcontroller on 3100/3600 */
-
-	/* Ensure those pins are outputs and driving low  */
-	PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
-	PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
-
-	/* Configure suspend conditions */
-	PGSR = 0;
-	PCFR = PCFR_OPDE;
-	PSDR = 0;
-
-	GPCR = 0x0fffffff;	/* All outputs are set low by default */
-	GPDR = 0;		/* Configure all GPIOs as input */
-}
-
diff --git a/arch/arm/mach-sa1100/include/mach/SA-1100.h b/arch/arm/mach-sa1100/include/mach/SA-1100.h
deleted file mode 100644
index 6e6ff3e18f0f..000000000000
--- a/arch/arm/mach-sa1100/include/mach/SA-1100.h
+++ /dev/null
@@ -1,1798 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- *	FILE    	SA-1100.h
- *
- *	Version 	1.2
- *	Author  	Copyright (c) Marc A. Viredaz, 1998
- *	        	DEC Western Research Laboratory, Palo Alto, CA
- *	Date    	January 1998 (April 1997)
- *	System  	StrongARM SA-1100
- *	Language	C or ARM Assembly
- *	Purpose 	Definition of constants related to the StrongARM
- *	        	SA-1100 microprocessor (Advanced RISC Machine (ARM)
- *	        	architecture version 4). This file is based on the
- *	        	StrongARM SA-1100 data sheet version 2.2.
- *
- */
-
-
-/* Be sure that virtual mapping is defined right */
-#ifndef __ASM_ARCH_HARDWARE_H
-#error You must include hardware.h not SA-1100.h
-#endif
-
-#include "bitfield.h"
-
-/*
- * SA1100 CS line to physical address
- */
-
-#define SA1100_CS0_PHYS	0x00000000
-#define SA1100_CS1_PHYS	0x08000000
-#define SA1100_CS2_PHYS	0x10000000
-#define SA1100_CS3_PHYS	0x18000000
-#define SA1100_CS4_PHYS	0x40000000
-#define SA1100_CS5_PHYS	0x48000000
-
-/*
- * Personal Computer Memory Card International Association (PCMCIA) sockets
- */
-
-#define PCMCIAPrtSp	0x04000000	/* PCMCIA Partition Space [byte]   */
-#define PCMCIASp	(4*PCMCIAPrtSp)	/* PCMCIA Space [byte]             */
-#define PCMCIAIOSp	PCMCIAPrtSp	/* PCMCIA I/O Space [byte]         */
-#define PCMCIAAttrSp	PCMCIAPrtSp	/* PCMCIA Attribute Space [byte]   */
-#define PCMCIAMemSp	PCMCIAPrtSp	/* PCMCIA Memory Space [byte]      */
-
-#define PCMCIA0Sp	PCMCIASp	/* PCMCIA 0 Space [byte]           */
-#define PCMCIA0IOSp	PCMCIAIOSp	/* PCMCIA 0 I/O Space [byte]       */
-#define PCMCIA0AttrSp	PCMCIAAttrSp	/* PCMCIA 0 Attribute Space [byte] */
-#define PCMCIA0MemSp	PCMCIAMemSp	/* PCMCIA 0 Memory Space [byte]    */
-
-#define PCMCIA1Sp	PCMCIASp	/* PCMCIA 1 Space [byte]           */
-#define PCMCIA1IOSp	PCMCIAIOSp	/* PCMCIA 1 I/O Space [byte]       */
-#define PCMCIA1AttrSp	PCMCIAAttrSp	/* PCMCIA 1 Attribute Space [byte] */
-#define PCMCIA1MemSp	PCMCIAMemSp	/* PCMCIA 1 Memory Space [byte]    */
-
-#define _PCMCIA(Nb)	        	/* PCMCIA [0..1]                   */ \
-                	(0x20000000 + (Nb)*PCMCIASp)
-#define _PCMCIAIO(Nb)	_PCMCIA (Nb)	/* PCMCIA I/O [0..1]               */
-#define _PCMCIAAttr(Nb)	        	/* PCMCIA Attribute [0..1]         */ \
-                	(_PCMCIA (Nb) + 2*PCMCIAPrtSp)
-#define _PCMCIAMem(Nb)	        	/* PCMCIA Memory [0..1]            */ \
-                	(_PCMCIA (Nb) + 3*PCMCIAPrtSp)
-
-#define _PCMCIA0	_PCMCIA (0)	/* PCMCIA 0                        */
-#define _PCMCIA0IO	_PCMCIAIO (0)	/* PCMCIA 0 I/O                    */
-#define _PCMCIA0Attr	_PCMCIAAttr (0)	/* PCMCIA 0 Attribute              */
-#define _PCMCIA0Mem	_PCMCIAMem (0)	/* PCMCIA 0 Memory                 */
-
-#define _PCMCIA1	_PCMCIA (1)	/* PCMCIA 1                        */
-#define _PCMCIA1IO	_PCMCIAIO (1)	/* PCMCIA 1 I/O                    */
-#define _PCMCIA1Attr	_PCMCIAAttr (1)	/* PCMCIA 1 Attribute              */
-#define _PCMCIA1Mem	_PCMCIAMem (1)	/* PCMCIA 1 Memory                 */
-
-
-/*
- * Universal Serial Bus (USB) Device Controller (UDC) control registers
- *
- * Registers
- *    Ser0UDCCR 	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Control Register (read/write).
- *    Ser0UDCAR 	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Address Register (read/write).
- *    Ser0UDCOMP	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Output Maximum Packet size register
- *              	(read/write).
- *    Ser0UDCIMP	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Input Maximum Packet size register
- *              	(read/write).
- *    Ser0UDCCS0	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Control/Status register end-point 0
- *              	(read/write).
- *    Ser0UDCCS1	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Control/Status register end-point 1
- *              	(output, read/write).
- *    Ser0UDCCS2	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Control/Status register end-point 2
- *              	(input, read/write).
- *    Ser0UDCD0 	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Data register end-point 0
- *              	(read/write).
- *    Ser0UDCWC 	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Write Count register end-point 0
- *              	(read).
- *    Ser0UDCDR 	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Data Register (read/write).
- *    Ser0UDCSR 	Serial port 0 Universal Serial Bus (USB) Device
- *              	Controller (UDC) Status Register (read/write).
- */
-
-#define Ser0UDCCR	__REG(0x80000000)  /* Ser. port 0 UDC Control Reg. */
-#define Ser0UDCAR	__REG(0x80000004)  /* Ser. port 0 UDC Address Reg. */
-#define Ser0UDCOMP	__REG(0x80000008)  /* Ser. port 0 UDC Output Maximum Packet size reg. */
-#define Ser0UDCIMP	__REG(0x8000000C)  /* Ser. port 0 UDC Input Maximum Packet size reg. */
-#define Ser0UDCCS0	__REG(0x80000010)  /* Ser. port 0 UDC Control/Status reg. end-point 0 */
-#define Ser0UDCCS1	__REG(0x80000014)  /* Ser. port 0 UDC Control/Status reg. end-point 1 (output) */
-#define Ser0UDCCS2	__REG(0x80000018)  /* Ser. port 0 UDC Control/Status reg. end-point 2 (input) */
-#define Ser0UDCD0	__REG(0x8000001C)  /* Ser. port 0 UDC Data reg. end-point 0 */
-#define Ser0UDCWC	__REG(0x80000020)  /* Ser. port 0 UDC Write Count reg. end-point 0 */
-#define Ser0UDCDR	__REG(0x80000028)  /* Ser. port 0 UDC Data Reg. */
-#define Ser0UDCSR	__REG(0x80000030)  /* Ser. port 0 UDC Status Reg. */
-
-#define UDCCR_UDD	0x00000001	/* UDC Disable                     */
-#define UDCCR_UDA	0x00000002	/* UDC Active (read)               */
-#define UDCCR_RESIM	0x00000004	/* Resume Interrupt Mask, per errata */
-#define UDCCR_EIM	0x00000008	/* End-point 0 Interrupt Mask      */
-                	        	/* (disable)                       */
-#define UDCCR_RIM	0x00000010	/* Receive Interrupt Mask          */
-                	        	/* (disable)                       */
-#define UDCCR_TIM	0x00000020	/* Transmit Interrupt Mask         */
-                	        	/* (disable)                       */
-#define UDCCR_SRM	0x00000040	/* Suspend/Resume interrupt Mask   */
-                	        	/* (disable)                       */
-#define UDCCR_SUSIM	UDCCR_SRM	/* Per errata, SRM just masks suspend */
-#define UDCCR_REM	0x00000080	/* REset interrupt Mask (disable)  */
-
-#define UDCAR_ADD	Fld (7, 0)	/* function ADDress                */
-
-#define UDCOMP_OUTMAXP	Fld (8, 0)	/* OUTput MAXimum Packet size - 1  */
-                	        	/* [byte]                          */
-#define UDCOMP_OutMaxPkt(Size)  	/* Output Maximum Packet size      */ \
-                	        	/* [1..256 byte]                   */ \
-                	(((Size) - 1) << FShft (UDCOMP_OUTMAXP))
-
-#define UDCIMP_INMAXP	Fld (8, 0)	/* INput MAXimum Packet size - 1   */
-                	        	/* [byte]                          */
-#define UDCIMP_InMaxPkt(Size)   	/* Input Maximum Packet size       */ \
-                	        	/* [1..256 byte]                   */ \
-                	(((Size) - 1) << FShft (UDCIMP_INMAXP))
-
-#define UDCCS0_OPR	0x00000001	/* Output Packet Ready (read)      */
-#define UDCCS0_IPR	0x00000002	/* Input Packet Ready              */
-#define UDCCS0_SST	0x00000004	/* Sent STall                      */
-#define UDCCS0_FST	0x00000008	/* Force STall                     */
-#define UDCCS0_DE	0x00000010	/* Data End                        */
-#define UDCCS0_SE	0x00000020	/* Setup End (read)                */
-#define UDCCS0_SO	0x00000040	/* Serviced Output packet ready    */
-                	        	/* (write)                         */
-#define UDCCS0_SSE	0x00000080	/* Serviced Setup End (write)      */
-
-#define UDCCS1_RFS	0x00000001	/* Receive FIFO 12-bytes or more   */
-                	        	/* Service request (read)          */
-#define UDCCS1_RPC	0x00000002	/* Receive Packet Complete         */
-#define UDCCS1_RPE	0x00000004	/* Receive Packet Error (read)     */
-#define UDCCS1_SST	0x00000008	/* Sent STall                      */
-#define UDCCS1_FST	0x00000010	/* Force STall                     */
-#define UDCCS1_RNE	0x00000020	/* Receive FIFO Not Empty (read)   */
-
-#define UDCCS2_TFS	0x00000001	/* Transmit FIFO 8-bytes or less   */
-                	        	/* Service request (read)          */
-#define UDCCS2_TPC	0x00000002	/* Transmit Packet Complete        */
-#define UDCCS2_TPE	0x00000004	/* Transmit Packet Error (read)    */
-#define UDCCS2_TUR	0x00000008	/* Transmit FIFO Under-Run         */
-#define UDCCS2_SST	0x00000010	/* Sent STall                      */
-#define UDCCS2_FST	0x00000020	/* Force STall                     */
-
-#define UDCD0_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
-
-#define UDCWC_WC	Fld (4, 0)	/* Write Count                     */
-
-#define UDCDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
-
-#define UDCSR_EIR	0x00000001	/* End-point 0 Interrupt Request   */
-#define UDCSR_RIR	0x00000002	/* Receive Interrupt Request       */
-#define UDCSR_TIR	0x00000004	/* Transmit Interrupt Request      */
-#define UDCSR_SUSIR	0x00000008	/* SUSpend Interrupt Request       */
-#define UDCSR_RESIR	0x00000010	/* RESume Interrupt Request        */
-#define UDCSR_RSTIR	0x00000020	/* ReSeT Interrupt Request         */
-
-
-/*
- * Universal Asynchronous Receiver/Transmitter (UART) control registers
- *
- * Registers
- *    Ser1UTCR0 	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 0
- *              	(read/write).
- *    Ser1UTCR1 	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 1
- *              	(read/write).
- *    Ser1UTCR2 	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 2
- *              	(read/write).
- *    Ser1UTCR3 	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 3
- *              	(read/write).
- *    Ser1UTDR  	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Data Register
- *              	(read/write).
- *    Ser1UTSR0 	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Status Register 0
- *              	(read/write).
- *    Ser1UTSR1 	Serial port 1 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Status Register 1 (read).
- *
- *    Ser2UTCR0 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 0
- *              	(read/write).
- *    Ser2UTCR1 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 1
- *              	(read/write).
- *    Ser2UTCR2 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 2
- *              	(read/write).
- *    Ser2UTCR3 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 3
- *              	(read/write).
- *    Ser2UTCR4 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 4
- *              	(read/write).
- *    Ser2UTDR  	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Data Register
- *              	(read/write).
- *    Ser2UTSR0 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Status Register 0
- *              	(read/write).
- *    Ser2UTSR1 	Serial port 2 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Status Register 1 (read).
- *
- *    Ser3UTCR0 	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 0
- *              	(read/write).
- *    Ser3UTCR1 	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 1
- *              	(read/write).
- *    Ser3UTCR2 	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 2
- *              	(read/write).
- *    Ser3UTCR3 	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Control Register 3
- *              	(read/write).
- *    Ser3UTDR  	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Data Register
- *              	(read/write).
- *    Ser3UTSR0 	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Status Register 0
- *              	(read/write).
- *    Ser3UTSR1 	Serial port 3 Universal Asynchronous
- *              	Receiver/Transmitter (UART) Status Register 1 (read).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *              	or 3.5795 MHz).
- *    fua, Tua  	Frequency, period of the UART communication.
- */
-
-#define _UTCR0(Nb)	__REG(0x80010000 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 0 [1..3] */
-#define _UTCR1(Nb)	__REG(0x80010004 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 1 [1..3] */
-#define _UTCR2(Nb)	__REG(0x80010008 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 2 [1..3] */
-#define _UTCR3(Nb)	__REG(0x8001000C + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 3 [1..3] */
-#define _UTCR4(Nb)	__REG(0x80010010 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 4 [2] */
-#define _UTDR(Nb)	__REG(0x80010014 + ((Nb) - 1)*0x00020000)  /* UART Data Reg. [1..3] */
-#define _UTSR0(Nb)	__REG(0x8001001C + ((Nb) - 1)*0x00020000)  /* UART Status Reg. 0 [1..3] */
-#define _UTSR1(Nb)	__REG(0x80010020 + ((Nb) - 1)*0x00020000)  /* UART Status Reg. 1 [1..3] */
-
-#define Ser1UTCR0	_UTCR0 (1)	/* Ser. port 1 UART Control Reg. 0 */
-#define Ser1UTCR1	_UTCR1 (1)	/* Ser. port 1 UART Control Reg. 1 */
-#define Ser1UTCR2	_UTCR2 (1)	/* Ser. port 1 UART Control Reg. 2 */
-#define Ser1UTCR3	_UTCR3 (1)	/* Ser. port 1 UART Control Reg. 3 */
-#define Ser1UTDR	_UTDR (1)	/* Ser. port 1 UART Data Reg.      */
-#define Ser1UTSR0	_UTSR0 (1)	/* Ser. port 1 UART Status Reg. 0  */
-#define Ser1UTSR1	_UTSR1 (1)	/* Ser. port 1 UART Status Reg. 1  */
-
-#define Ser2UTCR0	_UTCR0 (2)	/* Ser. port 2 UART Control Reg. 0 */
-#define Ser2UTCR1	_UTCR1 (2)	/* Ser. port 2 UART Control Reg. 1 */
-#define Ser2UTCR2	_UTCR2 (2)	/* Ser. port 2 UART Control Reg. 2 */
-#define Ser2UTCR3	_UTCR3 (2)	/* Ser. port 2 UART Control Reg. 3 */
-#define Ser2UTCR4	_UTCR4 (2)	/* Ser. port 2 UART Control Reg. 4 */
-#define Ser2UTDR	_UTDR (2)	/* Ser. port 2 UART Data Reg.      */
-#define Ser2UTSR0	_UTSR0 (2)	/* Ser. port 2 UART Status Reg. 0  */
-#define Ser2UTSR1	_UTSR1 (2)	/* Ser. port 2 UART Status Reg. 1  */
-
-#define Ser3UTCR0	_UTCR0 (3)	/* Ser. port 3 UART Control Reg. 0 */
-#define Ser3UTCR1	_UTCR1 (3)	/* Ser. port 3 UART Control Reg. 1 */
-#define Ser3UTCR2	_UTCR2 (3)	/* Ser. port 3 UART Control Reg. 2 */
-#define Ser3UTCR3	_UTCR3 (3)	/* Ser. port 3 UART Control Reg. 3 */
-#define Ser3UTDR	_UTDR (3)	/* Ser. port 3 UART Data Reg.      */
-#define Ser3UTSR0	_UTSR0 (3)	/* Ser. port 3 UART Status Reg. 0  */
-#define Ser3UTSR1	_UTSR1 (3)	/* Ser. port 3 UART Status Reg. 1  */
-
-/* Those are still used in some places */
-#define _Ser1UTCR0	__PREG(Ser1UTCR0)
-#define _Ser2UTCR0	__PREG(Ser2UTCR0)
-#define _Ser3UTCR0	__PREG(Ser3UTCR0)
-
-/* Register offsets */
-#define UTCR0		0x00
-#define UTCR1		0x04
-#define UTCR2		0x08
-#define UTCR3		0x0c
-#define UTDR		0x14
-#define UTSR0		0x1c
-#define UTSR1		0x20
-
-#define UTCR0_PE	0x00000001	/* Parity Enable                   */
-#define UTCR0_OES	0x00000002	/* Odd/Even parity Select          */
-#define UTCR0_OddPar	(UTCR0_OES*0)	/*  Odd Parity                     */
-#define UTCR0_EvenPar	(UTCR0_OES*1)	/*  Even Parity                    */
-#define UTCR0_SBS	0x00000004	/* Stop Bit Select                 */
-#define UTCR0_1StpBit	(UTCR0_SBS*0)	/*  1 Stop Bit per frame           */
-#define UTCR0_2StpBit	(UTCR0_SBS*1)	/*  2 Stop Bits per frame          */
-#define UTCR0_DSS	0x00000008	/* Data Size Select                */
-#define UTCR0_7BitData	(UTCR0_DSS*0)	/*  7-Bit Data                     */
-#define UTCR0_8BitData	(UTCR0_DSS*1)	/*  8-Bit Data                     */
-#define UTCR0_SCE	0x00000010	/* Sample Clock Enable             */
-                	        	/* (ser. port 1: GPIO [18],        */
-                	        	/* ser. port 3: GPIO [20])         */
-#define UTCR0_RCE	0x00000020	/* Receive Clock Edge select       */
-#define UTCR0_RcRsEdg	(UTCR0_RCE*0)	/*  Receive clock Rising-Edge      */
-#define UTCR0_RcFlEdg	(UTCR0_RCE*1)	/*  Receive clock Falling-Edge     */
-#define UTCR0_TCE	0x00000040	/* Transmit Clock Edge select      */
-#define UTCR0_TrRsEdg	(UTCR0_TCE*0)	/*  Transmit clock Rising-Edge     */
-#define UTCR0_TrFlEdg	(UTCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
-#define UTCR0_Ser2IrDA	        	/* Ser. port 2 IrDA settings       */ \
-                	(UTCR0_1StpBit + UTCR0_8BitData)
-
-#define UTCR1_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
-#define UTCR2_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
-                	        	/* fua = fxtl/(16*(BRD[11:0] + 1)) */
-                	        	/* Tua = 16*(BRD [11:0] + 1)*Txtl  */
-#define UTCR1_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
-                	(((Div) - 16)/16 >> FSize (UTCR2_BRD) << \
-                	 FShft (UTCR1_BRD))
-#define UTCR2_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
-                	(((Div) - 16)/16 & FAlnMsk (UTCR2_BRD) << \
-                	 FShft (UTCR2_BRD))
-                	        	/*  fua = fxtl/(16*Floor (Div/16)) */
-                	        	/*  Tua = 16*Floor (Div/16)*Txtl   */
-#define UTCR1_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
-                	(((Div) - 1)/16 >> FSize (UTCR2_BRD) << \
-                	 FShft (UTCR1_BRD))
-#define UTCR2_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
-                	(((Div) - 1)/16 & FAlnMsk (UTCR2_BRD) << \
-                	 FShft (UTCR2_BRD))
-                	        	/*  fua = fxtl/(16*Ceil (Div/16))  */
-                	        	/*  Tua = 16*Ceil (Div/16)*Txtl    */
-
-#define UTCR3_RXE	0x00000001	/* Receive Enable                  */
-#define UTCR3_TXE	0x00000002	/* Transmit Enable                 */
-#define UTCR3_BRK	0x00000004	/* BReaK mode                      */
-#define UTCR3_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
-                	        	/* more Interrupt Enable           */
-#define UTCR3_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Interrupt Enable                */
-#define UTCR3_LBM	0x00000020	/* Look-Back Mode                  */
-#define UTCR3_Ser2IrDA	        	/* Ser. port 2 IrDA settings (RIE, */ \
-                	        	/* TIE, LBM can be set or cleared) */ \
-                	(UTCR3_RXE + UTCR3_TXE)
-
-#define UTCR4_HSE	0x00000001	/* Hewlett-Packard Serial InfraRed */
-                	        	/* (HP-SIR) modulation Enable      */
-#define UTCR4_NRZ	(UTCR4_HSE*0)	/*  Non-Return to Zero modulation  */
-#define UTCR4_HPSIR	(UTCR4_HSE*1)	/*  HP-SIR modulation              */
-#define UTCR4_LPM	0x00000002	/* Low-Power Mode                  */
-#define UTCR4_Z3_16Bit	(UTCR4_LPM*0)	/*  Zero pulse = 3/16 Bit time     */
-#define UTCR4_Z1_6us	(UTCR4_LPM*1)	/*  Zero pulse = 1.6 us            */
-
-#define UTDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
-#if 0           	        	/* Hidden receive FIFO bits        */
-#define UTDR_PRE	0x00000100	/*  receive PaRity Error (read)    */
-#define UTDR_FRE	0x00000200	/*  receive FRaming Error (read)   */
-#define UTDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
-#endif /* 0 */
-
-#define UTSR0_TFS	0x00000001	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Service request (read)          */
-#define UTSR0_RFS	0x00000002	/* Receive FIFO 1/3-to-2/3-full or */
-                	        	/* more Service request (read)     */
-#define UTSR0_RID	0x00000004	/* Receiver IDle                   */
-#define UTSR0_RBB	0x00000008	/* Receive Beginning of Break      */
-#define UTSR0_REB	0x00000010	/* Receive End of Break            */
-#define UTSR0_EIF	0x00000020	/* Error In FIFO (read)            */
-
-#define UTSR1_TBY	0x00000001	/* Transmitter BusY (read)         */
-#define UTSR1_RNE	0x00000002	/* Receive FIFO Not Empty (read)   */
-#define UTSR1_TNF	0x00000004	/* Transmit FIFO Not Full (read)   */
-#define UTSR1_PRE	0x00000008	/* receive PaRity Error (read)     */
-#define UTSR1_FRE	0x00000010	/* receive FRaming Error (read)    */
-#define UTSR1_ROR	0x00000020	/* Receive FIFO Over-Run (read)    */
-
-
-/*
- * Synchronous Data Link Controller (SDLC) control registers
- *
- * Registers
- *    Ser1SDCR0 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Control Register 0 (read/write).
- *    Ser1SDCR1 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Control Register 1 (read/write).
- *    Ser1SDCR2 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Control Register 2 (read/write).
- *    Ser1SDCR3 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Control Register 3 (read/write).
- *    Ser1SDCR4 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Control Register 4 (read/write).
- *    Ser1SDDR  	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Data Register (read/write).
- *    Ser1SDSR0 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Status Register 0 (read/write).
- *    Ser1SDSR1 	Serial port 1 Synchronous Data Link Controller (SDLC)
- *              	Status Register 1 (read/write).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *              	or 3.5795 MHz).
- *    fsd, Tsd  	Frequency, period of the SDLC communication.
- */
-
-#define Ser1SDCR0	__REG(0x80020060)  /* Ser. port 1 SDLC Control Reg. 0 */
-#define Ser1SDCR1	__REG(0x80020064)  /* Ser. port 1 SDLC Control Reg. 1 */
-#define Ser1SDCR2	__REG(0x80020068)  /* Ser. port 1 SDLC Control Reg. 2 */
-#define Ser1SDCR3	__REG(0x8002006C)  /* Ser. port 1 SDLC Control Reg. 3 */
-#define Ser1SDCR4	__REG(0x80020070)  /* Ser. port 1 SDLC Control Reg. 4 */
-#define Ser1SDDR	__REG(0x80020078)  /* Ser. port 1 SDLC Data Reg.      */
-#define Ser1SDSR0	__REG(0x80020080)  /* Ser. port 1 SDLC Status Reg. 0  */
-#define Ser1SDSR1	__REG(0x80020084)  /* Ser. port 1 SDLC Status Reg. 1  */
-
-#define SDCR0_SUS	0x00000001	/* SDLC/UART Select                */
-#define SDCR0_SDLC	(SDCR0_SUS*0)	/*  SDLC mode (TXD1 & RXD1)        */
-#define SDCR0_UART	(SDCR0_SUS*1)	/*  UART mode (TXD1 & RXD1)        */
-#define SDCR0_SDF	0x00000002	/* Single/Double start Flag select */
-#define SDCR0_SglFlg	(SDCR0_SDF*0)	/*  Single start Flag              */
-#define SDCR0_DblFlg	(SDCR0_SDF*1)	/*  Double start Flag              */
-#define SDCR0_LBM	0x00000004	/* Look-Back Mode                  */
-#define SDCR0_BMS	0x00000008	/* Bit Modulation Select           */
-#define SDCR0_FM0	(SDCR0_BMS*0)	/*  Freq. Modulation zero (0)      */
-#define SDCR0_NRZ	(SDCR0_BMS*1)	/*  Non-Return to Zero modulation  */
-#define SDCR0_SCE	0x00000010	/* Sample Clock Enable (GPIO [16]) */
-#define SDCR0_SCD	0x00000020	/* Sample Clock Direction select   */
-                	        	/* (GPIO [16])                     */
-#define SDCR0_SClkIn	(SDCR0_SCD*0)	/*  Sample Clock Input             */
-#define SDCR0_SClkOut	(SDCR0_SCD*1)	/*  Sample Clock Output            */
-#define SDCR0_RCE	0x00000040	/* Receive Clock Edge select       */
-#define SDCR0_RcRsEdg	(SDCR0_RCE*0)	/*  Receive clock Rising-Edge      */
-#define SDCR0_RcFlEdg	(SDCR0_RCE*1)	/*  Receive clock Falling-Edge     */
-#define SDCR0_TCE	0x00000080	/* Transmit Clock Edge select      */
-#define SDCR0_TrRsEdg	(SDCR0_TCE*0)	/*  Transmit clock Rising-Edge     */
-#define SDCR0_TrFlEdg	(SDCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
-
-#define SDCR1_AAF	0x00000001	/* Abort After Frame enable        */
-                	        	/* (GPIO [17])                     */
-#define SDCR1_TXE	0x00000002	/* Transmit Enable                 */
-#define SDCR1_RXE	0x00000004	/* Receive Enable                  */
-#define SDCR1_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
-                	        	/* more Interrupt Enable           */
-#define SDCR1_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Interrupt Enable                */
-#define SDCR1_AME	0x00000020	/* Address Match Enable            */
-#define SDCR1_TUS	0x00000040	/* Transmit FIFO Under-run Select  */
-#define SDCR1_EFrmURn	(SDCR1_TUS*0)	/*  End Frame on Under-Run         */
-#define SDCR1_AbortURn	(SDCR1_TUS*1)	/*  Abort on Under-Run             */
-#define SDCR1_RAE	0x00000080	/* Receive Abort interrupt Enable  */
-
-#define SDCR2_AMV	Fld (8, 0)	/* Address Match Value             */
-
-#define SDCR3_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
-#define SDCR4_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
-                	        	/* fsd = fxtl/(16*(BRD[11:0] + 1)) */
-                	        	/* Tsd = 16*(BRD[11:0] + 1)*Txtl   */
-#define SDCR3_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
-                	(((Div) - 16)/16 >> FSize (SDCR4_BRD) << \
-                	 FShft (SDCR3_BRD))
-#define SDCR4_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
-                	(((Div) - 16)/16 & FAlnMsk (SDCR4_BRD) << \
-                	 FShft (SDCR4_BRD))
-                	        	/*  fsd = fxtl/(16*Floor (Div/16)) */
-                	        	/*  Tsd = 16*Floor (Div/16)*Txtl   */
-#define SDCR3_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
-                	(((Div) - 1)/16 >> FSize (SDCR4_BRD) << \
-                	 FShft (SDCR3_BRD))
-#define SDCR4_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
-                	(((Div) - 1)/16 & FAlnMsk (SDCR4_BRD) << \
-                	 FShft (SDCR4_BRD))
-                	        	/*  fsd = fxtl/(16*Ceil (Div/16))  */
-                	        	/*  Tsd = 16*Ceil (Div/16)*Txtl    */
-
-#define SDDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
-#if 0           	        	/* Hidden receive FIFO bits        */
-#define SDDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
-#define SDDR_CRE	0x00000200	/*  receive CRC Error (read)       */
-#define SDDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
-#endif /* 0 */
-
-#define SDSR0_EIF	0x00000001	/* Error In FIFO (read)            */
-#define SDSR0_TUR	0x00000002	/* Transmit FIFO Under-Run         */
-#define SDSR0_RAB	0x00000004	/* Receive ABort                   */
-#define SDSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Service request (read)          */
-#define SDSR0_RFS	0x00000010	/* Receive FIFO 1/3-to-2/3-full or */
-                	        	/* more Service request (read)     */
-
-#define SDSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
-#define SDSR1_TBY	0x00000002	/* Transmitter BusY (read)         */
-#define SDSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
-#define SDSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
-#define SDSR1_RTD	0x00000010	/* Receive Transition Detected     */
-#define SDSR1_EOF	0x00000020	/* receive End-Of-Frame (read)     */
-#define SDSR1_CRE	0x00000040	/* receive CRC Error (read)        */
-#define SDSR1_ROR	0x00000080	/* Receive FIFO Over-Run (read)    */
-
-
-/*
- * High-Speed Serial to Parallel controller (HSSP) control registers
- *
- * Registers
- *    Ser2HSCR0 	Serial port 2 High-Speed Serial to Parallel
- *              	controller (HSSP) Control Register 0 (read/write).
- *    Ser2HSCR1 	Serial port 2 High-Speed Serial to Parallel
- *              	controller (HSSP) Control Register 1 (read/write).
- *    Ser2HSDR  	Serial port 2 High-Speed Serial to Parallel
- *              	controller (HSSP) Data Register (read/write).
- *    Ser2HSSR0 	Serial port 2 High-Speed Serial to Parallel
- *              	controller (HSSP) Status Register 0 (read/write).
- *    Ser2HSSR1 	Serial port 2 High-Speed Serial to Parallel
- *              	controller (HSSP) Status Register 1 (read).
- *    Ser2HSCR2 	Serial port 2 High-Speed Serial to Parallel
- *              	controller (HSSP) Control Register 2 (read/write).
- *              	[The HSCR2 register is only implemented in
- *              	versions 2.0 (rev. = 8) and higher of the StrongARM
- *              	SA-1100.]
- */
-
-#define Ser2HSCR0	__REG(0x80040060)  /* Ser. port 2 HSSP Control Reg. 0 */
-#define Ser2HSCR1	__REG(0x80040064)  /* Ser. port 2 HSSP Control Reg. 1 */
-#define Ser2HSDR	__REG(0x8004006C)  /* Ser. port 2 HSSP Data Reg.      */
-#define Ser2HSSR0	__REG(0x80040074)  /* Ser. port 2 HSSP Status Reg. 0  */
-#define Ser2HSSR1	__REG(0x80040078)  /* Ser. port 2 HSSP Status Reg. 1  */
-#define Ser2HSCR2	__REG(0x90060028)  /* Ser. port 2 HSSP Control Reg. 2 */
-
-#define HSCR0_ITR	0x00000001	/* IrDA Transmission Rate          */
-#define HSCR0_UART	(HSCR0_ITR*0)	/*  UART mode (115.2 kb/s if IrDA) */
-#define HSCR0_HSSP	(HSCR0_ITR*1)	/*  HSSP mode (4 Mb/s)             */
-#define HSCR0_LBM	0x00000002	/* Look-Back Mode                  */
-#define HSCR0_TUS	0x00000004	/* Transmit FIFO Under-run Select  */
-#define HSCR0_EFrmURn	(HSCR0_TUS*0)	/*  End Frame on Under-Run         */
-#define HSCR0_AbortURn	(HSCR0_TUS*1)	/*  Abort on Under-Run             */
-#define HSCR0_TXE	0x00000008	/* Transmit Enable                 */
-#define HSCR0_RXE	0x00000010	/* Receive Enable                  */
-#define HSCR0_RIE	0x00000020	/* Receive FIFO 2/5-to-3/5-full or */
-                	        	/* more Interrupt Enable           */
-#define HSCR0_TIE	0x00000040	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Interrupt Enable                */
-#define HSCR0_AME	0x00000080	/* Address Match Enable            */
-
-#define HSCR1_AMV	Fld (8, 0)	/* Address Match Value             */
-
-#define HSDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
-#if 0           	        	/* Hidden receive FIFO bits        */
-#define HSDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
-#define HSDR_CRE	0x00000200	/*  receive CRC Error (read)       */
-#define HSDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
-#endif /* 0 */
-
-#define HSSR0_EIF	0x00000001	/* Error In FIFO (read)            */
-#define HSSR0_TUR	0x00000002	/* Transmit FIFO Under-Run         */
-#define HSSR0_RAB	0x00000004	/* Receive ABort                   */
-#define HSSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Service request (read)          */
-#define HSSR0_RFS	0x00000010	/* Receive FIFO 2/5-to-3/5-full or */
-                	        	/* more Service request (read)     */
-#define HSSR0_FRE	0x00000020	/* receive FRaming Error           */
-
-#define HSSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
-#define HSSR1_TBY	0x00000002	/* Transmitter BusY (read)         */
-#define HSSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
-#define HSSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
-#define HSSR1_EOF	0x00000010	/* receive End-Of-Frame (read)     */
-#define HSSR1_CRE	0x00000020	/* receive CRC Error (read)        */
-#define HSSR1_ROR	0x00000040	/* Receive FIFO Over-Run (read)    */
-
-#define HSCR2_TXP	0x00040000	/* Transmit data Polarity (TXD_2)  */
-#define HSCR2_TrDataL	(HSCR2_TXP*0)	/*  Transmit Data active Low       */
-                	        	/*  (inverted)                     */
-#define HSCR2_TrDataH	(HSCR2_TXP*1)	/*  Transmit Data active High      */
-                	        	/*  (non-inverted)                 */
-#define HSCR2_RXP	0x00080000	/* Receive data Polarity (RXD_2)   */
-#define HSCR2_RcDataL	(HSCR2_RXP*0)	/*  Receive Data active Low        */
-                	        	/*  (inverted)                     */
-#define HSCR2_RcDataH	(HSCR2_RXP*1)	/*  Receive Data active High       */
-                	        	/*  (non-inverted)                 */
-
-
-/*
- * Multi-media Communications Port (MCP) control registers
- *
- * Registers
- *    Ser4MCCR0 	Serial port 4 Multi-media Communications Port (MCP)
- *              	Control Register 0 (read/write).
- *    Ser4MCDR0 	Serial port 4 Multi-media Communications Port (MCP)
- *              	Data Register 0 (audio, read/write).
- *    Ser4MCDR1 	Serial port 4 Multi-media Communications Port (MCP)
- *              	Data Register 1 (telecom, read/write).
- *    Ser4MCDR2 	Serial port 4 Multi-media Communications Port (MCP)
- *              	Data Register 2 (CODEC registers, read/write).
- *    Ser4MCSR  	Serial port 4 Multi-media Communications Port (MCP)
- *              	Status Register (read/write).
- *    Ser4MCCR1 	Serial port 4 Multi-media Communications Port (MCP)
- *              	Control Register 1 (read/write).
- *              	[The MCCR1 register is only implemented in
- *              	versions 2.0 (rev. = 8) and higher of the StrongARM
- *              	SA-1100.]
- *
- * Clocks
- *    fmc, Tmc  	Frequency, period of the MCP communication (10 MHz,
- *              	12 MHz, or GPIO [21]).
- *    faud, Taud	Frequency, period of the audio sampling.
- *    ftcm, Ttcm	Frequency, period of the telecom sampling.
- */
-
-#define Ser4MCCR0	__REG(0x80060000)  /* Ser. port 4 MCP Control Reg. 0 */
-#define Ser4MCDR0	__REG(0x80060008)  /* Ser. port 4 MCP Data Reg. 0 (audio) */
-#define Ser4MCDR1	__REG(0x8006000C)  /* Ser. port 4 MCP Data Reg. 1 (telecom) */
-#define Ser4MCDR2	__REG(0x80060010)  /* Ser. port 4 MCP Data Reg. 2 (CODEC reg.) */
-#define Ser4MCSR	__REG(0x80060018)  /* Ser. port 4 MCP Status Reg. */
-#define Ser4MCCR1	__REG(0x90060030)  /* Ser. port 4 MCP Control Reg. 1 */
-
-#define MCCR0_ASD	Fld (7, 0)	/* Audio Sampling rate Divisor/32  */
-                	        	/* [6..127]                        */
-                	        	/* faud = fmc/(32*ASD)             */
-                	        	/* Taud = 32*ASD*Tmc               */
-#define MCCR0_AudSmpDiv(Div)    	/*  Audio Sampling rate Divisor    */ \
-                	        	/*  [192..4064]                    */ \
-                	((Div)/32 << FShft (MCCR0_ASD))
-                	        	/*  faud = fmc/(32*Floor (Div/32)) */
-                	        	/*  Taud = 32*Floor (Div/32)*Tmc   */
-#define MCCR0_CeilAudSmpDiv(Div)	/*  Ceil. of AudSmpDiv [192..4064] */ \
-                	(((Div) + 31)/32 << FShft (MCCR0_ASD))
-                	        	/*  faud = fmc/(32*Ceil (Div/32))  */
-                	        	/*  Taud = 32*Ceil (Div/32)*Tmc    */
-#define MCCR0_TSD	Fld (7, 8)	/* Telecom Sampling rate           */
-                	        	/* Divisor/32 [16..127]            */
-                	        	/* ftcm = fmc/(32*TSD)             */
-                	        	/* Ttcm = 32*TSD*Tmc               */
-#define MCCR0_TcmSmpDiv(Div)    	/*  Telecom Sampling rate Divisor  */ \
-                	        	/*  [512..4064]                    */ \
-                	((Div)/32 << FShft (MCCR0_TSD))
-                	        	/*  ftcm = fmc/(32*Floor (Div/32)) */
-                	        	/*  Ttcm = 32*Floor (Div/32)*Tmc   */
-#define MCCR0_CeilTcmSmpDiv(Div)	/*  Ceil. of TcmSmpDiv [512..4064] */ \
-                	(((Div) + 31)/32 << FShft (MCCR0_TSD))
-                	        	/*  ftcm = fmc/(32*Ceil (Div/32))  */
-                	        	/*  Ttcm = 32*Ceil (Div/32)*Tmc    */
-#define MCCR0_MCE	0x00010000	/* MCP Enable                      */
-#define MCCR0_ECS	0x00020000	/* External Clock Select           */
-#define MCCR0_IntClk	(MCCR0_ECS*0)	/*  Internal Clock (10 or 12 MHz)  */
-#define MCCR0_ExtClk	(MCCR0_ECS*1)	/*  External Clock (GPIO [21])     */
-#define MCCR0_ADM	0x00040000	/* A/D (audio/telecom) data        */
-                	        	/* sampling/storing Mode           */
-#define MCCR0_VldBit	(MCCR0_ADM*0)	/*  Valid Bit storing mode         */
-#define MCCR0_SmpCnt	(MCCR0_ADM*1)	/*  Sampling Counter storing mode  */
-#define MCCR0_TTE	0x00080000	/* Telecom Transmit FIFO 1/2-full  */
-                	        	/* or less interrupt Enable        */
-#define MCCR0_TRE	0x00100000	/* Telecom Receive FIFO 1/2-full   */
-                	        	/* or more interrupt Enable        */
-#define MCCR0_ATE	0x00200000	/* Audio Transmit FIFO 1/2-full    */
-                	        	/* or less interrupt Enable        */
-#define MCCR0_ARE	0x00400000	/* Audio Receive FIFO 1/2-full or  */
-                	        	/* more interrupt Enable           */
-#define MCCR0_LBM	0x00800000	/* Look-Back Mode                  */
-#define MCCR0_ECP	Fld (2, 24)	/* External Clock Prescaler - 1    */
-#define MCCR0_ExtClkDiv(Div)    	/*  External Clock Divisor [1..4]  */ \
-                	(((Div) - 1) << FShft (MCCR0_ECP))
-
-#define MCDR0_DATA	Fld (12, 4)	/* receive/transmit audio DATA     */
-                	        	/* FIFOs                           */
-
-#define MCDR1_DATA	Fld (14, 2)	/* receive/transmit telecom DATA   */
-                	        	/* FIFOs                           */
-
-                	        	/* receive/transmit CODEC reg.     */
-                	        	/* FIFOs:                          */
-#define MCDR2_DATA	Fld (16, 0)	/*  reg. DATA                      */
-#define MCDR2_RW	0x00010000	/*  reg. Read/Write (transmit)     */
-#define MCDR2_Rd	(MCDR2_RW*0)	/*   reg. Read                     */
-#define MCDR2_Wr	(MCDR2_RW*1)	/*   reg. Write                    */
-#define MCDR2_ADD	Fld (4, 17)	/*  reg. ADDress                   */
-
-#define MCSR_ATS	0x00000001	/* Audio Transmit FIFO 1/2-full    */
-                	        	/* or less Service request (read)  */
-#define MCSR_ARS	0x00000002	/* Audio Receive FIFO 1/2-full or  */
-                	        	/* more Service request (read)     */
-#define MCSR_TTS	0x00000004	/* Telecom Transmit FIFO 1/2-full  */
-                	        	/* or less Service request (read)  */
-#define MCSR_TRS	0x00000008	/* Telecom Receive FIFO 1/2-full   */
-                	        	/* or more Service request (read)  */
-#define MCSR_ATU	0x00000010	/* Audio Transmit FIFO Under-run   */
-#define MCSR_ARO	0x00000020	/* Audio Receive FIFO Over-run     */
-#define MCSR_TTU	0x00000040	/* Telecom Transmit FIFO Under-run */
-#define MCSR_TRO	0x00000080	/* Telecom Receive FIFO Over-run   */
-#define MCSR_ANF	0x00000100	/* Audio transmit FIFO Not Full    */
-                	        	/* (read)                          */
-#define MCSR_ANE	0x00000200	/* Audio receive FIFO Not Empty    */
-                	        	/* (read)                          */
-#define MCSR_TNF	0x00000400	/* Telecom transmit FIFO Not Full  */
-                	        	/* (read)                          */
-#define MCSR_TNE	0x00000800	/* Telecom receive FIFO Not Empty  */
-                	        	/* (read)                          */
-#define MCSR_CWC	0x00001000	/* CODEC register Write Completed  */
-                	        	/* (read)                          */
-#define MCSR_CRC	0x00002000	/* CODEC register Read Completed   */
-                	        	/* (read)                          */
-#define MCSR_ACE	0x00004000	/* Audio CODEC Enabled (read)      */
-#define MCSR_TCE	0x00008000	/* Telecom CODEC Enabled (read)    */
-
-#define MCCR1_CFS	0x00100000	/* Clock Freq. Select              */
-#define MCCR1_F12MHz	(MCCR1_CFS*0)	/*  Freq. (fmc) = ~ 12 MHz         */
-                	        	/*  (11.981 MHz)                   */
-#define MCCR1_F10MHz	(MCCR1_CFS*1)	/*  Freq. (fmc) = ~ 10 MHz         */
-                	        	/*  (9.585 MHz)                    */
-
-
-/*
- * Synchronous Serial Port (SSP) control registers
- *
- * Registers
- *    Ser4SSCR0 	Serial port 4 Synchronous Serial Port (SSP) Control
- *              	Register 0 (read/write).
- *    Ser4SSCR1 	Serial port 4 Synchronous Serial Port (SSP) Control
- *              	Register 1 (read/write).
- *              	[Bits SPO and SP are only implemented in versions 2.0
- *              	(rev. = 8) and higher of the StrongARM SA-1100.]
- *    Ser4SSDR  	Serial port 4 Synchronous Serial Port (SSP) Data
- *              	Register (read/write).
- *    Ser4SSSR  	Serial port 4 Synchronous Serial Port (SSP) Status
- *              	Register (read/write).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *              	or 3.5795 MHz).
- *    fss, Tss  	Frequency, period of the SSP communication.
- */
-
-#define Ser4SSCR0	__REG(0x80070060)  /* Ser. port 4 SSP Control Reg. 0 */
-#define Ser4SSCR1	__REG(0x80070064)  /* Ser. port 4 SSP Control Reg. 1 */
-#define Ser4SSDR	__REG(0x8007006C)  /* Ser. port 4 SSP Data Reg. */
-#define Ser4SSSR	__REG(0x80070074)  /* Ser. port 4 SSP Status Reg. */
-
-#define SSCR0_DSS	Fld (4, 0)	/* Data Size - 1 Select [3..15]    */
-#define SSCR0_DataSize(Size)    	/*  Data Size Select [4..16]       */ \
-                	(((Size) - 1) << FShft (SSCR0_DSS))
-#define SSCR0_FRF	Fld (2, 4)	/* FRame Format                    */
-#define SSCR0_Motorola	        	/*  Motorola Serial Peripheral     */ \
-                	        	/*  Interface (SPI) format         */ \
-                	(0 << FShft (SSCR0_FRF))
-#define SSCR0_TI	        	/*  Texas Instruments Synchronous  */ \
-                	        	/*  Serial format                  */ \
-                	(1 << FShft (SSCR0_FRF))
-#define SSCR0_National	        	/*  National Microwire format      */ \
-                	(2 << FShft (SSCR0_FRF))
-#define SSCR0_SSE	0x00000080	/* SSP Enable                      */
-#define SSCR0_SCR	Fld (8, 8)	/* Serial Clock Rate divisor/2 - 1 */
-                	        	/* fss = fxtl/(2*(SCR + 1))        */
-                	        	/* Tss = 2*(SCR + 1)*Txtl          */
-#define SSCR0_SerClkDiv(Div)    	/*  Serial Clock Divisor [2..512]  */ \
-                	(((Div) - 2)/2 << FShft (SSCR0_SCR))
-                	        	/*  fss = fxtl/(2*Floor (Div/2))   */
-                	        	/*  Tss = 2*Floor (Div/2)*Txtl     */
-#define SSCR0_CeilSerClkDiv(Div)	/*  Ceil. of SerClkDiv [2..512]    */ \
-                	(((Div) - 1)/2 << FShft (SSCR0_SCR))
-                	        	/*  fss = fxtl/(2*Ceil (Div/2))    */
-                	        	/*  Tss = 2*Ceil (Div/2)*Txtl      */
-
-#define SSCR1_RIE	0x00000001	/* Receive FIFO 1/2-full or more   */
-                	        	/* Interrupt Enable                */
-#define SSCR1_TIE	0x00000002	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Interrupt Enable                */
-#define SSCR1_LBM	0x00000004	/* Look-Back Mode                  */
-#define SSCR1_SPO	0x00000008	/* Sample clock (SCLK) POlarity    */
-#define SSCR1_SClkIactL	(SSCR1_SPO*0)	/*  Sample Clock Inactive Low      */
-#define SSCR1_SClkIactH	(SSCR1_SPO*1)	/*  Sample Clock Inactive High     */
-#define SSCR1_SP	0x00000010	/* Sample clock (SCLK) Phase       */
-#define SSCR1_SClk1P	(SSCR1_SP*0)	/*  Sample Clock active 1 Period   */
-                	        	/*  after frame (SFRM, 1st edge)   */
-#define SSCR1_SClk1_2P	(SSCR1_SP*1)	/*  Sample Clock active 1/2 Period */
-                	        	/*  after frame (SFRM, 1st edge)   */
-#define SSCR1_ECS	0x00000020	/* External Clock Select           */
-#define SSCR1_IntClk	(SSCR1_ECS*0)	/*  Internal Clock                 */
-#define SSCR1_ExtClk	(SSCR1_ECS*1)	/*  External Clock (GPIO [19])     */
-
-#define SSDR_DATA	Fld (16, 0)	/* receive/transmit DATA FIFOs     */
-
-#define SSSR_TNF	0x00000002	/* Transmit FIFO Not Full (read)   */
-#define SSSR_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
-#define SSSR_BSY	0x00000008	/* SSP BuSY (read)                 */
-#define SSSR_TFS	0x00000010	/* Transmit FIFO 1/2-full or less  */
-                	        	/* Service request (read)          */
-#define SSSR_RFS	0x00000020	/* Receive FIFO 1/2-full or more   */
-                	        	/* Service request (read)          */
-#define SSSR_ROR	0x00000040	/* Receive FIFO Over-Run           */
-
-
-/*
- * Operating System (OS) timer control registers
- *
- * Registers
- *    OSMR0     	Operating System (OS) timer Match Register 0
- *              	(read/write).
- *    OSMR1     	Operating System (OS) timer Match Register 1
- *              	(read/write).
- *    OSMR2     	Operating System (OS) timer Match Register 2
- *              	(read/write).
- *    OSMR3     	Operating System (OS) timer Match Register 3
- *              	(read/write).
- *    OSCR      	Operating System (OS) timer Counter Register
- *              	(read/write).
- *    OSSR      	Operating System (OS) timer Status Register
- *              	(read/write).
- *    OWER      	Operating System (OS) timer Watch-dog Enable Register
- *              	(read/write).
- *    OIER      	Operating System (OS) timer Interrupt Enable Register
- *              	(read/write).
- */
-
-#define OSMR0  		io_p2v(0x90000000)  /* OS timer Match Reg. 0 */
-#define OSMR1  		io_p2v(0x90000004)  /* OS timer Match Reg. 1 */
-#define OSMR2  		io_p2v(0x90000008)  /* OS timer Match Reg. 2 */
-#define OSMR3  		io_p2v(0x9000000c)  /* OS timer Match Reg. 3 */
-#define OSCR   		io_p2v(0x90000010)  /* OS timer Counter Reg. */
-#define OSSR   		io_p2v(0x90000014)  /* OS timer Status Reg. */
-#define OWER   		io_p2v(0x90000018)  /* OS timer Watch-dog Enable Reg. */
-#define OIER  	 	io_p2v(0x9000001C)  /* OS timer Interrupt Enable Reg. */
-
-#define OSSR_M(Nb)	        	/* Match detected [0..3]           */ \
-                	(0x00000001 << (Nb))
-#define OSSR_M0 	OSSR_M (0)	/* Match detected 0                */
-#define OSSR_M1 	OSSR_M (1)	/* Match detected 1                */
-#define OSSR_M2 	OSSR_M (2)	/* Match detected 2                */
-#define OSSR_M3 	OSSR_M (3)	/* Match detected 3                */
-
-#define OWER_WME	0x00000001	/* Watch-dog Match Enable          */
-                	        	/* (set only)                      */
-
-#define OIER_E(Nb)	        	/* match interrupt Enable [0..3]   */ \
-                	(0x00000001 << (Nb))
-#define OIER_E0 	OIER_E (0)	/* match interrupt Enable 0        */
-#define OIER_E1 	OIER_E (1)	/* match interrupt Enable 1        */
-#define OIER_E2 	OIER_E (2)	/* match interrupt Enable 2        */
-#define OIER_E3 	OIER_E (3)	/* match interrupt Enable 3        */
-
-
-/*
- * Power Manager (PM) control registers
- *
- * Registers
- *    PMCR      	Power Manager (PM) Control Register (read/write).
- *    PSSR      	Power Manager (PM) Sleep Status Register (read/write).
- *    PSPR      	Power Manager (PM) Scratch-Pad Register (read/write).
- *    PWER      	Power Manager (PM) Wake-up Enable Register
- *              	(read/write).
- *    PCFR      	Power Manager (PM) general ConFiguration Register
- *              	(read/write).
- *    PPCR      	Power Manager (PM) Phase-Locked Loop (PLL)
- *              	Configuration Register (read/write).
- *    PGSR      	Power Manager (PM) General-Purpose Input/Output (GPIO)
- *              	Sleep state Register (read/write, see GPIO pins).
- *    POSR      	Power Manager (PM) Oscillator Status Register (read).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *              	or 3.5795 MHz).
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- */
-
-#define PMCR		__REG(0x90020000)  /* PM Control Reg. */
-#define PSSR		__REG(0x90020004)  /* PM Sleep Status Reg. */
-#define PSPR		__REG(0x90020008)  /* PM Scratch-Pad Reg. */
-#define PWER		__REG(0x9002000C)  /* PM Wake-up Enable Reg. */
-#define PCFR		__REG(0x90020010)  /* PM general ConFiguration Reg. */
-#define PPCR		__REG(0x90020014)  /* PM PLL Configuration Reg. */
-#define PGSR		__REG(0x90020018)  /* PM GPIO Sleep state Reg. */
-#define POSR		__REG(0x9002001C)  /* PM Oscillator Status Reg. */
-
-#define PMCR_SF 	0x00000001	/* Sleep Force (set only)          */
-
-#define PSSR_SS 	0x00000001	/* Software Sleep                  */
-#define PSSR_BFS	0x00000002	/* Battery Fault Status            */
-                	        	/* (BATT_FAULT)                    */
-#define PSSR_VFS	0x00000004	/* Vdd Fault Status (VDD_FAULT)    */
-#define PSSR_DH 	0x00000008	/* DRAM control Hold               */
-#define PSSR_PH 	0x00000010	/* Peripheral control Hold         */
-
-#define PWER_GPIO(Nb)	GPIO_GPIO (Nb)	/* GPIO [0..27] wake-up enable     */
-#define PWER_GPIO0	PWER_GPIO (0)	/* GPIO  [0] wake-up enable        */
-#define PWER_GPIO1	PWER_GPIO (1)	/* GPIO  [1] wake-up enable        */
-#define PWER_GPIO2	PWER_GPIO (2)	/* GPIO  [2] wake-up enable        */
-#define PWER_GPIO3	PWER_GPIO (3)	/* GPIO  [3] wake-up enable        */
-#define PWER_GPIO4	PWER_GPIO (4)	/* GPIO  [4] wake-up enable        */
-#define PWER_GPIO5	PWER_GPIO (5)	/* GPIO  [5] wake-up enable        */
-#define PWER_GPIO6	PWER_GPIO (6)	/* GPIO  [6] wake-up enable        */
-#define PWER_GPIO7	PWER_GPIO (7)	/* GPIO  [7] wake-up enable        */
-#define PWER_GPIO8	PWER_GPIO (8)	/* GPIO  [8] wake-up enable        */
-#define PWER_GPIO9	PWER_GPIO (9)	/* GPIO  [9] wake-up enable        */
-#define PWER_GPIO10	PWER_GPIO (10)	/* GPIO [10] wake-up enable        */
-#define PWER_GPIO11	PWER_GPIO (11)	/* GPIO [11] wake-up enable        */
-#define PWER_GPIO12	PWER_GPIO (12)	/* GPIO [12] wake-up enable        */
-#define PWER_GPIO13	PWER_GPIO (13)	/* GPIO [13] wake-up enable        */
-#define PWER_GPIO14	PWER_GPIO (14)	/* GPIO [14] wake-up enable        */
-#define PWER_GPIO15	PWER_GPIO (15)	/* GPIO [15] wake-up enable        */
-#define PWER_GPIO16	PWER_GPIO (16)	/* GPIO [16] wake-up enable        */
-#define PWER_GPIO17	PWER_GPIO (17)	/* GPIO [17] wake-up enable        */
-#define PWER_GPIO18	PWER_GPIO (18)	/* GPIO [18] wake-up enable        */
-#define PWER_GPIO19	PWER_GPIO (19)	/* GPIO [19] wake-up enable        */
-#define PWER_GPIO20	PWER_GPIO (20)	/* GPIO [20] wake-up enable        */
-#define PWER_GPIO21	PWER_GPIO (21)	/* GPIO [21] wake-up enable        */
-#define PWER_GPIO22	PWER_GPIO (22)	/* GPIO [22] wake-up enable        */
-#define PWER_GPIO23	PWER_GPIO (23)	/* GPIO [23] wake-up enable        */
-#define PWER_GPIO24	PWER_GPIO (24)	/* GPIO [24] wake-up enable        */
-#define PWER_GPIO25	PWER_GPIO (25)	/* GPIO [25] wake-up enable        */
-#define PWER_GPIO26	PWER_GPIO (26)	/* GPIO [26] wake-up enable        */
-#define PWER_GPIO27	PWER_GPIO (27)	/* GPIO [27] wake-up enable        */
-#define PWER_RTC	0x80000000	/* RTC alarm wake-up enable        */
-
-#define PCFR_OPDE	0x00000001	/* Oscillator Power-Down Enable    */
-#define PCFR_ClkRun	(PCFR_OPDE*0)	/*  Clock Running in sleep mode    */
-#define PCFR_ClkStp	(PCFR_OPDE*1)	/*  Clock Stopped in sleep mode    */
-#define PCFR_FP 	0x00000002	/* Float PCMCIA pins               */
-#define PCFR_PCMCIANeg	(PCFR_FP*0)	/*  PCMCIA pins Negated (1)        */
-#define PCFR_PCMCIAFlt	(PCFR_FP*1)	/*  PCMCIA pins Floating           */
-#define PCFR_FS 	0x00000004	/* Float Static memory pins        */
-#define PCFR_StMemNeg	(PCFR_FS*0)	/*  Static Memory pins Negated (1) */
-#define PCFR_StMemFlt	(PCFR_FS*1)	/*  Static Memory pins Floating    */
-#define PCFR_FO 	0x00000008	/* Force RTC oscillator            */
-                	        	/* (32.768 kHz) enable On          */
-
-#define PPCR_CCF	Fld (5, 0)	/* CPU core Clock (CCLK) Freq.     */
-#define PPCR_Fx16	        	/*  Freq. x 16 (fcpu = 16*fxtl)    */ \
-                	(0x00 << FShft (PPCR_CCF))
-#define PPCR_Fx20	        	/*  Freq. x 20 (fcpu = 20*fxtl)    */ \
-                	(0x01 << FShft (PPCR_CCF))
-#define PPCR_Fx24	        	/*  Freq. x 24 (fcpu = 24*fxtl)    */ \
-                	(0x02 << FShft (PPCR_CCF))
-#define PPCR_Fx28	        	/*  Freq. x 28 (fcpu = 28*fxtl)    */ \
-                	(0x03 << FShft (PPCR_CCF))
-#define PPCR_Fx32	        	/*  Freq. x 32 (fcpu = 32*fxtl)    */ \
-                	(0x04 << FShft (PPCR_CCF))
-#define PPCR_Fx36	        	/*  Freq. x 36 (fcpu = 36*fxtl)    */ \
-                	(0x05 << FShft (PPCR_CCF))
-#define PPCR_Fx40	        	/*  Freq. x 40 (fcpu = 40*fxtl)    */ \
-                	(0x06 << FShft (PPCR_CCF))
-#define PPCR_Fx44	        	/*  Freq. x 44 (fcpu = 44*fxtl)    */ \
-                	(0x07 << FShft (PPCR_CCF))
-#define PPCR_Fx48	        	/*  Freq. x 48 (fcpu = 48*fxtl)    */ \
-                	(0x08 << FShft (PPCR_CCF))
-#define PPCR_Fx52	        	/*  Freq. x 52 (fcpu = 52*fxtl)    */ \
-                	(0x09 << FShft (PPCR_CCF))
-#define PPCR_Fx56	        	/*  Freq. x 56 (fcpu = 56*fxtl)    */ \
-                	(0x0A << FShft (PPCR_CCF))
-#define PPCR_Fx60	        	/*  Freq. x 60 (fcpu = 60*fxtl)    */ \
-                	(0x0B << FShft (PPCR_CCF))
-#define PPCR_Fx64	        	/*  Freq. x 64 (fcpu = 64*fxtl)    */ \
-                	(0x0C << FShft (PPCR_CCF))
-#define PPCR_Fx68	        	/*  Freq. x 68 (fcpu = 68*fxtl)    */ \
-                	(0x0D << FShft (PPCR_CCF))
-#define PPCR_Fx72	        	/*  Freq. x 72 (fcpu = 72*fxtl)    */ \
-                	(0x0E << FShft (PPCR_CCF))
-#define PPCR_Fx76	        	/*  Freq. x 76 (fcpu = 76*fxtl)    */ \
-                	(0x0F << FShft (PPCR_CCF))
-                	        	/*  3.6864 MHz crystal (fxtl):     */
-#define PPCR_F59_0MHz	PPCR_Fx16	/*   Freq. (fcpu) =  59.0 MHz      */
-#define PPCR_F73_7MHz	PPCR_Fx20	/*   Freq. (fcpu) =  73.7 MHz      */
-#define PPCR_F88_5MHz	PPCR_Fx24	/*   Freq. (fcpu) =  88.5 MHz      */
-#define PPCR_F103_2MHz	PPCR_Fx28	/*   Freq. (fcpu) = 103.2 MHz      */
-#define PPCR_F118_0MHz	PPCR_Fx32	/*   Freq. (fcpu) = 118.0 MHz      */
-#define PPCR_F132_7MHz	PPCR_Fx36	/*   Freq. (fcpu) = 132.7 MHz      */
-#define PPCR_F147_5MHz	PPCR_Fx40	/*   Freq. (fcpu) = 147.5 MHz      */
-#define PPCR_F162_2MHz	PPCR_Fx44	/*   Freq. (fcpu) = 162.2 MHz      */
-#define PPCR_F176_9MHz	PPCR_Fx48	/*   Freq. (fcpu) = 176.9 MHz      */
-#define PPCR_F191_7MHz	PPCR_Fx52	/*   Freq. (fcpu) = 191.7 MHz      */
-#define PPCR_F206_4MHz	PPCR_Fx56	/*   Freq. (fcpu) = 206.4 MHz      */
-#define PPCR_F221_2MHz	PPCR_Fx60	/*   Freq. (fcpu) = 221.2 MHz      */
-#define PPCR_F239_6MHz	PPCR_Fx64	/*   Freq. (fcpu) = 239.6 MHz      */
-#define PPCR_F250_7MHz	PPCR_Fx68	/*   Freq. (fcpu) = 250.7 MHz      */
-#define PPCR_F265_4MHz	PPCR_Fx72	/*   Freq. (fcpu) = 265.4 MHz      */
-#define PPCR_F280_2MHz	PPCR_Fx76	/*   Freq. (fcpu) = 280.2 MHz      */
-                	        	/*  3.5795 MHz crystal (fxtl):     */
-#define PPCR_F57_3MHz	PPCR_Fx16	/*   Freq. (fcpu) =  57.3 MHz      */
-#define PPCR_F71_6MHz	PPCR_Fx20	/*   Freq. (fcpu) =  71.6 MHz      */
-#define PPCR_F85_9MHz	PPCR_Fx24	/*   Freq. (fcpu) =  85.9 MHz      */
-#define PPCR_F100_2MHz	PPCR_Fx28	/*   Freq. (fcpu) = 100.2 MHz      */
-#define PPCR_F114_5MHz	PPCR_Fx32	/*   Freq. (fcpu) = 114.5 MHz      */
-#define PPCR_F128_9MHz	PPCR_Fx36	/*   Freq. (fcpu) = 128.9 MHz      */
-#define PPCR_F143_2MHz	PPCR_Fx40	/*   Freq. (fcpu) = 143.2 MHz      */
-#define PPCR_F157_5MHz	PPCR_Fx44	/*   Freq. (fcpu) = 157.5 MHz      */
-#define PPCR_F171_8MHz	PPCR_Fx48	/*   Freq. (fcpu) = 171.8 MHz      */
-#define PPCR_F186_1MHz	PPCR_Fx52	/*   Freq. (fcpu) = 186.1 MHz      */
-#define PPCR_F200_5MHz	PPCR_Fx56	/*   Freq. (fcpu) = 200.5 MHz      */
-#define PPCR_F214_8MHz	PPCR_Fx60	/*   Freq. (fcpu) = 214.8 MHz      */
-#define PPCR_F229_1MHz	PPCR_Fx64	/*   Freq. (fcpu) = 229.1 MHz      */
-#define PPCR_F243_4MHz	PPCR_Fx68	/*   Freq. (fcpu) = 243.4 MHz      */
-#define PPCR_F257_7MHz	PPCR_Fx72	/*   Freq. (fcpu) = 257.7 MHz      */
-#define PPCR_F272_0MHz	PPCR_Fx76	/*   Freq. (fcpu) = 272.0 MHz      */
-
-#define POSR_OOK	0x00000001	/* RTC Oscillator (32.768 kHz) OK  */
-
-
-/*
- * Reset Controller (RC) control registers
- *
- * Registers
- *    RSRR      	Reset Controller (RC) Software Reset Register
- *              	(read/write).
- *    RCSR      	Reset Controller (RC) Status Register (read/write).
- */
-
-#define RSRR		__REG(0x90030000)  /* RC Software Reset Reg. */
-#define RCSR		__REG(0x90030004)  /* RC Status Reg. */
-
-#define RSRR_SWR	0x00000001	/* SoftWare Reset (set only)       */
-
-#define RCSR_HWR	0x00000001	/* HardWare Reset                  */
-#define RCSR_SWR	0x00000002	/* SoftWare Reset                  */
-#define RCSR_WDR	0x00000004	/* Watch-Dog Reset                 */
-#define RCSR_SMR	0x00000008	/* Sleep-Mode Reset                */
-
-
-/*
- * Test unit control registers
- *
- * Registers
- *    TUCR      	Test Unit Control Register (read/write).
- */
-
-#define TUCR		__REG(0x90030008)  /* Test Unit Control Reg. */
-
-#define TUCR_TIC	0x00000040	/* TIC mode                        */
-#define TUCR_TTST	0x00000080	/* Trim TeST mode                  */
-#define TUCR_RCRC	0x00000100	/* Richard's Cyclic Redundancy     */
-                	        	/* Check                           */
-#define TUCR_PMD	0x00000200	/* Power Management Disable        */
-#define TUCR_MR 	0x00000400	/* Memory Request mode             */
-#define TUCR_NoMB	(TUCR_MR*0)	/*  No Memory Bus request & grant  */
-#define TUCR_MBGPIO	(TUCR_MR*1)	/*  Memory Bus request (MBREQ) &   */
-                	        	/*  grant (MBGNT) on GPIO [22:21]  */
-#define TUCR_CTB	Fld (3, 20)	/* Clock Test Bits                 */
-#define TUCR_FDC	0x00800000	/* RTC Force Delete Count          */
-#define TUCR_FMC	0x01000000	/* Force Michelle's Control mode   */
-#define TUCR_TMC	0x02000000	/* RTC Trimmer Multiplexer Control */
-#define TUCR_DPS	0x04000000	/* Disallow Pad Sleep              */
-#define TUCR_TSEL	Fld (3, 29)	/* clock Test SELect on GPIO [27]  */
-#define TUCR_32_768kHz	        	/*  32.768 kHz osc. on GPIO [27]   */ \
-                	(0 << FShft (TUCR_TSEL))
-#define TUCR_3_6864MHz	        	/*  3.6864 MHz osc. on GPIO [27]   */ \
-                	(1 << FShft (TUCR_TSEL))
-#define TUCR_VDD	        	/*  VDD ring osc./16 on GPIO [27]  */ \
-                	(2 << FShft (TUCR_TSEL))
-#define TUCR_96MHzPLL	        	/*  96 MHz PLL/4 on GPIO [27]      */ \
-                	(3 << FShft (TUCR_TSEL))
-#define TUCR_Clock	        	/*  internal (fcpu/2) & 32.768 kHz */ \
-                	        	/*  Clocks on GPIO [26:27]         */ \
-                	(4 << FShft (TUCR_TSEL))
-#define TUCR_3_6864MHzA	        	/*  3.6864 MHz osc. on GPIO [27]   */ \
-                	        	/*  (Alternative)                  */ \
-                	(5 << FShft (TUCR_TSEL))
-#define TUCR_MainPLL	        	/*  Main PLL/16 on GPIO [27]       */ \
-                	(6 << FShft (TUCR_TSEL))
-#define TUCR_VDDL	        	/*  VDDL ring osc./4 on GPIO [27]  */ \
-                	(7 << FShft (TUCR_TSEL))
-
-
-/*
- * General-Purpose Input/Output (GPIO) control registers
- *
- * Registers
- *    GPLR      	General-Purpose Input/Output (GPIO) Pin Level
- *              	Register (read).
- *    GPDR      	General-Purpose Input/Output (GPIO) Pin Direction
- *              	Register (read/write).
- *    GPSR      	General-Purpose Input/Output (GPIO) Pin output Set
- *              	Register (write).
- *    GPCR      	General-Purpose Input/Output (GPIO) Pin output Clear
- *              	Register (write).
- *    GRER      	General-Purpose Input/Output (GPIO) Rising-Edge
- *              	detect Register (read/write).
- *    GFER      	General-Purpose Input/Output (GPIO) Falling-Edge
- *              	detect Register (read/write).
- *    GEDR      	General-Purpose Input/Output (GPIO) Edge Detect
- *              	status Register (read/write).
- *    GAFR      	General-Purpose Input/Output (GPIO) Alternate
- *              	Function Register (read/write).
- *
- * Clock
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- */
-
-#define GPLR		__REG(0x90040000)  /* GPIO Pin Level Reg.             */
-#define GPDR		__REG(0x90040004)  /* GPIO Pin Direction Reg.         */
-#define GPSR		__REG(0x90040008)  /* GPIO Pin output Set Reg.        */
-#define GPCR		__REG(0x9004000C)  /* GPIO Pin output Clear Reg.      */
-#define GRER		__REG(0x90040010)  /* GPIO Rising-Edge detect Reg.    */
-#define GFER		__REG(0x90040014)  /* GPIO Falling-Edge detect Reg.   */
-#define GEDR		__REG(0x90040018)  /* GPIO Edge Detect status Reg.    */
-#define GAFR		__REG(0x9004001C)  /* GPIO Alternate Function Reg.    */
-
-#define GPIO_MIN	(0)
-#define GPIO_MAX	(27)
-
-#define GPIO_GPIO(Nb)	        	/* GPIO [0..27]                    */ \
-                	(0x00000001 << (Nb))
-#define GPIO_GPIO0	GPIO_GPIO (0)	/* GPIO  [0]                       */
-#define GPIO_GPIO1	GPIO_GPIO (1)	/* GPIO  [1]                       */
-#define GPIO_GPIO2	GPIO_GPIO (2)	/* GPIO  [2]                       */
-#define GPIO_GPIO3	GPIO_GPIO (3)	/* GPIO  [3]                       */
-#define GPIO_GPIO4	GPIO_GPIO (4)	/* GPIO  [4]                       */
-#define GPIO_GPIO5	GPIO_GPIO (5)	/* GPIO  [5]                       */
-#define GPIO_GPIO6	GPIO_GPIO (6)	/* GPIO  [6]                       */
-#define GPIO_GPIO7	GPIO_GPIO (7)	/* GPIO  [7]                       */
-#define GPIO_GPIO8	GPIO_GPIO (8)	/* GPIO  [8]                       */
-#define GPIO_GPIO9	GPIO_GPIO (9)	/* GPIO  [9]                       */
-#define GPIO_GPIO10	GPIO_GPIO (10)	/* GPIO [10]                       */
-#define GPIO_GPIO11	GPIO_GPIO (11)	/* GPIO [11]                       */
-#define GPIO_GPIO12	GPIO_GPIO (12)	/* GPIO [12]                       */
-#define GPIO_GPIO13	GPIO_GPIO (13)	/* GPIO [13]                       */
-#define GPIO_GPIO14	GPIO_GPIO (14)	/* GPIO [14]                       */
-#define GPIO_GPIO15	GPIO_GPIO (15)	/* GPIO [15]                       */
-#define GPIO_GPIO16	GPIO_GPIO (16)	/* GPIO [16]                       */
-#define GPIO_GPIO17	GPIO_GPIO (17)	/* GPIO [17]                       */
-#define GPIO_GPIO18	GPIO_GPIO (18)	/* GPIO [18]                       */
-#define GPIO_GPIO19	GPIO_GPIO (19)	/* GPIO [19]                       */
-#define GPIO_GPIO20	GPIO_GPIO (20)	/* GPIO [20]                       */
-#define GPIO_GPIO21	GPIO_GPIO (21)	/* GPIO [21]                       */
-#define GPIO_GPIO22	GPIO_GPIO (22)	/* GPIO [22]                       */
-#define GPIO_GPIO23	GPIO_GPIO (23)	/* GPIO [23]                       */
-#define GPIO_GPIO24	GPIO_GPIO (24)	/* GPIO [24]                       */
-#define GPIO_GPIO25	GPIO_GPIO (25)	/* GPIO [25]                       */
-#define GPIO_GPIO26	GPIO_GPIO (26)	/* GPIO [26]                       */
-#define GPIO_GPIO27	GPIO_GPIO (27)	/* GPIO [27]                       */
-
-#define GPIO_LDD(Nb)	        	/* LCD Data [8..15] (O)            */ \
-                	GPIO_GPIO ((Nb) - 6)
-#define GPIO_LDD8	GPIO_LDD (8)	/* LCD Data  [8] (O)               */
-#define GPIO_LDD9	GPIO_LDD (9)	/* LCD Data  [9] (O)               */
-#define GPIO_LDD10	GPIO_LDD (10)	/* LCD Data [10] (O)               */
-#define GPIO_LDD11	GPIO_LDD (11)	/* LCD Data [11] (O)               */
-#define GPIO_LDD12	GPIO_LDD (12)	/* LCD Data [12] (O)               */
-#define GPIO_LDD13	GPIO_LDD (13)	/* LCD Data [13] (O)               */
-#define GPIO_LDD14	GPIO_LDD (14)	/* LCD Data [14] (O)               */
-#define GPIO_LDD15	GPIO_LDD (15)	/* LCD Data [15] (O)               */
-                	        	/* ser. port 4:                    */
-#define GPIO_SSP_TXD	GPIO_GPIO (10)	/*  SSP Transmit Data (O)          */
-#define GPIO_SSP_RXD	GPIO_GPIO (11)	/*  SSP Receive Data (I)           */
-#define GPIO_SSP_SCLK	GPIO_GPIO (12)	/*  SSP Sample CLocK (O)           */
-#define GPIO_SSP_SFRM	GPIO_GPIO (13)	/*  SSP Sample FRaMe (O)           */
-                	        	/* ser. port 1:                    */
-#define GPIO_UART_TXD	GPIO_GPIO (14)	/*  UART Transmit Data (O)         */
-#define GPIO_UART_RXD	GPIO_GPIO (15)	/*  UART Receive Data (I)          */
-#define GPIO_SDLC_SCLK	GPIO_GPIO (16)	/*  SDLC Sample CLocK (I/O)        */
-#define GPIO_SDLC_AAF	GPIO_GPIO (17)	/*  SDLC Abort After Frame (O)     */
-#define GPIO_UART_SCLK1	GPIO_GPIO (18)	/*  UART Sample CLocK 1 (I)        */
-                	        	/* ser. port 4:                    */
-#define GPIO_SSP_CLK	GPIO_GPIO (19)	/*  SSP external CLocK (I)         */
-                	        	/* ser. port 3:                    */
-#define GPIO_UART_SCLK3	GPIO_GPIO (20)	/*  UART Sample CLocK 3 (I)        */
-                	        	/* ser. port 4:                    */
-#define GPIO_MCP_CLK	GPIO_GPIO (21)	/*  MCP CLocK (I)                  */
-                	        	/* test controller:                */
-#define GPIO_TIC_ACK	GPIO_GPIO (21)	/*  TIC ACKnowledge (O)            */
-#define GPIO_MBGNT	GPIO_GPIO (21)	/*  Memory Bus GraNT (O)           */
-#define GPIO_TREQA	GPIO_GPIO (22)	/*  TIC REQuest A (I)              */
-#define GPIO_MBREQ	GPIO_GPIO (22)	/*  Memory Bus REQuest (I)         */
-#define GPIO_TREQB	GPIO_GPIO (23)	/*  TIC REQuest B (I)              */
-#define GPIO_1Hz	GPIO_GPIO (25)	/* 1 Hz clock (O)                  */
-#define GPIO_RCLK	GPIO_GPIO (26)	/* internal (R) CLocK (O, fcpu/2)  */
-#define GPIO_32_768kHz	GPIO_GPIO (27)	/* 32.768 kHz clock (O, RTC)       */
-
-#define GPDR_In 	0       	/* Input                           */
-#define GPDR_Out	1       	/* Output                          */
-
-
-/*
- * Interrupt Controller (IC) control registers
- *
- * Registers
- *    ICIP      	Interrupt Controller (IC) Interrupt ReQuest (IRQ)
- *              	Pending register (read).
- *    ICMR      	Interrupt Controller (IC) Mask Register (read/write).
- *    ICLR      	Interrupt Controller (IC) Level Register (read/write).
- *    ICCR      	Interrupt Controller (IC) Control Register
- *              	(read/write).
- *              	[The ICCR register is only implemented in versions 2.0
- *              	(rev. = 8) and higher of the StrongARM SA-1100.]
- *    ICFP      	Interrupt Controller (IC) Fast Interrupt reQuest
- *              	(FIQ) Pending register (read).
- *    ICPR      	Interrupt Controller (IC) Pending Register (read).
- *              	[The ICPR register is active low (inverted) in
- *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *              	StrongARM SA-1100, it is active high (non-inverted) in
- *              	versions 2.0 (rev. = 8) and higher.]
- */
-
-#define ICIP		__REG(0x90050000)  /* IC IRQ Pending reg.             */
-#define ICMR		__REG(0x90050004)  /* IC Mask Reg.                    */
-#define ICLR		__REG(0x90050008)  /* IC Level Reg.                   */
-#define ICCR		__REG(0x9005000C)  /* IC Control Reg.                 */
-#define ICFP		__REG(0x90050010)  /* IC FIQ Pending reg.             */
-#define ICPR		__REG(0x90050020)  /* IC Pending Reg.                 */
-
-#define IC_GPIO(Nb)	        	/* GPIO [0..10]                    */ \
-                	(0x00000001 << (Nb))
-#define IC_GPIO0	IC_GPIO (0)	/* GPIO  [0]                       */
-#define IC_GPIO1	IC_GPIO (1)	/* GPIO  [1]                       */
-#define IC_GPIO2	IC_GPIO (2)	/* GPIO  [2]                       */
-#define IC_GPIO3	IC_GPIO (3)	/* GPIO  [3]                       */
-#define IC_GPIO4	IC_GPIO (4)	/* GPIO  [4]                       */
-#define IC_GPIO5	IC_GPIO (5)	/* GPIO  [5]                       */
-#define IC_GPIO6	IC_GPIO (6)	/* GPIO  [6]                       */
-#define IC_GPIO7	IC_GPIO (7)	/* GPIO  [7]                       */
-#define IC_GPIO8	IC_GPIO (8)	/* GPIO  [8]                       */
-#define IC_GPIO9	IC_GPIO (9)	/* GPIO  [9]                       */
-#define IC_GPIO10	IC_GPIO (10)	/* GPIO [10]                       */
-#define IC_GPIO11_27	0x00000800	/* GPIO [11:27] (ORed)             */
-#define IC_LCD  	0x00001000	/* LCD controller                  */
-#define IC_Ser0UDC	0x00002000	/* Ser. port 0 UDC                 */
-#define IC_Ser1SDLC	0x00004000	/* Ser. port 1 SDLC                */
-#define IC_Ser1UART	0x00008000	/* Ser. port 1 UART                */
-#define IC_Ser2ICP	0x00010000	/* Ser. port 2 ICP                 */
-#define IC_Ser3UART	0x00020000	/* Ser. port 3 UART                */
-#define IC_Ser4MCP	0x00040000	/* Ser. port 4 MCP                 */
-#define IC_Ser4SSP	0x00080000	/* Ser. port 4 SSP                 */
-#define IC_DMA(Nb)	        	/* DMA controller channel [0..5]   */ \
-                	(0x00100000 << (Nb))
-#define IC_DMA0 	IC_DMA (0)	/* DMA controller channel 0        */
-#define IC_DMA1 	IC_DMA (1)	/* DMA controller channel 1        */
-#define IC_DMA2 	IC_DMA (2)	/* DMA controller channel 2        */
-#define IC_DMA3 	IC_DMA (3)	/* DMA controller channel 3        */
-#define IC_DMA4 	IC_DMA (4)	/* DMA controller channel 4        */
-#define IC_DMA5 	IC_DMA (5)	/* DMA controller channel 5        */
-#define IC_OST(Nb)	        	/* OS Timer match [0..3]           */ \
-                	(0x04000000 << (Nb))
-#define IC_OST0 	IC_OST (0)	/* OS Timer match 0                */
-#define IC_OST1 	IC_OST (1)	/* OS Timer match 1                */
-#define IC_OST2 	IC_OST (2)	/* OS Timer match 2                */
-#define IC_OST3 	IC_OST (3)	/* OS Timer match 3                */
-#define IC_RTC1Hz	0x40000000	/* RTC 1 Hz clock                  */
-#define IC_RTCAlrm	0x80000000	/* RTC Alarm                       */
-
-#define ICLR_IRQ	0       	/* Interrupt ReQuest               */
-#define ICLR_FIQ	1       	/* Fast Interrupt reQuest          */
-
-#define ICCR_DIM	0x00000001	/* Disable Idle-mode interrupt     */
-                	        	/* Mask                            */
-#define ICCR_IdleAllInt	(ICCR_DIM*0)	/*  Idle-mode All Interrupt enable */
-                	        	/*  (ICMR ignored)                 */
-#define ICCR_IdleMskInt	(ICCR_DIM*1)	/*  Idle-mode non-Masked Interrupt */
-                	        	/*  enable (ICMR used)             */
-
-
-/*
- * Peripheral Pin Controller (PPC) control registers
- *
- * Registers
- *    PPDR      	Peripheral Pin Controller (PPC) Pin Direction
- *              	Register (read/write).
- *    PPSR      	Peripheral Pin Controller (PPC) Pin State Register
- *              	(read/write).
- *    PPAR      	Peripheral Pin Controller (PPC) Pin Assignment
- *              	Register (read/write).
- *    PSDR      	Peripheral Pin Controller (PPC) Sleep-mode pin
- *              	Direction Register (read/write).
- *    PPFR      	Peripheral Pin Controller (PPC) Pin Flag Register
- *              	(read).
- */
-
-#define PPDR		__REG(0x90060000)  /* PPC Pin Direction Reg.          */
-#define PPSR		__REG(0x90060004)  /* PPC Pin State Reg.              */
-#define PPAR		__REG(0x90060008)  /* PPC Pin Assignment Reg.         */
-#define PSDR		__REG(0x9006000C)  /* PPC Sleep-mode pin Direction Reg. */
-#define PPFR		__REG(0x90060010)  /* PPC Pin Flag Reg.               */
-
-#define PPC_LDD(Nb)	        	/* LCD Data [0..7]                 */ \
-                	(0x00000001 << (Nb))
-#define PPC_LDD0	PPC_LDD (0)	/* LCD Data [0]                    */
-#define PPC_LDD1	PPC_LDD (1)	/* LCD Data [1]                    */
-#define PPC_LDD2	PPC_LDD (2)	/* LCD Data [2]                    */
-#define PPC_LDD3	PPC_LDD (3)	/* LCD Data [3]                    */
-#define PPC_LDD4	PPC_LDD (4)	/* LCD Data [4]                    */
-#define PPC_LDD5	PPC_LDD (5)	/* LCD Data [5]                    */
-#define PPC_LDD6	PPC_LDD (6)	/* LCD Data [6]                    */
-#define PPC_LDD7	PPC_LDD (7)	/* LCD Data [7]                    */
-#define PPC_L_PCLK	0x00000100	/* LCD Pixel CLocK                 */
-#define PPC_L_LCLK	0x00000200	/* LCD Line CLocK                  */
-#define PPC_L_FCLK	0x00000400	/* LCD Frame CLocK                 */
-#define PPC_L_BIAS	0x00000800	/* LCD AC BIAS                     */
-                	        	/* ser. port 1:                    */
-#define PPC_TXD1	0x00001000	/*  SDLC/UART Transmit Data 1      */
-#define PPC_RXD1	0x00002000	/*  SDLC/UART Receive Data 1       */
-                	        	/* ser. port 2:                    */
-#define PPC_TXD2	0x00004000	/*  IPC Transmit Data 2            */
-#define PPC_RXD2	0x00008000	/*  IPC Receive Data 2             */
-                	        	/* ser. port 3:                    */
-#define PPC_TXD3	0x00010000	/*  UART Transmit Data 3           */
-#define PPC_RXD3	0x00020000	/*  UART Receive Data 3            */
-                	        	/* ser. port 4:                    */
-#define PPC_TXD4	0x00040000	/*  MCP/SSP Transmit Data 4        */
-#define PPC_RXD4	0x00080000	/*  MCP/SSP Receive Data 4         */
-#define PPC_SCLK	0x00100000	/*  MCP/SSP Sample CLocK           */
-#define PPC_SFRM	0x00200000	/*  MCP/SSP Sample FRaMe           */
-
-#define PPDR_In 	0       	/* Input                           */
-#define PPDR_Out	1       	/* Output                          */
-
-                	        	/* ser. port 1:                    */
-#define PPAR_UPR	0x00001000	/*  UART Pin Reassignment          */
-#define PPAR_UARTTR	(PPAR_UPR*0)	/*   UART on TXD_1 & RXD_1         */
-#define PPAR_UARTGPIO	(PPAR_UPR*1)	/*   UART on GPIO [14:15]          */
-                	        	/* ser. port 4:                    */
-#define PPAR_SPR	0x00040000	/*  SSP Pin Reassignment           */
-#define PPAR_SSPTRSS	(PPAR_SPR*0)	/*   SSP on TXD_C, RXD_C, SCLK_C,  */
-                	        	/*   & SFRM_C                      */
-#define PPAR_SSPGPIO	(PPAR_SPR*1)	/*   SSP on GPIO [10:13]           */
-
-#define PSDR_OutL	0       	/* Output Low in sleep mode        */
-#define PSDR_Flt	1       	/* Floating (input) in sleep mode  */
-
-#define PPFR_LCD	0x00000001	/* LCD controller                  */
-#define PPFR_SP1TX	0x00001000	/* Ser. Port 1 SDLC/UART Transmit  */
-#define PPFR_SP1RX	0x00002000	/* Ser. Port 1 SDLC/UART Receive   */
-#define PPFR_SP2TX	0x00004000	/* Ser. Port 2 ICP Transmit        */
-#define PPFR_SP2RX	0x00008000	/* Ser. Port 2 ICP Receive         */
-#define PPFR_SP3TX	0x00010000	/* Ser. Port 3 UART Transmit       */
-#define PPFR_SP3RX	0x00020000	/* Ser. Port 3 UART Receive        */
-#define PPFR_SP4	0x00040000	/* Ser. Port 4 MCP/SSP             */
-#define PPFR_PerEn	0       	/* Peripheral Enabled              */
-#define PPFR_PPCEn	1       	/* PPC Enabled                     */
-
-
-/*
- * Dynamic Random-Access Memory (DRAM) control registers
- *
- * Registers
- *    MDCNFG    	Memory system: Dynamic Random-Access Memory (DRAM)
- *              	CoNFiGuration register (read/write).
- *    MDCAS0    	Memory system: Dynamic Random-Access Memory (DRAM)
- *              	Column Address Strobe (CAS) shift register 0
- *              	(read/write).
- *    MDCAS1    	Memory system: Dynamic Random-Access Memory (DRAM)
- *              	Column Address Strobe (CAS) shift register 1
- *              	(read/write).
- *    MDCAS2    	Memory system: Dynamic Random-Access Memory (DRAM)
- *              	Column Address Strobe (CAS) shift register 2
- *              	(read/write).
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- *    fcas, Tcas	Frequency, period of the DRAM CAS shift registers.
- */
-
-#define MDCNFG		__REG(0xA0000000)  /*  DRAM CoNFiGuration reg. */
-#define MDCAS0		__REG(0xA0000004)  /* DRAM CAS shift reg. 0 */
-#define MDCAS1		__REG(0xA0000008)  /* DRAM CAS shift reg. 1 */
-#define MDCAS2		__REG(0xA000000c)  /* DRAM CAS shift reg. 2 */
-
-/* SA1100 MDCNFG values */
-#define MDCNFG_DE(Nb)	        	/* DRAM Enable bank [0..3]         */ \
-                	(0x00000001 << (Nb))
-#define MDCNFG_DE0	MDCNFG_DE (0)	/* DRAM Enable bank 0              */
-#define MDCNFG_DE1	MDCNFG_DE (1)	/* DRAM Enable bank 1              */
-#define MDCNFG_DE2	MDCNFG_DE (2)	/* DRAM Enable bank 2              */
-#define MDCNFG_DE3	MDCNFG_DE (3)	/* DRAM Enable bank 3              */
-#define MDCNFG_DRAC	Fld (2, 4)	/* DRAM Row Address Count - 9      */
-#define MDCNFG_RowAdd(Add)      	/*  Row Address count [9..12]      */ \
-                	(((Add) - 9) << FShft (MDCNFG_DRAC))
-#define MDCNFG_CDB2	0x00000040	/* shift reg. Clock Divide By 2    */
-                	        	/* (fcas = fcpu/2)                 */
-#define MDCNFG_TRP	Fld (4, 7)	/* Time RAS Pre-charge - 1 [Tmem]  */
-#define MDCNFG_PrChrg(Tcpu)     	/*  Pre-Charge time [2..32 Tcpu]   */ \
-                	(((Tcpu) - 2)/2 << FShft (MDCNFG_TRP))
-#define MDCNFG_CeilPrChrg(Tcpu) 	/*  Ceil. of PrChrg [2..32 Tcpu]   */ \
-                	(((Tcpu) - 1)/2 << FShft (MDCNFG_TRP))
-#define MDCNFG_TRASR	Fld (4, 11)	/* Time RAS Refresh - 1 [Tmem]     */
-#define MDCNFG_Ref(Tcpu)        	/*  Refresh time [2..32 Tcpu]      */ \
-                	(((Tcpu) - 2)/2 << FShft (MDCNFG_TRASR))
-#define MDCNFG_CeilRef(Tcpu)    	/*  Ceil. of Ref [2..32 Tcpu]      */ \
-                	(((Tcpu) - 1)/2 << FShft (MDCNFG_TRASR))
-#define MDCNFG_TDL	Fld (2, 15)	/* Time Data Latch [Tcpu]          */
-#define MDCNFG_DataLtch(Tcpu)   	/*  Data Latch delay [0..3 Tcpu]   */ \
-                	((Tcpu) << FShft (MDCNFG_TDL))
-#define MDCNFG_DRI	Fld (15, 17)	/* min. DRAM Refresh Interval/4    */
-                	        	/* [Tmem]                          */
-#define MDCNFG_RefInt(Tcpu)     	/*  min. Refresh Interval          */ \
-                	        	/*  [0..262136 Tcpu]               */ \
-                	((Tcpu)/8 << FShft (MDCNFG_DRI))
-
-/* SA1110 MDCNFG values */
-#define MDCNFG_SA1110_DE0	0x00000001	/* DRAM Enable bank 0        */
-#define MDCNFG_SA1110_DE1	0x00000002 	/* DRAM Enable bank 1        */
-#define MDCNFG_SA1110_DTIM0	0x00000004	/* DRAM timing type 0/1      */
-#define MDCNFG_SA1110_DWID0	0x00000008	/* DRAM bus width 0/1        */
-#define MDCNFG_SA1110_DRAC0	Fld(3, 4)	/* DRAM row addr bit count   */
-                	        		/* bank 0/1                  */
-#define MDCNFG_SA1110_CDB20	0x00000080	/* Mem Clock divide by 2 0/1 */
-#define MDCNFG_SA1110_TRP0	Fld(3, 8)	/* RAS precharge 0/1         */
-#define MDCNFG_SA1110_TDL0	Fld(2, 12)	/* Data input latch after CAS*/
-                	        		/* deassertion 0/1           */
-#define MDCNFG_SA1110_TWR0	Fld(2, 14)	/* SDRAM write recovery 0/1  */
-#define MDCNFG_SA1110_DE2	0x00010000	/* DRAM Enable bank 0        */
-#define MDCNFG_SA1110_DE3	0x00020000 	/* DRAM Enable bank 1        */
-#define MDCNFG_SA1110_DTIM2	0x00040000	/* DRAM timing type 0/1      */
-#define MDCNFG_SA1110_DWID2	0x00080000	/* DRAM bus width 0/1        */
-#define MDCNFG_SA1110_DRAC2	Fld(3, 20)	/* DRAM row addr bit count   */
-                	        		/* bank 0/1                  */
-#define MDCNFG_SA1110_CDB22	0x00800000	/* Mem Clock divide by 2 0/1 */
-#define MDCNFG_SA1110_TRP2	Fld(3, 24)	/* RAS precharge 0/1         */
-#define MDCNFG_SA1110_TDL2	Fld(2, 28)	/* Data input latch after CAS*/
-                	        		/* deassertion 0/1           */
-#define MDCNFG_SA1110_TWR2	Fld(2, 30)	/* SDRAM write recovery 0/1  */
-
-
-/*
- * Static memory control registers
- *
- * Registers
- *    MSC0      	Memory system: Static memory Control register 0
- *              	(read/write).
- *    MSC1      	Memory system: Static memory Control register 1
- *              	(read/write).
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- */
-
-#define MSC0		__REG(0xa0000010)  /* Static memory Control reg. 0 */
-#define MSC1		__REG(0xa0000014)  /* Static memory Control reg. 1 */
-#define MSC2		__REG(0xa000002c)  /* Static memory Control reg. 2, not contiguous   */
-
-#define MSC_Bnk(Nb)	        	/* static memory Bank [0..3]       */ \
-                	Fld (16, ((Nb) Modulo 2)*16)
-#define MSC0_Bnk0	MSC_Bnk (0)	/* static memory Bank 0            */
-#define MSC0_Bnk1	MSC_Bnk (1)	/* static memory Bank 1            */
-#define MSC1_Bnk2	MSC_Bnk (2)	/* static memory Bank 2            */
-#define MSC1_Bnk3	MSC_Bnk (3)	/* static memory Bank 3            */
-
-#define MSC_RT  	Fld (2, 0)	/* ROM/static memory Type          */
-#define MSC_NonBrst	        	/*  Non-Burst static memory        */ \
-                	(0 << FShft (MSC_RT))
-#define MSC_SRAM	        	/*  32-bit byte-writable SRAM      */ \
-                	(1 << FShft (MSC_RT))
-#define MSC_Brst4	        	/*  Burst-of-4 static memory       */ \
-                	(2 << FShft (MSC_RT))
-#define MSC_Brst8	        	/*  Burst-of-8 static memory       */ \
-                	(3 << FShft (MSC_RT))
-#define MSC_RBW 	0x0004  	/* ROM/static memory Bus Width     */
-#define MSC_32BitStMem	(MSC_RBW*0)	/*  32-Bit Static Memory           */
-#define MSC_16BitStMem	(MSC_RBW*1)	/*  16-Bit Static Memory           */
-#define MSC_RDF 	Fld (5, 3)	/* ROM/static memory read Delay    */
-                	        	/* First access - 1(.5) [Tmem]     */
-#define MSC_1stRdAcc(Tcpu)      	/*  1st Read Access time (burst    */ \
-                	        	/*  static memory) [3..65 Tcpu]    */ \
-                	((((Tcpu) - 3)/2) << FShft (MSC_RDF))
-#define MSC_Ceil1stRdAcc(Tcpu)  	/*  Ceil. of 1stRdAcc [3..65 Tcpu] */ \
-                	((((Tcpu) - 2)/2) << FShft (MSC_RDF))
-#define MSC_RdAcc(Tcpu)	        	/*  Read Access time (non-burst    */ \
-                	        	/*  static memory) [2..64 Tcpu]    */ \
-                	((((Tcpu) - 2)/2) << FShft (MSC_RDF))
-#define MSC_CeilRdAcc(Tcpu)     	/*  Ceil. of RdAcc [2..64 Tcpu]    */ \
-                	((((Tcpu) - 1)/2) << FShft (MSC_RDF))
-#define MSC_RDN 	Fld (5, 8)	/* ROM/static memory read Delay    */
-                	        	/* Next access - 1 [Tmem]          */
-#define MSC_NxtRdAcc(Tcpu)      	/*  Next Read Access time (burst   */ \
-                	        	/*  static memory) [2..64 Tcpu]    */ \
-                	((((Tcpu) - 2)/2) << FShft (MSC_RDN))
-#define MSC_CeilNxtRdAcc(Tcpu)  	/*  Ceil. of NxtRdAcc [2..64 Tcpu] */ \
-                	((((Tcpu) - 1)/2) << FShft (MSC_RDN))
-#define MSC_WrAcc(Tcpu)	        	/*  Write Access time (non-burst   */ \
-                	        	/*  static memory) [2..64 Tcpu]    */ \
-                	((((Tcpu) - 2)/2) << FShft (MSC_RDN))
-#define MSC_CeilWrAcc(Tcpu)     	/*  Ceil. of WrAcc [2..64 Tcpu]    */ \
-                	((((Tcpu) - 1)/2) << FShft (MSC_RDN))
-#define MSC_RRR 	Fld (3, 13)	/* ROM/static memory RecoveRy      */
-                	        	/* time/2 [Tmem]                   */
-#define MSC_Rec(Tcpu)	        	/*  Recovery time [0..28 Tcpu]     */ \
-                	(((Tcpu)/4) << FShft (MSC_RRR))
-#define MSC_CeilRec(Tcpu)       	/*  Ceil. of Rec [0..28 Tcpu]      */ \
-                	((((Tcpu) + 3)/4) << FShft (MSC_RRR))
-
-
-/*
- * Personal Computer Memory Card International Association (PCMCIA) control
- * register
- *
- * Register
- *    MECR      	Memory system: Expansion memory bus (PCMCIA)
- *              	Configuration Register (read/write).
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- *    fbclk, Tbclk	Frequency, period of the PCMCIA clock (BCLK).
- */
-
-                	        	/* Memory system:                  */
-#define MECR		__REG(0xA0000018)  /*  Expansion memory bus (PCMCIA) Configuration Reg.             */
-
-#define MECR_PCMCIA(Nb)	        	/* PCMCIA [0..1]                   */ \
-                	Fld (15, (Nb)*16)
-#define MECR_PCMCIA0	MECR_PCMCIA (0)	/* PCMCIA 0                        */
-#define MECR_PCMCIA1	MECR_PCMCIA (1)	/* PCMCIA 1                        */
-
-#define MECR_BSIO	Fld (5, 0)	/* BCLK Select I/O - 1 [Tmem]      */
-#define MECR_IOClk(Tcpu)        	/*  I/O Clock [2..64 Tcpu]         */ \
-                	((((Tcpu) - 2)/2) << FShft (MECR_BSIO))
-#define MECR_CeilIOClk(Tcpu)    	/*  Ceil. of IOClk [2..64 Tcpu]    */ \
-                	((((Tcpu) - 1)/2) << FShft (MECR_BSIO))
-#define MECR_BSA	Fld (5, 5)	/* BCLK Select Attribute - 1       */
-                	        	/* [Tmem]                          */
-#define MECR_AttrClk(Tcpu)      	/*  Attribute Clock [2..64 Tcpu]   */ \
-                	((((Tcpu) - 2)/2) << FShft (MECR_BSA))
-#define MECR_CeilAttrClk(Tcpu)  	/*  Ceil. of AttrClk [2..64 Tcpu]  */ \
-                	((((Tcpu) - 1)/2) << FShft (MECR_BSA))
-#define MECR_BSM	Fld (5, 10)	/* BCLK Select Memory - 1 [Tmem]   */
-#define MECR_MemClk(Tcpu)       	/*  Memory Clock [2..64 Tcpu]      */ \
-                	((((Tcpu) - 2)/2) << FShft (MECR_BSM))
-#define MECR_CeilMemClk(Tcpu)   	/*  Ceil. of MemClk [2..64 Tcpu]   */ \
-                	((((Tcpu) - 1)/2) << FShft (MECR_BSM))
-
-/*
- * On SA1110 only
- */
-
-#define MDREFR		__REG(0xA000001C)
-
-#define MDREFR_TRASR		Fld (4, 0)
-#define MDREFR_DRI		Fld (12, 4)
-#define MDREFR_E0PIN		(1 << 16)
-#define MDREFR_K0RUN		(1 << 17)
-#define MDREFR_K0DB2		(1 << 18)
-#define MDREFR_E1PIN		(1 << 20)
-#define MDREFR_K1RUN		(1 << 21)
-#define MDREFR_K1DB2		(1 << 22)
-#define MDREFR_K2RUN		(1 << 25)
-#define MDREFR_K2DB2		(1 << 26)
-#define MDREFR_EAPD		(1 << 28)
-#define MDREFR_KAPD		(1 << 29)
-#define MDREFR_SLFRSH		(1 << 31)
-
-
-/*
- * Direct Memory Access (DMA) control registers
- */
-#define DMA_SIZE	(6 * 0x20)
-#define DMA_PHYS	0xb0000000
-
-
-/*
- * Liquid Crystal Display (LCD) control registers
- *
- * Registers
- *    LCCR0     	Liquid Crystal Display (LCD) Control Register 0
- *              	(read/write).
- *              	[Bits LDM, BAM, and ERM are only implemented in
- *              	versions 2.0 (rev. = 8) and higher of the StrongARM
- *              	SA-1100.]
- *    LCSR      	Liquid Crystal Display (LCD) Status Register
- *              	(read/write).
- *              	[Bit LDD can be only read in versions 1.0 (rev. = 1)
- *              	and 1.1 (rev. = 2) of the StrongARM SA-1100, it can be
- *              	read and written (cleared) in versions 2.0 (rev. = 8)
- *              	and higher.]
- *    DBAR1     	Liquid Crystal Display (LCD) Direct Memory Access
- *              	(DMA) Base Address Register channel 1 (read/write).
- *    DCAR1     	Liquid Crystal Display (LCD) Direct Memory Access
- *              	(DMA) Current Address Register channel 1 (read).
- *    DBAR2     	Liquid Crystal Display (LCD) Direct Memory Access
- *              	(DMA) Base Address Register channel 2 (read/write).
- *    DCAR2     	Liquid Crystal Display (LCD) Direct Memory Access
- *              	(DMA) Current Address Register channel 2 (read).
- *    LCCR1     	Liquid Crystal Display (LCD) Control Register 1
- *              	(read/write).
- *              	[The LCCR1 register can be only written in
- *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *              	StrongARM SA-1100, it can be written and read in
- *              	versions 2.0 (rev. = 8) and higher.]
- *    LCCR2     	Liquid Crystal Display (LCD) Control Register 2
- *              	(read/write).
- *              	[The LCCR1 register can be only written in
- *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *              	StrongARM SA-1100, it can be written and read in
- *              	versions 2.0 (rev. = 8) and higher.]
- *    LCCR3     	Liquid Crystal Display (LCD) Control Register 3
- *              	(read/write).
- *              	[The LCCR1 register can be only written in
- *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *              	StrongARM SA-1100, it can be written and read in
- *              	versions 2.0 (rev. = 8) and higher. Bit PCP is only
- *              	implemented in versions 2.0 (rev. = 8) and higher of
- *              	the StrongARM SA-1100.]
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- *    fpix, Tpix	Frequency, period of the pixel clock.
- *    fln, Tln  	Frequency, period of the line clock.
- *    fac, Tac  	Frequency, period of the AC bias clock.
- */
-
-#define LCD_PEntrySp	2       	/* LCD Palette Entry Space [byte]  */
-#define LCD_4BitPSp	        	/* LCD 4-Bit pixel Palette Space   */ \
-                	        	/* [byte]                          */ \
-                	(16*LCD_PEntrySp)
-#define LCD_8BitPSp	        	/* LCD 8-Bit pixel Palette Space   */ \
-                	        	/* [byte]                          */ \
-                	(256*LCD_PEntrySp)
-#define LCD_12_16BitPSp	        	/* LCD 12/16-Bit pixel             */ \
-                	        	/* dummy-Palette Space [byte]      */ \
-                	(16*LCD_PEntrySp)
-
-#define LCD_PGrey	Fld (4, 0)	/* LCD Palette entry Grey value    */
-#define LCD_PBlue	Fld (4, 0)	/* LCD Palette entry Blue value    */
-#define LCD_PGreen	Fld (4, 4)	/* LCD Palette entry Green value   */
-#define LCD_PRed	Fld (4, 8)	/* LCD Palette entry Red value     */
-#define LCD_PBS 	Fld (2, 12)	/* LCD Pixel Bit Size              */
-#define LCD_4Bit	        	/*  LCD 4-Bit pixel mode           */ \
-                	(0 << FShft (LCD_PBS))
-#define LCD_8Bit	        	/*  LCD 8-Bit pixel mode           */ \
-                	(1 << FShft (LCD_PBS))
-#define LCD_12_16Bit	        	/*  LCD 12/16-Bit pixel mode       */ \
-                	(2 << FShft (LCD_PBS))
-
-#define LCD_Int0_0	0x0     	/* LCD Intensity =   0.0% =  0     */
-#define LCD_Int11_1	0x1     	/* LCD Intensity =  11.1% =  1/9   */
-#define LCD_Int20_0	0x2     	/* LCD Intensity =  20.0% =  1/5   */
-#define LCD_Int26_7	0x3     	/* LCD Intensity =  26.7% =  4/15  */
-#define LCD_Int33_3	0x4     	/* LCD Intensity =  33.3% =  3/9   */
-#define LCD_Int40_0	0x5     	/* LCD Intensity =  40.0% =  2/5   */
-#define LCD_Int44_4	0x6     	/* LCD Intensity =  44.4% =  4/9   */
-#define LCD_Int50_0	0x7     	/* LCD Intensity =  50.0% =  1/2   */
-#define LCD_Int55_6	0x8     	/* LCD Intensity =  55.6% =  5/9   */
-#define LCD_Int60_0	0x9     	/* LCD Intensity =  60.0% =  3/5   */
-#define LCD_Int66_7	0xA     	/* LCD Intensity =  66.7% =  6/9   */
-#define LCD_Int73_3	0xB     	/* LCD Intensity =  73.3% = 11/15  */
-#define LCD_Int80_0	0xC     	/* LCD Intensity =  80.0% =  4/5   */
-#define LCD_Int88_9	0xD     	/* LCD Intensity =  88.9% =  8/9   */
-#define LCD_Int100_0	0xE     	/* LCD Intensity = 100.0% =  1     */
-#define LCD_Int100_0A	0xF     	/* LCD Intensity = 100.0% =  1     */
-                	        	/* (Alternative)                   */
-
-#define LCCR0_LEN	0x00000001	/* LCD ENable                      */
-#define LCCR0_CMS	0x00000002	/* Color/Monochrome display Select */
-#define LCCR0_Color	(LCCR0_CMS*0)	/*  Color display                  */
-#define LCCR0_Mono	(LCCR0_CMS*1)	/*  Monochrome display             */
-#define LCCR0_SDS	0x00000004	/* Single/Dual panel display       */
-                	        	/* Select                          */
-#define LCCR0_Sngl	(LCCR0_SDS*0)	/*  Single panel display           */
-#define LCCR0_Dual	(LCCR0_SDS*1)	/*  Dual panel display             */
-#define LCCR0_LDM	0x00000008	/* LCD Disable done (LDD)          */
-                	        	/* interrupt Mask (disable)        */
-#define LCCR0_BAM	0x00000010	/* Base Address update (BAU)       */
-                	        	/* interrupt Mask (disable)        */
-#define LCCR0_ERM	0x00000020	/* LCD ERror (BER, IOL, IUL, IOU,  */
-                	        	/* IUU, OOL, OUL, OOU, and OUU)    */
-                	        	/* interrupt Mask (disable)        */
-#define LCCR0_PAS	0x00000080	/* Passive/Active display Select   */
-#define LCCR0_Pas	(LCCR0_PAS*0)	/*  Passive display (STN)          */
-#define LCCR0_Act	(LCCR0_PAS*1)	/*  Active display (TFT)           */
-#define LCCR0_BLE	0x00000100	/* Big/Little Endian select        */
-#define LCCR0_LtlEnd	(LCCR0_BLE*0)	/*  Little Endian frame buffer     */
-#define LCCR0_BigEnd	(LCCR0_BLE*1)	/*  Big Endian frame buffer        */
-#define LCCR0_DPD	0x00000200	/* Double Pixel Data (monochrome   */
-                	        	/* display mode)                   */
-#define LCCR0_4PixMono	(LCCR0_DPD*0)	/*  4-Pixel/clock Monochrome       */
-                	        	/*  display                        */
-#define LCCR0_8PixMono	(LCCR0_DPD*1)	/*  8-Pixel/clock Monochrome       */
-                	        	/*  display                        */
-#define LCCR0_PDD	Fld (8, 12)	/* Palette DMA request Delay       */
-                	        	/* [Tmem]                          */
-#define LCCR0_DMADel(Tcpu)      	/*  palette DMA request Delay      */ \
-                	        	/*  [0..510 Tcpu]                  */ \
-                	((Tcpu)/2 << FShft (LCCR0_PDD))
-
-#define LCSR_LDD	0x00000001	/* LCD Disable Done                */
-#define LCSR_BAU	0x00000002	/* Base Address Update (read)      */
-#define LCSR_BER	0x00000004	/* Bus ERror                       */
-#define LCSR_ABC	0x00000008	/* AC Bias clock Count             */
-#define LCSR_IOL	0x00000010	/* Input FIFO Over-run Lower       */
-                	        	/* panel                           */
-#define LCSR_IUL	0x00000020	/* Input FIFO Under-run Lower      */
-                	        	/* panel                           */
-#define LCSR_IOU	0x00000040	/* Input FIFO Over-run Upper       */
-                	        	/* panel                           */
-#define LCSR_IUU	0x00000080	/* Input FIFO Under-run Upper      */
-                	        	/* panel                           */
-#define LCSR_OOL	0x00000100	/* Output FIFO Over-run Lower      */
-                	        	/* panel                           */
-#define LCSR_OUL	0x00000200	/* Output FIFO Under-run Lower     */
-                	        	/* panel                           */
-#define LCSR_OOU	0x00000400	/* Output FIFO Over-run Upper      */
-                	        	/* panel                           */
-#define LCSR_OUU	0x00000800	/* Output FIFO Under-run Upper     */
-                	        	/* panel                           */
-
-#define LCCR1_PPL	Fld (6, 4)	/* Pixels Per Line/16 - 1          */
-#define LCCR1_DisWdth(Pixel)    	/*  Display Width [16..1024 pix.]  */ \
-                	(((Pixel) - 16)/16 << FShft (LCCR1_PPL))
-#define LCCR1_HSW	Fld (6, 10)	/* Horizontal Synchronization      */
-                	        	/* pulse Width - 1 [Tpix] (L_LCLK) */
-#define LCCR1_HorSnchWdth(Tpix) 	/*  Horizontal Synchronization     */ \
-                	        	/*  pulse Width [1..64 Tpix]       */ \
-                	(((Tpix) - 1) << FShft (LCCR1_HSW))
-#define LCCR1_ELW	Fld (8, 16)	/* End-of-Line pixel clock Wait    */
-                	        	/* count - 1 [Tpix]                */
-#define LCCR1_EndLnDel(Tpix)    	/*  End-of-Line Delay              */ \
-                	        	/*  [1..256 Tpix]                  */ \
-                	(((Tpix) - 1) << FShft (LCCR1_ELW))
-#define LCCR1_BLW	Fld (8, 24)	/* Beginning-of-Line pixel clock   */
-                	        	/* Wait count - 1 [Tpix]           */
-#define LCCR1_BegLnDel(Tpix)    	/*  Beginning-of-Line Delay        */ \
-                	        	/*  [1..256 Tpix]                  */ \
-                	(((Tpix) - 1) << FShft (LCCR1_BLW))
-
-#define LCCR2_LPP	Fld (10, 0)	/* Line Per Panel - 1              */
-#define LCCR2_DisHght(Line)     	/*  Display Height [1..1024 lines] */ \
-                	(((Line) - 1) << FShft (LCCR2_LPP))
-#define LCCR2_VSW	Fld (6, 10)	/* Vertical Synchronization pulse  */
-                	        	/* Width - 1 [Tln] (L_FCLK)        */
-#define LCCR2_VrtSnchWdth(Tln)  	/*  Vertical Synchronization pulse */ \
-                	        	/*  Width [1..64 Tln]              */ \
-                	(((Tln) - 1) << FShft (LCCR2_VSW))
-#define LCCR2_EFW	Fld (8, 16)	/* End-of-Frame line clock Wait    */
-                	        	/* count [Tln]                     */
-#define LCCR2_EndFrmDel(Tln)    	/*  End-of-Frame Delay             */ \
-                	        	/*  [0..255 Tln]                   */ \
-                	((Tln) << FShft (LCCR2_EFW))
-#define LCCR2_BFW	Fld (8, 24)	/* Beginning-of-Frame line clock   */
-                	        	/* Wait count [Tln]                */
-#define LCCR2_BegFrmDel(Tln)    	/*  Beginning-of-Frame Delay       */ \
-                	        	/*  [0..255 Tln]                   */ \
-                	((Tln) << FShft (LCCR2_BFW))
-
-#define LCCR3_PCD	Fld (8, 0)	/* Pixel Clock Divisor/2 - 2       */
-                	        	/* [1..255] (L_PCLK)               */
-                	        	/* fpix = fcpu/(2*(PCD + 2))       */
-                	        	/* Tpix = 2*(PCD + 2)*Tcpu         */
-#define LCCR3_PixClkDiv(Div)    	/*  Pixel Clock Divisor [6..514]   */ \
-                	(((Div) - 4)/2 << FShft (LCCR3_PCD))
-                	        	/*  fpix = fcpu/(2*Floor (Div/2))  */
-                	        	/*  Tpix = 2*Floor (Div/2)*Tcpu    */
-#define LCCR3_CeilPixClkDiv(Div)	/*  Ceil. of PixClkDiv [6..514]    */ \
-                	(((Div) - 3)/2 << FShft (LCCR3_PCD))
-                	        	/*  fpix = fcpu/(2*Ceil (Div/2))   */
-                	        	/*  Tpix = 2*Ceil (Div/2)*Tcpu     */
-#define LCCR3_ACB	Fld (8, 8)	/* AC Bias clock half period - 1   */
-                	        	/* [Tln] (L_BIAS)                  */
-#define LCCR3_ACBsDiv(Div)      	/*  AC Bias clock Divisor [2..512] */ \
-                	(((Div) - 2)/2 << FShft (LCCR3_ACB))
-                	        	/*  fac = fln/(2*Floor (Div/2))    */
-                	        	/*  Tac = 2*Floor (Div/2)*Tln      */
-#define LCCR3_CeilACBsDiv(Div)  	/*  Ceil. of ACBsDiv [2..512]      */ \
-                	(((Div) - 1)/2 << FShft (LCCR3_ACB))
-                	        	/*  fac = fln/(2*Ceil (Div/2))     */
-                	        	/*  Tac = 2*Ceil (Div/2)*Tln       */
-#define LCCR3_API	Fld (4, 16)	/* AC bias Pin transitions per     */
-                	        	/* Interrupt                       */
-#define LCCR3_ACBsCntOff        	/*  AC Bias clock transition Count */ \
-                	        	/*  Off                            */ \
-                	(0 << FShft (LCCR3_API))
-#define LCCR3_ACBsCnt(Trans)    	/*  AC Bias clock transition Count */ \
-                	        	/*  [1..15]                        */ \
-                	((Trans) << FShft (LCCR3_API))
-#define LCCR3_VSP	0x00100000	/* Vertical Synchronization pulse  */
-                	        	/* Polarity (L_FCLK)               */
-#define LCCR3_VrtSnchH	(LCCR3_VSP*0)	/*  Vertical Synchronization pulse */
-                	        	/*  active High                    */
-#define LCCR3_VrtSnchL	(LCCR3_VSP*1)	/*  Vertical Synchronization pulse */
-                	        	/*  active Low                     */
-#define LCCR3_HSP	0x00200000	/* Horizontal Synchronization      */
-                	        	/* pulse Polarity (L_LCLK)         */
-#define LCCR3_HorSnchH	(LCCR3_HSP*0)	/*  Horizontal Synchronization     */
-                	        	/*  pulse active High              */
-#define LCCR3_HorSnchL	(LCCR3_HSP*1)	/*  Horizontal Synchronization     */
-                	        	/*  pulse active Low               */
-#define LCCR3_PCP	0x00400000	/* Pixel Clock Polarity (L_PCLK)   */
-#define LCCR3_PixRsEdg	(LCCR3_PCP*0)	/*  Pixel clock Rising-Edge        */
-#define LCCR3_PixFlEdg	(LCCR3_PCP*1)	/*  Pixel clock Falling-Edge       */
-#define LCCR3_OEP	0x00800000	/* Output Enable Polarity (L_BIAS, */
-                	        	/* active display mode)            */
-#define LCCR3_OutEnH	(LCCR3_OEP*0)	/*  Output Enable active High      */
-#define LCCR3_OutEnL	(LCCR3_OEP*1)	/*  Output Enable active Low       */
diff --git a/arch/arm/mach-sa1100/include/mach/assabet.h b/arch/arm/mach-sa1100/include/mach/assabet.h
deleted file mode 100644
index 641a961653af..000000000000
--- a/arch/arm/mach-sa1100/include/mach/assabet.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/assabet.h
- *
- * Created 2000/06/05 by Nicolas Pitre <nico@fluxnic.net>
- *
- * This file contains the hardware specific definitions for Assabet
- * Only include this file from SA1100-specific files.
- *
- * 2000/05/23 John Dorsey <john+@cs.cmu.edu>
- *      Definitions for Neponset added.
- */
-#ifndef __ASM_ARCH_ASSABET_H
-#define __ASM_ARCH_ASSABET_H
-
-
-/* System Configuration Register flags */
-
-#define ASSABET_SCR_SDRAM_LOW	(1<<2)	/* SDRAM size (low bit) */
-#define ASSABET_SCR_SDRAM_HIGH	(1<<3)	/* SDRAM size (high bit) */
-#define ASSABET_SCR_FLASH_LOW	(1<<4)	/* Flash size (low bit) */
-#define ASSABET_SCR_FLASH_HIGH	(1<<5)	/* Flash size (high bit) */
-#define ASSABET_SCR_GFX		(1<<8)	/* Graphics Accelerator (0 = present) */
-#define ASSABET_SCR_SA1111	(1<<9)	/* Neponset (0 = present) */
-
-#define ASSABET_SCR_INIT	-1
-
-extern unsigned long SCR_value;
-
-#ifdef CONFIG_ASSABET_NEPONSET
-#define machine_has_neponset()  ((SCR_value & ASSABET_SCR_SA1111) == 0)
-#else
-#define machine_has_neponset()	(0)
-#endif
-
-/* Board Control Register */
-
-#define ASSABET_BCR_BASE  0xf1000000
-#define ASSABET_BCR (*(volatile unsigned int *)(ASSABET_BCR_BASE))
-
-#define ASSABET_BCR_CF_PWR	(1<<0)	/* Compact Flash Power (1 = 3.3v, 0 = off) */
-#define ASSABET_BCR_CF_RST	(1<<1)	/* Compact Flash Reset (1 = power up reset) */
-#define ASSABET_BCR_NGFX_RST	(1<<1)	/* Graphics Accelerator Reset (0 = hold reset) */
-#define ASSABET_BCR_NCODEC_RST	(1<<2)	/* 0 = Holds UCB1300, ADI7171, and UDA1341 in reset */
-#define ASSABET_BCR_IRDA_FSEL	(1<<3)	/* IRDA Frequency select (0 = SIR, 1 = MIR/ FIR) */
-#define ASSABET_BCR_IRDA_MD0	(1<<4)	/* Range/Power select */
-#define ASSABET_BCR_IRDA_MD1	(1<<5)	/* Range/Power select */
-#define ASSABET_BCR_STEREO_LB	(1<<6)	/* Stereo Loopback */
-#define ASSABET_BCR_CF_BUS_OFF	(1<<7)	/* Compact Flash bus (0 = on, 1 = off (float)) */
-#define ASSABET_BCR_AUDIO_ON	(1<<8)	/* Audio power on */
-#define ASSABET_BCR_LIGHT_ON	(1<<9)	/* Backlight */
-#define ASSABET_BCR_LCD_12RGB	(1<<10)	/* 0 = 16RGB, 1 = 12RGB */
-#define ASSABET_BCR_LCD_ON	(1<<11)	/* LCD power on */
-#define ASSABET_BCR_RS232EN	(1<<12)	/* RS232 transceiver enable */
-#define ASSABET_BCR_LED_RED	(1<<13)	/* D9 (0 = on, 1 = off) */
-#define ASSABET_BCR_LED_GREEN	(1<<14)	/* D8 (0 = on, 1 = off) */
-#define ASSABET_BCR_VIB_ON	(1<<15)	/* Vibration motor (quiet alert) */
-#define ASSABET_BCR_COM_DTR	(1<<16)	/* COMport Data Terminal Ready */
-#define ASSABET_BCR_COM_RTS	(1<<17)	/* COMport Request To Send */
-#define ASSABET_BCR_RAD_WU	(1<<18)	/* Radio wake up interrupt */
-#define ASSABET_BCR_SMB_EN	(1<<19)	/* System management bus enable */
-#define ASSABET_BCR_TV_IR_DEC	(1<<20)	/* TV IR Decode Enable (not implemented) */
-#define ASSABET_BCR_QMUTE	(1<<21)	/* Quick Mute */
-#define ASSABET_BCR_RAD_ON	(1<<22)	/* Radio Power On */
-#define ASSABET_BCR_SPK_OFF	(1<<23)	/* 1 = Speaker amplifier power off */
-
-#ifdef CONFIG_SA1100_ASSABET
-extern void ASSABET_BCR_frob(unsigned int mask, unsigned int set);
-#else
-#define ASSABET_BCR_frob(x,y)	do { } while (0)
-#endif
-
-extern void assabet_uda1341_reset(int set);
-
-#define ASSABET_BCR_set(x)	ASSABET_BCR_frob((x), (x))
-#define ASSABET_BCR_clear(x)	ASSABET_BCR_frob((x), 0)
-
-#define ASSABET_BSR_BASE	0xf1000000
-#define ASSABET_BSR (*(volatile unsigned int*)(ASSABET_BSR_BASE))
-
-#define ASSABET_BSR_RS232_VALID	(1 << 24)
-#define ASSABET_BSR_COM_DCD	(1 << 25)
-#define ASSABET_BSR_COM_CTS	(1 << 26)
-#define ASSABET_BSR_COM_DSR	(1 << 27)
-#define ASSABET_BSR_RAD_CTS	(1 << 28)
-#define ASSABET_BSR_RAD_DSR	(1 << 29)
-#define ASSABET_BSR_RAD_DCD	(1 << 30)
-#define ASSABET_BSR_RAD_RI	(1 << 31)
-
-
-/* GPIOs (bitmasks) for which the generic definition doesn't say much */
-#define ASSABET_GPIO_RADIO_IRQ		GPIO_GPIO (14)	/* Radio interrupt request  */
-#define ASSABET_GPIO_PS_MODE_SYNC	GPIO_GPIO (16)	/* Power supply mode/sync   */
-#define ASSABET_GPIO_STEREO_64FS_CLK	GPIO_GPIO (19)	/* SSP UDA1341 clock input  */
-#define ASSABET_GPIO_GFX_IRQ		GPIO_GPIO (24)	/* Graphics IRQ */
-#define ASSABET_GPIO_BATT_LOW		GPIO_GPIO (26)	/* Low battery */
-#define ASSABET_GPIO_RCLK		GPIO_GPIO (26)	/* CCLK/2  */
-
-#endif
diff --git a/arch/arm/mach-sa1100/include/mach/bitfield.h b/arch/arm/mach-sa1100/include/mach/bitfield.h
deleted file mode 100644
index f1f0e3387d9c..000000000000
--- a/arch/arm/mach-sa1100/include/mach/bitfield.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- *	FILE    	bitfield.h
- *
- *	Version 	1.1
- *	Author  	Copyright (c) Marc A. Viredaz, 1998
- *	        	DEC Western Research Laboratory, Palo Alto, CA
- *	Date    	April 1998 (April 1997)
- *	System  	Advanced RISC Machine (ARM)
- *	Language	C or ARM Assembly
- *	Purpose 	Definition of macros to operate on bit fields.
- */
-
-
-
-#ifndef __BITFIELD_H
-#define __BITFIELD_H
-
-#ifndef __ASSEMBLY__
-#define UData(Data)	((unsigned long) (Data))
-#else
-#define UData(Data)	(Data)
-#endif
-
-
-/*
- * MACRO: Fld
- *
- * Purpose
- *    The macro "Fld" encodes a bit field, given its size and its shift value
- *    with respect to bit 0.
- *
- * Note
- *    A more intuitive way to encode bit fields would have been to use their
- *    mask. However, extracting size and shift value information from a bit
- *    field's mask is cumbersome and might break the assembler (255-character
- *    line-size limit).
- *
- * Input
- *    Size      	Size of the bit field, in number of bits.
- *    Shft      	Shift value of the bit field with respect to bit 0.
- *
- * Output
- *    Fld       	Encoded bit field.
- */
-
-#define Fld(Size, Shft)	(((Size) << 16) + (Shft))
-
-
-/*
- * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
- *
- * Purpose
- *    The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
- *    the size, shift value, mask, aligned mask, and first bit of a
- *    bit field.
- *
- * Input
- *    Field     	Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FSize     	Size of the bit field, in number of bits.
- *    FShft     	Shift value of the bit field with respect to bit 0.
- *    FMsk      	Mask for the bit field.
- *    FAlnMsk   	Mask for the bit field, aligned on bit 0.
- *    F1stBit   	First bit of the bit field.
- */
-
-#define FSize(Field)	((Field) >> 16)
-#define FShft(Field)	((Field) & 0x0000FFFF)
-#define FMsk(Field)	(((UData (1) << FSize (Field)) - 1) << FShft (Field))
-#define FAlnMsk(Field)	((UData (1) << FSize (Field)) - 1)
-#define F1stBit(Field)	(UData (1) << FShft (Field))
-
-
-/*
- * MACRO: FInsrt
- *
- * Purpose
- *    The macro "FInsrt" inserts a value into a bit field by shifting the
- *    former appropriately.
- *
- * Input
- *    Value     	Bit-field value.
- *    Field     	Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FInsrt    	Bit-field value positioned appropriately.
- */
-
-#define FInsrt(Value, Field) \
-                	(UData (Value) << FShft (Field))
-
-
-/*
- * MACRO: FExtr
- *
- * Purpose
- *    The macro "FExtr" extracts the value of a bit field by masking and
- *    shifting it appropriately.
- *
- * Input
- *    Data      	Data containing the bit-field to be extracted.
- *    Field     	Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FExtr     	Bit-field value.
- */
-
-#define FExtr(Data, Field) \
-                	((UData (Data) >> FShft (Field)) & FAlnMsk (Field))
-
-
-#endif /* __BITFIELD_H */
diff --git a/arch/arm/mach-sa1100/include/mach/collie.h b/arch/arm/mach-sa1100/include/mach/collie.h
deleted file mode 100644
index c95273c9567b..000000000000
--- a/arch/arm/mach-sa1100/include/mach/collie.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/collie.h
- *
- * This file contains the hardware specific definitions for Collie
- * Only include this file from SA1100-specific files.
- *
- * ChangeLog:
- *   04-06-2001 Lineo Japan, Inc.
- *   04-16-2001 SHARP Corporation
- *   07-07-2002 Chris Larson <clarson@digi.com>
- *
- */
-#ifndef __ASM_ARCH_COLLIE_H
-#define __ASM_ARCH_COLLIE_H
-
-#include "hardware.h" /* Gives GPIO_MAX */
-
-#define COLLIE_SCOOP_GPIO_BASE	(GPIO_MAX + 1)
-#define COLLIE_GPIO_CHARGE_ON	(COLLIE_SCOOP_GPIO_BASE + 0)
-#define COLLIE_SCP_DIAG_BOOT1	SCOOP_GPCR_PA12
-#define COLLIE_SCP_DIAG_BOOT2	SCOOP_GPCR_PA13
-#define COLLIE_SCP_MUTE_L	SCOOP_GPCR_PA14
-#define COLLIE_SCP_MUTE_R	SCOOP_GPCR_PA15
-#define COLLIE_SCP_5VON		SCOOP_GPCR_PA16
-#define COLLIE_SCP_AMP_ON	SCOOP_GPCR_PA17
-#define COLLIE_GPIO_VPEN	(COLLIE_SCOOP_GPIO_BASE + 7)
-#define COLLIE_SCP_LB_VOL_CHG	SCOOP_GPCR_PA19
-
-#define COLLIE_SCOOP_IO_DIR	(COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
-				COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | \
-				COLLIE_SCP_LB_VOL_CHG)
-#define COLLIE_SCOOP_IO_OUT	(COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R)
-
-/* GPIOs for gpiolib  */
-
-#define COLLIE_GPIO_ON_KEY		(0)
-#define COLLIE_GPIO_AC_IN		(1)
-#define COLLIE_GPIO_SDIO_INT		(11)
-#define COLLIE_GPIO_CF_IRQ		(14)
-#define COLLIE_GPIO_nREMOCON_INT	(15)
-#define COLLIE_GPIO_UCB1x00_RESET	(16)
-#define COLLIE_GPIO_nMIC_ON		(17)
-#define COLLIE_GPIO_nREMOCON_ON		(18)
-#define COLLIE_GPIO_CO			(20)
-#define COLLIE_GPIO_MCP_CLK		(21)
-#define COLLIE_GPIO_CF_CD		(22)
-#define COLLIE_GPIO_UCB1x00_IRQ		(23)
-#define COLLIE_GPIO_WAKEUP		(24)
-#define COLLIE_GPIO_GA_INT		(25)
-#define COLLIE_GPIO_MAIN_BAT_LOW	(26)
-
-/* GPIO definitions for direct register access */
-
-#define _COLLIE_GPIO_ON_KEY		GPIO_GPIO(0)
-#define _COLLIE_GPIO_AC_IN		GPIO_GPIO(1)
-#define _COLLIE_GPIO_nREMOCON_INT	GPIO_GPIO(15)
-#define _COLLIE_GPIO_UCB1x00_RESET	GPIO_GPIO(16)
-#define _COLLIE_GPIO_nMIC_ON		GPIO_GPIO(17)
-#define _COLLIE_GPIO_nREMOCON_ON	GPIO_GPIO(18)
-#define _COLLIE_GPIO_CO			GPIO_GPIO(20)
-#define _COLLIE_GPIO_WAKEUP		GPIO_GPIO(24)
-/* Interrupts */
-
-#define COLLIE_IRQ_GPIO_ON_KEY		IRQ_GPIO0
-#define COLLIE_IRQ_GPIO_AC_IN		IRQ_GPIO1
-#define COLLIE_IRQ_GPIO_SDIO_IRQ	IRQ_GPIO11
-#define COLLIE_IRQ_GPIO_CF_IRQ		IRQ_GPIO14
-#define COLLIE_IRQ_GPIO_nREMOCON_INT	IRQ_GPIO15
-#define COLLIE_IRQ_GPIO_CO		IRQ_GPIO20
-#define COLLIE_IRQ_GPIO_CF_CD		IRQ_GPIO22
-#define COLLIE_IRQ_GPIO_UCB1x00_IRQ	IRQ_GPIO23
-#define COLLIE_IRQ_GPIO_WAKEUP		IRQ_GPIO24
-#define COLLIE_IRQ_GPIO_GA_INT		IRQ_GPIO25
-#define COLLIE_IRQ_GPIO_MAIN_BAT_LOW	IRQ_GPIO26
-
-/* GPIO's on the TC35143AF (Toshiba Analog Frontend) */
-#define COLLIE_TC35143_GPIO_BASE	(GPIO_MAX + 13)
-#define COLLIE_TC35143_GPIO_VERSION0    UCB_IO_0
-#define COLLIE_TC35143_GPIO_TBL_CHK     UCB_IO_1
-#define COLLIE_TC35143_GPIO_VPEN_ON     UCB_IO_2
-#define COLLIE_GPIO_IR_ON		(COLLIE_TC35143_GPIO_BASE + 3)
-#define COLLIE_TC35143_GPIO_AMP_ON      UCB_IO_4
-#define COLLIE_TC35143_GPIO_VERSION1    UCB_IO_5
-#define COLLIE_TC35143_GPIO_FS8KLPF     UCB_IO_5
-#define COLLIE_TC35143_GPIO_BUZZER_BIAS UCB_IO_6
-#define COLLIE_GPIO_MBAT_ON     	(COLLIE_TC35143_GPIO_BASE + 7)
-#define COLLIE_GPIO_BBAT_ON     	(COLLIE_TC35143_GPIO_BASE + 8)
-#define COLLIE_GPIO_TMP_ON      	(COLLIE_TC35143_GPIO_BASE + 9)
-#define COLLIE_TC35143_GPIO_IN		(UCB_IO_0 | UCB_IO_2 | UCB_IO_5)
-#define COLLIE_TC35143_GPIO_OUT		(UCB_IO_1 | UCB_IO_3 | UCB_IO_4 \
-						| UCB_IO_6)
-
-#endif
diff --git a/arch/arm/mach-sa1100/include/mach/generic.h b/arch/arm/mach-sa1100/include/mach/generic.h
deleted file mode 100644
index 665542e0c9e2..000000000000
--- a/arch/arm/mach-sa1100/include/mach/generic.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../generic.h"
diff --git a/arch/arm/mach-sa1100/include/mach/h3xxx.h b/arch/arm/mach-sa1100/include/mach/h3xxx.h
deleted file mode 100644
index 0ee2578e0006..000000000000
--- a/arch/arm/mach-sa1100/include/mach/h3xxx.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Definitions for Compaq iPAQ H3100 and H3600 handheld computers
- *
- * (c) 2000 Compaq Computer Corporation. (Author: Jamey Hicks)
- * (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
- */
-
-#ifndef _INCLUDE_H3XXX_H_
-#define _INCLUDE_H3XXX_H_
-
-#include "hardware.h" /* Gives GPIO_MAX */
-
-/* Physical memory regions corresponding to chip selects */
-#define H3600_EGPIO_PHYS	(SA1100_CS5_PHYS + 0x01000000)
-#define H3600_BANK_2_PHYS	SA1100_CS2_PHYS
-#define H3600_BANK_4_PHYS	SA1100_CS4_PHYS
-
-/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
-#define H3600_EGPIO_VIRT	0xf0000000
-#define H3600_BANK_2_VIRT	0xf1000000
-#define H3600_BANK_4_VIRT	0xf3800000
-
-/*
- * gpiolib numbers for all iPAQs
- */
-#define H3XXX_GPIO_PWR_BUTTON		0
-#define H3XXX_GPIO_PCMCIA_CD1		10
-#define H3XXX_GPIO_PCMCIA_IRQ1		11
-#define H3XXX_GPIO_PCMCIA_CD0		17
-#define H3XXX_GPIO_ACTION_BUTTON	18
-#define H3XXX_GPIO_SYS_CLK		19
-#define H3XXX_GPIO_PCMCIA_IRQ0		21
-#define H3XXX_GPIO_COM_DCD		23
-#define H3XXX_GPIO_OPTION		24
-#define H3XXX_GPIO_COM_CTS		25
-#define H3XXX_GPIO_COM_RTS		26
-
-/* machine-specific gpios */
-
-#define H3100_GPIO_BT_ON		2
-#define H3100_GPIO_QMUTE		4
-#define H3100_GPIO_LCD_3V_ON		5
-#define H3100_GPIO_AUD_ON		6
-#define H3100_GPIO_AUD_PWR_ON		7
-#define H3100_GPIO_IR_ON		8
-#define H3100_GPIO_IR_FSEL		9
-
-#define H3600_GPIO_CLK_SET0		12	/* audio sample rate clock generator */
-#define H3600_GPIO_CLK_SET1		13
-#define H3600_GPIO_SOFT_RESET		20	/* also known as BATT_FAULT */
-#define H3600_GPIO_OPT_LOCK		22
-#define H3600_GPIO_OPT_DET		27
-
-
-/* H3100 / 3600 EGPIO pins */
-#define H3XXX_EGPIO_BASE		(GPIO_MAX + 1)
-
-#define H3XXX_EGPIO_VPP_ON		(H3XXX_EGPIO_BASE + 0)
-#define H3XXX_EGPIO_CARD_RESET		(H3XXX_EGPIO_BASE + 1) /* reset the attached pcmcia/compactflash card.  active high. */
-#define H3XXX_EGPIO_OPT_RESET		(H3XXX_EGPIO_BASE + 2) /* reset the attached option pack.  active high. */
-#define H3XXX_EGPIO_CODEC_NRESET	(H3XXX_EGPIO_BASE + 3) /* reset the onboard UDA1341.  active low. */
-#define H3XXX_EGPIO_OPT_NVRAM_ON	(H3XXX_EGPIO_BASE + 4) /* apply power to optionpack nvram, active high. */
-#define H3XXX_EGPIO_OPT_ON		(H3XXX_EGPIO_BASE + 5) /* full power to option pack.  active high. */
-#define H3XXX_EGPIO_LCD_ON		(H3XXX_EGPIO_BASE + 6) /* enable 3.3V to LCD.  active high. */
-#define H3XXX_EGPIO_RS232_ON		(H3XXX_EGPIO_BASE + 7) /* UART3 transceiver force on.  Active high. */
-
-/* H3600 only EGPIO pins */
-#define H3600_EGPIO_LCD_PCI		(H3XXX_EGPIO_BASE + 8) /* LCD control IC enable.  active high. */
-#define H3600_EGPIO_IR_ON		(H3XXX_EGPIO_BASE + 9) /* apply power to IR module.  active high. */
-#define H3600_EGPIO_AUD_AMP_ON		(H3XXX_EGPIO_BASE + 10) /* apply power to audio power amp.  active high. */
-#define H3600_EGPIO_AUD_PWR_ON		(H3XXX_EGPIO_BASE + 11) /* apply power to reset of audio circuit.  active high. */
-#define H3600_EGPIO_QMUTE		(H3XXX_EGPIO_BASE + 12) /* mute control for onboard UDA1341.  active high. */
-#define H3600_EGPIO_IR_FSEL		(H3XXX_EGPIO_BASE + 13) /* IR speed select: 1->fast, 0->slow */
-#define H3600_EGPIO_LCD_5V_ON		(H3XXX_EGPIO_BASE + 14) /* enable 5V to LCD. active high. */
-#define H3600_EGPIO_LVDD_ON		(H3XXX_EGPIO_BASE + 15) /* enable 9V and -6.5V to LCD. */
-
-void __init h3xxx_map_io(void);
-void __init h3xxx_mach_init(void);
-
-#endif /* _INCLUDE_H3XXX_H_ */
diff --git a/arch/arm/mach-sa1100/include/mach/hardware.h b/arch/arm/mach-sa1100/include/mach/hardware.h
deleted file mode 100644
index 6f2dbdc28663..000000000000
--- a/arch/arm/mach-sa1100/include/mach/hardware.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/hardware.h
- *
- * Copyright (C) 1998 Nicolas Pitre <nico@fluxnic.net>
- *
- * This file contains the hardware definitions for SA1100 architecture
- *
- * 2000/05/23 John Dorsey <john+@cs.cmu.edu>
- *      Definitions for SA1111 added.
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-
-#define UNCACHEABLE_ADDR	0xfa050000	/* ICIP */
-
-
-/*
- * SA1100 internal I/O mappings
- *
- * We have the following mapping:
- *      phys            virt
- *      80000000        f8000000
- *      90000000        fa000000
- *      a0000000        fc000000
- *      b0000000        fe000000
- */
-
-#define VIO_BASE        0xf8000000	/* virtual start of IO space */
-#define VIO_SHIFT       3		/* x = IO space shrink power */
-#define PIO_START       0x80000000	/* physical start of IO space */
-
-#define io_p2v( x )             \
-   IOMEM( (((x)&0x00ffffff) | (((x)&0x30000000)>>VIO_SHIFT)) + VIO_BASE )
-#define io_v2p( x )             \
-   ( (((x)&0x00ffffff) | (((x)&(0x30000000>>VIO_SHIFT))<<VIO_SHIFT)) + PIO_START )
-
-#define __MREG(x)	IOMEM(io_p2v(x))
-
-#ifndef __ASSEMBLY__
-
-# define __REG(x)	(*((volatile unsigned long __iomem *)io_p2v(x)))
-# define __PREG(x)	(io_v2p((unsigned long)&(x)))
-
-#else
-
-# define __REG(x)	io_p2v(x)
-# define __PREG(x)	io_v2p(x)
-
-#endif
-
-#include "SA-1100.h"
-
-#endif  /* _ASM_ARCH_HARDWARE_H */
diff --git a/arch/arm/mach-sa1100/include/mach/irqs.h b/arch/arm/mach-sa1100/include/mach/irqs.h
deleted file mode 100644
index f4a41e665262..000000000000
--- a/arch/arm/mach-sa1100/include/mach/irqs.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/irqs.h
- *
- * Copyright (C) 1996 Russell King
- * Copyright (C) 1998 Deborah Wallach (updates for SA1100/Brutus).
- * Copyright (C) 1999 Nicolas Pitre (full GPIO irq isolation)
- *
- * 2001/11/14	RMK	Cleaned up and standardised a lot of the IRQs.
- */
-
-#define	IRQ_GPIO0_SC		1
-#define	IRQ_GPIO1_SC		2
-#define	IRQ_GPIO2_SC		3
-#define	IRQ_GPIO3_SC		4
-#define	IRQ_GPIO4_SC		5
-#define	IRQ_GPIO5_SC		6
-#define	IRQ_GPIO6_SC		7
-#define	IRQ_GPIO7_SC		8
-#define	IRQ_GPIO8_SC		9
-#define	IRQ_GPIO9_SC		10
-#define	IRQ_GPIO10_SC		11
-#define	IRQ_GPIO11_27		12
-#define	IRQ_LCD			13	/* LCD controller           */
-#define	IRQ_Ser0UDC		14	/* Ser. port 0 UDC          */
-#define	IRQ_Ser1SDLC		15	/* Ser. port 1 SDLC         */
-#define	IRQ_Ser1UART		16	/* Ser. port 1 UART         */
-#define	IRQ_Ser2ICP		17	/* Ser. port 2 ICP          */
-#define	IRQ_Ser3UART		18	/* Ser. port 3 UART         */
-#define	IRQ_Ser4MCP		19	/* Ser. port 4 MCP          */
-#define	IRQ_Ser4SSP		20	/* Ser. port 4 SSP          */
-#define	IRQ_DMA0		21	/* DMA controller channel 0 */
-#define	IRQ_DMA1		22	/* DMA controller channel 1 */
-#define	IRQ_DMA2		23	/* DMA controller channel 2 */
-#define	IRQ_DMA3		24	/* DMA controller channel 3 */
-#define	IRQ_DMA4		25	/* DMA controller channel 4 */
-#define	IRQ_DMA5		26	/* DMA controller channel 5 */
-#define	IRQ_OST0		27	/* OS Timer match 0         */
-#define	IRQ_OST1		28	/* OS Timer match 1         */
-#define	IRQ_OST2		29	/* OS Timer match 2         */
-#define	IRQ_OST3		30	/* OS Timer match 3         */
-#define	IRQ_RTC1Hz		31	/* RTC 1 Hz clock           */
-#define	IRQ_RTCAlrm		32	/* RTC Alarm                */
-
-#define	IRQ_GPIO0		33
-#define	IRQ_GPIO1		34
-#define	IRQ_GPIO2		35
-#define	IRQ_GPIO3		36
-#define	IRQ_GPIO4		37
-#define	IRQ_GPIO5		38
-#define	IRQ_GPIO6		39
-#define	IRQ_GPIO7		40
-#define	IRQ_GPIO8		41
-#define	IRQ_GPIO9		42
-#define	IRQ_GPIO10		43
-#define	IRQ_GPIO11		44
-#define	IRQ_GPIO12		45
-#define	IRQ_GPIO13		46
-#define	IRQ_GPIO14		47
-#define	IRQ_GPIO15		48
-#define	IRQ_GPIO16		49
-#define	IRQ_GPIO17		50
-#define	IRQ_GPIO18		51
-#define	IRQ_GPIO19		52
-#define	IRQ_GPIO20		53
-#define	IRQ_GPIO21		54
-#define	IRQ_GPIO22		55
-#define	IRQ_GPIO23		56
-#define	IRQ_GPIO24		57
-#define	IRQ_GPIO25		58
-#define	IRQ_GPIO26		59
-#define	IRQ_GPIO27		60
-
-/*
- * The next 16 interrupts are for board specific purposes.  Since
- * the kernel can only run on one machine at a time, we can re-use
- * these.  If you need more, increase IRQ_BOARD_END, but keep it
- * within sensible limits.  IRQs 61 to 76 are available.
- */
-#define IRQ_BOARD_START		61
-#define IRQ_BOARD_END		77
-
-/*
- * Figure out the MAX IRQ number.
- *
- * Neponset, SA1111 and UCB1x00 are sparse IRQ aware, so can dynamically
- * allocate their IRQs above NR_IRQS.
- *
- * LoCoMo has 4 additional IRQs, but is not sparse IRQ aware, and so has
- * to be included in the NR_IRQS calculation.
- */
-#ifdef CONFIG_SHARP_LOCOMO
-#define NR_IRQS_LOCOMO		4
-#else
-#define NR_IRQS_LOCOMO		0
-#endif
-
-#ifndef NR_IRQS
-#define NR_IRQS (IRQ_BOARD_START + NR_IRQS_LOCOMO)
-#endif
-#define SA1100_NR_IRQS (IRQ_BOARD_START + NR_IRQS_LOCOMO)
diff --git a/arch/arm/mach-sa1100/include/mach/jornada720.h b/arch/arm/mach-sa1100/include/mach/jornada720.h
deleted file mode 100644
index bb22fcab8c6c..000000000000
--- a/arch/arm/mach-sa1100/include/mach/jornada720.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/mach-sa1100/include/mach/jornada720.h
- *
- * SSP/MCU communication definitions for HP Jornada 710/720/728
- *
- * Copyright 2007,2008 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
- *  Copyright 2000 John Ankcorn <jca@lcs.mit.edu>
- */
-
- /* HP Jornada 7xx microprocessor commands */
-#define GETBATTERYDATA		0xc0
-#define GETSCANKEYCODE		0x90
-#define GETTOUCHSAMPLES		0xa0
-#define GETCONTRAST		0xD0
-#define SETCONTRAST		0xD1
-#define GETBRIGHTNESS		0xD2
-#define SETBRIGHTNESS		0xD3
-#define CONTRASTOFF		0xD8
-#define BRIGHTNESSOFF		0xD9
-#define PWMOFF			0xDF
-#define TXDUMMY			0x11
-#define ERRORCODE		0x00
-
-extern void jornada_ssp_start(void);
-extern void jornada_ssp_end(void);
-extern int jornada_ssp_inout(u8 byte);
-extern int jornada_ssp_byte(u8 byte);
diff --git a/arch/arm/mach-sa1100/include/mach/memory.h b/arch/arm/mach-sa1100/include/mach/memory.h
deleted file mode 100644
index 3b19296f5062..000000000000
--- a/arch/arm/mach-sa1100/include/mach/memory.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/memory.h
- *
- * Copyright (C) 1999-2000 Nicolas Pitre <nico@fluxnic.net>
- */
-
-#ifndef __ASM_ARCH_MEMORY_H
-#define __ASM_ARCH_MEMORY_H
-
-#include <linux/sizes.h>
-
-/*
- * Because of the wide memory address space between physical RAM banks on the
- * SA1100, it's much convenient to use Linux's SparseMEM support to implement
- * our memory map representation.  Assuming all memory nodes have equal access
- * characteristics, we then have generic discontiguous memory support.
- *
- * The sparsemem banks are matched with the physical memory bank addresses
- * which are incidentally the same as virtual addresses.
- * 
- * 	node 0:  0xc0000000 - 0xc7ffffff
- * 	node 1:  0xc8000000 - 0xcfffffff
- * 	node 2:  0xd0000000 - 0xd7ffffff
- * 	node 3:  0xd8000000 - 0xdfffffff
- */
-#define MAX_PHYSMEM_BITS	32
-#define SECTION_SIZE_BITS	27
-
-/*
- * Cache flushing area - SA1100 zero bank
- */
-#define FLUSH_BASE_PHYS		0xe0000000
-#define FLUSH_BASE		0xf5000000
-#define FLUSH_BASE_MINICACHE	0xf5100000
-
-#endif
diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h
deleted file mode 100644
index 85e6a79112d2..000000000000
--- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * MTD primitives for XIP support. Architecture specific functions
- *
- * Do not include this file directly. It's included from linux/mtd/xip.h
- * 
- * Author:	Nicolas Pitre
- * Created:	Nov 2, 2004
- * Copyright:	(C) 2004 MontaVista Software, Inc.
- */
-
-#ifndef __ARCH_SA1100_MTD_XIP_H__
-#define __ARCH_SA1100_MTD_XIP_H__
-
-#include <mach/hardware.h>
-
-#define xip_irqpending()	(ICIP & ICMR)
-
-/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
-#define xip_currtime()		readl_relaxed(OSCR)
-#define xip_elapsed_since(x)	(signed)((readl_relaxed(OSCR) - (x)) / 4)
-
-#endif /* __ARCH_SA1100_MTD_XIP_H__ */
diff --git a/arch/arm/mach-sa1100/include/mach/neponset.h b/arch/arm/mach-sa1100/include/mach/neponset.h
deleted file mode 100644
index 18411cfdfe8e..000000000000
--- a/arch/arm/mach-sa1100/include/mach/neponset.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/neponset.h
- *
- * Created 2000/06/05 by Nicolas Pitre <nico@fluxnic.net>
- *
- * This file contains the hardware specific definitions for Assabet
- * Only include this file from SA1100-specific files.
- *
- * 2000/05/23 John Dorsey <john+@cs.cmu.edu>
- *      Definitions for Neponset added.
- */
-#ifndef __ASM_ARCH_NEPONSET_H
-#define __ASM_ARCH_NEPONSET_H
-
-/*
- * Neponset definitions: 
- */
-#define NCR_GP01_OFF		(1<<0)
-#define NCR_TP_PWR_EN		(1<<1)
-#define NCR_MS_PWR_EN		(1<<2)
-#define NCR_ENET_OSC_EN		(1<<3)
-#define NCR_SPI_KB_WK_UP	(1<<4)
-#define NCR_A0VPP		(1<<5)
-#define NCR_A1VPP		(1<<6)
-
-void neponset_ncr_frob(unsigned int, unsigned int);
-#define neponset_ncr_set(v)	neponset_ncr_frob(0, v)
-#define neponset_ncr_clear(v)	neponset_ncr_frob(v, 0)
-
-#endif
diff --git a/arch/arm/mach-sa1100/include/mach/reset.h b/arch/arm/mach-sa1100/include/mach/reset.h
deleted file mode 100644
index a6723d45ae2a..000000000000
--- a/arch/arm/mach-sa1100/include/mach/reset.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_ARCH_RESET_H
-#define __ASM_ARCH_RESET_H
-
-#include "hardware.h"
-
-#define RESET_STATUS_HARDWARE	(1 << 0)	/* Hardware Reset */
-#define RESET_STATUS_WATCHDOG	(1 << 1)	/* Watchdog Reset */
-#define RESET_STATUS_LOWPOWER	(1 << 2)	/* Exit from Low Power/Sleep */
-#define RESET_STATUS_GPIO	(1 << 3)	/* GPIO Reset */
-#define RESET_STATUS_ALL	(0xf)
-
-static inline void clear_reset_status(unsigned int mask)
-{
-	RCSR = mask;
-}
-
-#endif /* __ASM_ARCH_RESET_H */
diff --git a/arch/arm/mach-sa1100/include/mach/uncompress.h b/arch/arm/mach-sa1100/include/mach/uncompress.h
deleted file mode 100644
index f5eaa90a4576..000000000000
--- a/arch/arm/mach-sa1100/include/mach/uncompress.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-sa1100/include/mach/uncompress.h
- *
- * (C) 1999 Nicolas Pitre <nico@fluxnic.net>
- *
- * Reorganised to be machine independent.
- */
-
-#include "hardware.h"
-
-#define IOMEM(x)	(x)
-
-/*
- * The following code assumes the serial port has already been
- * initialized by the bootloader.  We search for the first enabled
- * port in the most probable order.  If you didn't setup a port in
- * your bootloader then nothing will appear (which might be desired).
- */
-
-#define UART(x)		(*(volatile unsigned long *)(serial_port + (x)))
-
-static inline void putc(int c)
-{
-	unsigned long serial_port;
-
-	do {
-		serial_port = _Ser3UTCR0;
-		if (UART(UTCR3) & UTCR3_TXE) break;
-		serial_port = _Ser1UTCR0;
-		if (UART(UTCR3) & UTCR3_TXE) break;
-		serial_port = _Ser2UTCR0;
-		if (UART(UTCR3) & UTCR3_TXE) break;
-		return;
-	} while (0);
-
-	/* wait for space in the UART's transmitter */
-	while (!(UART(UTSR1) & UTSR1_TNF))
-		barrier();
-
-	/* send the character out. */
-	UART(UTDR) = c;
-}
-
-static inline void flush(void)
-{
-}
-
-/*
- * Nothing to do for these
- */
-#define arch_decomp_setup()
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c
deleted file mode 100644
index e259298d9465..000000000000
--- a/arch/arm/mach-sa1100/jornada720.c
+++ /dev/null
@@ -1,380 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/mach-sa1100/jornada720.c
- *
- * HP Jornada720 init code
- *
- * Copyright (C) 2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
- * Copyright (C) 2006 Filip Zyzniewski <filip.zyzniewski@tefnet.pl>
- *  Copyright (C) 2005 Michael Gernoth <michael@gernoth.net>
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/tty.h>
-#include <linux/delay.h>
-#include <linux/gpio/machine.h>
-#include <linux/platform_data/sa11x0-serial.h>
-#include <linux/platform_device.h>
-#include <linux/ioport.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <video/s1d13xxxfb.h>
-
-#include <asm/hardware/sa1111.h>
-#include <asm/page.h>
-#include <asm/mach-types.h>
-#include <asm/setup.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/map.h>
-
-#include <mach/hardware.h>
-#include <mach/irqs.h>
-
-#include "generic.h"
-
-/*
- * HP Documentation referred in this file:
- * http://www.jlime.com/downloads/development/docs/jornada7xx/jornada720.txt
- */
-
-/* line 110 of HP's doc */
-#define TUCR_VAL	0x20000400
-
-/* memory space (line 52 of HP's doc) */
-#define SA1111REGSTART	0x40000000
-#define SA1111REGLEN	0x00002000
-#define EPSONREGSTART	0x48000000
-#define EPSONREGLEN	0x00100000
-#define EPSONFBSTART	0x48200000
-/* 512kB framebuffer */
-#define EPSONFBLEN	512*1024
-
-static struct s1d13xxxfb_regval s1d13xxxfb_initregs[] = {
-	/* line 344 of HP's doc */
-	{0x0001,0x00},	// Miscellaneous Register
-	{0x01FC,0x00},	// Display Mode Register
-	{0x0004,0x00},	// General IO Pins Configuration Register 0
-	{0x0005,0x00},	// General IO Pins Configuration Register 1
-	{0x0008,0x00},	// General IO Pins Control Register 0
-	{0x0009,0x00},	// General IO Pins Control Register 1
-	{0x0010,0x01},	// Memory Clock Configuration Register
-	{0x0014,0x11},	// LCD Pixel Clock Configuration Register
-	{0x0018,0x01},	// CRT/TV Pixel Clock Configuration Register
-	{0x001C,0x01},	// MediaPlug Clock Configuration Register
-	{0x001E,0x01},	// CPU To Memory Wait State Select Register
-	{0x0020,0x00},	// Memory Configuration Register
-	{0x0021,0x45},	// DRAM Refresh Rate Register
-	{0x002A,0x01},	// DRAM Timings Control Register 0
-	{0x002B,0x03},	// DRAM Timings Control Register 1
-	{0x0030,0x1c},	// Panel Type Register
-	{0x0031,0x00},	// MOD Rate Register
-	{0x0032,0x4F},	// LCD Horizontal Display Width Register
-	{0x0034,0x07},	// LCD Horizontal Non-Display Period Register
-	{0x0035,0x01},	// TFT FPLINE Start Position Register
-	{0x0036,0x0B},	// TFT FPLINE Pulse Width Register
-	{0x0038,0xEF},	// LCD Vertical Display Height Register 0
-	{0x0039,0x00},	// LCD Vertical Display Height Register 1
-	{0x003A,0x13},	// LCD Vertical Non-Display Period Register
-	{0x003B,0x0B},	// TFT FPFRAME Start Position Register
-	{0x003C,0x01},	// TFT FPFRAME Pulse Width Register
-	{0x0040,0x05},	// LCD Display Mode Register (2:4bpp,3:8bpp,5:16bpp)
-	{0x0041,0x00},	// LCD Miscellaneous Register
-	{0x0042,0x00},	// LCD Display Start Address Register 0
-	{0x0043,0x00},	// LCD Display Start Address Register 1
-	{0x0044,0x00},	// LCD Display Start Address Register 2
-	{0x0046,0x80},	// LCD Memory Address Offset Register 0
-	{0x0047,0x02},	// LCD Memory Address Offset Register 1
-	{0x0048,0x00},	// LCD Pixel Panning Register
-	{0x004A,0x00},	// LCD Display FIFO High Threshold Control Register
-	{0x004B,0x00},	// LCD Display FIFO Low Threshold Control Register
-	{0x0050,0x4F},	// CRT/TV Horizontal Display Width Register
-	{0x0052,0x13},	// CRT/TV Horizontal Non-Display Period Register
-	{0x0053,0x01},	// CRT/TV HRTC Start Position Register
-	{0x0054,0x0B},	// CRT/TV HRTC Pulse Width Register
-	{0x0056,0xDF},	// CRT/TV Vertical Display Height Register 0
-	{0x0057,0x01},	// CRT/TV Vertical Display Height Register 1
-	{0x0058,0x2B},	// CRT/TV Vertical Non-Display Period Register
-	{0x0059,0x09},	// CRT/TV VRTC Start Position Register
-	{0x005A,0x01},	// CRT/TV VRTC Pulse Width Register
-	{0x005B,0x10},	// TV Output Control Register
-	{0x0060,0x03},	// CRT/TV Display Mode Register (2:4bpp,3:8bpp,5:16bpp)
-	{0x0062,0x00},	// CRT/TV Display Start Address Register 0
-	{0x0063,0x00},	// CRT/TV Display Start Address Register 1
-	{0x0064,0x00},	// CRT/TV Display Start Address Register 2
-	{0x0066,0x40},	// CRT/TV Memory Address Offset Register 0
-	{0x0067,0x01},	// CRT/TV Memory Address Offset Register 1
-	{0x0068,0x00},	// CRT/TV Pixel Panning Register
-	{0x006A,0x00},	// CRT/TV Display FIFO High Threshold Control Register
-	{0x006B,0x00},	// CRT/TV Display FIFO Low Threshold Control Register
-	{0x0070,0x00},	// LCD Ink/Cursor Control Register
-	{0x0071,0x01},	// LCD Ink/Cursor Start Address Register
-	{0x0072,0x00},	// LCD Cursor X Position Register 0
-	{0x0073,0x00},	// LCD Cursor X Position Register 1
-	{0x0074,0x00},	// LCD Cursor Y Position Register 0
-	{0x0075,0x00},	// LCD Cursor Y Position Register 1
-	{0x0076,0x00},	// LCD Ink/Cursor Blue Color 0 Register
-	{0x0077,0x00},	// LCD Ink/Cursor Green Color 0 Register
-	{0x0078,0x00},	// LCD Ink/Cursor Red Color 0 Register
-	{0x007A,0x1F},	// LCD Ink/Cursor Blue Color 1 Register
-	{0x007B,0x3F},	// LCD Ink/Cursor Green Color 1 Register
-	{0x007C,0x1F},	// LCD Ink/Cursor Red Color 1 Register
-	{0x007E,0x00},	// LCD Ink/Cursor FIFO Threshold Register
-	{0x0080,0x00},	// CRT/TV Ink/Cursor Control Register
-	{0x0081,0x01},	// CRT/TV Ink/Cursor Start Address Register
-	{0x0082,0x00},	// CRT/TV Cursor X Position Register 0
-	{0x0083,0x00},	// CRT/TV Cursor X Position Register 1
-	{0x0084,0x00},	// CRT/TV Cursor Y Position Register 0
-	{0x0085,0x00},	// CRT/TV Cursor Y Position Register 1
-	{0x0086,0x00},	// CRT/TV Ink/Cursor Blue Color 0 Register
-	{0x0087,0x00},	// CRT/TV Ink/Cursor Green Color 0 Register
-	{0x0088,0x00},	// CRT/TV Ink/Cursor Red Color 0 Register
-	{0x008A,0x1F},	// CRT/TV Ink/Cursor Blue Color 1 Register
-	{0x008B,0x3F},	// CRT/TV Ink/Cursor Green Color 1 Register
-	{0x008C,0x1F},	// CRT/TV Ink/Cursor Red Color 1 Register
-	{0x008E,0x00},	// CRT/TV Ink/Cursor FIFO Threshold Register
-	{0x0100,0x00},	// BitBlt Control Register 0
-	{0x0101,0x00},	// BitBlt Control Register 1
-	{0x0102,0x00},	// BitBlt ROP Code/Color Expansion Register
-	{0x0103,0x00},	// BitBlt Operation Register
-	{0x0104,0x00},	// BitBlt Source Start Address Register 0
-	{0x0105,0x00},	// BitBlt Source Start Address Register 1
-	{0x0106,0x00},	// BitBlt Source Start Address Register 2
-	{0x0108,0x00},	// BitBlt Destination Start Address Register 0
-	{0x0109,0x00},	// BitBlt Destination Start Address Register 1
-	{0x010A,0x00},	// BitBlt Destination Start Address Register 2
-	{0x010C,0x00},	// BitBlt Memory Address Offset Register 0
-	{0x010D,0x00},	// BitBlt Memory Address Offset Register 1
-	{0x0110,0x00},	// BitBlt Width Register 0
-	{0x0111,0x00},	// BitBlt Width Register 1
-	{0x0112,0x00},	// BitBlt Height Register 0
-	{0x0113,0x00},	// BitBlt Height Register 1
-	{0x0114,0x00},	// BitBlt Background Color Register 0
-	{0x0115,0x00},	// BitBlt Background Color Register 1
-	{0x0118,0x00},	// BitBlt Foreground Color Register 0
-	{0x0119,0x00},	// BitBlt Foreground Color Register 1
-	{0x01E0,0x00},	// Look-Up Table Mode Register
-	{0x01E2,0x00},	// Look-Up Table Address Register
-	/* not sure, wouldn't like to mess with the driver */
-	{0x01E4,0x00},	// Look-Up Table Data Register
-	/* jornada doc says 0x00, but I trust the driver */
-	{0x01F0,0x10},	// Power Save Configuration Register
-	{0x01F1,0x00},	// Power Save Status Register
-	{0x01F4,0x00},	// CPU-to-Memory Access Watchdog Timer Register
-	{0x01FC,0x01},	// Display Mode Register(0x01:LCD, 0x02:CRT, 0x03:LCD&CRT)
-};
-
-static struct s1d13xxxfb_pdata s1d13xxxfb_data = {
-	.initregs		= s1d13xxxfb_initregs,
-	.initregssize		= ARRAY_SIZE(s1d13xxxfb_initregs),
-	.platform_init_video	= NULL
-};
-
-static struct resource s1d13xxxfb_resources[] = {
-	[0] = DEFINE_RES_MEM(EPSONFBSTART, EPSONFBLEN),
-	[1] = DEFINE_RES_MEM(EPSONREGSTART, EPSONREGLEN),
-};
-
-static struct platform_device s1d13xxxfb_device = {
-	.name		= S1D_DEVICENAME,
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &s1d13xxxfb_data,
-	},
-	.num_resources	= ARRAY_SIZE(s1d13xxxfb_resources),
-	.resource	= s1d13xxxfb_resources,
-};
-
-static struct gpiod_lookup_table jornada_pcmcia_gpiod_table = {
-	.dev_id = "1800",
-	.table = {
-		GPIO_LOOKUP("sa1111", 0, "s0-power", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("sa1111", 1, "s1-power", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("sa1111", 2, "s0-3v", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("sa1111", 3, "s1-3v", GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-static struct resource sa1111_resources[] = {
-	[0] = DEFINE_RES_MEM(SA1111REGSTART, SA1111REGLEN),
-	[1] = DEFINE_RES_IRQ(IRQ_GPIO1),
-};
-
-static struct sa1111_platform_data sa1111_info = {
-	.disable_devs	= SA1111_DEVID_PS2_MSE,
-};
-
-static u64 sa1111_dmamask = 0xffffffffUL;
-
-static struct platform_device sa1111_device = {
-	.name		= "sa1111",
-	.id		= 0,
-	.dev		= {
-		.dma_mask = &sa1111_dmamask,
-		.coherent_dma_mask = 0xffffffff,
-		.platform_data = &sa1111_info,
-	},
-	.num_resources	= ARRAY_SIZE(sa1111_resources),
-	.resource	= sa1111_resources,
-};
-
-static struct platform_device jornada_ssp_device = {
-	.name           = "jornada_ssp",
-	.id             = -1,
-};
-
-static struct resource jornada_kbd_resources[] = {
-	DEFINE_RES_IRQ(IRQ_GPIO0),
-};
-
-static struct platform_device jornada_kbd_device = {
-	.name		= "jornada720_kbd",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(jornada_kbd_resources),
-	.resource	= jornada_kbd_resources,
-};
-
-static struct gpiod_lookup_table jornada_ts_gpiod_table = {
-	.dev_id		= "jornada_ts",
-	.table		= {
-		GPIO_LOOKUP("gpio", 9, "penup", GPIO_ACTIVE_HIGH),
-	},
-};
-
-static struct platform_device jornada_ts_device = {
-	.name		= "jornada_ts",
-	.id		= -1,
-};
-
-static struct platform_device *devices[] __initdata = {
-	&sa1111_device,
-	&jornada_ssp_device,
-	&s1d13xxxfb_device,
-	&jornada_kbd_device,
-	&jornada_ts_device,
-};
-
-static int __init jornada720_init(void)
-{
-	int ret = -ENODEV;
-
-	if (machine_is_jornada720()) {
-		/* we want to use gpio20 as input to drive the clock of our uart 3 */
-		GPDR |= GPIO_GPIO20;	/* Clear gpio20 pin as input */
-		TUCR = TUCR_VAL;
-		GPSR = GPIO_GPIO20;	/* start gpio20 pin */
-		udelay(1);
-		GPCR = GPIO_GPIO20;	/* stop gpio20 */
-		udelay(1);
-		GPSR = GPIO_GPIO20;	/* restart gpio20 */
-		udelay(20);		/* give it some time to restart */
-
-		gpiod_add_lookup_table(&jornada_ts_gpiod_table);
-		gpiod_add_lookup_table(&jornada_pcmcia_gpiod_table);
-
-		ret = platform_add_devices(devices, ARRAY_SIZE(devices));
-	}
-
-	return ret;
-}
-
-arch_initcall(jornada720_init);
-
-static struct map_desc jornada720_io_desc[] __initdata = {
-	{	/* Epson registers */
-		.virtual	= 0xf0000000,
-		.pfn		= __phys_to_pfn(EPSONREGSTART),
-		.length		= EPSONREGLEN,
-		.type		= MT_DEVICE
-	}, {	/* Epson frame buffer */
-		.virtual	= 0xf1000000,
-		.pfn		= __phys_to_pfn(EPSONFBSTART),
-		.length		= EPSONFBLEN,
-		.type		= MT_DEVICE
-	}
-};
-
-static void __init jornada720_map_io(void)
-{
-	sa1100_map_io();
-	iotable_init(jornada720_io_desc, ARRAY_SIZE(jornada720_io_desc));
-
-	sa1100_register_uart(0, 3);
-	sa1100_register_uart(1, 1);
-}
-
-static struct mtd_partition jornada720_partitions[] = {
-	{
-		.name		= "JORNADA720 boot firmware",
-		.size		= 0x00040000,
-		.offset		= 0,
-		.mask_flags	= MTD_WRITEABLE, /* force read-only */
-	}, {
-		.name		= "JORNADA720 kernel",
-		.size		= 0x000c0000,
-		.offset		= 0x00040000,
-	}, {
-		.name		= "JORNADA720 params",
-		.size		= 0x00040000,
-		.offset		= 0x00100000,
-	}, {
-		.name		= "JORNADA720 initrd",
-		.size		= 0x00100000,
-		.offset		= 0x00140000,
-	}, {
-		.name		= "JORNADA720 root cramfs",
-		.size		= 0x00300000,
-		.offset		= 0x00240000,
-	}, {
-		.name		= "JORNADA720 usr cramfs",
-		.size		= 0x00800000,
-		.offset		= 0x00540000,
-	}, {
-		.name		= "JORNADA720 usr local",
-		.size		= 0, /* will expand to the end of the flash */
-		.offset		= 0x00d00000,
-	}
-};
-
-static void jornada720_set_vpp(int vpp)
-{
-	if (vpp)
-		/* enabling flash write (line 470 of HP's doc) */
-		PPSR |= PPC_LDD7;
-	else
-		/* disabling flash write (line 470 of HP's doc) */
-		PPSR &= ~PPC_LDD7;
-	PPDR |= PPC_LDD7;
-}
-
-static struct flash_platform_data jornada720_flash_data = {
-	.map_name	= "cfi_probe",
-	.set_vpp	= jornada720_set_vpp,
-	.parts		= jornada720_partitions,
-	.nr_parts	= ARRAY_SIZE(jornada720_partitions),
-};
-
-static struct resource jornada720_flash_resource =
-	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M);
-
-static void __init jornada720_mach_init(void)
-{
-	sa11x0_register_mtd(&jornada720_flash_data, &jornada720_flash_resource, 1);
-}
-
-MACHINE_START(JORNADA720, "HP Jornada 720")
-	/* Maintainer: Kristoffer Ericson <Kristoffer.Ericson@gmail.com> */
-	.atag_offset	= 0x100,
-	.map_io		= jornada720_map_io,
-	.nr_irqs	= SA1100_NR_IRQS,
-	.init_irq	= sa1100_init_irq,
-	.init_time	= sa1100_timer_init,
-	.init_machine	= jornada720_mach_init,
-	.init_late	= sa11x0_init_late,
-#ifdef CONFIG_SA1111
-	.dma_zone_size	= SZ_1M,
-#endif
-	.restart	= sa11x0_restart,
-MACHINE_END
diff --git a/arch/arm/mach-sa1100/jornada720_ssp.c b/arch/arm/mach-sa1100/jornada720_ssp.c
deleted file mode 100644
index d94810217095..000000000000
--- a/arch/arm/mach-sa1100/jornada720_ssp.c
+++ /dev/null
@@ -1,202 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  arch/arm/mac-sa1100/jornada720_ssp.c
- *
- *  Copyright (C) 2006/2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
- *   Copyright (C) 2006 Filip Zyzniewski <filip.zyzniewski@tefnet.pl>
- *
- *  SSP driver for the HP Jornada 710/720/728
- */
-
-#include <linux/delay.h>
-#include <linux/errno.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/sched.h>
-#include <linux/io.h>
-
-#include <mach/hardware.h>
-#include <mach/jornada720.h>
-#include <asm/hardware/ssp.h>
-
-static DEFINE_SPINLOCK(jornada_ssp_lock);
-static unsigned long jornada_ssp_flags;
-
-/**
- * jornada_ssp_reverse - reverses input byte
- * @byte: input byte to reverse
- *
- * we need to reverse all data we receive from the mcu due to its physical location
- * returns : 01110111 -> 11101110
- */
-inline u8 jornada_ssp_reverse(u8 byte)
-{
-	return
-		((0x80 & byte) >> 7) |
-		((0x40 & byte) >> 5) |
-		((0x20 & byte) >> 3) |
-		((0x10 & byte) >> 1) |
-		((0x08 & byte) << 1) |
-		((0x04 & byte) << 3) |
-		((0x02 & byte) << 5) |
-		((0x01 & byte) << 7);
-};
-EXPORT_SYMBOL(jornada_ssp_reverse);
-
-/**
- * jornada_ssp_byte - waits for ready ssp bus and sends byte
- * @byte: input byte to transmit
- *
- * waits for fifo buffer to clear and then transmits, if it doesn't then we will
- * timeout after <timeout> rounds. Needs mcu running before its called.
- *
- * returns : %mcu output on success
- *	   : %-ETIMEDOUT on timeout
- */
-int jornada_ssp_byte(u8 byte)
-{
-	int timeout = 400000;
-	u16 ret;
-
-	while ((GPLR & GPIO_GPIO10)) {
-		if (!--timeout) {
-			printk(KERN_WARNING "SSP: timeout while waiting for transmit\n");
-			return -ETIMEDOUT;
-		}
-		cpu_relax();
-	}
-
-	ret = jornada_ssp_reverse(byte) << 8;
-
-	ssp_write_word(ret);
-	ssp_read_word(&ret);
-
-	return jornada_ssp_reverse(ret);
-};
-EXPORT_SYMBOL(jornada_ssp_byte);
-
-/**
- * jornada_ssp_inout - decide if input is command or trading byte
- * @byte: input byte to send (may be %TXDUMMY)
- *
- * returns : (jornada_ssp_byte(byte)) on success
- *         : %-ETIMEDOUT on timeout failure
- */
-int jornada_ssp_inout(u8 byte)
-{
-	int ret, i;
-
-	/* true means command byte */
-	if (byte != TXDUMMY) {
-		ret = jornada_ssp_byte(byte);
-		/* Proper return to commands is TxDummy */
-		if (ret != TXDUMMY) {
-			for (i = 0; i < 256; i++)/* flushing bus */
-				if (jornada_ssp_byte(TXDUMMY) == -1)
-					break;
-			return -ETIMEDOUT;
-		}
-	} else /* Exchange TxDummy for data */
-		ret = jornada_ssp_byte(TXDUMMY);
-
-	return ret;
-};
-EXPORT_SYMBOL(jornada_ssp_inout);
-
-/**
- * jornada_ssp_start - enable mcu
- *
- */
-void jornada_ssp_start(void)
-{
-	spin_lock_irqsave(&jornada_ssp_lock, jornada_ssp_flags);
-	GPCR = GPIO_GPIO25;
-	udelay(50);
-	return;
-};
-EXPORT_SYMBOL(jornada_ssp_start);
-
-/**
- * jornada_ssp_end - disable mcu and turn off lock
- *
- */
-void jornada_ssp_end(void)
-{
-	GPSR = GPIO_GPIO25;
-	spin_unlock_irqrestore(&jornada_ssp_lock, jornada_ssp_flags);
-	return;
-};
-EXPORT_SYMBOL(jornada_ssp_end);
-
-static int jornada_ssp_probe(struct platform_device *dev)
-{
-	int ret;
-
-	GPSR = GPIO_GPIO25;
-
-	ret = ssp_init();
-
-	/* worked fine, lets not bother with anything else */
-	if (!ret) {
-		printk(KERN_INFO "SSP: device initialized with irq\n");
-		return ret;
-	}
-
-	printk(KERN_WARNING "SSP: initialization failed, trying non-irq solution \n");
-
-	/* init of Serial 4 port */
-	Ser4MCCR0 = 0;
-	Ser4SSCR0 = 0x0387;
-	Ser4SSCR1 = 0x18;
-
-	/* clear out any left over data */
-	ssp_flush();
-
-	/* enable MCU */
-	jornada_ssp_start();
-
-	/* see if return value makes sense */
-	ret = jornada_ssp_inout(GETBRIGHTNESS);
-
-	/* seems like it worked, just feed it with TxDummy to get rid of data */
-	if (ret == TXDUMMY)
-		jornada_ssp_inout(TXDUMMY);
-
-	jornada_ssp_end();
-
-	/* failed, lets just kill everything */
-	if (ret == -ETIMEDOUT) {
-		printk(KERN_WARNING "SSP: attempts failed, bailing\n");
-		ssp_exit();
-		return -ENODEV;
-	}
-
-	/* all fine */
-	printk(KERN_INFO "SSP: device initialized\n");
-	return 0;
-};
-
-static void jornada_ssp_remove(struct platform_device *dev)
-{
-	/* Note that this doesn't actually remove the driver, since theres nothing to remove
-	 * It just makes sure everything is turned off */
-	GPSR = GPIO_GPIO25;
-	ssp_exit();
-};
-
-struct platform_driver jornadassp_driver = {
-	.probe	= jornada_ssp_probe,
-	.remove = jornada_ssp_remove,
-	.driver	= {
-		.name	= "jornada_ssp",
-	},
-};
-
-static int __init jornada_ssp_init(void)
-{
-	return platform_driver_register(&jornadassp_driver);
-}
-
-module_init(jornada_ssp_init);
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
deleted file mode 100644
index 9e8a3284a6cf..000000000000
--- a/arch/arm/mach-sa1100/neponset.c
+++ /dev/null
@@ -1,438 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-sa1100/neponset.c
- */
-#include <linux/err.h>
-#include <linux/gpio/driver.h>
-#include <linux/gpio/gpio-reg.h>
-#include <linux/gpio/machine.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/irq.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/pm.h>
-#include <linux/serial_core.h>
-#include <linux/slab.h>
-#include <linux/smc91x.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/map.h>
-#include <asm/hardware/sa1111.h>
-#include <linux/sizes.h>
-
-#include <mach/hardware.h>
-#include <mach/assabet.h>
-#include <mach/neponset.h>
-#include <mach/irqs.h>
-
-#define NEP_IRQ_SMC91X	0
-#define NEP_IRQ_USAR	1
-#define NEP_IRQ_SA1111	2
-#define NEP_IRQ_NR	3
-
-#define WHOAMI		0x00
-#define LEDS		0x10
-#define SWPK		0x20
-#define IRR		0x24
-#define KP_Y_IN		0x80
-#define KP_X_OUT	0x90
-#define NCR_0		0xa0
-#define MDM_CTL_0	0xb0
-#define MDM_CTL_1	0xb4
-#define AUD_CTL		0xc0
-
-#define IRR_ETHERNET	(1 << 0)
-#define IRR_USAR	(1 << 1)
-#define IRR_SA1111	(1 << 2)
-
-#define NCR_NGPIO	7
-#define MDM_CTL0_NGPIO	4
-#define MDM_CTL1_NGPIO	6
-#define AUD_NGPIO	2
-
-extern void sa1110_mb_disable(void);
-
-#define to_neponset_gpio_chip(x) container_of(x, struct neponset_gpio_chip, gc)
-
-static const char *neponset_ncr_names[] = {
-	"gp01_off", "tp_power", "ms_power", "enet_osc",
-	"spi_kb_wk_up", "a0vpp", "a1vpp"
-};
-
-static const char *neponset_mdmctl0_names[] = {
-	"rts3", "dtr3", "rts1", "dtr1",
-};
-
-static const char *neponset_mdmctl1_names[] = {
-	"cts3", "dsr3", "dcd3", "cts1", "dsr1", "dcd1"
-};
-
-static const char *neponset_aud_names[] = {
-	"sel_1341", "mute_1341",
-};
-
-struct neponset_drvdata {
-	void __iomem *base;
-	struct platform_device *sa1111;
-	struct platform_device *smc91x;
-	unsigned irq_base;
-	struct gpio_chip *gpio[4];
-};
-
-static struct gpiod_lookup_table neponset_uart1_gpio_table = {
-	.dev_id = "sa11x0-uart.1",
-	.table = {
-		GPIO_LOOKUP("neponset-mdm-ctl0", 2, "rts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl0", 3, "dtr", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl1", 3, "cts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl1", 4, "dsr", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl1", 5, "dcd", GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpiod_lookup_table neponset_uart3_gpio_table = {
-	.dev_id = "sa11x0-uart.3",
-	.table = {
-		GPIO_LOOKUP("neponset-mdm-ctl0", 0, "rts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl0", 1, "dtr", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl1", 0, "cts", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl1", 1, "dsr", GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP("neponset-mdm-ctl1", 2, "dcd", GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpiod_lookup_table neponset_pcmcia_table = {
-	.dev_id = "1800",
-	.table = {
-		GPIO_LOOKUP("sa1111", 1, "a0vcc", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("sa1111", 0, "a1vcc", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("neponset-ncr", 5, "a0vpp", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("neponset-ncr", 6, "a1vpp", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("sa1111", 2, "b0vcc", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("sa1111", 3, "b1vcc", GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-static struct neponset_drvdata *nep;
-
-void neponset_ncr_frob(unsigned int mask, unsigned int val)
-{
-	struct neponset_drvdata *n = nep;
-	unsigned long m = mask, v = val;
-
-	if (nep)
-		n->gpio[0]->set_multiple(n->gpio[0], &m, &v);
-	else
-		WARN(1, "nep unset\n");
-}
-EXPORT_SYMBOL(neponset_ncr_frob);
-
-/*
- * Install handler for Neponset IRQ.  Note that we have to loop here
- * since the ETHERNET and USAR IRQs are level based, and we need to
- * ensure that the IRQ signal is deasserted before returning.  This
- * is rather unfortunate.
- */
-static void neponset_irq_handler(struct irq_desc *desc)
-{
-	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
-	unsigned int irr;
-
-	while (1) {
-		/*
-		 * Acknowledge the parent IRQ.
-		 */
-		desc->irq_data.chip->irq_ack(&desc->irq_data);
-
-		/*
-		 * Read the interrupt reason register.  Let's have all
-		 * active IRQ bits high.  Note: there is a typo in the
-		 * Neponset user's guide for the SA1111 IRR level.
-		 */
-		irr = readb_relaxed(d->base + IRR);
-		irr ^= IRR_ETHERNET | IRR_USAR;
-
-		if ((irr & (IRR_ETHERNET | IRR_USAR | IRR_SA1111)) == 0)
-			break;
-
-		/*
-		 * Since there is no individual mask, we have to
-		 * mask the parent IRQ.  This is safe, since we'll
-		 * recheck the register for any pending IRQs.
-		 */
-		if (irr & (IRR_ETHERNET | IRR_USAR)) {
-			desc->irq_data.chip->irq_mask(&desc->irq_data);
-
-			/*
-			 * Ack the interrupt now to prevent re-entering
-			 * this neponset handler.  Again, this is safe
-			 * since we'll check the IRR register prior to
-			 * leaving.
-			 */
-			desc->irq_data.chip->irq_ack(&desc->irq_data);
-
-			if (irr & IRR_ETHERNET)
-				generic_handle_irq(d->irq_base + NEP_IRQ_SMC91X);
-
-			if (irr & IRR_USAR)
-				generic_handle_irq(d->irq_base + NEP_IRQ_USAR);
-
-			desc->irq_data.chip->irq_unmask(&desc->irq_data);
-		}
-
-		if (irr & IRR_SA1111)
-			generic_handle_irq(d->irq_base + NEP_IRQ_SA1111);
-	}
-}
-
-/* Yes, we really do not have any kind of masking or unmasking */
-static void nochip_noop(struct irq_data *irq)
-{
-}
-
-static struct irq_chip nochip = {
-	.name = "neponset",
-	.irq_ack = nochip_noop,
-	.irq_mask = nochip_noop,
-	.irq_unmask = nochip_noop,
-};
-
-static int neponset_init_gpio(struct gpio_chip **gcp,
-	struct device *dev, const char *label, void __iomem *reg,
-	unsigned num, bool in, const char *const * names)
-{
-	struct gpio_chip *gc;
-
-	gc = gpio_reg_init(dev, reg, -1, num, label, in ? 0xffffffff : 0,
-			   readl_relaxed(reg), names, NULL, NULL);
-	if (IS_ERR(gc))
-		return PTR_ERR(gc);
-
-	*gcp = gc;
-
-	return 0;
-}
-
-static struct sa1111_platform_data sa1111_info = {
-	.disable_devs	= SA1111_DEVID_PS2_MSE,
-};
-
-static int neponset_probe(struct platform_device *dev)
-{
-	struct neponset_drvdata *d;
-	struct resource *nep_res, *sa1111_res, *smc91x_res;
-	struct resource sa1111_resources[] = {
-		DEFINE_RES_MEM(0x40000000, SZ_8K),
-		{ .flags = IORESOURCE_IRQ },
-	};
-	struct platform_device_info sa1111_devinfo = {
-		.parent = &dev->dev,
-		.name = "sa1111",
-		.id = 0,
-		.res = sa1111_resources,
-		.num_res = ARRAY_SIZE(sa1111_resources),
-		.data = &sa1111_info,
-		.size_data = sizeof(sa1111_info),
-		.dma_mask = 0xffffffffUL,
-	};
-	struct resource smc91x_resources[] = {
-		DEFINE_RES_MEM_NAMED(SA1100_CS3_PHYS,
-			0x02000000, "smc91x-regs"),
-		DEFINE_RES_MEM_NAMED(SA1100_CS3_PHYS + 0x02000000,
-			0x02000000, "smc91x-attrib"),
-		{ .flags = IORESOURCE_IRQ },
-	};
-	struct smc91x_platdata smc91x_platdata = {
-		.flags = SMC91X_USE_8BIT | SMC91X_IO_SHIFT_2 | SMC91X_NOWAIT,
-	};
-	struct platform_device_info smc91x_devinfo = {
-		.parent = &dev->dev,
-		.name = "smc91x",
-		.id = 0,
-		.res = smc91x_resources,
-		.num_res = ARRAY_SIZE(smc91x_resources),
-		.data = &smc91x_platdata,
-		.size_data = sizeof(smc91x_platdata),
-	};
-	int ret, irq;
-
-	if (nep)
-		return -EBUSY;
-
-	irq = ret = platform_get_irq(dev, 0);
-	if (ret < 0)
-		goto err_alloc;
-
-	nep_res = platform_get_resource(dev, IORESOURCE_MEM, 0);
-	smc91x_res = platform_get_resource(dev, IORESOURCE_MEM, 1);
-	sa1111_res = platform_get_resource(dev, IORESOURCE_MEM, 2);
-	if (!nep_res || !smc91x_res || !sa1111_res) {
-		ret = -ENXIO;
-		goto err_alloc;
-	}
-
-	d = kzalloc_obj(*d);
-	if (!d) {
-		ret = -ENOMEM;
-		goto err_alloc;
-	}
-
-	d->base = ioremap(nep_res->start, SZ_4K);
-	if (!d->base) {
-		ret = -ENOMEM;
-		goto err_ioremap;
-	}
-
-	if (readb_relaxed(d->base + WHOAMI) != 0x11) {
-		dev_warn(&dev->dev, "Neponset board detected, but wrong ID: %02x\n",
-			 readb_relaxed(d->base + WHOAMI));
-		ret = -ENODEV;
-		goto err_id;
-	}
-
-	ret = irq_alloc_descs(-1, IRQ_BOARD_START, NEP_IRQ_NR, -1);
-	if (ret <= 0) {
-		dev_err(&dev->dev, "unable to allocate %u irqs: %d\n",
-			NEP_IRQ_NR, ret);
-		if (ret == 0)
-			ret = -ENOMEM;
-		goto err_irq_alloc;
-	}
-
-	d->irq_base = ret;
-
-	irq_set_chip_and_handler(d->irq_base + NEP_IRQ_SMC91X, &nochip,
-		handle_simple_irq);
-	irq_clear_status_flags(d->irq_base + NEP_IRQ_SMC91X, IRQ_NOREQUEST | IRQ_NOPROBE);
-	irq_set_chip_and_handler(d->irq_base + NEP_IRQ_USAR, &nochip,
-		handle_simple_irq);
-	irq_clear_status_flags(d->irq_base + NEP_IRQ_USAR, IRQ_NOREQUEST | IRQ_NOPROBE);
-	irq_set_chip(d->irq_base + NEP_IRQ_SA1111, &nochip);
-
-	irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
-	irq_set_chained_handler_and_data(irq, neponset_irq_handler, d);
-
-	/* Disable GPIO 0/1 drivers so the buttons work on the Assabet */
-	writeb_relaxed(NCR_GP01_OFF, d->base + NCR_0);
-
-	neponset_init_gpio(&d->gpio[0], &dev->dev, "neponset-ncr",
-			   d->base + NCR_0, NCR_NGPIO, false,
-			   neponset_ncr_names);
-	neponset_init_gpio(&d->gpio[1], &dev->dev, "neponset-mdm-ctl0",
-			   d->base + MDM_CTL_0, MDM_CTL0_NGPIO, false,
-			   neponset_mdmctl0_names);
-	neponset_init_gpio(&d->gpio[2], &dev->dev, "neponset-mdm-ctl1",
-			   d->base + MDM_CTL_1, MDM_CTL1_NGPIO, true,
-			   neponset_mdmctl1_names);
-	neponset_init_gpio(&d->gpio[3], &dev->dev, "neponset-aud-ctl",
-			   d->base + AUD_CTL, AUD_NGPIO, false,
-			   neponset_aud_names);
-
-	gpiod_add_lookup_table(&neponset_uart1_gpio_table);
-	gpiod_add_lookup_table(&neponset_uart3_gpio_table);
-	gpiod_add_lookup_table(&neponset_pcmcia_table);
-
-	/*
-	 * We would set IRQ_GPIO25 to be a wake-up IRQ, but unfortunately
-	 * something on the Neponset activates this IRQ on sleep (eth?)
-	 */
-#if 0
-	enable_irq_wake(irq);
-#endif
-
-	dev_info(&dev->dev, "Neponset daughter board, providing IRQ%u-%u\n",
-		 d->irq_base, d->irq_base + NEP_IRQ_NR - 1);
-	nep = d;
-
-	/* Ensure that the memory bus request/grant signals are setup */
-	sa1110_mb_disable();
-
-	sa1111_resources[0].parent = sa1111_res;
-	sa1111_resources[1].start = d->irq_base + NEP_IRQ_SA1111;
-	sa1111_resources[1].end = d->irq_base + NEP_IRQ_SA1111;
-	d->sa1111 = platform_device_register_full(&sa1111_devinfo);
-
-	smc91x_resources[0].parent = smc91x_res;
-	smc91x_resources[1].parent = smc91x_res;
-	smc91x_resources[2].start = d->irq_base + NEP_IRQ_SMC91X;
-	smc91x_resources[2].end = d->irq_base + NEP_IRQ_SMC91X;
-	d->smc91x = platform_device_register_full(&smc91x_devinfo);
-
-	platform_set_drvdata(dev, d);
-
-	return 0;
-
- err_irq_alloc:
- err_id:
-	iounmap(d->base);
- err_ioremap:
-	kfree(d);
- err_alloc:
-	return ret;
-}
-
-static void neponset_remove(struct platform_device *dev)
-{
-	struct neponset_drvdata *d = platform_get_drvdata(dev);
-	int irq = platform_get_irq(dev, 0);
-
-	if (!IS_ERR(d->sa1111))
-		platform_device_unregister(d->sa1111);
-	if (!IS_ERR(d->smc91x))
-		platform_device_unregister(d->smc91x);
-
-	gpiod_remove_lookup_table(&neponset_pcmcia_table);
-	gpiod_remove_lookup_table(&neponset_uart3_gpio_table);
-	gpiod_remove_lookup_table(&neponset_uart1_gpio_table);
-
-	irq_set_chained_handler(irq, NULL);
-	irq_free_descs(d->irq_base, NEP_IRQ_NR);
-	nep = NULL;
-	iounmap(d->base);
-	kfree(d);
-}
-
-#ifdef CONFIG_PM_SLEEP
-static int neponset_resume(struct device *dev)
-{
-	struct neponset_drvdata *d = dev_get_drvdata(dev);
-	int i, ret = 0;
-
-	for (i = 0; i < ARRAY_SIZE(d->gpio); i++) {
-		ret = gpio_reg_resume(d->gpio[i]);
-		if (ret)
-			break;
-	}
-
-	return ret;
-}
-
-static const struct dev_pm_ops neponset_pm_ops = {
-	.resume_noirq = neponset_resume,
-	.restore_noirq = neponset_resume,
-};
-#define PM_OPS &neponset_pm_ops
-#else
-#define PM_OPS NULL
-#endif
-
-static struct platform_driver neponset_device_driver = {
-	.probe		= neponset_probe,
-	.remove		= neponset_remove,
-	.driver		= {
-		.name	= "neponset",
-		.pm	= PM_OPS,
-	},
-};
-
-static int __init neponset_init(void)
-{
-	return platform_driver_register(&neponset_device_driver);
-}
-
-subsys_initcall(neponset_init);
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c
deleted file mode 100644
index 9495fc109baa..000000000000
--- a/arch/arm/mach-sa1100/pm.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * SA1100 Power Management Routines
- *
- * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License.
- *
- * History:
- *
- * 2001-02-06:	Cliff Brake         Initial code
- *
- * 2001-02-25:	Sukjae Cho <sjcho@east.isi.edu> &
- * 		Chester Kuo <chester@linux.org.tw>
- * 			Save more value for the resume function! Support
- * 			Bitsy/Assabet/Freebird board
- *
- * 2001-08-29:	Nicolas Pitre <nico@fluxnic.net>
- * 			Cleaned up, pushed platform dependent stuff
- * 			in the platform specific files.
- *
- * 2002-05-27:	Nicolas Pitre	Killed sleep.h and the kmalloced save array.
- * 				Storage is local on the stack now.
- */
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/suspend.h>
-#include <linux/errno.h>
-#include <linux/time.h>
-
-#include <mach/hardware.h>
-#include <asm/page.h>
-#include <asm/suspend.h>
-#include <asm/mach/time.h>
-
-#include "generic.h"
-
-extern int sa1100_finish_suspend(unsigned long);
-
-#define SAVE(x)		sleep_save[SLEEP_SAVE_##x] = x
-#define RESTORE(x)	x = sleep_save[SLEEP_SAVE_##x]
-
-/*
- * List of global SA11x0 peripheral registers to preserve.
- * More ones like CP and general purpose register values are preserved
- * on the stack and then the stack pointer is stored last in sleep.S.
- */
-enum {	SLEEP_SAVE_GPDR, SLEEP_SAVE_GAFR,
-	SLEEP_SAVE_PPDR, SLEEP_SAVE_PPSR, SLEEP_SAVE_PPAR, SLEEP_SAVE_PSDR,
-
-	SLEEP_SAVE_Ser1SDCR0,
-
-	SLEEP_SAVE_COUNT
-};
-
-
-static int sa11x0_pm_enter(suspend_state_t state)
-{
-	unsigned long gpio, sleep_save[SLEEP_SAVE_COUNT];
-
-	gpio = GPLR;
-
-	/* save vital registers */
-	SAVE(GPDR);
-	SAVE(GAFR);
-
-	SAVE(PPDR);
-	SAVE(PPSR);
-	SAVE(PPAR);
-	SAVE(PSDR);
-
-	SAVE(Ser1SDCR0);
-
-	/* Clear previous reset status */
-	RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR;
-
-	/* set resume return address */
-	PSPR = __pa_symbol(cpu_resume);
-
-	/* go zzz */
-	cpu_suspend(0, sa1100_finish_suspend);
-
-	/*
-	 * Ensure not to come back here if it wasn't intended
-	 */
-	RCSR = RCSR_SMR;
-	PSPR = 0;
-
-	/*
-	 * Ensure interrupt sources are disabled; we will re-init
-	 * the interrupt subsystem via the device manager.
-	 */
-	ICLR = 0;
-	ICCR = 1;
-	ICMR = 0;
-
-	/* restore registers */
-	RESTORE(GPDR);
-	RESTORE(GAFR);
-
-	RESTORE(PPDR);
-	RESTORE(PPSR);
-	RESTORE(PPAR);
-	RESTORE(PSDR);
-
-	RESTORE(Ser1SDCR0);
-
-	GPSR = gpio;
-	GPCR = ~gpio;
-
-	/*
-	 * Clear the peripheral sleep-hold bit.
-	 */
-	PSSR = PSSR_PH;
-
-	return 0;
-}
-
-static const struct platform_suspend_ops sa11x0_pm_ops = {
-	.enter		= sa11x0_pm_enter,
-	.valid		= suspend_valid_only_mem,
-};
-
-int __init sa11x0_pm_init(void)
-{
-	suspend_set_ops(&sa11x0_pm_ops);
-	return 0;
-}
diff --git a/arch/arm/mach-sa1100/sleep.S b/arch/arm/mach-sa1100/sleep.S
deleted file mode 100644
index 85863741ef8b..000000000000
--- a/arch/arm/mach-sa1100/sleep.S
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * SA11x0 Assembler Sleep/WakeUp Management Routines
- *
- * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License.
- *
- * History:
- *
- * 2001-02-06: Cliff Brake         Initial code
- *
- * 2001-08-29:	Nicolas Pitre	Simplified.
- *
- * 2002-05-27:	Nicolas Pitre	Revisited, more cleanup and simplification.
- *				Storage is on the stack now.
- */
-
-#include <linux/linkage.h>
-#include <asm/assembler.h>
-#include <mach/hardware.h>
-
-		.text
-/*
- * sa1100_finish_suspend()
- *
- * Causes sa11x0 to enter sleep state
- *
- * Must be aligned to a cacheline.
- */
-	.balign	32
-ENTRY(sa1100_finish_suspend)
-	@ disable clock switching
-	mcr	p15, 0, r1, c15, c2, 2
-
-	ldr	r6, =MDREFR
-	ldr	r4, [r6]
-	orr     r4, r4, #MDREFR_K1DB2
-	ldr	r5, =PPCR
-
-	@ Pre-load __loop_udelay into the I-cache
-	mov	r0, #1
-	bl	__loop_udelay
-	mov	r0, r0
-
-	@ The following must all exist in a single cache line to
-	@ avoid accessing memory until this sequence is complete,
-	@ otherwise we occasionally hang.
-
-	@ Adjust memory timing before lowering CPU clock
-	str     r4, [r6]
-
-	@ delay 90us and set CPU PLL to lowest speed
-	@ fixes resume problem on high speed SA1110
-	mov	r0, #90
-	bl	__loop_udelay
-	mov	r1, #0
-	str	r1, [r5]
-	mov	r0, #90
-	bl	__loop_udelay
-
-	/*
-	 * SA1110 SDRAM controller workaround.  register values:
-	 *
-	 * r0  = &MSC0
-	 * r1  = &MSC1
-	 * r2  = &MSC2
-	 * r3  = MSC0 value
-	 * r4  = MSC1 value
-	 * r5  = MSC2 value
-	 * r6  = &MDREFR
-	 * r7  = first MDREFR value
-	 * r8  = second MDREFR value
-	 * r9  = &MDCNFG
-	 * r10 = MDCNFG value
-	 * r11 = third MDREFR value
-	 * r12 = &PMCR
-	 * r13 = PMCR value (1)
-	 */
-
-	ldr	r0, =MSC0
-	ldr	r1, =MSC1
-	ldr	r2, =MSC2
-
-	ldr	r3, [r0]
-	bic	r3, r3, #FMsk(MSC_RT)
-	bic	r3, r3, #FMsk(MSC_RT)<<16
-
-	ldr	r4, [r1]
-	bic	r4, r4, #FMsk(MSC_RT)
-	bic	r4, r4, #FMsk(MSC_RT)<<16
-
-	ldr	r5, [r2]
-	bic	r5, r5, #FMsk(MSC_RT)
-	bic	r5, r5, #FMsk(MSC_RT)<<16
-
-	ldr	r7, [r6]
-	bic	r7, r7, #0x0000FF00
-	bic	r7, r7, #0x000000F0
-	orr	r8, r7, #MDREFR_SLFRSH
-
-	ldr	r9, =MDCNFG
-	ldr	r10, [r9]
-	bic	r10, r10, #(MDCNFG_DE0+MDCNFG_DE1)
-	bic	r10, r10, #(MDCNFG_DE2+MDCNFG_DE3)
-
-	bic	r11, r8, #MDREFR_SLFRSH
-	bic	r11, r11, #MDREFR_E1PIN
-
-	ldr	r12, =PMCR
-
-	mov	r13, #PMCR_SF
-
-	b	sa1110_sdram_controller_fix
-
-	.align 5
-sa1110_sdram_controller_fix:
-
-	@ Step 1 clear RT field of all MSCx registers
-	str 	r3, [r0]
-	str	r4, [r1]
-	str	r5, [r2]
-
-	@ Step 2 clear DRI field in MDREFR
-	str	r7, [r6]
-
-	@ Step 3 set SLFRSH bit in MDREFR
-	str	r8, [r6]
-
-	@ Step 4 clear DE bis in MDCNFG
-	str	r10, [r9]
-
-	@ Step 5 clear DRAM refresh control register
-	str	r11, [r6]
-
-	@ Wow, now the hardware suspend request pins can be used, that makes them functional for
-	@ about 7 ns out of the	entire time that the CPU is running!
-
-	@ Step 6 set force sleep bit in PMCR
-
-	str	r13, [r12]
-
-20:	b	20b			@ loop waiting for sleep
diff --git a/arch/arm/mach-sa1100/ssp.c b/arch/arm/mach-sa1100/ssp.c
deleted file mode 100644
index 613fd767afcf..000000000000
--- a/arch/arm/mach-sa1100/ssp.c
+++ /dev/null
@@ -1,240 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-sa1100/ssp.c
- *
- *  Copyright (C) 2003 Russell King.
- *
- *  Generic SSP driver.  This provides the generic core for simple
- *  IO-based SSP applications.
- */
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/errno.h>
-#include <linux/interrupt.h>
-#include <linux/ioport.h>
-#include <linux/init.h>
-#include <linux/io.h>
-
-#include <mach/hardware.h>
-#include <mach/irqs.h>
-#include <asm/hardware/ssp.h>
-
-#define TIMEOUT 100000
-
-static irqreturn_t ssp_interrupt(int irq, void *dev_id)
-{
-	unsigned int status = Ser4SSSR;
-
-	if (status & SSSR_ROR)
-		printk(KERN_WARNING "SSP: receiver overrun\n");
-
-	Ser4SSSR = SSSR_ROR;
-
-	return status ? IRQ_HANDLED : IRQ_NONE;
-}
-
-/**
- * ssp_write_word - write a word to the SSP port
- * @data: 16-bit, MSB justified data to write.
- *
- * Wait for a free entry in the SSP transmit FIFO, and write a data
- * word to the SSP port.  Wait for the SSP port to start sending
- * the data.
- *
- * The caller is expected to perform the necessary locking.
- *
- * Returns:
- *   %-ETIMEDOUT	timeout occurred
- *   0			success
- */
-int ssp_write_word(u16 data)
-{
-	int timeout = TIMEOUT;
-
-	while (!(Ser4SSSR & SSSR_TNF)) {
-	        if (!--timeout)
-	        	return -ETIMEDOUT;
-		cpu_relax();
-	}
-
-	Ser4SSDR = data;
-
-	timeout = TIMEOUT;
-	while (!(Ser4SSSR & SSSR_BSY)) {
-	        if (!--timeout)
-	        	return -ETIMEDOUT;
-		cpu_relax();
-	}
-
-	return 0;
-}
-
-/**
- * ssp_read_word - read a word from the SSP port
- *
- * Wait for a data word in the SSP receive FIFO, and return the
- * received data.  Data is LSB justified.
- *
- * Note: Currently, if data is not expected to be received, this
- * function will wait for ever.
- *
- * The caller is expected to perform the necessary locking.
- *
- * Returns:
- *   %-ETIMEDOUT	timeout occurred
- *   16-bit data	success
- */
-int ssp_read_word(u16 *data)
-{
-	int timeout = TIMEOUT;
-
-	while (!(Ser4SSSR & SSSR_RNE)) {
-	        if (!--timeout)
-	        	return -ETIMEDOUT;
-		cpu_relax();
-	}
-
-	*data = (u16)Ser4SSDR;
-
-	return 0;
-}
-
-/**
- * ssp_flush - flush the transmit and receive FIFOs
- *
- * Wait for the SSP to idle, and ensure that the receive FIFO
- * is empty.
- *
- * The caller is expected to perform the necessary locking.
- *
- * Returns:
- *   %-ETIMEDOUT	timeout occurred
- *   0			success
- */
-int ssp_flush(void)
-{
-	int timeout = TIMEOUT * 2;
-
-	do {
-		while (Ser4SSSR & SSSR_RNE) {
-		        if (!--timeout)
-		        	return -ETIMEDOUT;
-			(void) Ser4SSDR;
-		}
-	        if (!--timeout)
-	        	return -ETIMEDOUT;
-	} while (Ser4SSSR & SSSR_BSY);
-
-	return 0;
-}
-
-/**
- * ssp_enable - enable the SSP port
- *
- * Turn on the SSP port.
- */
-void ssp_enable(void)
-{
-	Ser4SSCR0 |= SSCR0_SSE;
-}
-
-/**
- * ssp_disable - shut down the SSP port
- *
- * Turn off the SSP port, optionally powering it down.
- */
-void ssp_disable(void)
-{
-	Ser4SSCR0 &= ~SSCR0_SSE;
-}
-
-/**
- * ssp_save_state - save the SSP configuration
- * @ssp: pointer to structure to save SSP configuration
- *
- * Save the configured SSP state for suspend.
- */
-void ssp_save_state(struct ssp_state *ssp)
-{
-	ssp->cr0 = Ser4SSCR0;
-	ssp->cr1 = Ser4SSCR1;
-
-	Ser4SSCR0 &= ~SSCR0_SSE;
-}
-
-/**
- * ssp_restore_state - restore a previously saved SSP configuration
- * @ssp: pointer to configuration saved by ssp_save_state
- *
- * Restore the SSP configuration saved previously by ssp_save_state.
- */
-void ssp_restore_state(struct ssp_state *ssp)
-{
-	Ser4SSSR = SSSR_ROR;
-
-	Ser4SSCR0 = ssp->cr0 & ~SSCR0_SSE;
-	Ser4SSCR1 = ssp->cr1;
-	Ser4SSCR0 = ssp->cr0;
-}
-
-/**
- * ssp_init - setup the SSP port
- *
- * initialise and claim resources for the SSP port.
- *
- * Returns:
- *   %-ENODEV	if the SSP port is unavailable
- *   %-EBUSY	if the resources are already in use
- *   %0		on success
- */
-int ssp_init(void)
-{
-	int ret;
-
-	if (!(PPAR & PPAR_SPR) && (Ser4MCCR0 & MCCR0_MCE))
-		return -ENODEV;
-
-	if (!request_mem_region(__PREG(Ser4SSCR0), 0x18, "SSP")) {
-		return -EBUSY;
-	}
-
-	Ser4SSSR = SSSR_ROR;
-
-	ret = request_irq(IRQ_Ser4SSP, ssp_interrupt, 0, "SSP", NULL);
-	if (ret)
-		goto out_region;
-
-	return 0;
-
- out_region:
-	release_mem_region(__PREG(Ser4SSCR0), 0x18);
-	return ret;
-}
-
-/**
- * ssp_exit - undo the effects of ssp_init
- *
- * release and free resources for the SSP port.
- */
-void ssp_exit(void)
-{
-	Ser4SSCR0 &= ~SSCR0_SSE;
-
-	free_irq(IRQ_Ser4SSP, NULL);
-	release_mem_region(__PREG(Ser4SSCR0), 0x18);
-}
-
-MODULE_AUTHOR("Russell King");
-MODULE_DESCRIPTION("SA11x0 SSP PIO driver");
-MODULE_LICENSE("GPL");
-
-EXPORT_SYMBOL(ssp_write_word);
-EXPORT_SYMBOL(ssp_read_word);
-EXPORT_SYMBOL(ssp_flush);
-EXPORT_SYMBOL(ssp_enable);
-EXPORT_SYMBOL(ssp_disable);
-EXPORT_SYMBOL(ssp_save_state);
-EXPORT_SYMBOL(ssp_restore_state);
-EXPORT_SYMBOL(ssp_init);
-EXPORT_SYMBOL(ssp_exit);
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 0cc1bf04686d..bf94f2718293 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -226,11 +226,6 @@ void __init arch_mm_preinit(void)
 	swiotlb_init(max_pfn > arm_dma_pfn_limit, SWIOTLB_VERBOSE);
 #endif
 
-#ifdef CONFIG_SA1111
-	/* now that our DMA memory is actually so designated, we can free it */
-	memblock_phys_free(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET);
-#endif
-
 	/*
 	 * Check boundaries twice: Some fundamental inconsistencies can
 	 * be detected at build time already.
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 23b87b5ef7f1..350f6dcc24cc 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -1339,14 +1339,6 @@ void __init arm_mm_memblock_reserve(void)
 	 * and can only be in node 0.
 	 */
 	memblock_reserve(__pa(swapper_pg_dir), SWAPPER_PG_DIR_SIZE);
-
-#ifdef CONFIG_SA1111
-	/*
-	 * Because of the SA1111 DMA bug, we want to preserve our
-	 * precious DMA-able memory...
-	 */
-	memblock_reserve(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET);
-#endif
 }
 
 /*
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 05b9233b9418..55ffee3d75ce 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -1541,8 +1541,8 @@ config RTC_DRV_EP93XX
 	  will be called rtc-ep93xx.
 
 config RTC_DRV_SA1100
-	tristate "SA11x0/PXA2xx/PXA910"
-	depends on ARCH_SA1100 || ARCH_PXA || ARCH_MMP
+	tristate "PXA2xx/PXA910"
+	depends on ARCH_PXA || ARCH_MMP
 	help
 	  If you say Y here you will get access to the real time clock
 	  built into your SA11x0 or PXA2xx CPU.
diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 26b2f4184ecc..dc98484dbe27 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -275,18 +275,10 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 
-	if (IS_ENABLED(CONFIG_ARCH_SA1100) ||
-	    of_device_is_compatible(pdev->dev.of_node, "mrvl,sa1100-rtc")) {
-		info->rcnr = base + 0x04;
-		info->rtsr = base + 0x10;
-		info->rtar = base + 0x00;
-		info->rttr = base + 0x08;
-	} else {
-		info->rcnr = base + 0x0;
-		info->rtsr = base + 0x8;
-		info->rtar = base + 0x4;
-		info->rttr = base + 0xc;
-	}
+	info->rcnr = base + 0x0;
+	info->rtsr = base + 0x8;
+	info->rtar = base + 0x4;
+	info->rttr = base + 0xc;
 
 	platform_set_drvdata(pdev, info);
 	device_init_wakeup(&pdev->dev, true);
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index f7d0a0c2c0ef..0ab0dcc6d27d 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -614,16 +614,16 @@ config S3C2410_WATCHDOG
 	  be called s3c2410_wdt.
 
 config SA1100_WATCHDOG
-	tristate "SA1100/PXA2xx watchdog"
-	depends on ARCH_SA1100 || ARCH_PXA || COMPILE_TEST
+	tristate "PXA2xx watchdog"
+	depends on ARCH_PXA || COMPILE_TEST
 	help
-	  Watchdog timer embedded into SA11x0 and PXA2xx chips. This will
-	  reboot your system when timeout is reached.
+	  Watchdog timer embedded PXA2xx chips. This will reboot your
+	  system when timeout is reached.
 
 	  NOTE: once enabled, this timer cannot be disabled.
 
-	  To compile this driver as a module, choose M here: the
-	  module will be called sa1100_wdt.
+	  To compile this driver as a module, choose M here: the module
+	  will be called sa1100_wdt.
 
 config DW_WATCHDOG
 	tristate "Synopsys DesignWare watchdog"
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 02/13] ARM: remove footbridge
  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 15:27 ` Arnd Bergmann
  2026-09-08 17:27   ` Linus Walleij
  2026-09-08 15:27 ` [PATCH 03/13] ARM: remove riscpc Arnd Bergmann
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Ralph Siemsen,
	Helge Deller, dri-devel

From: Arnd Bergmann <arnd@arndb.de>

Footbridge was deprecated in 7.3 to be removed along with the other
StrongARM platforms and most remaining board files.

The main machine here is the NetWinder, which was a popular Arm based
desktop PC in the late 1990s and contributed to Arm's later success as
an embedded Linux platform, but was discontinued over 25 years ago and
is no longer all that useful.

I previously tried to convert this to devicetree in a sensible way but
gave up due to the platform being too different from modern SoC based
targets.

Cc: Russell King <linux@armlinux.org.uk>
Cc: Ralph Siemsen <ralphs@netwinder.org>
Cc: Helge Deller <deller@gmx.de>
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/arch/arm/index.rst              |   1 -
 Documentation/arch/arm/netwinder.rst          |  85 --
 MAINTAINERS                                   |   8 -
 arch/arm/Kconfig                              |  17 +-
 arch/arm/Kconfig.debug                        |  27 +-
 arch/arm/Makefile                             |   2 -
 arch/arm/boot/bootp/Makefile                  |   1 -
 arch/arm/configs/footbridge_defconfig         | 114 ---
 arch/arm/configs/netwinder_defconfig          |  88 --
 arch/arm/include/asm/hardware/dec21285.h      | 138 ----
 arch/arm/include/asm/mach/pci.h               |  14 -
 arch/arm/include/debug/dc21285.S              |  41 -
 arch/arm/kernel/atags_parse.c                 |  18 -
 arch/arm/kernel/bios32.c                      |  12 -
 arch/arm/kernel/head.S                        |  10 -
 arch/arm/mach-footbridge/Kconfig              |  57 --
 arch/arm/mach-footbridge/Makefile             |  18 -
 arch/arm/mach-footbridge/common.c             | 280 -------
 arch/arm/mach-footbridge/common.h             |  15 -
 arch/arm/mach-footbridge/dc21285-timer.c      | 136 ---
 arch/arm/mach-footbridge/dc21285.c            | 360 --------
 arch/arm/mach-footbridge/dma-isa.c            | 230 ------
 arch/arm/mach-footbridge/ebsa285-pci.c        |  48 --
 arch/arm/mach-footbridge/ebsa285.c            | 124 ---
 .../mach-footbridge/include/mach/hardware.h   |  90 --
 arch/arm/mach-footbridge/include/mach/irqs.h  |  97 ---
 .../mach-footbridge/include/mach/isa-dma.h    |  18 -
 .../arm/mach-footbridge/include/mach/memory.h |  26 -
 .../mach-footbridge/include/mach/uncompress.h |  34 -
 arch/arm/mach-footbridge/isa-irq.c            | 177 ----
 arch/arm/mach-footbridge/isa-rtc.c            |  57 --
 arch/arm/mach-footbridge/isa-timer.c          |  36 -
 arch/arm/mach-footbridge/isa.c                |  94 ---
 arch/arm/mach-footbridge/netwinder-hw.c       | 772 ------------------
 arch/arm/mach-footbridge/netwinder-pci.c      |  62 --
 drivers/video/console/Kconfig                 |   6 +-
 drivers/video/console/dummycon.c              |   6 -
 drivers/video/fbdev/cyber2000fb.c             |  10 -
 38 files changed, 12 insertions(+), 3317 deletions(-)
 delete mode 100644 Documentation/arch/arm/netwinder.rst
 delete mode 100644 arch/arm/configs/footbridge_defconfig
 delete mode 100644 arch/arm/configs/netwinder_defconfig
 delete mode 100644 arch/arm/include/asm/hardware/dec21285.h
 delete mode 100644 arch/arm/include/debug/dc21285.S
 delete mode 100644 arch/arm/mach-footbridge/Kconfig
 delete mode 100644 arch/arm/mach-footbridge/Makefile
 delete mode 100644 arch/arm/mach-footbridge/common.c
 delete mode 100644 arch/arm/mach-footbridge/common.h
 delete mode 100644 arch/arm/mach-footbridge/dc21285-timer.c
 delete mode 100644 arch/arm/mach-footbridge/dc21285.c
 delete mode 100644 arch/arm/mach-footbridge/dma-isa.c
 delete mode 100644 arch/arm/mach-footbridge/ebsa285-pci.c
 delete mode 100644 arch/arm/mach-footbridge/ebsa285.c
 delete mode 100644 arch/arm/mach-footbridge/include/mach/hardware.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/irqs.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/isa-dma.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/memory.h
 delete mode 100644 arch/arm/mach-footbridge/include/mach/uncompress.h
 delete mode 100644 arch/arm/mach-footbridge/isa-irq.c
 delete mode 100644 arch/arm/mach-footbridge/isa-rtc.c
 delete mode 100644 arch/arm/mach-footbridge/isa-timer.c
 delete mode 100644 arch/arm/mach-footbridge/isa.c
 delete mode 100644 arch/arm/mach-footbridge/netwinder-hw.c
 delete mode 100644 arch/arm/mach-footbridge/netwinder-pci.c

diff --git a/Documentation/arch/arm/index.rst b/Documentation/arch/arm/index.rst
index a292b8ac41ce..17d6a5bbfc26 100644
--- a/Documentation/arch/arm/index.rst
+++ b/Documentation/arch/arm/index.rst
@@ -38,7 +38,6 @@ SoC-specific documents
    marvell
    microchip
 
-   netwinder
    nwfpe/index
 
    keystone/overview
diff --git a/Documentation/arch/arm/netwinder.rst b/Documentation/arch/arm/netwinder.rst
deleted file mode 100644
index 8eab66caa2ac..000000000000
--- a/Documentation/arch/arm/netwinder.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-================================
-NetWinder specific documentation
-================================
-
-The NetWinder is a small low-power computer, primarily designed
-to run Linux.  It is based around the StrongARM RISC processor,
-DC21285 PCI bridge, with PC-type hardware glued around it.
-
-Port usage
-==========
-
-=======  ====== ===============================
-Min      Max	Description
-=======  ====== ===============================
-0x0000   0x000f	DMA1
-0x0020   0x0021	PIC1
-0x0060   0x006f	Keyboard
-0x0070   0x007f	RTC
-0x0080   0x0087	DMA1
-0x0088   0x008f	DMA2
-0x00a0   0x00a3	PIC2
-0x00c0   0x00df	DMA2
-0x0180   0x0187	IRDA
-0x01f0   0x01f6	ide0
-0x0201		Game port
-0x0203		RWA010 configuration read
-0x0220   ?	SoundBlaster
-0x0250   ?	WaveArtist
-0x0279		RWA010 configuration index
-0x02f8   0x02ff	Serial ttyS1
-0x0300   0x031f	Ether10
-0x0338		GPIO1
-0x033a		GPIO2
-0x0370   0x0371	W83977F configuration registers
-0x0388   ?	AdLib
-0x03c0   0x03df	VGA
-0x03f6		ide0
-0x03f8   0x03ff	Serial ttyS0
-0x0400   0x0408	DC21143
-0x0480   0x0487	DMA1
-0x0488   0x048f	DMA2
-0x0a79		RWA010 configuration write
-0xe800   0xe80f	ide0/ide1 BM DMA
-=======  ====== ===============================
-
-
-Interrupt usage
-===============
-
-======= ======= ========================
-IRQ	type	Description
-======= ======= ========================
- 0	ISA	100Hz timer
- 1	ISA	Keyboard
- 2	ISA	cascade
- 3	ISA	Serial ttyS1
- 4	ISA	Serial ttyS0
- 5	ISA	PS/2 mouse
- 6	ISA	IRDA
- 7	ISA	Printer
- 8	ISA	RTC alarm
- 9	ISA
-10	ISA	GP10 (Orange reset button)
-11	ISA
-12	ISA	WaveArtist
-13	ISA
-14	ISA	hda1
-15	ISA
-======= ======= ========================
-
-DMA usage
-=========
-
-======= ======= ===========
-DMA	type	Description
-======= ======= ===========
- 0	ISA	IRDA
- 1	ISA
- 2	ISA	cascade
- 3	ISA	WaveArtist
- 4	ISA
- 5	ISA
- 6	ISA
- 7	ISA	WaveArtist
-======= ======= ===========
diff --git a/MAINTAINERS b/MAINTAINERS
index fd213c4bc257..4380d5660402 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2924,14 +2924,6 @@ S:	Maintained
 T:	git git://git.berlios.de/gemini-board
 F:	arch/arm/mm/*-fa*
 
-ARM/FOOTBRIDGE 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/dec21285.h
-F:	arch/arm/mach-footbridge/
-
 ARM/FREESCALE IMX / MXC / LAYERSCAPE ARM ARCHITECTURE
 M:	Frank Li <Frank.Li@nxp.com>
 M:	Sascha Hauer <s.hauer@pengutronix.de>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7f4c2973d630..c3d6b8abc815 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 || ARCH_FOOTBRIDGE)
+	select COMMON_CLK if !ARCH_RPC
 	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_FOOTBRIDGE || ARCH_RPC)
+	select SPARSE_IRQ if !ARCH_RPC
 	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_FOOTBRIDGE || ARCH_RPC)
+	select USE_OF if !ARCH_RPC
 	# Above selects are sorted alphabetically; please add new ones
 	# according to that.  Thanks.
 	help
@@ -295,7 +295,6 @@ 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 0x00000000 if ARCH_FOOTBRIDGE
 	default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
 	default 0xa0000000 if ARCH_PXA
 	default 0xc0000000 if ARCH_EP93XX
@@ -338,7 +337,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_FOOTBRIDGE || ARCH_RPC)
+	depends on MMU && !ARCH_RPC
 	default y
 	help
 	  In general, all Arm machines can be supported in a single
@@ -380,14 +379,10 @@ source "arch/arm/mach-davinci/Kconfig"
 
 source "arch/arm/mach-digicolor/Kconfig"
 
-source "arch/arm/mach-dove/Kconfig"
-
 source "arch/arm/mach-ep93xx/Kconfig"
 
 source "arch/arm/mach-exynos/Kconfig"
 
-source "arch/arm/mach-footbridge/Kconfig"
-
 source "arch/arm/mach-gemini/Kconfig"
 
 source "arch/arm/mach-highbank/Kconfig"
@@ -1199,7 +1194,7 @@ config ARCH_FLATMEM_ENABLE
 	def_bool !ARCH_RPC
 
 config ARCH_SPARSEMEM_ENABLE
-	def_bool !ARCH_FOOTBRIDGE
+	def_bool y
 	select SPARSEMEM_STATIC if SPARSEMEM
 
 config HIGHMEM
@@ -1599,7 +1594,7 @@ config ARCH_DEFAULT_CRASH_DUMP
 
 config AUTO_ZRELADDR
 	bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
-	default !(ARCH_FOOTBRIDGE || ARCH_RPC)
+	default !ARCH_RPC
 	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 ad0feced4369..f2a80955b7a0 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -324,13 +324,6 @@ choice
 		  Say Y here if you want the debug print routines to direct
 		  their output to UART2 serial port on DaVinci DA8XX devices.
 
-	config DEBUG_DC21285_PORT
-		bool "Kernel low-level debugging messages via footbridge serial port"
-		depends on FOOTBRIDGE
-		help
-		  Say Y here if you want the debug print routines to direct
-		  their output to the serial port in the DC21285 (Footbridge).
-
 	config DEBUG_DIGICOLOR_UA0
 		bool "Kernel low-level debugging messages via Digicolor UA0"
 		depends on ARCH_DIGICOLOR
@@ -346,14 +339,6 @@ choice
 		  Say Y here if you want kernel low-level debugging support
 		  on Cirrus Logic EP93xx based platforms.
 
-	config DEBUG_FOOTBRIDGE_COM1
-		bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1"
-		depends on FOOTBRIDGE
-		select DEBUG_UART_8250
-		help
-		  Say Y here if you want the debug print routines to direct
-		  their output to the 8250 at PCI COM1.
-
 	config DEBUG_GEMINI
 		bool "Kernel low-level debugging messages via Cortina Systems Gemini UART"
 		depends on ARCH_GEMINI
@@ -1461,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_FOOTBRIDGE_COM1 || DEBUG_GEMINI || ARCH_RPC
+	default y if DEBUG_GEMINI || ARCH_RPC
 	help
 	  Some UART ports are connected to terminals that will use modem
 	  control signals to indicate whether they are ready to receive text.
@@ -1476,7 +1461,6 @@ config DEBUG_LL_INCLUDE
 	default "debug/at91.S" if DEBUG_AT91_UART
 	default "debug/asm9260.S" if DEBUG_ASM9260_UART
 	default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
-	default "debug/dc21285.S" if DEBUG_DC21285_PORT
 	default "debug/meson.S" if DEBUG_MESON_UARTAO
 	default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
 	default "debug/exynos.S" if DEBUG_EXYNOS_UART
@@ -1590,7 +1574,6 @@ config DEBUG_UART_PHYS
 	default 0x4806e000 if DEBUG_OMAP2UART3 || DEBUG_OMAP4UART4
 	default 0x49020000 if DEBUG_OMAP3UART3
 	default 0x49042000 if DEBUG_OMAP3UART4
-	default 0x7c0003f8 if DEBUG_FOOTBRIDGE_COM1
 	default 0x7f005000 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
 	default 0x7f005400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
 	default 0x7f005800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
@@ -1748,7 +1731,6 @@ config DEBUG_UART_VIRT
 	default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
 	default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
 	default 0xfedc0000 if DEBUG_EP93XX
-	default 0xfee003f8 if DEBUG_FOOTBRIDGE_COM1
 	default 0xfee20000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART
 	default 0xfec00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN
 	default 0xfec00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN
@@ -1771,8 +1753,7 @@ config DEBUG_UART_VIRT
 config DEBUG_UART_8250_SHIFT
 	int "Register offset shift for the 8250 debug UART"
 	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
-	default 0 if DEBUG_FOOTBRIDGE_COM1 || DEBUG_BCM_5301X || \
-		DEBUG_BCM_HR2
+	default 0 if DEBUG_BCM_5301X || DEBUG_BCM_HR2
 	default 3 if DEBUG_MSTARV7_PMUART
 	default 2
 
@@ -1798,7 +1779,7 @@ config DEBUG_UART_8250_PALMCHIP
 config DEBUG_UNCOMPRESS
 	bool "Enable decompressor debugging via DEBUG_LL output"
 	depends on !ARCH_MULTIPLATFORM
-	depends on !(ARCH_FOOTBRIDGE || ARCH_RPC)
+	depends on !ARCH_RPC
 	depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
 		     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
 		     !DEBUG_BRCMSTB_UART && !DEBUG_SEMIHOSTING
@@ -1808,7 +1789,7 @@ config DEBUG_UNCOMPRESS
 
 config UNCOMPRESS_INCLUDE
 	string
-	default "mach/uncompress.h" if ARCH_FOOTBRIDGE || ARCH_RPC
+	default "mach/uncompress.h" if ARCH_RPC
 	default "debug/uncompress.h"
 
 config EARLY_PRINTK
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index ea3da21202c8..f5bc9ad7f6f5 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -181,7 +181,6 @@ machine-$(CONFIG_ARCH_DAVINCI)		+= davinci
 machine-$(CONFIG_ARCH_DIGICOLOR)	+= digicolor
 machine-$(CONFIG_ARCH_DOVE)		+= dove
 machine-$(CONFIG_ARCH_EXYNOS)		+= exynos
-machine-$(CONFIG_ARCH_FOOTBRIDGE)	+= footbridge
 machine-$(CONFIG_ARCH_GEMINI)		+= gemini
 machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
 machine-$(CONFIG_ARCH_HISI)		+= hisi
@@ -225,7 +224,6 @@ machine-$(CONFIG_PLAT_SPEAR)		+= spear
 
 # legacy platforms provide their own mach/*.h headers globally,
 # these three are mutually exclusive
-machdirs-$(CONFIG_ARCH_FOOTBRIDGE)	+= arch/arm/mach-footbridge
 machdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
 KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
 
diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
index a1a1f4bec783..12c61684b97f 100644
--- a/arch/arm/boot/bootp/Makefile
+++ b/arch/arm/boot/bootp/Makefile
@@ -19,7 +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_FOOTBRIDGE)	+= 0x00800000
 initrd_offset-$(CONFIG_ARCH_RPC)	+= 0x08000000
 INITRD_OFFSET := $(initrd_offset-y)
 ifdef INITRD_OFFSET
diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig
deleted file mode 100644
index 7fa556fb6cf4..000000000000
--- a/arch/arm/configs/footbridge_defconfig
+++ /dev/null
@@ -1,114 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_EXPERT=y
-# CONFIG_HOTPLUG is not set
-CONFIG_ARCH_MULTI_V4=y
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_FOOTBRIDGE=y
-CONFIG_ARCH_EBSA285_HOST=y
-CONFIG_ARCH_NETWINDER=y
-CONFIG_ATAGS=y
-CONFIG_FPE_NWFPE=y
-CONFIG_FPE_NWFPE_XP=y
-# CONFIG_AEABI is not set
-CONFIG_MODULES=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_ACORN_PARTITION=y
-CONFIG_ACORN_PARTITION_ADFS=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_SYN_COOKIES=y
-# CONFIG_IPV6 is not set
-CONFIG_ATM=y
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-CONFIG_PARPORT_PC_FIFO=y
-CONFIG_PARPORT_1284=y
-CONFIG_PNP=y
-CONFIG_ISAPNP=y
-CONFIG_PARIDE=m
-CONFIG_PARIDE_PD=m
-CONFIG_PARIDE_PCD=m
-CONFIG_PARIDE_PF=m
-CONFIG_PARIDE_PT=m
-CONFIG_PARIDE_PG=m
-CONFIG_PARIDE_ATEN=m
-CONFIG_PARIDE_BPCK=m
-CONFIG_PARIDE_COMM=m
-CONFIG_PARIDE_DSTR=m
-CONFIG_PARIDE_FIT2=m
-CONFIG_PARIDE_FIT3=m
-CONFIG_PARIDE_EPAT=m
-CONFIG_PARIDE_EPIA=m
-CONFIG_PARIDE_FRIQ=m
-CONFIG_PARIDE_FRPW=m
-CONFIG_PARIDE_KBIC=m
-CONFIG_PARIDE_KTTI=m
-CONFIG_PARIDE_ON20=m
-CONFIG_PARIDE_ON26=m
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_RAM=y
-CONFIG_NETDEVICES=y
-CONFIG_NET_VENDOR_3COM=y
-CONFIG_VORTEX=y
-CONFIG_NET_PCI=y
-CONFIG_NE2K_PCI=y
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPPOE=m
-CONFIG_PPP_ASYNC=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-CONFIG_SERIAL_21285=y
-CONFIG_SERIAL_21285_CONSOLE=y
-CONFIG_SERIAL_NONSTANDARD=y
-CONFIG_PRINTER=m
-CONFIG_DS1620=y
-CONFIG_NWBUTTON=y
-CONFIG_NWBUTTON_REBOOT=y
-CONFIG_NWFLASH=m
-CONFIG_I2C=m
-CONFIG_WATCHDOG=y
-CONFIG_SOFT_WATCHDOG=y
-CONFIG_21285_WATCHDOG=m
-CONFIG_977_WATCHDOG=m
-CONFIG_FB=y
-CONFIG_FB_CYBER2000=y
-CONFIG_SOUND=m
-# CONFIG_USB_HID is not set
-CONFIG_USB=m
-CONFIG_USB_MON=m
-CONFIG_USB_PRINTER=m
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_EXT2_FS=y
-CONFIG_AUTOFS_FS=y
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_MSDOS_FS=m
-CONFIG_VFAT_FS=m
-CONFIG_ADFS_FS=m
-CONFIG_NFS_FS=y
-CONFIG_ROOT_NFS=y
-CONFIG_NFSD=m
-CONFIG_NLS=y
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_DEBUG_USER=y
diff --git a/arch/arm/configs/netwinder_defconfig b/arch/arm/configs/netwinder_defconfig
deleted file mode 100644
index 77d4a2b5916b..000000000000
--- a/arch/arm/configs/netwinder_defconfig
+++ /dev/null
@@ -1,88 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_EXPERT=y
-CONFIG_ARCH_MULTI_V4=y
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_FOOTBRIDGE=y
-CONFIG_ARCH_NETWINDER=y
-# CONFIG_AEABI is not set
-CONFIG_ATAGS=y
-CONFIG_DEPRECATED_PARAM_STRUCT=y
-CONFIG_CMDLINE="root=0x801"
-CONFIG_FPE_NWFPE=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_IP_PNP_RARP=y
-# CONFIG_IPV6 is not set
-CONFIG_NETFILTER=y
-CONFIG_IP_NF_IPTABLES=y
-CONFIG_PARPORT=y
-CONFIG_PARPORT_PC=y
-CONFIG_PARPORT_PC_SUPERIO=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_ATA=y
-CONFIG_PATA_WINBOND=y
-CONFIG_NETDEVICES=y
-CONFIG_MII=y
-CONFIG_NET_TULIP=y
-CONFIG_TULIP=y
-CONFIG_TULIP_MMIO=y
-CONFIG_NET_PCI=y
-CONFIG_NE2K_PCI=y
-CONFIG_MOUSE_SERIAL=y
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=y
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_PRINTER=y
-CONFIG_DS1620=y
-CONFIG_NWBUTTON=y
-CONFIG_NWBUTTON_REBOOT=y
-CONFIG_NWFLASH=y
-CONFIG_WATCHDOG=y
-CONFIG_977_WATCHDOG=y
-CONFIG_FB=y
-CONFIG_FB_CYBER2000=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_LOGO=y
-CONFIG_SOUND=y
-CONFIG_SOUND_PRIME=y
-CONFIG_SOUND_OSS=y
-CONFIG_SOUND_TRACEINIT=y
-CONFIG_SOUND_DMAP=y
-CONFIG_SOUND_YM3812=y
-CONFIG_SOUND_WAVEARTIST=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_EXT2_FS=y
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_TMPFS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_NFS_V4=y
-CONFIG_ROOT_NFS=y
-CONFIG_NFSD=y
-CONFIG_SMB_FS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_CODEPAGE_852=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=y
-CONFIG_NLS_ISO8859_15=y
-CONFIG_NLS_UTF8=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_USER=y
diff --git a/arch/arm/include/asm/hardware/dec21285.h b/arch/arm/include/asm/hardware/dec21285.h
deleted file mode 100644
index 894f2a635cbb..000000000000
--- a/arch/arm/include/asm/hardware/dec21285.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/include/asm/hardware/dec21285.h
- *
- *  Copyright (C) 1998 Russell King
- *
- *  DC21285 registers
- */
-#define DC21285_PCI_IACK		0x79000000
-#define DC21285_ARMCSR_BASE		0x42000000
-#define DC21285_PCI_TYPE_0_CONFIG	0x7b000000
-#define DC21285_PCI_TYPE_1_CONFIG	0x7a000000
-#define DC21285_OUTBOUND_WRITE_FLUSH	0x78000000
-#define DC21285_FLASH			0x41000000
-#define DC21285_PCI_IO			0x7c000000
-#define DC21285_PCI_MEM			0x80000000
-
-#ifndef __ASSEMBLY__
-#include <mach/hardware.h>
-#define DC21285_IO(x)		((volatile unsigned long *)(ARMCSR_BASE+(x)))
-#else
-#define DC21285_IO(x)		(x)
-#endif
-
-/*
- * The footbridge is programmed to expose the system RAM at 0xe0000000.
- * The requirement is that the RAM isn't placed at bus address 0, which
- * would clash with VGA cards.
- */
-#define BUS_OFFSET 0xe0000000
-
-#define CSR_PCICMD		DC21285_IO(0x0004)
-#define CSR_CLASSREV		DC21285_IO(0x0008)
-#define CSR_PCICACHELINESIZE	DC21285_IO(0x000c)
-#define CSR_PCICSRBASE		DC21285_IO(0x0010)
-#define CSR_PCICSRIOBASE	DC21285_IO(0x0014)
-#define CSR_PCISDRAMBASE	DC21285_IO(0x0018)
-#define CSR_PCIROMBASE		DC21285_IO(0x0030)
-#define CSR_MBOX0		DC21285_IO(0x0050)
-#define CSR_MBOX1		DC21285_IO(0x0054)
-#define CSR_MBOX2		DC21285_IO(0x0058)
-#define CSR_MBOX3		DC21285_IO(0x005c)
-#define CSR_DOORBELL		DC21285_IO(0x0060)
-#define CSR_DOORBELL_SETUP	DC21285_IO(0x0064)
-#define CSR_ROMWRITEREG		DC21285_IO(0x0068)
-#define CSR_CSRBASEMASK		DC21285_IO(0x00f8)
-#define CSR_CSRBASEOFFSET	DC21285_IO(0x00fc)
-#define CSR_SDRAMBASEMASK	DC21285_IO(0x0100)
-#define CSR_SDRAMBASEOFFSET	DC21285_IO(0x0104)
-#define CSR_ROMBASEMASK		DC21285_IO(0x0108)
-#define CSR_SDRAMTIMING		DC21285_IO(0x010c)
-#define CSR_SDRAMADDRSIZE0	DC21285_IO(0x0110)
-#define CSR_SDRAMADDRSIZE1	DC21285_IO(0x0114)
-#define CSR_SDRAMADDRSIZE2	DC21285_IO(0x0118)
-#define CSR_SDRAMADDRSIZE3	DC21285_IO(0x011c)
-#define CSR_I2O_INFREEHEAD	DC21285_IO(0x0120)
-#define CSR_I2O_INPOSTTAIL	DC21285_IO(0x0124)
-#define CSR_I2O_OUTPOSTHEAD	DC21285_IO(0x0128)
-#define CSR_I2O_OUTFREETAIL	DC21285_IO(0x012c)
-#define CSR_I2O_INFREECOUNT	DC21285_IO(0x0130)
-#define CSR_I2O_OUTPOSTCOUNT	DC21285_IO(0x0134)
-#define CSR_I2O_INPOSTCOUNT	DC21285_IO(0x0138)
-#define CSR_SA110_CNTL		DC21285_IO(0x013c)
-#define SA110_CNTL_INITCMPLETE		(1 << 0)
-#define SA110_CNTL_ASSERTSERR		(1 << 1)
-#define SA110_CNTL_RXSERR		(1 << 3)
-#define SA110_CNTL_SA110DRAMPARITY	(1 << 4)
-#define SA110_CNTL_PCISDRAMPARITY	(1 << 5)
-#define SA110_CNTL_DMASDRAMPARITY	(1 << 6)
-#define SA110_CNTL_DISCARDTIMER		(1 << 8)
-#define SA110_CNTL_PCINRESET		(1 << 9)
-#define SA110_CNTL_I2O_256		(0 << 10)
-#define SA110_CNTL_I20_512		(1 << 10)
-#define SA110_CNTL_I2O_1024		(2 << 10)
-#define SA110_CNTL_I2O_2048		(3 << 10)
-#define SA110_CNTL_I2O_4096		(4 << 10)
-#define SA110_CNTL_I2O_8192		(5 << 10)
-#define SA110_CNTL_I2O_16384		(6 << 10)
-#define SA110_CNTL_I2O_32768		(7 << 10)
-#define SA110_CNTL_WATCHDOG		(1 << 13)
-#define SA110_CNTL_ROMWIDTH_UNDEF	(0 << 14)
-#define SA110_CNTL_ROMWIDTH_16		(1 << 14)
-#define SA110_CNTL_ROMWIDTH_32		(2 << 14)
-#define SA110_CNTL_ROMWIDTH_8		(3 << 14)
-#define SA110_CNTL_ROMACCESSTIME(x)	((x)<<16)
-#define SA110_CNTL_ROMBURSTTIME(x)	((x)<<20)
-#define SA110_CNTL_ROMTRISTATETIME(x)	((x)<<24)
-#define SA110_CNTL_XCSDIR(x)		((x)<<28)
-#define SA110_CNTL_PCICFN		(1 << 31)
-
-#define CSR_PCIADDR_EXTN	DC21285_IO(0x0140)
-#define CSR_PREFETCHMEMRANGE	DC21285_IO(0x0144)
-#define CSR_XBUS_CYCLE		DC21285_IO(0x0148)
-#define CSR_XBUS_IOSTROBE	DC21285_IO(0x014c)
-#define CSR_DOORBELL_PCI	DC21285_IO(0x0150)
-#define CSR_DOORBELL_SA110	DC21285_IO(0x0154)
-#define CSR_UARTDR		DC21285_IO(0x0160)
-#define CSR_RXSTAT		DC21285_IO(0x0164)
-#define CSR_H_UBRLCR		DC21285_IO(0x0168)
-#define CSR_M_UBRLCR		DC21285_IO(0x016c)
-#define CSR_L_UBRLCR		DC21285_IO(0x0170)
-#define CSR_UARTCON		DC21285_IO(0x0174)
-#define CSR_UARTFLG		DC21285_IO(0x0178)
-#define CSR_IRQ_STATUS		DC21285_IO(0x0180)
-#define CSR_IRQ_RAWSTATUS	DC21285_IO(0x0184)
-#define CSR_IRQ_ENABLE		DC21285_IO(0x0188)
-#define CSR_IRQ_DISABLE		DC21285_IO(0x018c)
-#define CSR_IRQ_SOFT		DC21285_IO(0x0190)
-#define CSR_FIQ_STATUS		DC21285_IO(0x0280)
-#define CSR_FIQ_RAWSTATUS	DC21285_IO(0x0284)
-#define CSR_FIQ_ENABLE		DC21285_IO(0x0288)
-#define CSR_FIQ_DISABLE		DC21285_IO(0x028c)
-#define CSR_FIQ_SOFT		DC21285_IO(0x0290)
-#define CSR_TIMER1_LOAD		DC21285_IO(0x0300)
-#define CSR_TIMER1_VALUE	DC21285_IO(0x0304)
-#define CSR_TIMER1_CNTL		DC21285_IO(0x0308)
-#define CSR_TIMER1_CLR		DC21285_IO(0x030c)
-#define CSR_TIMER2_LOAD		DC21285_IO(0x0320)
-#define CSR_TIMER2_VALUE	DC21285_IO(0x0324)
-#define CSR_TIMER2_CNTL		DC21285_IO(0x0328)
-#define CSR_TIMER2_CLR		DC21285_IO(0x032c)
-#define CSR_TIMER3_LOAD		DC21285_IO(0x0340)
-#define CSR_TIMER3_VALUE	DC21285_IO(0x0344)
-#define CSR_TIMER3_CNTL		DC21285_IO(0x0348)
-#define CSR_TIMER3_CLR		DC21285_IO(0x034c)
-#define CSR_TIMER4_LOAD		DC21285_IO(0x0360)
-#define CSR_TIMER4_VALUE	DC21285_IO(0x0364)
-#define CSR_TIMER4_CNTL		DC21285_IO(0x0368)
-#define CSR_TIMER4_CLR		DC21285_IO(0x036c)
-
-#define TIMER_CNTL_ENABLE	(1 << 7)
-#define TIMER_CNTL_AUTORELOAD	(1 << 6)
-#define TIMER_CNTL_DIV1		(0)
-#define TIMER_CNTL_DIV16	(1 << 2)
-#define TIMER_CNTL_DIV256	(2 << 2)
-#define TIMER_CNTL_CNTEXT	(3 << 2)
-
-
diff --git a/arch/arm/include/asm/mach/pci.h b/arch/arm/include/asm/mach/pci.h
index ea9bd08895b7..78f2318ed000 100644
--- a/arch/arm/include/asm/mach/pci.h
+++ b/arch/arm/include/asm/mach/pci.h
@@ -61,15 +61,6 @@ static inline void pci_common_init(struct hw_pci *hw)
 	pci_common_init_dev(NULL, hw);
 }
 
-/*
- * Setup early fixed I/O mapping.
- */
-#if defined(CONFIG_PCI)
-extern void pci_map_io_early(unsigned long pfn);
-#else
-static inline void pci_map_io_early(unsigned long pfn) {}
-#endif
-
 /*
  * PCI controllers
  */
@@ -78,9 +69,4 @@ extern int iop3xx_pci_setup(int nr, struct pci_sys_data *);
 extern void iop3xx_pci_preinit(void);
 extern void iop3xx_pci_preinit_cond(void);
 
-extern struct pci_ops dc21285_ops;
-extern int dc21285_setup(int nr, struct pci_sys_data *);
-extern void dc21285_preinit(void);
-extern void dc21285_postinit(void);
-
 #endif /* __ASM_MACH_PCI_H */
diff --git a/arch/arm/include/debug/dc21285.S b/arch/arm/include/debug/dc21285.S
deleted file mode 100644
index 4ec0e5e31704..000000000000
--- a/arch/arm/include/debug/dc21285.S
+++ /dev/null
@@ -1,41 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* arch/arm/mach-footbridge/include/mach/debug-macro.S
- *
- * Debugging macro include header
- *
- *  Copyright (C) 1994-1999 Russell King
- *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
-*/
-
-#include <asm/hardware/dec21285.h>
-
-#include <mach/hardware.h>
-	/* For EBSA285 debugging */
-		.equ	dc21285_high, ARMCSR_BASE & 0xff000000
-		.equ	dc21285_low,  ARMCSR_BASE & 0x00ffffff
-
-		.macro	addruart, rp, rv, tmp
-		.if	dc21285_low
-		mov	\rp, #dc21285_low
-		.else
-		mov	\rp, #0
-		.endif
-		orr	\rv, \rp, #dc21285_high
-		orr	\rp, \rp, #0x42000000
-		.endm
-
-		.macro	senduart,rd,rx
-		str	\rd, [\rx, #0x160]	@ UARTDR
-		.endm
-
-		.macro	busyuart,rd,rx
-1001:		ldr	\rd, [\rx, #0x178]	@ UARTFLG
-		tst	\rd, #1 << 3
-		bne	1001b
-		.endm
-
-		.macro	waituartcts,rd,rx
-		.endm
-
-		.macro	waituarttxrdy,rd,rx
-		.endm
diff --git a/arch/arm/kernel/atags_parse.c b/arch/arm/kernel/atags_parse.c
index 4ec591bde3df..9865ec7f90d9 100644
--- a/arch/arm/kernel/atags_parse.c
+++ b/arch/arm/kernel/atags_parse.c
@@ -69,24 +69,6 @@ static int __init parse_tag_mem32(const struct tag *tag)
 
 __tagtable(ATAG_MEM, parse_tag_mem32);
 
-#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_VGA_CONSOLE)
-static int __init parse_tag_videotext(const struct tag *tag)
-{
-	vgacon_screen_info.orig_x            = tag->u.videotext.x;
-	vgacon_screen_info.orig_y            = tag->u.videotext.y;
-	vgacon_screen_info.orig_video_page   = tag->u.videotext.video_page;
-	vgacon_screen_info.orig_video_mode   = tag->u.videotext.video_mode;
-	vgacon_screen_info.orig_video_cols   = tag->u.videotext.video_cols;
-	vgacon_screen_info.orig_video_ega_bx = tag->u.videotext.video_ega_bx;
-	vgacon_screen_info.orig_video_lines  = tag->u.videotext.video_lines;
-	vgacon_screen_info.orig_video_isVGA  = tag->u.videotext.video_isvga;
-	vgacon_screen_info.orig_video_points = tag->u.videotext.video_points;
-	return 0;
-}
-
-__tagtable(ATAG_VIDEOTEXT, parse_tag_videotext);
-#endif
-
 #ifdef CONFIG_BLK_DEV_RAM
 static int __init parse_tag_ramdisk(const struct tag *tag)
 {
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index ac0e890510da..6256b75f8285 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -582,15 +582,3 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
 
 	return start;
 }
-
-void __init pci_map_io_early(unsigned long pfn)
-{
-	struct map_desc pci_io_desc = {
-		.virtual	= PCI_IO_VIRT_BASE,
-		.type		= MT_DEVICE,
-		.length		= SZ_64K,
-	};
-
-	pci_io_desc.pfn = pfn;
-	iotable_init(&pci_io_desc, 1);
-}
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index f22c50d4bd41..b12fe41e579b 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -347,16 +347,6 @@ __create_page_tables:
 	/* we don't need any serial debugging mappings */
 	ldr	r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags
 #endif
-
-#if defined(CONFIG_ARCH_NETWINDER)
-	/*
-	 * If we're using the NetWinder or CATS, we also need to map
-	 * in the 16550-type serial port for the debug messages
-	 */
-	add	r0, r4, #0xff000000 >> (SECTION_SHIFT - PMD_ENTRY_ORDER)
-	orr	r3, r7, #0x7c000000
-	str	r3, [r0]
-#endif
 #ifdef CONFIG_ARCH_RPC
 	/*
 	 * Map in screen at 0x02000000 & SCREEN2_BASE
diff --git a/arch/arm/mach-footbridge/Kconfig b/arch/arm/mach-footbridge/Kconfig
deleted file mode 100644
index 96a74d447028..000000000000
--- a/arch/arm/mach-footbridge/Kconfig
+++ /dev/null
@@ -1,57 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-menuconfig ARCH_FOOTBRIDGE
-	bool "FootBridge Implementations (DEPRECATED)"
-	depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5)
-	depends on !(ARCH_MOXART || ARCH_GEMINI || ARCH_SA1100)
-	depends on ATAGS
-	depends on CPU_LITTLE_ENDIAN
-	depends on MMU
-	select ARCH_NO_SG_CHAIN
-	select CPU_SA110
-	select FOOTBRIDGE
-	select NEED_MACH_MEMORY_H
-	help
-	  Support for systems based on the DC21285 companion chip
-	  ("FootBridge"), used in the EBSA285 and the Rebel NetWinder.
-
-	  Support for these machines will go away in 2027,
-	  unless there are any remaining users that speak up.
-
-if ARCH_FOOTBRIDGE
-
-config ARCH_EBSA285_HOST
-	bool "EBSA285 (host mode)"
-	select ARCH_EBSA285
-	select ISA
-	select ARCH_MAY_HAVE_PC_FDC
-	select FORCE_PCI
-	help
-	  Say Y here if you intend to run this kernel on the EBSA285 card
-	  in host ("central function") mode.
-
-	  Saying N will reduce the size of the Footbridge kernel.
-
-config ARCH_NETWINDER
-	bool "NetWinder"
-	select CLKEVT_I8253
-	select CLKSRC_I8253
-	select ISA
-	select FORCE_PCI
-	help
-	  Say Y here if you intend to run this kernel on the Rebel.COM
-	  NetWinder.  Information about this machine can be found at:
-
-	  <http://www.netwinder.org/>
-
-	  Saying N will reduce the size of the Footbridge kernel.
-
-# Footbridge support
-config FOOTBRIDGE
-	def_bool y
-	select ARCH_MIGHT_HAVE_PC_SERIO
-	select ISA_DMA_API
-
-config ARCH_EBSA285
-	bool
-
-endif
diff --git a/arch/arm/mach-footbridge/Makefile b/arch/arm/mach-footbridge/Makefile
deleted file mode 100644
index 1553cc01b45c..000000000000
--- a/arch/arm/mach-footbridge/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# Makefile for the linux kernel.
-#
-
-# Object file lists.
-
-obj-y			:= common.o isa-irq.o isa.o isa-rtc.o dma-isa.o
-
-pci-y			+= dc21285.o
-pci-$(CONFIG_ARCH_EBSA285) += ebsa285-pci.o
-pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o
-
-obj-$(CONFIG_ARCH_EBSA285) += ebsa285.o dc21285-timer.o
-obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o
-
-obj-$(CONFIG_PCI)	+=$(pci-y)
-
diff --git a/arch/arm/mach-footbridge/common.c b/arch/arm/mach-footbridge/common.c
deleted file mode 100644
index 85c598708c10..000000000000
--- a/arch/arm/mach-footbridge/common.c
+++ /dev/null
@@ -1,280 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-footbridge/common.c
- *
- *  Copyright (C) 1998-2000 Russell King, Dave Gilbert.
- */
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/mm.h>
-#include <linux/ioport.h>
-#include <linux/list.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-#include <linux/dma-direct.h>
-#include <video/vga.h>
-
-#include <asm/page.h>
-#include <asm/irq.h>
-#include <asm/mach-types.h>
-#include <asm/setup.h>
-#include <asm/system_misc.h>
-#include <asm/hardware/dec21285.h>
-
-#include <asm/mach/irq.h>
-#include <asm/mach/map.h>
-#include <asm/mach/pci.h>
-
-#include "common.h"
-
-#include <mach/hardware.h>
-#include <mach/irqs.h>
-#include <asm/hardware/dec21285.h>
-
-static int dc21285_get_irq(void)
-{
-	void __iomem *irqstatus = (void __iomem *)CSR_IRQ_STATUS;
-	u32 mask = readl(irqstatus);
-
-	if (mask & IRQ_MASK_SDRAMPARITY)
-		return IRQ_SDRAMPARITY;
-
-	if (mask & IRQ_MASK_UART_RX)
-		return IRQ_CONRX;
-
-	if (mask & IRQ_MASK_DMA1)
-		return IRQ_DMA1;
-
-	if (mask & IRQ_MASK_DMA2)
-		return IRQ_DMA2;
-
-	if (mask & IRQ_MASK_IN0)
-		return IRQ_IN0;
-
-	if (mask & IRQ_MASK_IN1)
-		return IRQ_IN1;
-
-	if (mask & IRQ_MASK_IN2)
-		return IRQ_IN2;
-
-	if (mask & IRQ_MASK_IN3)
-		return IRQ_IN3;
-
-	if (mask & IRQ_MASK_PCI)
-		return IRQ_PCI;
-
-	if (mask & IRQ_MASK_DOORBELLHOST)
-		return IRQ_DOORBELLHOST;
-
-	if (mask & IRQ_MASK_I2OINPOST)
-		return IRQ_I2OINPOST;
-
-	if (mask & IRQ_MASK_TIMER1)
-		return IRQ_TIMER1;
-
-	if (mask & IRQ_MASK_TIMER2)
-		return IRQ_TIMER2;
-
-	if (mask & IRQ_MASK_TIMER3)
-		return IRQ_TIMER3;
-
-	if (mask & IRQ_MASK_UART_TX)
-		return IRQ_CONTX;
-
-	if (mask & IRQ_MASK_PCI_ABORT)
-		return IRQ_PCI_ABORT;
-
-	if (mask & IRQ_MASK_PCI_SERR)
-		return IRQ_PCI_SERR;
-
-	if (mask & IRQ_MASK_DISCARD_TIMER)
-		return IRQ_DISCARD_TIMER;
-
-	if (mask & IRQ_MASK_PCI_DPERR)
-		return IRQ_PCI_DPERR;
-
-	if (mask & IRQ_MASK_PCI_PERR)
-		return IRQ_PCI_PERR;
-
-	return 0;
-}
-
-static void dc21285_handle_irq(struct pt_regs *regs)
-{
-	int irq;
-	do {
-		irq = dc21285_get_irq();
-		if (!irq)
-			break;
-
-		generic_handle_irq(irq);
-	} while (1);
-}
-
-
-unsigned int mem_fclk_21285 = 50000000;
-
-EXPORT_SYMBOL(mem_fclk_21285);
-
-static int __init early_fclk(char *arg)
-{
-	mem_fclk_21285 = simple_strtoul(arg, NULL, 0);
-	return 0;
-}
-
-early_param("mem_fclk_21285", early_fclk);
-
-static int __init parse_tag_memclk(const struct tag *tag)
-{
-	mem_fclk_21285 = tag->u.memclk.fmemclk;
-	return 0;
-}
-
-__tagtable(ATAG_MEMCLK, parse_tag_memclk);
-
-/*
- * Footbridge IRQ translation table
- *  Converts from our IRQ numbers into FootBridge masks
- */
-static const int fb_irq_mask[] = {
-	IRQ_MASK_UART_RX,	/*  0 */
-	IRQ_MASK_UART_TX,	/*  1 */
-	IRQ_MASK_TIMER1,	/*  2 */
-	IRQ_MASK_TIMER2,	/*  3 */
-	IRQ_MASK_TIMER3,	/*  4 */
-	IRQ_MASK_IN0,		/*  5 */
-	IRQ_MASK_IN1,		/*  6 */
-	IRQ_MASK_IN2,		/*  7 */
-	IRQ_MASK_IN3,		/*  8 */
-	IRQ_MASK_DOORBELLHOST,	/*  9 */
-	IRQ_MASK_DMA1,		/* 10 */
-	IRQ_MASK_DMA2,		/* 11 */
-	IRQ_MASK_PCI,		/* 12 */
-	IRQ_MASK_SDRAMPARITY,	/* 13 */
-	IRQ_MASK_I2OINPOST,	/* 14 */
-	IRQ_MASK_PCI_ABORT,	/* 15 */
-	IRQ_MASK_PCI_SERR,	/* 16 */
-	IRQ_MASK_DISCARD_TIMER,	/* 17 */
-	IRQ_MASK_PCI_DPERR,	/* 18 */
-	IRQ_MASK_PCI_PERR,	/* 19 */
-};
-
-static void fb_mask_irq(struct irq_data *d)
-{
-	*CSR_IRQ_DISABLE = fb_irq_mask[_DC21285_INR(d->irq)];
-}
-
-static void fb_unmask_irq(struct irq_data *d)
-{
-	*CSR_IRQ_ENABLE = fb_irq_mask[_DC21285_INR(d->irq)];
-}
-
-static struct irq_chip fb_chip = {
-	.irq_ack	= fb_mask_irq,
-	.irq_mask	= fb_mask_irq,
-	.irq_unmask	= fb_unmask_irq,
-};
-
-static void __init __fb_init_irq(void)
-{
-	unsigned int irq;
-
-	/*
-	 * setup DC21285 IRQs
-	 */
-	*CSR_IRQ_DISABLE = -1;
-	*CSR_FIQ_DISABLE = -1;
-
-	for (irq = _DC21285_IRQ(0); irq < _DC21285_IRQ(20); irq++) {
-		irq_set_chip_and_handler(irq, &fb_chip, handle_level_irq);
-		irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
-	}
-}
-
-void __init footbridge_init_irq(void)
-{
-	set_handle_irq(dc21285_handle_irq);
-
-	__fb_init_irq();
-
-	if (machine_is_ebsa285())
-		/* The following is dependent on which slot
-		 * you plug the Southbridge card into.  We
-		 * currently assume that you plug it into
-		 * the right-hand most slot.
-		 */
-		isa_init_irq(IRQ_PCI);
-
-	if (machine_is_netwinder())
-		isa_init_irq(IRQ_IN3);
-}
-
-/*
- * Common mapping for all systems.  Note that the outbound write flush is
- * commented out since there is a "No Fix" problem with it.  Not mapping
- * it means that we have extra bullet protection on our feet.
- */
-static struct map_desc ebsa285_host_io_desc[] __initdata = {
-	{
-		.virtual	= ARMCSR_BASE,
-		.pfn		= __phys_to_pfn(DC21285_ARMCSR_BASE),
-		.length		= ARMCSR_SIZE,
-		.type		= MT_DEVICE,
-	},
-	{
-		.virtual	= PCIMEM_BASE,
-		.pfn		= __phys_to_pfn(DC21285_PCI_MEM),
-		.length		= PCIMEM_SIZE,
-		.type		= MT_DEVICE,
-	}, {
-		.virtual	= PCICFG0_BASE,
-		.pfn		= __phys_to_pfn(DC21285_PCI_TYPE_0_CONFIG),
-		.length		= PCICFG0_SIZE,
-		.type		= MT_DEVICE,
-	}, {
-		.virtual	= PCICFG1_BASE,
-		.pfn		= __phys_to_pfn(DC21285_PCI_TYPE_1_CONFIG),
-		.length		= PCICFG1_SIZE,
-		.type		= MT_DEVICE,
-	}, {
-		.virtual	= PCIIACK_BASE,
-		.pfn		= __phys_to_pfn(DC21285_PCI_IACK),
-		.length		= PCIIACK_SIZE,
-		.type		= MT_DEVICE,
-	},
-};
-
-void __init footbridge_map_io(void)
-{
-	iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc));
-	pci_map_io_early(__phys_to_pfn(DC21285_PCI_IO));
-	vga_base = PCIMEM_BASE;
-}
-
-void footbridge_restart(enum reboot_mode mode, const char *cmd)
-{
-	if (mode == REBOOT_SOFT) {
-		/* Jump into the ROM */
-		soft_restart(0x41000000);
-	} else {
-		/*
-		 * Force the watchdog to do a CPU reset.
-		 *
-		 * After making sure that the watchdog is disabled
-		 * (so we can change the timer registers) we first
-		 * enable the timer to autoreload itself.  Next, the
-		 * timer interval is set really short and any
-		 * current interrupt request is cleared (so we can
-		 * see an edge transition).  Finally, TIMER4 is
-		 * enabled as the watchdog.
-		 */
-		*CSR_SA110_CNTL &= ~(1 << 13);
-		*CSR_TIMER4_CNTL = TIMER_CNTL_ENABLE |
-				   TIMER_CNTL_AUTORELOAD |
-				   TIMER_CNTL_DIV16;
-		*CSR_TIMER4_LOAD = 0x2;
-		*CSR_TIMER4_CLR  = 0;
-		*CSR_SA110_CNTL |= (1 << 13);
-	}
-}
diff --git a/arch/arm/mach-footbridge/common.h b/arch/arm/mach-footbridge/common.h
deleted file mode 100644
index e12587db59c4..000000000000
--- a/arch/arm/mach-footbridge/common.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#include <linux/reboot.h>
-
-extern void footbridge_timer_init(void);
-extern void isa_timer_init(void);
-
-extern void isa_rtc_init(void);
-
-extern void footbridge_map_io(void);
-extern void footbridge_init_irq(void);
-
-extern void isa_init_irq(unsigned int irq);
-extern void footbridge_restart(enum reboot_mode, const char *);
-
-extern void footbridge_sched_clock(void);
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c
deleted file mode 100644
index 2908c9ef3c9b..000000000000
--- a/arch/arm/mach-footbridge/dc21285-timer.c
+++ /dev/null
@@ -1,136 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- *  linux/arch/arm/mach-footbridge/dc21285-timer.c
- *
- *  Copyright (C) 1998 Russell King.
- *  Copyright (C) 1998 Phil Blundell
- */
-#include <linux/clockchips.h>
-#include <linux/clocksource.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/sched_clock.h>
-
-#include <asm/irq.h>
-
-#include <asm/hardware/dec21285.h>
-#include <asm/mach/time.h>
-#include <asm/system_info.h>
-
-#include "common.h"
-
-static u64 cksrc_dc21285_read(struct clocksource *cs)
-{
-	return cs->mask - *CSR_TIMER2_VALUE;
-}
-
-static int cksrc_dc21285_enable(struct clocksource *cs)
-{
-	*CSR_TIMER2_LOAD = cs->mask;
-	*CSR_TIMER2_CLR = 0;
-	*CSR_TIMER2_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_DIV16;
-	return 0;
-}
-
-static void cksrc_dc21285_disable(struct clocksource *cs)
-{
-	*CSR_TIMER2_CNTL = 0;
-}
-
-static struct clocksource cksrc_dc21285 = {
-	.name		= "dc21285_timer2",
-	.rating		= 200,
-	.read		= cksrc_dc21285_read,
-	.enable		= cksrc_dc21285_enable,
-	.disable	= cksrc_dc21285_disable,
-	.mask		= CLOCKSOURCE_MASK(24),
-	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,
-};
-
-static int ckevt_dc21285_set_next_event(unsigned long delta,
-	struct clock_event_device *c)
-{
-	*CSR_TIMER1_CLR = 0;
-	*CSR_TIMER1_LOAD = delta;
-	*CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_DIV16;
-
-	return 0;
-}
-
-static int ckevt_dc21285_shutdown(struct clock_event_device *c)
-{
-	*CSR_TIMER1_CNTL = 0;
-	return 0;
-}
-
-static int ckevt_dc21285_set_periodic(struct clock_event_device *c)
-{
-	*CSR_TIMER1_CLR = 0;
-	*CSR_TIMER1_LOAD = (mem_fclk_21285 + 8 * HZ) / (16 * HZ);
-	*CSR_TIMER1_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_AUTORELOAD |
-			   TIMER_CNTL_DIV16;
-	return 0;
-}
-
-static struct clock_event_device ckevt_dc21285 = {
-	.name			= "dc21285_timer1",
-	.features		= CLOCK_EVT_FEAT_PERIODIC |
-				  CLOCK_EVT_FEAT_ONESHOT,
-	.rating			= 200,
-	.irq			= IRQ_TIMER1,
-	.set_next_event		= ckevt_dc21285_set_next_event,
-	.set_state_shutdown	= ckevt_dc21285_shutdown,
-	.set_state_periodic	= ckevt_dc21285_set_periodic,
-	.set_state_oneshot	= ckevt_dc21285_shutdown,
-	.tick_resume		= ckevt_dc21285_set_periodic,
-};
-
-static irqreturn_t timer1_interrupt(int irq, void *dev_id)
-{
-	struct clock_event_device *ce = dev_id;
-
-	*CSR_TIMER1_CLR = 0;
-
-	/* Stop the timer if in one-shot mode */
-	if (clockevent_state_oneshot(ce))
-		*CSR_TIMER1_CNTL = 0;
-
-	ce->event_handler(ce);
-
-	return IRQ_HANDLED;
-}
-
-/*
- * Set up timer interrupt.
- */
-void __init footbridge_timer_init(void)
-{
-	struct clock_event_device *ce = &ckevt_dc21285;
-	unsigned rate = DIV_ROUND_CLOSEST(mem_fclk_21285, 16);
-
-	clocksource_register_hz(&cksrc_dc21285, rate);
-
-	if (request_irq(ce->irq, timer1_interrupt, IRQF_TIMER | IRQF_IRQPOLL,
-			"dc21285_timer1", &ckevt_dc21285))
-		pr_err("Failed to request irq %d (dc21285_timer1)", ce->irq);
-
-	ce->cpumask = cpumask_of(smp_processor_id());
-	clockevents_config_and_register(ce, rate, 0x4, 0xffffff);
-}
-
-static u64 notrace footbridge_read_sched_clock(void)
-{
-	return ~*CSR_TIMER3_VALUE;
-}
-
-void __init footbridge_sched_clock(void)
-{
-	unsigned rate = DIV_ROUND_CLOSEST(mem_fclk_21285, 16);
-
-	*CSR_TIMER3_LOAD = 0;
-	*CSR_TIMER3_CLR = 0;
-	*CSR_TIMER3_CNTL = TIMER_CNTL_ENABLE | TIMER_CNTL_DIV16;
-
-	sched_clock_register(footbridge_read_sched_clock, 24, rate);
-}
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c
deleted file mode 100644
index e1b336624883..000000000000
--- a/arch/arm/mach-footbridge/dc21285.c
+++ /dev/null
@@ -1,360 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/kernel/dec21285.c: PCI functions for DC21285
- *
- *  Copyright (C) 1998-2001 Russell King
- *  Copyright (C) 1998-2000 Phil Blundell
- */
-#include <linux/dma-map-ops.h>
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/interrupt.h>
-#include <linux/mm.h>
-#include <linux/slab.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/irq.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-
-#include <asm/irq.h>
-#include <asm/mach/pci.h>
-#include <asm/hardware/dec21285.h>
-
-#define MAX_SLOTS		21
-
-#define PCICMD_ABORT		((PCI_STATUS_REC_MASTER_ABORT| \
-				  PCI_STATUS_REC_TARGET_ABORT)<<16)
-
-#define PCICMD_ERROR_BITS	((PCI_STATUS_DETECTED_PARITY | \
-				  PCI_STATUS_REC_MASTER_ABORT | \
-				  PCI_STATUS_REC_TARGET_ABORT | \
-				  PCI_STATUS_PARITY) << 16)
-
-extern int setup_arm_irq(int, struct irqaction *);
-
-static unsigned long
-dc21285_base_address(struct pci_bus *bus, unsigned int devfn)
-{
-	unsigned long addr = 0;
-
-	if (bus->number == 0) {
-		if (PCI_SLOT(devfn) == 0)
-			/*
-			 * For devfn 0, point at the 21285
-			 */
-			addr = ARMCSR_BASE;
-		else {
-			devfn -= 1 << 3;
-
-			if (devfn < PCI_DEVFN(MAX_SLOTS, 0))
-				addr = PCICFG0_BASE | 0xc00000 | (devfn << 8);
-		}
-	} else
-		addr = PCICFG1_BASE | (bus->number << 16) | (devfn << 8);
-
-	return addr;
-}
-
-static int
-dc21285_read_config(struct pci_bus *bus, unsigned int devfn, int where,
-		    int size, u32 *value)
-{
-	unsigned long addr = dc21285_base_address(bus, devfn);
-	u32 v = 0xffffffff;
-
-	if (addr)
-		switch (size) {
-		case 1:
-			asm volatile("ldrb	%0, [%1, %2]"
-				: "=r" (v) : "r" (addr), "r" (where) : "cc");
-			break;
-		case 2:
-			asm volatile("ldrh	%0, [%1, %2]"
-				: "=r" (v) : "r" (addr), "r" (where) : "cc");
-			break;
-		case 4:
-			asm volatile("ldr	%0, [%1, %2]"
-				: "=r" (v) : "r" (addr), "r" (where) : "cc");
-			break;
-		}
-
-	*value = v;
-
-	v = *CSR_PCICMD;
-	if (v & PCICMD_ABORT) {
-		*CSR_PCICMD = v & (0xffff|PCICMD_ABORT);
-		return -1;
-	}
-
-	return PCIBIOS_SUCCESSFUL;
-}
-
-static int
-dc21285_write_config(struct pci_bus *bus, unsigned int devfn, int where,
-		     int size, u32 value)
-{
-	unsigned long addr = dc21285_base_address(bus, devfn);
-	u32 v;
-
-	if (addr)
-		switch (size) {
-		case 1:
-			asm volatile("strb	%0, [%1, %2]"
-				: : "r" (value), "r" (addr), "r" (where)
-				: "cc");
-			break;
-		case 2:
-			asm volatile("strh	%0, [%1, %2]"
-				: : "r" (value), "r" (addr), "r" (where)
-				: "cc");
-			break;
-		case 4:
-			asm volatile("str	%0, [%1, %2]"
-				: : "r" (value), "r" (addr), "r" (where)
-				: "cc");
-			break;
-		}
-
-	v = *CSR_PCICMD;
-	if (v & PCICMD_ABORT) {
-		*CSR_PCICMD = v & (0xffff|PCICMD_ABORT);
-		return -1;
-	}
-
-	return PCIBIOS_SUCCESSFUL;
-}
-
-struct pci_ops dc21285_ops = {
-	.read	= dc21285_read_config,
-	.write	= dc21285_write_config,
-};
-
-static struct timer_list serr_timer;
-static struct timer_list perr_timer;
-
-static void dc21285_enable_error(struct timer_list *timer)
-{
-	timer_delete(timer);
-
-	if (timer == &serr_timer)
-		enable_irq(IRQ_PCI_SERR);
-	else if (timer == &perr_timer)
-		enable_irq(IRQ_PCI_PERR);
-}
-
-/*
- * Warn on PCI errors.
- */
-static irqreturn_t dc21285_abort_irq(int irq, void *dev_id)
-{
-	unsigned int cmd;
-	unsigned int status;
-
-	cmd = *CSR_PCICMD;
-	status = cmd >> 16;
-	cmd = cmd & 0xffff;
-
-	if (status & PCI_STATUS_REC_MASTER_ABORT) {
-		printk(KERN_DEBUG "PCI: master abort, pc=0x%08lx\n",
-			instruction_pointer(get_irq_regs()));
-		cmd |= PCI_STATUS_REC_MASTER_ABORT << 16;
-	}
-
-	if (status & PCI_STATUS_REC_TARGET_ABORT) {
-		printk(KERN_DEBUG "PCI: target abort: ");
-		pcibios_report_status(PCI_STATUS_REC_MASTER_ABORT |
-				      PCI_STATUS_SIG_TARGET_ABORT |
-				      PCI_STATUS_REC_TARGET_ABORT, 1);
-		printk("\n");
-
-		cmd |= PCI_STATUS_REC_TARGET_ABORT << 16;
-	}
-
-	*CSR_PCICMD = cmd;
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t dc21285_serr_irq(int irq, void *dev_id)
-{
-	struct timer_list *timer = dev_id;
-	unsigned int cntl;
-
-	printk(KERN_DEBUG "PCI: system error received: ");
-	pcibios_report_status(PCI_STATUS_SIG_SYSTEM_ERROR, 1);
-	printk("\n");
-
-	cntl = *CSR_SA110_CNTL & 0xffffdf07;
-	*CSR_SA110_CNTL = cntl | SA110_CNTL_RXSERR;
-
-	/*
-	 * back off this interrupt
-	 */
-	disable_irq(irq);
-	timer->expires = jiffies + HZ;
-	add_timer(timer);
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t dc21285_discard_irq(int irq, void *dev_id)
-{
-	printk(KERN_DEBUG "PCI: discard timer expired\n");
-	*CSR_SA110_CNTL &= 0xffffde07;
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t dc21285_dparity_irq(int irq, void *dev_id)
-{
-	unsigned int cmd;
-
-	printk(KERN_DEBUG "PCI: data parity error detected: ");
-	pcibios_report_status(PCI_STATUS_PARITY | PCI_STATUS_DETECTED_PARITY, 1);
-	printk("\n");
-
-	cmd = *CSR_PCICMD & 0xffff;
-	*CSR_PCICMD = cmd | 1 << 24;
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t dc21285_parity_irq(int irq, void *dev_id)
-{
-	struct timer_list *timer = dev_id;
-	unsigned int cmd;
-
-	printk(KERN_DEBUG "PCI: parity error detected: ");
-	pcibios_report_status(PCI_STATUS_PARITY | PCI_STATUS_DETECTED_PARITY, 1);
-	printk("\n");
-
-	cmd = *CSR_PCICMD & 0xffff;
-	*CSR_PCICMD = cmd | 1 << 31;
-
-	/*
-	 * back off this interrupt
-	 */
-	disable_irq(irq);
-	timer->expires = jiffies + HZ;
-	add_timer(timer);
-
-	return IRQ_HANDLED;
-}
-
-static int dc21285_pci_bus_notifier(struct notifier_block *nb,
-				    unsigned long action,
-				    void *data)
-{
-	if (action != BUS_NOTIFY_ADD_DEVICE)
-		return NOTIFY_DONE;
-
-	dma_direct_set_offset(data, PHYS_OFFSET, BUS_OFFSET, SZ_256M);
-
-	return NOTIFY_OK;
-}
-
-static struct notifier_block dc21285_pci_bus_nb = {
-	.notifier_call = dc21285_pci_bus_notifier,
-};
-
-int __init dc21285_setup(int nr, struct pci_sys_data *sys)
-{
-	struct resource *res;
-
-	res = kzalloc_objs(struct resource, 2);
-	if (!res) {
-		printk("out of memory for root bus resources");
-		return 0;
-	}
-
-	res[0].flags = IORESOURCE_MEM;
-	res[0].name  = "Footbridge non-prefetch";
-	res[1].flags = IORESOURCE_MEM | IORESOURCE_PREFETCH;
-	res[1].name  = "Footbridge prefetch";
-
-	allocate_resource(&iomem_resource, &res[1], 0x20000000,
-			  0xa0000000, 0xffffffff, 0x20000000, NULL, NULL);
-	allocate_resource(&iomem_resource, &res[0], 0x40000000,
-			  0x80000000, 0xffffffff, 0x40000000, NULL, NULL);
-
-	sys->mem_offset  = DC21285_PCI_MEM;
-
-	pci_add_resource_offset(&sys->resources, &res[0], sys->mem_offset);
-	pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset);
-
-	bus_register_notifier(&pci_bus_type, &dc21285_pci_bus_nb);
-
-	return 1;
-}
-
-#define dc21285_request_irq(_a, _b, _c, _d, _e) \
-	WARN_ON(request_irq(_a, _b, _c, _d, _e) < 0)
-
-void __init dc21285_preinit(void)
-{
-	unsigned int mem_size, mem_mask;
-
-	pcibios_min_mem = 0x81000000;
-
-	mem_size = (unsigned int)high_memory - PAGE_OFFSET;
-	for (mem_mask = 0x00100000; mem_mask < 0x10000000; mem_mask <<= 1)
-		if (mem_mask >= mem_size)
-			break;
-
-	/*
-	 * These registers need to be set up whether we're the
-	 * central function or not.
-	 */
-	*CSR_SDRAMBASEMASK    = (mem_mask - 1) & 0x0ffc0000;
-	*CSR_SDRAMBASEOFFSET  = 0;
-	*CSR_ROMBASEMASK      = 0x80000000;
-	*CSR_CSRBASEMASK      = 0;
-	*CSR_CSRBASEOFFSET    = 0;
-	*CSR_PCIADDR_EXTN     = 0;
-
-	printk(KERN_INFO "PCI: DC21285 footbridge, revision %02lX, in "
-		"central function mode\n", *CSR_CLASSREV & 0xff);
-
-	/*
-	 * Clear any existing errors - we aren't
-	 * interested in historical data...
-	 */
-	*CSR_SA110_CNTL	= (*CSR_SA110_CNTL & 0xffffde07) | SA110_CNTL_RXSERR;
-	*CSR_PCICMD = (*CSR_PCICMD & 0xffff) | PCICMD_ERROR_BITS;
-
-	timer_setup(&serr_timer, dc21285_enable_error, 0);
-	timer_setup(&perr_timer, dc21285_enable_error, 0);
-
-	/*
-	 * We don't care if these fail.
-	 */
-	dc21285_request_irq(IRQ_PCI_SERR, dc21285_serr_irq, 0,
-			    "PCI system error", &serr_timer);
-	dc21285_request_irq(IRQ_PCI_PERR, dc21285_parity_irq, 0,
-			    "PCI parity error", &perr_timer);
-	dc21285_request_irq(IRQ_PCI_ABORT, dc21285_abort_irq, 0,
-			    "PCI abort", NULL);
-	dc21285_request_irq(IRQ_DISCARD_TIMER, dc21285_discard_irq, 0,
-			    "Discard timer", NULL);
-	dc21285_request_irq(IRQ_PCI_DPERR, dc21285_dparity_irq, 0,
-			    "PCI data parity", NULL);
-
-	/*
-	 * Map our SDRAM at a known address in PCI space, just in case
-	 * the firmware had other ideas.  Using a nonzero base is
-	 * necessary, since some VGA cards forcefully use PCI addresses
-	 * in the range 0x000a0000 to 0x000c0000. (eg, S3 cards).
-	 */
-	*CSR_PCICSRBASE       = 0xf4000000;
-	*CSR_PCICSRIOBASE     = 0;
-	*CSR_PCISDRAMBASE     = BUS_OFFSET;
-	*CSR_PCIROMBASE       = 0;
-	*CSR_PCICMD = PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER |
-		      PCI_COMMAND_INVALIDATE | PCICMD_ERROR_BITS;
-}
-
-void __init dc21285_postinit(void)
-{
-	register_isa_ports(DC21285_PCI_MEM, DC21285_PCI_IO, 0);
-}
diff --git a/arch/arm/mach-footbridge/dma-isa.c b/arch/arm/mach-footbridge/dma-isa.c
deleted file mode 100644
index 937f5376d5e7..000000000000
--- a/arch/arm/mach-footbridge/dma-isa.c
+++ /dev/null
@@ -1,230 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  Copyright (C) 1999-2000 Russell King
- *
- *  ISA DMA primitives
- *  Taken from various sources, including:
- *   linux/include/asm/dma.h: Defines for using and allocating dma channels.
- *     Written by Hennus Bergman, 1992.
- *     High DMA channel support & info by Hannu Savolainen and John Boyd,
- *     Nov. 1992.
- *   arch/arm/kernel/dma-ebsa285.c
- *   Copyright (C) 1998 Phil Blundell
- */
-#include <linux/dma-map-ops.h>
-#include <linux/ioport.h>
-#include <linux/init.h>
-#include <linux/dma-mapping.h>
-#include <linux/io.h>
-
-#include <asm/dma.h>
-#include <asm/mach/dma.h>
-#include <asm/hardware/dec21285.h>
-
-#define ISA_DMA_MASK		0
-#define ISA_DMA_MODE		1
-#define ISA_DMA_CLRFF		2
-#define ISA_DMA_PGHI		3
-#define ISA_DMA_PGLO		4
-#define ISA_DMA_ADDR		5
-#define ISA_DMA_COUNT		6
-
-static unsigned int isa_dma_port[8][7] = {
-	/* MASK   MODE   CLRFF  PAGE_HI PAGE_LO ADDR COUNT */
-	{  0x0a,  0x0b,  0x0c,  0x487,  0x087,  0x00, 0x01 },
-	{  0x0a,  0x0b,  0x0c,  0x483,  0x083,  0x02, 0x03 },
-	{  0x0a,  0x0b,  0x0c,  0x481,  0x081,  0x04, 0x05 },
-	{  0x0a,  0x0b,  0x0c,  0x482,  0x082,  0x06, 0x07 },
-	{  0xd4,  0xd6,  0xd8,  0x000,  0x000,  0xc0, 0xc2 },
-	{  0xd4,  0xd6,  0xd8,  0x48b,  0x08b,  0xc4, 0xc6 },
-	{  0xd4,  0xd6,  0xd8,  0x489,  0x089,  0xc8, 0xca },
-	{  0xd4,  0xd6,  0xd8,  0x48a,  0x08a,  0xcc, 0xce }
-};
-
-static int isa_get_dma_residue(unsigned int chan, dma_t *dma)
-{
-	unsigned int io_port = isa_dma_port[chan][ISA_DMA_COUNT];
-	int count;
-
-	count = 1 + inb(io_port);
-	count |= inb(io_port) << 8;
-
-	return chan < 4 ? count : (count << 1);
-}
-
-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 isa_enable_dma(unsigned int chan, dma_t *dma)
-{
-	if (dma->invalid) {
-		unsigned long address, length;
-		unsigned int mode;
-		enum dma_data_direction direction;
-
-		mode = (chan & 3) | dma->dma_mode;
-		switch (dma->dma_mode & DMA_MODE_MASK) {
-		case DMA_MODE_READ:
-			direction = DMA_FROM_DEVICE;
-			break;
-
-		case DMA_MODE_WRITE:
-			direction = DMA_TO_DEVICE;
-			break;
-
-		case DMA_MODE_CASCADE:
-			direction = DMA_BIDIRECTIONAL;
-			break;
-
-		default:
-			direction = DMA_NONE;
-			break;
-		}
-
-		if (!dma->sg) {
-			/*
-			 * Cope with ISA-style drivers which expect cache
-			 * coherence.
-			 */
-			dma->sg = &dma->buf;
-			dma->sgcount = 1;
-			dma->buf.length = dma->count;
-			dma->buf.dma_address = dma_map_single(&isa_dma_dev,
-				dma->addr, dma->count,
-				direction);
-		}
-
-		address = dma->buf.dma_address;
-		length  = dma->buf.length - 1;
-
-		outb(address >> 16, isa_dma_port[chan][ISA_DMA_PGLO]);
-		outb(address >> 24, isa_dma_port[chan][ISA_DMA_PGHI]);
-
-		if (chan >= 4) {
-			address >>= 1;
-			length >>= 1;
-		}
-
-		outb(0, isa_dma_port[chan][ISA_DMA_CLRFF]);
-
-		outb(address, isa_dma_port[chan][ISA_DMA_ADDR]);
-		outb(address >> 8, isa_dma_port[chan][ISA_DMA_ADDR]);
-
-		outb(length, isa_dma_port[chan][ISA_DMA_COUNT]);
-		outb(length >> 8, isa_dma_port[chan][ISA_DMA_COUNT]);
-
-		outb(mode, isa_dma_port[chan][ISA_DMA_MODE]);
-		dma->invalid = 0;
-	}
-	outb(chan & 3, isa_dma_port[chan][ISA_DMA_MASK]);
-}
-
-static void isa_disable_dma(unsigned int chan, dma_t *dma)
-{
-	outb(chan | 4, isa_dma_port[chan][ISA_DMA_MASK]);
-}
-
-static struct dma_ops isa_dma_ops = {
-	.type		= "ISA",
-	.enable		= isa_enable_dma,
-	.disable	= isa_disable_dma,
-	.residue	= isa_get_dma_residue,
-};
-
-static struct resource dma_resources[] = { {
-	.name	= "dma1",
-	.start	= 0x0000,
-	.end	= 0x000f
-}, {
-	.name	= "dma low page",
-	.start	= 0x0080,
-	.end 	= 0x008f
-}, {
-	.name	= "dma2",
-	.start	= 0x00c0,
-	.end	= 0x00df
-}, {
-	.name	= "dma high page",
-	.start	= 0x0480,
-	.end	= 0x048f
-} };
-
-static dma_t isa_dma[8];
-
-/*
- * ISA DMA always starts at channel 0
- */
-static int __init isa_dma_init(void)
-{
-	/*
-	 * Try to autodetect presence of an ISA DMA controller.
-	 * We do some minimal initialisation, and check that
-	 * channel 0's DMA address registers are writeable.
-	 */
-	outb(0xff, 0x0d);
-	outb(0xff, 0xda);
-
-	/*
-	 * Write high and low address, and then read them back
-	 * in the same order.
-	 */
-	outb(0x55, 0x00);
-	outb(0xaa, 0x00);
-
-	if (inb(0) == 0x55 && inb(0) == 0xaa) {
-		unsigned int chan, i;
-
-		for (chan = 0; chan < 8; chan++) {
-			isa_dma[chan].d_ops = &isa_dma_ops;
-			isa_disable_dma(chan, NULL);
-		}
-
-		outb(0x40, 0x0b);
-		outb(0x41, 0x0b);
-		outb(0x42, 0x0b);
-		outb(0x43, 0x0b);
-
-		outb(0xc0, 0xd6);
-		outb(0x41, 0xd6);
-		outb(0x42, 0xd6);
-		outb(0x43, 0xd6);
-
-		outb(0, 0xd4);
-
-		outb(0x10, 0x08);
-		outb(0x10, 0xd0);
-
-		/*
-		 * Is this correct?  According to my documentation, it
-		 * doesn't appear to be.  It should be:
-		 *  outb(0x3f, 0x40b); outb(0x3f, 0x4d6);
-		 */
-		outb(0x30, 0x40b);
-		outb(0x31, 0x40b);
-		outb(0x32, 0x40b);
-		outb(0x33, 0x40b);
-		outb(0x31, 0x4d6);
-		outb(0x32, 0x4d6);
-		outb(0x33, 0x4d6);
-
-		for (i = 0; i < ARRAY_SIZE(dma_resources); i++)
-			request_resource(&ioport_resource, dma_resources + i);
-
-		for (chan = 0; chan < 8; chan++) {
-			int ret = isa_dma_add(chan, &isa_dma[chan]);
-			if (ret)
-				pr_err("ISADMA%u: unable to register: %d\n",
-				       chan, ret);
-		}
-
-		request_dma(DMA_ISA_CASCADE, "cascade");
-	}
-
-	dma_direct_set_offset(&isa_dma_dev, PHYS_OFFSET, BUS_OFFSET, SZ_256M);
-
-	return 0;
-}
-core_initcall(isa_dma_init);
diff --git a/arch/arm/mach-footbridge/ebsa285-pci.c b/arch/arm/mach-footbridge/ebsa285-pci.c
deleted file mode 100644
index c3f280d08fa7..000000000000
--- a/arch/arm/mach-footbridge/ebsa285-pci.c
+++ /dev/null
@@ -1,48 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-footbridge/ebsa285-pci.c
- *
- * PCI bios-type initialisation for PCI machines
- *
- * Bits taken from various places.
- */
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-
-#include <asm/irq.h>
-#include <asm/mach/pci.h>
-#include <asm/mach-types.h>
-
-static int irqmap_ebsa285[] = { IRQ_IN3, IRQ_IN1, IRQ_IN0, IRQ_PCI };
-
-static int ebsa285_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-	if (dev->vendor == PCI_VENDOR_ID_CONTAQ &&
-	    dev->device == PCI_DEVICE_ID_CONTAQ_82C693)
-		switch (PCI_FUNC(dev->devfn)) {
-		case 1:	return 14;
-		case 2:	return 15;
-		case 3:	return 12;
-		}
-
-	return irqmap_ebsa285[(slot + pin) & 3];
-}
-
-static struct hw_pci ebsa285_pci __initdata = {
-	.map_irq		= ebsa285_map_irq,
-	.nr_controllers		= 1,
-	.ops			= &dc21285_ops,
-	.setup			= dc21285_setup,
-	.preinit		= dc21285_preinit,
-	.postinit		= dc21285_postinit,
-};
-
-static int __init ebsa285_init_pci(void)
-{
-	if (machine_is_ebsa285())
-		pci_common_init(&ebsa285_pci);
-	return 0;
-}
-
-subsys_initcall(ebsa285_init_pci);
diff --git a/arch/arm/mach-footbridge/ebsa285.c b/arch/arm/mach-footbridge/ebsa285.c
deleted file mode 100644
index 1cb7d674bc81..000000000000
--- a/arch/arm/mach-footbridge/ebsa285.c
+++ /dev/null
@@ -1,124 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-footbridge/ebsa285.c
- *
- * EBSA285 machine fixup
- */
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-#include <linux/slab.h>
-#include <linux/leds.h>
-
-#include <asm/hardware/dec21285.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/arch.h>
-
-#include "common.h"
-
-/* LEDs */
-#if defined(CONFIG_NEW_LEDS) && defined(CONFIG_LEDS_CLASS)
-#define XBUS_AMBER_L	BIT(0)
-#define XBUS_GREEN_L	BIT(1)
-#define XBUS_RED_L	BIT(2)
-#define XBUS_TOGGLE	BIT(7)
-
-struct ebsa285_led {
-	struct led_classdev     cdev;
-	u8                      mask;
-};
-
-/*
- * The triggers lines up below will only be used if the
- * LED triggers are compiled in.
- */
-static const struct {
-	const char *name;
-	const char *trigger;
-} ebsa285_leds[] = {
-	{ "ebsa285:amber", "cpu0", },
-	{ "ebsa285:green", "heartbeat", },
-	{ "ebsa285:red",},
-};
-
-static unsigned char hw_led_state;
-static void __iomem *xbus;
-
-static void ebsa285_led_set(struct led_classdev *cdev,
-		enum led_brightness b)
-{
-	struct ebsa285_led *led = container_of(cdev,
-			struct ebsa285_led, cdev);
-
-	if (b == LED_OFF)
-		hw_led_state |= led->mask;
-	else
-		hw_led_state &= ~led->mask;
-	writeb(hw_led_state, xbus);
-}
-
-static enum led_brightness ebsa285_led_get(struct led_classdev *cdev)
-{
-	struct ebsa285_led *led = container_of(cdev,
-			struct ebsa285_led, cdev);
-
-	return hw_led_state & led->mask ? LED_OFF : LED_FULL;
-}
-
-static int __init ebsa285_leds_init(void)
-{
-	int i;
-
-	if (!machine_is_ebsa285())
-		return -ENODEV;
-
-	xbus = ioremap(XBUS_CS2, SZ_4K);
-	if (!xbus)
-		return -ENOMEM;
-
-	/* 3 LEDS all off */
-	hw_led_state = XBUS_AMBER_L | XBUS_GREEN_L | XBUS_RED_L;
-	writeb(hw_led_state, xbus);
-
-	for (i = 0; i < ARRAY_SIZE(ebsa285_leds); i++) {
-		struct ebsa285_led *led;
-
-		led = kzalloc_obj(*led);
-		if (!led)
-			break;
-
-		led->cdev.name = ebsa285_leds[i].name;
-		led->cdev.brightness_set = ebsa285_led_set;
-		led->cdev.brightness_get = ebsa285_led_get;
-		led->cdev.default_trigger = ebsa285_leds[i].trigger;
-		led->mask = BIT(i);
-
-		if (led_classdev_register(NULL, &led->cdev) < 0) {
-			kfree(led);
-			break;
-		}
-	}
-
-	return 0;
-}
-
-/*
- * Since we may have triggers on any subsystem, defer registration
- * until after subsystem_init.
- */
-fs_initcall(ebsa285_leds_init);
-#endif
-
-MACHINE_START(EBSA285, "EBSA285")
-	/* Maintainer: Russell King */
-	.atag_offset	= 0x100,
-	.video_start	= 0x000a0000,
-	.video_end	= 0x000bffff,
-	.map_io		= footbridge_map_io,
-	.init_early	= footbridge_sched_clock,
-	.init_irq	= footbridge_init_irq,
-	.init_time	= footbridge_timer_init,
-	.restart	= footbridge_restart,
-MACHINE_END
-
diff --git a/arch/arm/mach-footbridge/include/mach/hardware.h b/arch/arm/mach-footbridge/include/mach/hardware.h
deleted file mode 100644
index 985ad3a95671..000000000000
--- a/arch/arm/mach-footbridge/include/mach/hardware.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-footbridge/include/mach/hardware.h
- *
- *  Copyright (C) 1998-1999 Russell King.
- *
- *  This file contains the hardware definitions of the EBSA-285.
- */
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-/*   Virtual      Physical	Size
- * 0xff800000	0x40000000	1MB	X-Bus
- * 0xff000000	0x7c000000	1MB	PCI I/O space
- * 0xfe000000	0x42000000	1MB	CSR
- * 0xfd000000	0x78000000	1MB	Outbound write flush (not supported)
- * 0xfc000000	0x79000000	1MB	PCI IACK/special space
- * 0xfb000000	0x7a000000	16MB	PCI Config type 1
- * 0xfa000000	0x7b000000	16MB	PCI Config type 0
- * 0xf9000000	0x50000000	1MB	Cache flush
- * 0xf0000000	0x80000000	16MB	ISA memory
- */
-
-#define XBUS_SIZE		0x00100000
-#define XBUS_BASE		0xff800000
-
-#define ARMCSR_SIZE		0x00100000
-#define ARMCSR_BASE		0xfe000000
-
-#define WFLUSH_SIZE		0x00100000
-#define WFLUSH_BASE		0xfd000000
-
-#define PCIIACK_SIZE		0x00100000
-#define PCIIACK_BASE		0xfc000000
-
-#define PCICFG1_SIZE		0x01000000
-#define PCICFG1_BASE		0xfb000000
-
-#define PCICFG0_SIZE		0x01000000
-#define PCICFG0_BASE		0xfa000000
-
-#define PCIMEM_SIZE		0x01000000
-#define PCIMEM_BASE		0xf0000000
-
-#define XBUS_CS2		0x40012000
-
-#define XBUS_SWITCH		((volatile unsigned char *)(XBUS_BASE + 0x12000))
-#define XBUS_SWITCH_SWITCH	((*XBUS_SWITCH) & 15)
-#define XBUS_SWITCH_J17_13	((*XBUS_SWITCH) & (1 << 4))
-#define XBUS_SWITCH_J17_11	((*XBUS_SWITCH) & (1 << 5))
-#define XBUS_SWITCH_J17_9	((*XBUS_SWITCH) & (1 << 6))
-
-#define UNCACHEABLE_ADDR	(ARMCSR_BASE + 0x108)	/* CSR_ROMBASEMASK */
-
-
-/* PIC irq control */
-#define PIC_LO			0x20
-#define PIC_MASK_LO		0x21
-#define PIC_HI			0xA0
-#define PIC_MASK_HI		0xA1
-
-/* GPIO pins */
-#define GPIO_CCLK		0x800
-#define GPIO_DSCLK		0x400
-#define GPIO_E2CLK		0x200
-#define GPIO_IOLOAD		0x100
-#define GPIO_RED_LED		0x080
-#define GPIO_WDTIMER		0x040
-#define GPIO_DATA		0x020
-#define GPIO_IOCLK		0x010
-#define GPIO_DONE		0x008
-#define GPIO_FAN		0x004
-#define GPIO_GREEN_LED		0x002
-#define GPIO_RESET		0x001
-
-/* CPLD pins */
-#define CPLD_DS_ENABLE		8
-#define CPLD_7111_DISABLE	4
-#define CPLD_UNMUTE		2
-#define CPLD_FLASH_WR_ENABLE	1
-
-#ifndef __ASSEMBLY__
-extern raw_spinlock_t nw_gpio_lock;
-extern void nw_gpio_modify_op(unsigned int mask, unsigned int set);
-extern void nw_gpio_modify_io(unsigned int mask, unsigned int in);
-extern unsigned int nw_gpio_read(void);
-extern void nw_cpld_modify(unsigned int mask, unsigned int set);
-#endif
-
-#endif
diff --git a/arch/arm/mach-footbridge/include/mach/irqs.h b/arch/arm/mach-footbridge/include/mach/irqs.h
deleted file mode 100644
index a5f41846ab9c..000000000000
--- a/arch/arm/mach-footbridge/include/mach/irqs.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * arch/arm/mach-footbridge/include/mach/irqs.h
- *
- * Copyright (C) 1998 Russell King
- * Copyright (C) 1998 Phil Blundell
- *
- * Changelog:
- *  20-Jan-1998	RMK	Started merge of EBSA286, CATS and NetWinder
- *  01-Feb-1999	PJB	ISA IRQs start at 0 not 16
- */
-#include <asm/mach-types.h>
-
-#define NR_IRQS			36
-#define NR_DC21285_IRQS		16
-
-#define _ISA_IRQ(x)		(0 + (x))
-#define _ISA_INR(x)		((x) - 0)
-#define _DC21285_IRQ(x)		(16 + (x))
-#define _DC21285_INR(x)		((x) - 16)
-
-/*
- * This is a list of all interrupts that the 21285
- * can generate and we handle.
- */
-#define IRQ_CONRX		_DC21285_IRQ(0)
-#define IRQ_CONTX		_DC21285_IRQ(1)
-#define IRQ_TIMER1		_DC21285_IRQ(2)
-#define IRQ_TIMER2		_DC21285_IRQ(3)
-#define IRQ_TIMER3		_DC21285_IRQ(4)
-#define IRQ_IN0			_DC21285_IRQ(5)
-#define IRQ_IN1			_DC21285_IRQ(6)
-#define IRQ_IN2			_DC21285_IRQ(7)
-#define IRQ_IN3			_DC21285_IRQ(8)
-#define IRQ_DOORBELLHOST	_DC21285_IRQ(9)
-#define IRQ_DMA1		_DC21285_IRQ(10)
-#define IRQ_DMA2		_DC21285_IRQ(11)
-#define IRQ_PCI			_DC21285_IRQ(12)
-#define IRQ_SDRAMPARITY		_DC21285_IRQ(13)
-#define IRQ_I2OINPOST		_DC21285_IRQ(14)
-#define IRQ_PCI_ABORT		_DC21285_IRQ(15)
-#define IRQ_PCI_SERR		_DC21285_IRQ(16)
-#define IRQ_DISCARD_TIMER	_DC21285_IRQ(17)
-#define IRQ_PCI_DPERR		_DC21285_IRQ(18)
-#define IRQ_PCI_PERR		_DC21285_IRQ(19)
-
-#define IRQ_ISA_TIMER		_ISA_IRQ(0)
-#define IRQ_ISA_KEYBOARD	_ISA_IRQ(1)
-#define IRQ_ISA_CASCADE		_ISA_IRQ(2)
-#define IRQ_ISA_UART2		_ISA_IRQ(3)
-#define IRQ_ISA_UART		_ISA_IRQ(4)
-#define IRQ_ISA_FLOPPY		_ISA_IRQ(6)
-#define IRQ_ISA_PRINTER		_ISA_IRQ(7)
-#define IRQ_ISA_RTC_ALARM	_ISA_IRQ(8)
-#define IRQ_ISA_2		_ISA_IRQ(9)
-#define IRQ_ISA_PS2MOUSE	_ISA_IRQ(12)
-#define IRQ_ISA_HARDDISK1	_ISA_IRQ(14)
-#define IRQ_ISA_HARDDISK2	_ISA_IRQ(15)
-
-#define IRQ_MASK_UART_RX	(1 << 2)
-#define IRQ_MASK_UART_TX	(1 << 3)
-#define IRQ_MASK_TIMER1		(1 << 4)
-#define IRQ_MASK_TIMER2		(1 << 5)
-#define IRQ_MASK_TIMER3		(1 << 6)
-#define IRQ_MASK_IN0		(1 << 8)
-#define IRQ_MASK_IN1		(1 << 9)
-#define IRQ_MASK_IN2		(1 << 10)
-#define IRQ_MASK_IN3		(1 << 11)
-#define IRQ_MASK_DOORBELLHOST	(1 << 15)
-#define IRQ_MASK_DMA1		(1 << 16)
-#define IRQ_MASK_DMA2		(1 << 17)
-#define IRQ_MASK_PCI		(1 << 18)
-#define IRQ_MASK_SDRAMPARITY	(1 << 24)
-#define IRQ_MASK_I2OINPOST	(1 << 25)
-#define IRQ_MASK_PCI_ABORT	((1 << 29) | (1 << 30))
-#define IRQ_MASK_PCI_SERR	(1 << 23)
-#define IRQ_MASK_DISCARD_TIMER	(1 << 27)
-#define IRQ_MASK_PCI_DPERR	(1 << 28)
-#define IRQ_MASK_PCI_PERR	(1 << 31)
-
-/*
- * Netwinder interrupt allocations
- */
-#define IRQ_NETWINDER_ETHER10	IRQ_IN0
-#define IRQ_NETWINDER_ETHER100	IRQ_IN1
-#define IRQ_NETWINDER_VIDCOMP	IRQ_IN2
-#define IRQ_NETWINDER_PS2MOUSE	_ISA_IRQ(5)
-#define IRQ_NETWINDER_IR	_ISA_IRQ(6)
-#define IRQ_NETWINDER_BUTTON	_ISA_IRQ(10)
-#define IRQ_NETWINDER_VGA	_ISA_IRQ(11)
-#define IRQ_NETWINDER_SOUND	_ISA_IRQ(12)
-
-#define I8042_KBD_IRQ	IRQ_ISA_KEYBOARD
-#define I8042_AUX_IRQ	(machine_is_netwinder() ? IRQ_NETWINDER_PS2MOUSE : IRQ_ISA_PS2MOUSE)
-#define IRQ_FLOPPYDISK	IRQ_ISA_FLOPPY
-
-#define irq_canonicalize(_i)	(((_i) == IRQ_ISA_CASCADE) ? IRQ_ISA_2 : _i)
diff --git a/arch/arm/mach-footbridge/include/mach/isa-dma.h b/arch/arm/mach-footbridge/include/mach/isa-dma.h
deleted file mode 100644
index b10731a1f66a..000000000000
--- a/arch/arm/mach-footbridge/include/mach/isa-dma.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- *  arch/arm/mach-footbridge/include/mach/isa-dma.h
- *
- *  Architecture DMA routines
- *
- *  Copyright (C) 1998,1999 Russell King
- *  Copyright (C) 1998,1999 Philip Blundell
- */
-#ifndef __ASM_ARCH_DMA_H
-#define __ASM_ARCH_DMA_H
-
-#define MAX_DMA_CHANNELS	8
-
-#define DMA_FLOPPY		(2)
-#define DMA_ISA_CASCADE		(4)
-
-#endif /* _ASM_ARCH_DMA_H */
diff --git a/arch/arm/mach-footbridge/include/mach/memory.h b/arch/arm/mach-footbridge/include/mach/memory.h
deleted file mode 100644
index 9516877667d7..000000000000
--- a/arch/arm/mach-footbridge/include/mach/memory.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-footbridge/include/mach/memory.h
- *
- *  Copyright (C) 1996-1999 Russell King.
- *
- *  Changelog:
- *   20-Oct-1996 RMK	Created
- *   31-Dec-1997 RMK	Fixed definitions to reduce warnings.
- *   17-May-1998 DAG	Added __virt_to_bus and __bus_to_virt functions.
- *   21-Nov-1998 RMK	Changed __virt_to_bus and __bus_to_virt to macros.
- *   21-Mar-1999 RMK	Added PAGE_OFFSET for co285 architecture.
- *			Renamed to memory.h
- *			Moved PAGE_OFFSET and TASK_SIZE here
- */
-#ifndef __ASM_ARCH_MEMORY_H
-#define __ASM_ARCH_MEMORY_H
-
-/*
- * Cache flushing area.
- */
-#define FLUSH_BASE		0xf9000000
-
-#define FLUSH_BASE_PHYS		0x50000000
-
-#endif
diff --git a/arch/arm/mach-footbridge/include/mach/uncompress.h b/arch/arm/mach-footbridge/include/mach/uncompress.h
deleted file mode 100644
index 28b577e29db3..000000000000
--- a/arch/arm/mach-footbridge/include/mach/uncompress.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-footbridge/include/mach/uncompress.h
- *
- *  Copyright (C) 1996-1999 Russell King
- */
-#include <asm/mach-types.h>
-
-/*
- * Note! This could cause problems on the NetWinder
- */
-#define DC21285_BASE ((volatile unsigned int *)0x42000160)
-#define SER0_BASE    ((volatile unsigned char *)0x7c0003f8)
-
-static inline void putc(char c)
-{
-	if (machine_is_netwinder()) {
-		while ((SER0_BASE[5] & 0x60) != 0x60)
-			barrier();
-		SER0_BASE[0] = c;
-	} else {
-		while (DC21285_BASE[6] & 8);
-		DC21285_BASE[0] = c;
-	}
-}
-
-static inline void flush(void)
-{
-}
-
-/*
- * nothing to do
- */
-#define arch_decomp_setup()
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
deleted file mode 100644
index 48c7b3efd555..000000000000
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ /dev/null
@@ -1,177 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-footbridge/irq.c
- *
- *  Copyright (C) 1996-2000 Russell King
- *
- *  Changelog:
- *   22-Aug-1998 RMK	Restructured IRQ routines
- *   03-Sep-1998 PJB	Merged CATS support
- *   20-Jan-1998 RMK	Started merge of EBSA286, CATS and NetWinder
- *   26-Jan-1999 PJB	Don't use IACK on CATS
- *   16-Mar-1999 RMK	Added autodetect of ISA PICs
- */
-#include <linux/ioport.h>
-#include <linux/interrupt.h>
-#include <linux/list.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-
-#include <asm/mach/irq.h>
-
-#include <mach/hardware.h>
-#include <asm/hardware/dec21285.h>
-#include <asm/irq.h>
-#include <asm/mach-types.h>
-
-#include "common.h"
-
-static void isa_mask_pic_lo_irq(struct irq_data *d)
-{
-	unsigned int mask = 1 << (d->irq & 7);
-
-	outb(inb(PIC_MASK_LO) | mask, PIC_MASK_LO);
-}
-
-static void isa_ack_pic_lo_irq(struct irq_data *d)
-{
-	unsigned int mask = 1 << (d->irq & 7);
-
-	outb(inb(PIC_MASK_LO) | mask, PIC_MASK_LO);
-	outb(0x20, PIC_LO);
-}
-
-static void isa_unmask_pic_lo_irq(struct irq_data *d)
-{
-	unsigned int mask = 1 << (d->irq & 7);
-
-	outb(inb(PIC_MASK_LO) & ~mask, PIC_MASK_LO);
-}
-
-static struct irq_chip isa_lo_chip = {
-	.irq_ack	= isa_ack_pic_lo_irq,
-	.irq_mask	= isa_mask_pic_lo_irq,
-	.irq_unmask	= isa_unmask_pic_lo_irq,
-};
-
-static void isa_mask_pic_hi_irq(struct irq_data *d)
-{
-	unsigned int mask = 1 << (d->irq & 7);
-
-	outb(inb(PIC_MASK_HI) | mask, PIC_MASK_HI);
-}
-
-static void isa_ack_pic_hi_irq(struct irq_data *d)
-{
-	unsigned int mask = 1 << (d->irq & 7);
-
-	outb(inb(PIC_MASK_HI) | mask, PIC_MASK_HI);
-	outb(0x62, PIC_LO);
-	outb(0x20, PIC_HI);
-}
-
-static void isa_unmask_pic_hi_irq(struct irq_data *d)
-{
-	unsigned int mask = 1 << (d->irq & 7);
-
-	outb(inb(PIC_MASK_HI) & ~mask, PIC_MASK_HI);
-}
-
-static struct irq_chip isa_hi_chip = {
-	.irq_ack	= isa_ack_pic_hi_irq,
-	.irq_mask	= isa_mask_pic_hi_irq,
-	.irq_unmask	= isa_unmask_pic_hi_irq,
-};
-
-static void isa_irq_handler(struct irq_desc *desc)
-{
-	unsigned int isa_irq = *(unsigned char *)PCIIACK_BASE;
-
-	if (isa_irq < _ISA_IRQ(0) || isa_irq >= _ISA_IRQ(16)) {
-		handle_bad_irq(desc);
-		return;
-	}
-
-	generic_handle_irq(isa_irq);
-}
-
-static struct resource pic1_resource = {
-	.name	= "pic1",
-	.start	= 0x20,
-	.end	= 0x3f,
-};
-
-static struct resource pic2_resource = {
-	.name	= "pic2",
-	.start	= 0xa0,
-	.end	= 0xbf,
-};
-
-void __init isa_init_irq(unsigned int host_irq)
-{
-	unsigned int irq;
-
-	/*
-	 * Setup, and then probe for an ISA PIC
-	 * If the PIC is not there, then we
-	 * ignore the PIC.
-	 */
-	outb(0x11, PIC_LO);
-	outb(_ISA_IRQ(0), PIC_MASK_LO);	/* IRQ number		*/
-	outb(0x04, PIC_MASK_LO);	/* Slave on Ch2		*/
-	outb(0x01, PIC_MASK_LO);	/* x86			*/
-	outb(0xf5, PIC_MASK_LO);	/* pattern: 11110101	*/
-
-	outb(0x11, PIC_HI);
-	outb(_ISA_IRQ(8), PIC_MASK_HI);	/* IRQ number		*/
-	outb(0x02, PIC_MASK_HI);	/* Slave on Ch1		*/
-	outb(0x01, PIC_MASK_HI);	/* x86			*/
-	outb(0xfa, PIC_MASK_HI);	/* pattern: 11111010	*/
-
-	outb(0x0b, PIC_LO);
-	outb(0x0b, PIC_HI);
-
-	if (inb(PIC_MASK_LO) == 0xf5 && inb(PIC_MASK_HI) == 0xfa) {
-		outb(0xff, PIC_MASK_LO);/* mask all IRQs	*/
-		outb(0xff, PIC_MASK_HI);/* mask all IRQs	*/
-	} else {
-		printk(KERN_INFO "IRQ: ISA PIC not found\n");
-		host_irq = (unsigned int)-1;
-	}
-
-	if (host_irq != (unsigned int)-1) {
-		for (irq = _ISA_IRQ(0); irq < _ISA_IRQ(8); irq++) {
-			irq_set_chip_and_handler(irq, &isa_lo_chip,
-						 handle_level_irq);
-			irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
-		}
-
-		for (irq = _ISA_IRQ(8); irq < _ISA_IRQ(16); irq++) {
-			irq_set_chip_and_handler(irq, &isa_hi_chip,
-						 handle_level_irq);
-			irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
-		}
-
-		request_resource(&ioport_resource, &pic1_resource);
-		request_resource(&ioport_resource, &pic2_resource);
-
-		irq = IRQ_ISA_CASCADE;
-		if (request_irq(irq, no_action, 0, "cascade", NULL))
-			pr_err("Failed to request irq %u (cascade)\n", irq);
-
-		irq_set_chained_handler(host_irq, isa_irq_handler);
-
-		/*
-		 * On the NetWinder, don't automatically
-		 * enable ISA IRQ11 when it is requested.
-		 * There appears to be a missing pull-up
-		 * resistor on this line.
-		 */
-		if (machine_is_netwinder())
-			irq_modify_status(_ISA_IRQ(11),
-				IRQ_NOREQUEST | IRQ_NOPROBE, IRQ_NOAUTOEN);
-	}
-}
-
-
diff --git a/arch/arm/mach-footbridge/isa-rtc.c b/arch/arm/mach-footbridge/isa-rtc.c
deleted file mode 100644
index 237b828dd2f1..000000000000
--- a/arch/arm/mach-footbridge/isa-rtc.c
+++ /dev/null
@@ -1,57 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- *  arch/arm/mach-footbridge/isa-rtc.c
- *
- *  Copyright (C) 1998 Russell King.
- *  Copyright (C) 1998 Phil Blundell
- *
- * CATS has a real-time clock, though the evaluation board doesn't.
- *
- * Changelog:
- *  21-Mar-1998	RMK	Created
- *  27-Aug-1998	PJB	CATS support
- *  28-Dec-1998	APH	Made leds optional
- *  20-Jan-1999	RMK	Started merge of EBSA285, CATS and NetWinder
- *  16-Mar-1999	RMK	More support for EBSA285-like machines with RTCs in
- */
-
-#define RTC_PORT(x)		(0x70+(x))
-#define RTC_ALWAYS_BCD		0
-
-#include <linux/init.h>
-#include <linux/mc146818rtc.h>
-#include <linux/io.h>
-
-#include "common.h"
-
-void __init isa_rtc_init(void)
-{
-	int reg_d, reg_b;
-
-	/*
-	 * Probe for the RTC.
-	 */
-	reg_d = CMOS_READ(RTC_REG_D);
-
-	/*
-	 * make sure the divider is set
-	 */
-	CMOS_WRITE(RTC_REF_CLCK_32KHZ, RTC_REG_A);
-
-	/*
-	 * Set control reg B
-	 *   (24 hour mode, update enabled)
-	 */
-	reg_b = CMOS_READ(RTC_REG_B) & 0x7f;
-	reg_b |= 2;
-	CMOS_WRITE(reg_b, RTC_REG_B);
-
-	if ((CMOS_READ(RTC_REG_A) & 0x7f) == RTC_REF_CLCK_32KHZ &&
-	    CMOS_READ(RTC_REG_B) == reg_b) {
-		/*
-		 * We have a RTC.  Check the battery
-		 */
-		if ((reg_d & 0x80) == 0)
-			printk(KERN_WARNING "RTC: *** warning: CMOS battery bad\n");
-	}
-}
diff --git a/arch/arm/mach-footbridge/isa-timer.c b/arch/arm/mach-footbridge/isa-timer.c
deleted file mode 100644
index 723e3eae995d..000000000000
--- a/arch/arm/mach-footbridge/isa-timer.c
+++ /dev/null
@@ -1,36 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- *  linux/arch/arm/mach-footbridge/isa-timer.c
- *
- *  Copyright (C) 1998 Russell King.
- *  Copyright (C) 1998 Phil Blundell
- */
-#include <linux/clockchips.h>
-#include <linux/i8253.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/spinlock.h>
-#include <linux/timex.h>
-
-#include <asm/irq.h>
-#include <asm/mach/time.h>
-
-#include "common.h"
-
-static irqreturn_t pit_timer_interrupt(int irq, void *dev_id)
-{
-	struct clock_event_device *ce = dev_id;
-	ce->event_handler(ce);
-	return IRQ_HANDLED;
-}
-
-void __init isa_timer_init(void)
-{
-	clocksource_i8253_init();
-
-	if (request_irq(i8253_clockevent.irq, pit_timer_interrupt,
-			IRQF_TIMER | IRQF_IRQPOLL, "pit", &i8253_clockevent))
-		pr_err("Failed to request irq %d(pit)\n", i8253_clockevent.irq);
-	clockevent_i8253_init(false);
-}
diff --git a/arch/arm/mach-footbridge/isa.c b/arch/arm/mach-footbridge/isa.c
deleted file mode 100644
index 84caccddce44..000000000000
--- a/arch/arm/mach-footbridge/isa.c
+++ /dev/null
@@ -1,94 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-footbridge/isa.c
- *
- *  Copyright (C) 2004 Russell King.
- */
-#include <linux/init.h>
-#include <linux/serial_8250.h>
-
-#include <asm/irq.h>
-#include <asm/hardware/dec21285.h>
-
-#include "common.h"
-
-static struct resource rtc_resources[] = {
-	[0] = {
-		.start	= 0x70,
-		.end	= 0x73,
-		.flags	= IORESOURCE_IO,
-	},
-	[1] = {
-		.start	= IRQ_ISA_RTC_ALARM,
-		.end	= IRQ_ISA_RTC_ALARM,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-static struct platform_device rtc_device = {
-	.name		= "rtc_cmos",
-	.id		= -1,
-	.resource	= rtc_resources,
-	.num_resources	= ARRAY_SIZE(rtc_resources),
-};
-
-static struct resource serial_resources[] = {
-	[0] = {
-		.start	= 0x3f8,
-		.end	= 0x3ff,
-		.flags	= IORESOURCE_IO,
-	},
-	[1] = {
-		.start	= 0x2f8,
-		.end	= 0x2ff,
-		.flags	= IORESOURCE_IO,
-	},
-};
-
-static struct plat_serial8250_port serial_platform_data[] = {
-	{
-		.iobase		= 0x3f8,
-		.irq		= IRQ_ISA_UART,
-		.uartclk	= 1843200,
-		.regshift	= 0,
-		.iotype		= UPIO_PORT,
-		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-	},
-	{
-		.iobase		= 0x2f8,
-		.irq		= IRQ_ISA_UART2,
-		.uartclk	= 1843200,
-		.regshift	= 0,
-		.iotype		= UPIO_PORT,
-		.flags		= UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-	},
-	{ },
-};
-
-static struct platform_device serial_device = {
-	.name			= "serial8250",
-	.id			= PLAT8250_DEV_PLATFORM,
-	.dev			= {
-		.platform_data	= serial_platform_data,
-	},
-	.resource		= serial_resources,
-	.num_resources		= ARRAY_SIZE(serial_resources),
-};
-
-static int __init footbridge_isa_init(void)
-{
-	int err = 0;
-
-	/* Personal server doesn't have RTC */
-	isa_rtc_init();
-	err = platform_device_register(&rtc_device);
-	if (err)
-		printk(KERN_ERR "Unable to register RTC device: %d\n", err);
-
-	err = platform_device_register(&serial_device);
-	if (err)
-		printk(KERN_ERR "Unable to register serial device: %d\n", err);
-	return 0;
-}
-
-arch_initcall(footbridge_isa_init);
diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c
deleted file mode 100644
index c024eefd4978..000000000000
--- a/arch/arm/mach-footbridge/netwinder-hw.c
+++ /dev/null
@@ -1,772 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-footbridge/netwinder-hw.c
- *
- * Netwinder machine fixup
- *
- * Copyright (C) 1998, 1999 Russell King, Phil Blundell
- */
-#include <linux/module.h>
-#include <linux/ioport.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/spinlock.h>
-#include <linux/slab.h>
-#include <linux/leds.h>
-
-#include <asm/hardware/dec21285.h>
-#include <asm/mach-types.h>
-#include <asm/setup.h>
-#include <asm/system_misc.h>
-
-#include <asm/mach/arch.h>
-
-#include "common.h"
-
-#define IRDA_IO_BASE		0x180
-#define GP1_IO_BASE		0x338
-#define GP2_IO_BASE		0x33a
-
-/*
- * Winbond WB83977F accessibility stuff
- */
-static inline void wb977_open(void)
-{
-	outb(0x87, 0x370);
-	outb(0x87, 0x370);
-}
-
-static inline void wb977_close(void)
-{
-	outb(0xaa, 0x370);
-}
-
-static inline void wb977_wb(int reg, int val)
-{
-	outb(reg, 0x370);
-	outb(val, 0x371);
-}
-
-static inline void wb977_ww(int reg, int val)
-{
-	outb(reg, 0x370);
-	outb(val >> 8, 0x371);
-	outb(reg + 1, 0x370);
-	outb(val & 255, 0x371);
-}
-
-#define wb977_device_select(dev)	wb977_wb(0x07, dev)
-#define wb977_device_disable()		wb977_wb(0x30, 0x00)
-#define wb977_device_enable()		wb977_wb(0x30, 0x01)
-
-/*
- * This is a lock for accessing ports GP1_IO_BASE and GP2_IO_BASE
- */
-DEFINE_RAW_SPINLOCK(nw_gpio_lock);
-EXPORT_SYMBOL(nw_gpio_lock);
-
-static unsigned int current_gpio_op;
-static unsigned int current_gpio_io;
-static unsigned int current_cpld;
-
-void nw_gpio_modify_op(unsigned int mask, unsigned int set)
-{
-	unsigned int new_gpio, changed;
-
-	new_gpio = (current_gpio_op & ~mask) | set;
-	changed = new_gpio ^ current_gpio_op;
-	current_gpio_op = new_gpio;
-
-	if (changed & 0xff)
-		outb(new_gpio, GP1_IO_BASE);
-	if (changed & 0xff00)
-		outb(new_gpio >> 8, GP2_IO_BASE);
-}
-EXPORT_SYMBOL(nw_gpio_modify_op);
-
-static inline void __gpio_modify_io(int mask, int in)
-{
-	unsigned int new_gpio, changed;
-	int port;
-
-	new_gpio = (current_gpio_io & ~mask) | in;
-	changed = new_gpio ^ current_gpio_io;
-	current_gpio_io = new_gpio;
-
-	changed >>= 1;
-	new_gpio >>= 1;
-
-	wb977_device_select(7);
-
-	for (port = 0xe1; changed && port < 0xe8; changed >>= 1) {
-		wb977_wb(port, new_gpio & 1);
-
-		port += 1;
-		new_gpio >>= 1;
-	}
-
-	wb977_device_select(8);
-
-	for (port = 0xe8; changed && port < 0xec; changed >>= 1) {
-		wb977_wb(port, new_gpio & 1);
-
-		port += 1;
-		new_gpio >>= 1;
-	}
-}
-
-void nw_gpio_modify_io(unsigned int mask, unsigned int in)
-{
-	/* Open up the SuperIO chip */
-	wb977_open();
-
-	__gpio_modify_io(mask, in);
-
-	/* Close up the EFER gate */
-	wb977_close();
-}
-EXPORT_SYMBOL(nw_gpio_modify_io);
-
-unsigned int nw_gpio_read(void)
-{
-	return inb(GP1_IO_BASE) | inb(GP2_IO_BASE) << 8;
-}
-EXPORT_SYMBOL(nw_gpio_read);
-
-/*
- * Initialise the Winbond W83977F global registers
- */
-static inline void wb977_init_global(void)
-{
-	/*
-	 * Enable R/W config registers
-	 */
-	wb977_wb(0x26, 0x40);
-
-	/*
-	 * Power down FDC (not used)
-	 */
-	wb977_wb(0x22, 0xfe);
-
-	/*
-	 * GP12, GP11, CIRRX, IRRXH, GP10
-	 */
-	wb977_wb(0x2a, 0xc1);
-
-	/*
-	 * GP23, GP22, GP21, GP20, GP13
-	 */
-	wb977_wb(0x2b, 0x6b);
-
-	/*
-	 * GP17, GP16, GP15, GP14
-	 */
-	wb977_wb(0x2c, 0x55);
-}
-
-/*
- * Initialise the Winbond W83977F printer port
- */
-static inline void wb977_init_printer(void)
-{
-	wb977_device_select(1);
-
-	/*
-	 * mode 1 == EPP
-	 */
-	wb977_wb(0xf0, 0x01);
-}
-
-/*
- * Initialise the Winbond W83977F keyboard controller
- */
-static inline void wb977_init_keyboard(void)
-{
-	wb977_device_select(5);
-
-	/*
-	 * Keyboard controller address
-	 */
-	wb977_ww(0x60, 0x0060);
-	wb977_ww(0x62, 0x0064);
-
-	/*
-	 * Keyboard IRQ 1, active high, edge trigger
-	 */
-	wb977_wb(0x70, 1);
-	wb977_wb(0x71, 0x02);
-
-	/*
-	 * Mouse IRQ 5, active high, edge trigger
-	 */
-	wb977_wb(0x72, 5);
-	wb977_wb(0x73, 0x02);
-
-	/*
-	 * KBC 8MHz
-	 */
-	wb977_wb(0xf0, 0x40);
-
-	/*
-	 * Enable device
-	 */
-	wb977_device_enable();
-}
-
-/*
- * Initialise the Winbond W83977F Infra-Red device
- */
-static inline void wb977_init_irda(void)
-{
-	wb977_device_select(6);
-
-	/*
-	 * IR base address
-	 */
-	wb977_ww(0x60, IRDA_IO_BASE);
-
-	/*
-	 * IRDA IRQ 6, active high, edge trigger
-	 */
-	wb977_wb(0x70, 6);
-	wb977_wb(0x71, 0x02);
-
-	/*
-	 * RX DMA - ISA DMA 0
-	 */
-	wb977_wb(0x74, 0x00);
-
-	/*
-	 * TX DMA - Disable Tx DMA
-	 */
-	wb977_wb(0x75, 0x04);
-
-	/*
-	 * Append CRC, Enable bank selection
-	 */
-	wb977_wb(0xf0, 0x03);
-
-	/*
-	 * Enable device
-	 */
-	wb977_device_enable();
-}
-
-/*
- * Initialise Winbond W83977F general purpose IO
- */
-static inline void wb977_init_gpio(void)
-{
-	unsigned long flags;
-
-	/*
-	 * Set up initial I/O definitions
-	 */
-	current_gpio_io = -1;
-	__gpio_modify_io(-1, GPIO_DONE | GPIO_WDTIMER);
-
-	wb977_device_select(7);
-
-	/*
-	 * Group1 base address
-	 */
-	wb977_ww(0x60, GP1_IO_BASE);
-	wb977_ww(0x62, 0);
-	wb977_ww(0x64, 0);
-
-	/*
-	 * GP10 (Orage button) IRQ 10, active high, edge trigger
-	 */
-	wb977_wb(0x70, 10);
-	wb977_wb(0x71, 0x02);
-
-	/*
-	 * GP10: Debounce filter enabled, IRQ, input
-	 */
-	wb977_wb(0xe0, 0x19);
-
-	/*
-	 * Enable Group1
-	 */
-	wb977_device_enable();
-
-	wb977_device_select(8);
-
-	/*
-	 * Group2 base address
-	 */
-	wb977_ww(0x60, GP2_IO_BASE);
-
-	/*
-	 * Clear watchdog timer regs
-	 *  - timer disable
-	 */
-	wb977_wb(0xf2, 0x00);
-
-	/*
-	 *  - disable LED, no mouse nor keyboard IRQ
-	 */
-	wb977_wb(0xf3, 0x00);
-
-	/*
-	 *  - timer counting, disable power LED, disable timeouot
-	 */
-	wb977_wb(0xf4, 0x00);
-
-	/*
-	 * Enable group2
-	 */
-	wb977_device_enable();
-
-	/*
-	 * Set Group1/Group2 outputs
-	 */
-	raw_spin_lock_irqsave(&nw_gpio_lock, flags);
-	nw_gpio_modify_op(-1, GPIO_RED_LED | GPIO_FAN);
-	raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
-}
-
-/*
- * Initialise the Winbond W83977F chip.
- */
-static void __init wb977_init(void)
-{
-	request_region(0x370, 2, "W83977AF configuration");
-
-	/*
-	 * Open up the SuperIO chip
-	 */
-	wb977_open();
-
-	/*
-	 * Initialise the global registers
-	 */
-	wb977_init_global();
-
-	/*
-	 * Initialise the various devices in
-	 * the multi-IO chip.
-	 */
-	wb977_init_printer();
-	wb977_init_keyboard();
-	wb977_init_irda();
-	wb977_init_gpio();
-
-	/*
-	 * Close up the EFER gate
-	 */
-	wb977_close();
-}
-
-void nw_cpld_modify(unsigned int mask, unsigned int set)
-{
-	int msk;
-
-	current_cpld = (current_cpld & ~mask) | set;
-
-	nw_gpio_modify_io(GPIO_DATA | GPIO_IOCLK | GPIO_IOLOAD, 0);
-	nw_gpio_modify_op(GPIO_IOLOAD, 0);
-
-	for (msk = 8; msk; msk >>= 1) {
-		int bit = current_cpld & msk;
-
-		nw_gpio_modify_op(GPIO_DATA | GPIO_IOCLK, bit ? GPIO_DATA : 0);
-		nw_gpio_modify_op(GPIO_IOCLK, GPIO_IOCLK);
-	}
-
-	nw_gpio_modify_op(GPIO_IOCLK|GPIO_DATA, 0);
-	nw_gpio_modify_op(GPIO_IOLOAD|GPIO_DSCLK, GPIO_IOLOAD|GPIO_DSCLK);
-	nw_gpio_modify_op(GPIO_IOLOAD, 0);
-}
-EXPORT_SYMBOL(nw_cpld_modify);
-
-static void __init cpld_init(void)
-{
-	unsigned long flags;
-
-	raw_spin_lock_irqsave(&nw_gpio_lock, flags);
-	nw_cpld_modify(-1, CPLD_UNMUTE | CPLD_7111_DISABLE);
-	raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
-}
-
-static unsigned char rwa_unlock[] __initdata =
-{ 0x00, 0x00, 0x6a, 0xb5, 0xda, 0xed, 0xf6, 0xfb, 0x7d, 0xbe, 0xdf, 0x6f, 0x37, 0x1b,
-  0x0d, 0x86, 0xc3, 0x61, 0xb0, 0x58, 0x2c, 0x16, 0x8b, 0x45, 0xa2, 0xd1, 0xe8, 0x74,
-  0x3a, 0x9d, 0xce, 0xe7, 0x73, 0x39 };
-
-#ifndef DEBUG
-#define dprintk(x...)
-#else
-#define dprintk(x...) printk(x)
-#endif
-
-#define WRITE_RWA(r,v) do { outb((r), 0x279); udelay(10); outb((v), 0xa79); } while (0)
-
-static inline void rwa010_unlock(void)
-{
-	int i;
-
-	WRITE_RWA(2, 2);
-	mdelay(10);
-
-	for (i = 0; i < sizeof(rwa_unlock); i++) {
-		outb(rwa_unlock[i], 0x279);
-		udelay(10);
-	}
-}
-
-static inline void rwa010_read_ident(void)
-{
-	unsigned char si[9];
-	int i, j;
-
-	WRITE_RWA(3, 0);
-	WRITE_RWA(0, 128);
-
-	outb(1, 0x279);
-
-	mdelay(1);
-
-	dprintk("Identifier: ");
-	for (i = 0; i < 9; i++) {
-		si[i] = 0;
-		for (j = 0; j < 8; j++) {
-			int bit;
-			udelay(250);
-			inb(0x203);
-			udelay(250);
-			bit = inb(0x203);
-			dprintk("%02X ", bit);
-			bit = (bit == 0xaa) ? 1 : 0;
-			si[i] |= bit << j;
-		}
-		dprintk("(%02X) ", si[i]);
-	}
-	dprintk("\n");
-}
-
-static inline void rwa010_global_init(void)
-{
-	WRITE_RWA(6, 2);	// Assign a card no = 2
-
-	dprintk("Card no = %d\n", inb(0x203));
-
-	/* disable the modem section of the chip */
-	WRITE_RWA(7, 3);
-	WRITE_RWA(0x30, 0);
-
-	/* disable the cdrom section of the chip */
-	WRITE_RWA(7, 4);
-	WRITE_RWA(0x30, 0);
-
-	/* disable the MPU-401 section of the chip */
-	WRITE_RWA(7, 2);
-	WRITE_RWA(0x30, 0);
-}
-
-static inline void rwa010_game_port_init(void)
-{
-	int i;
-
-	WRITE_RWA(7, 5);
-
-	dprintk("Slider base: ");
-	WRITE_RWA(0x61, 1);
-	i = inb(0x203);
-
-	WRITE_RWA(0x60, 2);
-	dprintk("%02X%02X (201)\n", inb(0x203), i);
-
-	WRITE_RWA(0x30, 1);
-}
-
-static inline void rwa010_waveartist_init(int base, int irq, int dma)
-{
-	int i;
-
-	WRITE_RWA(7, 0);
-
-	dprintk("WaveArtist base: ");
-	WRITE_RWA(0x61, base & 255);
-	i = inb(0x203);
-
-	WRITE_RWA(0x60, base >> 8);
-	dprintk("%02X%02X (%X),", inb(0x203), i, base);
-
-	WRITE_RWA(0x70, irq);
-	dprintk(" irq: %d (%d),", inb(0x203), irq);
-
-	WRITE_RWA(0x74, dma);
-	dprintk(" dma: %d (%d)\n", inb(0x203), dma);
-
-	WRITE_RWA(0x30, 1);
-}
-
-static inline void rwa010_soundblaster_init(int sb_base, int al_base, int irq, int dma)
-{
-	int i;
-
-	WRITE_RWA(7, 1);
-
-	dprintk("SoundBlaster base: ");
-	WRITE_RWA(0x61, sb_base & 255);
-	i = inb(0x203);
-
-	WRITE_RWA(0x60, sb_base >> 8);
-	dprintk("%02X%02X (%X),", inb(0x203), i, sb_base);
-
-	dprintk(" irq: ");
-	WRITE_RWA(0x70, irq);
-	dprintk("%d (%d),", inb(0x203), irq);
-
-	dprintk(" 8-bit DMA: ");
-	WRITE_RWA(0x74, dma);
-	dprintk("%d (%d)\n", inb(0x203), dma);
-
-	dprintk("AdLib base: ");
-	WRITE_RWA(0x63, al_base & 255);
-	i = inb(0x203);
-
-	WRITE_RWA(0x62, al_base >> 8);
-	dprintk("%02X%02X (%X)\n", inb(0x203), i, al_base);
-
-	WRITE_RWA(0x30, 1);
-}
-
-static void rwa010_soundblaster_reset(void)
-{
-	int i;
-
-	outb(1, 0x226);
-	udelay(3);
-	outb(0, 0x226);
-
-	for (i = 0; i < 5; i++) {
-		if (inb(0x22e) & 0x80)
-			break;
-		mdelay(1);
-	}
-	if (i == 5)
-		printk("SoundBlaster: DSP reset failed\n");
-
-	dprintk("SoundBlaster DSP reset: %02X (AA)\n", inb(0x22a));
-
-	for (i = 0; i < 5; i++) {
-		if ((inb(0x22c) & 0x80) == 0)
-			break;
-		mdelay(1);
-	}
-
-	if (i == 5)
-		printk("SoundBlaster: DSP not ready\n");
-	else {
-		outb(0xe1, 0x22c);
-
-		dprintk("SoundBlaster DSP id: ");
-		i = inb(0x22a);
-		udelay(1);
-		i |= inb(0x22a) << 8;
-		dprintk("%04X\n", i);
-
-		for (i = 0; i < 5; i++) {
-			if ((inb(0x22c) & 0x80) == 0)
-				break;
-			mdelay(1);
-		}
-
-		if (i == 5)
-			printk("SoundBlaster: could not turn speaker off\n");
-
-		outb(0xd3, 0x22c);
-	}
-
-	/* turn on OPL3 */
-	outb(5, 0x38a);
-	outb(1, 0x38b);
-}
-
-static void __init rwa010_init(void)
-{
-	rwa010_unlock();
-	rwa010_read_ident();
-	rwa010_global_init();
-	rwa010_game_port_init();
-	rwa010_waveartist_init(0x250, 3, 7);
-	rwa010_soundblaster_init(0x220, 0x388, 3, 1);
-	rwa010_soundblaster_reset();
-}
-
-/*
- * Initialise any other hardware after we've got the PCI bus
- * initialised.  We may need the PCI bus to talk to this other
- * hardware.
- */
-static int __init nw_hw_init(void)
-{
-	if (machine_is_netwinder()) {
-		wb977_init();
-		cpld_init();
-		rwa010_init();
-	}
-	return 0;
-}
-
-__initcall(nw_hw_init);
-
-/*
- * Older NeTTroms either do not provide a parameters
- * page, or they don't supply correct information in
- * the parameter page.
- */
-static void __init
-fixup_netwinder(struct tag *tags, char **cmdline)
-{
-#ifdef CONFIG_ISAPNP
-	extern int isapnp_disable;
-
-	/*
-	 * We must not use the kernels ISAPnP code
-	 * on the NetWinder - it will reset the settings
-	 * for the WaveArtist chip and render it inoperable.
-	 */
-	isapnp_disable = 1;
-#endif
-}
-
-static void netwinder_restart(enum reboot_mode mode, const char *cmd)
-{
-	if (mode == REBOOT_SOFT) {
-		/* Jump into the ROM */
-		soft_restart(0x41000000);
-	} else {
-		local_irq_disable();
-		local_fiq_disable();
-
-		/* open up the SuperIO chip */
-		outb(0x87, 0x370);
-		outb(0x87, 0x370);
-
-		/* aux function group 1 (logical device 7) */
-		outb(0x07, 0x370);
-		outb(0x07, 0x371);
-
-		/* set GP16 for WD-TIMER output */
-		outb(0xe6, 0x370);
-		outb(0x00, 0x371);
-
-		/* set a RED LED and toggle WD_TIMER for rebooting */
-		outb(0xc4, 0x338);
-	}
-}
-
-/* LEDs */
-#if defined(CONFIG_NEW_LEDS) && defined(CONFIG_LEDS_CLASS)
-struct netwinder_led {
-	struct led_classdev     cdev;
-	u8                      mask;
-};
-
-/*
- * The triggers lines up below will only be used if the
- * LED triggers are compiled in.
- */
-static const struct {
-	const char *name;
-	const char *trigger;
-} netwinder_leds[] = {
-	{ "netwinder:green", "heartbeat", },
-	{ "netwinder:red", "cpu0", },
-};
-
-/*
- * The LED control in Netwinder is reversed:
- *  - setting bit means turn off LED
- *  - clearing bit means turn on LED
- */
-static void netwinder_led_set(struct led_classdev *cdev,
-		enum led_brightness b)
-{
-	struct netwinder_led *led = container_of(cdev,
-			struct netwinder_led, cdev);
-	unsigned long flags;
-	u32 reg;
-
-	raw_spin_lock_irqsave(&nw_gpio_lock, flags);
-	reg = nw_gpio_read();
-	if (b != LED_OFF)
-		reg &= ~led->mask;
-	else
-		reg |= led->mask;
-	nw_gpio_modify_op(led->mask, reg);
-	raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
-}
-
-static enum led_brightness netwinder_led_get(struct led_classdev *cdev)
-{
-	struct netwinder_led *led = container_of(cdev,
-			struct netwinder_led, cdev);
-	unsigned long flags;
-	u32 reg;
-
-	raw_spin_lock_irqsave(&nw_gpio_lock, flags);
-	reg = nw_gpio_read();
-	raw_spin_unlock_irqrestore(&nw_gpio_lock, flags);
-
-	return (reg & led->mask) ? LED_OFF : LED_FULL;
-}
-
-static int __init netwinder_leds_init(void)
-{
-	int i;
-
-	if (!machine_is_netwinder())
-		return -ENODEV;
-
-	for (i = 0; i < ARRAY_SIZE(netwinder_leds); i++) {
-		struct netwinder_led *led;
-
-		led = kzalloc_obj(*led);
-		if (!led)
-			break;
-
-		led->cdev.name = netwinder_leds[i].name;
-		led->cdev.brightness_set = netwinder_led_set;
-		led->cdev.brightness_get = netwinder_led_get;
-		led->cdev.default_trigger = netwinder_leds[i].trigger;
-
-		if (i == 0)
-			led->mask = GPIO_GREEN_LED;
-		else
-			led->mask = GPIO_RED_LED;
-
-		if (led_classdev_register(NULL, &led->cdev) < 0) {
-			kfree(led);
-			break;
-		}
-	}
-
-	return 0;
-}
-
-/*
- * Since we may have triggers on any subsystem, defer registration
- * until after subsystem_init.
- */
-fs_initcall(netwinder_leds_init);
-#endif
-
-MACHINE_START(NETWINDER, "Rebel-NetWinder")
-	/* Maintainer: Russell King/Rebel.com */
-	.atag_offset	= 0x100,
-	.video_start	= 0x000a0000,
-	.video_end	= 0x000bffff,
-	.reserve_lp0	= 1,
-	.reserve_lp2	= 1,
-	.fixup		= fixup_netwinder,
-	.map_io		= footbridge_map_io,
-	.init_irq	= footbridge_init_irq,
-	.init_time	= isa_timer_init,
-	.restart	= netwinder_restart,
-MACHINE_END
diff --git a/arch/arm/mach-footbridge/netwinder-pci.c b/arch/arm/mach-footbridge/netwinder-pci.c
deleted file mode 100644
index e8304392074b..000000000000
--- a/arch/arm/mach-footbridge/netwinder-pci.c
+++ /dev/null
@@ -1,62 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * linux/arch/arm/mach-footbridge/netwinder-pci.c
- *
- * PCI bios-type initialisation for PCI machines
- *
- * Bits taken from various places.
- */
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-
-#include <asm/irq.h>
-#include <asm/mach/pci.h>
-#include <asm/mach-types.h>
-
-/*
- * We now use the slot ID instead of the device identifiers to select
- * which interrupt is routed where.
- */
-static int netwinder_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-	switch (slot) {
-	case 0:  /* host bridge */
-		return 0;
-
-	case 9:  /* CyberPro */
-		return IRQ_NETWINDER_VGA;
-
-	case 10: /* DC21143 */
-		return IRQ_NETWINDER_ETHER100;
-
-	case 12: /* Winbond 553 */
-		return IRQ_ISA_HARDDISK1;
-
-	case 13: /* Winbond 89C940F */
-		return IRQ_NETWINDER_ETHER10;
-
-	default:
-		printk(KERN_ERR "PCI: unknown device in slot %s\n",
-			pci_name(dev));
-		return 0;
-	}
-}
-
-static struct hw_pci netwinder_pci __initdata = {
-	.map_irq		= netwinder_map_irq,
-	.nr_controllers		= 1,
-	.ops			= &dc21285_ops,
-	.setup			= dc21285_setup,
-	.preinit		= dc21285_preinit,
-	.postinit		= dc21285_postinit,
-};
-
-static int __init netwinder_pci_init(void)
-{
-	if (machine_is_netwinder())
-		pci_common_init(&netwinder_pci);
-	return 0;
-}
-
-subsys_initcall(netwinder_pci_init);
diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
index 9f81af3506da..d8e3d307f50f 100644
--- a/drivers/video/console/Kconfig
+++ b/drivers/video/console/Kconfig
@@ -8,7 +8,6 @@ menu "Console display driver support"
 config VGA_CONSOLE
 	bool "VGA text console" if EXPERT || !X86
 	depends on ALPHA || X86 || \
-		(ARM && ARCH_FOOTBRIDGE) || \
 		(MIPS && (MIPS_MALTA || SIBYTE_BCM112X || SIBYTE_SB1250 || SIBYTE_BCM1x80 || SNI_RM))
 	select APERTURE_HELPERS if (DRM || FB || VFIO_PCI_CORE)
 	default y
@@ -36,7 +35,7 @@ config DUMMY_CONSOLE
 
 config DUMMY_CONSOLE_COLUMNS
 	int "Initial number of console screen columns"
-	depends on DUMMY_CONSOLE && !(ARCH_FOOTBRIDGE && VGA_CONSOLE)
+	depends on DUMMY_CONSOLE
 	default 160 if PARISC
 	default 80
 	help
@@ -46,9 +45,8 @@ config DUMMY_CONSOLE_COLUMNS
 
 config DUMMY_CONSOLE_ROWS
 	int "Initial number of console screen rows"
-	depends on DUMMY_CONSOLE && !(ARCH_FOOTBRIDGE && VGA_CONSOLE)
+	depends on DUMMY_CONSOLE
 	default 64 if PARISC
-	default 30 if ARM
 	default 25
 	help
 	  On PA-RISC, the default value is 64, which should fit a 1280x1024
diff --git a/drivers/video/console/dummycon.c b/drivers/video/console/dummycon.c
index 7d02470f19b9..48ebbc5bf6a8 100644
--- a/drivers/video/console/dummycon.c
+++ b/drivers/video/console/dummycon.c
@@ -18,15 +18,9 @@
  *  Dummy console driver
  */
 
-#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_VGA_CONSOLE)
-#include <asm/vga.h>
-#define DUMMY_COLUMNS	vgacon_screen_info.orig_video_cols
-#define DUMMY_ROWS	vgacon_screen_info.orig_video_lines
-#else
 /* set by Kconfig. Use 80x25 for 640x480 and 160x64 for 1280x1024 */
 #define DUMMY_COLUMNS	CONFIG_DUMMY_CONSOLE_COLUMNS
 #define DUMMY_ROWS	CONFIG_DUMMY_CONSOLE_ROWS
-#endif
 
 #ifdef CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER
 /* These are both protected by the console_lock */
diff --git a/drivers/video/fbdev/cyber2000fb.c b/drivers/video/fbdev/cyber2000fb.c
index 5c7349722125..aa15c7be4fa5 100644
--- a/drivers/video/fbdev/cyber2000fb.c
+++ b/drivers/video/fbdev/cyber2000fb.c
@@ -1723,16 +1723,6 @@ static int cyberpro_pci_probe(struct pci_dev *dev,
 	cfb->mclk_mult = cyber2000_grphr(EXT_MCLK_MULT, cfb);
 	cfb->mclk_div  = cyber2000_grphr(EXT_MCLK_DIV, cfb);
 
-#ifdef __arm__
-	/*
-	 * MCLK on the NetWinder and the Shark is fixed at 75MHz
-	 */
-	if (machine_is_netwinder()) {
-		cfb->mclk_mult = 0xdb;
-		cfb->mclk_div  = 0x54;
-	}
-#endif
-
 	err = cyberpro_common_probe(cfb);
 	if (err)
 		goto failed;
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 03/13] ARM: remove riscpc
  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 15:27 ` [PATCH 02/13] ARM: remove footbridge Arnd Bergmann
@ 2026-09-08 15:27 ` Arnd Bergmann
  2026-09-09  8:04   ` Thomas Zimmermann
  2026-09-09 16:42   ` Bart Van Assche
  2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files Arnd Bergmann
                   ` (10 subsequent siblings)
  13 siblings, 2 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Ian Molton, Jens Axboe,
	Helge Deller, Thomas Zimmermann, Paul E. McKenney, linux-block,
	linux-serial, linux-fbdev

From: Arnd Bergmann <arnd@arndb.de>

The Acorn Risc PC is the oldest still support Arm machine in the kernel,
originally shipped with an ARMv3 ARM610 support in 1994, it later allowed
faster StrongARM CPUs.

The main limitation here is the CPU bus that does not allow 16-bit
wide data transfers and hence requires the kernel to be built with the
-march=armv3 compiler option that was discontinued in gcc-9.

As gcc-8 is barely supported for compiling the kernel, this one
will not see another LTS kernel release, so remove it now.

Cc: Russell King <linux@armlinux.org.uk>
Cc: Ian Molton <spyro@f2s.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Helge Deller <deller@gmx.de>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Karl Mehltretter <kmehltretter@gmail.com>
Cc: "Paul E. McKenney" <paulmck@kernel.org>
Cc: linux-block@vger.kernel.org
Cc: linux-serial@vger.kernel.org
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 MAINTAINERS                                 |   20 -
 arch/arm/Kconfig                            |   33 +-
 arch/arm/Kconfig.debug                      |    8 +-
 arch/arm/boot/bootp/Makefile                |    2 -
 arch/arm/boot/compressed/Makefile           |    4 -
 arch/arm/boot/compressed/font.c             |    2 -
 arch/arm/boot/compressed/head.S             |    8 -
 arch/arm/boot/compressed/ll_char_wr.S       |  131 ---
 arch/arm/configs/rpc_defconfig              |  127 --
 arch/arm/include/asm/ecard.h                |  219 ----
 arch/arm/include/asm/hardware/ioc.h         |   69 --
 arch/arm/include/asm/hardware/iomd.h        |  182 ---
 arch/arm/include/asm/hardware/memc.h        |   23 -
 arch/arm/include/asm/io.h                   |    5 +-
 arch/arm/include/asm/memory.h               |    3 -
 arch/arm/kernel/head-common.S               |   13 -
 arch/arm/kernel/head.S                      |   12 -
 arch/arm/lib/delay-loop.S                   |    4 -
 arch/arm/mach-rpc/Kconfig                   |   24 -
 arch/arm/mach-rpc/Makefile                  |    9 -
 arch/arm/mach-rpc/dma.c                     |  393 -------
 arch/arm/mach-rpc/ecard-loader.S            |   40 -
 arch/arm/mach-rpc/ecard.c                   | 1146 -------------------
 arch/arm/mach-rpc/ecard.h                   |   66 --
 arch/arm/mach-rpc/fiq.S                     |   18 -
 arch/arm/mach-rpc/floppydma.S               |   29 -
 arch/arm/mach-rpc/include/mach/acornfb.h    |  137 ---
 arch/arm/mach-rpc/include/mach/hardware.h   |   73 --
 arch/arm/mach-rpc/include/mach/io.h         |   28 -
 arch/arm/mach-rpc/include/mach/irqs.h       |   42 -
 arch/arm/mach-rpc/include/mach/isa-dma.h    |   26 -
 arch/arm/mach-rpc/include/mach/memory.h     |   32 -
 arch/arm/mach-rpc/include/mach/uncompress.h |  181 ---
 arch/arm/mach-rpc/io-acorn.S                |   28 -
 arch/arm/mach-rpc/irq.c                     |  226 ----
 arch/arm/mach-rpc/riscpc.c                  |  225 ----
 arch/arm/mach-rpc/time.c                    |   97 --
 arch/arm/mm/mmu.c                           |    2 +-
 block/partitions/Kconfig                    |    7 -
 drivers/tty/vt/keyboard.c                   |    2 +-
 lib/fonts/font_acorn_8x8.c                  |    4 -
 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
 };
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 04/13] ARM: remove legacy pxa board files
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (2 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 03/13] ARM: remove riscpc Arnd Bergmann
@ 2026-09-08 15:27 ` 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
                   ` (9 subsequent siblings)
  13 siblings, 2 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Daniel Mack,
	Haojian Zhuang, Bartosz Golaszewski

From: Arnd Bergmann <arnd@arndb.de>

The PXA platform supports devicetree based booting, but still has a
few traditional board files, which were left as a starting point for a
possible conversion to devicetree during the last mass purge of board
files in 2022.

None of these boards were actually converted, so drop support for these
now, along with the 'scoop' support chip that was used on some PDAs that
are no longer usable now.

The only remaining board support is for the "Raumfeld" speaker system
based on PXA300 SoC, though basic support for PXA250 and PXA270 is still
there and may work with external dts files.

Cc: Daniel Mack <daniel@zonque.org>
Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
Cc: Robert Jarzmik <robert.jarzmik@free.fr>
Cc: Linus Walleij <linusw@kernel.org>
Cc: Bartosz Golaszewski <brgl@kernel.org>
Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/boot/compressed/Makefile         |    4 -
 arch/arm/boot/compressed/head-sharpsl.S   |  151 ---
 arch/arm/common/Kconfig                   |    6 -
 arch/arm/common/Makefile                  |    2 -
 arch/arm/common/scoop.c                   |  269 -----
 arch/arm/common/sharpsl_param.c           |   63 --
 arch/arm/configs/am200epdkit_defconfig    |   91 --
 arch/arm/configs/spitz_defconfig          |  237 -----
 arch/arm/include/asm/hardware/scoop.h     |   67 --
 arch/arm/include/asm/mach/sharpsl_param.h |   33 -
 arch/arm/mach-pxa/Kconfig                 |   89 --
 arch/arm/mach-pxa/Makefile                |    8 -
 arch/arm/mach-pxa/am200epd.c              |  395 -------
 arch/arm/mach-pxa/am300epd.c              |  296 ------
 arch/arm/mach-pxa/devices.c               |  705 -------------
 arch/arm/mach-pxa/devices.h               |   68 --
 arch/arm/mach-pxa/generic.h               |    5 -
 arch/arm/mach-pxa/gumstix.c               |  237 -----
 arch/arm/mach-pxa/gumstix.h               |   89 --
 arch/arm/mach-pxa/pxa25x.c                |   59 --
 arch/arm/mach-pxa/pxa27x.c                |   77 --
 arch/arm/mach-pxa/pxa300.c                |    1 -
 arch/arm/mach-pxa/pxa320.c                |    1 -
 arch/arm/mach-pxa/pxa3xx.c                |    6 -
 arch/arm/mach-pxa/sharpsl_pm.c            |  941 -----------------
 arch/arm/mach-pxa/sharpsl_pm.h            |  108 --
 arch/arm/mach-pxa/spitz.c                 | 1174 ---------------------
 arch/arm/mach-pxa/spitz.h                 |  185 ----
 arch/arm/mach-pxa/spitz_pm.c              |  257 -----
 29 files changed, 5624 deletions(-)
 delete mode 100644 arch/arm/boot/compressed/head-sharpsl.S
 delete mode 100644 arch/arm/common/scoop.c
 delete mode 100644 arch/arm/common/sharpsl_param.c
 delete mode 100644 arch/arm/configs/am200epdkit_defconfig
 delete mode 100644 arch/arm/configs/spitz_defconfig
 delete mode 100644 arch/arm/include/asm/hardware/scoop.h
 delete mode 100644 arch/arm/include/asm/mach/sharpsl_param.h
 delete mode 100644 arch/arm/mach-pxa/am200epd.c
 delete mode 100644 arch/arm/mach-pxa/am300epd.c
 delete mode 100644 arch/arm/mach-pxa/devices.h
 delete mode 100644 arch/arm/mach-pxa/gumstix.c
 delete mode 100644 arch/arm/mach-pxa/gumstix.h
 delete mode 100644 arch/arm/mach-pxa/sharpsl_pm.c
 delete mode 100644 arch/arm/mach-pxa/sharpsl_pm.h
 delete mode 100644 arch/arm/mach-pxa/spitz.c
 delete mode 100644 arch/arm/mach-pxa/spitz.h
 delete mode 100644 arch/arm/mach-pxa/spitz_pm.c

diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 32def10f5e03..232b646bfd26 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -29,10 +29,6 @@ ifeq ($(CONFIG_CPU_XSCALE),y)
 OBJS		+= head-xscale.o
 endif
 
-ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y)
-OBJS		+= head-sharpsl.o
-endif
-
 ifeq ($(CONFIG_CPU_ENDIAN_BE32),y)
 ifeq ($(CONFIG_CPU_CP15),y)
 OBJS		+= big-endian.o
diff --git a/arch/arm/boot/compressed/head-sharpsl.S b/arch/arm/boot/compressed/head-sharpsl.S
deleted file mode 100644
index 992e784500fa..000000000000
--- a/arch/arm/boot/compressed/head-sharpsl.S
+++ /dev/null
@@ -1,151 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * linux/arch/arm/boot/compressed/head-sharpsl.S
- *
- * Copyright (C) 2004-2005 Richard Purdie <rpurdie@rpsys.net>
- *
- * Sharp's bootloader doesn't pass any kind of machine ID
- * so we have to figure out the machine for ourselves...
- *
- * Support for Poodle, Corgi (SL-C700), Shepherd (SL-C750)
- * Husky (SL-C760), Tosa (SL-C6000), Spitz (SL-C3000),
- * Akita (SL-C1000) and Borzoi (SL-C3100).
- *
- */
-
-#include <linux/linkage.h>
-#include <asm/mach-types.h>
-
-#ifndef CONFIG_PXA_SHARPSL
-#error What am I doing here...
-#endif
-
-		.section        ".start", "ax"
-
-__SharpSL_start:
-
-/* Check for TC6393 - if found we have a Tosa */
-	ldr	r7, .TOSAID
-	mov	r1, #0x10000000		@ Base address of TC6393 chip
-	mov 	r6, #0x03
-	ldrh	r3, [r1, #8]		@ Load TC6393XB Revison: This is 0x0003
-	cmp	r6, r3
-	beq	.SHARPEND		@ Success -> tosa
-
-/* Check for pxa270 - if found, branch */
-	mrc p15, 0, r4, c0, c0		@ Get Processor ID
-	and	r4, r4, #0xffffff00
-	ldr	r3, .PXA270ID
-	cmp	r4, r3
-	beq	.PXA270
-
-/* Check for w100 - if not found we have a Poodle */
-	ldr	r1, .W100ADDR		@ Base address of w100 chip + regs offset
-
-	mov r6, #0x31			@ Load Magic Init value
-	str	r6, [r1, #0x280]	@ to SCRATCH_UMSK
-	mov r5, #0x3000
-.W100LOOP:
-	subs r5, r5, #1
-	bne .W100LOOP
-	mov r6, #0x30			@ Load 2nd Magic Init value
-	str	r6, [r1, #0x280]	@ to SCRATCH_UMSK
-
-	ldr	r6, [r1, #0]		@ Load Chip ID
-	ldr	r3, .W100ID
-	ldr	r7, .POODLEID
-	cmp	r6, r3
-	bne	.SHARPEND			@ We have no w100 - Poodle
-
-/* Check for pxa250 - if found we have a Corgi */
-	ldr	r7, .CORGIID
-	ldr	r3, .PXA255ID
-	cmp	r4, r3
-	blo	.SHARPEND			@ We have a PXA250 - Corgi
-
-/* Check for 64MiB flash - if found we have a Shepherd */
-	bl	get_flash_ids
-	ldr	r7, .SHEPHERDID
-	cmp	r3, #0x76			@ 64MiB flash
-	beq	.SHARPEND			@ We have Shepherd
-
-/* Must be a Husky */
-	ldr	r7, .HUSKYID		@ Must be Husky
-	b .SHARPEND
-
-.PXA270:
-/* Check for 16MiB flash - if found we have Spitz */
-	bl	get_flash_ids
-	ldr	r7, .SPITZID
-	cmp	r3, #0x73			@ 16MiB flash
-	beq	.SHARPEND			@ We have Spitz
-
-/* Check for a second SCOOP chip - if found we have Borzoi */
-	ldr	r1, .SCOOP2ADDR
-	ldr	r7, .BORZOIID
-	mov 	r6, #0x0140
-	strh	r6, [r1]
-	ldrh	r6, [r1]
-	cmp	r6, #0x0140
-	beq	.SHARPEND			@ We have Borzoi
-
-/* Must be Akita */
-	ldr	r7, .AKITAID
-	b	.SHARPEND			@ We have Borzoi
-
-.PXA255ID:
-	.word	0x69052d00		@ PXA255 Processor ID
-.PXA270ID:
-	.word	0x69054100		@ PXA270 Processor ID
-.W100ID:
-	.word	0x57411002		@ w100 Chip ID
-.W100ADDR:
-	.word 	0x08010000		@ w100 Chip ID Reg Address
-.SCOOP2ADDR:
-	.word	0x08800040
-.POODLEID:
-	.word	MACH_TYPE_POODLE
-.CORGIID:
-	.word	MACH_TYPE_CORGI
-.SHEPHERDID:
-	.word	MACH_TYPE_SHEPHERD
-.HUSKYID:
-	.word	MACH_TYPE_HUSKY
-.TOSAID:
-	.word	MACH_TYPE_TOSA
-.SPITZID:
-	.word	MACH_TYPE_SPITZ
-.AKITAID:
-	.word	MACH_TYPE_AKITA
-.BORZOIID:
-	.word	MACH_TYPE_BORZOI
-
-/*
- * Return: r2 - NAND Manufacturer ID
- *         r3 - NAND Chip ID
- * Corrupts: r1
- */
-get_flash_ids:
-	mov	r1, #0x0c000000		@ Base address of NAND chip
-	ldrb	r3, [r1, #24]		@ Load FLASHCTL
-	bic	r3, r3, #0x11		@ SET NCE
-	orr	r3, r3, #0x0a		@ SET CLR + FLWP
-	strb	r3, [r1, #24]		@ Save to FLASHCTL
-	mov 	r2, #0x90		@ Command "readid"
-	strb	r2, [r1, #20]		@ Save to FLASHIO
-	bic	r3, r3, #2		@ CLR CLE
-	orr	r3, r3, #4		@ SET ALE
-	strb	r3, [r1, #24]		@ Save to FLASHCTL
-	mov	r2, #0			@ Address 0x00
-	strb	r2, [r1, #20]		@ Save to FLASHIO
-	bic	r3, r3, #4		@ CLR ALE
-	strb	r3, [r1, #24]		@ Save to FLASHCTL
-.fids1:
-	ldrb	r3, [r1, #24]		@ Load FLASHCTL
-	tst	r3, #32			@ Is chip ready?
-	beq	.fids1
-	ldrb	r2, [r1, #20]		@ NAND Manufacturer ID
-	ldrb	r3, [r1, #20]		@ NAND Chip ID
-	mov	pc, lr
-
-.SHARPEND:
diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
index d72dccf6f3c2..cf75be68d05c 100644
--- a/arch/arm/common/Kconfig
+++ b/arch/arm/common/Kconfig
@@ -1,9 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0
 config KRAIT_L2_ACCESSORS
 	bool
-
-config SHARP_PARAM
-	bool
-
-config SHARP_SCOOP
-	bool
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
index e1bcc250874f..1935b23700b0 100644
--- a/arch/arm/common/Makefile
+++ b/arch/arm/common/Makefile
@@ -6,8 +6,6 @@
 obj-y				+= firmware.o
 
 obj-$(CONFIG_KRAIT_L2_ACCESSORS) += krait-l2-accessors.o
-obj-$(CONFIG_SHARP_PARAM)	+= sharpsl_param.o
-obj-$(CONFIG_SHARP_SCOOP)	+= scoop.o
 obj-$(CONFIG_CPU_V7)		+= secure_cntvoff.o
 obj-$(CONFIG_MCPM)		+= mcpm_head.o mcpm_entry.o mcpm_platsmp.o vlock.o
 CFLAGS_REMOVE_mcpm_entry.o	= -pg
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
deleted file mode 100644
index 90474994757c..000000000000
--- a/arch/arm/common/scoop.c
+++ /dev/null
@@ -1,269 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Support code for the SCOOP interface found on various Sharp PDAs
- *
- * Copyright (c) 2004 Richard Purdie
- *
- *	Based on code written by Sharp/Lineo for 2.4 kernels
- */
-
-#include <linux/device.h>
-#include <linux/gpio/driver.h>
-#include <linux/string.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-#include <linux/export.h>
-#include <linux/io.h>
-#include <asm/hardware/scoop.h>
-
-/* PCMCIA to Scoop linkage
-
-   There is no easy way to link multiple scoop devices into one
-   single entity for the pxa2xx_pcmcia device so this structure
-   is used which is setup by the platform code.
-
-   This file is never modular so this symbol is always
-   accessile to the board support files.
-*/
-struct scoop_pcmcia_config *platform_scoop_config;
-EXPORT_SYMBOL(platform_scoop_config);
-
-struct  scoop_dev {
-	void __iomem *base;
-	struct gpio_chip gpio;
-	spinlock_t scoop_lock;
-	unsigned short suspend_clr;
-	unsigned short suspend_set;
-	u32 scoop_gpwr;
-};
-
-void reset_scoop(struct device *dev)
-{
-	struct scoop_dev *sdev = dev_get_drvdata(dev);
-
-	iowrite16(0x0100, sdev->base + SCOOP_MCR);  /* 00 */
-	iowrite16(0x0000, sdev->base + SCOOP_CDR);  /* 04 */
-	iowrite16(0x0000, sdev->base + SCOOP_CCR);  /* 10 */
-	iowrite16(0x0000, sdev->base + SCOOP_IMR);  /* 18 */
-	iowrite16(0x00FF, sdev->base + SCOOP_IRM);  /* 14 */
-	iowrite16(0x0000, sdev->base + SCOOP_ISR);  /* 1C */
-	iowrite16(0x0000, sdev->base + SCOOP_IRM);
-}
-
-static void __scoop_gpio_set(struct scoop_dev *sdev,
-			unsigned offset, int value)
-{
-	unsigned short gpwr;
-
-	gpwr = ioread16(sdev->base + SCOOP_GPWR);
-	if (value)
-		gpwr |= 1 << (offset + 1);
-	else
-		gpwr &= ~(1 << (offset + 1));
-	iowrite16(gpwr, sdev->base + SCOOP_GPWR);
-}
-
-static int scoop_gpio_set(struct gpio_chip *chip, unsigned int offset,
-			  int value)
-{
-	struct scoop_dev *sdev = gpiochip_get_data(chip);
-	unsigned long flags;
-
-	spin_lock_irqsave(&sdev->scoop_lock, flags);
-
-	__scoop_gpio_set(sdev, offset, value);
-
-	spin_unlock_irqrestore(&sdev->scoop_lock, flags);
-
-	return 0;
-}
-
-static int scoop_gpio_get(struct gpio_chip *chip, unsigned offset)
-{
-	struct scoop_dev *sdev = gpiochip_get_data(chip);
-
-	/* XXX: I'm unsure, but it seems so */
-	return !!(ioread16(sdev->base + SCOOP_GPRR) & (1 << (offset + 1)));
-}
-
-static int scoop_gpio_direction_input(struct gpio_chip *chip,
-			unsigned offset)
-{
-	struct scoop_dev *sdev = gpiochip_get_data(chip);
-	unsigned long flags;
-	unsigned short gpcr;
-
-	spin_lock_irqsave(&sdev->scoop_lock, flags);
-
-	gpcr = ioread16(sdev->base + SCOOP_GPCR);
-	gpcr &= ~(1 << (offset + 1));
-	iowrite16(gpcr, sdev->base + SCOOP_GPCR);
-
-	spin_unlock_irqrestore(&sdev->scoop_lock, flags);
-
-	return 0;
-}
-
-static int scoop_gpio_direction_output(struct gpio_chip *chip,
-			unsigned offset, int value)
-{
-	struct scoop_dev *sdev = gpiochip_get_data(chip);
-	unsigned long flags;
-	unsigned short gpcr;
-
-	spin_lock_irqsave(&sdev->scoop_lock, flags);
-
-	__scoop_gpio_set(sdev, offset, value);
-
-	gpcr = ioread16(sdev->base + SCOOP_GPCR);
-	gpcr |= 1 << (offset + 1);
-	iowrite16(gpcr, sdev->base + SCOOP_GPCR);
-
-	spin_unlock_irqrestore(&sdev->scoop_lock, flags);
-
-	return 0;
-}
-
-unsigned short read_scoop_reg(struct device *dev, unsigned short reg)
-{
-	struct scoop_dev *sdev = dev_get_drvdata(dev);
-	return ioread16(sdev->base + reg);
-}
-
-void write_scoop_reg(struct device *dev, unsigned short reg, unsigned short data)
-{
-	struct scoop_dev *sdev = dev_get_drvdata(dev);
-	iowrite16(data, sdev->base + reg);
-}
-
-EXPORT_SYMBOL(reset_scoop);
-EXPORT_SYMBOL(read_scoop_reg);
-EXPORT_SYMBOL(write_scoop_reg);
-
-#ifdef CONFIG_PM
-static void check_scoop_reg(struct scoop_dev *sdev)
-{
-	unsigned short mcr;
-
-	mcr = ioread16(sdev->base + SCOOP_MCR);
-	if ((mcr & 0x100) == 0)
-		iowrite16(0x0101, sdev->base + SCOOP_MCR);
-}
-
-static int scoop_suspend(struct platform_device *dev, pm_message_t state)
-{
-	struct scoop_dev *sdev = platform_get_drvdata(dev);
-
-	check_scoop_reg(sdev);
-	sdev->scoop_gpwr = ioread16(sdev->base + SCOOP_GPWR);
-	iowrite16((sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set, sdev->base + SCOOP_GPWR);
-
-	return 0;
-}
-
-static int scoop_resume(struct platform_device *dev)
-{
-	struct scoop_dev *sdev = platform_get_drvdata(dev);
-
-	check_scoop_reg(sdev);
-	iowrite16(sdev->scoop_gpwr, sdev->base + SCOOP_GPWR);
-
-	return 0;
-}
-#else
-#define scoop_suspend	NULL
-#define scoop_resume	NULL
-#endif
-
-static int scoop_probe(struct platform_device *pdev)
-{
-	struct scoop_dev *devptr;
-	struct scoop_config *inf;
-	struct resource *mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	int ret;
-
-	if (!mem)
-		return -EINVAL;
-
-	devptr = kzalloc_obj(struct scoop_dev);
-	if (!devptr)
-		return -ENOMEM;
-
-	spin_lock_init(&devptr->scoop_lock);
-
-	inf = pdev->dev.platform_data;
-	devptr->base = ioremap(mem->start, resource_size(mem));
-
-	if (!devptr->base) {
-		ret = -ENOMEM;
-		goto err_ioremap;
-	}
-
-	platform_set_drvdata(pdev, devptr);
-
-	printk("Sharp Scoop Device found at 0x%08x -> 0x%8p\n",(unsigned int)mem->start, devptr->base);
-
-	iowrite16(0x0140, devptr->base + SCOOP_MCR);
-	reset_scoop(&pdev->dev);
-	iowrite16(0x0000, devptr->base + SCOOP_CPR);
-	iowrite16(inf->io_dir & 0xffff, devptr->base + SCOOP_GPCR);
-	iowrite16(inf->io_out & 0xffff, devptr->base + SCOOP_GPWR);
-
-	devptr->suspend_clr = inf->suspend_clr;
-	devptr->suspend_set = inf->suspend_set;
-
-	devptr->gpio.base = -1;
-
-	if (inf->gpio_base != 0) {
-		devptr->gpio.label = dev_name(&pdev->dev);
-		devptr->gpio.base = inf->gpio_base;
-		devptr->gpio.ngpio = 12; /* PA11 = 0, PA12 = 1, etc. up to PA22 = 11 */
-		devptr->gpio.set = scoop_gpio_set;
-		devptr->gpio.get = scoop_gpio_get;
-		devptr->gpio.direction_input = scoop_gpio_direction_input;
-		devptr->gpio.direction_output = scoop_gpio_direction_output;
-
-		ret = gpiochip_add_data(&devptr->gpio, devptr);
-		if (ret)
-			goto err_gpio;
-	}
-
-	return 0;
-
-err_gpio:
-	platform_set_drvdata(pdev, NULL);
-err_ioremap:
-	iounmap(devptr->base);
-	kfree(devptr);
-
-	return ret;
-}
-
-static void scoop_remove(struct platform_device *pdev)
-{
-	struct scoop_dev *sdev = platform_get_drvdata(pdev);
-
-	if (sdev->gpio.base != -1)
-		gpiochip_remove(&sdev->gpio);
-
-	platform_set_drvdata(pdev, NULL);
-	iounmap(sdev->base);
-	kfree(sdev);
-}
-
-static struct platform_driver scoop_driver = {
-	.probe		= scoop_probe,
-	.remove		= scoop_remove,
-	.suspend	= scoop_suspend,
-	.resume		= scoop_resume,
-	.driver		= {
-		.name	= "sharp-scoop",
-	},
-};
-
-static int __init scoop_init(void)
-{
-	return platform_driver_register(&scoop_driver);
-}
-
-subsys_initcall(scoop_init);
diff --git a/arch/arm/common/sharpsl_param.c b/arch/arm/common/sharpsl_param.c
deleted file mode 100644
index 1ca26c063f80..000000000000
--- a/arch/arm/common/sharpsl_param.c
+++ /dev/null
@@ -1,63 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Hardware parameter area specific to Sharp SL series devices
- *
- * Copyright (c) 2005 Richard Purdie
- *
- * Based on Sharp's 2.4 kernel patches
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/string.h>
-#include <asm/mach/sharpsl_param.h>
-#include <asm/page.h>
-
-/*
- * Certain hardware parameters determined at the time of device manufacture,
- * typically including LCD parameters are loaded by the bootloader at the
- * address PARAM_BASE. As the kernel will overwrite them, we need to store
- * them early in the boot process, then pass them to the appropriate drivers.
- * Not all devices use all parameters but the format is common to all.
- */
-#ifdef CONFIG_ARCH_SA1100
-#define PARAM_BASE	0xe8ffc000
-#define param_start(x)	(void *)(x)
-#else
-#define PARAM_BASE	0xa0000a00
-#define param_start(x)	__va(x)
-#endif
-#define MAGIC_CHG(a,b,c,d) ( ( d << 24 ) | ( c << 16 )  | ( b << 8 ) | a )
-
-#define COMADJ_MAGIC	MAGIC_CHG('C','M','A','D')
-#define UUID_MAGIC	MAGIC_CHG('U','U','I','D')
-#define TOUCH_MAGIC	MAGIC_CHG('T','U','C','H')
-#define AD_MAGIC	MAGIC_CHG('B','V','A','D')
-#define PHAD_MAGIC	MAGIC_CHG('P','H','A','D')
-
-struct sharpsl_param_info sharpsl_param;
-EXPORT_SYMBOL(sharpsl_param);
-
-void sharpsl_save_param(void)
-{
-	struct sharpsl_param_info *params = param_start(PARAM_BASE);
-
-	memcpy(&sharpsl_param, params, sizeof(*params));
-
-	if (sharpsl_param.comadj_keyword != COMADJ_MAGIC)
-		sharpsl_param.comadj=-1;
-
-	if (sharpsl_param.phad_keyword != PHAD_MAGIC)
-		sharpsl_param.phadadj=-1;
-
-	if (sharpsl_param.uuid_keyword != UUID_MAGIC)
-		sharpsl_param.uuid[0]=-1;
-
-	if (sharpsl_param.touch_keyword != TOUCH_MAGIC)
-		sharpsl_param.touch_xp=-1;
-
-	if (sharpsl_param.adadj_keyword != AD_MAGIC)
-		sharpsl_param.adadj=-1;
-}
-
-
diff --git a/arch/arm/configs/am200epdkit_defconfig b/arch/arm/configs/am200epdkit_defconfig
deleted file mode 100644
index 61beac88e863..000000000000
--- a/arch/arm/configs/am200epdkit_defconfig
+++ /dev/null
@@ -1,91 +0,0 @@
-CONFIG_LOCALVERSION="gum"
-CONFIG_SYSVIPC=y
-CONFIG_PREEMPT=y
-CONFIG_EXPERT=y
-# CONFIG_EPOLL is not set
-# CONFIG_SHMEM is not set
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_PXA=y
-CONFIG_ARCH_GUMSTIX=y
-CONFIG_ATAGS=y
-CONFIG_CMDLINE="console=ttyS0,115200n8 root=1f01 rootfstype=jffs2"
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_SWAP is not set
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_NET=y
-CONFIG_PACKET=m
-CONFIG_UNIX=y
-CONFIG_INET=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_INET_DIAG is not set
-# CONFIG_IPV6 is not set
-CONFIG_BT=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_PCCARD=y
-CONFIG_MTD=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-# CONFIG_MTD_CFI_I2 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PXA2XX=y
-CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_SD=m
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_ATA=m
-CONFIG_PATA_PCMCIA=m
-CONFIG_NETDEVICES=y
-CONFIG_SMC91X=m
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-# CONFIG_HWMON is not set
-CONFIG_WATCHDOG=y
-CONFIG_SA1100_WATCHDOG=m
-CONFIG_FB=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
-CONFIG_FB_MBX=m
-CONFIG_FB_VIRTUAL=m
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_SOUND=m
-CONFIG_SND=m
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
-# CONFIG_SND_VERBOSE_PROCFS is not set
-CONFIG_SND_PXA2XX_AC97=m
-CONFIG_USB_GADGET=y
-CONFIG_USB_ETH=m
-CONFIG_MMC=y
-CONFIG_MMC_PXA=y
-# CONFIG_DNOTIFY is not set
-CONFIG_VFAT_FS=y
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_RUBIN=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DETECT_SOFTLOCKUP is not set
-CONFIG_CRYPTO=y
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_ARC4=m
-# CONFIG_DEBUG_BUGVERBOSE is not set
-# CONFIG_DEBUG_PREEMPT is not set
-CONFIG_DEBUG_USER=y
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig
deleted file mode 100644
index c7cf089001bf..000000000000
--- a/arch/arm/configs/spitz_defconfig
+++ /dev/null
@@ -1,237 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_PREEMPT=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
-CONFIG_EXPERT=y
-CONFIG_PROFILING=y
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_PXA=y
-CONFIG_PXA_SHARPSL=y
-CONFIG_MACH_AKITA=y
-CONFIG_MACH_BORZOI=y
-CONFIG_ATAGS=y
-CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2   debug"
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_BINFMT_MISC=m
-CONFIG_PM=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_SYN_COOKIES=y
-CONFIG_INET6_AH=m
-CONFIG_INET6_ESP=m
-CONFIG_INET6_IPCOMP=m
-CONFIG_IPV6_TUNNEL=m
-CONFIG_NETFILTER=y
-CONFIG_IP_NF_IPTABLES=m
-CONFIG_IP_NF_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_MATCH_ECN=m
-CONFIG_IP_NF_MATCH_TTL=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_IP_NF_TARGET_LOG=m
-CONFIG_IP_NF_MANGLE=m
-CONFIG_IP_NF_RAW=m
-CONFIG_IP_NF_ARPTABLES=m
-CONFIG_IP_NF_ARPFILTER=m
-CONFIG_IP_NF_ARP_MANGLE=m
-CONFIG_IP6_NF_IPTABLES=m
-CONFIG_IP6_NF_MATCH_EUI64=m
-CONFIG_IP6_NF_MATCH_FRAG=m
-CONFIG_IP6_NF_MATCH_OPTS=m
-CONFIG_IP6_NF_MATCH_HL=m
-CONFIG_IP6_NF_MATCH_IPV6HEADER=m
-CONFIG_IP6_NF_MATCH_RT=m
-CONFIG_IP6_NF_FILTER=m
-CONFIG_IP6_NF_MANGLE=m
-CONFIG_IP6_NF_RAW=m
-CONFIG_BT=m
-CONFIG_BT_RFCOMM=m
-CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
-CONFIG_BT_BNEP_MC_FILTER=y
-CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
-CONFIG_BT_HCIUART=m
-CONFIG_BT_HCIUART_H4=y
-CONFIG_BT_HCIUART_BCSP=y
-CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
-CONFIG_BT_HCIBFUSB=m
-CONFIG_BT_HCIBTUART=m
-CONFIG_BT_HCIVHCI=m
-CONFIG_PCCARD=y
-CONFIG_PCMCIA_PXA2XX=y
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_ROM=y
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_NAND_SHARPSL=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=m
-CONFIG_CHR_DEV_OSST=m
-CONFIG_BLK_DEV_SR=m
-CONFIG_CHR_DEV_SG=m
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_ATA=y
-CONFIG_PATA_PCMCIA=y
-CONFIG_NETDEVICES=y
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PPP=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_ASYNC=m
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-# CONFIG_USB_NET_CDC_SUBSET is not set
-CONFIG_NET_PCMCIA=y
-CONFIG_INPUT_FF_MEMLESS=m
-# CONFIG_INPUT_MOUSEDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_INPUT_MOUSE is not set
-CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_ADS7846=y
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_UINPUT=m
-# CONFIG_SERIO is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_8250=m
-CONFIG_SERIAL_8250_CS=m
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SPI=y
-CONFIG_SPI_PXA2XX=y
-CONFIG_FB=y
-CONFIG_FB_PXA=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_CORGI=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_HID_A4TECH=m
-CONFIG_HID_APPLE=m
-CONFIG_HID_BELKIN=m
-CONFIG_HID_CHERRY=m
-CONFIG_HID_CHICONY=m
-CONFIG_HID_CYPRESS=m
-CONFIG_HID_EZKEY=m
-CONFIG_HID_GYRATION=m
-CONFIG_HID_LOGITECH=m
-CONFIG_HID_MICROSOFT=m
-CONFIG_HID_MONTEREY=m
-CONFIG_HID_PANTHERLORD=m
-CONFIG_HID_PETALYNX=m
-CONFIG_HID_SAMSUNG=m
-CONFIG_HID_SONY=m
-CONFIG_HID_SUNPLUS=m
-CONFIG_USB_KBD=m
-CONFIG_USB_MOUSE=m
-CONFIG_USB=m
-CONFIG_USB_MON=m
-CONFIG_USB_OHCI_HCD=m
-CONFIG_USB_SL811_HCD=m
-CONFIG_USB_SL811_CS=m
-CONFIG_USB_ACM=m
-CONFIG_USB_PRINTER=m
-CONFIG_USB_STORAGE=m
-CONFIG_USB_MDC800=m
-CONFIG_USB_MICROTEK=m
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_GENERIC=y
-CONFIG_USB_SERIAL_BELKIN=m
-CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-CONFIG_USB_SERIAL_CYPRESS_M8=m
-CONFIG_USB_SERIAL_EMPEG=m
-CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_VISOR=m
-CONFIG_USB_SERIAL_IPAQ=m
-CONFIG_USB_SERIAL_IR=m
-CONFIG_USB_SERIAL_EDGEPORT=m
-CONFIG_USB_SERIAL_EDGEPORT_TI=m
-CONFIG_USB_SERIAL_GARMIN=m
-CONFIG_USB_SERIAL_IPW=m
-CONFIG_USB_SERIAL_KEYSPAN_PDA=m
-CONFIG_USB_SERIAL_KEYSPAN=m
-CONFIG_USB_SERIAL_KLSI=m
-CONFIG_USB_SERIAL_KOBIL_SCT=m
-CONFIG_USB_SERIAL_MCT_U232=m
-CONFIG_USB_SERIAL_PL2303=m
-CONFIG_USB_SERIAL_SAFE=m
-CONFIG_USB_SERIAL_TI=m
-CONFIG_USB_SERIAL_CYBERJACK=m
-CONFIG_USB_SERIAL_OMNINET=m
-CONFIG_USB_EMI62=m
-CONFIG_USB_EMI26=m
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_GADGET=m
-CONFIG_USB_GADGET_DUMMY_HCD=y
-CONFIG_USB_ZERO=m
-CONFIG_USB_ETH=m
-CONFIG_USB_GADGETFS=m
-CONFIG_USB_MASS_STORAGE=m
-CONFIG_USB_G_SERIAL=m
-CONFIG_MMC=y
-CONFIG_MMC_PXA=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-CONFIG_EXT4_FS=y
-# CONFIG_EXT4_FS_XATTR is not set
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_SUMMARY=y
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_RUBIN=y
-CONFIG_CRAMFS=m
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-CONFIG_NFS_V4=y
-CONFIG_SMB_FS=m
-CONFIG_SMB_NLS_DEFAULT=y
-CONFIG_NFS_V4=m
-CONFIG_NLS_DEFAULT="cp437"
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_UTF8=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_CRYPTO_NULL=m
-CONFIG_CRYPTO_BENCHMARK=m
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_SHA256=m
-CONFIG_CRYPTO_AES=m
-CONFIG_CRYPTO_ANUBIS=m
-CONFIG_CRYPTO_ARC4=m
-CONFIG_CRYPTO_BLOWFISH=m
-CONFIG_CRYPTO_CAST5=m
-CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_KHAZAD=m
-CONFIG_CRYPTO_SERPENT=m
-CONFIG_CRYPTO_TEA=m
-CONFIG_CRYPTO_TWOFISH=m
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_SHA512=m
-CONFIG_CRYPTO_WP512=m
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_DEBUG_PREEMPT is not set
-# CONFIG_FTRACE is not set
diff --git a/arch/arm/include/asm/hardware/scoop.h b/arch/arm/include/asm/hardware/scoop.h
deleted file mode 100644
index 505453315287..000000000000
--- a/arch/arm/include/asm/hardware/scoop.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  Definitions for the SCOOP interface found on various Sharp PDAs
- *
- *  Copyright (c) 2004 Richard Purdie
- */
-
-#define SCOOP_MCR  0x00
-#define SCOOP_CDR  0x04
-#define SCOOP_CSR  0x08
-#define SCOOP_CPR  0x0C
-#define SCOOP_CCR  0x10
-#define SCOOP_IRR  0x14
-#define SCOOP_IRM  0x14
-#define SCOOP_IMR  0x18
-#define SCOOP_ISR  0x1C
-#define SCOOP_GPCR 0x20
-#define SCOOP_GPWR 0x24
-#define SCOOP_GPRR 0x28
-
-#define SCOOP_CPR_OUT	(1 << 7)
-#define SCOOP_CPR_SD_3V	(1 << 2)
-#define SCOOP_CPR_CF_XV	(1 << 1)
-#define SCOOP_CPR_CF_3V	(1 << 0)
-
-#define SCOOP_GPCR_PA22	(1 << 12)
-#define SCOOP_GPCR_PA21	(1 << 11)
-#define SCOOP_GPCR_PA20	(1 << 10)
-#define SCOOP_GPCR_PA19	(1 << 9)
-#define SCOOP_GPCR_PA18	(1 << 8)
-#define SCOOP_GPCR_PA17	(1 << 7)
-#define SCOOP_GPCR_PA16	(1 << 6)
-#define SCOOP_GPCR_PA15	(1 << 5)
-#define SCOOP_GPCR_PA14	(1 << 4)
-#define SCOOP_GPCR_PA13	(1 << 3)
-#define SCOOP_GPCR_PA12	(1 << 2)
-#define SCOOP_GPCR_PA11	(1 << 1)
-
-struct scoop_config {
-	unsigned short io_out;
-	unsigned short io_dir;
-	unsigned short suspend_clr;
-	unsigned short suspend_set;
-	int gpio_base;
-};
-
-/* Structure for linking scoop devices to PCMCIA sockets */
-struct scoop_pcmcia_dev {
-	struct device *dev;     /* Pointer to this socket's scoop device */
-	int	irq;                /* irq for socket */
-	int cd_irq;
-	const char *cd_irq_str;
-	unsigned char keep_vs;
-	unsigned char keep_rd;
-};
-
-struct scoop_pcmcia_config {
-	struct scoop_pcmcia_dev *devs;
-	int num_devs;
-	void (*power_ctrl)(struct device *scoop, unsigned short cpr, int nr);
-};
-
-extern struct scoop_pcmcia_config *platform_scoop_config;
-
-void reset_scoop(struct device *dev);
-unsigned short read_scoop_reg(struct device *dev, unsigned short reg);
-void write_scoop_reg(struct device *dev, unsigned short reg, unsigned short data);
diff --git a/arch/arm/include/asm/mach/sharpsl_param.h b/arch/arm/include/asm/mach/sharpsl_param.h
deleted file mode 100644
index 700a377c20bf..000000000000
--- a/arch/arm/include/asm/mach/sharpsl_param.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Hardware parameter area specific to Sharp SL series devices
- *
- * Copyright (c) 2005 Richard Purdie
- *
- * Based on Sharp's 2.4 kernel patches
- */
-
-struct sharpsl_param_info {
-  unsigned int comadj_keyword;
-  unsigned int comadj;
-
-  unsigned int uuid_keyword;
-  unsigned char uuid[16];
-
-  unsigned int touch_keyword;
-  unsigned int touch_xp;
-  unsigned int touch_yp;
-  unsigned int touch_xd;
-  unsigned int touch_yd;
-
-  unsigned int adadj_keyword;
-  unsigned int adadj;
-
-  unsigned int phad_keyword;
-  unsigned int phadadj;
-} __attribute__((packed));
-
-
-extern struct sharpsl_param_info sharpsl_param;
-extern void sharpsl_save_param(void);
-
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 2fb29b9ef744..354e3dc17776 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -50,77 +50,6 @@ config MACH_PXA3XX_DT
 	  the device tree. Needn't select any other machine while
 	  MACH_PXA3XX_DT is enabled.
 
-if ATAGS
-
-comment "Legacy board files"
-
-config ARCH_GUMSTIX
-	bool "Gumstix XScale 255 boards (DEPRECATED)"
-	select PXA25x
-	help
-	  Say Y here if you intend to run this kernel on
-	  Basix, Connex, ws-200ax, ws-400ax systems
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-choice
-	prompt "Gumstix Carrier/Expansion Board"
-	depends on ARCH_GUMSTIX
-
-config GUMSTIX_AM200EPD
-	bool "Enable AM200EPD board support"
-
-config GUMSTIX_AM300EPD
-	bool "Enable AM300EPD board support"
-
-endchoice
-
-config PXA_SHARPSL
-	bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models (DEPRECATED)"
-	select SHARP_PARAM
-	select SHARP_SCOOP
-	help
-	  Say Y here if you intend to run this kernel on a
-	  Sharp Zaurus SL-5600 (Poodle), SL-C700 (Corgi),
-	  SL-C750 (Shepherd), SL-C760 (Husky), SL-C1000 (Akita),
-	  SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa)
-	  handheld computer.
-
-	  Support for these machines will go away in early 2027,
-	  unless they get converted to device tree.
-
-config PXA_SHARPSL_DETECT_MACH_ID
-	bool "Detect machine ID at run-time in the decompressor"
-	depends on PXA_SHARPSL
-	help
-	  Say Y here if you want the zImage decompressor to detect
-	  the Zaurus machine ID at run-time. For latest kexec-based
-	  boot loader, this is not necessary.
-
-config MACH_AKITA
-	bool "Enable Sharp SL-1000 (Akita) Support"
-	depends on PXA_SHARPSL
-	select I2C
-	select I2C_PXA
-	select MACH_SPITZ
-	select PXA27x
-	select PXA_SHARP_Cxx00
-
-config MACH_SPITZ
-	bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
-	depends on PXA_SHARPSL
-	select PXA27x
-	select PXA_SHARP_Cxx00
-
-config MACH_BORZOI
-	bool "Enable Sharp Zaurus SL-3100 (Borzoi) Support"
-	depends on PXA_SHARPSL
-	select PXA27x
-	select PXA_SHARP_Cxx00
-
-endif # ATAGS
-
 config PXA25x
 	bool
 	select CPU_XSCALE
@@ -157,22 +86,4 @@ config CPU_PXA320
 	help
 	  PXA320 (codename Monahans-P)
 
-config PXA_SHARP_Cxx00
-	bool
-	select SHARPSL_PM
-	help
-	  Enable common support for Sharp Cxx00 models
-
-config SHARPSL_PM
-	bool
-	select APM_EMULATION
-	select SHARPSL_PM_MAX1111
-
-config SHARPSL_PM_MAX1111
-	bool
-	select HWMON
-	select SENSORS_MAX1111
-	select SPI
-	select SPI_MASTER
-
 endif
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index faccdd356482..3bc3b2e56afe 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -22,11 +22,3 @@ obj-$(CONFIG_CPU_PXA320)	+= pxa320.o
 obj-$(CONFIG_MACH_PXA25X_DT)	+= pxa-dt.o
 obj-$(CONFIG_MACH_PXA27X_DT)	+= pxa-dt.o
 obj-$(CONFIG_MACH_PXA3XX_DT)	+= pxa-dt.o
-
-# 3rd Party Dev Platforms
-obj-$(CONFIG_ARCH_GUMSTIX)	+= gumstix.o
-obj-$(CONFIG_GUMSTIX_AM200EPD)	+= am200epd.o
-obj-$(CONFIG_GUMSTIX_AM300EPD)	+= am300epd.o
-
-# End-user Products
-obj-$(CONFIG_PXA_SHARP_Cxx00)	+= spitz.o sharpsl_pm.o spitz_pm.o
diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c
deleted file mode 100644
index 4814f3cfe775..000000000000
--- a/arch/arm/mach-pxa/am200epd.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * am200epd.c -- Platform device for AM200 EPD kit
- *
- * Copyright (C) 2008, Jaya Kumar
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file COPYING in the main directory of this archive for
- * more details.
- *
- * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven.
- *
- * This work was made possible by help and equipment support from E-Ink
- * Corporation. http://support.eink.com/community
- *
- * This driver is written to be used with the Metronome display controller.
- * on the AM200 EPD prototype kit/development kit with an E-Ink 800x600
- * Vizplex EPD on a Gumstix board using the Lyre interface board.
- *
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/delay.h>
-#include <linux/interrupt.h>
-#include <linux/fb.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/irq.h>
-#include <linux/gpio/legacy.h>
-
-#include "pxa25x.h"
-#include "gumstix.h"
-#include <linux/platform_data/video-pxafb.h>
-
-#include "generic.h"
-
-#include <video/metronomefb.h>
-
-static unsigned int panel_type = 6;
-static struct platform_device *am200_device;
-static struct metronome_board am200_board;
-
-static struct pxafb_mode_info am200_fb_mode_9inch7 = {
-	.pixclock	= 40000,
-	.xres		= 1200,
-	.yres		= 842,
-	.bpp		= 16,
-	.hsync_len	= 2,
-	.left_margin	= 2,
-	.right_margin	= 2,
-	.vsync_len	= 1,
-	.upper_margin	= 2,
-	.lower_margin	= 25,
-	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-};
-
-static struct pxafb_mode_info am200_fb_mode_8inch = {
-	.pixclock	= 40000,
-	.xres		= 1088,
-	.yres		= 791,
-	.bpp		= 16,
-	.hsync_len	= 28,
-	.left_margin	= 8,
-	.right_margin	= 30,
-	.vsync_len	= 8,
-	.upper_margin	= 10,
-	.lower_margin	= 8,
-	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-};
-
-static struct pxafb_mode_info am200_fb_mode_6inch = {
-	.pixclock	= 40189,
-	.xres		= 832,
-	.yres		= 622,
-	.bpp		= 16,
-	.hsync_len	= 28,
-	.left_margin	= 34,
-	.right_margin	= 34,
-	.vsync_len	= 25,
-	.upper_margin	= 0,
-	.lower_margin	= 2,
-	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
-};
-
-static struct pxafb_mach_info am200_fb_info = {
-	.modes		= &am200_fb_mode_6inch,
-	.num_modes	= 1,
-	.lcd_conn	= LCD_TYPE_COLOR_TFT | LCD_PCLK_EDGE_FALL |
-			  LCD_AC_BIAS_FREQ(24),
-};
-
-/* register offsets for gpio control */
-#define LED_GPIO_PIN 51
-#define STDBY_GPIO_PIN 48
-#define RST_GPIO_PIN 49
-#define RDY_GPIO_PIN 32
-#define ERR_GPIO_PIN 17
-#define PCBPWR_GPIO_PIN 16
-static int gpios[] = { LED_GPIO_PIN , STDBY_GPIO_PIN , RST_GPIO_PIN,
-			RDY_GPIO_PIN, ERR_GPIO_PIN, PCBPWR_GPIO_PIN };
-static char *gpio_names[] = { "LED" , "STDBY" , "RST", "RDY", "ERR", "PCBPWR" };
-
-static int am200_init_gpio_regs(struct metronomefb_par *par)
-{
-	int i;
-	int err;
-
-	for (i = 0; i < ARRAY_SIZE(gpios); i++) {
-		err = gpio_request(gpios[i], gpio_names[i]);
-		if (err) {
-			dev_err(&am200_device->dev, "failed requesting "
-				"gpio %s, err=%d\n", gpio_names[i], err);
-			goto err_req_gpio;
-		}
-	}
-
-	gpio_direction_output(LED_GPIO_PIN, 0);
-	gpio_direction_output(STDBY_GPIO_PIN, 0);
-	gpio_direction_output(RST_GPIO_PIN, 0);
-
-	gpio_direction_input(RDY_GPIO_PIN);
-	gpio_direction_input(ERR_GPIO_PIN);
-
-	gpio_direction_output(PCBPWR_GPIO_PIN, 0);
-
-	return 0;
-
-err_req_gpio:
-	while (--i >= 0)
-		gpio_free(gpios[i]);
-
-	return err;
-}
-
-static void am200_cleanup(struct metronomefb_par *par)
-{
-	int i;
-
-	free_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), par);
-
-	for (i = 0; i < ARRAY_SIZE(gpios); i++)
-		gpio_free(gpios[i]);
-}
-
-static int am200_share_video_mem(struct fb_info *info)
-{
-	/* rough check if this is our desired fb and not something else */
-	if ((info->var.xres != am200_fb_info.modes->xres)
-		|| (info->var.yres != am200_fb_info.modes->yres))
-		return 0;
-
-	/* we've now been notified that we have our new fb */
-	am200_board.metromem = info->screen_base;
-	am200_board.host_fbinfo = info;
-
-	/* try to refcount host drv since we are the consumer after this */
-	if (!try_module_get(info->fbops->owner))
-		return -ENODEV;
-
-	return 0;
-}
-
-static int am200_unshare_video_mem(struct fb_info *info)
-{
-	dev_dbg(&am200_device->dev, "ENTER %s\n", __func__);
-
-	if (info != am200_board.host_fbinfo)
-		return 0;
-
-	module_put(am200_board.host_fbinfo->fbops->owner);
-	return 0;
-}
-
-static int am200_fb_notifier_callback(struct notifier_block *self,
-				 unsigned long event, void *data)
-{
-	struct fb_event *evdata = data;
-	struct fb_info *info = evdata->info;
-
-	dev_dbg(&am200_device->dev, "ENTER %s\n", __func__);
-
-	if (event == FB_EVENT_FB_REGISTERED)
-		return am200_share_video_mem(info);
-	else if (event == FB_EVENT_FB_UNREGISTERED)
-		return am200_unshare_video_mem(info);
-
-	return 0;
-}
-
-static struct notifier_block am200_fb_notif = {
-	.notifier_call = am200_fb_notifier_callback,
-};
-
-/* this gets called as part of our init. these steps must be done now so
- * that we can use pxa_set_fb_info */
-static void __init am200_presetup_fb(void)
-{
-	int fw;
-	int fh;
-	int padding_size;
-	int totalsize;
-
-	switch (panel_type) {
-	case 6:
-		am200_fb_info.modes = &am200_fb_mode_6inch;
-		break;
-	case 8:
-		am200_fb_info.modes = &am200_fb_mode_8inch;
-		break;
-	case 97:
-		am200_fb_info.modes = &am200_fb_mode_9inch7;
-		break;
-	default:
-		dev_err(&am200_device->dev, "invalid panel_type selection,"
-						" setting to 6\n");
-		am200_fb_info.modes = &am200_fb_mode_6inch;
-		break;
-	}
-
-	/* the frame buffer is divided as follows:
-	command | CRC | padding
-	16kb waveform data | CRC | padding
-	image data | CRC
-	*/
-
-	fw = am200_fb_info.modes->xres;
-	fh = am200_fb_info.modes->yres;
-
-	/* waveform must be 16k + 2 for checksum */
-	am200_board.wfm_size = roundup(16*1024 + 2, fw);
-
-	padding_size = PAGE_SIZE + (4 * fw);
-
-	/* total is 1 cmd , 1 wfm, padding and image */
-	totalsize = fw + am200_board.wfm_size + padding_size + (fw*fh);
-
-	/* save this off because we're manipulating fw after this and
-	 * we'll need it when we're ready to setup the framebuffer */
-	am200_board.fw = fw;
-	am200_board.fh = fh;
-
-	/* the reason we do this adjustment is because we want to acquire
-	 * more framebuffer memory without imposing custom awareness on the
-	 * underlying pxafb driver */
-	am200_fb_info.modes->yres = DIV_ROUND_UP(totalsize, fw);
-
-	/* we divide since we told the LCD controller we're 16bpp */
-	am200_fb_info.modes->xres /= 2;
-
-	pxa_set_fb_info(NULL, &am200_fb_info);
-
-}
-
-/* this gets called by metronomefb as part of its init, in our case, we
- * have already completed initial framebuffer init in presetup_fb so we
- * can just setup the fb access pointers */
-static int am200_setup_fb(struct metronomefb_par *par)
-{
-	int fw;
-	int fh;
-
-	fw = am200_board.fw;
-	fh = am200_board.fh;
-
-	/* metromem was set up by the notifier in share_video_mem so now
-	 * we can use its value to calculate the other entries */
-	par->metromem_cmd = (struct metromem_cmd *) am200_board.metromem;
-	par->metromem_wfm = am200_board.metromem + fw;
-	par->metromem_img = par->metromem_wfm + am200_board.wfm_size;
-	par->metromem_img_csum = (u16 *) (par->metromem_img + (fw * fh));
-	par->metromem_dma = am200_board.host_fbinfo->fix.smem_start;
-
-	return 0;
-}
-
-static int am200_get_panel_type(void)
-{
-	return panel_type;
-}
-
-static irqreturn_t am200_handle_irq(int irq, void *dev_id)
-{
-	struct metronomefb_par *par = dev_id;
-
-	wake_up_interruptible(&par->waitq);
-	return IRQ_HANDLED;
-}
-
-static int am200_setup_irq(struct fb_info *info)
-{
-	int ret;
-
-	ret = request_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), am200_handle_irq,
-				IRQF_TRIGGER_FALLING, "AM200", info->par);
-	if (ret)
-		dev_err(&am200_device->dev, "request_irq failed: %d\n", ret);
-
-	return ret;
-}
-
-static void am200_set_rst(struct metronomefb_par *par, int state)
-{
-	gpio_set_value(RST_GPIO_PIN, state);
-}
-
-static void am200_set_stdby(struct metronomefb_par *par, int state)
-{
-	gpio_set_value(STDBY_GPIO_PIN, state);
-}
-
-static int am200_wait_event(struct metronomefb_par *par)
-{
-	return wait_event_timeout(par->waitq, gpio_get_value(RDY_GPIO_PIN), HZ);
-}
-
-static int am200_wait_event_intr(struct metronomefb_par *par)
-{
-	return wait_event_interruptible_timeout(par->waitq,
-					gpio_get_value(RDY_GPIO_PIN), HZ);
-}
-
-static struct metronome_board am200_board = {
-	.owner			= THIS_MODULE,
-	.setup_irq		= am200_setup_irq,
-	.setup_io		= am200_init_gpio_regs,
-	.setup_fb		= am200_setup_fb,
-	.set_rst		= am200_set_rst,
-	.set_stdby		= am200_set_stdby,
-	.met_wait_event		= am200_wait_event,
-	.met_wait_event_intr	= am200_wait_event_intr,
-	.get_panel_type		= am200_get_panel_type,
-	.cleanup		= am200_cleanup,
-};
-
-static unsigned long am200_pin_config[] __initdata = {
-	GPIO51_GPIO,
-	GPIO49_GPIO,
-	GPIO48_GPIO,
-	GPIO32_GPIO,
-	GPIO17_GPIO,
-	GPIO16_GPIO,
-};
-
-int __init am200_init(void)
-{
-	int ret;
-
-	/*
-	 * Before anything else, we request notification for any fb
-	 * creation events.
-	 *
-	 * FIXME: This is terrible and needs to be nuked. The notifier is used
-	 * to get at the fb base address from the boot splash fb driver, which
-	 * is then passed to metronomefb. Instaed of metronomfb or this board
-	 * support file here figuring this out on their own.
-	 *
-	 * See also the #ifdef in fbmem.c.
-	 */
-	fb_register_client(&am200_fb_notif);
-
-	pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config));
-
-	/* request our platform independent driver */
-	request_module("metronomefb");
-
-	am200_device = platform_device_alloc("metronomefb", -1);
-	if (!am200_device)
-		return -ENOMEM;
-
-	/* the am200_board that will be seen by metronomefb is a copy */
-	platform_device_add_data(am200_device, &am200_board,
-					sizeof(am200_board));
-
-	/* this _add binds metronomefb to am200. metronomefb refcounts am200 */
-	ret = platform_device_add(am200_device);
-
-	if (ret) {
-		platform_device_put(am200_device);
-		fb_unregister_client(&am200_fb_notif);
-		return ret;
-	}
-
-	am200_presetup_fb();
-
-	return 0;
-}
-
-module_param(panel_type, uint, 0);
-MODULE_PARM_DESC(panel_type, "Select the panel type: 6, 8, 97");
-
-MODULE_DESCRIPTION("board driver for am200 metronome epd kit");
-MODULE_AUTHOR("Jaya Kumar");
-MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/am300epd.c b/arch/arm/mach-pxa/am300epd.c
deleted file mode 100644
index 435fb72da7de..000000000000
--- a/arch/arm/mach-pxa/am300epd.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * am300epd.c -- Platform device for AM300 EPD kit
- *
- * Copyright (C) 2008, Jaya Kumar
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file COPYING in the main directory of this archive for
- * more details.
- *
- * This work was made possible by help and equipment support from E-Ink
- * Corporation. http://support.eink.com/community
- *
- * This driver is written to be used with the Broadsheet display controller.
- * on the AM300 EPD prototype kit/development kit with an E-Ink 800x600
- * Vizplex EPD on a Gumstix board using the Broadsheet interface board.
- *
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/delay.h>
-#include <linux/interrupt.h>
-#include <linux/fb.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/irq.h>
-#include <linux/gpio/legacy.h>
-
-#include "gumstix.h"
-#include "mfp-pxa25x.h"
-#include "irqs.h"
-#include <linux/platform_data/video-pxafb.h>
-
-#include "generic.h"
-
-#include <video/broadsheetfb.h>
-
-static unsigned int panel_type = 6;
-static struct platform_device *am300_device;
-static struct broadsheet_board am300_board;
-
-static unsigned long am300_pin_config[] __initdata = {
-	GPIO16_GPIO,
-	GPIO17_GPIO,
-	GPIO32_GPIO,
-	GPIO48_GPIO,
-	GPIO49_GPIO,
-	GPIO51_GPIO,
-	GPIO74_GPIO,
-	GPIO75_GPIO,
-	GPIO76_GPIO,
-	GPIO77_GPIO,
-
-	/* this is the 16-bit hdb bus 58-73 */
-	GPIO58_GPIO,
-	GPIO59_GPIO,
-	GPIO60_GPIO,
-	GPIO61_GPIO,
-
-	GPIO62_GPIO,
-	GPIO63_GPIO,
-	GPIO64_GPIO,
-	GPIO65_GPIO,
-
-	GPIO66_GPIO,
-	GPIO67_GPIO,
-	GPIO68_GPIO,
-	GPIO69_GPIO,
-
-	GPIO70_GPIO,
-	GPIO71_GPIO,
-	GPIO72_GPIO,
-	GPIO73_GPIO,
-};
-
-/* register offsets for gpio control */
-#define PWR_GPIO_PIN	16
-#define CFG_GPIO_PIN	17
-#define RDY_GPIO_PIN	32
-#define DC_GPIO_PIN	48
-#define RST_GPIO_PIN	49
-#define LED_GPIO_PIN	51
-#define RD_GPIO_PIN	74
-#define WR_GPIO_PIN	75
-#define CS_GPIO_PIN	76
-#define IRQ_GPIO_PIN	77
-
-/* hdb bus */
-#define DB0_GPIO_PIN	58
-#define DB15_GPIO_PIN	73
-
-static int gpios[] = { PWR_GPIO_PIN, CFG_GPIO_PIN, RDY_GPIO_PIN, DC_GPIO_PIN,
-			RST_GPIO_PIN, RD_GPIO_PIN, WR_GPIO_PIN, CS_GPIO_PIN,
-			IRQ_GPIO_PIN, LED_GPIO_PIN };
-static char *gpio_names[] = { "PWR", "CFG", "RDY", "DC", "RST", "RD", "WR",
-				"CS", "IRQ", "LED" };
-
-static int am300_wait_event(struct broadsheetfb_par *par)
-{
-	/* todo: improve err recovery */
-	wait_event(par->waitq, gpio_get_value(RDY_GPIO_PIN));
-	return 0;
-}
-
-static int am300_init_gpio_regs(struct broadsheetfb_par *par)
-{
-	int i;
-	int err;
-	char dbname[8];
-
-	for (i = 0; i < ARRAY_SIZE(gpios); i++) {
-		err = gpio_request(gpios[i], gpio_names[i]);
-		if (err) {
-			dev_err(&am300_device->dev, "failed requesting "
-				"gpio %s, err=%d\n", gpio_names[i], err);
-			goto err_req_gpio;
-		}
-	}
-
-	/* we also need to take care of the hdb bus */
-	for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) {
-		sprintf(dbname, "DB%d", i);
-		err = gpio_request(i, dbname);
-		if (err) {
-			dev_err(&am300_device->dev, "failed requesting "
-				"gpio %d, err=%d\n", i, err);
-			goto err_req_gpio2;
-		}
-	}
-
-	/* setup the outputs and init values */
-	gpio_direction_output(PWR_GPIO_PIN, 0);
-	gpio_direction_output(CFG_GPIO_PIN, 1);
-	gpio_direction_output(DC_GPIO_PIN, 0);
-	gpio_direction_output(RD_GPIO_PIN, 1);
-	gpio_direction_output(WR_GPIO_PIN, 1);
-	gpio_direction_output(CS_GPIO_PIN, 1);
-	gpio_direction_output(RST_GPIO_PIN, 0);
-
-	/* setup the inputs */
-	gpio_direction_input(RDY_GPIO_PIN);
-	gpio_direction_input(IRQ_GPIO_PIN);
-
-	/* start the hdb bus as an input */
-	for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++)
-		gpio_direction_output(i, 0);
-
-	/* go into command mode */
-	gpio_set_value(CFG_GPIO_PIN, 1);
-	gpio_set_value(RST_GPIO_PIN, 0);
-	msleep(10);
-	gpio_set_value(RST_GPIO_PIN, 1);
-	msleep(10);
-	am300_wait_event(par);
-
-	return 0;
-
-err_req_gpio2:
-	while (--i >= DB0_GPIO_PIN)
-		gpio_free(i);
-	i = ARRAY_SIZE(gpios);
-err_req_gpio:
-	while (--i >= 0)
-		gpio_free(gpios[i]);
-
-	return err;
-}
-
-static int am300_init_board(struct broadsheetfb_par *par)
-{
-	return am300_init_gpio_regs(par);
-}
-
-static void am300_cleanup(struct broadsheetfb_par *par)
-{
-	int i;
-
-	free_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), par);
-
-	for (i = 0; i < ARRAY_SIZE(gpios); i++)
-		gpio_free(gpios[i]);
-
-	for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++)
-		gpio_free(i);
-
-}
-
-static u16 am300_get_hdb(struct broadsheetfb_par *par)
-{
-	u16 res = 0;
-	int i;
-
-	for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++)
-		res |= (gpio_get_value(DB0_GPIO_PIN + i)) ? (1 << i) : 0;
-
-	return res;
-}
-
-static void am300_set_hdb(struct broadsheetfb_par *par, u16 data)
-{
-	int i;
-
-	for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++)
-		gpio_set_value(DB0_GPIO_PIN + i, (data >> i) & 0x01);
-}
-
-
-static void am300_set_ctl(struct broadsheetfb_par *par, unsigned char bit,
-				u8 state)
-{
-	switch (bit) {
-	case BS_CS:
-		gpio_set_value(CS_GPIO_PIN, state);
-		break;
-	case BS_DC:
-		gpio_set_value(DC_GPIO_PIN, state);
-		break;
-	case BS_WR:
-		gpio_set_value(WR_GPIO_PIN, state);
-		break;
-	}
-}
-
-static int am300_get_panel_type(void)
-{
-	return panel_type;
-}
-
-static irqreturn_t am300_handle_irq(int irq, void *dev_id)
-{
-	struct broadsheetfb_par *par = dev_id;
-
-	wake_up(&par->waitq);
-	return IRQ_HANDLED;
-}
-
-static int am300_setup_irq(struct fb_info *info)
-{
-	int ret;
-	struct broadsheetfb_par *par = info->par;
-
-	ret = request_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), am300_handle_irq,
-				IRQF_TRIGGER_RISING, "AM300", par);
-	if (ret)
-		dev_err(&am300_device->dev, "request_irq failed: %d\n", ret);
-
-	return ret;
-}
-
-static struct broadsheet_board am300_board = {
-	.owner			= THIS_MODULE,
-	.init			= am300_init_board,
-	.cleanup		= am300_cleanup,
-	.set_hdb		= am300_set_hdb,
-	.get_hdb		= am300_get_hdb,
-	.set_ctl		= am300_set_ctl,
-	.wait_for_rdy		= am300_wait_event,
-	.get_panel_type		= am300_get_panel_type,
-	.setup_irq		= am300_setup_irq,
-};
-
-int __init am300_init(void)
-{
-	int ret;
-
-	pxa2xx_mfp_config(ARRAY_AND_SIZE(am300_pin_config));
-
-	/* request our platform independent driver */
-	request_module("broadsheetfb");
-
-	am300_device = platform_device_alloc("broadsheetfb", -1);
-	if (!am300_device)
-		return -ENOMEM;
-
-	/* the am300_board that will be seen by broadsheetfb is a copy */
-	platform_device_add_data(am300_device, &am300_board,
-					sizeof(am300_board));
-
-	ret = platform_device_add(am300_device);
-
-	if (ret) {
-		platform_device_put(am300_device);
-		return ret;
-	}
-
-	return 0;
-}
-
-module_param(panel_type, uint, 0);
-MODULE_PARM_DESC(panel_type, "Select the panel type: 37, 6, 97");
-
-MODULE_DESCRIPTION("board driver for am300 epd kit");
-MODULE_AUTHOR("Jaya Kumar");
-MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index edad956a1483..c2a2469a003a 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -1,715 +1,10 @@
 // SPDX-License-Identifier: GPL-2.0
-#include <linux/module.h>
-#include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
-#include <linux/clkdev.h>
-#include <linux/clk-provider.h>
-#include <linux/dma-mapping.h>
-#include <linux/dmaengine.h>
-#include <linux/gpio-pxa.h>
-#include <linux/platform_data/i2c-pxa.h>
-#include <linux/soc/pxa/cpu.h>
 
-#include <linux/platform_data/video-pxafb.h>
-#include <linux/platform_data/mmc-pxamci.h>
 #include "irqs.h"
-#include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <linux/platform_data/mmp_dma.h>
-
-#include "mfp-pxa2xx.h"
 #include "regs-ost.h"
 #include "reset.h"
-#include "devices.h"
-#include "generic.h"
-
-void __init pxa_register_device(struct platform_device *dev, void *data)
-{
-	int ret;
-
-	dev->dev.platform_data = data;
-
-	ret = platform_device_register(dev);
-	if (ret)
-		dev_err(&dev->dev, "unable to register device: %d\n", ret);
-}
-
-static struct resource pxa_resource_pmu = {
-	.start	= IRQ_PMU,
-	.end	= IRQ_PMU,
-	.flags	= IORESOURCE_IRQ,
-};
-
-struct platform_device pxa_device_pmu = {
-	.name		= "xscale-pmu",
-	.id		= -1,
-	.resource	= &pxa_resource_pmu,
-	.num_resources	= 1,
-};
-
-static const struct resource pxamci_resources[] = {
-	[0] = {
-		.start	= 0x41100000,
-		.end	= 0x41100fff,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_MMC,
-		.end	= IRQ_MMC,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-void __init pxa_set_mci_info(const struct pxamci_platform_data *info,
-			     const struct property_entry *props)
-{
-	const struct platform_device_info mci_info = {
-		.name		= "pxa2xx-mci",
-		.id		= 0,
-		.res		= pxamci_resources,
-		.num_res	= ARRAY_SIZE(pxamci_resources),
-		.data		= info,
-		.size_data	= sizeof(*info),
-		.dma_mask	= 0xffffffffUL,
-		.properties	= props,
-	};
-	struct platform_device *mci_dev;
-	int err;
-
-	mci_dev = platform_device_register_full(&mci_info);
-	err = PTR_ERR_OR_ZERO(mci_dev);
-	if (err)
-		pr_err("Unable to create mci device: %d\n", err);
-}
-
-static struct resource pxa2xx_udc_resources[] = {
-	[0] = {
-		.start	= 0x40600000,
-		.end	= 0x4060ffff,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_USB,
-		.end	= IRQ_USB,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static u64 udc_dma_mask = ~(u32)0;
-
-struct platform_device pxa25x_device_udc = {
-	.name		= "pxa25x-udc",
-	.id		= -1,
-	.resource	= pxa2xx_udc_resources,
-	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),
-	.dev		=  {
-		.dma_mask	= &udc_dma_mask,
-	}
-};
-
-struct platform_device pxa27x_device_udc = {
-	.name		= "pxa27x-udc",
-	.id		= -1,
-	.resource	= pxa2xx_udc_resources,
-	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),
-	.dev		=  {
-		.dma_mask	= &udc_dma_mask,
-	}
-};
-
-static struct resource pxafb_resources[] = {
-	[0] = {
-		.start	= 0x44000000,
-		.end	= 0x4400ffff,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_LCD,
-		.end	= IRQ_LCD,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static u64 fb_dma_mask = ~(u64)0;
-
-struct platform_device pxa_device_fb = {
-	.name		= "pxa2xx-fb",
-	.id		= -1,
-	.dev		= {
-		.dma_mask	= &fb_dma_mask,
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(pxafb_resources),
-	.resource	= pxafb_resources,
-};
-
-void __init pxa_set_fb_info(struct device *parent, struct pxafb_mach_info *info)
-{
-	pxa_device_fb.dev.parent = parent;
-	pxa_register_device(&pxa_device_fb, info);
-}
-
-static struct resource pxa_resource_ffuart[] = {
-	{
-		.start	= 0x40100000,
-		.end	= 0x40100023,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_FFUART,
-		.end	= IRQ_FFUART,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-struct platform_device pxa_device_ffuart = {
-	.name		= "pxa2xx-uart",
-	.id		= 0,
-	.resource	= pxa_resource_ffuart,
-	.num_resources	= ARRAY_SIZE(pxa_resource_ffuart),
-};
-
-void __init pxa_set_ffuart_info(void *info)
-{
-	pxa_register_device(&pxa_device_ffuart, info);
-}
-
-static struct resource pxa_resource_btuart[] = {
-	{
-		.start	= 0x40200000,
-		.end	= 0x40200023,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_BTUART,
-		.end	= IRQ_BTUART,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-struct platform_device pxa_device_btuart = {
-	.name		= "pxa2xx-uart",
-	.id		= 1,
-	.resource	= pxa_resource_btuart,
-	.num_resources	= ARRAY_SIZE(pxa_resource_btuart),
-};
-
-void __init pxa_set_btuart_info(void *info)
-{
-	pxa_register_device(&pxa_device_btuart, info);
-}
-
-static struct resource pxa_resource_stuart[] = {
-	{
-		.start	= 0x40700000,
-		.end	= 0x40700023,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_STUART,
-		.end	= IRQ_STUART,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-struct platform_device pxa_device_stuart = {
-	.name		= "pxa2xx-uart",
-	.id		= 2,
-	.resource	= pxa_resource_stuart,
-	.num_resources	= ARRAY_SIZE(pxa_resource_stuart),
-};
-
-void __init pxa_set_stuart_info(void *info)
-{
-	pxa_register_device(&pxa_device_stuart, info);
-}
-
-static struct resource pxa_resource_hwuart[] = {
-	{
-		.start	= 0x41600000,
-		.end	= 0x4160002F,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_HWUART,
-		.end	= IRQ_HWUART,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-struct platform_device pxa_device_hwuart = {
-	.name		= "pxa2xx-uart",
-	.id		= 3,
-	.resource	= pxa_resource_hwuart,
-	.num_resources	= ARRAY_SIZE(pxa_resource_hwuart),
-};
-
-void __init pxa_set_hwuart_info(void *info)
-{
-	if (cpu_is_pxa255())
-		pxa_register_device(&pxa_device_hwuart, info);
-	else
-		pr_info("UART: Ignoring attempt to register HWUART on non-PXA255 hardware");
-}
-
-static struct resource pxai2c_resources[] = {
-	{
-		.start	= 0x40301680,
-		.end	= 0x403016a3,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_I2C,
-		.end	= IRQ_I2C,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa_device_i2c = {
-	.name		= "pxa2xx-i2c",
-	.id		= 0,
-	.resource	= pxai2c_resources,
-	.num_resources	= ARRAY_SIZE(pxai2c_resources),
-};
-
-void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
-{
-	pxa_register_device(&pxa_device_i2c, info);
-}
-
-#ifdef CONFIG_PXA27x
-static struct resource pxa27x_resources_i2c_power[] = {
-	{
-		.start	= 0x40f00180,
-		.end	= 0x40f001a3,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_PWRI2C,
-		.end	= IRQ_PWRI2C,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa27x_device_i2c_power = {
-	.name		= "pxa2xx-i2c",
-	.id		= 1,
-	.resource	= pxa27x_resources_i2c_power,
-	.num_resources	= ARRAY_SIZE(pxa27x_resources_i2c_power),
-};
-#endif
-
-static struct resource pxai2s_resources[] = {
-	{
-		.start	= 0x40400000,
-		.end	= 0x40400083,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_I2S,
-		.end	= IRQ_I2S,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa_device_i2s = {
-	.name		= "pxa2xx-i2s",
-	.id		= -1,
-	.resource	= pxai2s_resources,
-	.num_resources	= ARRAY_SIZE(pxai2s_resources),
-};
-
-struct platform_device pxa_device_asoc_ssp1 = {
-	.name		= "pxa-ssp-dai",
-	.id		= 0,
-};
-
-struct platform_device pxa_device_asoc_ssp2= {
-	.name		= "pxa-ssp-dai",
-	.id		= 1,
-};
-
-struct platform_device pxa_device_asoc_ssp3 = {
-	.name		= "pxa-ssp-dai",
-	.id		= 2,
-};
-
-struct platform_device pxa_device_asoc_ssp4 = {
-	.name		= "pxa-ssp-dai",
-	.id		= 3,
-};
-
-struct platform_device pxa_device_asoc_platform = {
-	.name		= "pxa-pcm-audio",
-	.id		= -1,
-};
-
-static struct resource pxa_rtc_resources[] = {
-	[0] = {
-		.start  = 0x40900000,
-		.end	= 0x40900000 + 0x3b,
-		.flags  = IORESOURCE_MEM,
-	},
-	[1] = {
-		.start  = IRQ_RTC1Hz,
-		.end    = IRQ_RTC1Hz,
-		.name	= "rtc 1Hz",
-		.flags  = IORESOURCE_IRQ,
-	},
-	[2] = {
-		.start  = IRQ_RTCAlrm,
-		.end    = IRQ_RTCAlrm,
-		.name	= "rtc alarm",
-		.flags  = IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa_device_rtc = {
-	.name		= "pxa-rtc",
-	.id		= -1,
-	.num_resources  = ARRAY_SIZE(pxa_rtc_resources),
-	.resource       = pxa_rtc_resources,
-};
-
-struct platform_device sa1100_device_rtc = {
-	.name		= "sa1100-rtc",
-	.id		= -1,
-	.num_resources  = ARRAY_SIZE(pxa_rtc_resources),
-	.resource       = pxa_rtc_resources,
-};
-
-#ifdef CONFIG_PXA25x
-
-static struct resource pxa25x_resource_pwm0[] = {
-	[0] = {
-		.start	= 0x40b00000,
-		.end	= 0x40b0000f,
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-struct platform_device pxa25x_device_pwm0 = {
-	.name		= "pxa25x-pwm",
-	.id		= 0,
-	.resource	= pxa25x_resource_pwm0,
-	.num_resources	= ARRAY_SIZE(pxa25x_resource_pwm0),
-};
-
-static struct resource pxa25x_resource_pwm1[] = {
-	[0] = {
-		.start	= 0x40c00000,
-		.end	= 0x40c0000f,
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-struct platform_device pxa25x_device_pwm1 = {
-	.name		= "pxa25x-pwm",
-	.id		= 1,
-	.resource	= pxa25x_resource_pwm1,
-	.num_resources	= ARRAY_SIZE(pxa25x_resource_pwm1),
-};
-
-static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa25x_resource_ssp[] = {
-	[0] = {
-		.start	= 0x41000000,
-		.end	= 0x4100001f,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_SSP,
-		.end	= IRQ_SSP,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa25x_device_ssp = {
-	.name		= "pxa25x-ssp",
-	.id		= 0,
-	.dev		= {
-		.dma_mask = &pxa25x_ssp_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.resource	= pxa25x_resource_ssp,
-	.num_resources	= ARRAY_SIZE(pxa25x_resource_ssp),
-};
-
-static u64 pxa25x_nssp_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa25x_resource_nssp[] = {
-	[0] = {
-		.start	= 0x41400000,
-		.end	= 0x4140002f,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_NSSP,
-		.end	= IRQ_NSSP,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa25x_device_nssp = {
-	.name		= "pxa25x-nssp",
-	.id		= 1,
-	.dev		= {
-		.dma_mask = &pxa25x_nssp_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.resource	= pxa25x_resource_nssp,
-	.num_resources	= ARRAY_SIZE(pxa25x_resource_nssp),
-};
-
-static u64 pxa25x_assp_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa25x_resource_assp[] = {
-	[0] = {
-		.start	= 0x41500000,
-		.end	= 0x4150002f,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_ASSP,
-		.end	= IRQ_ASSP,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa25x_device_assp = {
-	/* ASSP is basically equivalent to NSSP */
-	.name		= "pxa25x-nssp",
-	.id		= 2,
-	.dev		= {
-		.dma_mask = &pxa25x_assp_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.resource	= pxa25x_resource_assp,
-	.num_resources	= ARRAY_SIZE(pxa25x_resource_assp),
-};
-#endif /* CONFIG_PXA25x */
-
-#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
-static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa27x_resource_ohci[] = {
-	[0] = {
-		.start  = 0x4C000000,
-		.end    = 0x4C00ff6f,
-		.flags  = IORESOURCE_MEM,
-	},
-	[1] = {
-		.start  = IRQ_USBH1,
-		.end    = IRQ_USBH1,
-		.flags  = IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa27x_device_ohci = {
-	.name		= "pxa27x-ohci",
-	.id		= -1,
-	.dev		= {
-		.dma_mask = &pxa27x_ohci_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.num_resources  = ARRAY_SIZE(pxa27x_resource_ohci),
-	.resource       = pxa27x_resource_ohci,
-};
-
-void __init pxa_set_ohci_info(struct pxaohci_platform_data *info)
-{
-	pxa_register_device(&pxa27x_device_ohci, info);
-}
-#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
-
-#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
-static u64 pxa27x_ssp1_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa27x_resource_ssp1[] = {
-	[0] = {
-		.start	= 0x41000000,
-		.end	= 0x4100003f,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_SSP,
-		.end	= IRQ_SSP,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa27x_device_ssp1 = {
-	.name		= "pxa27x-ssp",
-	.id		= 0,
-	.dev		= {
-		.dma_mask = &pxa27x_ssp1_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.resource	= pxa27x_resource_ssp1,
-	.num_resources	= ARRAY_SIZE(pxa27x_resource_ssp1),
-};
-
-static u64 pxa27x_ssp2_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa27x_resource_ssp2[] = {
-	[0] = {
-		.start	= 0x41700000,
-		.end	= 0x4170003f,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_SSP2,
-		.end	= IRQ_SSP2,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa27x_device_ssp2 = {
-	.name		= "pxa27x-ssp",
-	.id		= 1,
-	.dev		= {
-		.dma_mask = &pxa27x_ssp2_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.resource	= pxa27x_resource_ssp2,
-	.num_resources	= ARRAY_SIZE(pxa27x_resource_ssp2),
-};
-
-static u64 pxa27x_ssp3_dma_mask = DMA_BIT_MASK(32);
-
-static struct resource pxa27x_resource_ssp3[] = {
-	[0] = {
-		.start	= 0x41900000,
-		.end	= 0x4190003f,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_SSP3,
-		.end	= IRQ_SSP3,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-struct platform_device pxa27x_device_ssp3 = {
-	.name		= "pxa27x-ssp",
-	.id		= 2,
-	.dev		= {
-		.dma_mask = &pxa27x_ssp3_dma_mask,
-		.coherent_dma_mask = DMA_BIT_MASK(32),
-	},
-	.resource	= pxa27x_resource_ssp3,
-	.num_resources	= ARRAY_SIZE(pxa27x_resource_ssp3),
-};
-
-static struct resource pxa27x_resource_pwm0[] = {
-	[0] = {
-		.start	= 0x40b00000,
-		.end	= 0x40b0001f,
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-struct platform_device pxa27x_device_pwm0 = {
-	.name		= "pxa27x-pwm",
-	.id		= 0,
-	.resource	= pxa27x_resource_pwm0,
-	.num_resources	= ARRAY_SIZE(pxa27x_resource_pwm0),
-};
-
-static struct resource pxa27x_resource_pwm1[] = {
-	[0] = {
-		.start	= 0x40c00000,
-		.end	= 0x40c0001f,
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-struct platform_device pxa27x_device_pwm1 = {
-	.name		= "pxa27x-pwm",
-	.id		= 1,
-	.resource	= pxa27x_resource_pwm1,
-	.num_resources	= ARRAY_SIZE(pxa27x_resource_pwm1),
-};
-#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
-
-#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
-const struct software_node pxa2xx_gpiochip_node = {
-	.name	= "gpio-pxa",
-};
-
-struct resource pxa_resource_gpio[] = {
-	{
-		.start	= 0x40e00000,
-		.end	= 0x40e0ffff,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_GPIO0,
-		.end	= IRQ_GPIO0,
-		.name	= "gpio0",
-		.flags	= IORESOURCE_IRQ,
-	}, {
-		.start	= IRQ_GPIO1,
-		.end	= IRQ_GPIO1,
-		.name	= "gpio1",
-		.flags	= IORESOURCE_IRQ,
-	}, {
-		.start	= IRQ_GPIO_2_x,
-		.end	= IRQ_GPIO_2_x,
-		.name	= "gpio_mux",
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct pxa_gpio_platform_data pxa2xx_gpio_info = {
-	.irq_base	= PXA_GPIO_TO_IRQ(0),
-	.gpio_set_wake	= gpio_set_wake,
-};
-
-struct platform_device pxa25x_device_gpio = {
-	.name		= "pxa25x-gpio",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(pxa_resource_gpio),
-	.resource	= pxa_resource_gpio,
-	.dev		= {
-		.platform_data	= &pxa2xx_gpio_info,
-	},
-};
-
-struct platform_device pxa27x_device_gpio = {
-	.name		= "pxa27x-gpio",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(pxa_resource_gpio),
-	.resource	= pxa_resource_gpio,
-	.dev		= {
-		.platform_data	= &pxa2xx_gpio_info,
-	},
-};
-#endif /* CONFIG_PXA25x || CONFIG_PXA27x */
-
-static struct resource pxa_dma_resource[] = {
-	[0] = {
-		.start	= 0x40000000,
-		.end	= 0x4000ffff,
-		.flags	= IORESOURCE_MEM,
-	},
-	[1] = {
-		.start	= IRQ_DMA,
-		.end	= IRQ_DMA,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static u64 pxadma_dmamask = 0xffffffffUL;
-
-static struct platform_device pxa2xx_pxa_dma = {
-	.name		= "pxa-dma",
-	.id		= 0,
-	.dev		= {
-		.dma_mask = &pxadma_dmamask,
-		.coherent_dma_mask = 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(pxa_dma_resource),
-	.resource	= pxa_dma_resource,
-};
-
-void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata)
-{
-	pxa_register_device(&pxa2xx_pxa_dma, dma_pdata);
-}
 
 void __init pxa_register_wdt(unsigned int reset_status)
 {
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
deleted file mode 100644
index 72c556ff67db..000000000000
--- a/arch/arm/mach-pxa/devices.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#define PDMA_FILTER_PARAM(_prio, _requestor) (&(struct pxad_param) { \
-	.prio = PXAD_PRIO_##_prio, .drcmr = _requestor })
-struct mmp_dma_platdata;
-
-extern struct platform_device pxa_device_pmu;
-extern struct platform_device pxa3xx_device_mci2;
-extern struct platform_device pxa3xx_device_mci3;
-extern struct platform_device pxa25x_device_udc;
-extern struct platform_device pxa27x_device_udc;
-extern struct platform_device pxa_device_fb;
-extern struct platform_device pxa_device_ffuart;
-extern struct platform_device pxa_device_btuart;
-extern struct platform_device pxa_device_stuart;
-extern struct platform_device pxa_device_hwuart;
-extern struct platform_device pxa_device_i2c;
-extern struct platform_device pxa_device_i2s;
-extern struct platform_device sa1100_device_rtc;
-extern struct platform_device pxa_device_rtc;
-extern struct platform_device pxa_device_ac97;
-
-extern struct platform_device pxa27x_device_i2c_power;
-extern struct platform_device pxa27x_device_ohci;
-extern struct platform_device pxa27x_device_keypad;
-
-extern struct platform_device pxa25x_device_ssp;
-extern struct platform_device pxa25x_device_nssp;
-extern struct platform_device pxa25x_device_assp;
-extern struct platform_device pxa27x_device_ssp1;
-extern struct platform_device pxa27x_device_ssp2;
-extern struct platform_device pxa27x_device_ssp3;
-extern struct platform_device pxa3xx_device_ssp1;
-extern struct platform_device pxa3xx_device_ssp2;
-extern struct platform_device pxa3xx_device_ssp3;
-extern struct platform_device pxa3xx_device_ssp4;
-
-extern struct platform_device pxa25x_device_pwm0;
-extern struct platform_device pxa25x_device_pwm1;
-extern struct platform_device pxa27x_device_pwm0;
-extern struct platform_device pxa27x_device_pwm1;
-
-extern struct platform_device pxa3xx_device_nand;
-extern struct platform_device pxa3xx_device_i2c_power;
-
-extern struct platform_device pxa3xx_device_gcu;
-
-extern struct platform_device pxa_device_asoc_platform;
-extern struct platform_device pxa_device_asoc_ssp1;
-extern struct platform_device pxa_device_asoc_ssp2;
-extern struct platform_device pxa_device_asoc_ssp3;
-extern struct platform_device pxa_device_asoc_ssp4;
-
-extern struct platform_device pxa25x_device_gpio;
-extern struct platform_device pxa27x_device_gpio;
-
-extern const struct software_node pxa2xx_gpiochip_node;
-
-void __init pxa_register_device(struct platform_device *dev, void *data);
-void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata);
-
-struct i2c_pxa_platform_data;
-extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
-#ifdef CONFIG_PXA27x
-extern void pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info);
-#endif
-#ifdef CONFIG_PXA3xx
-extern void pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info);
-#endif
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
index caad4fca8de3..239d1b4119cc 100644
--- a/arch/arm/mach-pxa/generic.h
+++ b/arch/arm/mach-pxa/generic.h
@@ -38,11 +38,6 @@ extern struct syscore pxa_irq_syscore;
 extern struct syscore pxa2xx_mfp_syscore;
 extern struct syscore pxa3xx_mfp_syscore;
 
-void __init pxa_set_ffuart_info(void *info);
-void __init pxa_set_btuart_info(void *info);
-void __init pxa_set_stuart_info(void *info);
-void __init pxa_set_hwuart_info(void *info);
-
 void pxa_restart(enum reboot_mode, const char *);
 
 #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c
deleted file mode 100644
index 7ab0cb015d1b..000000000000
--- a/arch/arm/mach-pxa/gumstix.c
+++ /dev/null
@@ -1,237 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-pxa/gumstix.c
- *
- *  Support for the Gumstix motherboards.
- *
- *  Original Author:	Craig Hughes
- *  Created:	Feb 14, 2008
- *  Copyright:	Craig Hughes
- *
- *  Implemented based on lubbock.c by Nicolas Pitre and code from Craig
- *  Hughes
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/interrupt.h>
-#include <linux/delay.h>
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/gpio/machine.h>
-#include <linux/gpio/property.h>
-#include <linux/gpio/legacy.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-
-#include <asm/setup.h>
-#include <asm/page.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-#include <linux/sizes.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/flash.h>
-
-#include "pxa25x.h"
-#include <linux/platform_data/mmc-pxamci.h>
-#include "gumstix.h"
-#include "devices.h"
-
-#include "generic.h"
-
-static struct resource flash_resource = {
-	.start	= 0x00000000,
-	.end	= SZ_64M - 1,
-	.flags	= IORESOURCE_MEM,
-};
-
-static struct mtd_partition gumstix_partitions[] = {
-	{
-		.name =		"Bootloader",
-		.size =		0x00040000,
-		.offset =	0,
-		.mask_flags =	MTD_WRITEABLE  /* force read-only */
-	} , {
-		.name =		"rootfs",
-		.size =		MTDPART_SIZ_FULL,
-		.offset =	MTDPART_OFS_APPEND
-	}
-};
-
-static struct flash_platform_data gumstix_flash_data = {
-	.map_name	= "cfi_probe",
-	.parts		= gumstix_partitions,
-	.nr_parts	= ARRAY_SIZE(gumstix_partitions),
-	.width		= 2,
-};
-
-static struct platform_device gumstix_flash_device = {
-	.name		= "pxa2xx-flash",
-	.id		= 0,
-	.dev = {
-		.platform_data = &gumstix_flash_data,
-	},
-	.resource = &flash_resource,
-	.num_resources = 1,
-};
-
-static struct platform_device *devices[] __initdata = {
-	&gumstix_flash_device,
-};
-
-#ifdef CONFIG_MMC_PXA
-static struct pxamci_platform_data gumstix_mci_platform_data = {
-	.ocr_mask		= MMC_VDD_32_33|MMC_VDD_33_34,
-};
-
-static void __init gumstix_mmc_init(void)
-{
-	pxa_set_mci_info(&gumstix_mci_platform_data, NULL);
-}
-#else
-static void __init gumstix_mmc_init(void)
-{
-	pr_debug("Gumstix mmc disabled\n");
-}
-#endif
-
-#if IS_ENABLED(CONFIG_USB_PXA25X)
-static const struct property_entry gumstix_vbus_props[] __initconst = {
-	PROPERTY_ENTRY_GPIO("vbus-gpios", &pxa2xx_gpiochip_node,
-			    GPIO_GUMSTIX_USB_GPIOn, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_GPIO("pullup-gpios", &pxa2xx_gpiochip_node,
-			    GPIO_GUMSTIX_USB_GPIOx, GPIO_ACTIVE_HIGH),
-	{ }
-};
-
-static const struct platform_device_info gumstix_gpio_vbus_info __initconst = {
-	.name		= "gpio-vbus",
-	.id		= PLATFORM_DEVID_NONE,
-	.properties	= gumstix_vbus_props,
-};
-
-static void __init gumstix_udc_init(void)
-{
-	platform_device_register_full(&gumstix_gpio_vbus_info);
-}
-#else
-static void gumstix_udc_init(void)
-{
-	pr_debug("Gumstix udc is disabled\n");
-}
-#endif
-
-#ifdef CONFIG_BT
-/* Normally, the bootloader would have enabled this 32kHz clock but many
-** boards still have u-boot 1.1.4 so we check if it has been turned on and
-** if not, we turn it on with a warning message. */
-static void gumstix_setup_bt_clock(void)
-{
-	int timeout = 500;
-
-	if (!(readl(OSCC) & OSCC_OOK))
-		pr_warn("32kHz clock was not on. Bootloader may need to be updated\n");
-	else
-		return;
-
-	writel(readl(OSCC) | OSCC_OON, OSCC);
-	do {
-		if (readl(OSCC) & OSCC_OOK)
-			break;
-		udelay(1);
-	} while (--timeout);
-	if (!timeout)
-		pr_err("Failed to start 32kHz clock\n");
-}
-
-static void __init gumstix_bluetooth_init(void)
-{
-	int err;
-
-	gumstix_setup_bt_clock();
-
-	err = gpio_request(GPIO_GUMSTIX_BTRESET, "BTRST");
-	if (err) {
-		pr_err("gumstix: failed request gpio for bluetooth reset\n");
-		return;
-	}
-
-	err = gpio_direction_output(GPIO_GUMSTIX_BTRESET, 1);
-	if (err) {
-		pr_err("gumstix: can't reset bluetooth\n");
-		return;
-	}
-	gpio_set_value(GPIO_GUMSTIX_BTRESET, 0);
-	udelay(100);
-	gpio_set_value(GPIO_GUMSTIX_BTRESET, 1);
-}
-#else
-static void gumstix_bluetooth_init(void)
-{
-	pr_debug("Gumstix Bluetooth is disabled\n");
-}
-#endif
-
-static unsigned long gumstix_pin_config[] __initdata = {
-	GPIO12_32KHz,
-	/* BTUART */
-	GPIO42_HWUART_RXD,
-	GPIO43_HWUART_TXD,
-	GPIO44_HWUART_CTS,
-	GPIO45_HWUART_RTS,
-	/* MMC */
-	GPIO6_MMC_CLK,
-	GPIO53_MMC_CLK,
-	GPIO8_MMC_CS0,
-};
-
-int __attribute__((weak)) am200_init(void)
-{
-	return 0;
-}
-
-int __attribute__((weak)) am300_init(void)
-{
-	return 0;
-}
-
-static void __init carrier_board_init(void)
-{
-	/*
-	 * put carrier/expansion board init here if
-	 * they cannot be detected programatically
-	 */
-	am200_init();
-	am300_init();
-}
-
-static void __init gumstix_init(void)
-{
-	pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config));
-
-	pxa_set_ffuart_info(NULL);
-	pxa_set_btuart_info(NULL);
-	pxa_set_stuart_info(NULL);
-	pxa_set_hwuart_info(NULL);
-
-	gumstix_bluetooth_init();
-	gumstix_udc_init();
-	gumstix_mmc_init();
-	(void) platform_add_devices(devices, ARRAY_SIZE(devices));
-	carrier_board_init();
-}
-
-MACHINE_START(GUMSTIX, "Gumstix")
-	.atag_offset	= 0x100, /* match u-boot bi_boot_params */
-	.map_io		= pxa25x_map_io,
-	.nr_irqs	= PXA_NR_IRQS,
-	.init_irq	= pxa25x_init_irq,
-	.init_time	= pxa_timer_init,
-	.init_machine	= gumstix_init,
-	.restart	= pxa_restart,
-MACHINE_END
diff --git a/arch/arm/mach-pxa/gumstix.h b/arch/arm/mach-pxa/gumstix.h
deleted file mode 100644
index 9005b3c0aabd..000000000000
--- a/arch/arm/mach-pxa/gumstix.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/gumstix.h
- */
-
-#include "irqs.h" /* PXA_GPIO_TO_IRQ */
-
-/* BTRESET - Reset line to Bluetooth module, active low signal. */
-#define GPIO_GUMSTIX_BTRESET          7
-#define GPIO_GUMSTIX_BTRESET_MD		(GPIO_GUMSTIX_BTRESET | GPIO_OUT)
-
-
-/*
-GPIOn - Input from MAX823 (or equiv), normalizing USB +5V into a clean
-interrupt signal for determining cable presence. On the gumstix F,
-this moves to GPIO17 and GPIO37. */
-
-/* GPIOx - Connects to USB D+ and used as a pull-up after GPIOn
-has detected a cable insertion; driven low otherwise. */
-
-#define GPIO_GUMSTIX_USB_GPIOn		35
-#define GPIO_GUMSTIX_USB_GPIOx		41
-
-/* usb state change */
-#define GUMSTIX_USB_INTR_IRQ		PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_USB_GPIOn)
-
-#define GPIO_GUMSTIX_USB_GPIOn_MD	(GPIO_GUMSTIX_USB_GPIOn | GPIO_IN)
-#define GPIO_GUMSTIX_USB_GPIOx_CON_MD	(GPIO_GUMSTIX_USB_GPIOx | GPIO_OUT)
-#define GPIO_GUMSTIX_USB_GPIOx_DIS_MD	(GPIO_GUMSTIX_USB_GPIOx | GPIO_IN)
-
-/*
- * SD/MMC definitions
- */
-#define GUMSTIX_GPIO_nSD_WP		22 /* SD Write Protect */
-#define GUMSTIX_GPIO_nSD_DETECT		11 /* MMC/SD Card Detect */
-#define GUMSTIX_IRQ_GPIO_nSD_DETECT	PXA_GPIO_TO_IRQ(GUMSTIX_GPIO_nSD_DETECT)
-
-/*
- * SMC Ethernet definitions
- * ETH_RST provides a hardware reset line to the ethernet chip
- * ETH is the IRQ line in from the ethernet chip to the PXA
- */
-#define GPIO_GUMSTIX_ETH0_RST		80
-#define GPIO_GUMSTIX_ETH0_RST_MD	(GPIO_GUMSTIX_ETH0_RST | GPIO_OUT)
-#define GPIO_GUMSTIX_ETH1_RST		52
-#define GPIO_GUMSTIX_ETH1_RST_MD	(GPIO_GUMSTIX_ETH1_RST | GPIO_OUT)
-
-#define GPIO_GUMSTIX_ETH0		36
-#define GPIO_GUMSTIX_ETH0_MD		(GPIO_GUMSTIX_ETH0 | GPIO_IN)
-#define GUMSTIX_ETH0_IRQ		PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH0)
-#define GPIO_GUMSTIX_ETH1		27
-#define GPIO_GUMSTIX_ETH1_MD		(GPIO_GUMSTIX_ETH1 | GPIO_IN)
-#define GUMSTIX_ETH1_IRQ		PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH1)
-
-
-/* CF reset line */
-#define GPIO8_RESET			8
-
-/* CF slot 0 */
-#define GPIO4_nBVD1			4
-#define GPIO4_nSTSCHG			GPIO4_nBVD1
-#define GPIO11_nCD			11
-#define GPIO26_PRDY_nBSY		26
-#define GUMSTIX_S0_nSTSCHG_IRQ		PXA_GPIO_TO_IRQ(GPIO4_nSTSCHG)
-#define GUMSTIX_S0_nCD_IRQ		PXA_GPIO_TO_IRQ(GPIO11_nCD)
-#define GUMSTIX_S0_PRDY_nBSY_IRQ	PXA_GPIO_TO_IRQ(GPIO26_PRDY_nBSY)
-
-/* CF slot 1 */
-#define GPIO18_nBVD1			18
-#define GPIO18_nSTSCHG			GPIO18_nBVD1
-#define GPIO36_nCD			36
-#define GPIO27_PRDY_nBSY		27
-#define GUMSTIX_S1_nSTSCHG_IRQ		PXA_GPIO_TO_IRQ(GPIO18_nSTSCHG)
-#define GUMSTIX_S1_nCD_IRQ		PXA_GPIO_TO_IRQ(GPIO36_nCD)
-#define GUMSTIX_S1_PRDY_nBSY_IRQ	PXA_GPIO_TO_IRQ(GPIO27_PRDY_nBSY)
-
-/* CF GPIO line modes */
-#define GPIO4_nSTSCHG_MD		(GPIO4_nSTSCHG | GPIO_IN)
-#define GPIO8_RESET_MD			(GPIO8_RESET | GPIO_OUT)
-#define GPIO11_nCD_MD			(GPIO11_nCD | GPIO_IN)
-#define GPIO18_nSTSCHG_MD		(GPIO18_nSTSCHG | GPIO_IN)
-#define GPIO26_PRDY_nBSY_MD		(GPIO26_PRDY_nBSY | GPIO_IN)
-#define GPIO27_PRDY_nBSY_MD		(GPIO27_PRDY_nBSY | GPIO_IN)
-#define GPIO36_nCD_MD			(GPIO36_nCD | GPIO_IN)
-
-/* for expansion boards that can't be programatically detected */
-extern int am200_init(void);
-extern int am300_init(void);
-
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c
index a273f0af095e..de6a306cf0e2 100644
--- a/arch/arm/mach-pxa/pxa25x.c
+++ b/arch/arm/mach-pxa/pxa25x.c
@@ -25,7 +25,6 @@
 #include <linux/syscore_ops.h>
 #include <linux/irq.h>
 #include <linux/irqchip.h>
-#include <linux/platform_data/mmp_dma.h>
 #include <linux/soc/pxa/cpu.h>
 #include <linux/soc/pxa/smemc.h>
 
@@ -39,7 +38,6 @@
 #include "smemc.h"
 
 #include "generic.h"
-#include "devices.h"
 
 /*
  * Various clock factors driven by the CCCR register.
@@ -178,53 +176,6 @@ void __init pxa25x_map_io(void)
 	pxa25x_get_clk_frequency_khz(1);
 }
 
-static struct platform_device *pxa25x_devices[] __initdata = {
-	&pxa25x_device_gpio,
-	&pxa25x_device_udc,
-	&pxa_device_pmu,
-	&pxa_device_i2s,
-	&sa1100_device_rtc,
-	&pxa25x_device_ssp,
-	&pxa25x_device_nssp,
-	&pxa25x_device_assp,
-	&pxa25x_device_pwm0,
-	&pxa25x_device_pwm1,
-	&pxa_device_asoc_platform,
-};
-
-static const struct dma_slave_map pxa25x_slave_map[] = {
-	/* PXA25x, PXA27x and PXA3xx common entries */
-	{ "pxa2xx-ac97", "pcm_pcm_mic_mono", PDMA_FILTER_PARAM(LOWEST, 8) },
-	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_in", PDMA_FILTER_PARAM(LOWEST, 9) },
-	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_out",
-	  PDMA_FILTER_PARAM(LOWEST, 10) },
-	{ "pxa2xx-ac97", "pcm_pcm_stereo_in", PDMA_FILTER_PARAM(LOWEST, 11) },
-	{ "pxa2xx-ac97", "pcm_pcm_stereo_out", PDMA_FILTER_PARAM(LOWEST, 12) },
-	{ "pxa-ssp-dai.1", "rx", PDMA_FILTER_PARAM(LOWEST, 13) },
-	{ "pxa-ssp-dai.1", "tx", PDMA_FILTER_PARAM(LOWEST, 14) },
-	{ "pxa-ssp-dai.2", "rx", PDMA_FILTER_PARAM(LOWEST, 15) },
-	{ "pxa-ssp-dai.2", "tx", PDMA_FILTER_PARAM(LOWEST, 16) },
-	{ "pxa2xx-ir", "rx", PDMA_FILTER_PARAM(LOWEST, 17) },
-	{ "pxa2xx-ir", "tx", PDMA_FILTER_PARAM(LOWEST, 18) },
-	{ "pxa2xx-mci.0", "rx", PDMA_FILTER_PARAM(LOWEST, 21) },
-	{ "pxa2xx-mci.0", "tx", PDMA_FILTER_PARAM(LOWEST, 22) },
-
-	/* PXA25x specific map */
-	{ "pxa25x-ssp.0", "rx", PDMA_FILTER_PARAM(LOWEST, 13) },
-	{ "pxa25x-ssp.0", "tx", PDMA_FILTER_PARAM(LOWEST, 14) },
-	{ "pxa25x-nssp.1", "rx", PDMA_FILTER_PARAM(LOWEST, 15) },
-	{ "pxa25x-nssp.1", "tx", PDMA_FILTER_PARAM(LOWEST, 16) },
-	{ "pxa25x-nssp.2", "rx", PDMA_FILTER_PARAM(LOWEST, 23) },
-	{ "pxa25x-nssp.2", "tx", PDMA_FILTER_PARAM(LOWEST, 24) },
-};
-
-static struct mmp_dma_platdata pxa25x_dma_pdata = {
-	.dma_channels	= 16,
-	.nb_requestors	= 40,
-	.slave_map	= pxa25x_slave_map,
-	.slave_map_cnt	= ARRAY_SIZE(pxa25x_slave_map),
-};
-
 static int __init pxa25x_init(void)
 {
 	int ret = 0;
@@ -237,16 +188,6 @@ static int __init pxa25x_init(void)
 
 		register_syscore(&pxa_irq_syscore);
 		register_syscore(&pxa2xx_mfp_syscore);
-
-		if (!of_have_populated_dt()) {
-			software_node_register(&pxa2xx_gpiochip_node);
-			pxa25x_device_gpio.dev.fwnode = software_node_fwnode(
-								&pxa2xx_gpiochip_node);
-
-			pxa2xx_set_dmac_info(&pxa25x_dma_pdata);
-			ret = platform_add_devices(pxa25x_devices,
-						   ARRAY_SIZE(pxa25x_devices));
-		}
 	}
 
 	return ret;
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index 814e0a12f38a..617af225628b 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -21,8 +21,6 @@
 #include <linux/syscore_ops.h>
 #include <linux/io.h>
 #include <linux/irq.h>
-#include <linux/platform_data/i2c-pxa.h>
-#include <linux/platform_data/mmp_dma.h>
 #include <linux/soc/pxa/cpu.h>
 #include <linux/soc/pxa/smemc.h>
 
@@ -33,14 +31,12 @@
 #include "pxa27x.h"
 #include "reset.h"
 #include <linux/platform_data/pxa2xx_udc.h>
-#include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/asoc-pxa.h>
 #include "pm.h"
 #include "addr-map.h"
 #include "smemc.h"
 
 #include "generic.h"
-#include "devices.h"
 #include <linux/clk-provider.h>
 #include <linux/clkdev.h>
 
@@ -272,90 +268,17 @@ void __init pxa27x_map_io(void)
 	pxa27x_get_clk_frequency_khz(1);
 }
 
-/*
- * device registration specific to PXA27x.
- */
-void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
-{
-	local_irq_disable();
-	PCFR |= PCFR_PI2CEN;
-	local_irq_enable();
-	pxa_register_device(&pxa27x_device_i2c_power, info);
-}
-
-static struct platform_device *devices[] __initdata = {
-	&pxa27x_device_gpio,
-	&pxa27x_device_udc,
-	&pxa_device_pmu,
-	&pxa_device_i2s,
-	&pxa_device_asoc_ssp1,
-	&pxa_device_asoc_ssp2,
-	&pxa_device_asoc_ssp3,
-	&pxa_device_asoc_platform,
-	&pxa_device_rtc,
-	&pxa27x_device_ssp1,
-	&pxa27x_device_ssp2,
-	&pxa27x_device_ssp3,
-	&pxa27x_device_pwm0,
-	&pxa27x_device_pwm1,
-};
-
-static const struct dma_slave_map pxa27x_slave_map[] = {
-	/* PXA25x, PXA27x and PXA3xx common entries */
-	{ "pxa2xx-ac97", "pcm_pcm_mic_mono", PDMA_FILTER_PARAM(LOWEST, 8) },
-	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_in", PDMA_FILTER_PARAM(LOWEST, 9) },
-	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_out",
-	  PDMA_FILTER_PARAM(LOWEST, 10) },
-	{ "pxa2xx-ac97", "pcm_pcm_stereo_in", PDMA_FILTER_PARAM(LOWEST, 11) },
-	{ "pxa2xx-ac97", "pcm_pcm_stereo_out", PDMA_FILTER_PARAM(LOWEST, 12) },
-	{ "pxa-ssp-dai.0", "rx", PDMA_FILTER_PARAM(LOWEST, 13) },
-	{ "pxa-ssp-dai.0", "tx", PDMA_FILTER_PARAM(LOWEST, 14) },
-	{ "pxa-ssp-dai.1", "rx", PDMA_FILTER_PARAM(LOWEST, 15) },
-	{ "pxa-ssp-dai.1", "tx", PDMA_FILTER_PARAM(LOWEST, 16) },
-	{ "pxa2xx-ir", "rx", PDMA_FILTER_PARAM(LOWEST, 17) },
-	{ "pxa2xx-ir", "tx", PDMA_FILTER_PARAM(LOWEST, 18) },
-	{ "pxa2xx-mci.0", "rx", PDMA_FILTER_PARAM(LOWEST, 21) },
-	{ "pxa2xx-mci.0", "tx", PDMA_FILTER_PARAM(LOWEST, 22) },
-	{ "pxa-ssp-dai.2", "rx", PDMA_FILTER_PARAM(LOWEST, 66) },
-	{ "pxa-ssp-dai.2", "tx", PDMA_FILTER_PARAM(LOWEST, 67) },
-
-	/* PXA27x specific map */
-	{ "pxa2xx-i2s", "rx", PDMA_FILTER_PARAM(LOWEST, 2) },
-	{ "pxa2xx-i2s", "tx", PDMA_FILTER_PARAM(LOWEST, 3) },
-	{ "pxa27x-camera.0", "CI_Y", PDMA_FILTER_PARAM(HIGHEST, 68) },
-	{ "pxa27x-camera.0", "CI_U", PDMA_FILTER_PARAM(HIGHEST, 69) },
-	{ "pxa27x-camera.0", "CI_V", PDMA_FILTER_PARAM(HIGHEST, 70) },
-};
-
-static struct mmp_dma_platdata pxa27x_dma_pdata = {
-	.dma_channels	= 32,
-	.nb_requestors	= 75,
-	.slave_map	= pxa27x_slave_map,
-	.slave_map_cnt	= ARRAY_SIZE(pxa27x_slave_map),
-};
-
 static int __init pxa27x_init(void)
 {
 	int ret = 0;
 
 	if (cpu_is_pxa27x()) {
-
 		pxa_register_wdt(RCSR);
 
 		pxa27x_init_pm();
 
 		register_syscore(&pxa_irq_syscore);
 		register_syscore(&pxa2xx_mfp_syscore);
-
-		if (!of_have_populated_dt()) {
-			software_node_register(&pxa2xx_gpiochip_node);
-			pxa27x_device_gpio.dev.fwnode = software_node_fwnode(
-								&pxa2xx_gpiochip_node);
-
-			pxa2xx_set_dmac_info(&pxa27x_dma_pdata);
-			ret = platform_add_devices(devices,
-						   ARRAY_SIZE(devices));
-		}
 	}
 
 	return ret;
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
index f77ec118d5b9..0022bf235114 100644
--- a/arch/arm/mach-pxa/pxa300.c
+++ b/arch/arm/mach-pxa/pxa300.c
@@ -19,7 +19,6 @@
 #include "pxa300.h"
 
 #include "generic.h"
-#include "devices.h"
 
 static struct mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
 
diff --git a/arch/arm/mach-pxa/pxa320.c b/arch/arm/mach-pxa/pxa320.c
index e372e6c118de..2e84afd94467 100644
--- a/arch/arm/mach-pxa/pxa320.c
+++ b/arch/arm/mach-pxa/pxa320.c
@@ -19,7 +19,6 @@
 #include "pxa320.h"
 
 #include "generic.h"
-#include "devices.h"
 
 static struct mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
 
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 06c578ea658e..46f4efdfb514 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -10,11 +10,9 @@
  *             initial version
  */
 #include <linux/dmaengine.h>
-#include <linux/dma/pxa-dma.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
-#include <linux/gpio-pxa.h>
 #include <linux/pm.h>
 #include <linux/platform_device.h>
 #include <linux/irq.h>
@@ -22,8 +20,6 @@
 #include <linux/io.h>
 #include <linux/of.h>
 #include <linux/syscore_ops.h>
-#include <linux/platform_data/i2c-pxa.h>
-#include <linux/platform_data/mmp_dma.h>
 #include <linux/soc/pxa/cpu.h>
 #include <linux/clk/pxa.h>
 
@@ -31,14 +27,12 @@
 #include <asm/suspend.h>
 #include "pxa3xx-regs.h"
 #include "reset.h"
-#include <linux/platform_data/usb-ohci-pxa27x.h>
 #include "pm.h"
 #include "addr-map.h"
 #include "smemc.h"
 #include "irqs.h"
 
 #include "generic.h"
-#include "devices.h"
 
 #define PECR_IE(n)	((1 << ((n) * 2)) << 28)
 #define PECR_IS(n)	((1 << ((n) * 2)) << 29)
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
deleted file mode 100644
index a611eea70e5a..000000000000
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ /dev/null
@@ -1,941 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Battery and Power Management code for the Sharp SL-C7xx and SL-Cxx00
- * series of PDAs
- *
- * Copyright (c) 2004-2005 Richard Purdie
- *
- * Based on code written by Sharp for 2.4 kernels
- */
-
-#undef DEBUG
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-#include <linux/apm-emulation.h>
-#include <linux/timer.h>
-#include <linux/delay.h>
-#include <linux/leds.h>
-#include <linux/suspend.h>
-#include <linux/gpio/legacy.h>
-#include <linux/io.h>
-
-#include <asm/mach-types.h>
-#include "pm.h"
-#include "pxa2xx-regs.h"
-#include "regs-rtc.h"
-#include "sharpsl_pm.h"
-
-/*
- * Constants
- */
-#define SHARPSL_CHARGE_ON_TIME_INTERVAL        (secs_to_jiffies(60))
-#define SHARPSL_CHARGE_FINISH_TIME             (secs_to_jiffies(10*60))
-#define SHARPSL_BATCHK_TIME                    (secs_to_jiffies(15))
-#define SHARPSL_BATCHK_TIME_SUSPEND            (60*10) /* 10 min */
-
-#define SHARPSL_WAIT_CO_TIME                   15  /* 15 sec */
-#define SHARPSL_WAIT_DISCHARGE_ON              100 /* 100 msec */
-#define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP   10  /* 10 msec */
-#define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT   10  /* 10 msec */
-#define SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN   10  /* 10 msec */
-#define SHARPSL_CHARGE_WAIT_TIME               15  /* 15 msec */
-#define SHARPSL_CHARGE_CO_CHECK_TIME           5   /* 5 msec */
-#define SHARPSL_CHARGE_RETRY_CNT               1   /* eqv. 10 min */
-
-/*
- * Prototypes
- */
-#ifdef CONFIG_PM
-static int sharpsl_off_charge_battery(void);
-static int sharpsl_check_battery_voltage(void);
-#endif
-static int sharpsl_check_battery_temp(void);
-static int sharpsl_ac_check(void);
-static int sharpsl_average_value(int ad);
-static void sharpsl_average_clear(void);
-static void sharpsl_charge_toggle(struct work_struct *private_);
-static void sharpsl_battery_thread(struct work_struct *private_);
-
-
-/*
- * Variables
- */
-struct sharpsl_pm_status sharpsl_pm;
-static DECLARE_DELAYED_WORK(toggle_charger, sharpsl_charge_toggle);
-static DECLARE_DELAYED_WORK(sharpsl_bat, sharpsl_battery_thread);
-DEFINE_LED_TRIGGER(sharpsl_charge_led_trigger);
-
-
-
-struct battery_thresh sharpsl_battery_levels_acin[] = {
-	{ 213, 100},
-	{ 212,  98},
-	{ 211,  95},
-	{ 210,  93},
-	{ 209,  90},
-	{ 208,  88},
-	{ 207,  85},
-	{ 206,  83},
-	{ 205,  80},
-	{ 204,  78},
-	{ 203,  75},
-	{ 202,  73},
-	{ 201,  70},
-	{ 200,  68},
-	{ 199,  65},
-	{ 198,  63},
-	{ 197,  60},
-	{ 196,  58},
-	{ 195,  55},
-	{ 194,  53},
-	{ 193,  50},
-	{ 192,  48},
-	{ 192,  45},
-	{ 191,  43},
-	{ 191,  40},
-	{ 190,  38},
-	{ 190,  35},
-	{ 189,  33},
-	{ 188,  30},
-	{ 187,  28},
-	{ 186,  25},
-	{ 185,  23},
-	{ 184,  20},
-	{ 183,  18},
-	{ 182,  15},
-	{ 181,  13},
-	{ 180,  10},
-	{ 179,   8},
-	{ 178,   5},
-	{   0,   0},
-};
-
-struct battery_thresh sharpsl_battery_levels_noac[] = {
-	{ 213, 100},
-	{ 212,  98},
-	{ 211,  95},
-	{ 210,  93},
-	{ 209,  90},
-	{ 208,  88},
-	{ 207,  85},
-	{ 206,  83},
-	{ 205,  80},
-	{ 204,  78},
-	{ 203,  75},
-	{ 202,  73},
-	{ 201,  70},
-	{ 200,  68},
-	{ 199,  65},
-	{ 198,  63},
-	{ 197,  60},
-	{ 196,  58},
-	{ 195,  55},
-	{ 194,  53},
-	{ 193,  50},
-	{ 192,  48},
-	{ 191,  45},
-	{ 190,  43},
-	{ 189,  40},
-	{ 188,  38},
-	{ 187,  35},
-	{ 186,  33},
-	{ 185,  30},
-	{ 184,  28},
-	{ 183,  25},
-	{ 182,  23},
-	{ 181,  20},
-	{ 180,  18},
-	{ 179,  15},
-	{ 178,  13},
-	{ 177,  10},
-	{ 176,   8},
-	{ 175,   5},
-	{   0,   0},
-};
-
-/* MAX1111 Commands */
-#define MAXCTRL_PD0      (1u << 0)
-#define MAXCTRL_PD1      (1u << 1)
-#define MAXCTRL_SGL      (1u << 2)
-#define MAXCTRL_UNI      (1u << 3)
-#define MAXCTRL_SEL_SH   4
-#define MAXCTRL_STR      (1u << 7)
-
-extern int max1111_read_channel(int);
-/*
- * Read MAX1111 ADC
- */
-int sharpsl_pm_pxa_read_max1111(int channel)
-{
-	/* max1111 accepts channels from 0-3, however,
-	 * it is encoded from 0-7 here in the code.
-	 */
-	return max1111_read_channel(channel >> 1);
-}
-
-static int get_percentage(int voltage)
-{
-	int i = sharpsl_pm.machinfo->bat_levels - 1;
-	int bl_status = sharpsl_pm.machinfo->backlight_get_status ? sharpsl_pm.machinfo->backlight_get_status() : 0;
-	struct battery_thresh *thresh;
-
-	if (sharpsl_pm.charge_mode == CHRG_ON)
-		thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_acin_bl : sharpsl_pm.machinfo->bat_levels_acin;
-	else
-		thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_noac_bl : sharpsl_pm.machinfo->bat_levels_noac;
-
-	while (i > 0 && (voltage > thresh[i].voltage))
-		i--;
-
-	return thresh[i].percentage;
-}
-
-static int get_apm_status(int voltage)
-{
-	int low_thresh, high_thresh;
-
-	if (sharpsl_pm.charge_mode == CHRG_ON) {
-		high_thresh = sharpsl_pm.machinfo->status_high_acin;
-		low_thresh = sharpsl_pm.machinfo->status_low_acin;
-	} else {
-		high_thresh = sharpsl_pm.machinfo->status_high_noac;
-		low_thresh = sharpsl_pm.machinfo->status_low_noac;
-	}
-
-	if (voltage >= high_thresh)
-		return APM_BATTERY_STATUS_HIGH;
-	if (voltage >= low_thresh)
-		return APM_BATTERY_STATUS_LOW;
-	return APM_BATTERY_STATUS_CRITICAL;
-}
-
-void sharpsl_battery_kick(void)
-{
-	schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(125));
-}
-
-static void sharpsl_battery_thread(struct work_struct *private_)
-{
-	int voltage, percent, apm_status, i;
-
-	if (!sharpsl_pm.machinfo)
-		return;
-
-	sharpsl_pm.battstat.ac_status = (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN) ? APM_AC_ONLINE : APM_AC_OFFLINE);
-
-	/* Corgi cannot confirm when battery fully charged so periodically kick! */
-	if (!sharpsl_pm.machinfo->batfull_irq && (sharpsl_pm.charge_mode == CHRG_ON)
-			&& time_after(jiffies, sharpsl_pm.charge_start_time +  SHARPSL_CHARGE_ON_TIME_INTERVAL))
-		schedule_delayed_work(&toggle_charger, 0);
-
-	for (i = 0; i < 5; i++) {
-		voltage = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
-		if (voltage > 0)
-			break;
-	}
-	if (voltage <= 0) {
-		voltage = sharpsl_pm.machinfo->bat_levels_noac[0].voltage;
-		dev_warn(sharpsl_pm.dev, "Warning: Cannot read main battery!\n");
-	}
-
-	voltage = sharpsl_average_value(voltage);
-	apm_status = get_apm_status(voltage);
-	percent = get_percentage(voltage);
-
-	/* At low battery voltages, the voltage has a tendency to start
-	   creeping back up so we try to avoid this here */
-	if ((sharpsl_pm.battstat.ac_status == APM_AC_ONLINE)
-	    || (apm_status == APM_BATTERY_STATUS_HIGH)
-	    || percent <= sharpsl_pm.battstat.mainbat_percent) {
-		sharpsl_pm.battstat.mainbat_voltage = voltage;
-		sharpsl_pm.battstat.mainbat_status = apm_status;
-		sharpsl_pm.battstat.mainbat_percent = percent;
-	}
-
-	dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %ld\n", voltage,
-			sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies);
-
-	/* Suspend if critical battery level */
-	if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE)
-	     && (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL)
-	     && !(sharpsl_pm.flags & SHARPSL_APM_QUEUED)) {
-		sharpsl_pm.flags |= SHARPSL_APM_QUEUED;
-		dev_err(sharpsl_pm.dev, "Fatal Off\n");
-		apm_queue_event(APM_CRITICAL_SUSPEND);
-	}
-
-	schedule_delayed_work(&sharpsl_bat, SHARPSL_BATCHK_TIME);
-}
-
-void sharpsl_pm_led(int val)
-{
-	if (val == SHARPSL_LED_ERROR) {
-		dev_err(sharpsl_pm.dev, "Charging Error!\n");
-	} else if (val == SHARPSL_LED_ON) {
-		dev_dbg(sharpsl_pm.dev, "Charge LED On\n");
-		led_trigger_event(sharpsl_charge_led_trigger, LED_FULL);
-	} else {
-		dev_dbg(sharpsl_pm.dev, "Charge LED Off\n");
-		led_trigger_event(sharpsl_charge_led_trigger, LED_OFF);
-	}
-}
-
-static void sharpsl_charge_on(void)
-{
-	dev_dbg(sharpsl_pm.dev, "Turning Charger On\n");
-
-	sharpsl_pm.full_count = 0;
-	sharpsl_pm.charge_mode = CHRG_ON;
-	schedule_delayed_work(&toggle_charger, msecs_to_jiffies(250));
-	schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(500));
-}
-
-static void sharpsl_charge_off(void)
-{
-	dev_dbg(sharpsl_pm.dev, "Turning Charger Off\n");
-
-	sharpsl_pm.machinfo->charge(0);
-	sharpsl_pm_led(SHARPSL_LED_OFF);
-	sharpsl_pm.charge_mode = CHRG_OFF;
-
-	schedule_delayed_work(&sharpsl_bat, 0);
-}
-
-static void sharpsl_charge_error(void)
-{
-	sharpsl_pm_led(SHARPSL_LED_ERROR);
-	sharpsl_pm.machinfo->charge(0);
-	sharpsl_pm.charge_mode = CHRG_ERROR;
-}
-
-static void sharpsl_charge_toggle(struct work_struct *private_)
-{
-	dev_dbg(sharpsl_pm.dev, "Toggling Charger at time: %lx\n", jiffies);
-
-	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
-		sharpsl_charge_off();
-		return;
-	} else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) {
-		sharpsl_charge_error();
-		return;
-	}
-
-	sharpsl_pm_led(SHARPSL_LED_ON);
-	sharpsl_pm.machinfo->charge(0);
-	mdelay(SHARPSL_CHARGE_WAIT_TIME);
-	sharpsl_pm.machinfo->charge(1);
-
-	sharpsl_pm.charge_start_time = jiffies;
-}
-
-static void sharpsl_ac_timer(struct timer_list *unused)
-{
-	int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
-
-	dev_dbg(sharpsl_pm.dev, "AC Status: %d\n", acin);
-
-	sharpsl_average_clear();
-	if (acin && (sharpsl_pm.charge_mode != CHRG_ON))
-		sharpsl_charge_on();
-	else if (sharpsl_pm.charge_mode == CHRG_ON)
-		sharpsl_charge_off();
-
-	schedule_delayed_work(&sharpsl_bat, 0);
-}
-
-
-static irqreturn_t sharpsl_ac_isr(int irq, void *dev_id)
-{
-	/* Delay the event slightly to debounce */
-	/* Must be a smaller delay than the chrg_full_isr below */
-	mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250));
-
-	return IRQ_HANDLED;
-}
-
-static void sharpsl_chrg_full_timer(struct timer_list *unused)
-{
-	dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies);
-
-	sharpsl_pm.full_count++;
-
-	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
-		dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n");
-		if (sharpsl_pm.charge_mode == CHRG_ON)
-			sharpsl_charge_off();
-	} else if (sharpsl_pm.full_count < 2) {
-		dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n");
-		schedule_delayed_work(&toggle_charger, 0);
-	} else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) {
-		dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n");
-		schedule_delayed_work(&toggle_charger, 0);
-	} else {
-		sharpsl_charge_off();
-		sharpsl_pm.charge_mode = CHRG_DONE;
-		dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n");
-	}
-}
-
-/* Charging Finished Interrupt (Not present on Corgi) */
-/* Can trigger at the same time as an AC status change so
-   delay until after that has been processed */
-static irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id)
-{
-	if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
-		return IRQ_HANDLED;
-
-	/* delay until after any ac interrupt */
-	mod_timer(&sharpsl_pm.chrg_full_timer, jiffies + msecs_to_jiffies(500));
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id)
-{
-	int is_fatal = 0;
-
-	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) {
-		dev_err(sharpsl_pm.dev, "Battery now Unlocked! Suspending.\n");
-		is_fatal = 1;
-	}
-
-	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)) {
-		dev_err(sharpsl_pm.dev, "Fatal Batt Error! Suspending.\n");
-		is_fatal = 1;
-	}
-
-	if (!(sharpsl_pm.flags & SHARPSL_APM_QUEUED) && is_fatal) {
-		sharpsl_pm.flags |= SHARPSL_APM_QUEUED;
-		apm_queue_event(APM_CRITICAL_SUSPEND);
-	}
-
-	return IRQ_HANDLED;
-}
-
-/*
- * Maintain an average of the last 10 readings
- */
-#define SHARPSL_CNV_VALUE_NUM    10
-static int sharpsl_ad_index;
-
-static void sharpsl_average_clear(void)
-{
-	sharpsl_ad_index = 0;
-}
-
-static int sharpsl_average_value(int ad)
-{
-	int i, ad_val = 0;
-	static int sharpsl_ad[SHARPSL_CNV_VALUE_NUM+1];
-
-	if (sharpsl_pm.battstat.mainbat_status != APM_BATTERY_STATUS_HIGH) {
-		sharpsl_ad_index = 0;
-		return ad;
-	}
-
-	sharpsl_ad[sharpsl_ad_index] = ad;
-	sharpsl_ad_index++;
-	if (sharpsl_ad_index >= SHARPSL_CNV_VALUE_NUM) {
-		for (i = 0; i < (SHARPSL_CNV_VALUE_NUM-1); i++)
-			sharpsl_ad[i] = sharpsl_ad[i+1];
-		sharpsl_ad_index = SHARPSL_CNV_VALUE_NUM - 1;
-	}
-	for (i = 0; i < sharpsl_ad_index; i++)
-		ad_val += sharpsl_ad[i];
-
-	return ad_val / sharpsl_ad_index;
-}
-
-/*
- * Take an array of 5 integers, remove the maximum and minimum values
- * and return the average.
- */
-static int get_select_val(int *val)
-{
-	int i, j, k, temp, sum = 0;
-
-	/* Find MAX val */
-	temp = val[0];
-	j = 0;
-	for (i = 1; i < 5; i++) {
-		if (temp < val[i]) {
-			temp = val[i];
-			j = i;
-		}
-	}
-
-	/* Find MIN val */
-	temp = val[4];
-	k = 4;
-	for (i = 3; i >= 0; i--) {
-		if (temp > val[i]) {
-			temp = val[i];
-			k = i;
-		}
-	}
-
-	for (i = 0; i < 5; i++)
-		if (i != j && i != k)
-			sum += val[i];
-
-	dev_dbg(sharpsl_pm.dev, "Average: %d from values: %d, %d, %d, %d, %d\n", sum/3, val[0], val[1], val[2], val[3], val[4]);
-
-	return sum/3;
-}
-
-static int sharpsl_check_battery_temp(void)
-{
-	int val, i, buff[5];
-
-	/* Check battery temperature */
-	for (i = 0; i < 5; i++) {
-		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP);
-		sharpsl_pm.machinfo->measure_temp(1);
-		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP);
-		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_TEMP);
-		sharpsl_pm.machinfo->measure_temp(0);
-	}
-
-	val = get_select_val(buff);
-
-	dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val);
-	if (val > sharpsl_pm.machinfo->charge_on_temp) {
-		printk(KERN_WARNING "Not charging: temperature out of limits.\n");
-		return -1;
-	}
-
-	return 0;
-}
-
-#ifdef CONFIG_PM
-static int sharpsl_check_battery_voltage(void)
-{
-	int val, i, buff[5];
-
-	/* disable charge, enable discharge */
-	sharpsl_pm.machinfo->charge(0);
-	sharpsl_pm.machinfo->discharge(1);
-	mdelay(SHARPSL_WAIT_DISCHARGE_ON);
-
-	if (sharpsl_pm.machinfo->discharge1)
-		sharpsl_pm.machinfo->discharge1(1);
-
-	/* Check battery voltage */
-	for (i = 0; i < 5; i++) {
-		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
-		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT);
-	}
-
-	if (sharpsl_pm.machinfo->discharge1)
-		sharpsl_pm.machinfo->discharge1(0);
-
-	sharpsl_pm.machinfo->discharge(0);
-
-	val = get_select_val(buff);
-	dev_dbg(sharpsl_pm.dev, "Battery Voltage: %d\n", val);
-
-	if (val < sharpsl_pm.machinfo->charge_on_volt)
-		return -1;
-
-	return 0;
-}
-#endif
-
-static int sharpsl_ac_check(void)
-{
-	int temp, i, buff[5];
-
-	for (i = 0; i < 5; i++) {
-		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_ACIN_VOLT);
-		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN);
-	}
-
-	temp = get_select_val(buff);
-	dev_dbg(sharpsl_pm.dev, "AC Voltage: %d\n", temp);
-
-	if ((temp > sharpsl_pm.machinfo->charge_acin_high) || (temp < sharpsl_pm.machinfo->charge_acin_low)) {
-		dev_err(sharpsl_pm.dev, "Error: AC check failed: voltage %d.\n", temp);
-		return -1;
-	}
-
-	return 0;
-}
-
-#ifdef CONFIG_PM
-static int sharpsl_pm_suspend(struct platform_device *pdev, pm_message_t state)
-{
-	sharpsl_pm.flags |= SHARPSL_SUSPENDED;
-	flush_delayed_work(&toggle_charger);
-	flush_delayed_work(&sharpsl_bat);
-
-	if (sharpsl_pm.charge_mode == CHRG_ON)
-		sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG;
-	else
-		sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG;
-
-	return 0;
-}
-
-static int sharpsl_pm_resume(struct platform_device *pdev)
-{
-	/* Clear the reset source indicators as they break the bootloader upon reboot */
-	RCSR = 0x0f;
-	sharpsl_average_clear();
-	sharpsl_pm.flags &= ~SHARPSL_APM_QUEUED;
-	sharpsl_pm.flags &= ~SHARPSL_SUSPENDED;
-
-	return 0;
-}
-
-static void corgi_goto_sleep(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state)
-{
-	dev_dbg(sharpsl_pm.dev, "Time is: %08x\n", RCNR);
-
-	dev_dbg(sharpsl_pm.dev, "Offline Charge Activate = %d\n", sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG);
-	/* not charging and AC-IN! */
-
-	if ((sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG) && (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN))) {
-		dev_dbg(sharpsl_pm.dev, "Activating Offline Charger...\n");
-		sharpsl_pm.charge_mode = CHRG_OFF;
-		sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG;
-		sharpsl_off_charge_battery();
-	}
-
-	sharpsl_pm.machinfo->presuspend();
-
-	PEDR = 0xffffffff; /* clear it */
-
-	sharpsl_pm.flags &= ~SHARPSL_ALARM_ACTIVE;
-	if ((sharpsl_pm.charge_mode == CHRG_ON) && ((alarm_enable && ((alarm_time - RCNR) > (SHARPSL_BATCHK_TIME_SUSPEND + 30))) || !alarm_enable)) {
-		RTSR &= RTSR_ALE;
-		RTAR = RCNR + SHARPSL_BATCHK_TIME_SUSPEND;
-		dev_dbg(sharpsl_pm.dev, "Charging alarm at: %08x\n", RTAR);
-		sharpsl_pm.flags |= SHARPSL_ALARM_ACTIVE;
-	} else if (alarm_enable) {
-		RTSR &= RTSR_ALE;
-		RTAR = alarm_time;
-		dev_dbg(sharpsl_pm.dev, "User alarm at: %08x\n", RTAR);
-	} else {
-		dev_dbg(sharpsl_pm.dev, "No alarms set.\n");
-	}
-
-	pxa_pm_enter(state);
-
-	sharpsl_pm.machinfo->postsuspend();
-
-	dev_dbg(sharpsl_pm.dev, "Corgi woken up from suspend: %08x\n", PEDR);
-}
-
-static int corgi_enter_suspend(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state)
-{
-	if (!sharpsl_pm.machinfo->should_wakeup(!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE) && alarm_enable)) {
-		if (!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE)) {
-			dev_dbg(sharpsl_pm.dev, "No user triggered wakeup events and not charging. Strange. Suspend.\n");
-			corgi_goto_sleep(alarm_time, alarm_enable, state);
-			return 1;
-		}
-		if (sharpsl_off_charge_battery()) {
-			dev_dbg(sharpsl_pm.dev, "Charging. Suspend...\n");
-			corgi_goto_sleep(alarm_time, alarm_enable, state);
-			return 1;
-		}
-		dev_dbg(sharpsl_pm.dev, "User triggered wakeup in offline charger.\n");
-	}
-
-	if ((!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) ||
-	    (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)))	{
-		dev_err(sharpsl_pm.dev, "Fatal condition. Suspend.\n");
-		corgi_goto_sleep(alarm_time, alarm_enable, state);
-		return 1;
-	}
-
-	return 0;
-}
-
-static int corgi_pxa_pm_enter(suspend_state_t state)
-{
-	unsigned long alarm_time = RTAR;
-	unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0);
-
-	dev_dbg(sharpsl_pm.dev, "SharpSL suspending for first time.\n");
-
-	corgi_goto_sleep(alarm_time, alarm_status, state);
-
-	while (corgi_enter_suspend(alarm_time, alarm_status, state))
-		{}
-
-	if (sharpsl_pm.machinfo->earlyresume)
-		sharpsl_pm.machinfo->earlyresume();
-
-	dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n");
-
-	return 0;
-}
-
-static int sharpsl_off_charge_error(void)
-{
-	dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n");
-	sharpsl_pm.machinfo->charge(0);
-	sharpsl_pm_led(SHARPSL_LED_ERROR);
-	sharpsl_pm.charge_mode = CHRG_ERROR;
-	return 1;
-}
-
-/*
- * Charging Control while suspended
- * Return 1 - go straight to sleep
- * Return 0 - sleep or wakeup depending on other factors
- */
-static int sharpsl_off_charge_battery(void)
-{
-	int time;
-
-	dev_dbg(sharpsl_pm.dev, "Charge Mode: %d\n", sharpsl_pm.charge_mode);
-
-	if (sharpsl_pm.charge_mode == CHRG_OFF) {
-		dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n");
-
-		/* AC Check */
-		if ((sharpsl_ac_check() < 0) || (sharpsl_check_battery_temp() < 0))
-			return sharpsl_off_charge_error();
-
-		/* Start Charging */
-		sharpsl_pm_led(SHARPSL_LED_ON);
-		sharpsl_pm.machinfo->charge(0);
-		mdelay(SHARPSL_CHARGE_WAIT_TIME);
-		sharpsl_pm.machinfo->charge(1);
-
-		sharpsl_pm.charge_mode = CHRG_ON;
-		sharpsl_pm.full_count = 0;
-
-		return 1;
-	} else if (sharpsl_pm.charge_mode != CHRG_ON) {
-		return 1;
-	}
-
-	if (sharpsl_pm.full_count == 0) {
-		int time;
-
-		dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n");
-
-		if ((sharpsl_check_battery_temp() < 0) || (sharpsl_check_battery_voltage() < 0))
-			return sharpsl_off_charge_error();
-
-		sharpsl_pm.machinfo->charge(0);
-		mdelay(SHARPSL_CHARGE_WAIT_TIME);
-		sharpsl_pm.machinfo->charge(1);
-		sharpsl_pm.charge_mode = CHRG_ON;
-
-		mdelay(SHARPSL_CHARGE_CO_CHECK_TIME);
-
-		time = RCNR;
-		while (1) {
-			/* Check if any wakeup event had occurred */
-			if (sharpsl_pm.machinfo->charger_wakeup())
-				return 0;
-			/* Check for timeout */
-			if ((RCNR - time) > SHARPSL_WAIT_CO_TIME)
-				return 1;
-			if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) {
-				dev_dbg(sharpsl_pm.dev, "Offline Charger: Charge full occurred. Retrying to check\n");
-				sharpsl_pm.full_count++;
-				sharpsl_pm.machinfo->charge(0);
-				mdelay(SHARPSL_CHARGE_WAIT_TIME);
-				sharpsl_pm.machinfo->charge(1);
-				return 1;
-			}
-		}
-	}
-
-	dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 3\n");
-
-	mdelay(SHARPSL_CHARGE_CO_CHECK_TIME);
-
-	time = RCNR;
-	while (1) {
-		/* Check if any wakeup event had occurred */
-		if (sharpsl_pm.machinfo->charger_wakeup())
-			return 0;
-		/* Check for timeout */
-		if ((RCNR-time) > SHARPSL_WAIT_CO_TIME) {
-			if (sharpsl_pm.full_count > SHARPSL_CHARGE_RETRY_CNT) {
-				dev_dbg(sharpsl_pm.dev, "Offline Charger: Not charged sufficiently. Retrying.\n");
-				sharpsl_pm.full_count = 0;
-			}
-			sharpsl_pm.full_count++;
-			return 1;
-		}
-		if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) {
-			dev_dbg(sharpsl_pm.dev, "Offline Charger: Charging complete.\n");
-			sharpsl_pm_led(SHARPSL_LED_OFF);
-			sharpsl_pm.machinfo->charge(0);
-			sharpsl_pm.charge_mode = CHRG_DONE;
-			return 1;
-		}
-	}
-}
-#else
-#define sharpsl_pm_suspend	NULL
-#define sharpsl_pm_resume	NULL
-#endif
-
-static ssize_t battery_percentage_show(struct device *dev, struct device_attribute *attr, char *buf)
-{
-	return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_percent);
-}
-
-static ssize_t battery_voltage_show(struct device *dev, struct device_attribute *attr, char *buf)
-{
-	return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_voltage);
-}
-
-static DEVICE_ATTR_RO(battery_percentage);
-static DEVICE_ATTR_RO(battery_voltage);
-
-extern void (*apm_get_power_status)(struct apm_power_info *);
-
-static void sharpsl_apm_get_power_status(struct apm_power_info *info)
-{
-	info->ac_line_status = sharpsl_pm.battstat.ac_status;
-
-	if (sharpsl_pm.charge_mode == CHRG_ON)
-		info->battery_status = APM_BATTERY_STATUS_CHARGING;
-	else
-		info->battery_status = sharpsl_pm.battstat.mainbat_status;
-
-	info->battery_flag = (1 << info->battery_status);
-	info->battery_life = sharpsl_pm.battstat.mainbat_percent;
-}
-
-#ifdef CONFIG_PM
-static const struct platform_suspend_ops sharpsl_pm_ops = {
-	.prepare	= pxa_pm_prepare,
-	.finish		= pxa_pm_finish,
-	.enter		= corgi_pxa_pm_enter,
-	.valid		= suspend_valid_only_mem,
-};
-#endif
-
-static int sharpsl_pm_probe(struct platform_device *pdev)
-{
-	int ret, irq;
-
-	if (!pdev->dev.platform_data)
-		return -EINVAL;
-
-	sharpsl_pm.dev = &pdev->dev;
-	sharpsl_pm.machinfo = pdev->dev.platform_data;
-	sharpsl_pm.charge_mode = CHRG_OFF;
-	sharpsl_pm.flags = 0;
-
-	timer_setup(&sharpsl_pm.ac_timer, sharpsl_ac_timer, 0);
-
-	timer_setup(&sharpsl_pm.chrg_full_timer, sharpsl_chrg_full_timer, 0);
-
-	led_trigger_register_simple("sharpsl-charge", &sharpsl_charge_led_trigger);
-
-	sharpsl_pm.machinfo->init();
-
-	gpio_request(sharpsl_pm.machinfo->gpio_acin, "AC IN");
-	gpio_direction_input(sharpsl_pm.machinfo->gpio_acin);
-	gpio_request(sharpsl_pm.machinfo->gpio_batfull, "Battery Full");
-	gpio_direction_input(sharpsl_pm.machinfo->gpio_batfull);
-	gpio_request(sharpsl_pm.machinfo->gpio_batlock, "Battery Lock");
-	gpio_direction_input(sharpsl_pm.machinfo->gpio_batlock);
-
-	/* Register interrupt handlers */
-	irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_acin);
-	if (request_irq(irq, sharpsl_ac_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, "AC Input Detect", sharpsl_ac_isr)) {
-		dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
-	}
-
-	irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_batlock);
-	if (request_irq(irq, sharpsl_fatal_isr, IRQF_TRIGGER_FALLING, "Battery Cover", sharpsl_fatal_isr)) {
-		dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
-	}
-
-	if (sharpsl_pm.machinfo->gpio_fatal) {
-		irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_fatal);
-		if (request_irq(irq, sharpsl_fatal_isr, IRQF_TRIGGER_FALLING, "Fatal Battery", sharpsl_fatal_isr)) {
-			dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
-		}
-	}
-
-	if (sharpsl_pm.machinfo->batfull_irq) {
-		/* Register interrupt handler. */
-		irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_batfull);
-		if (request_irq(irq, sharpsl_chrg_full_isr, IRQF_TRIGGER_RISING, "CO", sharpsl_chrg_full_isr)) {
-			dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
-		}
-	}
-
-	ret = device_create_file(&pdev->dev, &dev_attr_battery_percentage);
-	ret |= device_create_file(&pdev->dev, &dev_attr_battery_voltage);
-	if (ret != 0)
-		dev_warn(&pdev->dev, "Failed to register attributes (%d)\n", ret);
-
-	apm_get_power_status = sharpsl_apm_get_power_status;
-
-#ifdef CONFIG_PM
-	suspend_set_ops(&sharpsl_pm_ops);
-#endif
-
-	mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250));
-
-	return 0;
-}
-
-static void sharpsl_pm_remove(struct platform_device *pdev)
-{
-	suspend_set_ops(NULL);
-
-	device_remove_file(&pdev->dev, &dev_attr_battery_percentage);
-	device_remove_file(&pdev->dev, &dev_attr_battery_voltage);
-
-	led_trigger_unregister_simple(sharpsl_charge_led_trigger);
-
-	free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_acin), sharpsl_ac_isr);
-	free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_batlock), sharpsl_fatal_isr);
-
-	if (sharpsl_pm.machinfo->gpio_fatal)
-		free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_fatal), sharpsl_fatal_isr);
-
-	if (sharpsl_pm.machinfo->batfull_irq)
-		free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_batfull), sharpsl_chrg_full_isr);
-
-	gpio_free(sharpsl_pm.machinfo->gpio_batlock);
-	gpio_free(sharpsl_pm.machinfo->gpio_batfull);
-	gpio_free(sharpsl_pm.machinfo->gpio_acin);
-
-	if (sharpsl_pm.machinfo->exit)
-		sharpsl_pm.machinfo->exit();
-
-	timer_delete_sync(&sharpsl_pm.chrg_full_timer);
-	timer_delete_sync(&sharpsl_pm.ac_timer);
-}
-
-static struct platform_driver sharpsl_pm_driver = {
-	.probe		= sharpsl_pm_probe,
-	.remove		= sharpsl_pm_remove,
-	.suspend	= sharpsl_pm_suspend,
-	.resume		= sharpsl_pm_resume,
-	.driver		= {
-		.name		= "sharpsl-pm",
-	},
-};
-
-static int sharpsl_pm_init(void)
-{
-	return platform_driver_register(&sharpsl_pm_driver);
-}
-
-static void sharpsl_pm_exit(void)
-{
-	platform_driver_unregister(&sharpsl_pm_driver);
-}
-
-late_initcall(sharpsl_pm_init);
-module_exit(sharpsl_pm_exit);
diff --git a/arch/arm/mach-pxa/sharpsl_pm.h b/arch/arm/mach-pxa/sharpsl_pm.h
deleted file mode 100644
index 623167f30ec2..000000000000
--- a/arch/arm/mach-pxa/sharpsl_pm.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * SharpSL Battery/PM Driver
- *
- * Copyright (c) 2004-2005 Richard Purdie
- */
-#ifndef _MACH_SHARPSL_PM
-#define _MACH_SHARPSL_PM
-
-struct sharpsl_charger_machinfo {
-	void (*init)(void);
-	void (*exit)(void);
-	int gpio_acin;
-	int gpio_batfull;
-	int batfull_irq;
-	int gpio_batlock;
-	int gpio_fatal;
-	void (*discharge)(int);
-	void (*discharge1)(int);
-	void (*charge)(int);
-	void (*measure_temp)(int);
-	void (*presuspend)(void);
-	void (*postsuspend)(void);
-	void (*earlyresume)(void);
-	unsigned long (*read_devdata)(int);
-#define SHARPSL_BATT_VOLT       1
-#define SHARPSL_BATT_TEMP       2
-#define SHARPSL_ACIN_VOLT       3
-#define SHARPSL_STATUS_ACIN     4
-#define SHARPSL_STATUS_LOCK     5
-#define SHARPSL_STATUS_CHRGFULL 6
-#define SHARPSL_STATUS_FATAL    7
-	bool (*charger_wakeup)(void);
-	int (*should_wakeup)(unsigned int resume_on_alarm);
-	void (*backlight_limit)(int);
-	int (*backlight_get_status) (void);
-	int charge_on_volt;
-	int charge_on_temp;
-	int charge_acin_high;
-	int charge_acin_low;
-	int fatal_acin_volt;
-	int fatal_noacin_volt;
-	int bat_levels;
-	struct battery_thresh *bat_levels_noac;
-	struct battery_thresh *bat_levels_acin;
-	struct battery_thresh *bat_levels_noac_bl;
-	struct battery_thresh *bat_levels_acin_bl;
-	int status_high_acin;
-	int status_low_acin;
-	int status_high_noac;
-	int status_low_noac;
-};
-
-struct battery_thresh {
-	int voltage;
-	int percentage;
-};
-
-struct battery_stat {
-	int ac_status;         /* APM AC Present/Not Present */
-	int mainbat_status;    /* APM Main Battery Status */
-	int mainbat_percent;   /* Main Battery Percentage Charge */
-	int mainbat_voltage;   /* Main Battery Voltage */
-};
-
-struct sharpsl_pm_status {
-	struct device *dev;
-	struct timer_list ac_timer;
-	struct timer_list chrg_full_timer;
-
-	int charge_mode;
-#define CHRG_ERROR    (-1)
-#define CHRG_OFF      (0)
-#define CHRG_ON       (1)
-#define CHRG_DONE     (2)
-
-	unsigned int flags;
-#define SHARPSL_SUSPENDED       (1 << 0)  /* Device is Suspended */
-#define SHARPSL_ALARM_ACTIVE    (1 << 1)  /* Alarm is for charging event (not user) */
-#define SHARPSL_BL_LIMIT        (1 << 2)  /* Backlight Intensity Limited */
-#define SHARPSL_APM_QUEUED      (1 << 3)  /* APM Event Queued */
-#define SHARPSL_DO_OFFLINE_CHRG (1 << 4)  /* Trigger the offline charger */
-
-	int full_count;
-	unsigned long charge_start_time;
-	struct sharpsl_charger_machinfo *machinfo;
-	struct battery_stat battstat;
-};
-
-extern struct sharpsl_pm_status sharpsl_pm;
-
-extern struct battery_thresh sharpsl_battery_levels_acin[];
-extern struct battery_thresh sharpsl_battery_levels_noac[];
-
-#define SHARPSL_LED_ERROR  2
-#define SHARPSL_LED_ON     1
-#define SHARPSL_LED_OFF    0
-
-void sharpsl_battery_kick(void);
-void sharpsl_pm_led(int val);
-
-/* MAX1111 Channel Definitions */
-#define MAX1111_BATT_VOLT   4u
-#define MAX1111_BATT_TEMP   2u
-#define MAX1111_ACIN_VOLT   6u
-int sharpsl_pm_pxa_read_max1111(int channel);
-
-#endif
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
deleted file mode 100644
index 5eaf38243b9e..000000000000
--- a/arch/arm/mach-pxa/spitz.c
+++ /dev/null
@@ -1,1174 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Support for Sharp SL-Cxx00 Series of PDAs
- * Models: SL-C3000 (Spitz), SL-C1000 (Akita) and SL-C3100 (Borzoi)
- *
- * Copyright (c) 2005 Richard Purdie
- *
- * Based on Sharp's 2.4 kernel patches/lubbock.c
- */
-
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/gpio_keys.h>
-#include <linux/gpio/legacy.h>
-#include <linux/gpio/machine.h>
-#include <linux/gpio/property.h>
-#include <linux/leds.h>
-#include <linux/i2c.h>
-#include <linux/platform_data/i2c-pxa.h>
-#include <linux/platform_data/pca953x.h>
-#include <linux/property.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/ads7846.h>
-#include <linux/spi/corgi_lcd.h>
-#include <linux/mtd/sharpsl.h>
-#include <linux/mtd/physmap.h>
-#include <linux/input-event-codes.h>
-#include <linux/input/matrix_keypad.h>
-#include <linux/regulator/machine.h>
-#include <linux/io.h>
-#include <linux/property.h>
-#include <linux/reboot.h>
-#include <linux/memblock.h>
-
-#include <asm/setup.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/sharpsl_param.h>
-#include <asm/hardware/scoop.h>
-
-#include "pxa27x.h"
-#include "pxa27x-udc.h"
-#include "reset.h"
-#include <linux/platform_data/mmc-pxamci.h>
-#include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <linux/platform_data/video-pxafb.h>
-#include "spitz.h"
-#include "sharpsl_pm.h"
-#include "smemc.h"
-
-#include "generic.h"
-#include "devices.h"
-
-/******************************************************************************
- * Pin configuration
- ******************************************************************************/
-static unsigned long spitz_pin_config[] __initdata = {
-	/* Chip Selects */
-	GPIO78_nCS_2,	/* SCOOP #2 */
-	GPIO79_nCS_3,	/* NAND */
-	GPIO80_nCS_4,	/* SCOOP #1 */
-
-	/* LCD - 16bpp Active TFT */
-	GPIOxx_LCD_TFT_16BPP,
-
-	/* PC Card */
-	GPIO48_nPOE,
-	GPIO49_nPWE,
-	GPIO50_nPIOR,
-	GPIO51_nPIOW,
-	GPIO85_nPCE_1,
-	GPIO54_nPCE_2,
-	GPIO55_nPREG,
-	GPIO56_nPWAIT,
-	GPIO57_nIOIS16,
-	GPIO104_PSKTSEL,
-
-	/* I2S */
-	GPIO28_I2S_BITCLK_OUT,
-	GPIO29_I2S_SDATA_IN,
-	GPIO30_I2S_SDATA_OUT,
-	GPIO31_I2S_SYNC,
-
-	/* MMC */
-	GPIO32_MMC_CLK,
-	GPIO112_MMC_CMD,
-	GPIO92_MMC_DAT_0,
-	GPIO109_MMC_DAT_1,
-	GPIO110_MMC_DAT_2,
-	GPIO111_MMC_DAT_3,
-
-	/* GPIOs */
-	GPIO9_GPIO,	/* SPITZ_GPIO_nSD_DETECT */
-	GPIO16_GPIO,	/* SPITZ_GPIO_SYNC */
-	GPIO81_GPIO,	/* SPITZ_GPIO_nSD_WP */
-	GPIO41_GPIO,	/* SPITZ_GPIO_USB_CONNECT */
-	GPIO37_GPIO,	/* SPITZ_GPIO_USB_HOST */
-	GPIO35_GPIO,	/* SPITZ_GPIO_USB_DEVICE */
-	GPIO22_GPIO,	/* SPITZ_GPIO_HSYNC */
-	GPIO94_GPIO,	/* SPITZ_GPIO_CF_CD */
-	GPIO105_GPIO,	/* SPITZ_GPIO_CF_IRQ */
-	GPIO106_GPIO,	/* SPITZ_GPIO_CF2_IRQ */
-
-	/* GPIO matrix keypad */
-	GPIO88_GPIO,	/* column 0 */
-	GPIO23_GPIO,	/* column 1 */
-	GPIO24_GPIO,	/* column 2 */
-	GPIO25_GPIO,	/* column 3 */
-	GPIO26_GPIO,	/* column 4 */
-	GPIO27_GPIO,	/* column 5 */
-	GPIO52_GPIO,	/* column 6 */
-	GPIO103_GPIO,	/* column 7 */
-	GPIO107_GPIO,	/* column 8 */
-	GPIO108_GPIO,	/* column 9 */
-	GPIO114_GPIO,	/* column 10 */
-	GPIO12_GPIO,	/* row 0 */
-	GPIO17_GPIO,	/* row 1 */
-	GPIO91_GPIO,	/* row 2 */
-	GPIO34_GPIO,	/* row 3 */
-	GPIO36_GPIO,	/* row 4 */
-	GPIO38_GPIO,	/* row 5 */
-	GPIO39_GPIO,	/* row 6 */
-
-	/* I2C */
-	GPIO117_I2C_SCL,
-	GPIO118_I2C_SDA,
-
-	GPIO0_GPIO | WAKEUP_ON_EDGE_RISE,	/* SPITZ_GPIO_KEY_INT */
-	GPIO1_GPIO | WAKEUP_ON_EDGE_FALL,	/* SPITZ_GPIO_RESET */
-};
-
-static const struct software_node spitz_scoop_1_gpiochip_node = {
-	.name = "sharp-scoop.0",
-};
-
-/* Only on Spitz */
-static const struct software_node spitz_scoop_2_gpiochip_node = {
-	.name = "sharp-scoop.1",
-};
-
-/* Only on Akita */
-static const struct software_node akita_max7310_gpiochip_node = {
-	.name = "i2c-max7310",
-};
-
-/******************************************************************************
- * Scoop GPIO expander
- ******************************************************************************/
-#if defined(CONFIG_SHARP_SCOOP) || defined(CONFIG_SHARP_SCOOP_MODULE)
-/* SCOOP Device #1 */
-static struct resource spitz_scoop_1_resources[] = {
-	[0] = {
-		.start		= 0x10800000,
-		.end		= 0x10800fff,
-		.flags		= IORESOURCE_MEM,
-	},
-};
-
-static struct scoop_config spitz_scoop_1_setup = {
-	.io_dir		= SPITZ_SCP_IO_DIR,
-	.io_out		= SPITZ_SCP_IO_OUT,
-	.suspend_clr	= SPITZ_SCP_SUS_CLR,
-	.suspend_set	= SPITZ_SCP_SUS_SET,
-	.gpio_base	= SPITZ_SCP_GPIO_BASE,
-};
-
-static struct platform_device spitz_scoop_1_device = {
-	.name		= "sharp-scoop",
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &spitz_scoop_1_setup,
-	},
-	.num_resources	= ARRAY_SIZE(spitz_scoop_1_resources),
-	.resource	= spitz_scoop_1_resources,
-};
-
-/* SCOOP Device #2 */
-static struct resource spitz_scoop_2_resources[] = {
-	[0] = {
-		.start		= 0x08800040,
-		.end		= 0x08800fff,
-		.flags		= IORESOURCE_MEM,
-	},
-};
-
-static struct scoop_config spitz_scoop_2_setup = {
-	.io_dir		= SPITZ_SCP2_IO_DIR,
-	.io_out		= SPITZ_SCP2_IO_OUT,
-	.suspend_clr	= SPITZ_SCP2_SUS_CLR,
-	.suspend_set	= SPITZ_SCP2_SUS_SET,
-	.gpio_base	= SPITZ_SCP2_GPIO_BASE,
-};
-
-static struct platform_device spitz_scoop_2_device = {
-	.name		= "sharp-scoop",
-	.id		= 1,
-	.dev		= {
-		.platform_data	= &spitz_scoop_2_setup,
-	},
-	.num_resources	= ARRAY_SIZE(spitz_scoop_2_resources),
-	.resource	= spitz_scoop_2_resources,
-};
-
-static void __init spitz_scoop_init(void)
-{
-	spitz_scoop_1_device.dev.fwnode = software_node_fwnode(&spitz_scoop_1_gpiochip_node);
-	platform_device_register(&spitz_scoop_1_device);
-
-	/* Akita doesn't have the second SCOOP chip */
-	if (!machine_is_akita()) {
-		spitz_scoop_2_device.dev.fwnode = software_node_fwnode(
-							&spitz_scoop_2_gpiochip_node);
-		platform_device_register(&spitz_scoop_2_device);
-	}
-}
-
-/* Power control is shared with between one of the CF slots and SD */
-static void __maybe_unused spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr)
-{
-	unsigned short cpr;
-	unsigned long flags;
-
-	if (new_cpr & 0x7) {
-		gpio_set_value(SPITZ_GPIO_CF_POWER, 1);
-		mdelay(5);
-	}
-
-	local_irq_save(flags);
-
-	cpr = read_scoop_reg(&spitz_scoop_1_device.dev, SCOOP_CPR);
-
-	if (enable & new_cpr)
-		cpr |= new_cpr;
-	else
-		cpr &= ~enable;
-
-	write_scoop_reg(&spitz_scoop_1_device.dev, SCOOP_CPR, cpr);
-
-	local_irq_restore(flags);
-
-	if (!(cpr & 0x7)) {
-		mdelay(1);
-		gpio_set_value(SPITZ_GPIO_CF_POWER, 0);
-	}
-}
-
-#else
-static inline void spitz_scoop_init(void) {}
-static inline void spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr) {}
-#endif
-
-/******************************************************************************
- * PCMCIA
- ******************************************************************************/
-#if defined(CONFIG_PCMCIA_PXA2XX) || defined(CONFIG_PCMCIA_PXA2XX_MODULE)
-static void spitz_pcmcia_pwr(struct device *scoop, uint16_t cpr, int nr)
-{
-	/* Only need to override behaviour for slot 0 */
-	if (nr == 0)
-		spitz_card_pwr_ctrl(
-			cpr & (SCOOP_CPR_CF_3V | SCOOP_CPR_CF_XV), cpr);
-	else
-		write_scoop_reg(scoop, SCOOP_CPR, cpr);
-}
-
-static struct scoop_pcmcia_dev spitz_pcmcia_scoop[] = {
-	{
-		.dev		= &spitz_scoop_1_device.dev,
-		.irq		= SPITZ_IRQ_GPIO_CF_IRQ,
-		.cd_irq		= SPITZ_IRQ_GPIO_CF_CD,
-		.cd_irq_str	= "PCMCIA0 CD",
-	}, {
-		.dev		= &spitz_scoop_2_device.dev,
-		.irq		= SPITZ_IRQ_GPIO_CF2_IRQ,
-		.cd_irq		= -1,
-	},
-};
-
-static struct scoop_pcmcia_config spitz_pcmcia_config = {
-	.devs		= &spitz_pcmcia_scoop[0],
-	.num_devs	= 2,
-	.power_ctrl	= spitz_pcmcia_pwr,
-};
-
-static void __init spitz_pcmcia_init(void)
-{
-	/* Akita has only one PCMCIA slot used */
-	if (machine_is_akita())
-		spitz_pcmcia_config.num_devs = 1;
-
-	platform_scoop_config = &spitz_pcmcia_config;
-}
-#else
-static inline void spitz_pcmcia_init(void) {}
-#endif
-
-/******************************************************************************
- * GPIO keyboard
- ******************************************************************************/
-#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE)
-
-#define SPITZ_KEY_CALENDAR	KEY_F1
-#define SPITZ_KEY_ADDRESS	KEY_F2
-#define SPITZ_KEY_FN		KEY_F3
-#define SPITZ_KEY_CANCEL	KEY_F4
-#define SPITZ_KEY_EXOK		KEY_F5
-#define SPITZ_KEY_EXCANCEL	KEY_F6
-#define SPITZ_KEY_EXJOGDOWN	KEY_F7
-#define SPITZ_KEY_EXJOGUP	KEY_F8
-#define SPITZ_KEY_JAP1		KEY_LEFTALT
-#define SPITZ_KEY_JAP2		KEY_RIGHTCTRL
-#define SPITZ_KEY_SYNC		KEY_F9
-#define SPITZ_KEY_MAIL		KEY_F10
-#define SPITZ_KEY_OK		KEY_F11
-#define SPITZ_KEY_MENU		KEY_F12
-
-static const uint32_t spitz_keymap[] = {
-	KEY(0, 0, KEY_LEFTCTRL),
-	KEY(0, 1, KEY_1),
-	KEY(0, 2, KEY_3),
-	KEY(0, 3, KEY_5),
-	KEY(0, 4, KEY_6),
-	KEY(0, 5, KEY_7),
-	KEY(0, 6, KEY_9),
-	KEY(0, 7, KEY_0),
-	KEY(0, 8, KEY_BACKSPACE),
-	KEY(0, 9, SPITZ_KEY_EXOK),	/* EXOK */
-	KEY(0, 10, SPITZ_KEY_EXCANCEL),	/* EXCANCEL */
-	KEY(1, 1, KEY_2),
-	KEY(1, 2, KEY_4),
-	KEY(1, 3, KEY_R),
-	KEY(1, 4, KEY_Y),
-	KEY(1, 5, KEY_8),
-	KEY(1, 6, KEY_I),
-	KEY(1, 7, KEY_O),
-	KEY(1, 8, KEY_P),
-	KEY(1, 9, SPITZ_KEY_EXJOGDOWN),	/* EXJOGDOWN */
-	KEY(1, 10, SPITZ_KEY_EXJOGUP),	/* EXJOGUP */
-	KEY(2, 0, KEY_TAB),
-	KEY(2, 1, KEY_Q),
-	KEY(2, 2, KEY_E),
-	KEY(2, 3, KEY_T),
-	KEY(2, 4, KEY_G),
-	KEY(2, 5, KEY_U),
-	KEY(2, 6, KEY_J),
-	KEY(2, 7, KEY_K),
-	KEY(3, 0, SPITZ_KEY_ADDRESS),	/* ADDRESS */
-	KEY(3, 1, KEY_W),
-	KEY(3, 2, KEY_S),
-	KEY(3, 3, KEY_F),
-	KEY(3, 4, KEY_V),
-	KEY(3, 5, KEY_H),
-	KEY(3, 6, KEY_M),
-	KEY(3, 7, KEY_L),
-	KEY(3, 9, KEY_RIGHTSHIFT),
-	KEY(4, 0, SPITZ_KEY_CALENDAR),	/* CALENDAR */
-	KEY(4, 1, KEY_A),
-	KEY(4, 2, KEY_D),
-	KEY(4, 3, KEY_C),
-	KEY(4, 4, KEY_B),
-	KEY(4, 5, KEY_N),
-	KEY(4, 6, KEY_DOT),
-	KEY(4, 8, KEY_ENTER),
-	KEY(4, 9, KEY_LEFTSHIFT),
-	KEY(5, 0, SPITZ_KEY_MAIL),	/* MAIL */
-	KEY(5, 1, KEY_Z),
-	KEY(5, 2, KEY_X),
-	KEY(5, 3, KEY_MINUS),
-	KEY(5, 4, KEY_SPACE),
-	KEY(5, 5, KEY_COMMA),
-	KEY(5, 7, KEY_UP),
-	KEY(5, 10, SPITZ_KEY_FN),	/* FN */
-	KEY(6, 0, KEY_SYSRQ),
-	KEY(6, 1, SPITZ_KEY_JAP1),	/* JAP1 */
-	KEY(6, 2, SPITZ_KEY_JAP2),	/* JAP2 */
-	KEY(6, 3, SPITZ_KEY_CANCEL),	/* CANCEL */
-	KEY(6, 4, SPITZ_KEY_OK),	/* OK */
-	KEY(6, 5, SPITZ_KEY_MENU),	/* MENU */
-	KEY(6, 6, KEY_LEFT),
-	KEY(6, 7, KEY_DOWN),
-	KEY(6, 8, KEY_RIGHT),
-};
-
-static const struct software_node_ref_args spitz_mkp_row_gpios[] = {
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 12, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 17, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 91, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 34, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 36, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 38, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 39, GPIO_ACTIVE_HIGH),
-};
-
-static const struct software_node_ref_args spitz_mkp_col_gpios[] = {
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 88, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 23, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 24, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 25, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 26, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 27, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 52, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 103, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 107, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 108, GPIO_ACTIVE_HIGH),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 114, GPIO_ACTIVE_HIGH),
-};
-
-static const struct property_entry spitz_mkp_properties[] = {
-	PROPERTY_ENTRY_U32_ARRAY("linux,keymap", spitz_keymap),
-	PROPERTY_ENTRY_REF_ARRAY("row-gpios", spitz_mkp_row_gpios),
-	PROPERTY_ENTRY_REF_ARRAY("col-gpios", spitz_mkp_col_gpios),
-	PROPERTY_ENTRY_U32("col-scan-delay-us", 10),
-	PROPERTY_ENTRY_U32("debounce-delay-ms", 10),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	{ }
-};
-
-static const struct platform_device_info spitz_mkp_info __initconst = {
-	.name		= "matrix-keypad",
-	.id		= PLATFORM_DEVID_NONE,
-	.properties	= spitz_mkp_properties,
-};
-
-
-static void __init spitz_mkp_init(void)
-{
-	struct platform_device *pd;
-	int err;
-
-	pd = platform_device_register_full(&spitz_mkp_info);
-	err = PTR_ERR_OR_ZERO(pd);
-	if (err)
-		pr_err("failed to create keypad device: %d\n", err);
-}
-#else
-static inline void spitz_mkp_init(void) {}
-#endif
-
-/******************************************************************************
- * GPIO keys
- ******************************************************************************/
-#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
-static const struct software_node spitz_gpio_keys_node = {
-	.name = "spitz-gpio-keys",
-};
-
-static const struct property_entry spitz_suspend_key_props[] = {
-	PROPERTY_ENTRY_U32("linux,input-type", EV_PWR),
-	PROPERTY_ENTRY_U32("linux,code", KEY_SUSPEND),
-	PROPERTY_ENTRY_GPIO("gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_ON_KEY, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_STRING("label", "On Off"),
-	PROPERTY_ENTRY_BOOL("wakeup-source"),
-	{ }
-};
-
-static const struct software_node spitz_suspend_key_node = {
-	.parent = &spitz_gpio_keys_node,
-	.properties = spitz_suspend_key_props,
-};
-
-static const struct property_entry spitz_sw1_props[] = {
-	PROPERTY_ENTRY_U32("linux,input-type", EV_SW),
-	PROPERTY_ENTRY_U32("linux,code", 0),
-	PROPERTY_ENTRY_GPIO("gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_SWA, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_STRING("label", "Display Down"),
-	{ }
-};
-
-static const struct software_node spitz_sw1_node = {
-	.parent = &spitz_gpio_keys_node,
-	.properties = spitz_sw1_props,
-};
-
-static const struct property_entry spitz_sw2_props[] = {
-	PROPERTY_ENTRY_U32("linux,input-type", EV_SW),
-	PROPERTY_ENTRY_U32("linux,code", 1),
-	PROPERTY_ENTRY_GPIO("gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_SWB, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_STRING("label", "Lid Closed"),
-	{ }
-};
-
-static const struct software_node spitz_sw2_node = {
-	.parent = &spitz_gpio_keys_node,
-	.properties = spitz_sw2_props,
-};
-
-static const struct software_node *spitz_gpio_keys_swnodes[] = {
-	&spitz_gpio_keys_node,
-	&spitz_suspend_key_node,
-	&spitz_sw1_node,
-	&spitz_sw2_node,
-	NULL
-};
-
-static void __init spitz_keys_init(void)
-{
-	struct platform_device_info keys_info = {
-		.name	= "gpio-keys",
-		.id	= PLATFORM_DEVID_NONE,
-	};
-	struct platform_device *pd;
-	int err;
-
-	err = software_node_register_node_group(spitz_gpio_keys_swnodes);
-	if (err) {
-		pr_err("failed to register gpio-keys software nodes: %d\n", err);
-		return;
-	}
-
-	keys_info.fwnode = software_node_fwnode(&spitz_gpio_keys_node);
-
-	pd = platform_device_register_full(&keys_info);
-	err = PTR_ERR_OR_ZERO(pd);
-	if (err)
-		pr_err("failed to create gpio-keys device: %d\n", err);
-}
-#else
-static inline void spitz_keys_init(void) {}
-#endif
-
-/******************************************************************************
- * LEDs
- ******************************************************************************/
-#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
-static const struct software_node spitz_gpio_leds_node = {
-	.name = "spitz-leds",
-};
-
-static const struct property_entry spitz_orange_led_props[] = {
-	PROPERTY_ENTRY_STRING("linux,default-trigger", "sharpsl-charge"),
-	PROPERTY_ENTRY_GPIO("gpios",
-			    &spitz_scoop_1_gpiochip_node, 6, GPIO_ACTIVE_HIGH),
-	{ }
-};
-
-static const struct software_node spitz_orange_led_node = {
-	.name = "spitz:amber:charge",
-	.parent = &spitz_gpio_leds_node,
-	.properties = spitz_orange_led_props,
-};
-
-static const struct property_entry spitz_green_led_props[] = {
-	PROPERTY_ENTRY_STRING("linux,default-trigger", "disk-activity"),
-	PROPERTY_ENTRY_GPIO("gpios",
-			    &spitz_scoop_1_gpiochip_node, 0, GPIO_ACTIVE_HIGH),
-	{ }
-};
-
-static const struct software_node spitz_green_led_node = {
-	.name = "spitz:green:hddactivity",
-	.parent = &spitz_gpio_leds_node,
-	.properties = spitz_green_led_props,
-};
-
-static const struct software_node *spitz_gpio_leds_swnodes[] = {
-	&spitz_gpio_leds_node,
-	&spitz_orange_led_node,
-	&spitz_green_led_node,
-	NULL
-};
-
-static void __init spitz_leds_init(void)
-{
-	struct platform_device_info led_info = {
-		.name	= "leds-gpio",
-		.id	= PLATFORM_DEVID_NONE,
-	};
-	struct platform_device *led_dev;
-	int err;
-
-	err = software_node_register_node_group(spitz_gpio_leds_swnodes);
-	if (err) {
-		pr_err("failed to register LED software nodes: %d\n", err);
-		return;
-	}
-
-	led_info.fwnode = software_node_fwnode(&spitz_gpio_leds_node);
-
-	led_dev = platform_device_register_full(&led_info);
-	err = PTR_ERR_OR_ZERO(led_dev);
-	if (err)
-		pr_err("failed to create LED device: %d\n", err);
-}
-#else
-static inline void spitz_leds_init(void) {}
-#endif
-
-/******************************************************************************
- * SSP Devices
- ******************************************************************************/
-#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
-
-static const struct property_entry spitz_ads7846_props[] = {
-	PROPERTY_ENTRY_STRING("compatible", "ti,ads7846"),
-	PROPERTY_ENTRY_U32("touchscreen-max-pressure", 1024),
-	PROPERTY_ENTRY_U16("ti,x-plate-ohms", 419),
-	PROPERTY_ENTRY_U16("ti,y-plate-ohms", 486),
-	PROPERTY_ENTRY_U16("ti,vref-delay-usecs", 100),
-	PROPERTY_ENTRY_GPIO("pendown-gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_TP_INT, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_GPIO("ti,hsync-gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_HSYNC, GPIO_ACTIVE_LOW),
-	{ }
-};
-
-static const struct software_node spitz_ads7846_swnode = {
-	.name = "ads7846",
-	.properties = spitz_ads7846_props,
-};
-
-static const struct property_entry spitz_lcdcon_props[] = {
-	PROPERTY_ENTRY_GPIO("BL_CONT-gpios",
-			    &spitz_scoop_2_gpiochip_node, 6, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_GPIO("BL_ON-gpios",
-			    &spitz_scoop_2_gpiochip_node, 7, GPIO_ACTIVE_HIGH),
-	{ }
-};
-
-static const struct property_entry akita_lcdcon_props[] = {
-	PROPERTY_ENTRY_GPIO("BL_ON-gpios",
-			    &akita_max7310_gpiochip_node, 3, GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_GPIO("BL_CONT-gpios",
-			    &akita_max7310_gpiochip_node, 4, GPIO_ACTIVE_LOW),
-	{ }
-};
-
-static struct software_node spitz_lcdcon_node = {
-	.name = "spitz-lcdcon",
-};
-
-static struct corgi_lcd_platform_data spitz_lcdcon_info = {
-	.init_mode		= CORGI_LCD_MODE_VGA,
-	.max_intensity		= 0x2f,
-	.default_intensity	= 0x1f,
-	.limit_mask		= 0x0b,
-	.kick_battery		= sharpsl_battery_kick,
-};
-
-static struct spi_board_info spitz_spi_devices[] = {
-	{
-		.modalias		= "ads7846",
-		.max_speed_hz		= 1200000,
-		.bus_num		= 2,
-		.chip_select		= 0,
-		.swnode			= &spitz_ads7846_swnode,
-		.irq			= PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT),
-	}, {
-		.modalias		= "corgi-lcd",
-		.max_speed_hz		= 50000,
-		.bus_num		= 2,
-		.chip_select		= 1,
-		.platform_data		= &spitz_lcdcon_info,
-		.swnode			= &spitz_lcdcon_node,
-	}, {
-		.modalias		= "max1111",
-		.max_speed_hz		= 450000,
-		.bus_num		= 2,
-		.chip_select		= 2,
-	},
-};
-
-static const struct software_node_ref_args spitz_spi_gpio_refs[] = {
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, SPITZ_GPIO_ADS7846_CS,
-				GPIO_ACTIVE_LOW),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, SPITZ_GPIO_LCDCON_CS,
-				GPIO_ACTIVE_LOW),
-	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, SPITZ_GPIO_MAX1111_CS,
-				GPIO_ACTIVE_LOW),
-};
-
-static const struct property_entry spitz_spi_properties[] = {
-	PROPERTY_ENTRY_REF_ARRAY("gpios", spitz_spi_gpio_refs),
-	{ }
-};
-
-static const struct platform_device_info spitz_spi_device_info = {
-	.name = "pxa2xx-spi",
-	/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1 */
-	.id = 2,
-	.properties = spitz_spi_properties,
-};
-
-static void __init spitz_spi_init(void)
-{
-	struct platform_device *pd;
-	int err;
-
-	pd = platform_device_register_full(&spitz_spi_device_info);
-	err = PTR_ERR_OR_ZERO(pd);
-	if (err)
-		pr_err("pxa2xx-spi: failed to instantiate SPI controller: %d\n",
-		       err);
-
-	spitz_lcdcon_node.properties = machine_is_akita() ?
-					akita_lcdcon_props : spitz_lcdcon_props;
-	spi_register_board_info(ARRAY_AND_SIZE(spitz_spi_devices));
-}
-#else
-static inline void spitz_spi_init(void) {}
-#endif
-
-/******************************************************************************
- * SD/MMC card controller
- ******************************************************************************/
-#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
-/*
- * NOTE: The card detect interrupt isn't debounced so we delay it by 250ms to
- * give the card a chance to fully insert/eject.
- */
-static int spitz_mci_setpower(struct device *dev, unsigned int vdd)
-{
-	struct pxamci_platform_data* p_d = dev->platform_data;
-
-	if ((1 << vdd) & p_d->ocr_mask)
-		spitz_card_pwr_ctrl(SCOOP_CPR_SD_3V, SCOOP_CPR_SD_3V);
-	else
-		spitz_card_pwr_ctrl(SCOOP_CPR_SD_3V, 0x0);
-
-	return 0;
-}
-
-static struct pxamci_platform_data spitz_mci_platform_data = {
-	.detect_delay_ms	= 250,
-	.ocr_mask		= MMC_VDD_32_33|MMC_VDD_33_34,
-	.setpower		= spitz_mci_setpower,
-};
-
-static const struct property_entry spitz_mci_props[] __initconst = {
-	PROPERTY_ENTRY_GPIO("cd-gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_nSD_DETECT, GPIO_ACTIVE_LOW),
-	PROPERTY_ENTRY_GPIO("wp-gpios", &pxa2xx_gpiochip_node,
-			    SPITZ_GPIO_nSD_WP, GPIO_ACTIVE_LOW),
-	{ }
-};
-
-static void __init spitz_mmc_init(void)
-{
-	pxa_set_mci_info(&spitz_mci_platform_data, spitz_mci_props);
-}
-#else
-static inline void spitz_mmc_init(void) {}
-#endif
-
-/******************************************************************************
- * USB Host
- ******************************************************************************/
-#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
-static int spitz_ohci_init(struct device *dev)
-{
-	int err;
-
-	err = gpio_request(SPITZ_GPIO_USB_HOST, "USB_HOST");
-	if (err)
-		return err;
-
-	/* Only Port 2 is connected, setup USB Port 2 Output Control Register */
-	UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
-
-	return gpio_direction_output(SPITZ_GPIO_USB_HOST, 1);
-}
-
-static void spitz_ohci_exit(struct device *dev)
-{
-	gpio_free(SPITZ_GPIO_USB_HOST);
-}
-
-static struct pxaohci_platform_data spitz_ohci_platform_data = {
-	.port_mode	= PMM_NPS_MODE,
-	.init		= spitz_ohci_init,
-	.exit		= spitz_ohci_exit,
-	.flags		= ENABLE_PORT_ALL | NO_OC_PROTECTION,
-	.power_budget	= 150,
-};
-
-static void __init spitz_uhc_init(void)
-{
-	pxa_set_ohci_info(&spitz_ohci_platform_data);
-}
-#else
-static inline void spitz_uhc_init(void) {}
-#endif
-
-/******************************************************************************
- * Framebuffer
- ******************************************************************************/
-#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
-static struct pxafb_mode_info spitz_pxafb_modes[] = {
-	{
-		.pixclock       = 19231,
-		.xres           = 480,
-		.yres           = 640,
-		.bpp            = 16,
-		.hsync_len      = 40,
-		.left_margin    = 46,
-		.right_margin   = 125,
-		.vsync_len      = 3,
-		.upper_margin   = 1,
-		.lower_margin   = 0,
-		.sync           = 0,
-	}, {
-		.pixclock       = 134617,
-		.xres           = 240,
-		.yres           = 320,
-		.bpp            = 16,
-		.hsync_len      = 20,
-		.left_margin    = 20,
-		.right_margin   = 46,
-		.vsync_len      = 2,
-		.upper_margin   = 1,
-		.lower_margin   = 0,
-		.sync           = 0,
-	},
-};
-
-static struct pxafb_mach_info spitz_pxafb_info = {
-	.modes          = spitz_pxafb_modes,
-	.num_modes      = ARRAY_SIZE(spitz_pxafb_modes),
-	.fixed_modes    = 1,
-	.lcd_conn	= LCD_COLOR_TFT_16BPP | LCD_ALTERNATE_MAPPING,
-};
-
-static void __init spitz_lcd_init(void)
-{
-	pxa_set_fb_info(NULL, &spitz_pxafb_info);
-}
-#else
-static inline void spitz_lcd_init(void) {}
-#endif
-
-/******************************************************************************
- * NAND Flash
- ******************************************************************************/
-#if defined(CONFIG_MTD_NAND_SHARPSL) || defined(CONFIG_MTD_NAND_SHARPSL_MODULE)
-static uint8_t scan_ff_pattern[] = { 0xff, 0xff };
-
-static struct nand_bbt_descr spitz_nand_bbt = {
-	.options	= 0,
-	.offs		= 4,
-	.len		= 2,
-	.pattern	= scan_ff_pattern
-};
-
-static int akita_ooblayout_ecc(struct mtd_info *mtd, int section,
-			       struct mtd_oob_region *oobregion)
-{
-	if (section > 12)
-		return -ERANGE;
-
-	switch (section % 3) {
-	case 0:
-		oobregion->offset = 5;
-		oobregion->length = 1;
-		break;
-
-	case 1:
-		oobregion->offset = 1;
-		oobregion->length = 3;
-		break;
-
-	case 2:
-		oobregion->offset = 6;
-		oobregion->length = 2;
-		break;
-	}
-
-	oobregion->offset += (section / 3) * 0x10;
-
-	return 0;
-}
-
-static int akita_ooblayout_free(struct mtd_info *mtd, int section,
-				struct mtd_oob_region *oobregion)
-{
-	if (section)
-		return -ERANGE;
-
-	oobregion->offset = 8;
-	oobregion->length = 9;
-
-	return 0;
-}
-
-static const struct mtd_ooblayout_ops akita_ooblayout_ops = {
-	.ecc = akita_ooblayout_ecc,
-	.free = akita_ooblayout_free,
-};
-
-static const char * const probes[] = {
-	"cmdlinepart",
-	"ofpart",
-	"sharpslpart",
-	NULL,
-};
-
-static struct sharpsl_nand_platform_data spitz_nand_pdata = {
-	.badblock_pattern	= &spitz_nand_bbt,
-	.part_parsers		= probes,
-};
-
-static struct resource spitz_nand_resources[] = {
-	{
-		.start	= PXA_CS3_PHYS,
-		.end	= PXA_CS3_PHYS + SZ_4K - 1,
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-static struct platform_device spitz_nand_device = {
-	.name		= "sharpsl-nand",
-	.id		= -1,
-	.resource	= spitz_nand_resources,
-	.num_resources	= ARRAY_SIZE(spitz_nand_resources),
-	.dev		= {
-		.platform_data	= &spitz_nand_pdata,
-	}
-};
-
-static void __init spitz_nand_init(void)
-{
-	if (machine_is_akita() || machine_is_borzoi()) {
-		spitz_nand_bbt.len = 1;
-		spitz_nand_pdata.ecc_layout = &akita_ooblayout_ops;
-	}
-
-	platform_device_register(&spitz_nand_device);
-}
-#else
-static inline void spitz_nand_init(void) {}
-#endif
-
-/******************************************************************************
- * NOR Flash
- ******************************************************************************/
-#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
-static struct mtd_partition spitz_rom_parts[] = {
-	{
-		.name	="Boot PROM Filesystem",
-		.offset	= 0x00140000,
-		.size	= MTDPART_SIZ_FULL,
-	},
-};
-
-static struct physmap_flash_data spitz_rom_data = {
-	.width		= 2,
-	.nr_parts	= ARRAY_SIZE(spitz_rom_parts),
-	.parts		= spitz_rom_parts,
-};
-
-static struct resource spitz_rom_resources[] = {
-	{
-		.start	= PXA_CS0_PHYS,
-		.end	= PXA_CS0_PHYS + SZ_8M - 1,
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-static struct platform_device spitz_rom_device = {
-	.name		= "physmap-flash",
-	.id		= -1,
-	.resource	= spitz_rom_resources,
-	.num_resources	= ARRAY_SIZE(spitz_rom_resources),
-	.dev		= {
-		.platform_data	= &spitz_rom_data,
-	},
-};
-
-static void __init spitz_nor_init(void)
-{
-	platform_device_register(&spitz_rom_device);
-}
-#else
-static inline void spitz_nor_init(void) {}
-#endif
-
-/******************************************************************************
- * I2C devices
- ******************************************************************************/
-#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE)
-static struct pca953x_platform_data akita_pca953x_pdata = {
-	.gpio_base		= AKITA_IOEXP_GPIO_BASE,
-};
-
-static struct i2c_board_info spitz_i2c_devs[] = {
-	{
-		.type		= "wm8750",
-		.addr		= 0x1b,
-	}, {
-		.type		= "max7310",
-		.addr		= 0x18,
-		.platform_data	= &akita_pca953x_pdata,
-		.swnode		= &akita_max7310_gpiochip_node,
-	},
-};
-
-static struct regulator_consumer_supply isl6271a_consumers[] = {
-	REGULATOR_SUPPLY("vcc_core", NULL),
-};
-
-static struct regulator_init_data isl6271a_info[] = {
-	{
-		.constraints = {
-			.name		= "vcc_core range",
-			.min_uV		= 850000,
-			.max_uV		= 1600000,
-			.always_on	= 1,
-			.valid_ops_mask	= REGULATOR_CHANGE_VOLTAGE,
-		},
-	.consumer_supplies	= isl6271a_consumers,
-	.num_consumer_supplies	= ARRAY_SIZE(isl6271a_consumers),
-	}
-};
-
-static struct i2c_board_info spitz_pi2c_devs[] = {
-	{
-		.type		= "isl6271a",
-		.addr		= 0x0c,
-		.platform_data	= &isl6271a_info,
-	},
-};
-
-static void __init spitz_i2c_init(void)
-{
-	int size = ARRAY_SIZE(spitz_i2c_devs);
-
-	/* Only Akita has the max7310 chip */
-	if (!machine_is_akita())
-		size--;
-
-	pxa_set_i2c_info(NULL);
-	pxa27x_set_i2c_power_info(NULL);
-	i2c_register_board_info(0, spitz_i2c_devs, size);
-	i2c_register_board_info(1, ARRAY_AND_SIZE(spitz_pi2c_devs));
-}
-#else
-static inline void spitz_i2c_init(void) {}
-#endif
-
-static const struct property_entry spitz_audio_props[] = {
-	PROPERTY_ENTRY_GPIO("mute-l-gpios", &spitz_scoop_1_gpiochip_node, 3,
-			    GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_GPIO("mute-r-gpios", &spitz_scoop_1_gpiochip_node, 4,
-			    GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_GPIO("mic-gpios", &spitz_scoop_2_gpiochip_node, 8,
-			    GPIO_ACTIVE_HIGH),
-	{ }
-};
-
-static const struct property_entry akita_audio_props[] = {
-	PROPERTY_ENTRY_GPIO("mute-l-gpios", &spitz_scoop_1_gpiochip_node, 3,
-			    GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_GPIO("mute-r-gpios", &spitz_scoop_1_gpiochip_node, 4,
-			    GPIO_ACTIVE_HIGH),
-	PROPERTY_ENTRY_GPIO("mic-gpios", &akita_max7310_gpiochip_node, 2,
-			    GPIO_ACTIVE_HIGH),
-	{ }
-};
-
-/******************************************************************************
- * Audio devices
- ******************************************************************************/
-static inline void spitz_audio_init(void)
-{
-	struct platform_device_info audio_info = {
-		.name = "spitz-audio",
-		.id = PLATFORM_DEVID_NONE,
-		.properties = machine_is_akita() ?
-				akita_audio_props : spitz_audio_props,
-	};
-
-	platform_device_register_full(&audio_info);
-}
-
-/******************************************************************************
- * Machine init
- ******************************************************************************/
-static void spitz_poweroff(void)
-{
-	pxa_restart(REBOOT_GPIO, NULL);
-}
-
-static void spitz_restart(enum reboot_mode mode, const char *cmd)
-{
-	uint32_t msc0 = __raw_readl(MSC0);
-	/* Bootloader magic for a reboot */
-	if ((msc0 & 0xffff0000) == 0x7ff00000)
-		__raw_writel((msc0 & 0xffff) | 0x7ee00000, MSC0);
-
-	spitz_poweroff();
-}
-
-static void __init spitz_init(void)
-{
-	software_node_register(&spitz_scoop_1_gpiochip_node);
-	if (machine_is_akita())
-		software_node_register(&akita_max7310_gpiochip_node);
-	else
-		software_node_register(&spitz_scoop_2_gpiochip_node);
-
-	init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0);
-	register_platform_power_off(spitz_poweroff);
-
-	PMCR = 0x00;
-
-	/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
-	PCFR |= PCFR_OPDE;
-
-	pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config));
-
-	pxa_set_ffuart_info(NULL);
-	pxa_set_btuart_info(NULL);
-	pxa_set_stuart_info(NULL);
-
-	spitz_spi_init();
-	spitz_scoop_init();
-	spitz_mkp_init();
-	spitz_keys_init();
-	spitz_leds_init();
-	spitz_mmc_init();
-	spitz_pcmcia_init();
-	spitz_uhc_init();
-	spitz_lcd_init();
-	spitz_nor_init();
-	spitz_nand_init();
-	spitz_i2c_init();
-	spitz_audio_init();
-
-	regulator_has_full_constraints();
-}
-
-static void __init spitz_fixup(struct tag *tags, char **cmdline)
-{
-	sharpsl_save_param();
-	memblock_add(0xa0000000, SZ_64M);
-}
-
-#ifdef CONFIG_MACH_SPITZ
-MACHINE_START(SPITZ, "SHARP Spitz")
-	.fixup		= spitz_fixup,
-	.map_io		= pxa27x_map_io,
-	.nr_irqs	= PXA_NR_IRQS,
-	.init_irq	= pxa27x_init_irq,
-	.init_machine	= spitz_init,
-	.init_time	= pxa_timer_init,
-	.restart	= spitz_restart,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_MACH_BORZOI
-MACHINE_START(BORZOI, "SHARP Borzoi")
-	.fixup		= spitz_fixup,
-	.map_io		= pxa27x_map_io,
-	.nr_irqs	= PXA_NR_IRQS,
-	.init_irq	= pxa27x_init_irq,
-	.init_machine	= spitz_init,
-	.init_time	= pxa_timer_init,
-	.restart	= spitz_restart,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_MACH_AKITA
-MACHINE_START(AKITA, "SHARP Akita")
-	.fixup		= spitz_fixup,
-	.map_io		= pxa27x_map_io,
-	.nr_irqs	= PXA_NR_IRQS,
-	.init_irq	= pxa27x_init_irq,
-	.init_machine	= spitz_init,
-	.init_time	= pxa_timer_init,
-	.restart	= spitz_restart,
-MACHINE_END
-#endif
diff --git a/arch/arm/mach-pxa/spitz.h b/arch/arm/mach-pxa/spitz.h
deleted file mode 100644
index 04828d8918aa..000000000000
--- a/arch/arm/mach-pxa/spitz.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Hardware specific definitions for SL-Cx000 series of PDAs
- *
- * Copyright (c) 2005 Alexander Wykes
- * Copyright (c) 2005 Richard Purdie
- *
- * Based on Sharp's 2.4 kernel patches
- */
-#ifndef __ASM_ARCH_SPITZ_H
-#define __ASM_ARCH_SPITZ_H  1
-#endif
-
-#include "irqs.h" /* PXA_NR_BUILTIN_GPIO, PXA_GPIO_TO_IRQ */
-#include <linux/fb.h>
-
-/* Spitz/Akita GPIOs */
-
-#define SPITZ_GPIO_KEY_INT         (0) /* Key Interrupt */
-#define SPITZ_GPIO_RESET           (1)
-#define SPITZ_GPIO_nSD_DETECT      (9)
-#define SPITZ_GPIO_TP_INT          (11) /* Touch Panel interrupt */
-#define SPITZ_GPIO_AK_INT          (13) /* Remote Control */
-#define SPITZ_GPIO_ADS7846_CS      (14)
-#define SPITZ_GPIO_SYNC            (16)
-#define SPITZ_GPIO_MAX1111_CS      (20)
-#define SPITZ_GPIO_FATAL_BAT       (21)
-#define SPITZ_GPIO_HSYNC           (22)
-#define SPITZ_GPIO_nSD_CLK         (32)
-#define SPITZ_GPIO_USB_DEVICE      (35)
-#define SPITZ_GPIO_USB_HOST        (37)
-#define SPITZ_GPIO_USB_CONNECT     (41)
-#define SPITZ_GPIO_LCDCON_CS       (53)
-#define SPITZ_GPIO_nPCE            (54)
-#define SPITZ_GPIO_nSD_WP          (81)
-#define SPITZ_GPIO_ON_RESET        (89)
-#define SPITZ_GPIO_BAT_COVER       (90)
-#define SPITZ_GPIO_CF_CD           (94)
-#define SPITZ_GPIO_ON_KEY          (95)
-#define SPITZ_GPIO_SWA             (97)
-#define SPITZ_GPIO_SWB             (96)
-#define SPITZ_GPIO_CHRG_FULL       (101)
-#define SPITZ_GPIO_CO              (101)
-#define SPITZ_GPIO_CF_IRQ          (105)
-#define SPITZ_GPIO_AC_IN           (115)
-#define SPITZ_GPIO_HP_IN           (116)
-
-/* Spitz Only GPIOs */
-
-#define SPITZ_GPIO_CF2_IRQ         (106) /* CF slot1 Ready */
-#define SPITZ_GPIO_CF2_CD          (93)
-
-
-/* Spitz/Akita Keyboard Definitions */
-
-#define SPITZ_KEY_STROBE_NUM         (11)
-#define SPITZ_KEY_SENSE_NUM          (7)
-#define SPITZ_GPIO_G0_STROBE_BIT     0x0f800000
-#define SPITZ_GPIO_G1_STROBE_BIT     0x00100000
-#define SPITZ_GPIO_G2_STROBE_BIT     0x01000000
-#define SPITZ_GPIO_G3_STROBE_BIT     0x00041880
-#define SPITZ_GPIO_G0_SENSE_BIT      0x00021000
-#define SPITZ_GPIO_G1_SENSE_BIT      0x000000d4
-#define SPITZ_GPIO_G2_SENSE_BIT      0x08000000
-#define SPITZ_GPIO_G3_SENSE_BIT      0x00000000
-
-#define SPITZ_GPIO_KEY_STROBE0       88
-#define SPITZ_GPIO_KEY_STROBE1       23
-#define SPITZ_GPIO_KEY_STROBE2       24
-#define SPITZ_GPIO_KEY_STROBE3       25
-#define SPITZ_GPIO_KEY_STROBE4       26
-#define SPITZ_GPIO_KEY_STROBE5       27
-#define SPITZ_GPIO_KEY_STROBE6       52
-#define SPITZ_GPIO_KEY_STROBE7       103
-#define SPITZ_GPIO_KEY_STROBE8       107
-#define SPITZ_GPIO_KEY_STROBE9       108
-#define SPITZ_GPIO_KEY_STROBE10      114
-
-#define SPITZ_GPIO_KEY_SENSE0        12
-#define SPITZ_GPIO_KEY_SENSE1        17
-#define SPITZ_GPIO_KEY_SENSE2        91
-#define SPITZ_GPIO_KEY_SENSE3        34
-#define SPITZ_GPIO_KEY_SENSE4        36
-#define SPITZ_GPIO_KEY_SENSE5        38
-#define SPITZ_GPIO_KEY_SENSE6        39
-
-
-/* Spitz Scoop Device (No. 1) GPIOs */
-/* Suspend States in comments */
-#define SPITZ_SCP_LED_GREEN     SCOOP_GPCR_PA11  /* Keep */
-#define SPITZ_SCP_JK_B          SCOOP_GPCR_PA12  /* Keep */
-#define SPITZ_SCP_CHRG_ON       SCOOP_GPCR_PA13  /* Keep */
-#define SPITZ_SCP_MUTE_L        SCOOP_GPCR_PA14  /* Low */
-#define SPITZ_SCP_MUTE_R        SCOOP_GPCR_PA15  /* Low */
-#define SPITZ_SCP_CF_POWER      SCOOP_GPCR_PA16  /* Keep */
-#define SPITZ_SCP_LED_ORANGE    SCOOP_GPCR_PA17  /* Keep */
-#define SPITZ_SCP_JK_A          SCOOP_GPCR_PA18  /* Low */
-#define SPITZ_SCP_ADC_TEMP_ON   SCOOP_GPCR_PA19  /* Low */
-
-#define SPITZ_SCP_IO_DIR      (SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \
-                               SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | \
-                               SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
-#define SPITZ_SCP_IO_OUT      (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R)
-#define SPITZ_SCP_SUS_CLR     (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
-#define SPITZ_SCP_SUS_SET     0
-
-#define SPITZ_SCP_GPIO_BASE	(PXA_NR_BUILTIN_GPIO)
-#define SPITZ_GPIO_LED_GREEN	(SPITZ_SCP_GPIO_BASE + 0)
-#define SPITZ_GPIO_JK_B		(SPITZ_SCP_GPIO_BASE + 1)
-#define SPITZ_GPIO_CHRG_ON	(SPITZ_SCP_GPIO_BASE + 2)
-#define SPITZ_GPIO_MUTE_L	(SPITZ_SCP_GPIO_BASE + 3)
-#define SPITZ_GPIO_MUTE_R	(SPITZ_SCP_GPIO_BASE + 4)
-#define SPITZ_GPIO_CF_POWER	(SPITZ_SCP_GPIO_BASE + 5)
-#define SPITZ_GPIO_LED_ORANGE	(SPITZ_SCP_GPIO_BASE + 6)
-#define SPITZ_GPIO_JK_A		(SPITZ_SCP_GPIO_BASE + 7)
-#define SPITZ_GPIO_ADC_TEMP_ON	(SPITZ_SCP_GPIO_BASE + 8)
-
-/* Spitz Scoop Device (No. 2) GPIOs */
-/* Suspend States in comments */
-#define SPITZ_SCP2_IR_ON           SCOOP_GPCR_PA11  /* High */
-#define SPITZ_SCP2_AKIN_PULLUP     SCOOP_GPCR_PA12  /* Keep */
-#define SPITZ_SCP2_RESERVED_1      SCOOP_GPCR_PA13  /* High */
-#define SPITZ_SCP2_RESERVED_2      SCOOP_GPCR_PA14  /* Low */
-#define SPITZ_SCP2_RESERVED_3      SCOOP_GPCR_PA15  /* Low */
-#define SPITZ_SCP2_RESERVED_4      SCOOP_GPCR_PA16  /* Low */
-#define SPITZ_SCP2_BACKLIGHT_CONT  SCOOP_GPCR_PA17  /* Low */
-#define SPITZ_SCP2_BACKLIGHT_ON    SCOOP_GPCR_PA18  /* Low */
-#define SPITZ_SCP2_MIC_BIAS        SCOOP_GPCR_PA19  /* Low */
-
-#define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \
-                           SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
-                           SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
-
-#define SPITZ_SCP2_IO_OUT   (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1)
-#define SPITZ_SCP2_SUS_CLR  (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
-                             SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
-#define SPITZ_SCP2_SUS_SET  (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1)
-
-#define SPITZ_SCP2_GPIO_BASE		(PXA_NR_BUILTIN_GPIO + 12)
-#define SPITZ_GPIO_IR_ON		(SPITZ_SCP2_GPIO_BASE + 0)
-#define SPITZ_GPIO_AKIN_PULLUP		(SPITZ_SCP2_GPIO_BASE + 1)
-#define SPITZ_GPIO_RESERVED_1		(SPITZ_SCP2_GPIO_BASE + 2)
-#define SPITZ_GPIO_RESERVED_2		(SPITZ_SCP2_GPIO_BASE + 3)
-#define SPITZ_GPIO_RESERVED_3		(SPITZ_SCP2_GPIO_BASE + 4)
-#define SPITZ_GPIO_RESERVED_4		(SPITZ_SCP2_GPIO_BASE + 5)
-#define SPITZ_GPIO_BACKLIGHT_CONT	(SPITZ_SCP2_GPIO_BASE + 6)
-#define SPITZ_GPIO_BACKLIGHT_ON		(SPITZ_SCP2_GPIO_BASE + 7)
-#define SPITZ_GPIO_MIC_BIAS		(SPITZ_SCP2_GPIO_BASE + 8)
-
-/* Akita IO Expander GPIOs */
-#define AKITA_IOEXP_GPIO_BASE		(PXA_NR_BUILTIN_GPIO + 12)
-#define AKITA_GPIO_RESERVED_0		(AKITA_IOEXP_GPIO_BASE + 0)
-#define AKITA_GPIO_RESERVED_1		(AKITA_IOEXP_GPIO_BASE + 1)
-#define AKITA_GPIO_MIC_BIAS		(AKITA_IOEXP_GPIO_BASE + 2)
-#define AKITA_GPIO_BACKLIGHT_ON		(AKITA_IOEXP_GPIO_BASE + 3)
-#define AKITA_GPIO_BACKLIGHT_CONT	(AKITA_IOEXP_GPIO_BASE + 4)
-#define AKITA_GPIO_AKIN_PULLUP		(AKITA_IOEXP_GPIO_BASE + 5)
-#define AKITA_GPIO_IR_ON		(AKITA_IOEXP_GPIO_BASE + 6)
-#define AKITA_GPIO_RESERVED_7		(AKITA_IOEXP_GPIO_BASE + 7)
-
-/* Spitz IRQ Definitions */
-
-#define SPITZ_IRQ_GPIO_KEY_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_KEY_INT)
-#define SPITZ_IRQ_GPIO_AC_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_AC_IN)
-#define SPITZ_IRQ_GPIO_AK_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_AK_INT)
-#define SPITZ_IRQ_GPIO_HP_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_HP_IN)
-#define SPITZ_IRQ_GPIO_TP_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT)
-#define SPITZ_IRQ_GPIO_SYNC           PXA_GPIO_TO_IRQ(SPITZ_GPIO_SYNC)
-#define SPITZ_IRQ_GPIO_ON_KEY         PXA_GPIO_TO_IRQ(SPITZ_GPIO_ON_KEY)
-#define SPITZ_IRQ_GPIO_SWA            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWA)
-#define SPITZ_IRQ_GPIO_SWB            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWB)
-#define SPITZ_IRQ_GPIO_BAT_COVER      PXA_GPIO_TO_IRQ(SPITZ_GPIO_BAT_COVER)
-#define SPITZ_IRQ_GPIO_FATAL_BAT      PXA_GPIO_TO_IRQ(SPITZ_GPIO_FATAL_BAT)
-#define SPITZ_IRQ_GPIO_CO             PXA_GPIO_TO_IRQ(SPITZ_GPIO_CO)
-#define SPITZ_IRQ_GPIO_CF_IRQ         PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_IRQ)
-#define SPITZ_IRQ_GPIO_CF_CD          PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_CD)
-#define SPITZ_IRQ_GPIO_CF2_IRQ        PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF2_IRQ)
-#define SPITZ_IRQ_GPIO_nSD_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_INT)
-#define SPITZ_IRQ_GPIO_nSD_DETECT     PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_DETECT)
-
-/*
- * Shared data structures
- */
-extern struct platform_device spitzssp_device;
-extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c
deleted file mode 100644
index 806847c36549..000000000000
--- a/arch/arm/mach-pxa/spitz_pm.c
+++ /dev/null
@@ -1,257 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Battery and Power Management code for the Sharp SL-Cxx00
- *
- * Copyright (c) 2005 Richard Purdie
- */
-
-#include <linux/module.h>
-#include <linux/stat.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/gpio/legacy.h>
-#include <linux/gpio-pxa.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-#include <linux/apm-emulation.h>
-#include <linux/spi/corgi_lcd.h>
-
-#include <asm/irq.h>
-#include <asm/mach-types.h>
-
-#include "spitz.h"
-#include "pxa27x.h"
-#include "sharpsl_pm.h"
-
-#include "generic.h"
-
-#define SHARPSL_CHARGE_ON_VOLT         0x99  /* 2.9V */
-#define SHARPSL_CHARGE_ON_TEMP         0xe0  /* 2.9V */
-#define SHARPSL_CHARGE_ON_ACIN_HIGH    0x9b  /* 6V */
-#define SHARPSL_CHARGE_ON_ACIN_LOW     0x34  /* 2V */
-#define SHARPSL_FATAL_ACIN_VOLT        182   /* 3.45V */
-#define SHARPSL_FATAL_NOACIN_VOLT      170   /* 3.40V */
-
-static int spitz_last_ac_status;
-
-static void spitz_charger_init(void)
-{
-	gpio_request(SPITZ_GPIO_KEY_INT, "Keyboard Interrupt");
-	gpio_direction_input(SPITZ_GPIO_KEY_INT);
-	gpio_request(SPITZ_GPIO_SYNC, "Sync");
-	gpio_direction_input(SPITZ_GPIO_SYNC);
-	gpio_request(SPITZ_GPIO_AC_IN, "Charger Detection");
-	gpio_direction_input(SPITZ_GPIO_AC_IN);
-	gpio_request(SPITZ_GPIO_ADC_TEMP_ON, "ADC Temp On");
-	gpio_direction_output(SPITZ_GPIO_ADC_TEMP_ON, 0);
-	gpio_request(SPITZ_GPIO_JK_B, "JK B");
-	gpio_direction_output(SPITZ_GPIO_JK_B, 0);
-	gpio_request(SPITZ_GPIO_CHRG_ON, "Charger On");
-	gpio_direction_output(SPITZ_GPIO_CHRG_ON, 0);
-}
-
-static void spitz_measure_temp(int on)
-{
-	gpio_set_value(SPITZ_GPIO_ADC_TEMP_ON, on);
-}
-
-static void spitz_charge(int on)
-{
-	if (on) {
-		if (sharpsl_pm.flags & SHARPSL_SUSPENDED) {
-			gpio_set_value(SPITZ_GPIO_JK_B, 1);
-			gpio_set_value(SPITZ_GPIO_CHRG_ON, 0);
-		} else {
-			gpio_set_value(SPITZ_GPIO_JK_B, 0);
-			gpio_set_value(SPITZ_GPIO_CHRG_ON, 0);
-		}
-	} else {
-		gpio_set_value(SPITZ_GPIO_JK_B, 0);
-		gpio_set_value(SPITZ_GPIO_CHRG_ON, 1);
-	}
-}
-
-static void spitz_discharge(int on)
-{
-	gpio_set_value(SPITZ_GPIO_JK_A, on);
-}
-
-/* HACK - For unknown reasons, accurate voltage readings are only made with a load
-   on the power bus which the green led on spitz provides */
-static void spitz_discharge1(int on)
-{
-	gpio_set_value(SPITZ_GPIO_LED_GREEN, on);
-}
-
-static unsigned long gpio18_config = GPIO18_GPIO;
-
-static void spitz_presuspend(void)
-{
-	spitz_last_ac_status = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
-
-	/* GPIO Sleep Register */
-	PGSR0 = 0x00144018;
-	PGSR1 = 0x00EF0000;
-	if (machine_is_akita()) {
-		PGSR2 = 0x2121C000;
-		PGSR3 = 0x00600400;
-	} else {
-		PGSR2 = 0x0121C000;
-		PGSR3 = 0x00600000;
-	}
-
-	PGSR0 &= ~SPITZ_GPIO_G0_STROBE_BIT;
-	PGSR1 &= ~SPITZ_GPIO_G1_STROBE_BIT;
-	PGSR2 &= ~SPITZ_GPIO_G2_STROBE_BIT;
-	PGSR3 &= ~SPITZ_GPIO_G3_STROBE_BIT;
-	PGSR2 |= GPIO_bit(SPITZ_GPIO_KEY_STROBE0);
-
-	pxa2xx_mfp_config(&gpio18_config, 1);
-	gpio_request_one(18, GPIOF_OUT_INIT_HIGH, "Unknown");
-	gpio_free(18);
-
-	PRER = GPIO_bit(SPITZ_GPIO_KEY_INT);
-	PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
-	PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET) | PWER_RTC;
-	PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
-	PKSR = 0xffffffff; /* clear */
-
-	/* nRESET_OUT Disable */
-	PSLR |= PSLR_SL_ROD;
-
-	/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
-	PCFR = PCFR_GPR_EN | PCFR_OPDE;
-}
-
-static void spitz_postsuspend(void)
-{
-}
-
-static int spitz_should_wakeup(unsigned int resume_on_alarm)
-{
-	int is_resume = 0;
-	int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
-
-	if (spitz_last_ac_status != acin) {
-		if (acin) {
-			/* charge on */
-			sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG;
-			dev_dbg(sharpsl_pm.dev, "AC Inserted\n");
-		} else {
-			/* charge off */
-			dev_dbg(sharpsl_pm.dev, "AC Removed\n");
-			sharpsl_pm_led(SHARPSL_LED_OFF);
-			sharpsl_pm.machinfo->charge(0);
-			sharpsl_pm.charge_mode = CHRG_OFF;
-		}
-		spitz_last_ac_status = acin;
-		/* Return to suspend as this must be what we were woken for */
-		return 0;
-	}
-
-	if (PEDR & GPIO_bit(SPITZ_GPIO_KEY_INT))
-		is_resume |= GPIO_bit(SPITZ_GPIO_KEY_INT);
-
-	if (PKSR & GPIO_bit(SPITZ_GPIO_SYNC))
-		is_resume |= GPIO_bit(SPITZ_GPIO_SYNC);
-
-	if (resume_on_alarm && (PEDR & PWER_RTC))
-		is_resume |= PWER_RTC;
-
-	dev_dbg(sharpsl_pm.dev, "is_resume: %x\n", is_resume);
-	return is_resume;
-}
-
-static bool spitz_charger_wakeup(void)
-{
-	return !gpio_get_value(SPITZ_GPIO_KEY_INT) ||
-		gpio_get_value(SPITZ_GPIO_SYNC);
-}
-
-static unsigned long spitzpm_read_devdata(int type)
-{
-	switch (type) {
-	case SHARPSL_STATUS_ACIN:
-		return !gpio_get_value(SPITZ_GPIO_AC_IN);
-	case SHARPSL_STATUS_LOCK:
-		return gpio_get_value(sharpsl_pm.machinfo->gpio_batlock);
-	case SHARPSL_STATUS_CHRGFULL:
-		return gpio_get_value(sharpsl_pm.machinfo->gpio_batfull);
-	case SHARPSL_STATUS_FATAL:
-		return gpio_get_value(sharpsl_pm.machinfo->gpio_fatal);
-	case SHARPSL_ACIN_VOLT:
-		return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT);
-	case SHARPSL_BATT_TEMP:
-		return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP);
-	case SHARPSL_BATT_VOLT:
-	default:
-		return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT);
-	}
-}
-
-struct sharpsl_charger_machinfo spitz_pm_machinfo = {
-	.init             = spitz_charger_init,
-	.exit             = NULL,
-	.gpio_batlock     = SPITZ_GPIO_BAT_COVER,
-	.gpio_acin        = SPITZ_GPIO_AC_IN,
-	.gpio_batfull     = SPITZ_GPIO_CHRG_FULL,
-	.batfull_irq	  = 1,
-	.gpio_fatal       = SPITZ_GPIO_FATAL_BAT,
-	.discharge        = spitz_discharge,
-	.discharge1       = spitz_discharge1,
-	.charge           = spitz_charge,
-	.measure_temp     = spitz_measure_temp,
-	.presuspend       = spitz_presuspend,
-	.postsuspend      = spitz_postsuspend,
-	.read_devdata     = spitzpm_read_devdata,
-	.charger_wakeup   = spitz_charger_wakeup,
-	.should_wakeup    = spitz_should_wakeup,
-#if defined(CONFIG_LCD_CORGI)
-	.backlight_limit = corgi_lcd_limit_intensity,
-#endif
-	.charge_on_volt	  = SHARPSL_CHARGE_ON_VOLT,
-	.charge_on_temp	  = SHARPSL_CHARGE_ON_TEMP,
-	.charge_acin_high = SHARPSL_CHARGE_ON_ACIN_HIGH,
-	.charge_acin_low  = SHARPSL_CHARGE_ON_ACIN_LOW,
-	.fatal_acin_volt  = SHARPSL_FATAL_ACIN_VOLT,
-	.fatal_noacin_volt= SHARPSL_FATAL_NOACIN_VOLT,
-	.bat_levels       = 40,
-	.bat_levels_noac  = sharpsl_battery_levels_noac,
-	.bat_levels_acin  = sharpsl_battery_levels_acin,
-	.status_high_acin = 188,
-	.status_low_acin  = 178,
-	.status_high_noac = 185,
-	.status_low_noac  = 175,
-};
-
-static struct platform_device *spitzpm_device;
-
-static int spitzpm_init(void)
-{
-	int ret;
-
-	if (!machine_is_spitz() && !machine_is_akita()
-			&& !machine_is_borzoi())
-		return -ENODEV;
-
-	spitzpm_device = platform_device_alloc("sharpsl-pm", -1);
-	if (!spitzpm_device)
-		return -ENOMEM;
-
-	spitzpm_device->dev.platform_data = &spitz_pm_machinfo;
-	ret = platform_device_add(spitzpm_device);
-
-	if (ret)
-		platform_device_put(spitzpm_device);
-
-	return ret;
-}
-
-static void spitzpm_exit(void)
-{
-	platform_device_unregister(spitzpm_device);
-}
-
-module_init(spitzpm_init);
-module_exit(spitzpm_exit);
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (3 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files Arnd Bergmann
@ 2026-09-08 15:27 ` Arnd Bergmann
  2026-09-08 15:34   ` Mark Brown
                     ` (5 more replies)
  2026-09-08 15:27 ` [PATCH 06/13] ARM: omap2: remove omap24xx support Arnd Bergmann
                   ` (8 subsequent siblings)
  13 siblings, 6 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Niklas Cassel, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Mark Brown, Bartosz Golaszewski, Thomas Weissschuh, linux-ide,
	linux-mmc, linux-pci, linux-phy, linux-rtc, linux-pm,
	linux-watchdog, linux-sound, linux-gpio

From: Arnd Bergmann <arnd@arndb.de>

The 'orion' platform is the predecessor to what linux now calls the
'mvebu' line of Marvell SoCs, and originally covered orion5x,
mv78xx0, kirkwood, dove and a few others that do not have any
upstream support at the moment.

Only a few board files remain here, these are the ones left
in 2022 board file purge because they had some level of support
in Debian or OpenWRT, mostly for commercial NAS or router boxes.
This distro support is now gone, and nobody has converted the
board files to devicetree, though the orion5x and dove platforms
also come with devicetree support for some other machines.

Cc: Andrew Lunn <andrew@lunn.ch>
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Cc: Gregory Clement <gregory.clement@bootlin.com>
Cc: Alexander Clouter <alex@digriz.org.uk>
Cc: Jeremy J. Peper <jeremy@jeremypeper.com>
Cc: Damien Le Moal <dlemoal@kernel.org>
Cc: Niklas Cassel <cassel@kernel.org>
Cc: Ulf Hansson <ulfh@kernel.org>
Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
Cc: "Krzysztof Wilczyński" <kwilczynski@kernel.org>
Cc: Manivannan Sadhasivam <mani@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Vinod Koul <vkoul@kernel.org>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Daniel Lezcano <daniel.lezcano@kernel.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Mark Brown <broonie@kernel.org>
Cc: Linus Walleij <linusw@kernel.org>
Cc: Bartosz Golaszewski <brgl@kernel.org>
Cc: Thomas Weissschuh <thomas.weissschuh@linutronix.de>
Cc: linux-ide@vger.kernel.org
Cc: linux-mmc@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Cc: linux-phy@lists.infradead.org
Cc: linux-rtc@vger.kernel.org
Cc: linux-pm@vger.kernel.org
Cc: linux-watchdog@vger.kernel.org
Cc: linux-sound@vger.kernel.org
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 MAINTAINERS                                   |   2 -
 arch/arm/Kconfig                              |   2 -
 arch/arm/Kconfig.debug                        |   2 +-
 arch/arm/Makefile                             |   2 -
 arch/arm/configs/dove_defconfig               | 134 ---
 arch/arm/configs/mv78xx0_defconfig            | 120 ---
 arch/arm/mach-dove/Kconfig                    |  32 -
 arch/arm/mach-dove/Makefile                   |   7 -
 arch/arm/mach-dove/bridge-regs.h              |  50 --
 arch/arm/mach-dove/cm-a510.c                  |  94 --
 arch/arm/mach-dove/common.c                   | 449 ----------
 arch/arm/mach-dove/common.h                   |  46 -
 arch/arm/mach-dove/dove.h                     | 185 ----
 arch/arm/mach-dove/irq.c                      |  81 --
 arch/arm/mach-dove/irqs.h                     |  89 --
 arch/arm/mach-dove/mpp.c                      | 159 ----
 arch/arm/mach-dove/mpp.h                      | 197 -----
 arch/arm/mach-dove/pcie.c                     | 226 -----
 arch/arm/mach-dove/pm.h                       |  58 --
 arch/arm/mach-mv78xx0/Kconfig                 |  27 -
 arch/arm/mach-mv78xx0/Makefile                |   5 -
 arch/arm/mach-mv78xx0/bridge-regs.h           |  31 -
 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c     | 183 ----
 arch/arm/mach-mv78xx0/common.c                | 444 ----------
 arch/arm/mach-mv78xx0/common.h                |  54 --
 arch/arm/mach-mv78xx0/irq.c                   |  69 --
 arch/arm/mach-mv78xx0/irqs.h                  |  87 --
 arch/arm/mach-mv78xx0/mpp.c                   |  34 -
 arch/arm/mach-mv78xx0/mpp.h                   | 337 -------
 arch/arm/mach-mv78xx0/mv78xx0.h               | 134 ---
 arch/arm/mach-mv78xx0/pcie.c                  | 280 ------
 arch/arm/mach-orion5x/Kconfig                 |  95 --
 arch/arm/mach-orion5x/Makefile                |   9 -
 arch/arm/mach-orion5x/board-dt.c              |   3 +-
 arch/arm/mach-orion5x/common.c                | 238 +----
 arch/arm/mach-orion5x/common.h                |  15 -
 arch/arm/mach-orion5x/dns323-setup.c          | 757 ----------------
 arch/arm/mach-orion5x/kurobox_pro-setup.c     | 407 ---------
 arch/arm/mach-orion5x/mv2120-setup.c          | 256 ------
 arch/arm/mach-orion5x/net2big-setup.c         | 444 ----------
 arch/arm/mach-orion5x/pci.c                   |   1 -
 .../arm/mach-orion5x/terastation_pro2-setup.c | 366 --------
 arch/arm/mach-orion5x/ts209-setup.c           | 331 -------
 arch/arm/mach-orion5x/ts409-setup.c           | 329 -------
 arch/arm/mach-orion5x/ts78xx-fpga.h           |  42 -
 arch/arm/mach-orion5x/ts78xx-setup.c          | 574 ------------
 arch/arm/mach-orion5x/tsx09-common.c          | 129 ---
 arch/arm/mach-orion5x/tsx09-common.h          |  21 -
 arch/arm/mm/Kconfig                           |   2 +-
 arch/arm/plat-orion/Makefile                  |   2 +-
 arch/arm/plat-orion/common.c                  | 826 ------------------
 arch/arm/plat-orion/include/plat/addr-map.h   |  54 --
 arch/arm/plat-orion/include/plat/common.h     | 104 ---
 arch/arm/plat-orion/include/plat/time.h       |  20 -
 arch/arm/plat-orion/pcie.c                    |   1 -
 arch/arm/plat-orion/time.c                    | 238 -----
 drivers/ata/Kconfig                           |   3 +-
 drivers/mmc/host/Kconfig                      |   2 +-
 drivers/pci/controller/Kconfig                |   2 +-
 drivers/phy/marvell/Kconfig                   |   2 +-
 drivers/rtc/Kconfig                           |   2 +-
 drivers/soc/Makefile                          |   1 -
 drivers/thermal/Kconfig                       |   2 +-
 drivers/watchdog/Kconfig                      |   2 +-
 sound/soc/kirkwood/Kconfig                    |   2 +-
 65 files changed, 14 insertions(+), 8888 deletions(-)
 delete mode 100644 arch/arm/configs/dove_defconfig
 delete mode 100644 arch/arm/configs/mv78xx0_defconfig
 delete mode 100644 arch/arm/mach-dove/Kconfig
 delete mode 100644 arch/arm/mach-dove/Makefile
 delete mode 100644 arch/arm/mach-dove/bridge-regs.h
 delete mode 100644 arch/arm/mach-dove/cm-a510.c
 delete mode 100644 arch/arm/mach-dove/common.c
 delete mode 100644 arch/arm/mach-dove/common.h
 delete mode 100644 arch/arm/mach-dove/dove.h
 delete mode 100644 arch/arm/mach-dove/irq.c
 delete mode 100644 arch/arm/mach-dove/irqs.h
 delete mode 100644 arch/arm/mach-dove/mpp.c
 delete mode 100644 arch/arm/mach-dove/mpp.h
 delete mode 100644 arch/arm/mach-dove/pcie.c
 delete mode 100644 arch/arm/mach-dove/pm.h
 delete mode 100644 arch/arm/mach-mv78xx0/Kconfig
 delete mode 100644 arch/arm/mach-mv78xx0/Makefile
 delete mode 100644 arch/arm/mach-mv78xx0/bridge-regs.h
 delete mode 100644 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
 delete mode 100644 arch/arm/mach-mv78xx0/common.c
 delete mode 100644 arch/arm/mach-mv78xx0/common.h
 delete mode 100644 arch/arm/mach-mv78xx0/irq.c
 delete mode 100644 arch/arm/mach-mv78xx0/irqs.h
 delete mode 100644 arch/arm/mach-mv78xx0/mpp.c
 delete mode 100644 arch/arm/mach-mv78xx0/mpp.h
 delete mode 100644 arch/arm/mach-mv78xx0/mv78xx0.h
 delete mode 100644 arch/arm/mach-mv78xx0/pcie.c
 delete mode 100644 arch/arm/mach-orion5x/dns323-setup.c
 delete mode 100644 arch/arm/mach-orion5x/kurobox_pro-setup.c
 delete mode 100644 arch/arm/mach-orion5x/mv2120-setup.c
 delete mode 100644 arch/arm/mach-orion5x/net2big-setup.c
 delete mode 100644 arch/arm/mach-orion5x/terastation_pro2-setup.c
 delete mode 100644 arch/arm/mach-orion5x/ts209-setup.c
 delete mode 100644 arch/arm/mach-orion5x/ts409-setup.c
 delete mode 100644 arch/arm/mach-orion5x/ts78xx-fpga.h
 delete mode 100644 arch/arm/mach-orion5x/ts78xx-setup.c
 delete mode 100644 arch/arm/mach-orion5x/tsx09-common.c
 delete mode 100644 arch/arm/mach-orion5x/tsx09-common.h
 delete mode 100644 arch/arm/plat-orion/common.c
 delete mode 100644 arch/arm/plat-orion/include/plat/addr-map.h
 delete mode 100644 arch/arm/plat-orion/include/plat/common.h
 delete mode 100644 arch/arm/plat-orion/include/plat/time.h
 delete mode 100644 arch/arm/plat-orion/time.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 6e8fe7640064..028db7ad15ad 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3080,8 +3080,6 @@ F:	Documentation/devicetree/bindings/arm/marvell/marvell,orion5x.yaml
 F:	Documentation/devicetree/bindings/soc/dove/
 F:	arch/arm/boot/dts/marvell/dove*
 F:	arch/arm/boot/dts/marvell/orion5x*
-F:	arch/arm/mach-dove/
-F:	arch/arm/mach-mv78xx0/
 F:	arch/arm/mach-orion5x/
 F:	arch/arm/plat-orion/
 F:	drivers/bus/mvebu-mbus.c
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5770deca136d..da29afce309f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -393,8 +393,6 @@ source "arch/arm/mach-mmp/Kconfig"
 
 source "arch/arm/mach-mstar/Kconfig"
 
-source "arch/arm/mach-mv78xx0/Kconfig"
-
 source "arch/arm/mach-mvebu/Kconfig"
 
 source "arch/arm/mach-mxs/Kconfig"
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 56c090840c5a..e2fc89055463 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -583,7 +583,7 @@ choice
 
 	config DEBUG_MVEBU_UART0_ALTERNATE
 		bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)"
-		depends on ARCH_MVEBU || ARCH_DOVE || ARCH_MV78XX0 || ARCH_ORION5X
+		depends on ARCH_MVEBU || ARCH_ORION5X
 		select DEBUG_UART_8250
 		help
 		  Say Y here if you want kernel low-level debugging support
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index f5bc9ad7f6f5..5421a3ec3825 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -179,7 +179,6 @@ machine-$(CONFIG_ARCH_BERLIN)		+= berlin
 machine-$(CONFIG_ARCH_CLPS711X)		+= clps711x
 machine-$(CONFIG_ARCH_DAVINCI)		+= davinci
 machine-$(CONFIG_ARCH_DIGICOLOR)	+= digicolor
-machine-$(CONFIG_ARCH_DOVE)		+= dove
 machine-$(CONFIG_ARCH_EXYNOS)		+= exynos
 machine-$(CONFIG_ARCH_GEMINI)		+= gemini
 machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
@@ -190,7 +189,6 @@ machine-$(CONFIG_ARCH_LPC18XX)		+= lpc18xx
 machine-$(CONFIG_ARCH_LPC32XX)		+= lpc32xx
 machine-$(CONFIG_ARCH_MESON)		+= meson
 machine-$(CONFIG_ARCH_MMP)		+= mmp
-machine-$(CONFIG_ARCH_MV78XX0)		+= mv78xx0
 machine-$(CONFIG_ARCH_MVEBU)		+= mvebu
 machine-$(CONFIG_ARCH_MXC)		+= imx
 machine-$(CONFIG_ARCH_MEDIATEK)		+= mediatek
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig
deleted file mode 100644
index 917a864fec74..000000000000
--- a/arch/arm/configs/dove_defconfig
+++ /dev/null
@@ -1,134 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_NO_HZ_IDLE=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_EXPERT=y
-# CONFIG_ARCH_MULTI_V6 is not set
-CONFIG_ARCH_MULTI_V7=y
-CONFIG_ARCH_DOVE=y
-CONFIG_MACH_CM_A510=y
-CONFIG_HIGHMEM=y
-CONFIG_ATAGS=y
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_VFP=y
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IPV6 is not set
-CONFIG_PCI=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_MVEBU=y
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_M25P80=y
-CONFIG_MTD_SPI_NOR=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=1
-# CONFIG_SCSI_PROC_FS is not set
-CONFIG_BLK_DEV_SD=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_SCSI_LOWLEVEL is not set
-CONFIG_ATA=y
-CONFIG_SATA_MV=y
-CONFIG_NETDEVICES=y
-CONFIG_MV643XX_ETH=y
-# CONFIG_INPUT_MOUSEDEV is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_SERIO is not set
-CONFIG_LEGACY_PTY_COUNT=16
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-CONFIG_SERIAL_OF_PLATFORM=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_MV64XXX=y
-CONFIG_SPI=y
-CONFIG_SPI_ORION=y
-# CONFIG_HWMON is not set
-CONFIG_THERMAL=y
-CONFIG_DOVE_THERMAL=y
-CONFIG_WATCHDOG=y
-CONFIG_ORION_WATCHDOG=y
-CONFIG_USB=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_STORAGE=y
-CONFIG_MMC=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MMC_SDHCI_DOVE=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_MV=y
-CONFIG_DMADEVICES=y
-CONFIG_MV_XOR=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT4_FS=y
-# CONFIG_EXT4_FS_XATTR is not set
-CONFIG_ISO9660_FS=y
-CONFIG_JOLIET=y
-CONFIG_UDF_FS=m
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_NFS_FS=y
-CONFIG_ROOT_NFS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=y
-CONFIG_NLS_UTF8=y
-CONFIG_TIMER_STATS=y
-CONFIG_CRYPTO_NULL=y
-CONFIG_CRYPTO_BLOWFISH=y
-CONFIG_CRYPTO_TEA=y
-CONFIG_CRYPTO_TWOFISH=y
-CONFIG_CRYPTO_ECB=m
-CONFIG_CRYPTO_HMAC=y
-CONFIG_CRYPTO_MD4=y
-CONFIG_CRYPTO_SHA1=y
-CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_CRYPTO_DEV_MARVELL_CESA=y
-CONFIG_PRINTK_TIME=y
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_FS=y
-# CONFIG_SCHED_DEBUG is not set
-CONFIG_DEBUG_USER=y
diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig
deleted file mode 100644
index e3cc8de7c1c2..000000000000
--- a/arch/arm/configs/mv78xx0_defconfig
+++ /dev/null
@@ -1,120 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_NO_HZ_IDLE=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_EXPERT=y
-CONFIG_KALLSYMS_ALL=y
-CONFIG_PROFILING=y
-CONFIG_ARCH_MULTI_V5=y
-# CONFIG_ARCH_MULTI_V6 is not set
-# CONFIG_ARCH_MULTI_V7 is not set
-CONFIG_ARCH_MV78XX0=y
-CONFIG_MACH_TERASTATION_WXL=y
-CONFIG_HIGHMEM=y
-CONFIG_ATAGS=y
-CONFIG_VFP=y
-CONFIG_KPROBES=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_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IPV6 is not set
-CONFIG_NET_PKTGEN=m
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_JEDECPROBE=y
-CONFIG_MTD_CFI_ADV_OPTIONS=y
-CONFIG_MTD_CFI_GEOMETRY=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_RAW_NAND=y
-CONFIG_MTD_NAND_ORION=y
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_SCSI_PROC_FS is not set
-CONFIG_BLK_DEV_SD=y
-CONFIG_BLK_DEV_SR=m
-CONFIG_CHR_DEV_SG=m
-# CONFIG_BLK_DEV_BSG is not set
-CONFIG_ATA=y
-CONFIG_SATA_MV=y
-CONFIG_NETDEVICES=y
-CONFIG_MII=y
-CONFIG_NET_PCI=y
-CONFIG_MV643XX_ETH=y
-# CONFIG_INPUT_MOUSEDEV is not set
-CONFIG_MARVELL_PHY=y
-CONFIG_INPUT_EVDEV=y
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-# CONFIG_VT is not set
-CONFIG_LEGACY_PTY_COUNT=16
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_PCI is not set
-CONFIG_SERIAL_8250_RUNTIME_UARTS=2
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_MV64XXX=y
-CONFIG_USB=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_TT_NEWSCHED=y
-CONFIG_USB_PRINTER=y
-CONFIG_USB_STORAGE=y
-CONFIG_USB_STORAGE_DATAFAB=y
-CONFIG_USB_STORAGE_FREECOM=y
-CONFIG_USB_STORAGE_SDDR09=y
-CONFIG_USB_STORAGE_SDDR55=y
-CONFIG_USB_STORAGE_JUMPSHOT=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_DS1307=y
-CONFIG_RTC_DRV_RS5C372=y
-CONFIG_RTC_DRV_M41T80=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT4_FS=y
-# CONFIG_EXT4_FS_XATTR is not set
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_UDF_FS=m
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_CRAMFS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_ROOT_NFS=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_2=y
-CONFIG_CRYPTO_CBC=m
-CONFIG_CRYPTO_ECB=m
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_FS=y
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_SLUB_DEBUG is not set
-CONFIG_SCHEDSTATS=y
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_LL=y
diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig
deleted file mode 100644
index f547120e223e..000000000000
--- a/arch/arm/mach-dove/Kconfig
+++ /dev/null
@@ -1,32 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-menuconfig ARCH_DOVE
-	bool "Marvell Dove (DEPRECATED)" if ARCH_MULTI_V7
-	depends on ATAGS
-	select CPU_PJ4
-	select GPIOLIB
-	select MVEBU_MBUS
-	select PINCTRL
-	select PINCTRL_DOVE
-	select PLAT_ORION_LEGACY
-	select PM_GENERIC_DOMAINS if PM
-	select PCI_QUIRKS if PCI
-	help
-	  Support for the Marvell Dove SoC 88AP510 using board files.
-
-	  Support for this machine will be removed in early 2027, unless
-	  there is a strong reason to keep it. Users should migrate to
-	  the devicetree-enabled version (CONFIG_MACH_DOVE) instead.
-
-if ARCH_DOVE
-
-config DOVE_LEGACY
-	bool
-
-config MACH_CM_A510
-	bool "CompuLab CM-A510 Board"
-	select DOVE_LEGACY
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  CompuLab CM-A510 Board.
-
-endif
diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile
deleted file mode 100644
index 0d31390be069..000000000000
--- a/arch/arm/mach-dove/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
-
-obj-y				+= common.o
-obj-$(CONFIG_DOVE_LEGACY)	+= irq.o mpp.o
-obj-$(CONFIG_PCI)		+= pcie.o
-obj-$(CONFIG_MACH_CM_A510)	+= cm-a510.o
diff --git a/arch/arm/mach-dove/bridge-regs.h b/arch/arm/mach-dove/bridge-regs.h
deleted file mode 100644
index 6fbc152d0950..000000000000
--- a/arch/arm/mach-dove/bridge-regs.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* Mbus-L to Mbus Bridge Registers */
-
-#ifndef __ASM_ARCH_BRIDGE_REGS_H
-#define __ASM_ARCH_BRIDGE_REGS_H
-
-#include "dove.h"
-
-#define CPU_CONFIG		(BRIDGE_VIRT_BASE + 0x0000)
-
-#define CPU_CONTROL		(BRIDGE_VIRT_BASE + 0x0104)
-#define  CPU_CTRL_PCIE0_LINK	0x00000001
-#define  CPU_RESET		0x00000002
-#define  CPU_CTRL_PCIE1_LINK	0x00000008
-
-#define RSTOUTn_MASK		(BRIDGE_VIRT_BASE + 0x0108)
-#define RSTOUTn_MASK_PHYS	(BRIDGE_PHYS_BASE + 0x0108)
-#define  SOFT_RESET_OUT_EN	0x00000004
-
-#define SYSTEM_SOFT_RESET	(BRIDGE_VIRT_BASE + 0x010c)
-#define  SOFT_RESET		0x00000001
-
-#define BRIDGE_CAUSE		(BRIDGE_VIRT_BASE + 0x0110)
-#define  BRIDGE_INT_TIMER1_CLR	(~0x0004)
-
-#define IRQ_VIRT_BASE		(BRIDGE_VIRT_BASE + 0x0200)
-#define IRQ_CAUSE_LOW_OFF	0x0000
-#define IRQ_MASK_LOW_OFF	0x0004
-#define FIQ_MASK_LOW_OFF	0x0008
-#define ENDPOINT_MASK_LOW_OFF	0x000c
-#define IRQ_CAUSE_HIGH_OFF	0x0010
-#define IRQ_MASK_HIGH_OFF	0x0014
-#define FIQ_MASK_HIGH_OFF	0x0018
-#define ENDPOINT_MASK_HIGH_OFF	0x001c
-#define PCIE_INTERRUPT_MASK_OFF	0x0020
-
-#define IRQ_MASK_LOW		(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)
-#define FIQ_MASK_LOW		(IRQ_VIRT_BASE + FIQ_MASK_LOW_OFF)
-#define ENDPOINT_MASK_LOW	(IRQ_VIRT_BASE + ENDPOINT_MASK_LOW_OFF)
-#define IRQ_MASK_HIGH		(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)
-#define FIQ_MASK_HIGH		(IRQ_VIRT_BASE + FIQ_MASK_HIGH_OFF)
-#define ENDPOINT_MASK_HIGH	(IRQ_VIRT_BASE + ENDPOINT_MASK_HIGH_OFF)
-#define PCIE_INTERRUPT_MASK	(IRQ_VIRT_BASE + PCIE_INTERRUPT_MASK_OFF)
-
-#define POWER_MANAGEMENT	(BRIDGE_VIRT_BASE + 0x011c)
-
-#define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE + 0x0300)
-#define TIMER_PHYS_BASE         (BRIDGE_PHYS_BASE + 0x0300)
-
-#endif
diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c
deleted file mode 100644
index beb532537c22..000000000000
--- a/arch/arm/mach-dove/cm-a510.c
+++ /dev/null
@@ -1,94 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-dove/cm-a510.c
- *
- * Copyright (C) 2010 CompuLab, Ltd.
- * Konstantin Sinyuk <kostyas@compulab.co.il>
- *
- * Based on Marvell DB-MV88AP510-BP Development Board Setup
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/ata_platform.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/spi/spi.h>
-#include <linux/spi/flash.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-
-#include "dove.h"
-#include "common.h"
-
-static struct mv643xx_eth_platform_data cm_a510_ge00_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR_DEFAULT,
-};
-
-static struct mv_sata_platform_data cm_a510_sata_data = {
-	.n_ports        = 1,
-};
-
-/*
- * SPI Devices:
- * SPI0: 1M Flash Winbond w25q32bv
- */
-static const struct flash_platform_data cm_a510_spi_flash_data = {
-	.type		= "w25q32bv",
-};
-
-static struct spi_board_info __initdata cm_a510_spi_flash_info[] = {
-	{
-		.modalias       = "m25p80",
-		.platform_data  = &cm_a510_spi_flash_data,
-		.irq            = -1,
-		.max_speed_hz   = 20000000,
-		.bus_num        = 0,
-		.chip_select    = 0,
-	},
-};
-
-static int __init cm_a510_pci_init(void)
-{
-	if (machine_is_cm_a510())
-		dove_pcie_init(1, 1);
-
-	return 0;
-}
-
-subsys_initcall(cm_a510_pci_init);
-
-/* Board Init */
-static void __init cm_a510_init(void)
-{
-	/*
-	 * Basic Dove setup. Needs to be called early.
-	 */
-	dove_init();
-
-	dove_ge00_init(&cm_a510_ge00_data);
-	dove_ehci0_init();
-	dove_ehci1_init();
-	dove_sata_init(&cm_a510_sata_data);
-	dove_sdio0_init();
-	dove_sdio1_init();
-	dove_spi0_init();
-	dove_spi1_init();
-	dove_uart0_init();
-	dove_uart1_init();
-	dove_i2c_init();
-	spi_register_board_info(cm_a510_spi_flash_info,
-				ARRAY_SIZE(cm_a510_spi_flash_info));
-}
-
-MACHINE_START(CM_A510, "Compulab CM-A510 Board")
-	.atag_offset	= 0x100,
-	.nr_irqs	= DOVE_NR_IRQS,
-	.init_machine	= cm_a510_init,
-	.map_io		= dove_map_io,
-	.init_early	= dove_init_early,
-	.init_irq	= dove_init_irq,
-	.init_time	= dove_timer_init,
-	.restart	= dove_restart,
-MACHINE_END
diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
deleted file mode 100644
index 35e978514591..000000000000
--- a/arch/arm/mach-dove/common.c
+++ /dev/null
@@ -1,449 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-dove/common.c
- *
- * Core functions for Marvell Dove 88AP510 System On Chip
- */
-
-#include <linux/clk-provider.h>
-#include <linux/dma-mapping.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/platform_data/dma-mv_xor.h>
-#include <linux/platform_data/usb-ehci-orion.h>
-#include <linux/platform_device.h>
-#include <linux/soc/dove/pmu.h>
-#include <asm/hardware/cache-tauros2.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include <asm/mach/time.h>
-#include <plat/common.h>
-#include <plat/irq.h>
-#include <plat/time.h>
-#include "bridge-regs.h"
-#include "pm.h"
-#include "common.h"
-
-/* These can go away once Dove uses the mvebu-mbus DT binding */
-#define DOVE_MBUS_PCIE0_MEM_TARGET    0x4
-#define DOVE_MBUS_PCIE0_MEM_ATTR      0xe8
-#define DOVE_MBUS_PCIE0_IO_TARGET     0x4
-#define DOVE_MBUS_PCIE0_IO_ATTR       0xe0
-#define DOVE_MBUS_PCIE1_MEM_TARGET    0x8
-#define DOVE_MBUS_PCIE1_MEM_ATTR      0xe8
-#define DOVE_MBUS_PCIE1_IO_TARGET     0x8
-#define DOVE_MBUS_PCIE1_IO_ATTR       0xe0
-#define DOVE_MBUS_CESA_TARGET         0x3
-#define DOVE_MBUS_CESA_ATTR           0x1
-#define DOVE_MBUS_BOOTROM_TARGET      0x1
-#define DOVE_MBUS_BOOTROM_ATTR        0xfd
-#define DOVE_MBUS_SCRATCHPAD_TARGET   0xd
-#define DOVE_MBUS_SCRATCHPAD_ATTR     0x0
-
-/*****************************************************************************
- * I/O Address Mapping
- ****************************************************************************/
-static struct map_desc __maybe_unused dove_io_desc[] __initdata = {
-	{
-		.virtual	= (unsigned long) DOVE_SB_REGS_VIRT_BASE,
-		.pfn		= __phys_to_pfn(DOVE_SB_REGS_PHYS_BASE),
-		.length		= DOVE_SB_REGS_SIZE,
-		.type		= MT_DEVICE,
-	}, {
-		.virtual	= (unsigned long) DOVE_NB_REGS_VIRT_BASE,
-		.pfn		= __phys_to_pfn(DOVE_NB_REGS_PHYS_BASE),
-		.length		= DOVE_NB_REGS_SIZE,
-		.type		= MT_DEVICE,
-	},
-};
-
-void __init dove_map_io(void)
-{
-	iotable_init(dove_io_desc, ARRAY_SIZE(dove_io_desc));
-}
-
-/*****************************************************************************
- * CLK tree
- ****************************************************************************/
-static int dove_tclk;
-
-static DEFINE_SPINLOCK(gating_lock);
-static struct clk *tclk;
-
-static struct clk __init *dove_register_gate(const char *name,
-					     const char *parent, u8 bit_idx)
-{
-	return clk_register_gate(NULL, name, parent, 0,
-				 (void __iomem *)CLOCK_GATING_CONTROL,
-				 bit_idx, 0, &gating_lock);
-}
-
-static void __init dove_clk_init(void)
-{
-	struct clk *usb0, *usb1, *sata, *pex0, *pex1, *sdio0, *sdio1;
-	struct clk *nand, *camera, *i2s0, *i2s1, *crypto, *ac97, *pdma;
-	struct clk *xor0, *xor1, *ge;
-
-	tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 0, dove_tclk);
-
-	usb0 = dove_register_gate("usb0", "tclk", CLOCK_GATING_BIT_USB0);
-	usb1 = dove_register_gate("usb1", "tclk", CLOCK_GATING_BIT_USB1);
-	sata = dove_register_gate("sata", "tclk", CLOCK_GATING_BIT_SATA);
-	pex0 = dove_register_gate("pex0", "tclk", CLOCK_GATING_BIT_PCIE0);
-	pex1 = dove_register_gate("pex1", "tclk", CLOCK_GATING_BIT_PCIE1);
-	sdio0 = dove_register_gate("sdio0", "tclk", CLOCK_GATING_BIT_SDIO0);
-	sdio1 = dove_register_gate("sdio1", "tclk", CLOCK_GATING_BIT_SDIO1);
-	nand = dove_register_gate("nand", "tclk", CLOCK_GATING_BIT_NAND);
-	camera = dove_register_gate("camera", "tclk", CLOCK_GATING_BIT_CAMERA);
-	i2s0 = dove_register_gate("i2s0", "tclk", CLOCK_GATING_BIT_I2S0);
-	i2s1 = dove_register_gate("i2s1", "tclk", CLOCK_GATING_BIT_I2S1);
-	crypto = dove_register_gate("crypto", "tclk", CLOCK_GATING_BIT_CRYPTO);
-	ac97 = dove_register_gate("ac97", "tclk", CLOCK_GATING_BIT_AC97);
-	pdma = dove_register_gate("pdma", "tclk", CLOCK_GATING_BIT_PDMA);
-	xor0 = dove_register_gate("xor0", "tclk", CLOCK_GATING_BIT_XOR0);
-	xor1 = dove_register_gate("xor1", "tclk", CLOCK_GATING_BIT_XOR1);
-	dove_register_gate("gephy", "tclk", CLOCK_GATING_BIT_GIGA_PHY);
-	ge = dove_register_gate("ge", "gephy", CLOCK_GATING_BIT_GBE);
-
-	orion_clkdev_add(NULL, "orion_spi.0", tclk);
-	orion_clkdev_add(NULL, "orion_spi.1", tclk);
-	orion_clkdev_add(NULL, "orion_wdt", tclk);
-	orion_clkdev_add(NULL, "mv64xxx_i2c.0", tclk);
-
-	orion_clkdev_add(NULL, "orion-ehci.0", usb0);
-	orion_clkdev_add(NULL, "orion-ehci.1", usb1);
-	orion_clkdev_add(NULL, "mv643xx_eth_port.0", ge);
-	orion_clkdev_add(NULL, "sata_mv.0", sata);
-	orion_clkdev_add("0", "pcie", pex0);
-	orion_clkdev_add("1", "pcie", pex1);
-	orion_clkdev_add(NULL, "sdhci-dove.0", sdio0);
-	orion_clkdev_add(NULL, "sdhci-dove.1", sdio1);
-	orion_clkdev_add(NULL, "orion_nand", nand);
-	orion_clkdev_add(NULL, "cafe1000-ccic.0", camera);
-	orion_clkdev_add(NULL, "mvebu-audio.0", i2s0);
-	orion_clkdev_add(NULL, "mvebu-audio.1", i2s1);
-	orion_clkdev_add(NULL, "mv_crypto", crypto);
-	orion_clkdev_add(NULL, "dove-ac97", ac97);
-	orion_clkdev_add(NULL, "dove-pdma", pdma);
-	orion_clkdev_add(NULL, MV_XOR_NAME ".0", xor0);
-	orion_clkdev_add(NULL, MV_XOR_NAME ".1", xor1);
-}
-
-/*****************************************************************************
- * EHCI0
- ****************************************************************************/
-void __init dove_ehci0_init(void)
-{
-	orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0, EHCI_PHY_NA);
-}
-
-/*****************************************************************************
- * EHCI1
- ****************************************************************************/
-void __init dove_ehci1_init(void)
-{
-	orion_ehci_1_init(DOVE_USB1_PHYS_BASE, IRQ_DOVE_USB1);
-}
-
-/*****************************************************************************
- * GE00
- ****************************************************************************/
-void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
-{
-	orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
-			IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR,
-			1600);
-}
-
-/*****************************************************************************
- * SoC RTC
- ****************************************************************************/
-static void __init dove_rtc_init(void)
-{
-	orion_rtc_init(DOVE_RTC_PHYS_BASE, IRQ_DOVE_RTC);
-}
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-void __init dove_sata_init(struct mv_sata_platform_data *sata_data)
-{
-	orion_sata_init(sata_data, DOVE_SATA_PHYS_BASE, IRQ_DOVE_SATA);
-
-}
-
-/*****************************************************************************
- * UART0
- ****************************************************************************/
-void __init dove_uart0_init(void)
-{
-	orion_uart0_init(DOVE_UART0_VIRT_BASE, DOVE_UART0_PHYS_BASE,
-			 IRQ_DOVE_UART_0, tclk);
-}
-
-/*****************************************************************************
- * UART1
- ****************************************************************************/
-void __init dove_uart1_init(void)
-{
-	orion_uart1_init(DOVE_UART1_VIRT_BASE, DOVE_UART1_PHYS_BASE,
-			 IRQ_DOVE_UART_1, tclk);
-}
-
-/*****************************************************************************
- * UART2
- ****************************************************************************/
-void __init dove_uart2_init(void)
-{
-	orion_uart2_init(DOVE_UART2_VIRT_BASE, DOVE_UART2_PHYS_BASE,
-			 IRQ_DOVE_UART_2, tclk);
-}
-
-/*****************************************************************************
- * UART3
- ****************************************************************************/
-void __init dove_uart3_init(void)
-{
-	orion_uart3_init(DOVE_UART3_VIRT_BASE, DOVE_UART3_PHYS_BASE,
-			 IRQ_DOVE_UART_3, tclk);
-}
-
-/*****************************************************************************
- * SPI
- ****************************************************************************/
-void __init dove_spi0_init(void)
-{
-	orion_spi_init(DOVE_SPI0_PHYS_BASE);
-}
-
-void __init dove_spi1_init(void)
-{
-	orion_spi_1_init(DOVE_SPI1_PHYS_BASE);
-}
-
-/*****************************************************************************
- * I2C
- ****************************************************************************/
-void __init dove_i2c_init(void)
-{
-	orion_i2c_init(DOVE_I2C_PHYS_BASE, IRQ_DOVE_I2C, 10);
-}
-
-/*****************************************************************************
- * Time handling
- ****************************************************************************/
-void __init dove_init_early(void)
-{
-	orion_time_set_base(TIMER_VIRT_BASE);
-	mvebu_mbus_init("marvell,dove-mbus",
-			BRIDGE_WINS_BASE, BRIDGE_WINS_SZ,
-			DOVE_MC_WINS_BASE, DOVE_MC_WINS_SZ);
-}
-
-static int __init dove_find_tclk(void)
-{
-	return 166666667;
-}
-
-void __init dove_timer_init(void)
-{
-	dove_tclk = dove_find_tclk();
-	orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
-			IRQ_DOVE_BRIDGE, dove_tclk);
-}
-
-/*****************************************************************************
- * XOR 0
- ****************************************************************************/
-static void __init dove_xor0_init(void)
-{
-	orion_xor0_init(DOVE_XOR0_PHYS_BASE, DOVE_XOR0_HIGH_PHYS_BASE,
-			IRQ_DOVE_XOR_00, IRQ_DOVE_XOR_01);
-}
-
-/*****************************************************************************
- * XOR 1
- ****************************************************************************/
-static void __init dove_xor1_init(void)
-{
-	orion_xor1_init(DOVE_XOR1_PHYS_BASE, DOVE_XOR1_HIGH_PHYS_BASE,
-			IRQ_DOVE_XOR_10, IRQ_DOVE_XOR_11);
-}
-
-/*****************************************************************************
- * SDIO
- ****************************************************************************/
-static u64 sdio_dmamask = DMA_BIT_MASK(32);
-
-static struct resource dove_sdio0_resources[] = {
-	{
-		.start	= DOVE_SDIO0_PHYS_BASE,
-		.end	= DOVE_SDIO0_PHYS_BASE + 0xff,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_DOVE_SDIO0,
-		.end	= IRQ_DOVE_SDIO0,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device dove_sdio0 = {
-	.name		= "sdhci-dove",
-	.id		= 0,
-	.dev		= {
-		.dma_mask		= &sdio_dmamask,
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-	.resource	= dove_sdio0_resources,
-	.num_resources	= ARRAY_SIZE(dove_sdio0_resources),
-};
-
-void __init dove_sdio0_init(void)
-{
-	platform_device_register(&dove_sdio0);
-}
-
-static struct resource dove_sdio1_resources[] = {
-	{
-		.start	= DOVE_SDIO1_PHYS_BASE,
-		.end	= DOVE_SDIO1_PHYS_BASE + 0xff,
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.start	= IRQ_DOVE_SDIO1,
-		.end	= IRQ_DOVE_SDIO1,
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device dove_sdio1 = {
-	.name		= "sdhci-dove",
-	.id		= 1,
-	.dev		= {
-		.dma_mask		= &sdio_dmamask,
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-	.resource	= dove_sdio1_resources,
-	.num_resources	= ARRAY_SIZE(dove_sdio1_resources),
-};
-
-void __init dove_sdio1_init(void)
-{
-	platform_device_register(&dove_sdio1);
-}
-
-void __init dove_setup_cpu_wins(void)
-{
-	/*
-	 * The PCIe windows will no longer be statically allocated
-	 * here once Dove is migrated to the pci-mvebu driver. The
-	 * non-PCIe windows will no longer be created here once Dove
-	 * fully moves to DT.
-	 */
-	mvebu_mbus_add_window_remap_by_id(DOVE_MBUS_PCIE0_IO_TARGET,
-					  DOVE_MBUS_PCIE0_IO_ATTR,
-					  DOVE_PCIE0_IO_PHYS_BASE,
-					  DOVE_PCIE0_IO_SIZE,
-					  DOVE_PCIE0_IO_BUS_BASE);
-	mvebu_mbus_add_window_remap_by_id(DOVE_MBUS_PCIE1_IO_TARGET,
-					  DOVE_MBUS_PCIE1_IO_ATTR,
-					  DOVE_PCIE1_IO_PHYS_BASE,
-					  DOVE_PCIE1_IO_SIZE,
-					  DOVE_PCIE1_IO_BUS_BASE);
-	mvebu_mbus_add_window_by_id(DOVE_MBUS_PCIE0_MEM_TARGET,
-				    DOVE_MBUS_PCIE0_MEM_ATTR,
-				    DOVE_PCIE0_MEM_PHYS_BASE,
-				    DOVE_PCIE0_MEM_SIZE);
-	mvebu_mbus_add_window_by_id(DOVE_MBUS_PCIE1_MEM_TARGET,
-				    DOVE_MBUS_PCIE1_MEM_ATTR,
-				    DOVE_PCIE1_MEM_PHYS_BASE,
-				    DOVE_PCIE1_MEM_SIZE);
-	mvebu_mbus_add_window_by_id(DOVE_MBUS_CESA_TARGET,
-				    DOVE_MBUS_CESA_ATTR,
-				    DOVE_CESA_PHYS_BASE,
-				    DOVE_CESA_SIZE);
-	mvebu_mbus_add_window_by_id(DOVE_MBUS_BOOTROM_TARGET,
-				    DOVE_MBUS_BOOTROM_ATTR,
-				    DOVE_BOOTROM_PHYS_BASE,
-				    DOVE_BOOTROM_SIZE);
-	mvebu_mbus_add_window_by_id(DOVE_MBUS_SCRATCHPAD_TARGET,
-				    DOVE_MBUS_SCRATCHPAD_ATTR,
-				    DOVE_SCRATCHPAD_PHYS_BASE,
-				    DOVE_SCRATCHPAD_SIZE);
-}
-
-static struct resource orion_wdt_resource[] = {
-		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
-		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
-};
-
-static struct platform_device orion_wdt_device = {
-	.name		= "orion_wdt",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
-	.resource	= orion_wdt_resource,
-};
-
-static void __init __maybe_unused orion_wdt_init(void)
-{
-	platform_device_register(&orion_wdt_device);
-}
-
-static const struct dove_pmu_domain_initdata pmu_domains[] __initconst = {
-	{
-		.pwr_mask = PMU_PWR_VPU_PWR_DWN_MASK,
-		.rst_mask = PMU_SW_RST_VIDEO_MASK,
-		.iso_mask = PMU_ISO_VIDEO_MASK,
-		.name = "vpu-domain",
-	}, {
-		.pwr_mask = PMU_PWR_GPU_PWR_DWN_MASK,
-		.rst_mask = PMU_SW_RST_GPU_MASK,
-		.iso_mask = PMU_ISO_GPU_MASK,
-		.name = "gpu-domain",
-	}, {
-		/* sentinel */
-	},
-};
-
-static const struct dove_pmu_initdata pmu_data __initconst = {
-	.pmc_base = DOVE_PMU_VIRT_BASE,
-	.pmu_base = DOVE_PMU_VIRT_BASE + 0x8000,
-	.irq = IRQ_DOVE_PMU,
-	.irq_domain_start = IRQ_DOVE_PMU_START,
-	.domains = pmu_domains,
-};
-
-void __init dove_init(void)
-{
-	pr_info("Dove 88AP510 SoC, TCLK = %d MHz.\n",
-		(dove_tclk + 499999) / 1000000);
-
-#ifdef CONFIG_CACHE_TAUROS2
-	tauros2_init(0);
-#endif
-	dove_setup_cpu_wins();
-
-	/* Setup root of clk tree */
-	dove_clk_init();
-
-	/* internal devices that every board has */
-	dove_init_pmu_legacy(&pmu_data);
-	dove_rtc_init();
-	dove_xor0_init();
-	dove_xor1_init();
-}
-
-void dove_restart(enum reboot_mode mode, const char *cmd)
-{
-	/*
-	 * Enable soft reset to assert RSTOUTn.
-	 */
-	writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
-
-	/*
-	 * Assert soft reset.
-	 */
-	writel(SOFT_RESET, SYSTEM_SOFT_RESET);
-
-	while (1)
-		;
-}
diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h
deleted file mode 100644
index 57ebc413d68c..000000000000
--- a/arch/arm/mach-dove/common.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/mach-dove/common.h
- *
- * Core functions for Marvell Dove 88AP510 System On Chip
- */
-
-#ifndef __ARCH_DOVE_COMMON_H
-#define __ARCH_DOVE_COMMON_H
-
-#include <linux/reboot.h>
-
-struct mv643xx_eth_platform_data;
-struct mv_sata_platform_data;
-
-extern void dove_timer_init(void);
-
-/*
- * Basic Dove init functions used early by machine-setup.
- */
-void dove_map_io(void);
-void dove_init(void);
-void dove_init_early(void);
-void dove_init_irq(void);
-void dove_setup_cpu_wins(void);
-void dove_ge00_init(struct mv643xx_eth_platform_data *eth_data);
-void dove_sata_init(struct mv_sata_platform_data *sata_data);
-#ifdef CONFIG_PCI
-void dove_pcie_init(int init_port0, int init_port1);
-#else
-static inline void dove_pcie_init(int init_port0, int init_port1) { }
-#endif
-void dove_ehci0_init(void);
-void dove_ehci1_init(void);
-void dove_uart0_init(void);
-void dove_uart1_init(void);
-void dove_uart2_init(void);
-void dove_uart3_init(void);
-void dove_spi0_init(void);
-void dove_spi1_init(void);
-void dove_i2c_init(void);
-void dove_sdio0_init(void);
-void dove_sdio1_init(void);
-void dove_restart(enum reboot_mode, const char *);
-
-#endif
diff --git a/arch/arm/mach-dove/dove.h b/arch/arm/mach-dove/dove.h
deleted file mode 100644
index e5054e3b0b78..000000000000
--- a/arch/arm/mach-dove/dove.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* Generic definitions for Marvell Dove 88AP510 SoC */
-
-#ifndef __ASM_ARCH_DOVE_H
-#define __ASM_ARCH_DOVE_H
-
-#include "irqs.h"
-
-/*
- * Marvell Dove address maps.
- *
- * phys		virt		size
- * c8000000	fdb00000	1M	Cryptographic SRAM
- * e0000000	@runtime	128M	PCIe-0 Memory space
- * e8000000	@runtime	128M	PCIe-1 Memory space
- * f1000000	fec00000	1M	on-chip south-bridge registers
- * f1800000	fe400000	8M	on-chip north-bridge registers
- * f2000000	fee00000	1M	PCIe-0 I/O space
- * f2100000	fef00000	1M	PCIe-1 I/O space
- */
-
-#define DOVE_CESA_PHYS_BASE		0xc8000000
-#define DOVE_CESA_VIRT_BASE		IOMEM(0xfdb00000)
-#define DOVE_CESA_SIZE			SZ_1M
-
-#define DOVE_PCIE0_MEM_PHYS_BASE	0xe0000000
-#define DOVE_PCIE0_MEM_SIZE		SZ_128M
-
-#define DOVE_PCIE1_MEM_PHYS_BASE	0xe8000000
-#define DOVE_PCIE1_MEM_SIZE		SZ_128M
-
-#define DOVE_BOOTROM_PHYS_BASE		0xf8000000
-#define DOVE_BOOTROM_SIZE		SZ_128M
-
-#define DOVE_SCRATCHPAD_PHYS_BASE	0xf0000000
-#define DOVE_SCRATCHPAD_VIRT_BASE	IOMEM(0xfdd00000)
-#define DOVE_SCRATCHPAD_SIZE		SZ_1M
-
-#define DOVE_SB_REGS_PHYS_BASE		0xf1000000
-#define DOVE_SB_REGS_VIRT_BASE		IOMEM(0xfec00000)
-#define DOVE_SB_REGS_SIZE		SZ_1M
-
-#define DOVE_NB_REGS_PHYS_BASE		0xf1800000
-#define DOVE_NB_REGS_VIRT_BASE		IOMEM(0xfe400000)
-#define DOVE_NB_REGS_SIZE		SZ_8M
-
-#define DOVE_PCIE0_IO_PHYS_BASE		0xf2000000
-#define DOVE_PCIE0_IO_BUS_BASE		0x00000000
-#define DOVE_PCIE0_IO_SIZE		SZ_64K
-
-#define DOVE_PCIE1_IO_PHYS_BASE		0xf2100000
-#define DOVE_PCIE1_IO_BUS_BASE		0x00010000
-#define DOVE_PCIE1_IO_SIZE		SZ_64K
-
-/*
- * Dove Core Registers Map
- */
-
-/* SPI, I2C, UART */
-#define DOVE_I2C_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x11000)
-#define DOVE_UART0_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x12000)
-#define DOVE_UART0_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x12000)
-#define DOVE_UART1_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x12100)
-#define DOVE_UART1_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x12100)
-#define DOVE_UART2_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x12200)
-#define DOVE_UART2_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x12200)
-#define DOVE_UART3_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x12300)
-#define DOVE_UART3_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x12300)
-#define DOVE_SPI0_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x10600)
-#define DOVE_SPI1_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x14600)
-
-/* North-South Bridge */
-#define BRIDGE_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x20000)
-#define BRIDGE_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x20000)
-#define  BRIDGE_WINS_BASE       (BRIDGE_PHYS_BASE)
-#define  BRIDGE_WINS_SZ         (0x80)
-
-/* Cryptographic Engine */
-#define DOVE_CRYPT_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x30000)
-
-/* PCIe 0 */
-#define DOVE_PCIE0_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x40000)
-
-/* USB */
-#define DOVE_USB0_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x50000)
-#define DOVE_USB1_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x51000)
-
-/* XOR 0 Engine */
-#define DOVE_XOR0_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x60800)
-#define DOVE_XOR0_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x60800)
-#define DOVE_XOR0_HIGH_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x60A00)
-#define DOVE_XOR0_HIGH_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x60A00)
-
-/* XOR 1 Engine */
-#define DOVE_XOR1_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x60900)
-#define DOVE_XOR1_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x60900)
-#define DOVE_XOR1_HIGH_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x60B00)
-#define DOVE_XOR1_HIGH_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x60B00)
-
-/* Gigabit Ethernet */
-#define DOVE_GE00_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x70000)
-
-/* PCIe 1 */
-#define DOVE_PCIE1_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0x80000)
-
-/* CAFE */
-#define DOVE_SDIO0_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x92000)
-#define DOVE_SDIO1_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x90000)
-#define DOVE_CAM_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x94000)
-#define DOVE_CAFE_WIN_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0x98000)
-
-/* SATA */
-#define DOVE_SATA_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xa0000)
-
-/* I2S/SPDIF */
-#define DOVE_AUD0_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xb0000)
-#define DOVE_AUD1_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xb4000)
-
-/* NAND Flash Controller */
-#define DOVE_NFC_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xc0000)
-
-/* MPP, GPIO, Reset Sampling */
-#define DOVE_MPP_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xd0200)
-#define DOVE_PMU_MPP_GENERAL_CTRL (DOVE_MPP_VIRT_BASE + 0x10)
-#define DOVE_RESET_SAMPLE_LO	(DOVE_MPP_VIRT_BASE + 0x014)
-#define DOVE_RESET_SAMPLE_HI	(DOVE_MPP_VIRT_BASE + 0x018)
-#define DOVE_GPIO_LO_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xd0400)
-#define DOVE_GPIO_HI_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xd0420)
-#define DOVE_GPIO2_VIRT_BASE    (DOVE_SB_REGS_VIRT_BASE + 0xe8400)
-#define DOVE_MPP_GENERAL_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xe803c)
-#define  DOVE_AU1_SPDIFO_GPIO_EN	(1 << 1)
-#define  DOVE_NAND_GPIO_EN		(1 << 0)
-#define DOVE_MPP_CTRL4_VIRT_BASE	(DOVE_GPIO_LO_VIRT_BASE + 0x40)
-#define  DOVE_SPI_GPIO_SEL		(1 << 5)
-#define  DOVE_UART1_GPIO_SEL		(1 << 4)
-#define  DOVE_AU1_GPIO_SEL		(1 << 3)
-#define  DOVE_CAM_GPIO_SEL		(1 << 2)
-#define  DOVE_SD1_GPIO_SEL		(1 << 1)
-#define  DOVE_SD0_GPIO_SEL		(1 << 0)
-
-/* Power Management */
-#define DOVE_PMU_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xd0000)
-#define DOVE_PMU_SIG_CTRL	(DOVE_PMU_VIRT_BASE + 0x802c)
-
-/* Real Time Clock */
-#define DOVE_RTC_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xd8500)
-
-/* AC97 */
-#define DOVE_AC97_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xe0000)
-#define DOVE_AC97_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xe0000)
-
-/* Peripheral DMA */
-#define DOVE_PDMA_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xe4000)
-#define DOVE_PDMA_VIRT_BASE	(DOVE_SB_REGS_VIRT_BASE + 0xe4000)
-
-#define DOVE_GLOBAL_CONFIG_1	(DOVE_SB_REGS_VIRT_BASE + 0xe802C)
-#define  DOVE_TWSI_ENABLE_OPTION1	(1 << 7)
-#define DOVE_GLOBAL_CONFIG_2	(DOVE_SB_REGS_VIRT_BASE + 0xe8030)
-#define  DOVE_TWSI_ENABLE_OPTION2	(1 << 20)
-#define  DOVE_TWSI_ENABLE_OPTION3	(1 << 21)
-#define  DOVE_TWSI_OPTION3_GPIO		(1 << 22)
-#define DOVE_SSP_PHYS_BASE	(DOVE_SB_REGS_PHYS_BASE + 0xec000)
-#define DOVE_SSP_CTRL_STATUS_1	(DOVE_SB_REGS_VIRT_BASE + 0xe8034)
-#define  DOVE_SSP_ON_AU1		(1 << 0)
-#define  DOVE_SSP_CLOCK_ENABLE		(1 << 1)
-#define  DOVE_SSP_BPB_CLOCK_SRC_SSP	(1 << 11)
-/* Memory Controller */
-#define DOVE_MC_PHYS_BASE       (DOVE_NB_REGS_PHYS_BASE + 0x00000)
-#define  DOVE_MC_WINS_BASE      (DOVE_MC_PHYS_BASE + 0x100)
-#define  DOVE_MC_WINS_SZ        (0x8)
-#define DOVE_MC_VIRT_BASE	(DOVE_NB_REGS_VIRT_BASE + 0x00000)
-
-/* LCD Controller */
-#define DOVE_LCD_PHYS_BASE	(DOVE_NB_REGS_PHYS_BASE + 0x10000)
-#define DOVE_LCD1_PHYS_BASE	(DOVE_NB_REGS_PHYS_BASE + 0x20000)
-#define DOVE_LCD2_PHYS_BASE	(DOVE_NB_REGS_PHYS_BASE + 0x10000)
-#define DOVE_LCD_DCON_PHYS_BASE	(DOVE_NB_REGS_PHYS_BASE + 0x30000)
-
-/* Graphic Engine */
-#define DOVE_GPU_PHYS_BASE	(DOVE_NB_REGS_PHYS_BASE + 0x40000)
-
-/* Video Engine */
-#define DOVE_VPU_PHYS_BASE	(DOVE_NB_REGS_PHYS_BASE + 0x400000)
-
-#endif
diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
deleted file mode 100644
index 027a8f87bc2e..000000000000
--- a/arch/arm/mach-dove/irq.c
+++ /dev/null
@@ -1,81 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-dove/irq.c
- *
- * Dove IRQ handling.
- */
-#include <linux/init.h>
-#include <linux/irq.h>
-#include <linux/io.h>
-#include <asm/exception.h>
-
-#include <plat/irq.h>
-#include <plat/orion-gpio.h>
-
-#include "pm.h"
-#include "bridge-regs.h"
-#include "common.h"
-
-static int __initdata gpio0_irqs[4] = {
-	IRQ_DOVE_GPIO_0_7,
-	IRQ_DOVE_GPIO_8_15,
-	IRQ_DOVE_GPIO_16_23,
-	IRQ_DOVE_GPIO_24_31,
-};
-
-static int __initdata gpio1_irqs[4] = {
-	IRQ_DOVE_HIGH_GPIO,
-	0,
-	0,
-	0,
-};
-
-static int __initdata gpio2_irqs[4] = {
-	0,
-	0,
-	0,
-	0,
-};
-
-static void __iomem *dove_irq_base = IRQ_VIRT_BASE;
-
-static asmlinkage void
-__exception_irq_entry dove_legacy_handle_irq(struct pt_regs *regs)
-{
-	u32 stat;
-
-	stat = readl_relaxed(dove_irq_base + IRQ_CAUSE_LOW_OFF);
-	stat &= readl_relaxed(dove_irq_base + IRQ_MASK_LOW_OFF);
-	if (stat) {
-		unsigned int hwirq = 1 + __fls(stat);
-		handle_IRQ(hwirq, regs);
-		return;
-	}
-	stat = readl_relaxed(dove_irq_base + IRQ_CAUSE_HIGH_OFF);
-	stat &= readl_relaxed(dove_irq_base + IRQ_MASK_HIGH_OFF);
-	if (stat) {
-		unsigned int hwirq = 33 + __fls(stat);
-		handle_IRQ(hwirq, regs);
-		return;
-	}
-}
-
-void __init dove_init_irq(void)
-{
-	orion_irq_init(1, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
-	orion_irq_init(33, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
-
-	set_handle_irq(dove_legacy_handle_irq);
-
-	/*
-	 * Initialize gpiolib for GPIOs 0-71.
-	 */
-	orion_gpio_init(0, 32, DOVE_GPIO_LO_VIRT_BASE, 0,
-			IRQ_DOVE_GPIO_START, gpio0_irqs);
-
-	orion_gpio_init(32, 32, DOVE_GPIO_HI_VIRT_BASE, 0,
-			IRQ_DOVE_GPIO_START + 32, gpio1_irqs);
-
-	orion_gpio_init(64, 8, DOVE_GPIO2_VIRT_BASE, 0,
-			IRQ_DOVE_GPIO_START + 64, gpio2_irqs);
-}
diff --git a/arch/arm/mach-dove/irqs.h b/arch/arm/mach-dove/irqs.h
deleted file mode 100644
index 5467098c7042..000000000000
--- a/arch/arm/mach-dove/irqs.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* IRQ definitions for Marvell Dove 88AP510 SoC */
-
-#ifndef __ASM_ARCH_IRQS_H
-#define __ASM_ARCH_IRQS_H
-
-/*
- * Dove Low Interrupt Controller
- */
-#define IRQ_DOVE_BRIDGE		(1 + 0)
-#define IRQ_DOVE_H2C		(1 + 1)
-#define IRQ_DOVE_C2H		(1 + 2)
-#define IRQ_DOVE_NAND		(1 + 3)
-#define IRQ_DOVE_PDMA		(1 + 4)
-#define IRQ_DOVE_SPI1		(1 + 5)
-#define IRQ_DOVE_SPI0		(1 + 6)
-#define IRQ_DOVE_UART_0		(1 + 7)
-#define IRQ_DOVE_UART_1		(1 + 8)
-#define IRQ_DOVE_UART_2		(1 + 9)
-#define IRQ_DOVE_UART_3		(1 + 10)
-#define IRQ_DOVE_I2C		(1 + 11)
-#define IRQ_DOVE_GPIO_0_7	(1 + 12)
-#define IRQ_DOVE_GPIO_8_15	(1 + 13)
-#define IRQ_DOVE_GPIO_16_23	(1 + 14)
-#define IRQ_DOVE_PCIE0_ERR	(1 + 15)
-#define IRQ_DOVE_PCIE0		(1 + 16)
-#define IRQ_DOVE_PCIE1_ERR	(1 + 17)
-#define IRQ_DOVE_PCIE1		(1 + 18)
-#define IRQ_DOVE_I2S0		(1 + 19)
-#define IRQ_DOVE_I2S0_ERR	(1 + 20)
-#define IRQ_DOVE_I2S1		(1 + 21)
-#define IRQ_DOVE_I2S1_ERR	(1 + 22)
-#define IRQ_DOVE_USB_ERR	(1 + 23)
-#define IRQ_DOVE_USB0		(1 + 24)
-#define IRQ_DOVE_USB1		(1 + 25)
-#define IRQ_DOVE_GE00_RX	(1 + 26)
-#define IRQ_DOVE_GE00_TX	(1 + 27)
-#define IRQ_DOVE_GE00_MISC	(1 + 28)
-#define IRQ_DOVE_GE00_SUM	(1 + 29)
-#define IRQ_DOVE_GE00_ERR	(1 + 30)
-#define IRQ_DOVE_CRYPTO		(1 + 31)
-
-/*
- * Dove High Interrupt Controller
- */
-#define IRQ_DOVE_AC97		(1 + 32)
-#define IRQ_DOVE_PMU		(1 + 33)
-#define IRQ_DOVE_CAM		(1 + 34)
-#define IRQ_DOVE_SDIO0		(1 + 35)
-#define IRQ_DOVE_SDIO1		(1 + 36)
-#define IRQ_DOVE_SDIO0_WAKEUP	(1 + 37)
-#define IRQ_DOVE_SDIO1_WAKEUP	(1 + 38)
-#define IRQ_DOVE_XOR_00		(1 + 39)
-#define IRQ_DOVE_XOR_01		(1 + 40)
-#define IRQ_DOVE_XOR0_ERR	(1 + 41)
-#define IRQ_DOVE_XOR_10		(1 + 42)
-#define IRQ_DOVE_XOR_11		(1 + 43)
-#define IRQ_DOVE_XOR1_ERR	(1 + 44)
-#define IRQ_DOVE_LCD_DCON	(1 + 45)
-#define IRQ_DOVE_LCD1		(1 + 46)
-#define IRQ_DOVE_LCD0		(1 + 47)
-#define IRQ_DOVE_GPU		(1 + 48)
-#define IRQ_DOVE_PERFORM_MNTR	(1 + 49)
-#define IRQ_DOVE_VPRO_DMA1	(1 + 51)
-#define IRQ_DOVE_SSP_TIMER	(1 + 54)
-#define IRQ_DOVE_SSP		(1 + 55)
-#define IRQ_DOVE_MC_L2_ERR	(1 + 56)
-#define IRQ_DOVE_CRYPTO_ERR	(1 + 59)
-#define IRQ_DOVE_GPIO_24_31	(1 + 60)
-#define IRQ_DOVE_HIGH_GPIO	(1 + 61)
-#define IRQ_DOVE_SATA		(1 + 62)
-
-/*
- * DOVE General Purpose Pins
- */
-#define IRQ_DOVE_GPIO_START	65
-#define NR_GPIO_IRQS		64
-
-/*
- * PMU interrupts
- */
-#define IRQ_DOVE_PMU_START	(IRQ_DOVE_GPIO_START + NR_GPIO_IRQS)
-#define NR_PMU_IRQS		7
-#define IRQ_DOVE_RTC		(IRQ_DOVE_PMU_START + 5)
-
-#define DOVE_NR_IRQS		(IRQ_DOVE_PMU_START + NR_PMU_IRQS)
-
-
-#endif
diff --git a/arch/arm/mach-dove/mpp.c b/arch/arm/mach-dove/mpp.c
deleted file mode 100644
index e41bd473abe9..000000000000
--- a/arch/arm/mach-dove/mpp.c
+++ /dev/null
@@ -1,159 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-dove/mpp.c
- *
- * MPP functions for Marvell Dove SoCs
- */
-
-#include <linux/kernel.h>
-#include <linux/gpio/consumer.h>
-#include <linux/io.h>
-#include <plat/mpp.h>
-#include <plat/orion-gpio.h>
-#include "dove.h"
-#include "mpp.h"
-
-struct dove_mpp_grp {
-	int start;
-	int end;
-};
-
-/* Map a group to a range of GPIO pins in that group */
-static const struct dove_mpp_grp dove_mpp_grp[] = {
-	[MPP_24_39] = {
-		.start	= 24,
-		.end	= 39,
-	},
-	[MPP_40_45] = {
-		.start	= 40,
-		.end	= 45,
-	},
-	[MPP_46_51] = {
-		.start	= 46,
-		.end	= 51,
-	},
-	[MPP_58_61] = {
-		.start	= 58,
-		.end	= 61,
-	},
-	[MPP_62_63] = {
-		.start	= 62,
-		.end	= 63,
-	},
-};
-
-/* Enable gpio for a range of pins. mode should be a combination of
-   GPIO_OUTPUT_OK | GPIO_INPUT_OK */
-static void __init dove_mpp_gpio_mode(int start, int end, int gpio_mode)
-{
-	int i;
-
-	for (i = start; i <= end; i++)
-		orion_gpio_set_valid(i, gpio_mode);
-}
-
-/* Dump all the extra MPP registers. The platform code will dump the
-   registers for pins 0-23. */
-static void __init dove_mpp_dump_regs(void)
-{
-	pr_debug("PMU_CTRL4_CTRL: %08x\n",
-		 readl(DOVE_MPP_CTRL4_VIRT_BASE));
-
-	pr_debug("PMU_MPP_GENERAL_CTRL: %08x\n",
-		 readl(DOVE_PMU_MPP_GENERAL_CTRL));
-
-	pr_debug("MPP_GENERAL: %08x\n", readl(DOVE_MPP_GENERAL_VIRT_BASE));
-}
-
-static void __init dove_mpp_cfg_nfc(int sel)
-{
-	u32 mpp_gen_cfg = readl(DOVE_MPP_GENERAL_VIRT_BASE);
-
-	mpp_gen_cfg &= ~0x1;
-	mpp_gen_cfg |= sel;
-	writel(mpp_gen_cfg, DOVE_MPP_GENERAL_VIRT_BASE);
-
-	dove_mpp_gpio_mode(64, 71, GPIO_OUTPUT_OK);
-}
-
-static void __init dove_mpp_cfg_au1(int sel)
-{
-	u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE);
-	u32 ssp_ctrl1 = readl(DOVE_SSP_CTRL_STATUS_1);
-	u32 mpp_gen_ctrl = readl(DOVE_MPP_GENERAL_VIRT_BASE);
-	u32 global_cfg_2 = readl(DOVE_GLOBAL_CONFIG_2);
-
-	mpp_ctrl4 &= ~(DOVE_AU1_GPIO_SEL);
-	ssp_ctrl1 &= ~(DOVE_SSP_ON_AU1);
-	mpp_gen_ctrl &= ~(DOVE_AU1_SPDIFO_GPIO_EN);
-	global_cfg_2 &= ~(DOVE_TWSI_OPTION3_GPIO);
-
-	if (!sel || sel == 0x2)
-		dove_mpp_gpio_mode(52, 57, 0);
-	else
-		dove_mpp_gpio_mode(52, 57, GPIO_OUTPUT_OK | GPIO_INPUT_OK);
-
-	if (sel & 0x1) {
-		global_cfg_2 |= DOVE_TWSI_OPTION3_GPIO;
-		dove_mpp_gpio_mode(56, 57, 0);
-	}
-	if (sel & 0x2) {
-		mpp_gen_ctrl |= DOVE_AU1_SPDIFO_GPIO_EN;
-		dove_mpp_gpio_mode(57, 57, GPIO_OUTPUT_OK | GPIO_INPUT_OK);
-	}
-	if (sel & 0x4) {
-		ssp_ctrl1 |= DOVE_SSP_ON_AU1;
-		dove_mpp_gpio_mode(52, 55, 0);
-	}
-	if (sel & 0x8)
-		mpp_ctrl4 |= DOVE_AU1_GPIO_SEL;
-
-	writel(mpp_ctrl4, DOVE_MPP_CTRL4_VIRT_BASE);
-	writel(ssp_ctrl1, DOVE_SSP_CTRL_STATUS_1);
-	writel(mpp_gen_ctrl, DOVE_MPP_GENERAL_VIRT_BASE);
-	writel(global_cfg_2, DOVE_GLOBAL_CONFIG_2);
-}
-
-/* Configure the group registers, enabling GPIO if sel indicates the
-   pin is to be used for GPIO */
-static void __init dove_mpp_conf_grp(unsigned int *mpp_grp_list)
-{
-	u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE);
-	int gpio_mode;
-
-	for ( ; *mpp_grp_list; mpp_grp_list++) {
-		unsigned int num = MPP_NUM(*mpp_grp_list);
-		unsigned int sel = MPP_SEL(*mpp_grp_list);
-
-		if (num > MPP_GRP_MAX) {
-			pr_err("dove: invalid MPP GRP number (%u)\n", num);
-			continue;
-		}
-
-		mpp_ctrl4 &= ~(0x1 << num);
-		mpp_ctrl4 |= sel << num;
-
-		gpio_mode = sel ? GPIO_OUTPUT_OK | GPIO_INPUT_OK : 0;
-		dove_mpp_gpio_mode(dove_mpp_grp[num].start,
-				   dove_mpp_grp[num].end, gpio_mode);
-	}
-	writel(mpp_ctrl4, DOVE_MPP_CTRL4_VIRT_BASE);
-}
-
-/* Configure the various MPP pins on Dove */
-void __init dove_mpp_conf(unsigned int *mpp_list,
-			  unsigned int *mpp_grp_list,
-			  unsigned int grp_au1_52_57,
-			  unsigned int grp_nfc_64_71)
-{
-	dove_mpp_dump_regs();
-
-	/* Use platform code for pins 0-23 */
-	orion_mpp_conf(mpp_list, 0, MPP_MAX, DOVE_MPP_VIRT_BASE);
-
-	dove_mpp_conf_grp(mpp_grp_list);
-	dove_mpp_cfg_au1(grp_au1_52_57);
-	dove_mpp_cfg_nfc(grp_nfc_64_71);
-
-	dove_mpp_dump_regs();
-}
diff --git a/arch/arm/mach-dove/mpp.h b/arch/arm/mach-dove/mpp.h
deleted file mode 100644
index 2e4b89c86ca8..000000000000
--- a/arch/arm/mach-dove/mpp.h
+++ /dev/null
@@ -1,197 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ARCH_DOVE_MPP_CODED_H
-#define __ARCH_DOVE_MPP_CODED_H
-
-#define MPP(_num, _sel, _in, _out) ( \
-	/* MPP number */		((_num) & 0xff) | \
-	/* MPP select value */		(((_sel) & 0xf) << 8) | \
-	/* may be input signal */	((!!(_in)) << 12) | \
-	/* may be output signal */	((!!(_out)) << 13))
-
-#define MPP0_GPIO0		MPP(0, 0x0, 1, 1)
-#define MPP0_UA2_RTSn		MPP(0, 0x2, 0, 0)
-#define MPP0_SDIO0_CD		MPP(0, 0x3, 0, 0)
-#define MPP0_LCD0_PWM		MPP(0, 0xf, 0, 0)
-
-#define MPP1_GPIO1		MPP(1, 0x0, 1, 1)
-#define MPP1_UA2_CTSn		MPP(1, 0x2, 0, 0)
-#define MPP1_SDIO0_WP		MPP(1, 0x3, 0, 0)
-#define MPP1_LCD1_PWM		MPP(1, 0xf, 0, 0)
-
-#define MPP2_GPIO2		MPP(2, 0x0, 1, 1)
-#define MPP2_SATA_PRESENT	MPP(2, 0x1, 0, 0)
-#define MPP2_UA2_TXD		MPP(2, 0x2, 0, 0)
-#define MPP2_SDIO0_BUS_POWER	MPP(2, 0x3, 0, 0)
-#define MPP2_UA_RTSn1		MPP(2, 0x4, 0, 0)
-
-#define MPP3_GPIO3		MPP(3, 0x0, 1, 1)
-#define MPP3_SATA_ACT		MPP(3, 0x1, 0, 0)
-#define MPP3_UA2_RXD		MPP(3, 0x2, 0, 0)
-#define MPP3_SDIO0_LED_CTRL	MPP(3, 0x3, 0, 0)
-#define MPP3_UA_CTSn1		MPP(3, 0x4, 0, 0)
-#define MPP3_SPI_LCD_CS1	MPP(3, 0xf, 0, 0)
-
-#define MPP4_GPIO4		MPP(4, 0x0, 1, 1)
-#define MPP4_UA3_RTSn		MPP(4, 0x2, 0, 0)
-#define MPP4_SDIO1_CD		MPP(4, 0x3, 0, 0)
-#define MPP4_SPI_1_MISO		MPP(4, 0x4, 0, 0)
-
-#define MPP5_GPIO5		MPP(5, 0x0, 1, 1)
-#define MPP5_UA3_CTSn		MPP(5, 0x2, 0, 0)
-#define MPP5_SDIO1_WP		MPP(5, 0x3, 0, 0)
-#define MPP5_SPI_1_CS		MPP(5, 0x4, 0, 0)
-
-#define MPP6_GPIO6		MPP(6, 0x0, 1, 1)
-#define MPP6_UA3_TXD		MPP(6, 0x2, 0, 0)
-#define MPP6_SDIO1_BUS_POWER	MPP(6, 0x3, 0, 0)
-#define MPP6_SPI_1_MOSI		MPP(6, 0x4, 0, 0)
-
-#define MPP7_GPIO7		MPP(7, 0x0, 1, 1)
-#define MPP7_UA3_RXD		MPP(7, 0x2, 0, 0)
-#define MPP7_SDIO1_LED_CTRL	MPP(7, 0x3, 0, 0)
-#define MPP7_SPI_1_SCK		MPP(7, 0x4, 0, 0)
-
-#define MPP8_GPIO8		MPP(8, 0x0, 1, 1)
-#define MPP8_WD_RST_OUT		MPP(8, 0x1, 0, 0)
-
-#define MPP9_GPIO9		MPP(9, 0x0, 1, 1)
-#define MPP9_PEX1_CLKREQn	MPP(9, 0x5, 0, 0)
-
-#define MPP10_GPIO10		MPP(10, 0x0, 1, 1)
-#define MPP10_SSP_SCLK		MPP(10, 0x5, 0, 0)
-
-#define MPP11_GPIO11		MPP(11, 0x0, 1, 1)
-#define MPP11_SATA_PRESENT	MPP(11, 0x1, 0, 0)
-#define MPP11_SATA_ACT		MPP(11, 0x2, 0, 0)
-#define MPP11_SDIO0_LED_CTRL	MPP(11, 0x3, 0, 0)
-#define MPP11_SDIO1_LED_CTRL	MPP(11, 0x4, 0, 0)
-#define MPP11_PEX0_CLKREQn	MPP(11, 0x5, 0, 0)
-
-#define MPP12_GPIO12		MPP(12, 0x0, 1, 1)
-#define MPP12_SATA_ACT		MPP(12, 0x1, 0, 0)
-#define MPP12_UA2_RTSn		MPP(12, 0x2, 0, 0)
-#define MPP12_AD0_I2S_EXT_MCLK	MPP(12, 0x3, 0, 0)
-#define MPP12_SDIO1_CD		MPP(12, 0x4, 0, 0)
-
-#define MPP13_GPIO13		MPP(13, 0x0, 1, 1)
-#define MPP13_UA2_CTSn		MPP(13, 0x2, 0, 0)
-#define MPP13_AD1_I2S_EXT_MCLK	MPP(13, 0x3, 0, 0)
-#define MPP13_SDIO1WP		MPP(13, 0x4, 0, 0)
-#define MPP13_SSP_EXTCLK	MPP(13, 0x5, 0, 0)
-
-#define MPP14_GPIO14		MPP(14, 0x0, 1, 1)
-#define MPP14_UA2_TXD		MPP(14, 0x2, 0, 0)
-#define MPP14_SDIO1_BUS_POWER	MPP(14, 0x4, 0, 0)
-#define MPP14_SSP_RXD		MPP(14, 0x5, 0, 0)
-
-#define MPP15_GPIO15		MPP(15, 0x0, 1, 1)
-#define MPP15_UA2_RXD		MPP(15, 0x2, 0, 0)
-#define MPP15_SDIO1_LED_CTRL	MPP(15, 0x4, 0, 0)
-#define MPP15_SSP_SFRM		MPP(15, 0x5, 0, 0)
-
-#define MPP16_GPIO16		MPP(16, 0x0, 1, 1)
-#define MPP16_UA3_RTSn		MPP(16, 0x2, 0, 0)
-#define MPP16_SDIO0_CD		MPP(16, 0x3, 0, 0)
-#define MPP16_SPI_LCD_CS1	MPP(16, 0x4, 0, 0)
-#define MPP16_AC97_SDATA_IN1	MPP(16, 0x5, 0, 0)
-
-#define MPP17_GPIO17		MPP(17, 0x0, 1, 1)
-#define MPP17_AC97_SYSCLK_OUT	MPP(17, 0x1, 0, 0)
-#define MPP17_UA3_CTSn		MPP(17, 0x2, 0, 0)
-#define MPP17_SDIO0_WP		MPP(17, 0x3, 0, 0)
-#define MPP17_TW_SDA2		MPP(17, 0x4, 0, 0)
-#define MPP17_AC97_SDATA_IN2	MPP(17, 0x5, 0, 0)
-
-#define MPP18_GPIO18		MPP(18, 0x0, 1, 1)
-#define MPP18_UA3_TXD		MPP(18, 0x2, 0, 0)
-#define MPP18_SDIO0_BUS_POWER	MPP(18, 0x3, 0, 0)
-#define MPP18_LCD0_PWM		MPP(18, 0x4, 0, 0)
-#define MPP18_AC_SDATA_IN3	MPP(18, 0x5, 0, 0)
-
-#define MPP19_GPIO19		MPP(19, 0x0, 1, 1)
-#define MPP19_UA3_RXD		MPP(19, 0x2, 0, 0)
-#define MPP19_SDIO0_LED_CTRL	MPP(19, 0x3, 0, 0)
-#define MPP19_TW_SCK2		MPP(19, 0x4, 0, 0)
-
-#define MPP20_GPIO20		MPP(20, 0x0, 1, 1)
-#define MPP20_AC97_SYSCLK_OUT	MPP(20, 0x1, 0, 0)
-#define MPP20_SPI_LCD_MISO	MPP(20, 0x2, 0, 0)
-#define MPP20_SDIO1_CD		MPP(20, 0x3, 0, 0)
-#define MPP20_SDIO0_CD		MPP(20, 0x5, 0, 0)
-#define MPP20_SPI_1_MISO	MPP(20, 0x6, 0, 0)
-
-#define MPP21_GPIO21		MPP(21, 0x0, 1, 1)
-#define MPP21_UA1_RTSn		MPP(21, 0x1, 0, 0)
-#define MPP21_SPI_LCD_CS0	MPP(21, 0x2, 0, 0)
-#define MPP21_SDIO1_WP		MPP(21, 0x3, 0, 0)
-#define MPP21_SSP_SFRM		MPP(21, 0x4, 0, 0)
-#define MPP21_SDIO0_WP		MPP(21, 0x5, 0, 0)
-#define MPP21_SPI_1_CS		MPP(21, 0x6, 0, 0)
-
-#define MPP22_GPIO22		MPP(22, 0x0, 1, 1)
-#define MPP22_UA1_CTSn		MPP(22, 0x1, 0, 0)
-#define MPP22_SPI_LCD_MOSI	MPP(22, 0x2, 0, 0)
-#define MPP22_SDIO1_BUS_POWER	MPP(22, 0x3, 0, 0)
-#define MPP22_SSP_TXD		MPP(22, 0x4, 0, 0)
-#define MPP22_SDIO0_BUS_POWER	MPP(22, 0x5, 0, 0)
-#define MPP22_SPI_1_MOSI	MPP(22, 0x6, 0, 0)
-
-#define MPP23_GPIO23		MPP(23, 0x0, 1, 1)
-#define MPP23_SPI_LCD_SCK	MPP(23, 0x2, 0, 0)
-#define MPP23_SDIO1_LED_CTRL	MPP(23, 0x3, 0, 0)
-#define MPP23_SSP_SCLK		MPP(23, 0x4, 0, 0)
-#define MPP23_SDIO0_LED_CTRL	MPP(23, 0x5, 0, 0)
-#define MPP23_SPI_1_SCK		MPP(23, 0x6, 0, 0)
-
-#define MPP_MAX			23
-
-#define MPP_GRP(_grp, _mode)	MPP((_grp), (_mode), 0, 0)
-
-/* for MPP groups _num is a group index */
-enum dove_mpp_grp_idx {
-	MPP_24_39 = 2,
-	MPP_40_45 = 0,
-	MPP_46_51 = 1,
-	MPP_58_61 = 5,
-	MPP_62_63 = 4,
-	MPP_GRP_MAX = 5,
-};
-
-#define MPP_GRP_24_39_GPIO		MPP_GRP(MPP_24_39, 0x1)
-#define MPP_GRP_24_39_CAM		MPP_GRP(MPP_24_39, 0x0)
-
-#define MPP_GRP_40_45_GPIO		MPP_GRP(MPP_40_45, 0x1)
-#define MPP_GRP_40_45_SD0		MPP_GRP(MPP_40_45, 0x0)
-
-#define MPP_GRP_46_51_GPIO		MPP_GRP(MPP_46_51, 0x1)
-#define MPP_GRP_46_51_SD1		MPP_GRP(MPP_46_51, 0x0)
-
-#define MPP_GRP_58_61_GPIO		MPP_GRP(MPP_58_61, 0x1)
-#define MPP_GRP_58_61_SPI		MPP_GRP(MPP_58_61, 0x0)
-
-#define MPP_GRP_62_63_GPIO		MPP_GRP(MPP_62_63, 0x1)
-#define MPP_GRP_62_63_UA1		MPP_GRP(MPP_62_63, 0x0)
-
-/* The MPP[64:71] control differs from other groups */
-#define MPP_GRP_NFC_64_71_GPO		0x1
-#define MPP_GRP_NFC_64_71_NFC		0x0
-
-/*
- * The MPP[52:57] functionality is encoded by 4 bits in different
- * registers. The _num field in this case encodes those bits in
- * correspodence with Table 135 of 88AP510 Functional specification
- */
-#define MPP_GRP_AU1_52_57_AU1		0x0
-#define MPP_GRP_AU1_52_57_AU1_GPIO57	0x2
-#define MPP_GRP_AU1_52_57_GPIO		0xa
-#define MPP_GRP_AU1_52_57_TW_GPIO	0xb
-#define MPP_GRP_AU1_52_57_AU1_SSP	0xc
-#define MPP_GRP_AU1_52_57_SSP_GPIO	0xe
-#define MPP_GRP_AU1_52_57_SSP_TW	0xf
-
-void dove_mpp_conf(unsigned int *mpp_list,
-		   unsigned int *mpp_grp_list,
-		   unsigned int grp_au1_52_57,
-		   unsigned int grp_nfc_64_71);
-
-#endif	/* __ARCH_DOVE_MPP_CODED_H */
diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c
deleted file mode 100644
index 3044b7e03890..000000000000
--- a/arch/arm/mach-dove/pcie.c
+++ /dev/null
@@ -1,226 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-dove/pcie.c
- *
- * PCIe functions for Marvell Dove 88AP510 SoC
- */
-
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/clk.h>
-#include <video/vga.h>
-#include <asm/mach/pci.h>
-#include <asm/mach/arch.h>
-#include <asm/setup.h>
-#include <asm/delay.h>
-#include <plat/pcie.h>
-#include <plat/addr-map.h>
-#include "irqs.h"
-#include "bridge-regs.h"
-#include "common.h"
-
-struct pcie_port {
-	u8			index;
-	u8			root_bus_nr;
-	void __iomem		*base;
-	spinlock_t		conf_lock;
-	char			mem_space_name[16];
-	struct resource		res;
-};
-
-static struct pcie_port pcie_port[2];
-static int num_pcie_ports;
-
-
-static int __init dove_pcie_setup(int nr, struct pci_sys_data *sys)
-{
-	struct pcie_port *pp;
-	struct resource realio;
-
-	if (nr >= num_pcie_ports)
-		return 0;
-
-	pp = &pcie_port[nr];
-	sys->private_data = pp;
-	pp->root_bus_nr = sys->busnr;
-
-	/*
-	 * Generic PCIe unit setup.
-	 */
-	orion_pcie_set_local_bus_nr(pp->base, sys->busnr);
-
-	orion_pcie_setup(pp->base);
-
-	realio.start = sys->busnr * SZ_64K;
-	realio.end = realio.start + SZ_64K - 1;
-	pci_remap_iospace(&realio, pp->index == 0 ? DOVE_PCIE0_IO_PHYS_BASE :
-						    DOVE_PCIE1_IO_PHYS_BASE);
-
-	/*
-	 * IORESOURCE_MEM
-	 */
-	snprintf(pp->mem_space_name, sizeof(pp->mem_space_name),
-		 "PCIe %d MEM", pp->index);
-	pp->mem_space_name[sizeof(pp->mem_space_name) - 1] = 0;
-	pp->res.name = pp->mem_space_name;
-	if (pp->index == 0) {
-		pp->res.start = DOVE_PCIE0_MEM_PHYS_BASE;
-		pp->res.end = pp->res.start + DOVE_PCIE0_MEM_SIZE - 1;
-	} else {
-		pp->res.start = DOVE_PCIE1_MEM_PHYS_BASE;
-		pp->res.end = pp->res.start + DOVE_PCIE1_MEM_SIZE - 1;
-	}
-	pp->res.flags = IORESOURCE_MEM;
-	if (request_resource(&iomem_resource, &pp->res))
-		panic("Request PCIe Memory resource failed\n");
-	pci_add_resource_offset(&sys->resources, &pp->res, sys->mem_offset);
-
-	return 1;
-}
-
-static int pcie_valid_config(struct pcie_port *pp, int bus, int dev)
-{
-	/*
-	 * Don't go out when trying to access nonexisting devices
-	 * on the local bus.
-	 */
-	if (bus == pp->root_bus_nr && dev > 1)
-		return 0;
-
-	return 1;
-}
-
-static int pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
-			int size, u32 *val)
-{
-	struct pci_sys_data *sys = bus->sysdata;
-	struct pcie_port *pp = sys->private_data;
-	unsigned long flags;
-	int ret;
-
-	if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0) {
-		*val = 0xffffffff;
-		return PCIBIOS_DEVICE_NOT_FOUND;
-	}
-
-	spin_lock_irqsave(&pp->conf_lock, flags);
-	ret = orion_pcie_rd_conf(pp->base, bus, devfn, where, size, val);
-	spin_unlock_irqrestore(&pp->conf_lock, flags);
-
-	return ret;
-}
-
-static int pcie_wr_conf(struct pci_bus *bus, u32 devfn,
-			int where, int size, u32 val)
-{
-	struct pci_sys_data *sys = bus->sysdata;
-	struct pcie_port *pp = sys->private_data;
-	unsigned long flags;
-	int ret;
-
-	if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0)
-		return PCIBIOS_DEVICE_NOT_FOUND;
-
-	spin_lock_irqsave(&pp->conf_lock, flags);
-	ret = orion_pcie_wr_conf(pp->base, bus, devfn, where, size, val);
-	spin_unlock_irqrestore(&pp->conf_lock, flags);
-
-	return ret;
-}
-
-static struct pci_ops pcie_ops = {
-	.read = pcie_rd_conf,
-	.write = pcie_wr_conf,
-};
-
-/*
- * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
- * is operating as a root complex this needs to be switched to
- * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
- * the device. Decoding setup is handled by the orion code.
- */
-static void rc_pci_fixup(struct pci_dev *dev)
-{
-	if (dev->bus->parent == NULL && dev->devfn == 0) {
-		struct resource *r;
-
-		dev->class &= 0xff;
-		dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
-		pci_dev_for_each_resource(dev, r) {
-			r->start = 0;
-			r->end   = 0;
-			r->flags = 0;
-		}
-	}
-}
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
-
-static int __init
-dove_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
-{
-	struct pci_sys_data *sys = pci_host_bridge_priv(bridge);
-
-	if (nr >= num_pcie_ports) {
-		BUG();
-		return -EINVAL;
-	}
-
-	list_splice_init(&sys->resources, &bridge->windows);
-	bridge->dev.parent = NULL;
-	bridge->sysdata = sys;
-	bridge->busnr = sys->busnr;
-	bridge->ops = &pcie_ops;
-
-	return pci_scan_root_bus_bridge(bridge);
-}
-
-static int __init dove_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-	struct pci_sys_data *sys = dev->sysdata;
-	struct pcie_port *pp = sys->private_data;
-
-	return pp->index ? IRQ_DOVE_PCIE1 : IRQ_DOVE_PCIE0;
-}
-
-static struct hw_pci dove_pci __initdata = {
-	.nr_controllers	= 2,
-	.setup		= dove_pcie_setup,
-	.scan		= dove_pcie_scan_bus,
-	.map_irq	= dove_pcie_map_irq,
-};
-
-static void __init add_pcie_port(int index, void __iomem *base)
-{
-	printk(KERN_INFO "Dove PCIe port %d: ", index);
-
-	if (orion_pcie_link_up(base)) {
-		struct pcie_port *pp = &pcie_port[num_pcie_ports++];
-		struct clk *clk = clk_get_sys("pcie", (index ? "1" : "0"));
-
-		if (!IS_ERR(clk))
-			clk_prepare_enable(clk);
-
-		printk(KERN_INFO "link up\n");
-
-		pp->index = index;
-		pp->root_bus_nr = -1;
-		pp->base = base;
-		spin_lock_init(&pp->conf_lock);
-		memset(&pp->res, 0, sizeof(pp->res));
-	} else {
-		printk(KERN_INFO "link down, ignoring\n");
-	}
-}
-
-void __init dove_pcie_init(int init_port0, int init_port1)
-{
-	vga_base = DOVE_PCIE0_MEM_PHYS_BASE;
-
-	if (init_port0)
-		add_pcie_port(0, DOVE_PCIE0_VIRT_BASE);
-
-	if (init_port1)
-		add_pcie_port(1, DOVE_PCIE1_VIRT_BASE);
-
-	pci_common_init(&dove_pci);
-}
diff --git a/arch/arm/mach-dove/pm.h b/arch/arm/mach-dove/pm.h
deleted file mode 100644
index a4c3aba1e2d0..000000000000
--- a/arch/arm/mach-dove/pm.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef __ASM_ARCH_PM_H
-#define __ASM_ARCH_PM_H
-
-#include <asm/errno.h>
-#include "irqs.h"
-
-#define CLOCK_GATING_CONTROL	(DOVE_PMU_VIRT_BASE + 0x38)
-#define  CLOCK_GATING_BIT_USB0		0
-#define  CLOCK_GATING_BIT_USB1		1
-#define  CLOCK_GATING_BIT_GBE		2
-#define  CLOCK_GATING_BIT_SATA		3
-#define  CLOCK_GATING_BIT_PCIE0		4
-#define  CLOCK_GATING_BIT_PCIE1		5
-#define  CLOCK_GATING_BIT_SDIO0		8
-#define  CLOCK_GATING_BIT_SDIO1		9
-#define  CLOCK_GATING_BIT_NAND		10
-#define  CLOCK_GATING_BIT_CAMERA	11
-#define  CLOCK_GATING_BIT_I2S0		12
-#define  CLOCK_GATING_BIT_I2S1		13
-#define  CLOCK_GATING_BIT_CRYPTO	15
-#define  CLOCK_GATING_BIT_AC97		21
-#define  CLOCK_GATING_BIT_PDMA		22
-#define  CLOCK_GATING_BIT_XOR0		23
-#define  CLOCK_GATING_BIT_XOR1		24
-#define  CLOCK_GATING_BIT_GIGA_PHY	30
-#define  CLOCK_GATING_USB0_MASK		(1 << CLOCK_GATING_BIT_USB0)
-#define  CLOCK_GATING_USB1_MASK		(1 << CLOCK_GATING_BIT_USB1)
-#define  CLOCK_GATING_GBE_MASK		(1 << CLOCK_GATING_BIT_GBE)
-#define  CLOCK_GATING_SATA_MASK		(1 << CLOCK_GATING_BIT_SATA)
-#define  CLOCK_GATING_PCIE0_MASK	(1 << CLOCK_GATING_BIT_PCIE0)
-#define  CLOCK_GATING_PCIE1_MASK	(1 << CLOCK_GATING_BIT_PCIE1)
-#define  CLOCK_GATING_SDIO0_MASK	(1 << CLOCK_GATING_BIT_SDIO0)
-#define  CLOCK_GATING_SDIO1_MASK	(1 << CLOCK_GATING_BIT_SDIO1)
-#define  CLOCK_GATING_NAND_MASK		(1 << CLOCK_GATING_BIT_NAND)
-#define  CLOCK_GATING_CAMERA_MASK	(1 << CLOCK_GATING_BIT_CAMERA)
-#define  CLOCK_GATING_I2S0_MASK		(1 << CLOCK_GATING_BIT_I2S0)
-#define  CLOCK_GATING_I2S1_MASK		(1 << CLOCK_GATING_BIT_I2S1)
-#define  CLOCK_GATING_CRYPTO_MASK	(1 << CLOCK_GATING_BIT_CRYPTO)
-#define  CLOCK_GATING_AC97_MASK		(1 << CLOCK_GATING_BIT_AC97)
-#define  CLOCK_GATING_PDMA_MASK		(1 << CLOCK_GATING_BIT_PDMA)
-#define  CLOCK_GATING_XOR0_MASK		(1 << CLOCK_GATING_BIT_XOR0)
-#define  CLOCK_GATING_XOR1_MASK		(1 << CLOCK_GATING_BIT_XOR1)
-#define  CLOCK_GATING_GIGA_PHY_MASK	(1 << CLOCK_GATING_BIT_GIGA_PHY)
-
-#define PMU_INTERRUPT_CAUSE	(DOVE_PMU_VIRT_BASE + 0x50)
-
-#define  PMU_SW_RST_VIDEO_MASK		BIT(16)
-#define  PMU_SW_RST_GPU_MASK		BIT(18)
-
-#define  PMU_PWR_GPU_PWR_DWN_MASK	BIT(2)
-#define  PMU_PWR_VPU_PWR_DWN_MASK	BIT(3)
-
-#define  PMU_ISO_VIDEO_MASK		BIT(0)
-#define  PMU_ISO_GPU_MASK		BIT(1)
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/Kconfig b/arch/arm/mach-mv78xx0/Kconfig
deleted file mode 100644
index 98b35f5d05ba..000000000000
--- a/arch/arm/mach-mv78xx0/Kconfig
+++ /dev/null
@@ -1,27 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-menuconfig ARCH_MV78XX0
-	bool "Marvell MV78xx0 (DEPRECATED)"
-	depends on ARCH_MULTI_V5
-	depends on CPU_LITTLE_ENDIAN
-	depends on ATAGS
-	select CPU_FEROCEON
-	select GPIOLIB
-	select GPIOLIB_LEGACY
-	select MVEBU_MBUS
-	select FORCE_PCI
-	select PLAT_ORION_LEGACY
-	help
-	  Support for the following Marvell MV78xx0 series SoCs:
-	  MV781x0, MV782x0.
-
-	  This platform is scheduled for removal in early 2027.
-
-if ARCH_MV78XX0
-
-config MACH_TERASTATION_WXL
-	bool "Buffalo WLX (Terastation Duo) NAS"
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  Buffalo WXL Nas.
-
-endif
diff --git a/arch/arm/mach-mv78xx0/Makefile b/arch/arm/mach-mv78xx0/Makefile
deleted file mode 100644
index ddee6ae501bb..000000000000
--- a/arch/arm/mach-mv78xx0/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
-
-obj-y				+= common.o mpp.o irq.o pcie.o
-obj-$(CONFIG_MACH_TERASTATION_WXL) += buffalo-wxl-setup.o
diff --git a/arch/arm/mach-mv78xx0/bridge-regs.h b/arch/arm/mach-mv78xx0/bridge-regs.h
deleted file mode 100644
index d57ac967c4b3..000000000000
--- a/arch/arm/mach-mv78xx0/bridge-regs.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef __ASM_ARCH_BRIDGE_REGS_H
-#define __ASM_ARCH_BRIDGE_REGS_H
-
-#include "mv78xx0.h"
-
-#define CPU_CONTROL		(BRIDGE_VIRT_BASE + 0x0104)
-#define L2_WRITETHROUGH		0x00020000
-
-#define RSTOUTn_MASK		(BRIDGE_VIRT_BASE + 0x0108)
-#define RSTOUTn_MASK_PHYS	(BRIDGE_PHYS_BASE + 0x0108)
-#define SOFT_RESET_OUT_EN	0x00000004
-
-#define SYSTEM_SOFT_RESET	(BRIDGE_VIRT_BASE + 0x010c)
-#define SOFT_RESET		0x00000001
-
-#define BRIDGE_INT_TIMER1_CLR	(~0x0004)
-
-#define IRQ_VIRT_BASE		(BRIDGE_VIRT_BASE + 0x0200)
-#define IRQ_CAUSE_ERR_OFF	0x0000
-#define IRQ_CAUSE_LOW_OFF	0x0004
-#define IRQ_CAUSE_HIGH_OFF	0x0008
-#define IRQ_MASK_ERR_OFF	0x000c
-#define IRQ_MASK_LOW_OFF	0x0010
-#define IRQ_MASK_HIGH_OFF	0x0014
-
-#define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE + 0x0300)
-#define TIMER_PHYS_BASE		(BRIDGE_PHYS_BASE + 0x0300)
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
deleted file mode 100644
index 3b2e381b7383..000000000000
--- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
+++ /dev/null
@@ -1,183 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
- *
- * Buffalo WXL (Terastation Duo) Setup routines
- *
- * sebastien requiem <sebastien@requiem.fr>
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/ata_platform.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/ethtool.h>
-#include <linux/i2c.h>
-#include <linux/gpio/legacy.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include "mv78xx0.h"
-#include "common.h"
-#include "mpp.h"
-
-
-#define TSWXL_AUTO_SWITCH	15
-#define TSWXL_USB_POWER1	30
-#define TSWXL_USB_POWER2	31
-
-
-/* This arch has 2 Giga Ethernet */
-
-static struct mv643xx_eth_platform_data db78x00_ge00_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(0),
-};
-
-static struct mv643xx_eth_platform_data db78x00_ge01_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
-};
-
-
-/* 2 SATA controller supporting HotPlug */
-
-static struct mv_sata_platform_data db78x00_sata_data = {
-	.n_ports	= 2,
-};
-
-static struct i2c_board_info __initdata db78x00_i2c_rtc = {
-	I2C_BOARD_INFO("rs5c372a", 0x32),
-};
-
-
-static unsigned int wxl_mpp_config[] __initdata = {
-	MPP0_GE1_TXCLK,
-	MPP1_GE1_TXCTL,
-	MPP2_GE1_RXCTL,
-	MPP3_GE1_RXCLK,
-	MPP4_GE1_TXD0,
-	MPP5_GE1_TXD1,
-	MPP6_GE1_TXD2,
-	MPP7_GE1_TXD3,
-	MPP8_GE1_RXD0,
-	MPP9_GE1_RXD1,
-	MPP10_GE1_RXD2,
-	MPP11_GE1_RXD3,
-	MPP12_GPIO,
-	MPP13_GPIO,
-	MPP14_GPIO,
-	MPP15_GPIO,
-	MPP16_GPIO,
-	MPP17_GPIO,
-	MPP18_GPIO,
-	MPP19_GPIO,
-	MPP20_GPIO,
-	MPP21_GPIO,
-	MPP22_GPIO,
-	MPP23_GPIO,
-	MPP24_UA2_TXD,
-	MPP25_UA2_RXD,
-	MPP26_UA2_CTSn,
-	MPP27_UA2_RTSn,
-	MPP28_GPIO,
-	MPP29_GPIO,
-	MPP30_GPIO,
-	MPP31_GPIO,
-	MPP32_GPIO,
-	MPP33_GPIO,
-	MPP34_GPIO,
-	MPP35_GPIO,
-	MPP36_GPIO,
-	MPP37_GPIO,
-	MPP38_GPIO,
-	MPP39_GPIO,
-	MPP40_GPIO,
-	MPP41_GPIO,
-	MPP42_GPIO,
-	MPP43_GPIO,
-	MPP44_GPIO,
-	MPP45_GPIO,
-	MPP46_GPIO,
-	MPP47_GPIO,
-	MPP48_GPIO,
-	MPP49_GPIO,
-	0
-};
-
-static struct gpio_keys_button tswxl_buttons[] = {
-	{
-		.code	   = KEY_OPTION,
-		.gpio	   = TSWXL_AUTO_SWITCH,
-		.desc	   = "Power-auto Switch",
-		.active_low     = 1,
-	}
-};
-
-static struct gpio_keys_platform_data tswxl_button_data = {
-	.buttons	= tswxl_buttons,
-	.nbuttons       = ARRAY_SIZE(tswxl_buttons),
-};
-
-static struct platform_device tswxl_button_device = {
-	.name	   = "gpio-keys",
-	.id	     = -1,
-	.num_resources  = 0,
-	.dev	    = {
-		.platform_data  = &tswxl_button_data,
-	},
-};
-
-static void __init wxl_init(void)
-{
-	/*
-	 * Basic MV78xx0 setup. Needs to be called early.
-	 */
-	mv78xx0_init();
-	mv78xx0_mpp_conf(wxl_mpp_config);
-
-	/*
-	 * Partition on-chip peripherals between the two CPU cores.
-	 */
-	mv78xx0_ehci0_init();
-	mv78xx0_ehci1_init();
-	mv78xx0_ge00_init(&db78x00_ge00_data);
-	mv78xx0_ge01_init(&db78x00_ge01_data);
-	mv78xx0_sata_init(&db78x00_sata_data);
-	mv78xx0_uart0_init();
-	mv78xx0_uart1_init();
-	mv78xx0_uart2_init();
-	mv78xx0_uart3_init();
-	mv78xx0_xor_init();
-	mv78xx0_crypto_init();
-	mv78xx0_i2c_init();
-	i2c_register_board_info(0, &db78x00_i2c_rtc, 1);
-
-	//enable both usb ports
-	gpio_direction_output(TSWXL_USB_POWER1, 1);
-	gpio_direction_output(TSWXL_USB_POWER2, 1);
-
-	//enable rear switch
-	platform_device_register(&tswxl_button_device);
-}
-
-static int __init wxl_pci_init(void)
-{
-	if (machine_is_terastation_wxl() && mv78xx0_core_index() == 0)
-                mv78xx0_pcie_init(1, 1);
-
-	return 0;
-}
-subsys_initcall(wxl_pci_init);
-
-MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
-	/* Maintainer: Sebastien Requiem <sebastien@requiem.fr> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= MV78XX0_NR_IRQS,
-	.init_machine	= wxl_init,
-	.map_io		= mv78xx0_map_io,
-	.init_early	= mv78xx0_init_early,
-	.init_irq	= mv78xx0_init_irq,
-	.init_time	= mv78xx0_timer_init,
-	.restart	= mv78xx0_restart,
-MACHINE_END
diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
deleted file mode 100644
index 679753fcc0ef..000000000000
--- a/arch/arm/mach-mv78xx0/common.c
+++ /dev/null
@@ -1,444 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-mv78xx0/common.c
- *
- * Core functions for Marvell MV78xx0 SoCs
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/platform_device.h>
-#include <linux/serial_8250.h>
-#include <linux/ata_platform.h>
-#include <linux/clk-provider.h>
-#include <linux/ethtool.h>
-#include <asm/hardware/cache-feroceon-l2.h>
-#include <asm/mach/map.h>
-#include <asm/mach/time.h>
-#include <linux/platform_data/usb-ehci-orion.h>
-#include <linux/platform_data/mtd-orion_nand.h>
-#include <plat/time.h>
-#include <plat/common.h>
-#include <plat/addr-map.h>
-#include "mv78xx0.h"
-#include "bridge-regs.h"
-#include "common.h"
-
-static int get_tclk(void);
-
-/*****************************************************************************
- * Common bits
- ****************************************************************************/
-int mv78xx0_core_index(void)
-{
-	u32 extra;
-
-	/*
-	 * Read Extra Features register.
-	 */
-	__asm__("mrc p15, 1, %0, c15, c1, 0" : "=r" (extra));
-
-	return !!(extra & 0x00004000);
-}
-
-static int get_hclk(void)
-{
-	int hclk;
-
-	/*
-	 * HCLK tick rate is configured by DEV_D[7:5] pins.
-	 */
-	switch ((readl(SAMPLE_AT_RESET_LOW) >> 5) & 7) {
-	case 0:
-		hclk = 166666667;
-		break;
-	case 1:
-		hclk = 200000000;
-		break;
-	case 2:
-		hclk = 266666667;
-		break;
-	case 3:
-		hclk = 333333333;
-		break;
-	case 4:
-		hclk = 400000000;
-		break;
-	default:
-		panic("unknown HCLK PLL setting: %.8x\n",
-			readl(SAMPLE_AT_RESET_LOW));
-	}
-
-	return hclk;
-}
-
-static void get_pclk_l2clk(int hclk, int core_index, int *pclk, int *l2clk)
-{
-	u32 cfg;
-
-	/*
-	 * Core #0 PCLK/L2CLK is configured by bits [13:8], core #1
-	 * PCLK/L2CLK by bits [19:14].
-	 */
-	if (core_index == 0) {
-		cfg = (readl(SAMPLE_AT_RESET_LOW) >> 8) & 0x3f;
-	} else {
-		cfg = (readl(SAMPLE_AT_RESET_LOW) >> 14) & 0x3f;
-	}
-
-	/*
-	 * Bits [11:8] ([17:14] for core #1) configure the PCLK:HCLK
-	 * ratio (1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6).
-	 */
-	*pclk = ((u64)hclk * (2 + (cfg & 0xf))) >> 1;
-
-	/*
-	 * Bits [13:12] ([19:18] for core #1) configure the PCLK:L2CLK
-	 * ratio (1, 2, 3).
-	 */
-	*l2clk = *pclk / (((cfg >> 4) & 3) + 1);
-}
-
-static int get_tclk(void)
-{
-	int tclk_freq;
-
-	/*
-	 * TCLK tick rate is configured by DEV_A[2:0] strap pins.
-	 */
-	switch ((readl(SAMPLE_AT_RESET_HIGH) >> 6) & 7) {
-	case 1:
-		tclk_freq = 166666667;
-		break;
-	case 3:
-		tclk_freq = 200000000;
-		break;
-	default:
-		panic("unknown TCLK PLL setting: %.8x\n",
-			readl(SAMPLE_AT_RESET_HIGH));
-	}
-
-	return tclk_freq;
-}
-
-
-/*****************************************************************************
- * I/O Address Mapping
- ****************************************************************************/
-static struct map_desc mv78xx0_io_desc[] __initdata = {
-	{
-		.virtual	= (unsigned long) MV78XX0_CORE_REGS_VIRT_BASE,
-		.pfn		= 0,
-		.length		= MV78XX0_CORE_REGS_SIZE,
-		.type		= MT_DEVICE,
-	}, {
-		.virtual	= (unsigned long) MV78XX0_REGS_VIRT_BASE,
-		.pfn		= __phys_to_pfn(MV78XX0_REGS_PHYS_BASE),
-		.length		= MV78XX0_REGS_SIZE,
-		.type		= MT_DEVICE,
-	},
-};
-
-void __init mv78xx0_map_io(void)
-{
-	unsigned long phys;
-
-	/*
-	 * Map the right set of per-core registers depending on
-	 * which core we are running on.
-	 */
-	if (mv78xx0_core_index() == 0) {
-		phys = MV78XX0_CORE0_REGS_PHYS_BASE;
-	} else {
-		phys = MV78XX0_CORE1_REGS_PHYS_BASE;
-	}
-	mv78xx0_io_desc[0].pfn = __phys_to_pfn(phys);
-
-	iotable_init(mv78xx0_io_desc, ARRAY_SIZE(mv78xx0_io_desc));
-}
-
-
-/*****************************************************************************
- * CLK tree
- ****************************************************************************/
-static struct clk *tclk;
-
-static void __init clk_init(void)
-{
-	tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 0, get_tclk());
-
-	orion_clkdev_init(tclk);
-}
-
-/*****************************************************************************
- * EHCI
- ****************************************************************************/
-void __init mv78xx0_ehci0_init(void)
-{
-	orion_ehci_init(USB0_PHYS_BASE, IRQ_MV78XX0_USB_0, EHCI_PHY_NA);
-}
-
-
-/*****************************************************************************
- * EHCI1
- ****************************************************************************/
-void __init mv78xx0_ehci1_init(void)
-{
-	orion_ehci_1_init(USB1_PHYS_BASE, IRQ_MV78XX0_USB_1);
-}
-
-
-/*****************************************************************************
- * EHCI2
- ****************************************************************************/
-void __init mv78xx0_ehci2_init(void)
-{
-	orion_ehci_2_init(USB2_PHYS_BASE, IRQ_MV78XX0_USB_2);
-}
-
-
-/*****************************************************************************
- * GE00
- ****************************************************************************/
-void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
-{
-	orion_ge00_init(eth_data,
-			GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
-			IRQ_MV78XX0_GE_ERR,
-			MV643XX_TX_CSUM_DEFAULT_LIMIT);
-}
-
-
-/*****************************************************************************
- * GE01
- ****************************************************************************/
-void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
-{
-	orion_ge01_init(eth_data,
-			GE01_PHYS_BASE, IRQ_MV78XX0_GE01_SUM,
-			MV643XX_TX_CSUM_DEFAULT_LIMIT);
-}
-
-
-/*****************************************************************************
- * GE10
- ****************************************************************************/
-void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data)
-{
-	u32 dev, rev;
-
-	/*
-	 * On the Z0, ge10 and ge11 are internally connected back
-	 * to back, and not brought out.
-	 */
-	mv78xx0_pcie_id(&dev, &rev);
-	if (dev == MV78X00_Z0_DEV_ID) {
-		eth_data->phy_addr = MV643XX_ETH_PHY_NONE;
-		eth_data->speed = SPEED_1000;
-		eth_data->duplex = DUPLEX_FULL;
-	}
-
-	orion_ge10_init(eth_data, GE10_PHYS_BASE, IRQ_MV78XX0_GE10_SUM);
-}
-
-
-/*****************************************************************************
- * GE11
- ****************************************************************************/
-void __init mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data)
-{
-	u32 dev, rev;
-
-	/*
-	 * On the Z0, ge10 and ge11 are internally connected back
-	 * to back, and not brought out.
-	 */
-	mv78xx0_pcie_id(&dev, &rev);
-	if (dev == MV78X00_Z0_DEV_ID) {
-		eth_data->phy_addr = MV643XX_ETH_PHY_NONE;
-		eth_data->speed = SPEED_1000;
-		eth_data->duplex = DUPLEX_FULL;
-	}
-
-	orion_ge11_init(eth_data, GE11_PHYS_BASE, IRQ_MV78XX0_GE11_SUM);
-}
-
-/*****************************************************************************
- * I2C
- ****************************************************************************/
-void __init mv78xx0_i2c_init(void)
-{
-	orion_i2c_init(I2C_0_PHYS_BASE, IRQ_MV78XX0_I2C_0, 8);
-	orion_i2c_1_init(I2C_1_PHYS_BASE, IRQ_MV78XX0_I2C_1, 8);
-}
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-void __init mv78xx0_sata_init(struct mv_sata_platform_data *sata_data)
-{
-	orion_sata_init(sata_data, SATA_PHYS_BASE, IRQ_MV78XX0_SATA);
-}
-
-
-/*****************************************************************************
- * UART0
- ****************************************************************************/
-void __init mv78xx0_uart0_init(void)
-{
-	orion_uart0_init(UART0_VIRT_BASE, UART0_PHYS_BASE,
-			 IRQ_MV78XX0_UART_0, tclk);
-}
-
-
-/*****************************************************************************
- * UART1
- ****************************************************************************/
-void __init mv78xx0_uart1_init(void)
-{
-	orion_uart1_init(UART1_VIRT_BASE, UART1_PHYS_BASE,
-			 IRQ_MV78XX0_UART_1, tclk);
-}
-
-
-/*****************************************************************************
- * UART2
- ****************************************************************************/
-void __init mv78xx0_uart2_init(void)
-{
-	orion_uart2_init(UART2_VIRT_BASE, UART2_PHYS_BASE,
-			 IRQ_MV78XX0_UART_2, tclk);
-}
-
-/*****************************************************************************
- * UART3
- ****************************************************************************/
-void __init mv78xx0_uart3_init(void)
-{
-	orion_uart3_init(UART3_VIRT_BASE, UART3_PHYS_BASE,
-			 IRQ_MV78XX0_UART_3, tclk);
-}
-
-/*****************************************************************************
- * Time handling
- ****************************************************************************/
-void __init mv78xx0_init_early(void)
-{
-	orion_time_set_base(TIMER_VIRT_BASE);
-	if (mv78xx0_core_index() == 0)
-		mvebu_mbus_init("marvell,mv78xx0-mbus",
-				BRIDGE_WINS_CPU0_BASE, BRIDGE_WINS_SZ,
-				DDR_WINDOW_CPU0_BASE, DDR_WINDOW_CPU_SZ);
-	else
-		mvebu_mbus_init("marvell,mv78xx0-mbus",
-				BRIDGE_WINS_CPU1_BASE, BRIDGE_WINS_SZ,
-				DDR_WINDOW_CPU1_BASE, DDR_WINDOW_CPU_SZ);
-}
-
-void __ref mv78xx0_timer_init(void)
-{
-	orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
-			IRQ_MV78XX0_TIMER_1, get_tclk());
-}
-
-/****************************************************************************
-* XOR engine
-****************************************************************************/
-void __init mv78xx0_xor_init(void)
-{
-	orion_xor0_init(XOR_PHYS_BASE,
-		XOR_PHYS_BASE + 0x200,
-		IRQ_MV78XX0_XOR_0, IRQ_MV78XX0_XOR_1);
-}
-
-/****************************************************************************
- * Cryptographic Engines and Security Accelerator (CESA)
-****************************************************************************/
-void __init mv78xx0_crypto_init(void)
-{
-	mvebu_mbus_add_window_by_id(MV78XX0_MBUS_SRAM_TARGET,
-				MV78XX0_MBUS_SRAM_ATTR,
-				MV78XX0_SRAM_PHYS_BASE,
-			MV78XX0_SRAM_SIZE);
-	orion_crypto_init(CRYPTO_PHYS_BASE, MV78XX0_SRAM_PHYS_BASE,
-		SZ_8K, IRQ_MV78XX0_CRYPTO);
-}
-
-
-/*****************************************************************************
- * General
- ****************************************************************************/
-static char * __init mv78xx0_id(void)
-{
-	u32 dev, rev;
-
-	mv78xx0_pcie_id(&dev, &rev);
-
-	if (dev == MV78X00_Z0_DEV_ID) {
-		if (rev == MV78X00_REV_Z0)
-			return "MV78X00-Z0";
-		else
-			return "MV78X00-Rev-Unsupported";
-	} else if (dev == MV78100_DEV_ID) {
-		if (rev == MV78100_REV_A0)
-			return "MV78100-A0";
-		else if (rev == MV78100_REV_A1)
-			return "MV78100-A1";
-		else
-			return "MV78100-Rev-Unsupported";
-	} else if (dev == MV78200_DEV_ID) {
-		if (rev == MV78100_REV_A0)
-			return "MV78200-A0";
-		else
-			return "MV78200-Rev-Unsupported";
-	} else {
-		return "Device-Unknown";
-	}
-}
-
-static int __init is_l2_writethrough(void)
-{
-	return !!(readl(CPU_CONTROL) & L2_WRITETHROUGH);
-}
-
-void __init mv78xx0_init(void)
-{
-	int core_index;
-	int hclk;
-	int pclk;
-	int l2clk;
-
-	core_index = mv78xx0_core_index();
-	hclk = get_hclk();
-	get_pclk_l2clk(hclk, core_index, &pclk, &l2clk);
-
-	printk(KERN_INFO "%s ", mv78xx0_id());
-	printk("core #%d, ", core_index);
-	printk("PCLK = %dMHz, ", (pclk + 499999) / 1000000);
-	printk("L2 = %dMHz, ", (l2clk + 499999) / 1000000);
-	printk("HCLK = %dMHz, ", (hclk + 499999) / 1000000);
-	printk("TCLK = %dMHz\n", (get_tclk() + 499999) / 1000000);
-
-	if (IS_ENABLED(CONFIG_CACHE_FEROCEON_L2))
-		feroceon_l2_init(is_l2_writethrough());
-
-	/* Setup root of clk tree */
-	clk_init();
-}
-
-void mv78xx0_restart(enum reboot_mode mode, const char *cmd)
-{
-	/*
-	 * Enable soft reset to assert RSTOUTn.
-	 */
-	writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
-
-	/*
-	 * Assert soft reset.
-	 */
-	writel(SOFT_RESET, SYSTEM_SOFT_RESET);
-
-	while (1)
-		;
-}
diff --git a/arch/arm/mach-mv78xx0/common.h b/arch/arm/mach-mv78xx0/common.h
deleted file mode 100644
index 9f1dfd595003..000000000000
--- a/arch/arm/mach-mv78xx0/common.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/mach-mv78xx0/common.h
- *
- * Core functions for Marvell MV78xx0 SoCs
- */
-
-#ifndef __ARCH_MV78XX0_COMMON_H
-#define __ARCH_MV78XX0_COMMON_H
-
-#include <linux/reboot.h>
-
-struct mv643xx_eth_platform_data;
-struct mv_sata_platform_data;
-
-/*
- * Basic MV78xx0 init functions used early by machine-setup.
- */
-int mv78xx0_core_index(void);
-void mv78xx0_map_io(void);
-void mv78xx0_init(void);
-void mv78xx0_init_early(void);
-void mv78xx0_init_irq(void);
-
-void mv78xx0_setup_cpu_mbus(void);
-void mv78xx0_setup_pcie_io_win(int window, u32 base, u32 size,
-			       int maj, int min);
-void mv78xx0_setup_pcie_mem_win(int window, u32 base, u32 size,
-				int maj, int min);
-
-void mv78xx0_pcie_id(u32 *dev, u32 *rev);
-
-void mv78xx0_ehci0_init(void);
-void mv78xx0_ehci1_init(void);
-void mv78xx0_ehci2_init(void);
-void mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data);
-void mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data);
-void mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data);
-void mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data);
-void mv78xx0_pcie_init(int init_port0, int init_port1);
-void mv78xx0_sata_init(struct mv_sata_platform_data *sata_data);
-void mv78xx0_uart0_init(void);
-void mv78xx0_uart1_init(void);
-void mv78xx0_uart2_init(void);
-void mv78xx0_uart3_init(void);
-void mv78xx0_xor_init(void);
-void mv78xx0_crypto_init(void);
-void mv78xx0_i2c_init(void);
-void mv78xx0_restart(enum reboot_mode, const char *);
-
-extern void mv78xx0_timer_init(void);
-
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
deleted file mode 100644
index 6e42f6446637..000000000000
--- a/arch/arm/mach-mv78xx0/irq.c
+++ /dev/null
@@ -1,69 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-mv78xx0/irq.c
- *
- * MV78xx0 IRQ handling.
- */
-#include <linux/gpio/consumer.h>
-#include <linux/kernel.h>
-#include <linux/irq.h>
-#include <linux/io.h>
-#include <asm/exception.h>
-#include <plat/orion-gpio.h>
-#include <plat/irq.h>
-#include "bridge-regs.h"
-#include "common.h"
-
-static int __initdata gpio0_irqs[4] = {
-	IRQ_MV78XX0_GPIO_0_7,
-	IRQ_MV78XX0_GPIO_8_15,
-	IRQ_MV78XX0_GPIO_16_23,
-	IRQ_MV78XX0_GPIO_24_31,
-};
-
-static void __iomem *mv78xx0_irq_base = IRQ_VIRT_BASE;
-
-static asmlinkage void
-__exception_irq_entry mv78xx0_legacy_handle_irq(struct pt_regs *regs)
-{
-	u32 stat;
-
-	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_LOW_OFF);
-	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_LOW_OFF);
-	if (stat) {
-		unsigned int hwirq = __fls(stat);
-		handle_IRQ(hwirq, regs);
-		return;
-	}
-	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_HIGH_OFF);
-	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_HIGH_OFF);
-	if (stat) {
-		unsigned int hwirq = 32 + __fls(stat);
-		handle_IRQ(hwirq, regs);
-		return;
-	}
-	stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_ERR_OFF);
-	stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_ERR_OFF);
-	if (stat) {
-		unsigned int hwirq = 64 + __fls(stat);
-		handle_IRQ(hwirq, regs);
-		return;
-	}
-}
-
-void __init mv78xx0_init_irq(void)
-{
-	orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
-	orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
-	orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF);
-
-	set_handle_irq(mv78xx0_legacy_handle_irq);
-
-	/*
-	 * Initialize gpiolib for GPIOs 0-31.  (The GPIO interrupt mask
-	 * registers for core #1 are at an offset of 0x18 from those of
-	 * core #0.)
-	 */
-	orion_gpio_init(0, 32, GPIO_VIRT_BASE, mv78xx0_core_index() ? 0x18 : 0,
-			IRQ_MV78XX0_GPIO_START, gpio0_irqs);
-}
diff --git a/arch/arm/mach-mv78xx0/irqs.h b/arch/arm/mach-mv78xx0/irqs.h
deleted file mode 100644
index 12b357d383d8..000000000000
--- a/arch/arm/mach-mv78xx0/irqs.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/* IRQ definitions for Marvell MV78xx0 SoCs */
-
-#ifndef __ASM_ARCH_IRQS_H
-#define __ASM_ARCH_IRQS_H
-
-/*
- * MV78xx0 Low Interrupt Controller
- */
-#define IRQ_MV78XX0_ERR		0
-#define IRQ_MV78XX0_SPI		1
-#define IRQ_MV78XX0_I2C_0	2
-#define IRQ_MV78XX0_I2C_1	3
-#define IRQ_MV78XX0_IDMA_0	4
-#define IRQ_MV78XX0_IDMA_1	5
-#define IRQ_MV78XX0_IDMA_2	6
-#define IRQ_MV78XX0_IDMA_3	7
-#define IRQ_MV78XX0_TIMER_0	8
-#define IRQ_MV78XX0_TIMER_1	9
-#define IRQ_MV78XX0_TIMER_2	10
-#define IRQ_MV78XX0_TIMER_3	11
-#define IRQ_MV78XX0_UART_0	12
-#define IRQ_MV78XX0_UART_1	13
-#define IRQ_MV78XX0_UART_2	14
-#define IRQ_MV78XX0_UART_3	15
-#define IRQ_MV78XX0_USB_0	16
-#define IRQ_MV78XX0_USB_1	17
-#define IRQ_MV78XX0_USB_2	18
-#define IRQ_MV78XX0_CRYPTO	19
-#define IRQ_MV78XX0_SDIO_0	20
-#define IRQ_MV78XX0_SDIO_1	21
-#define IRQ_MV78XX0_XOR_0	22
-#define IRQ_MV78XX0_XOR_1	23
-#define IRQ_MV78XX0_I2S_0	24
-#define IRQ_MV78XX0_I2S_1	25
-#define IRQ_MV78XX0_SATA	26
-#define IRQ_MV78XX0_TDMI	27
-
-/*
- * MV78xx0 High Interrupt Controller
- */
-#define IRQ_MV78XX0_PCIE_00	32
-#define IRQ_MV78XX0_PCIE_01	33
-#define IRQ_MV78XX0_PCIE_02	34
-#define IRQ_MV78XX0_PCIE_03	35
-#define IRQ_MV78XX0_PCIE_10	36
-#define IRQ_MV78XX0_PCIE_11	37
-#define IRQ_MV78XX0_PCIE_12	38
-#define IRQ_MV78XX0_PCIE_13	39
-#define IRQ_MV78XX0_GE00_SUM	40
-#define IRQ_MV78XX0_GE00_RX	41
-#define IRQ_MV78XX0_GE00_TX	42
-#define IRQ_MV78XX0_GE00_MISC	43
-#define IRQ_MV78XX0_GE01_SUM	44
-#define IRQ_MV78XX0_GE01_RX	45
-#define IRQ_MV78XX0_GE01_TX	46
-#define IRQ_MV78XX0_GE01_MISC	47
-#define IRQ_MV78XX0_GE10_SUM	48
-#define IRQ_MV78XX0_GE10_RX	49
-#define IRQ_MV78XX0_GE10_TX	50
-#define IRQ_MV78XX0_GE10_MISC	51
-#define IRQ_MV78XX0_GE11_SUM	52
-#define IRQ_MV78XX0_GE11_RX	53
-#define IRQ_MV78XX0_GE11_TX	54
-#define IRQ_MV78XX0_GE11_MISC	55
-#define IRQ_MV78XX0_GPIO_0_7	56
-#define IRQ_MV78XX0_GPIO_8_15	57
-#define IRQ_MV78XX0_GPIO_16_23	58
-#define IRQ_MV78XX0_GPIO_24_31	59
-#define IRQ_MV78XX0_DB_IN	60
-#define IRQ_MV78XX0_DB_OUT	61
-
-/*
- * MV78xx0 Error Interrupt Controller
- */
-#define IRQ_MV78XX0_GE_ERR	70
-
-/*
- * MV78XX0 General Purpose Pins
- */
-#define IRQ_MV78XX0_GPIO_START	96
-#define NR_GPIO_IRQS		32
-
-#define MV78XX0_NR_IRQS		(IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
-
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/mpp.c b/arch/arm/mach-mv78xx0/mpp.c
deleted file mode 100644
index 32bf590d79fe..000000000000
--- a/arch/arm/mach-mv78xx0/mpp.c
+++ /dev/null
@@ -1,34 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-mv78x00/mpp.c
- *
- * MPP functions for Marvell MV78x00 SoCs
- */
-#include <linux/gpio/consumer.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <plat/mpp.h>
-#include "mv78xx0.h"
-#include "common.h"
-#include "mpp.h"
-
-static unsigned int __init mv78xx0_variant(void)
-{
-	u32 dev, rev;
-
-	mv78xx0_pcie_id(&dev, &rev);
-
-	if (dev == MV78100_DEV_ID && rev >= MV78100_REV_A0)
-		return MPP_78100_A0_MASK;
-
-	printk(KERN_ERR "MPP setup: unknown mv78x00 variant "
-			"(dev %#x rev %#x)\n", dev, rev);
-	return 0;
-}
-
-void __init mv78xx0_mpp_conf(unsigned int *mpp_list)
-{
-	orion_mpp_conf(mpp_list, mv78xx0_variant(),
-		       MPP_MAX, DEV_BUS_VIRT_BASE);
-}
diff --git a/arch/arm/mach-mv78xx0/mpp.h b/arch/arm/mach-mv78xx0/mpp.h
deleted file mode 100644
index 47db52f45546..000000000000
--- a/arch/arm/mach-mv78xx0/mpp.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * linux/arch/arm/mach-mv78xx0/mpp.h -- Multi Purpose Pins
- *
- * sebastien requiem <sebastien@requiem.fr>
- */
-
-#ifndef __MV78X00_MPP_H
-#define __MV78X00_MPP_H
-
-#define MPP(_num, _sel, _in, _out, _78100_A0) (\
-    /* MPP number */        ((_num) & 0xff) | \
-    /* MPP select value */        (((_sel) & 0xf) << 8) | \
-    /* may be input signal */    ((!!(_in)) << 12) | \
-    /* may be output signal */    ((!!(_out)) << 13) | \
-    /* available on A0 */    ((!!(_78100_A0)) << 14))
-
-                /*   num sel  i  o  78100_A0  */
-
-#define MPP_78100_A0_MASK    MPP(0, 0x0, 0, 0, 1)
-
-#define MPP0_GPIO        MPP(0, 0x0, 1, 1, 1)
-#define MPP0_GE0_COL        MPP(0, 0x1, 0, 0, 1)
-#define MPP0_GE1_TXCLK        MPP(0, 0x2, 0, 0, 1)
-#define MPP0_UNUSED        MPP(0, 0x3, 0, 0, 1)
-
-#define MPP1_GPIO        MPP(1, 0x0, 1, 1, 1)
-#define MPP1_GE0_RXERR        MPP(1, 0x1, 0, 0, 1)
-#define MPP1_GE1_TXCTL        MPP(1, 0x2, 0, 0, 1)
-#define MPP1_UNUSED        MPP(1, 0x3, 0, 0, 1)
-
-#define MPP2_GPIO        MPP(2, 0x0, 1, 1, 1)
-#define MPP2_GE0_CRS        MPP(2, 0x1, 0, 0, 1)
-#define MPP2_GE1_RXCTL        MPP(2, 0x2, 0, 0, 1)
-#define MPP2_UNUSED        MPP(2, 0x3, 0, 0, 1)
-
-#define MPP3_GPIO        MPP(3, 0x0, 1, 1, 1)
-#define MPP3_GE0_TXERR        MPP(3, 0x1, 0, 0, 1)
-#define MPP3_GE1_RXCLK        MPP(3, 0x2, 0, 0, 1)
-#define MPP3_UNUSED        MPP(3, 0x3, 0, 0, 1)
-
-#define MPP4_GPIO        MPP(4, 0x0, 1, 1, 1)
-#define MPP4_GE0_TXD4        MPP(4, 0x1, 0, 0, 1)
-#define MPP4_GE1_TXD0        MPP(4, 0x2, 0, 0, 1)
-#define MPP4_UNUSED        MPP(4, 0x3, 0, 0, 1)
-
-#define MPP5_GPIO        MPP(5, 0x0, 1, 1, 1)
-#define MPP5_GE0_TXD5        MPP(5, 0x1, 0, 0, 1)
-#define MPP5_GE1_TXD1        MPP(5, 0x2, 0, 0, 1)
-#define MPP5_UNUSED        MPP(5, 0x3, 0, 0, 1)
-
-#define MPP6_GPIO        MPP(6, 0x0, 1, 1, 1)
-#define MPP6_GE0_TXD6        MPP(6, 0x1, 0, 0, 1)
-#define MPP6_GE1_TXD2        MPP(6, 0x2, 0, 0, 1)
-#define MPP6_UNUSED        MPP(6, 0x3, 0, 0, 1)
-
-#define MPP7_GPIO        MPP(7, 0x0, 1, 1, 1)
-#define MPP7_GE0_TXD7        MPP(7, 0x1, 0, 0, 1)
-#define MPP7_GE1_TXD3        MPP(7, 0x2, 0, 0, 1)
-#define MPP7_UNUSED        MPP(7, 0x3, 0, 0, 1)
-
-#define MPP8_GPIO        MPP(8, 0x0, 1, 1, 1)
-#define MPP8_GE0_RXD4        MPP(8, 0x1, 0, 0, 1)
-#define MPP8_GE1_RXD0        MPP(8, 0x2, 0, 0, 1)
-#define MPP8_UNUSED        MPP(8, 0x3, 0, 0, 1)
-
-#define MPP9_GPIO        MPP(9, 0x0, 1, 1, 1)
-#define MPP9_GE0_RXD5        MPP(9, 0x1, 0, 0, 1)
-#define MPP9_GE1_RXD1        MPP(9, 0x2, 0, 0, 1)
-#define MPP9_UNUSED        MPP(9, 0x3, 0, 0, 1)
-
-#define MPP10_GPIO        MPP(10, 0x0, 1, 1, 1)
-#define MPP10_GE0_RXD6        MPP(10, 0x1, 0, 0, 1)
-#define MPP10_GE1_RXD2        MPP(10, 0x2, 0, 0, 1)
-#define MPP10_UNUSED        MPP(10, 0x3, 0, 0, 1)
-
-#define MPP11_GPIO        MPP(11, 0x0, 1, 1, 1)
-#define MPP11_GE0_RXD7        MPP(11, 0x1, 0, 0, 1)
-#define MPP11_GE1_RXD3        MPP(11, 0x2, 0, 0, 1)
-#define MPP11_UNUSED        MPP(11, 0x3, 0, 0, 1)
-
-#define MPP12_GPIO        MPP(12, 0x0, 1, 1, 1)
-#define MPP12_M_BB        MPP(12, 0x3, 0, 0, 1)
-#define MPP12_UA0_CTSn        MPP(12, 0x4, 0, 0, 1)
-#define MPP12_NAND_FLASH_REn0    MPP(12, 0x5, 0, 0, 1)
-#define MPP12_TDM0_SCSn        MPP(12, 0X6, 0, 0, 1)
-#define MPP12_UNUSED        MPP(12, 0x1, 0, 0, 1)
-
-#define MPP13_GPIO        MPP(13, 0x0, 1, 1, 1)
-#define MPP13_SYSRST_OUTn    MPP(13, 0x3, 0, 0, 1)
-#define MPP13_UA0_RTSn        MPP(13, 0x4, 0, 0, 1)
-#define MPP13_NAN_FLASH_WEn0    MPP(13, 0x5, 0, 0, 1)
-#define MPP13_TDM_SCLK        MPP(13, 0x6, 0, 0, 1)
-#define MPP13_UNUSED        MPP(13, 0x1, 0, 0, 1)
-
-#define MPP14_GPIO        MPP(14, 0x0, 1, 1, 1)
-#define MPP14_SATA1_ACTn    MPP(14, 0x3, 0, 0, 1)
-#define MPP14_UA1_CTSn        MPP(14, 0x4, 0, 0, 1)
-#define MPP14_NAND_FLASH_REn1    MPP(14, 0x5, 0, 0, 1)
-#define MPP14_TDM_SMOSI        MPP(14, 0x6, 0, 0, 1)
-#define MPP14_UNUSED        MPP(14, 0x1, 0, 0, 1)
-
-#define MPP15_GPIO        MPP(15, 0x0, 1, 1, 1)
-#define MPP15_SATA0_ACTn    MPP(15, 0x3, 0, 0, 1)
-#define MPP15_UA1_RTSn        MPP(15, 0x4, 0, 0, 1)
-#define MPP15_NAND_FLASH_WEn1    MPP(15, 0x5, 0, 0, 1)
-#define MPP15_TDM_SMISO        MPP(15, 0x6, 0, 0, 1)
-#define MPP15_UNUSED        MPP(15, 0x1, 0, 0, 1)
-
-#define MPP16_GPIO        MPP(16, 0x0, 1, 1, 1)
-#define MPP16_SATA1_PRESENTn    MPP(16, 0x3, 0, 0, 1)
-#define MPP16_UA2_TXD        MPP(16, 0x4, 0, 0, 1)
-#define MPP16_NAND_FLASH_REn3    MPP(16, 0x5, 0, 0, 1)
-#define MPP16_TDM_INTn        MPP(16, 0x6, 0, 0, 1)
-#define MPP16_UNUSED        MPP(16, 0x1, 0, 0, 1)
-
-
-#define MPP17_GPIO        MPP(17, 0x0, 1, 1, 1)
-#define MPP17_SATA0_PRESENTn    MPP(17, 0x3, 0, 0, 1)
-#define MPP17_UA2_RXD        MPP(17, 0x4, 0, 0, 1)
-#define MPP17_NAND_FLASH_WEn3    MPP(17, 0x5, 0, 0, 1)
-#define MPP17_TDM_RSTn        MPP(17, 0x6, 0, 0, 1)
-#define MPP17_UNUSED        MPP(17, 0x1, 0, 0, 1)
-
-
-#define MPP18_GPIO        MPP(18, 0x0, 1, 1, 1)
-#define MPP18_UA0_CTSn        MPP(18, 0x4, 0, 0, 1)
-#define MPP18_BOOT_FLASH_REn    MPP(18, 0x5, 0, 0, 1)
-#define MPP18_UNUSED        MPP(18, 0x1, 0, 0, 1)
-
-
-
-#define MPP19_GPIO        MPP(19, 0x0, 1, 1, 1)
-#define MPP19_UA0_CTSn        MPP(19, 0x4, 0, 0, 1)
-#define MPP19_BOOT_FLASH_WEn    MPP(19, 0x5, 0, 0, 1)
-#define MPP19_UNUSED        MPP(19, 0x1, 0, 0, 1)
-
-
-#define MPP20_GPIO        MPP(20, 0x0, 1, 1, 1)
-#define MPP20_UA1_CTSs        MPP(20, 0x4, 0, 0, 1)
-#define MPP20_TDM_PCLK        MPP(20, 0x6, 0, 0, 0)
-#define MPP20_UNUSED        MPP(20, 0x1, 0, 0, 1)
-
-
-
-#define MPP21_GPIO        MPP(21, 0x0, 1, 1, 1)
-#define MPP21_UA1_CTSs        MPP(21, 0x4, 0, 0, 1)
-#define MPP21_TDM_FSYNC        MPP(21, 0x6, 0, 0, 0)
-#define MPP21_UNUSED        MPP(21, 0x1, 0, 0, 1)
-
-
-
-#define MPP22_GPIO        MPP(22, 0x0, 1, 1, 1)
-#define MPP22_UA3_TDX        MPP(22, 0x4, 0, 0, 1)
-#define MPP22_NAND_FLASH_REn2    MPP(22, 0x5, 0, 0, 1)
-#define MPP22_TDM_DRX        MPP(22, 0x6, 0, 0, 1)
-#define MPP22_UNUSED        MPP(22, 0x1, 0, 0, 1)
-
-
-
-#define MPP23_GPIO        MPP(23, 0x0, 1, 1, 1)
-#define MPP23_UA3_RDX        MPP(23, 0x4, 0, 0, 1)
-#define MPP23_NAND_FLASH_WEn2    MPP(23, 0x5, 0, 0, 1)
-#define MPP23_TDM_DTX        MPP(23, 0x6, 0, 0, 1)
-#define MPP23_UNUSED        MPP(23, 0x1, 0, 0, 1)
-
-
-#define MPP24_GPIO        MPP(24, 0x0, 1, 1, 1)
-#define MPP24_UA2_TXD        MPP(24, 0x4, 0, 0, 1)
-#define MPP24_TDM_INTn        MPP(24, 0x6, 0, 0, 1)
-#define MPP24_UNUSED        MPP(24, 0x1, 0, 0, 1)
-
-
-#define MPP25_GPIO        MPP(25, 0x0, 1, 1, 1)
-#define MPP25_UA2_RXD        MPP(25, 0x4, 0, 0, 1)
-#define MPP25_TDM_RSTn        MPP(25, 0x6, 0, 0, 1)
-#define MPP25_UNUSED        MPP(25, 0x1, 0, 0, 1)
-
-
-#define MPP26_GPIO        MPP(26, 0x0, 1, 1, 1)
-#define MPP26_UA2_CTSn        MPP(26, 0x4, 0, 0, 1)
-#define MPP26_TDM_PCLK        MPP(26, 0x6, 0, 0, 1)
-#define MPP26_UNUSED        MPP(26, 0x1, 0, 0, 1)
-
-
-#define MPP27_GPIO        MPP(27, 0x0, 1, 1, 1)
-#define MPP27_UA2_RTSn        MPP(27, 0x4, 0, 0, 1)
-#define MPP27_TDM_FSYNC        MPP(27, 0x6, 0, 0, 1)
-#define MPP27_UNUSED        MPP(27, 0x1, 0, 0, 1)
-
-
-#define MPP28_GPIO        MPP(28, 0x0, 1, 1, 1)
-#define MPP28_UA3_TXD        MPP(28, 0x4, 0, 0, 1)
-#define MPP28_TDM_DRX        MPP(28, 0x6, 0, 0, 1)
-#define MPP28_UNUSED        MPP(28, 0x1, 0, 0, 1)
-
-#define MPP29_GPIO        MPP(29, 0x0, 1, 1, 1)
-#define MPP29_UA3_RXD        MPP(29, 0x4, 0, 0, 1)
-#define MPP29_SYSRST_OUTn    MPP(29, 0x5, 0, 0, 1)
-#define MPP29_TDM_DTX        MPP(29, 0x6, 0, 0, 1)
-#define MPP29_UNUSED        MPP(29, 0x1, 0, 0, 1)
-
-#define MPP30_GPIO        MPP(30, 0x0, 1, 1, 1)
-#define MPP30_UA3_CTSn        MPP(30, 0x4, 0, 0, 1)
-#define MPP30_UNUSED        MPP(30, 0x1, 0, 0, 1)
-
-#define MPP31_GPIO        MPP(31, 0x0, 1, 1, 1)
-#define MPP31_UA3_RTSn        MPP(31, 0x4, 0, 0, 1)
-#define MPP31_TDM1_SCSn        MPP(31, 0x6, 0, 0, 1)
-#define MPP31_UNUSED        MPP(31, 0x1, 0, 0, 1)
-
-
-#define MPP32_GPIO        MPP(32, 0x1, 1, 1, 1)
-#define MPP32_UA3_TDX        MPP(32, 0x4, 0, 0, 1)
-#define MPP32_SYSRST_OUTn    MPP(32, 0x5, 0, 0, 1)
-#define MPP32_TDM0_RXQ        MPP(32, 0x6, 0, 0, 1)
-#define MPP32_UNUSED        MPP(32, 0x3, 0, 0, 1)
-
-
-#define MPP33_GPIO        MPP(33, 0x1, 1, 1, 1)
-#define MPP33_UA3_RDX        MPP(33, 0x4, 0, 0, 1)
-#define MPP33_TDM0_TXQ        MPP(33, 0x6, 0, 0, 1)
-#define MPP33_UNUSED        MPP(33, 0x3, 0, 0, 1)
-
-
-
-#define MPP34_GPIO        MPP(34, 0x1, 1, 1, 1)
-#define MPP34_UA2_TDX        MPP(34, 0x4, 0, 0, 1)
-#define MPP34_TDM1_RXQ        MPP(34, 0x6, 0, 0, 1)
-#define MPP34_UNUSED        MPP(34, 0x3, 0, 0, 1)
-
-
-
-#define MPP35_GPIO        MPP(35, 0x1, 1, 1, 1)
-#define MPP35_UA2_RDX        MPP(35, 0x4, 0, 0, 1)
-#define MPP35_TDM1_TXQ        MPP(35, 0x6, 0, 0, 1)
-#define MPP35_UNUSED        MPP(35, 0x3, 0, 0, 1)
-
-#define MPP36_GPIO        MPP(36, 0x1, 1, 1, 1)
-#define MPP36_UA0_CTSn        MPP(36, 0x2, 0, 0, 1)
-#define MPP36_UA2_TDX        MPP(36, 0x4, 0, 0, 1)
-#define MPP36_TDM0_SCSn        MPP(36, 0x6, 0, 0, 1)
-#define MPP36_UNUSED        MPP(36, 0x3, 0, 0, 1)
-
-
-#define MPP37_GPIO        MPP(37, 0x1, 1, 1, 1)
-#define MPP37_UA0_RTSn        MPP(37, 0x2, 0, 0, 1)
-#define MPP37_UA2_RXD        MPP(37, 0x4, 0, 0, 1)
-#define MPP37_SYSRST_OUTn    MPP(37, 0x5, 0, 0, 1)
-#define MPP37_TDM_SCLK        MPP(37, 0x6, 0, 0, 1)
-#define MPP37_UNUSED        MPP(37, 0x3, 0, 0, 1)
-
-
-
-
-#define MPP38_GPIO        MPP(38, 0x1, 1, 1, 1)
-#define MPP38_UA1_CTSn        MPP(38, 0x2, 0, 0, 1)
-#define MPP38_UA3_TXD        MPP(38, 0x4, 0, 0, 1)
-#define MPP38_SYSRST_OUTn    MPP(38, 0x5, 0, 0, 1)
-#define MPP38_TDM_SMOSI        MPP(38, 0x6, 0, 0, 1)
-#define MPP38_UNUSED        MPP(38, 0x3, 0, 0, 1)
-
-
-
-
-#define MPP39_GPIO        MPP(39, 0x1, 1, 1, 1)
-#define MPP39_UA1_RTSn        MPP(39, 0x2, 0, 0, 1)
-#define MPP39_UA3_RXD        MPP(39, 0x4, 0, 0, 1)
-#define MPP39_SYSRST_OUTn    MPP(39, 0x5, 0, 0, 1)
-#define MPP39_TDM_SMISO        MPP(39, 0x6, 0, 0, 1)
-#define MPP39_UNUSED        MPP(39, 0x3, 0, 0, 1)
-
-
-
-#define MPP40_GPIO        MPP(40, 0x1, 1, 1, 1)
-#define MPP40_TDM_INTn        MPP(40, 0x6, 0, 0, 1)
-#define MPP40_UNUSED        MPP(40, 0x0, 0, 0, 1)
-
-
-
-#define MPP41_GPIO        MPP(41, 0x1, 1, 1, 1)
-#define MPP41_TDM_RSTn        MPP(41, 0x6, 0, 0, 1)
-#define MPP41_UNUSED        MPP(41, 0x0, 0, 0, 1)
-
-
-
-#define MPP42_GPIO        MPP(42, 0x1, 1, 1, 1)
-#define MPP42_TDM_PCLK        MPP(42, 0x6, 0, 0, 1)
-#define MPP42_UNUSED        MPP(42, 0x0, 0, 0, 1)
-
-
-
-#define MPP43_GPIO        MPP(43, 0x1, 1, 1, 1)
-#define MPP43_TDM_FSYNC        MPP(43, 0x6, 0, 0, 1)
-#define MPP43_UNUSED        MPP(43, 0x0, 0, 0, 1)
-
-
-
-#define MPP44_GPIO        MPP(44, 0x1, 1, 1, 1)
-#define MPP44_TDM_DRX        MPP(44, 0x6, 0, 0, 1)
-#define MPP44_UNUSED        MPP(44, 0x0, 0, 0, 1)
-
-
-
-#define MPP45_GPIO        MPP(45, 0x1, 1, 1, 1)
-#define MPP45_SATA0_ACTn    MPP(45, 0x3, 0, 0, 1)
-#define MPP45_TDM_DRX        MPP(45, 0x6, 0, 0, 1)
-#define MPP45_UNUSED        MPP(45, 0x0, 0, 0, 1)
-
-
-#define MPP46_GPIO        MPP(46, 0x1, 1, 1, 1)
-#define MPP46_TDM_SCSn        MPP(46, 0x6, 0, 0, 1)
-#define MPP46_UNUSED        MPP(46, 0x0, 0, 0, 1)
-
-
-#define MPP47_GPIO        MPP(47, 0x1, 1, 1, 1)
-#define MPP47_UNUSED        MPP(47, 0x0, 0, 0, 1)
-
-
-
-#define MPP48_GPIO        MPP(48, 0x1, 1, 1, 1)
-#define MPP48_SATA1_ACTn    MPP(48, 0x3, 0, 0, 1)
-#define MPP48_UNUSED        MPP(48, 0x2, 0, 0, 1)
-
-
-
-#define MPP49_GPIO        MPP(49, 0x1, 1, 1, 1)
-#define MPP49_SATA0_ACTn    MPP(49, 0x3, 0, 0, 1)
-#define MPP49_M_BB        MPP(49, 0x4, 0, 0, 1)
-#define MPP49_UNUSED        MPP(49, 0x2, 0, 0, 1)
-
-
-#define MPP_MAX            49
-
-void mv78xx0_mpp_conf(unsigned int *mpp_list);
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/mv78xx0.h b/arch/arm/mach-mv78xx0/mv78xx0.h
deleted file mode 100644
index 88efb1e44142..000000000000
--- a/arch/arm/mach-mv78xx0/mv78xx0.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Generic definitions for Marvell MV78xx0 SoC flavors:
- *  MV781x0 and MV782x0.
- */
-
-#ifndef __ASM_ARCH_MV78XX0_H
-#define __ASM_ARCH_MV78XX0_H
-
-#include "irqs.h"
-
-/*
- * Marvell MV78xx0 address maps.
- *
- * phys
- * c0000000	PCIe Memory space
- * f0800000	PCIe #0 I/O space
- * f0900000	PCIe #1 I/O space
- * f0a00000	PCIe #2 I/O space
- * f0b00000	PCIe #3 I/O space
- * f0c00000	PCIe #4 I/O space
- * f0d00000	PCIe #5 I/O space
- * f0e00000	PCIe #6 I/O space
- * f0f00000	PCIe #7 I/O space
- * f1000000	on-chip peripheral registers
- *
- * virt		phys		size
- * fe400000	f102x000	16K	core-specific peripheral registers
- * fee00000	f0800000	64K	PCIe #0 I/O space
- * fee10000	f0900000	64K	PCIe #1 I/O space
- * fee20000	f0a00000	64K	PCIe #2 I/O space
- * fee30000	f0b00000	64K	PCIe #3 I/O space
- * fee40000	f0c00000	64K	PCIe #4 I/O space
- * fee50000	f0d00000	64K	PCIe #5 I/O space
- * fee60000	f0e00000	64K	PCIe #6 I/O space
- * fee70000	f0f00000	64K	PCIe #7 I/O space
- * fec00000	f1000000	1M	on-chip peripheral registers
- */
-#define MV78XX0_CORE0_REGS_PHYS_BASE	0xf1020000
-#define MV78XX0_CORE1_REGS_PHYS_BASE	0xf1024000
-#define MV78XX0_CORE_REGS_VIRT_BASE	IOMEM(0xfe400000)
-#define MV78XX0_CORE_REGS_PHYS_BASE	0xfe400000
-#define MV78XX0_CORE_REGS_SIZE		SZ_16K
-
-#define MV78XX0_PCIE_IO_PHYS_BASE(i)	(0xf0800000 + ((i) << 20))
-#define MV78XX0_PCIE_IO_SIZE		SZ_1M
-
-#define MV78XX0_REGS_PHYS_BASE		0xf1000000
-#define MV78XX0_REGS_VIRT_BASE		IOMEM(0xfec00000)
-#define MV78XX0_REGS_SIZE		SZ_1M
-
-#define MV78XX0_SRAM_PHYS_BASE          (0xf2200000)
-#define MV78XX0_SRAM_SIZE               SZ_8K
-
-#define MV78XX0_PCIE_MEM_PHYS_BASE	0xc0000000
-#define MV78XX0_PCIE_MEM_SIZE		0x30000000
-
-#define MV78XX0_MBUS_SRAM_TARGET       0x09
-#define MV78XX0_MBUS_SRAM_ATTR         0x00
-
-/*
- * Core-specific peripheral registers.
- */
-#define BRIDGE_VIRT_BASE	(MV78XX0_CORE_REGS_VIRT_BASE)
-#define BRIDGE_PHYS_BASE	(MV78XX0_CORE_REGS_PHYS_BASE)
-#define  BRIDGE_WINS_CPU0_BASE  (MV78XX0_CORE0_REGS_PHYS_BASE)
-#define  BRIDGE_WINS_CPU1_BASE  (MV78XX0_CORE1_REGS_PHYS_BASE)
-#define  BRIDGE_WINS_SZ         (0xA000)
-
-/*
- * Register Map
- */
-#define DDR_VIRT_BASE		(MV78XX0_REGS_VIRT_BASE + 0x00000)
-#define DDR_PHYS_BASE           (MV78XX0_REGS_PHYS_BASE + 0x00000)
-#define  DDR_WINDOW_CPU0_BASE	(DDR_PHYS_BASE + 0x1500)
-#define  DDR_WINDOW_CPU1_BASE	(DDR_PHYS_BASE + 0x1570)
-#define  DDR_WINDOW_CPU_SZ      (0x20)
-
-#define DEV_BUS_PHYS_BASE	(MV78XX0_REGS_PHYS_BASE + 0x10000)
-#define DEV_BUS_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x10000)
-#define  SAMPLE_AT_RESET_LOW	(DEV_BUS_VIRT_BASE + 0x0030)
-#define  SAMPLE_AT_RESET_HIGH	(DEV_BUS_VIRT_BASE + 0x0034)
-#define  GPIO_VIRT_BASE		(DEV_BUS_VIRT_BASE + 0x0100)
-#define  I2C_0_PHYS_BASE	(DEV_BUS_PHYS_BASE + 0x1000)
-#define  I2C_1_PHYS_BASE	(DEV_BUS_PHYS_BASE + 0x1100)
-#define  UART0_PHYS_BASE	(DEV_BUS_PHYS_BASE + 0x2000)
-#define  UART0_VIRT_BASE	(DEV_BUS_VIRT_BASE + 0x2000)
-#define  UART1_PHYS_BASE	(DEV_BUS_PHYS_BASE + 0x2100)
-#define  UART1_VIRT_BASE	(DEV_BUS_VIRT_BASE + 0x2100)
-#define  UART2_PHYS_BASE	(DEV_BUS_PHYS_BASE + 0x2200)
-#define  UART2_VIRT_BASE	(DEV_BUS_VIRT_BASE + 0x2200)
-#define  UART3_PHYS_BASE	(DEV_BUS_PHYS_BASE + 0x2300)
-#define  UART3_VIRT_BASE	(DEV_BUS_VIRT_BASE + 0x2300)
-
-#define GE10_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x30000)
-#define GE11_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x34000)
-
-#define PCIE00_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x40000)
-#define PCIE01_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x44000)
-#define PCIE02_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x48000)
-#define PCIE03_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x4c000)
-
-#define USB0_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x50000)
-#define USB1_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x51000)
-#define USB2_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x52000)
-
-#define XOR_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x60900)
-
-#define GE00_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x70000)
-#define GE01_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0x74000)
-
-#define PCIE10_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x80000)
-#define PCIE11_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x84000)
-#define PCIE12_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x88000)
-#define PCIE13_VIRT_BASE	(MV78XX0_REGS_VIRT_BASE + 0x8c000)
-
-#define CRYPTO_PHYS_BASE	(MV78XX0_REGS_PHYS_BASE + 0x90000)
-
-#define SATA_PHYS_BASE		(MV78XX0_REGS_PHYS_BASE + 0xa0000)
-
-/*
- * Supported devices and revisions.
- */
-#define MV78X00_Z0_DEV_ID	0x6381
-#define MV78X00_REV_Z0		1
-
-#define MV78100_DEV_ID		0x7810
-#define MV78100_REV_A0		1
-#define MV78100_REV_A1		2
-
-#define MV78200_DEV_ID		0x7820
-#define MV78200_REV_A0		1
-
-#endif
diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
deleted file mode 100644
index 533cb7856943..000000000000
--- a/arch/arm/mach-mv78xx0/pcie.c
+++ /dev/null
@@ -1,280 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-mv78xx0/pcie.c
- *
- * PCIe functions for Marvell MV78xx0 SoCs
- */
-
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/mbus.h>
-#include <video/vga.h>
-#include <asm/irq.h>
-#include <asm/mach/pci.h>
-#include <plat/pcie.h>
-#include "mv78xx0.h"
-#include "common.h"
-
-#define MV78XX0_MBUS_PCIE_MEM_TARGET(port, lane) ((port) ? 8 : 4)
-#define MV78XX0_MBUS_PCIE_MEM_ATTR(port, lane)   (0xf8 & ~(0x10 << (lane)))
-#define MV78XX0_MBUS_PCIE_IO_TARGET(port, lane)  ((port) ? 8 : 4)
-#define MV78XX0_MBUS_PCIE_IO_ATTR(port, lane)    (0xf0 & ~(0x10 << (lane)))
-
-struct pcie_port {
-	u8			maj;
-	u8			min;
-	u8			root_bus_nr;
-	void __iomem		*base;
-	spinlock_t		conf_lock;
-	char			mem_space_name[20];
-	struct resource		res;
-};
-
-static struct pcie_port pcie_port[8];
-static int num_pcie_ports;
-static struct resource pcie_io_space;
-
-void __init mv78xx0_pcie_id(u32 *dev, u32 *rev)
-{
-	*dev = orion_pcie_dev_id(PCIE00_VIRT_BASE);
-	*rev = orion_pcie_rev(PCIE00_VIRT_BASE);
-}
-
-u32 pcie_port_size[8] = {
-	0,
-	0x20000000,
-	0x10000000,
-	0x10000000,
-	0x08000000,
-	0x08000000,
-	0x08000000,
-	0x04000000,
-};
-
-static void __init mv78xx0_pcie_preinit(void)
-{
-	int i;
-	u32 size_each;
-	u32 start;
-
-	pcie_io_space.name = "PCIe I/O Space";
-	pcie_io_space.start = MV78XX0_PCIE_IO_PHYS_BASE(0);
-	pcie_io_space.end =
-		MV78XX0_PCIE_IO_PHYS_BASE(0) + MV78XX0_PCIE_IO_SIZE * 8 - 1;
-	pcie_io_space.flags = IORESOURCE_MEM;
-	if (request_resource(&iomem_resource, &pcie_io_space))
-		panic("can't allocate PCIe I/O space");
-
-	if (num_pcie_ports > 7)
-		panic("invalid number of PCIe ports");
-
-	size_each = pcie_port_size[num_pcie_ports];
-
-	start = MV78XX0_PCIE_MEM_PHYS_BASE;
-	for (i = 0; i < num_pcie_ports; i++) {
-		struct pcie_port *pp = pcie_port + i;
-
-		snprintf(pp->mem_space_name, sizeof(pp->mem_space_name),
-			"PCIe %d.%d MEM", pp->maj, pp->min);
-		pp->mem_space_name[sizeof(pp->mem_space_name) - 1] = 0;
-		pp->res.name = pp->mem_space_name;
-		pp->res.flags = IORESOURCE_MEM;
-		pp->res.start = start;
-		pp->res.end = start + size_each - 1;
-		start += size_each;
-
-		if (request_resource(&iomem_resource, &pp->res))
-			panic("can't allocate PCIe MEM sub-space");
-
-		mvebu_mbus_add_window_by_id(MV78XX0_MBUS_PCIE_MEM_TARGET(pp->maj, pp->min),
-					    MV78XX0_MBUS_PCIE_MEM_ATTR(pp->maj, pp->min),
-					    pp->res.start, resource_size(&pp->res));
-		mvebu_mbus_add_window_remap_by_id(MV78XX0_MBUS_PCIE_IO_TARGET(pp->maj, pp->min),
-						  MV78XX0_MBUS_PCIE_IO_ATTR(pp->maj, pp->min),
-						  i * SZ_64K, SZ_64K, 0);
-	}
-}
-
-static int __init mv78xx0_pcie_setup(int nr, struct pci_sys_data *sys)
-{
-	struct pcie_port *pp;
-	struct resource realio;
-
-	if (nr >= num_pcie_ports)
-		return 0;
-
-	pp = &pcie_port[nr];
-	sys->private_data = pp;
-	pp->root_bus_nr = sys->busnr;
-
-	/*
-	 * Generic PCIe unit setup.
-	 */
-	orion_pcie_set_local_bus_nr(pp->base, sys->busnr);
-	orion_pcie_setup(pp->base);
-
-	realio.start = nr * SZ_64K;
-	realio.end = realio.start + SZ_64K - 1;
-	pci_remap_iospace(&realio, MV78XX0_PCIE_IO_PHYS_BASE(nr));
-
-	pci_add_resource_offset(&sys->resources, &pp->res, sys->mem_offset);
-
-	return 1;
-}
-
-static int pcie_valid_config(struct pcie_port *pp, int bus, int dev)
-{
-	/*
-	 * Don't go out when trying to access nonexisting devices
-	 * on the local bus.
-	 */
-	if (bus == pp->root_bus_nr && dev > 1)
-		return 0;
-
-	return 1;
-}
-
-static int pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
-			int size, u32 *val)
-{
-	struct pci_sys_data *sys = bus->sysdata;
-	struct pcie_port *pp = sys->private_data;
-	unsigned long flags;
-	int ret;
-
-	if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0) {
-		*val = 0xffffffff;
-		return PCIBIOS_DEVICE_NOT_FOUND;
-	}
-
-	spin_lock_irqsave(&pp->conf_lock, flags);
-	ret = orion_pcie_rd_conf(pp->base, bus, devfn, where, size, val);
-	spin_unlock_irqrestore(&pp->conf_lock, flags);
-
-	return ret;
-}
-
-static int pcie_wr_conf(struct pci_bus *bus, u32 devfn,
-			int where, int size, u32 val)
-{
-	struct pci_sys_data *sys = bus->sysdata;
-	struct pcie_port *pp = sys->private_data;
-	unsigned long flags;
-	int ret;
-
-	if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0)
-		return PCIBIOS_DEVICE_NOT_FOUND;
-
-	spin_lock_irqsave(&pp->conf_lock, flags);
-	ret = orion_pcie_wr_conf(pp->base, bus, devfn, where, size, val);
-	spin_unlock_irqrestore(&pp->conf_lock, flags);
-
-	return ret;
-}
-
-static struct pci_ops pcie_ops = {
-	.read = pcie_rd_conf,
-	.write = pcie_wr_conf,
-};
-
-/*
- * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
- * is operating as a root complex this needs to be switched to
- * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
- * the device. Decoding setup is handled by the orion code.
- */
-static void rc_pci_fixup(struct pci_dev *dev)
-{
-	if (dev->bus->parent == NULL && dev->devfn == 0) {
-		struct resource *r;
-
-		dev->class &= 0xff;
-		dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
-		pci_dev_for_each_resource(dev, r) {
-			r->start = 0;
-			r->end   = 0;
-			r->flags = 0;
-		}
-	}
-}
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
-
-static int __init mv78xx0_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
-{
-	struct pci_sys_data *sys = pci_host_bridge_priv(bridge);
-
-	if (nr >= num_pcie_ports) {
-		BUG();
-		return -EINVAL;
-	}
-
-	list_splice_init(&sys->resources, &bridge->windows);
-	bridge->dev.parent = NULL;
-	bridge->sysdata = sys;
-	bridge->busnr = sys->busnr;
-	bridge->ops = &pcie_ops;
-
-	return pci_scan_root_bus_bridge(bridge);
-}
-
-static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
-	u8 pin)
-{
-	struct pci_sys_data *sys = dev->bus->sysdata;
-	struct pcie_port *pp = sys->private_data;
-
-	return IRQ_MV78XX0_PCIE_00 + (pp->maj << 2) + pp->min;
-}
-
-static struct hw_pci mv78xx0_pci __initdata = {
-	.nr_controllers	= 8,
-	.preinit	= mv78xx0_pcie_preinit,
-	.setup		= mv78xx0_pcie_setup,
-	.scan		= mv78xx0_pcie_scan_bus,
-	.map_irq	= mv78xx0_pcie_map_irq,
-};
-
-static void __init add_pcie_port(int maj, int min, void __iomem *base)
-{
-	printk(KERN_INFO "MV78xx0 PCIe port %d.%d: ", maj, min);
-
-	if (orion_pcie_link_up(base)) {
-		struct pcie_port *pp = &pcie_port[num_pcie_ports++];
-
-		printk("link up\n");
-
-		pp->maj = maj;
-		pp->min = min;
-		pp->root_bus_nr = -1;
-		pp->base = base;
-		spin_lock_init(&pp->conf_lock);
-		memset(&pp->res, 0, sizeof(pp->res));
-	} else {
-		printk("link down, ignoring\n");
-	}
-}
-
-void __init mv78xx0_pcie_init(int init_port0, int init_port1)
-{
-	vga_base = MV78XX0_PCIE_MEM_PHYS_BASE;
-
-	if (init_port0) {
-		add_pcie_port(0, 0, PCIE00_VIRT_BASE);
-		if (!orion_pcie_x4_mode(PCIE00_VIRT_BASE)) {
-			add_pcie_port(0, 1, PCIE01_VIRT_BASE);
-			add_pcie_port(0, 2, PCIE02_VIRT_BASE);
-			add_pcie_port(0, 3, PCIE03_VIRT_BASE);
-		}
-	}
-
-	if (init_port1) {
-		add_pcie_port(1, 0, PCIE10_VIRT_BASE);
-		if (!orion_pcie_x4_mode((void __iomem *)PCIE10_VIRT_BASE)) {
-			add_pcie_port(1, 1, PCIE11_VIRT_BASE);
-			add_pcie_port(1, 2, PCIE12_VIRT_BASE);
-			add_pcie_port(1, 3, PCIE13_VIRT_BASE);
-		}
-	}
-
-	pci_common_init(&mv78xx0_pci);
-}
diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
index c61999d01c80..78b8d59d7cc1 100644
--- a/arch/arm/mach-orion5x/Kconfig
+++ b/arch/arm/mach-orion5x/Kconfig
@@ -37,60 +37,6 @@ config MACH_RD88F5182_DT
 	  Say 'Y' here if you want your kernel to support the Marvell
 	  Orion-NAS (88F5182) RD2, Flattened Device Tree.
 
-config MACH_KUROBOX_PRO
-	bool "KuroBox Pro (DEPRECATED)"
-	select I2C_BOARDINFO if I2C
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  KuroBox Pro platform.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-config MACH_DNS323
-	bool "D-Link DNS-323 (DEPRECATED)"
-	select I2C_BOARDINFO if I2C
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  D-Link DNS-323 platform.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-config MACH_TS209
-	bool "QNAP TS-109/TS-209 (DEPRECATED)"
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  QNAP TS-109/TS-209 platform.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-config MACH_TERASTATION_PRO2
-	bool "Buffalo Terastation Pro II/Live (DEPRECATED)"
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  Buffalo Terastation Pro II/Live platform.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-config MACH_LINKSTATION_PRO
-	bool "Buffalo Linkstation Pro/Live (DEPRECATED)"
-	depends on ATAGS
-	select I2C_BOARDINFO if I2C
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  Buffalo Linkstation Pro/Live platform. Both v1 and
-	  v2 devices are supported.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
 config MACH_LINKSTATION_MINI
 	bool "Buffalo Linkstation Mini (Flattened Device Tree)"
 	select ARCH_ORION5X_DT
@@ -98,36 +44,6 @@ config MACH_LINKSTATION_MINI
 	  Say 'Y' here if you want your kernel to support the
 	  Buffalo Linkstation Mini (LS-WSGL) platform.
 
-config MACH_TS409
-	bool "QNAP TS-409 (DEPRECATED)"
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  QNAP TS-409 platform.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-config MACH_TS78XX
-	bool "Technologic Systems TS-78xx (DEPRECATED)"
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  Technologic Systems TS-78xx platform.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
-config MACH_MV2120
-	bool "HP Media Vault mv2120 (DEPRECATED)"
-	depends on ATAGS
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  HP Media Vault mv2120 or mv5100.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
 config MACH_D2NET_DT
 	bool "LaCie d2 Network / Big Disk Network (Flattened Device Tree)"
 	select ARCH_ORION5X_DT
@@ -135,17 +51,6 @@ config MACH_D2NET_DT
 	  Say 'Y' here if you want your kernel to support the
 	  LaCie d2 Network NAS.
 
-config MACH_NET2BIG
-	bool "LaCie 2Big Network (DEPRECATED)"
-	depends on ATAGS
-	select I2C_BOARDINFO if I2C
-	help
-	  Say 'Y' here if you want your kernel to support the
-	  LaCie 2Big Network NAS.
-
-	  Support for this machine will go away in early 2027,
-	  unless it gets converted to device tree.
-
 config MACH_MSS2_DT
 	bool "Maxtor Shared Storage II (Flattened Device Tree)"
 	select ARCH_ORION5X_DT
diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile
index 6f54d7fef27a..7e9634e04318 100644
--- a/arch/arm/mach-orion5x/Makefile
+++ b/arch/arm/mach-orion5x/Makefile
@@ -2,15 +2,6 @@
 ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
 
 obj-y				+= common.o pci.o irq.o mpp.o
-obj-$(CONFIG_MACH_KUROBOX_PRO)	+= kurobox_pro-setup.o
-obj-$(CONFIG_MACH_TERASTATION_PRO2)	+= terastation_pro2-setup.o
-obj-$(CONFIG_MACH_LINKSTATION_PRO) += kurobox_pro-setup.o
-obj-$(CONFIG_MACH_DNS323)	+= dns323-setup.o
-obj-$(CONFIG_MACH_TS209)	+= ts209-setup.o tsx09-common.o
-obj-$(CONFIG_MACH_TS409)	+= ts409-setup.o tsx09-common.o
-obj-$(CONFIG_MACH_TS78XX)	+= ts78xx-setup.o
-obj-$(CONFIG_MACH_MV2120)	+= mv2120-setup.o
-obj-$(CONFIG_MACH_NET2BIG)	+= net2big-setup.o
 
 obj-$(CONFIG_ARCH_ORION5X_DT)		+= board-dt.o
 obj-$(CONFIG_MACH_D2NET_DT)	+= board-d2net.o
diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
index be47492c6640..2614213e2cbc 100644
--- a/arch/arm/mach-orion5x/board-dt.c
+++ b/arch/arm/mach-orion5x/board-dt.c
@@ -18,7 +18,6 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <plat/irq.h>
-#include <plat/time.h>
 #include "orion5x.h"
 #include "bridge-regs.h"
 #include "common.h"
@@ -39,7 +38,7 @@ static void __init orion5x_dt_init(void)
 	u32 dev, rev;
 
 	orion5x_id(&dev, &rev, &dev_name);
-	printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk);
+	printk(KERN_INFO "Orion ID: %s.\n", dev_name);
 
 	BUG_ON(mvebu_mbus_dt_init(false));
 
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index df056d60b675..050a95af2bbf 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -7,27 +7,16 @@
  * Maintainer: Tzachi Perelstein <tzachi@marvell.com>
  */
 
+#include <linux/delay.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/io.h>
-#include <linux/platform_device.h>
-#include <linux/dma-mapping.h>
-#include <linux/serial_8250.h>
-#include <linux/mv643xx_i2c.h>
-#include <linux/ata_platform.h>
-#include <linux/delay.h>
-#include <linux/clk-provider.h>
-#include <linux/cpu.h>
+#include <linux/mbus.h>
 #include <asm/page.h>
 #include <asm/setup.h>
-#include <asm/system_misc.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
 #include <asm/mach/time.h>
-#include <linux/platform_data/mtd-orion_nand.h>
-#include <linux/platform_data/usb-ehci-orion.h>
-#include <plat/time.h>
-#include <plat/common.h>
 
 #include "bridge-regs.h"
 #include "common.h"
@@ -55,167 +44,6 @@ void __init orion5x_map_io(void)
 	iotable_init(orion5x_io_desc, ARRAY_SIZE(orion5x_io_desc));
 }
 
-
-/*****************************************************************************
- * CLK tree
- ****************************************************************************/
-static struct clk *tclk;
-
-void __init clk_init(void)
-{
-	tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 0, orion5x_tclk);
-
-	orion_clkdev_init(tclk);
-}
-
-/*****************************************************************************
- * EHCI0
- ****************************************************************************/
-void __init orion5x_ehci0_init(void)
-{
-	orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
-			EHCI_PHY_ORION);
-}
-
-
-/*****************************************************************************
- * EHCI1
- ****************************************************************************/
-void __init orion5x_ehci1_init(void)
-{
-	orion_ehci_1_init(ORION5X_USB1_PHYS_BASE, IRQ_ORION5X_USB1_CTRL);
-}
-
-
-/*****************************************************************************
- * GE00
- ****************************************************************************/
-void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
-{
-	orion_ge00_init(eth_data,
-			ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
-			IRQ_ORION5X_ETH_ERR,
-			MV643XX_TX_CSUM_DEFAULT_LIMIT);
-}
-
-
-/*****************************************************************************
- * I2C
- ****************************************************************************/
-void __init orion5x_i2c_init(void)
-{
-	orion_i2c_init(I2C_PHYS_BASE, IRQ_ORION5X_I2C, 8);
-
-}
-
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
-{
-	orion_sata_init(sata_data, ORION5X_SATA_PHYS_BASE, IRQ_ORION5X_SATA);
-}
-
-
-/*****************************************************************************
- * SPI
- ****************************************************************************/
-void __init orion5x_spi_init(void)
-{
-	orion_spi_init(SPI_PHYS_BASE);
-}
-
-
-/*****************************************************************************
- * UART0
- ****************************************************************************/
-void __init orion5x_uart0_init(void)
-{
-	orion_uart0_init(UART0_VIRT_BASE, UART0_PHYS_BASE,
-			 IRQ_ORION5X_UART0, tclk);
-}
-
-/*****************************************************************************
- * UART1
- ****************************************************************************/
-void __init orion5x_uart1_init(void)
-{
-	orion_uart1_init(UART1_VIRT_BASE, UART1_PHYS_BASE,
-			 IRQ_ORION5X_UART1, tclk);
-}
-
-/*****************************************************************************
- * XOR engine
- ****************************************************************************/
-void __init orion5x_xor_init(void)
-{
-	orion_xor0_init(ORION5X_XOR_PHYS_BASE,
-			ORION5X_XOR_PHYS_BASE + 0x200,
-			IRQ_ORION5X_XOR0, IRQ_ORION5X_XOR1);
-}
-
-/*****************************************************************************
- * Cryptographic Engines and Security Accelerator (CESA)
- ****************************************************************************/
-static void __init orion5x_crypto_init(void)
-{
-	mvebu_mbus_add_window_by_id(ORION_MBUS_SRAM_TARGET,
-				    ORION_MBUS_SRAM_ATTR,
-				    ORION5X_SRAM_PHYS_BASE,
-				    ORION5X_SRAM_SIZE);
-	orion_crypto_init(ORION5X_CRYPTO_PHYS_BASE, ORION5X_SRAM_PHYS_BASE,
-			  SZ_8K, IRQ_ORION5X_CESA);
-}
-
-/*****************************************************************************
- * Watchdog
- ****************************************************************************/
-static struct resource orion_wdt_resource[] = {
-		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
-		DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
-};
-
-static struct platform_device orion_wdt_device = {
-	.name		= "orion_wdt",
-	.id		= -1,
-	.num_resources	= ARRAY_SIZE(orion_wdt_resource),
-	.resource	= orion_wdt_resource,
-};
-
-static void __init orion5x_wdt_init(void)
-{
-	platform_device_register(&orion_wdt_device);
-}
-
-
-/*****************************************************************************
- * Time handling
- ****************************************************************************/
-void __init orion5x_init_early(void)
-{
-	u32 rev, dev;
-	const char *mbus_soc_name;
-
-	orion_time_set_base(TIMER_VIRT_BASE);
-
-	/* Initialize the MBUS driver */
-	orion5x_pcie_id(&dev, &rev);
-	if (dev == MV88F5281_DEV_ID)
-		mbus_soc_name = "marvell,orion5x-88f5281-mbus";
-	else if (dev == MV88F5182_DEV_ID)
-		mbus_soc_name = "marvell,orion5x-88f5182-mbus";
-	else if (dev == MV88F5181_DEV_ID)
-		mbus_soc_name = "marvell,orion5x-88f5181-mbus";
-	else if (dev == MV88F6183_DEV_ID)
-		mbus_soc_name = "marvell,orion5x-88f6183-mbus";
-	else
-		mbus_soc_name = NULL;
-	mvebu_mbus_init(mbus_soc_name, ORION5X_BRIDGE_WINS_BASE,
-			ORION5X_BRIDGE_WINS_SZ,
-			ORION5X_DDR_WINS_BASE, ORION5X_DDR_WINS_SZ);
-}
-
 void orion5x_setup_wins(void)
 {
 	/*
@@ -242,29 +70,6 @@ void orion5x_setup_wins(void)
 				    ORION5X_PCI_MEM_SIZE);
 }
 
-int orion5x_tclk;
-
-static int __init orion5x_find_tclk(void)
-{
-	u32 dev, rev;
-
-	orion5x_pcie_id(&dev, &rev);
-	if (dev == MV88F6183_DEV_ID &&
-	    (readl(MPP_RESET_SAMPLE) & 0x00000200) == 0)
-		return 133333333;
-
-	return 166666667;
-}
-
-void __init orion5x_timer_init(void)
-{
-	orion5x_tclk = orion5x_find_tclk();
-
-	orion_time_init(ORION5X_BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
-			IRQ_ORION5X_BRIDGE, orion5x_tclk);
-}
-
-
 /*****************************************************************************
  * General
  ****************************************************************************/
@@ -310,45 +115,6 @@ void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name)
 	}
 }
 
-void __init orion5x_init(void)
-{
-	char *dev_name;
-	u32 dev, rev;
-
-	orion5x_id(&dev, &rev, &dev_name);
-	printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk);
-
-	/*
-	 * Setup Orion address map
-	 */
-	orion5x_setup_wins();
-
-	/* Setup root of clk tree */
-	clk_init();
-
-	/*
-	 * Don't issue "Wait for Interrupt" instruction if we are
-	 * running on D0 5281 silicon.
-	 */
-	if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) {
-		printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n");
-		cpu_idle_poll_ctrl(true);
-	}
-
-	/*
-	 * The 5082/5181l/5182/6082/6082l/6183 have crypto
-	 * while 5180n/5181/5281 don't have crypto.
-	 */
-	if ((dev == MV88F5181_DEV_ID && rev >= MV88F5181L_REV_A0) ||
-	    dev == MV88F5182_DEV_ID || dev == MV88F6183_DEV_ID)
-		orion5x_crypto_init();
-
-	/*
-	 * Register watchdog driver
-	 */
-	orion5x_wdt_init();
-}
-
 void orion5x_restart(enum reboot_mode mode, const char *cmd)
 {
 	/*
diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
index 8df70e23aa82..4dc6c59bde99 100644
--- a/arch/arm/mach-orion5x/common.h
+++ b/arch/arm/mach-orion5x/common.h
@@ -4,9 +4,6 @@
 
 #include <linux/reboot.h>
 
-struct mv643xx_eth_platform_data;
-struct mv_sata_platform_data;
-
 #define ORION_MBUS_PCIE_MEM_TARGET    0x04
 #define ORION_MBUS_PCIE_MEM_ATTR      0x59
 #define ORION_MBUS_PCIE_IO_TARGET     0x04
@@ -32,21 +29,9 @@ void orion5x_init_early(void);
 void orion5x_init_irq(void);
 void orion5x_init(void);
 void orion5x_id(u32 *dev, u32 *rev, char **dev_name);
-void clk_init(void);
-extern int orion5x_tclk;
-extern void orion5x_timer_init(void);
 
 void orion5x_setup_wins(void);
 
-void orion5x_ehci0_init(void);
-void orion5x_ehci1_init(void);
-void orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data);
-void orion5x_i2c_init(void);
-void orion5x_sata_init(struct mv_sata_platform_data *sata_data);
-void orion5x_spi_init(void);
-void orion5x_uart0_init(void);
-void orion5x_uart1_init(void);
-void orion5x_xor_init(void);
 void orion5x_restart(enum reboot_mode, const char *);
 
 /*
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
deleted file mode 100644
index 7b81b08b0dda..000000000000
--- a/arch/arm/mach-orion5x/dns323-setup.c
+++ /dev/null
@@ -1,757 +0,0 @@
-/*
- * arch/arm/mach-orion5x/dns323-setup.c
- *
- * Copyright (C) 2007 Herbert Valerio Riedel <hvr@gnu.org>
- *
- * Support for HW Rev C1:
- *
- * Copyright (C) 2010 Benjamin Herrenschmidt <benh@kernel.crashing.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- */
-#include <linux/gpio/legacy.h>
-#include <linux/gpio/machine.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/pci.h>
-#include <linux/irq.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/i2c.h>
-#include <linux/ata_platform.h>
-#include <linux/phy.h>
-#include <linux/marvell_phy.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-#include <asm/system_info.h>
-#include <plat/orion-gpio.h>
-#include "orion5x.h"
-#include "common.h"
-#include "mpp.h"
-
-/* Rev A1 and B1 */
-#define DNS323_GPIO_LED_RIGHT_AMBER	1
-#define DNS323_GPIO_LED_LEFT_AMBER	2
-#define DNS323_GPIO_SYSTEM_UP		3
-#define DNS323_GPIO_LED_POWER1		4
-#define DNS323_GPIO_LED_POWER2		5
-#define DNS323_GPIO_OVERTEMP		6
-#define DNS323_GPIO_RTC			7
-#define DNS323_GPIO_POWER_OFF		8
-#define DNS323_GPIO_KEY_POWER		9
-#define DNS323_GPIO_KEY_RESET		10
-
-/* Rev C1 */
-#define DNS323C_GPIO_KEY_POWER		1
-#define DNS323C_GPIO_POWER_OFF		2
-#define DNS323C_GPIO_LED_RIGHT_AMBER	8
-#define DNS323C_GPIO_LED_LEFT_AMBER	9
-#define DNS323C_GPIO_LED_POWER		17
-#define DNS323C_GPIO_FAN_BIT1		18
-#define DNS323C_GPIO_FAN_BIT0		19
-
-/* Exposed to userspace, do not change */
-enum {
-	DNS323_REV_A1,	/* 0 */
-	DNS323_REV_B1,	/* 1 */
-	DNS323_REV_C1,	/* 2 */
-};
-
-
-/****************************************************************************
- * PCI setup
- */
-
-static int __init dns323_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-	int irq;
-
-	/*
-	 * Check for devices with hard-wired IRQs.
-	 */
-	irq = orion5x_pci_map_irq(dev, slot, pin);
-	if (irq != -1)
-		return irq;
-
-	return -1;
-}
-
-static struct hw_pci dns323_pci __initdata = {
-	.nr_controllers = 2,
-	.setup		= orion5x_pci_sys_setup,
-	.scan		= orion5x_pci_sys_scan_bus,
-	.map_irq	= dns323_pci_map_irq,
-};
-
-static int __init dns323_pci_init(void)
-{
-	/* Rev B1 and C1 doesn't really use its PCI bus, and initialising PCI
-	 * gets in the way of initialising the SATA controller.
-	 */
-	if (machine_is_dns323() && system_rev == DNS323_REV_A1)
-		pci_common_init(&dns323_pci);
-
-	return 0;
-}
-
-subsys_initcall(dns323_pci_init);
-
-/****************************************************************************
- * 8MiB NOR flash (Spansion S29GL064M90TFIR4)
- *
- * Layout as used by D-Link:
- *  0x00000000-0x00010000 : "MTD1"
- *  0x00010000-0x00020000 : "MTD2"
- *  0x00020000-0x001a0000 : "Linux Kernel"
- *  0x001a0000-0x007d0000 : "File System"
- *  0x007d0000-0x00800000 : "u-boot"
- */
-
-#define DNS323_NOR_BOOT_BASE 0xf4000000
-#define DNS323_NOR_BOOT_SIZE SZ_8M
-
-static struct mtd_partition dns323_partitions[] = {
-	{
-		.name	= "MTD1",
-		.size	= 0x00010000,
-		.offset	= 0,
-	}, {
-		.name	= "MTD2",
-		.size	= 0x00010000,
-		.offset = 0x00010000,
-	}, {
-		.name	= "Linux Kernel",
-		.size	= 0x00180000,
-		.offset	= 0x00020000,
-	}, {
-		.name	= "File System",
-		.size	= 0x00630000,
-		.offset	= 0x001A0000,
-	}, {
-		.name	= "u-boot",
-		.size	= 0x00030000,
-		.offset	= 0x007d0000,
-	},
-};
-
-static struct physmap_flash_data dns323_nor_flash_data = {
-	.width		= 1,
-	.parts		= dns323_partitions,
-	.nr_parts	= ARRAY_SIZE(dns323_partitions)
-};
-
-static struct resource dns323_nor_flash_resource = {
-	.flags		= IORESOURCE_MEM,
-	.start		= DNS323_NOR_BOOT_BASE,
-	.end		= DNS323_NOR_BOOT_BASE + DNS323_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device dns323_nor_flash = {
-	.name		= "physmap-flash",
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &dns323_nor_flash_data,
-	},
-	.resource	= &dns323_nor_flash_resource,
-	.num_resources	= 1,
-};
-
-/****************************************************************************
- * Ethernet
- */
-
-static struct mv643xx_eth_platform_data dns323_eth_data = {
-	.phy_addr = MV643XX_ETH_PHY_ADDR(8),
-};
-
-/* dns323_parse_hex_*() taken from tsx09-common.c; should a common copy of these
- * functions be kept somewhere?
- */
-static int __init dns323_parse_hex_nibble(char n)
-{
-	if (n >= '0' && n <= '9')
-		return n - '0';
-
-	if (n >= 'A' && n <= 'F')
-		return n - 'A' + 10;
-
-	if (n >= 'a' && n <= 'f')
-		return n - 'a' + 10;
-
-	return -1;
-}
-
-static int __init dns323_parse_hex_byte(const char *b)
-{
-	int hi;
-	int lo;
-
-	hi = dns323_parse_hex_nibble(b[0]);
-	lo = dns323_parse_hex_nibble(b[1]);
-
-	if (hi < 0 || lo < 0)
-		return -1;
-
-	return (hi << 4) | lo;
-}
-
-static int __init dns323_read_mac_addr(void)
-{
-	u_int8_t addr[6];
-	int i;
-	char *mac_page;
-
-	/* MAC address is stored as a regular ol' string in /dev/mtdblock4
-	 * (0x007d0000-0x00800000) starting at offset 196480 (0x2ff80).
-	 */
-	mac_page = ioremap(DNS323_NOR_BOOT_BASE + 0x7d0000 + 196480, 1024);
-	if (!mac_page)
-		return -ENOMEM;
-
-	/* Sanity check the string we're looking at */
-	for (i = 0; i < 5; i++) {
-		if (*(mac_page + (i * 3) + 2) != ':') {
-			goto error_fail;
-		}
-	}
-
-	for (i = 0; i < 6; i++)	{
-		int byte;
-
-		byte = dns323_parse_hex_byte(mac_page + (i * 3));
-		if (byte < 0) {
-			goto error_fail;
-		}
-
-		addr[i] = byte;
-	}
-
-	iounmap(mac_page);
-	printk("DNS-323: Found ethernet MAC address: %pM\n", addr);
-
-	memcpy(dns323_eth_data.mac_addr, addr, 6);
-
-	return 0;
-
-error_fail:
-	iounmap(mac_page);
-	return -EINVAL;
-}
-
-/****************************************************************************
- * GPIO LEDs (simple - doesn't use hardware blinking support)
- */
-
-static struct gpio_led dns323ab_leds[] = {
-	{
-		.name = "power:blue",
-		.default_trigger = "default-on",
-	}, {
-		.name = "right:amber",
-	}, {
-		.name = "left:amber",
-	},
-};
-
-static struct gpiod_lookup_table dns323a1_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_POWER2, NULL,
-				0, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_RIGHT_AMBER, NULL,
-				1, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_LEFT_AMBER, NULL,
-				2, GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-/* B1 is the same but power LED is active high */
-static struct gpiod_lookup_table dns323b1_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_POWER2, NULL,
-				0, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_RIGHT_AMBER, NULL,
-				1, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_LEFT_AMBER, NULL,
-				2, GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpio_led dns323c_leds[] = {
-	{
-		.name = "power:blue",
-		.default_trigger = "timer",
-	}, {
-		.name = "right:amber",
-	}, {
-		.name = "left:amber",
-	},
-};
-
-static struct gpiod_lookup_table dns323c_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323C_GPIO_LED_POWER, NULL,
-				0, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323C_GPIO_LED_RIGHT_AMBER, NULL,
-				1, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", DNS323C_GPIO_LED_LEFT_AMBER, NULL,
-				2, GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpio_led_platform_data dns323ab_led_data = {
-	.num_leds	= ARRAY_SIZE(dns323ab_leds),
-	.leds		= dns323ab_leds,
-	.gpio_blink_set = orion_gpio_led_blink_set,
-};
-
-static struct gpio_led_platform_data dns323c_led_data = {
-	.num_leds	= ARRAY_SIZE(dns323c_leds),
-	.leds		= dns323c_leds,
-	.gpio_blink_set = orion_gpio_led_blink_set,
-};
-
-static struct platform_device dns323_gpio_leds = {
-	.name		= "leds-gpio",
-	.id		= -1,
-	.dev		= {
-		.platform_data	= &dns323ab_led_data,
-	},
-};
-
-/****************************************************************************
- * GPIO Attached Keys
- */
-
-static struct gpio_keys_button dns323ab_buttons[] = {
-	{
-		.code		= KEY_RESTART,
-		.gpio		= DNS323_GPIO_KEY_RESET,
-		.desc		= "Reset Button",
-		.active_low	= 1,
-	}, {
-		.code		= KEY_POWER,
-		.gpio		= DNS323_GPIO_KEY_POWER,
-		.desc		= "Power Button",
-		.active_low	= 1,
-	},
-};
-
-static struct gpio_keys_platform_data dns323ab_button_data = {
-	.buttons	= dns323ab_buttons,
-	.nbuttons	= ARRAY_SIZE(dns323ab_buttons),
-};
-
-static struct gpio_keys_button dns323c_buttons[] = {
-	{
-		.code		= KEY_POWER,
-		.gpio		= DNS323C_GPIO_KEY_POWER,
-		.desc		= "Power Button",
-		.active_low	= 1,
-	},
-};
-
-static struct gpio_keys_platform_data dns323c_button_data = {
-	.buttons	= dns323c_buttons,
-	.nbuttons	= ARRAY_SIZE(dns323c_buttons),
-};
-
-static struct platform_device dns323_button_device = {
-	.name		= "gpio-keys",
-	.id		= -1,
-	.num_resources	= 0,
-	.dev		= {
-		.platform_data	= &dns323ab_button_data,
-	},
-};
-
-/*****************************************************************************
- * SATA
- */
-static struct mv_sata_platform_data dns323_sata_data = {
-       .n_ports        = 2,
-};
-
-/****************************************************************************
- * General Setup
- */
-static unsigned int dns323a_mpp_modes[] __initdata = {
-	MPP0_PCIE_RST_OUTn,
-	MPP1_GPIO,		/* right amber LED (sata ch0) */
-	MPP2_GPIO,		/* left amber LED (sata ch1) */
-	MPP3_UNUSED,
-	MPP4_GPIO,		/* power button LED */
-	MPP5_GPIO,		/* power button LED */
-	MPP6_GPIO,		/* GMT G751-2f overtemp */
-	MPP7_GPIO,		/* M41T80 nIRQ/OUT/SQW */
-	MPP8_GPIO,		/* triggers power off */
-	MPP9_GPIO,		/* power button switch */
-	MPP10_GPIO,		/* reset button switch */
-	MPP11_UNUSED,
-	MPP12_UNUSED,
-	MPP13_UNUSED,
-	MPP14_UNUSED,
-	MPP15_UNUSED,
-	MPP16_UNUSED,
-	MPP17_UNUSED,
-	MPP18_UNUSED,
-	MPP19_UNUSED,
-	0,
-};
-
-static unsigned int dns323b_mpp_modes[] __initdata = {
-	MPP0_UNUSED,
-	MPP1_GPIO,		/* right amber LED (sata ch0) */
-	MPP2_GPIO,		/* left amber LED (sata ch1) */
-	MPP3_GPIO,		/* system up flag */
-	MPP4_GPIO,		/* power button LED */
-	MPP5_GPIO,		/* power button LED */
-	MPP6_GPIO,		/* GMT G751-2f overtemp */
-	MPP7_GPIO,		/* M41T80 nIRQ/OUT/SQW */
-	MPP8_GPIO,		/* triggers power off */
-	MPP9_GPIO,		/* power button switch */
-	MPP10_GPIO,		/* reset button switch */
-	MPP11_UNUSED,
-	MPP12_SATA_LED,
-	MPP13_SATA_LED,
-	MPP14_SATA_LED,
-	MPP15_SATA_LED,
-	MPP16_UNUSED,
-	MPP17_UNUSED,
-	MPP18_UNUSED,
-	MPP19_UNUSED,
-	0,
-};
-
-static unsigned int dns323c_mpp_modes[] __initdata = {
-	MPP0_GPIO,		/* ? input */
-	MPP1_GPIO,		/* input power switch (0 = pressed) */
-	MPP2_GPIO,		/* output power off */
-	MPP3_UNUSED,		/* ? output */
-	MPP4_UNUSED,		/* ? output */
-	MPP5_UNUSED,		/* ? output */
-	MPP6_UNUSED,		/* ? output */
-	MPP7_UNUSED,		/* ? output */
-	MPP8_GPIO,		/* i/o right amber LED */
-	MPP9_GPIO,		/* i/o left amber LED */
-	MPP10_GPIO,		/* input */
-	MPP11_UNUSED,
-	MPP12_SATA_LED,
-	MPP13_SATA_LED,
-	MPP14_SATA_LED,
-	MPP15_SATA_LED,
-	MPP16_UNUSED,
-	MPP17_GPIO,		/* power button LED */
-	MPP18_GPIO,		/* fan speed bit 0 */
-	MPP19_GPIO,		/* fan speed bit 1 */
-	0,
-};
-
-/* Rev C1 Fan speed notes:
- *
- * The fan is controlled by 2 GPIOs on this board. The settings
- * of the bits is as follow:
- *
- *  GPIO 18    GPIO 19    Fan
- *
- *    0          0        stopped
- *    0          1        low speed
- *    1          0        high speed
- *    1          1        don't do that (*)
- *
- * (*) I think the two bits control two feed-in resistors into a fixed
- *     PWN circuit, setting both bits will basically go a 'bit' faster
- *     than high speed, but d-link doesn't do it and you may get out of
- *     HW spec so don't do it.
- */
-
-/*
- * On the DNS-323 A1 and B1 the following devices are attached via I2C:
- *
- *  i2c addr | chip        | description
- *  0x3e     | GMT G760Af  | fan speed PWM controller
- *  0x48     | GMT G751-2f | temp. sensor and therm. watchdog (LM75 compatible)
- *  0x68     | ST M41T80   | RTC w/ alarm
- */
-static struct i2c_board_info __initdata dns323ab_i2c_devices[] = {
-	{
-		I2C_BOARD_INFO("g760a", 0x3e),
-	}, {
-		I2C_BOARD_INFO("lm75", 0x48),
-	}, {
-		I2C_BOARD_INFO("m41t80", 0x68),
-	},
-};
-
-/*
- * On the DNS-323 C1 the following devices are attached via I2C:
- *
- *  i2c addr | chip        | description
- *  0x48     | GMT G751-2f | temp. sensor and therm. watchdog (LM75 compatible)
- *  0x68     | ST M41T80   | RTC w/ alarm
- */
-static struct i2c_board_info __initdata dns323c_i2c_devices[] = {
-	{
-		I2C_BOARD_INFO("lm75", 0x48),
-	}, {
-		I2C_BOARD_INFO("m41t80", 0x68),
-	},
-};
-
-/* DNS-323 rev. A specific power off method */
-static void dns323a_power_off(void)
-{
-	pr_info("DNS-323: Triggering power-off...\n");
-	gpio_set_value(DNS323_GPIO_POWER_OFF, 1);
-}
-
-/* DNS-323 rev B specific power off method */
-static void dns323b_power_off(void)
-{
-	pr_info("DNS-323: Triggering power-off...\n");
-	/* Pin has to be changed to 1 and back to 0 to do actual power off. */
-	gpio_set_value(DNS323_GPIO_POWER_OFF, 1);
-	mdelay(100);
-	gpio_set_value(DNS323_GPIO_POWER_OFF, 0);
-}
-
-/* DNS-323 rev. C specific power off method */
-static void dns323c_power_off(void)
-{
-	pr_info("DNS-323: Triggering power-off...\n");
-	gpio_set_value(DNS323C_GPIO_POWER_OFF, 1);
-}
-
-static int dns323c_phy_fixup(struct phy_device *phy)
-{
-	phy->dev_flags |= MARVELL_PHY_M1118_DNS323_LEDS;
-
-	return 0;
-}
-
-static int __init dns323_identify_rev(void)
-{
-	u32 dev, rev, i, reg;
-
-	pr_debug("DNS-323: Identifying board ... \n");
-
-	/* Rev A1 has a 5181 */
-	orion5x_pcie_id(&dev, &rev);
-	if (dev == MV88F5181_DEV_ID) {
-		pr_debug("DNS-323: 5181 found, board is A1\n");
-		return DNS323_REV_A1;
-	}
-	pr_debug("DNS-323: 5182 found, board is B1 or C1, checking PHY...\n");
-
-	/* Rev B1 and C1 both have 5182, let's poke at the eth PHY. This is
-	 * a bit gross but we want to do that without links into the eth
-	 * driver so let's poke at it directly. We default to rev B1 in
-	 * case the accesses fail
-	 */
-
-#define ETH_SMI_REG		(ORION5X_ETH_VIRT_BASE + 0x2000 + 0x004)
-#define  SMI_BUSY		0x10000000
-#define  SMI_READ_VALID		0x08000000
-#define  SMI_OPCODE_READ	0x04000000
-#define  SMI_OPCODE_WRITE	0x00000000
-
-	for (i = 0; i < 1000; i++) {
-		reg = readl(ETH_SMI_REG);
-		if (!(reg & SMI_BUSY))
-			break;
-	}
-	if (i >= 1000) {
-		pr_warn("DNS-323: Timeout accessing PHY, assuming rev B1\n");
-		return DNS323_REV_B1;
-	}
-	writel((3 << 21)	/* phy ID reg */ |
-	       (8 << 16)	/* phy addr */ |
-	       SMI_OPCODE_READ, ETH_SMI_REG);
-	for (i = 0; i < 1000; i++) {
-		reg = readl(ETH_SMI_REG);
-		if (reg & SMI_READ_VALID)
-			break;
-	}
-	if (i >= 1000) {
-		pr_warn("DNS-323: Timeout reading PHY, assuming rev B1\n");
-		return DNS323_REV_B1;
-	}
-	pr_debug("DNS-323: Ethernet PHY ID 0x%x\n", reg & 0xffff);
-
-	/* Note: the Marvell tools mask the ID with 0x3f0 before comparison
-	 * but I don't see that making a difference here, at least with
-	 * any known Marvell PHY ID
-	 */
-	switch(reg & 0xfff0) {
-	case 0x0cc0: /* MV88E1111 */
-		return DNS323_REV_B1;
-	case 0x0e10: /* MV88E1118 */
-		return DNS323_REV_C1;
-	default:
-		pr_warn("DNS-323: Unknown PHY ID 0x%04x, assuming rev B1\n",
-			reg & 0xffff);
-	}
-	return DNS323_REV_B1;
-}
-
-static void __init dns323_init(void)
-{
-	/* Setup basic Orion functions. Need to be called early. */
-	orion5x_init();
-
-	/* Identify revision */
-	system_rev = dns323_identify_rev();
-	pr_info("DNS-323: Identified HW revision %c1\n", 'A' + system_rev);
-
-	/* Just to be tricky, the 5182 has a completely different
-	 * set of MPP modes to the 5181.
-	 */
-	switch(system_rev) {
-	case DNS323_REV_A1:
-		orion5x_mpp_conf(dns323a_mpp_modes);
-		writel(0, MPP_DEV_CTRL);		/* DEV_D[31:16] */
-		break;
-	case DNS323_REV_B1:
-		orion5x_mpp_conf(dns323b_mpp_modes);
-		break;
-	case DNS323_REV_C1:
-		orion5x_mpp_conf(dns323c_mpp_modes);
-		break;
-	}
-
-	/* setup flash mapping
-	 * CS3 holds a 8 MB Spansion S29GL064M90TFIR4
-	 */
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    DNS323_NOR_BOOT_BASE,
-				    DNS323_NOR_BOOT_SIZE);
-	platform_device_register(&dns323_nor_flash);
-
-	/* Sort out LEDs, Buttons and i2c devices */
-	switch(system_rev) {
-	case DNS323_REV_A1:
-		/* The 5181 power LED is active low and requires
-		 * DNS323_GPIO_LED_POWER1 to also be low.
-		 */
-		gpiod_add_lookup_table(&dns323a1_leds_gpio_table);
-		gpio_request(DNS323_GPIO_LED_POWER1, "Power Led Enable");
-		gpio_direction_output(DNS323_GPIO_LED_POWER1, 0);
-		i2c_register_board_info(0, dns323ab_i2c_devices,
-					ARRAY_SIZE(dns323ab_i2c_devices));
-
-		break;
-	case DNS323_REV_B1:
-		gpiod_add_lookup_table(&dns323b1_leds_gpio_table);
-		i2c_register_board_info(0, dns323ab_i2c_devices,
-				ARRAY_SIZE(dns323ab_i2c_devices));
-		break;
-	case DNS323_REV_C1:
-		/* Hookup LEDs & Buttons */
-		gpiod_add_lookup_table(&dns323c_leds_gpio_table);
-		dns323_gpio_leds.dev.platform_data = &dns323c_led_data;
-		dns323_button_device.dev.platform_data = &dns323c_button_data;
-
-		/* Hookup i2c devices and fan driver */
-		i2c_register_board_info(0, dns323c_i2c_devices,
-				ARRAY_SIZE(dns323c_i2c_devices));
-		platform_device_register_simple("dns323c-fan", 0, NULL, 0);
-
-		/* Register fixup for the PHY LEDs */
-		if (!IS_BUILTIN(CONFIG_PHYLIB))
-			break;
-		phy_register_fixup_for_uid(MARVELL_PHY_ID_88E1118,
-					   MARVELL_PHY_ID_MASK,
-					   dns323c_phy_fixup);
-	}
-
-	platform_device_register(&dns323_gpio_leds);
-	platform_device_register(&dns323_button_device);
-
-	/*
-	 * Configure peripherals.
-	 */
-	if (dns323_read_mac_addr() < 0)
-		printk("DNS-323: Failed to read MAC address\n");
-	orion5x_ehci0_init();
-	orion5x_eth_init(&dns323_eth_data);
-	orion5x_i2c_init();
-	orion5x_uart0_init();
-
-	/* Remaining GPIOs */
-	switch(system_rev) {
-	case DNS323_REV_A1:
-		/* Poweroff GPIO */
-		if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 ||
-		    gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0)
-			pr_err("DNS-323: failed to setup power-off GPIO\n");
-		register_platform_power_off(dns323a_power_off);
-		break;
-	case DNS323_REV_B1:
-		/* 5182 built-in SATA init */
-		orion5x_sata_init(&dns323_sata_data);
-
-		/* The DNS323 rev B1 has flag to indicate the system is up.
-		 * Without this flag set, power LED will flash and cannot be
-		 * controlled via leds-gpio.
-		 */
-		if (gpio_request(DNS323_GPIO_SYSTEM_UP, "SYS_READY") == 0)
-			gpio_direction_output(DNS323_GPIO_SYSTEM_UP, 1);
-
-		/* Poweroff GPIO */
-		if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 ||
-		    gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0)
-			pr_err("DNS-323: failed to setup power-off GPIO\n");
-		register_platform_power_off(dns323b_power_off);
-		break;
-	case DNS323_REV_C1:
-		/* 5182 built-in SATA init */
-		orion5x_sata_init(&dns323_sata_data);
-
-		/* Poweroff GPIO */
-		if (gpio_request(DNS323C_GPIO_POWER_OFF, "POWEROFF") != 0 ||
-		    gpio_direction_output(DNS323C_GPIO_POWER_OFF, 0) != 0)
-			pr_err("DNS-323: failed to setup power-off GPIO\n");
-		register_platform_power_off(dns323c_power_off);
-
-		/* Now, -this- should theoretically be done by the sata_mv driver
-		 * once I figure out what's going on there. Maybe the behaviour
-		 * of the LEDs should be somewhat passed via the platform_data.
-		 * for now, just whack the register and make the LEDs happy
-		 *
-		 * Note: AFAIK, rev B1 needs the same treatment but I'll let
-		 * somebody else test it.
-		 */
-		writel(0x5, ORION5X_SATA_VIRT_BASE + 0x2c);
-		break;
-	}
-}
-
-/* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */
-MACHINE_START(DNS323, "D-Link DNS-323")
-	/* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= dns323_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
deleted file mode 100644
index e61b9ab06943..000000000000
--- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
+++ /dev/null
@@ -1,407 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-orion5x/kurobox_pro-setup.c
- *
- * Maintainer: Ronen Shitrit <rshitrit@marvell.com>
- */
-#include <linux/gpio/consumer.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/pci.h>
-#include <linux/irq.h>
-#include <linux/delay.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mtd/rawnand.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/i2c.h>
-#include <linux/serial_reg.h>
-#include <linux/ata_platform.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-#include <linux/platform_data/mtd-orion_nand.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-
-/*****************************************************************************
- * KUROBOX-PRO Info
- ****************************************************************************/
-
-/*
- * 256K NOR flash Device bus boot chip select
- */
-
-#define KUROBOX_PRO_NOR_BOOT_BASE	0xf4000000
-#define KUROBOX_PRO_NOR_BOOT_SIZE	SZ_256K
-
-/*
- * 256M NAND flash on Device bus chip select 1
- */
-
-#define KUROBOX_PRO_NAND_BASE		0xfc000000
-#define KUROBOX_PRO_NAND_SIZE		SZ_2M
-
-/*****************************************************************************
- * 256MB NAND Flash on Device bus CS0
- ****************************************************************************/
-
-static struct mtd_partition kurobox_pro_nand_parts[] = {
-	{
-		.name	= "uImage",
-		.offset	= 0,
-		.size	= SZ_4M,
-	}, {
-		.name	= "rootfs",
-		.offset	= SZ_4M,
-		.size	= SZ_64M,
-	}, {
-		.name	= "extra",
-		.offset	= SZ_4M + SZ_64M,
-		.size	= SZ_256M - (SZ_4M + SZ_64M),
-	},
-};
-
-static struct resource kurobox_pro_nand_resource = {
-	.flags		= IORESOURCE_MEM,
-	.start		= KUROBOX_PRO_NAND_BASE,
-	.end		= KUROBOX_PRO_NAND_BASE + KUROBOX_PRO_NAND_SIZE - 1,
-};
-
-static struct orion_nand_data kurobox_pro_nand_data = {
-	.parts		= kurobox_pro_nand_parts,
-	.nr_parts	= ARRAY_SIZE(kurobox_pro_nand_parts),
-	.cle		= 0,
-	.ale		= 1,
-	.width		= 8,
-};
-
-static struct platform_device kurobox_pro_nand_flash = {
-	.name		= "orion_nand",
-	.id		= -1,
-	.dev		= {
-		.platform_data	= &kurobox_pro_nand_data,
-	},
-	.resource	= &kurobox_pro_nand_resource,
-	.num_resources	= 1,
-};
-
-/*****************************************************************************
- * 256KB NOR Flash on BOOT Device
- ****************************************************************************/
-
-static struct physmap_flash_data kurobox_pro_nor_flash_data = {
-	.width		= 1,
-};
-
-static struct resource kurobox_pro_nor_flash_resource = {
-	.flags			= IORESOURCE_MEM,
-	.start			= KUROBOX_PRO_NOR_BOOT_BASE,
-	.end			= KUROBOX_PRO_NOR_BOOT_BASE + KUROBOX_PRO_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device kurobox_pro_nor_flash = {
-	.name			= "physmap-flash",
-	.id			= 0,
-	.dev		= {
-		.platform_data	= &kurobox_pro_nor_flash_data,
-	},
-	.num_resources		= 1,
-	.resource		= &kurobox_pro_nor_flash_resource,
-};
-
-/*****************************************************************************
- * PCI
- ****************************************************************************/
-
-static int __init kurobox_pro_pci_map_irq(const struct pci_dev *dev, u8 slot,
-	u8 pin)
-{
-	int irq;
-
-	/*
-	 * Check for devices with hard-wired IRQs.
-	 */
-	irq = orion5x_pci_map_irq(dev, slot, pin);
-	if (irq != -1)
-		return irq;
-
-	/*
-	 * PCI isn't used on the Kuro
-	 */
-	return -1;
-}
-
-static struct hw_pci kurobox_pro_pci __initdata = {
-	.nr_controllers	= 2,
-	.setup		= orion5x_pci_sys_setup,
-	.scan		= orion5x_pci_sys_scan_bus,
-	.map_irq	= kurobox_pro_pci_map_irq,
-};
-
-static int __init kurobox_pro_pci_init(void)
-{
-	if (machine_is_kurobox_pro()) {
-		orion5x_pci_disable();
-		pci_common_init(&kurobox_pro_pci);
-	}
-
-	return 0;
-}
-
-subsys_initcall(kurobox_pro_pci_init);
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-
-static struct mv643xx_eth_platform_data kurobox_pro_eth_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
-};
-
-/*****************************************************************************
- * RTC 5C372a on I2C bus
- ****************************************************************************/
-static struct i2c_board_info __initdata kurobox_pro_i2c_rtc = {
-	I2C_BOARD_INFO("rs5c372a", 0x32),
-};
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-static struct mv_sata_platform_data kurobox_pro_sata_data = {
-	.n_ports	= 2,
-};
-
-/*****************************************************************************
- * Kurobox Pro specific power off method via UART1-attached microcontroller
- ****************************************************************************/
-
-#define UART1_REG(x)	(UART1_VIRT_BASE + ((UART_##x) << 2))
-
-static int kurobox_pro_miconread(unsigned char *buf, int count)
-{
-	int i;
-	int timeout;
-
-	for (i = 0; i < count; i++) {
-		timeout = 10;
-
-		while (!(readl(UART1_REG(LSR)) & UART_LSR_DR)) {
-			if (--timeout == 0)
-				break;
-			udelay(1000);
-		}
-
-		if (timeout == 0)
-			break;
-		buf[i] = readl(UART1_REG(RX));
-	}
-
-	/* return read bytes */
-	return i;
-}
-
-static int kurobox_pro_miconwrite(const unsigned char *buf, int count)
-{
-	int i = 0;
-
-	while (count--) {
-		while (!(readl(UART1_REG(LSR)) & UART_LSR_THRE))
-			barrier();
-		writel(buf[i++], UART1_REG(TX));
-	}
-
-	return 0;
-}
-
-static int kurobox_pro_miconsend(const unsigned char *data, int count)
-{
-	int i;
-	unsigned char checksum = 0;
-	unsigned char recv_buf[40];
-	unsigned char send_buf[40];
-	unsigned char correct_ack[3];
-	int retry = 2;
-
-	/* Generate checksum */
-	for (i = 0; i < count; i++)
-		checksum -=  data[i];
-
-	do {
-		/* Send data */
-		kurobox_pro_miconwrite(data, count);
-
-		/* send checksum */
-		kurobox_pro_miconwrite(&checksum, 1);
-
-		if (kurobox_pro_miconread(recv_buf, sizeof(recv_buf)) <= 3) {
-			printk(KERN_ERR ">%s: receive failed.\n", __func__);
-
-			/* send preamble to clear the receive buffer */
-			memset(&send_buf, 0xff, sizeof(send_buf));
-			kurobox_pro_miconwrite(send_buf, sizeof(send_buf));
-
-			/* make dummy reads */
-			mdelay(100);
-			kurobox_pro_miconread(recv_buf, sizeof(recv_buf));
-		} else {
-			/* Generate expected ack */
-			correct_ack[0] = 0x01;
-			correct_ack[1] = data[1];
-			correct_ack[2] = 0x00;
-
-			/* checksum Check */
-			if ((recv_buf[0] + recv_buf[1] + recv_buf[2] +
-			     recv_buf[3]) & 0xFF) {
-				printk(KERN_ERR ">%s: Checksum Error : "
-					"Received data[%02x, %02x, %02x, %02x]"
-					"\n", __func__, recv_buf[0],
-					recv_buf[1], recv_buf[2], recv_buf[3]);
-			} else {
-				/* Check Received Data */
-				if (correct_ack[0] == recv_buf[0] &&
-				    correct_ack[1] == recv_buf[1] &&
-				    correct_ack[2] == recv_buf[2]) {
-					/* Interval for next command */
-					mdelay(10);
-
-					/* Receive ACK */
-					return 0;
-				}
-			}
-			/* Received NAK or illegal Data */
-			printk(KERN_ERR ">%s: Error : NAK or Illegal Data "
-					"Received\n", __func__);
-		}
-	} while (retry--);
-
-	/* Interval for next command */
-	mdelay(10);
-
-	return -1;
-}
-
-static void kurobox_pro_power_off(void)
-{
-	const unsigned char watchdogkill[]	= {0x01, 0x35, 0x00};
-	const unsigned char shutdownwait[]	= {0x00, 0x0c};
-	const unsigned char poweroff[]		= {0x00, 0x06};
-	/* 38400 baud divisor */
-	const unsigned divisor = ((orion5x_tclk + (8 * 38400)) / (16 * 38400));
-
-	pr_info("%s: triggering power-off...\n", __func__);
-
-	/* hijack uart1 and reset into sane state (38400,8n1,even parity) */
-	writel(0x83, UART1_REG(LCR));
-	writel(divisor & 0xff, UART1_REG(DLL));
-	writel((divisor >> 8) & 0xff, UART1_REG(DLM));
-	writel(0x1b, UART1_REG(LCR));
-	writel(0x00, UART1_REG(IER));
-	writel(0x07, UART1_REG(FCR));
-	writel(0x00, UART1_REG(MCR));
-
-	/* Send the commands to shutdown the Kurobox Pro */
-	kurobox_pro_miconsend(watchdogkill, sizeof(watchdogkill)) ;
-	kurobox_pro_miconsend(shutdownwait, sizeof(shutdownwait)) ;
-	kurobox_pro_miconsend(poweroff, sizeof(poweroff));
-}
-
-/*****************************************************************************
- * General Setup
- ****************************************************************************/
-static unsigned int kurobox_pro_mpp_modes[] __initdata = {
-	MPP0_UNUSED,
-	MPP1_UNUSED,
-	MPP2_GPIO,		/* GPIO Micon */
-	MPP3_GPIO,		/* GPIO Rtc */
-	MPP4_UNUSED,
-	MPP5_UNUSED,
-	MPP6_NAND,		/* NAND Flash REn */
-	MPP7_NAND,		/* NAND Flash WEn */
-	MPP8_UNUSED,
-	MPP9_UNUSED,
-	MPP10_UNUSED,
-	MPP11_UNUSED,
-	MPP12_SATA_LED,		/* SATA 0 presence */
-	MPP13_SATA_LED,		/* SATA 1 presence */
-	MPP14_SATA_LED,		/* SATA 0 active */
-	MPP15_SATA_LED,		/* SATA 1 active */
-	MPP16_UART,		/* UART1 RXD */
-	MPP17_UART,		/* UART1 TXD */
-	MPP18_UART,		/* UART1 CTSn */
-	MPP19_UART,		/* UART1 RTSn */
-	0,
-};
-
-static void __init kurobox_pro_init(void)
-{
-	/*
-	 * Setup basic Orion functions. Need to be called early.
-	 */
-	orion5x_init();
-
-	orion5x_mpp_conf(kurobox_pro_mpp_modes);
-
-	/*
-	 * Configure peripherals.
-	 */
-	orion5x_ehci0_init();
-	orion5x_ehci1_init();
-	orion5x_eth_init(&kurobox_pro_eth_data);
-	orion5x_i2c_init();
-	orion5x_sata_init(&kurobox_pro_sata_data);
-	orion5x_uart0_init();
-	orion5x_uart1_init();
-	orion5x_xor_init();
-
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    KUROBOX_PRO_NOR_BOOT_BASE,
-				    KUROBOX_PRO_NOR_BOOT_SIZE);
-	platform_device_register(&kurobox_pro_nor_flash);
-
-	if (machine_is_kurobox_pro()) {
-		mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_TARGET(0),
-					    ORION_MBUS_DEVBUS_ATTR(0),
-					    KUROBOX_PRO_NAND_BASE,
-					    KUROBOX_PRO_NAND_SIZE);
-		platform_device_register(&kurobox_pro_nand_flash);
-	}
-
-	i2c_register_board_info(0, &kurobox_pro_i2c_rtc, 1);
-
-	/* register Kurobox Pro specific power-off method */
-	register_platform_power_off(kurobox_pro_power_off);
-}
-
-#ifdef CONFIG_MACH_KUROBOX_PRO
-MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
-	/* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= kurobox_pro_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_MACH_LINKSTATION_PRO
-MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
-	/* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= kurobox_pro_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
-#endif
diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
deleted file mode 100644
index b15fe5b7a0f9..000000000000
--- a/arch/arm/mach-orion5x/mv2120-setup.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (C) 2007 Herbert Valerio Riedel <hvr@gnu.org>
- * Copyright (C) 2008 Martin Michlmayr <tbm@cyrius.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- */
-#include <linux/gpio/legacy.h>
-#include <linux/gpio/machine.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/irq.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/i2c.h>
-#include <linux/ata_platform.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-
-#define MV2120_NOR_BOOT_BASE	0xf4000000
-#define MV2120_NOR_BOOT_SIZE	SZ_512K
-
-#define MV2120_GPIO_RTC_IRQ	3
-#define MV2120_GPIO_KEY_RESET	17
-#define MV2120_GPIO_KEY_POWER	18
-#define MV2120_GPIO_POWER_OFF	19
-
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-static struct mv643xx_eth_platform_data mv2120_eth_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
-};
-
-static struct mv_sata_platform_data mv2120_sata_data = {
-	.n_ports	= 2,
-};
-
-static struct mtd_partition mv2120_partitions[] = {
-	{
-		.name	= "firmware",
-		.size	= 0x00080000,
-		.offset	= 0,
-	},
-};
-
-static struct physmap_flash_data mv2120_nor_flash_data = {
-	.width		= 1,
-	.parts		= mv2120_partitions,
-	.nr_parts	= ARRAY_SIZE(mv2120_partitions)
-};
-
-static struct resource mv2120_nor_flash_resource = {
-	.flags		= IORESOURCE_MEM,
-	.start		= MV2120_NOR_BOOT_BASE,
-	.end		= MV2120_NOR_BOOT_BASE + MV2120_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device mv2120_nor_flash = {
-	.name		= "physmap-flash",
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &mv2120_nor_flash_data,
-	},
-	.resource	= &mv2120_nor_flash_resource,
-	.num_resources	= 1,
-};
-
-static struct gpio_keys_button mv2120_buttons[] = {
-	{
-		.code		= KEY_RESTART,
-		.gpio		= MV2120_GPIO_KEY_RESET,
-		.desc		= "reset",
-		.active_low	= 1,
-	}, {
-		.code		= KEY_POWER,
-		.gpio		= MV2120_GPIO_KEY_POWER,
-		.desc		= "power",
-		.active_low	= 1,
-	},
-};
-
-static struct gpio_keys_platform_data mv2120_button_data = {
-	.buttons	= mv2120_buttons,
-	.nbuttons	= ARRAY_SIZE(mv2120_buttons),
-};
-
-static struct platform_device mv2120_button_device = {
-	.name		= "gpio-keys",
-	.id		= -1,
-	.num_resources	= 0,
-	.dev		= {
-		.platform_data	= &mv2120_button_data,
-	},
-};
-
-
-/****************************************************************************
- * General Setup
- ****************************************************************************/
-static unsigned int mv2120_mpp_modes[] __initdata = {
-	MPP0_GPIO,		/* Sys status LED */
-	MPP1_GPIO,		/* Sys error LED */
-	MPP2_GPIO,		/* OverTemp interrupt */
-	MPP3_GPIO,		/* RTC interrupt */
-	MPP4_GPIO,		/* V_LED 5V */
-	MPP5_GPIO,		/* V_LED 3.3V */
-	MPP6_UNUSED,
-	MPP7_UNUSED,
-	MPP8_GPIO,		/* SATA 0 fail LED */
-	MPP9_GPIO,		/* SATA 1 fail LED */
-	MPP10_UNUSED,
-	MPP11_UNUSED,
-	MPP12_SATA_LED,		/* SATA 0 presence */
-	MPP13_SATA_LED,		/* SATA 1 presence */
-	MPP14_SATA_LED,		/* SATA 0 active */
-	MPP15_SATA_LED,		/* SATA 1 active */
-	MPP16_UNUSED,
-	MPP17_GPIO,		/* Reset button */
-	MPP18_GPIO,		/* Power button */
-	MPP19_GPIO,		/* Power off */
-	0,
-};
-
-static struct i2c_board_info __initdata mv2120_i2c_rtc = {
-	I2C_BOARD_INFO("pcf8563", 0x51),
-	.irq	= 0,
-};
-
-static struct gpio_led mv2120_led_pins[] = {
-	{
-		.name			= "mv2120:blue:health",
-	},
-	{
-		.name			= "mv2120:red:health",
-	},
-	{
-		.name			= "mv2120:led:bright",
-		.default_trigger	= "default-on",
-	},
-	{
-		.name			= "mv2120:led:dimmed",
-	},
-	{
-		.name			= "mv2120:red:sata0",
-	},
-	{
-		.name			= "mv2120:red:sata1",
-	},
-
-};
-
-static struct gpiod_lookup_table mv2120_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP_IDX("orion_gpio0", 0, NULL,
-				0, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", 1, NULL,
-				1, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", 4, NULL,
-				2, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", 5, NULL,
-				3, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", 8, NULL,
-				4, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", 9, NULL,
-				5, GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpio_led_platform_data mv2120_led_data = {
-	.leds		= mv2120_led_pins,
-	.num_leds	= ARRAY_SIZE(mv2120_led_pins),
-};
-
-static struct platform_device mv2120_leds = {
-	.name	= "leds-gpio",
-	.id	= -1,
-	.dev	= {
-		.platform_data	= &mv2120_led_data,
-	}
-};
-
-static void mv2120_power_off(void)
-{
-	pr_info("%s: triggering power-off...\n", __func__);
-	gpio_set_value(MV2120_GPIO_POWER_OFF, 0);
-}
-
-static void __init mv2120_init(void)
-{
-	/* Setup basic Orion functions. Need to be called early. */
-	orion5x_init();
-
-	orion5x_mpp_conf(mv2120_mpp_modes);
-
-	/*
-	 * Configure peripherals.
-	 */
-	orion5x_ehci0_init();
-	orion5x_ehci1_init();
-	orion5x_eth_init(&mv2120_eth_data);
-	orion5x_i2c_init();
-	orion5x_sata_init(&mv2120_sata_data);
-	orion5x_uart0_init();
-	orion5x_xor_init();
-
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    MV2120_NOR_BOOT_BASE,
-				    MV2120_NOR_BOOT_SIZE);
-	platform_device_register(&mv2120_nor_flash);
-
-	platform_device_register(&mv2120_button_device);
-
-	if (gpio_request(MV2120_GPIO_RTC_IRQ, "rtc") == 0) {
-		if (gpio_direction_input(MV2120_GPIO_RTC_IRQ) == 0)
-			mv2120_i2c_rtc.irq = gpio_to_irq(MV2120_GPIO_RTC_IRQ);
-		else
-			gpio_free(MV2120_GPIO_RTC_IRQ);
-	}
-	i2c_register_board_info(0, &mv2120_i2c_rtc, 1);
-	gpiod_add_lookup_table(&mv2120_leds_gpio_table);
-	platform_device_register(&mv2120_leds);
-
-	/* register mv2120 specific power-off method */
-	if (gpio_request(MV2120_GPIO_POWER_OFF, "POWEROFF") != 0 ||
-	    gpio_direction_output(MV2120_GPIO_POWER_OFF, 1) != 0)
-		pr_err("mv2120: failed to setup power-off GPIO\n");
-	register_platform_power_off(mv2120_power_off);
-}
-
-/* Warning: HP uses a wrong mach-type (=526) in their bootloader */
-MACHINE_START(MV2120, "HP Media Vault mv2120")
-	/* Maintainer: Martin Michlmayr <tbm@cyrius.com> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= mv2120_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
deleted file mode 100644
index f04571e79805..000000000000
--- a/arch/arm/mach-orion5x/net2big-setup.c
+++ /dev/null
@@ -1,444 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-orion5x/net2big-setup.c
- *
- * LaCie 2Big Network NAS setup
- *
- * Copyright (C) 2009 Simon Guinot <sguinot@lacie.com>
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/i2c.h>
-#include <linux/ata_platform.h>
-#include <linux/gpio/legacy.h>
-#include <linux/gpio/machine.h>
-#include <linux/delay.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <plat/orion-gpio.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-
-/*****************************************************************************
- * LaCie 2Big Network Info
- ****************************************************************************/
-
-/*
- * 512KB NOR flash Device bus boot chip select
- */
-
-#define NET2BIG_NOR_BOOT_BASE		0xfff80000
-#define NET2BIG_NOR_BOOT_SIZE		SZ_512K
-
-/*****************************************************************************
- * 512KB NOR Flash on Boot Device
- ****************************************************************************/
-
-/*
- * TODO: Check write support on flash MX29LV400CBTC-70G
- */
-
-static struct mtd_partition net2big_partitions[] = {
-	{
-		.name		= "Full512kb",
-		.size		= MTDPART_SIZ_FULL,
-		.offset		= 0x00000000,
-		.mask_flags	= MTD_WRITEABLE,
-	},
-};
-
-static struct physmap_flash_data net2big_nor_flash_data = {
-	.width		= 1,
-	.parts		= net2big_partitions,
-	.nr_parts	= ARRAY_SIZE(net2big_partitions),
-};
-
-static struct resource net2big_nor_flash_resource = {
-	.flags			= IORESOURCE_MEM,
-	.start			= NET2BIG_NOR_BOOT_BASE,
-	.end			= NET2BIG_NOR_BOOT_BASE
-					+ NET2BIG_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device net2big_nor_flash = {
-	.name			= "physmap-flash",
-	.id			= 0,
-	.dev		= {
-		.platform_data	= &net2big_nor_flash_data,
-	},
-	.num_resources		= 1,
-	.resource		= &net2big_nor_flash_resource,
-};
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-
-static struct mv643xx_eth_platform_data net2big_eth_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
-};
-
-/*****************************************************************************
- * I2C devices
- ****************************************************************************/
-
-/*
- * i2c addr | chip         | description
- * 0x32     | Ricoh 5C372b | RTC
- * 0x50     | HT24LC08     | eeprom (1kB)
- */
-static struct i2c_board_info __initdata net2big_i2c_devices[] = {
-	{
-		I2C_BOARD_INFO("rs5c372b", 0x32),
-	}, {
-		I2C_BOARD_INFO("24c08", 0x50),
-	},
-};
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-
-static struct mv_sata_platform_data net2big_sata_data = {
-	.n_ports	= 2,
-};
-
-#define NET2BIG_GPIO_SATA_POWER_REQ	19
-#define NET2BIG_GPIO_SATA0_POWER	23
-#define NET2BIG_GPIO_SATA1_POWER	25
-
-static void __init net2big_sata_power_init(void)
-{
-	int err;
-
-	/* Configure GPIOs over MPP max number. */
-	orion_gpio_set_valid(NET2BIG_GPIO_SATA0_POWER, 1);
-	orion_gpio_set_valid(NET2BIG_GPIO_SATA1_POWER, 1);
-
-	err = gpio_request(NET2BIG_GPIO_SATA0_POWER, "SATA0 power status");
-	if (err == 0) {
-		err = gpio_direction_input(NET2BIG_GPIO_SATA0_POWER);
-		if (err)
-			gpio_free(NET2BIG_GPIO_SATA0_POWER);
-	}
-	if (err) {
-		pr_err("net2big: failed to setup SATA0 power GPIO\n");
-		return;
-	}
-
-	err = gpio_request(NET2BIG_GPIO_SATA1_POWER, "SATA1 power status");
-	if (err == 0) {
-		err = gpio_direction_input(NET2BIG_GPIO_SATA1_POWER);
-		if (err)
-			gpio_free(NET2BIG_GPIO_SATA1_POWER);
-	}
-	if (err) {
-		pr_err("net2big: failed to setup SATA1 power GPIO\n");
-		goto err_free_1;
-	}
-
-	err = gpio_request(NET2BIG_GPIO_SATA_POWER_REQ, "SATA power request");
-	if (err == 0) {
-		err = gpio_direction_output(NET2BIG_GPIO_SATA_POWER_REQ, 0);
-		if (err)
-			gpio_free(NET2BIG_GPIO_SATA_POWER_REQ);
-	}
-	if (err) {
-		pr_err("net2big: failed to setup SATA power request GPIO\n");
-		goto err_free_2;
-	}
-
-	if (gpio_get_value(NET2BIG_GPIO_SATA0_POWER) &&
-		gpio_get_value(NET2BIG_GPIO_SATA1_POWER)) {
-		return;
-	}
-
-	/*
-	 * SATA power up on both disk is done by pulling high the CPLD power
-	 * request line. The 300ms delay is related to the CPLD clock and is
-	 * needed to be sure that the CPLD has take into account the low line
-	 * status.
-	 */
-	msleep(300);
-	gpio_set_value(NET2BIG_GPIO_SATA_POWER_REQ, 1);
-	pr_info("net2big: power up SATA hard disks\n");
-
-	return;
-
-err_free_2:
-	gpio_free(NET2BIG_GPIO_SATA1_POWER);
-err_free_1:
-	gpio_free(NET2BIG_GPIO_SATA0_POWER);
-
-	return;
-}
-
-/*****************************************************************************
- * GPIO LEDs
- ****************************************************************************/
-
-/*
- * The power front LEDs (blue and red) and SATA red LEDs are controlled via a
- * single GPIO line and are compatible with the leds-gpio driver.
- *
- * The SATA blue LEDs have some hardware blink capabilities which are detailed
- * in the following array:
- *
- * SATAx blue LED | SATAx activity | LED state
- *                |                |
- *       0        |       0        |  blink (rate 300ms)
- *       1        |       0        |  off
- *       ?        |       1        |  on
- *
- * Notes: The blue and the red front LED's can't be on at the same time.
- *        Blue LED have priority.
- */
-
-#define NET2BIG_GPIO_PWR_RED_LED	6
-#define NET2BIG_GPIO_PWR_BLUE_LED	16
-#define NET2BIG_GPIO_PWR_LED_BLINK_STOP	7
-
-#define NET2BIG_GPIO_SATA0_RED_LED	11
-#define NET2BIG_GPIO_SATA1_RED_LED	10
-
-#define NET2BIG_GPIO_SATA0_BLUE_LED	17
-#define NET2BIG_GPIO_SATA1_BLUE_LED	13
-
-static struct gpio_led net2big_leds[] = {
-	{
-		.name = "net2big:red:power",
-	},
-	{
-		.name = "net2big:blue:power",
-	},
-	{
-		.name = "net2big:red:sata0",
-	},
-	{
-		.name = "net2big:red:sata1",
-	},
-};
-
-static struct gpiod_lookup_table net2big_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_PWR_RED_LED, NULL,
-				0, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_PWR_BLUE_LED, NULL,
-				1, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_SATA0_RED_LED, NULL,
-				2, GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_SATA1_RED_LED, NULL,
-				3, GPIO_ACTIVE_HIGH),
-		{ },
-	},
-};
-
-static struct gpio_led_platform_data net2big_led_data = {
-	.num_leds = ARRAY_SIZE(net2big_leds),
-	.leds = net2big_leds,
-};
-
-static struct platform_device net2big_gpio_leds = {
-	.name           = "leds-gpio",
-	.id             = -1,
-	.dev            = {
-		.platform_data  = &net2big_led_data,
-	},
-};
-
-static void __init net2big_gpio_leds_init(void)
-{
-	int err;
-
-	/* Stop initial CPLD slow red/blue blinking on power LED. */
-	err = gpio_request(NET2BIG_GPIO_PWR_LED_BLINK_STOP,
-			   "Power LED blink stop");
-	if (err == 0) {
-		err = gpio_direction_output(NET2BIG_GPIO_PWR_LED_BLINK_STOP, 1);
-		if (err)
-			gpio_free(NET2BIG_GPIO_PWR_LED_BLINK_STOP);
-	}
-	if (err)
-		pr_err("net2big: failed to setup power LED blink GPIO\n");
-
-	/*
-	 * Configure SATA0 and SATA1 blue LEDs to blink in relation with the
-	 * hard disk activity.
-	 */
-	err = gpio_request(NET2BIG_GPIO_SATA0_BLUE_LED,
-			   "SATA0 blue LED control");
-	if (err == 0) {
-		err = gpio_direction_output(NET2BIG_GPIO_SATA0_BLUE_LED, 1);
-		if (err)
-			gpio_free(NET2BIG_GPIO_SATA0_BLUE_LED);
-	}
-	if (err)
-		pr_err("net2big: failed to setup SATA0 blue LED GPIO\n");
-
-	err = gpio_request(NET2BIG_GPIO_SATA1_BLUE_LED,
-			   "SATA1 blue LED control");
-	if (err == 0) {
-		err = gpio_direction_output(NET2BIG_GPIO_SATA1_BLUE_LED, 1);
-		if (err)
-			gpio_free(NET2BIG_GPIO_SATA1_BLUE_LED);
-	}
-	if (err)
-		pr_err("net2big: failed to setup SATA1 blue LED GPIO\n");
-
-	gpiod_add_lookup_table(&net2big_leds_gpio_table);
-	platform_device_register(&net2big_gpio_leds);
-}
-
-/****************************************************************************
- * GPIO keys
- ****************************************************************************/
-
-#define NET2BIG_GPIO_PUSH_BUTTON	18
-#define NET2BIG_GPIO_POWER_SWITCH_ON	8
-#define NET2BIG_GPIO_POWER_SWITCH_OFF	9
-
-#define NET2BIG_SWITCH_POWER_ON		0x1
-#define NET2BIG_SWITCH_POWER_OFF	0x2
-
-static struct gpio_keys_button net2big_buttons[] = {
-	{
-		.type		= EV_SW,
-		.code		= NET2BIG_SWITCH_POWER_OFF,
-		.gpio		= NET2BIG_GPIO_POWER_SWITCH_OFF,
-		.desc		= "Power rocker switch (auto|off)",
-		.active_low	= 0,
-	},
-	{
-		.type		= EV_SW,
-		.code		= NET2BIG_SWITCH_POWER_ON,
-		.gpio		= NET2BIG_GPIO_POWER_SWITCH_ON,
-		.desc		= "Power rocker switch (on|auto)",
-		.active_low	= 0,
-	},
-	{
-		.type		= EV_KEY,
-		.code		= KEY_POWER,
-		.gpio		= NET2BIG_GPIO_PUSH_BUTTON,
-		.desc		= "Front Push Button",
-		.active_low	= 0,
-	},
-};
-
-static struct gpio_keys_platform_data net2big_button_data = {
-	.buttons	= net2big_buttons,
-	.nbuttons	= ARRAY_SIZE(net2big_buttons),
-};
-
-static struct platform_device net2big_gpio_buttons = {
-	.name		= "gpio-keys",
-	.id		= -1,
-	.dev		= {
-		.platform_data	= &net2big_button_data,
-	},
-};
-
-/*****************************************************************************
- * General Setup
- ****************************************************************************/
-
-static unsigned int net2big_mpp_modes[] __initdata = {
-	MPP0_GPIO,	/* Raid mode (bit 0) */
-	MPP1_GPIO,	/* USB port 2 fuse (0 = Fail, 1 = Ok) */
-	MPP2_GPIO,	/* Raid mode (bit 1) */
-	MPP3_GPIO,	/* Board ID (bit 0) */
-	MPP4_GPIO,	/* Fan activity (0 = Off, 1 = On) */
-	MPP5_GPIO,	/* Fan fail detection */
-	MPP6_GPIO,	/* Red front LED (0 = Off, 1 = On) */
-	MPP7_GPIO,	/* Disable initial blinking on front LED */
-	MPP8_GPIO,	/* Rear power switch (on|auto) */
-	MPP9_GPIO,	/* Rear power switch (auto|off) */
-	MPP10_GPIO,	/* SATA 1 red LED (0 = Off, 1 = On) */
-	MPP11_GPIO,	/* SATA 0 red LED (0 = Off, 1 = On) */
-	MPP12_GPIO,	/* Board ID (bit 1) */
-	MPP13_GPIO,	/* SATA 1 blue LED blink control */
-	MPP14_SATA_LED,
-	MPP15_SATA_LED,
-	MPP16_GPIO,	/* Blue front LED control */
-	MPP17_GPIO,	/* SATA 0 blue LED blink control */
-	MPP18_GPIO,	/* Front button (0 = Released, 1 = Pushed ) */
-	MPP19_GPIO,	/* SATA{0,1} power On/Off request */
-	0,
-	/* 22: USB port 1 fuse (0 = Fail, 1 = Ok) */
-	/* 23: SATA 0 power status */
-	/* 24: Board power off */
-	/* 25: SATA 1 power status */
-};
-
-#define NET2BIG_GPIO_POWER_OFF		24
-
-static void net2big_power_off(void)
-{
-	gpio_set_value(NET2BIG_GPIO_POWER_OFF, 1);
-}
-
-static void __init net2big_init(void)
-{
-	/*
-	 * Setup basic Orion functions. Need to be called early.
-	 */
-	orion5x_init();
-
-	orion5x_mpp_conf(net2big_mpp_modes);
-
-	/*
-	 * Configure peripherals.
-	 */
-	orion5x_ehci0_init();
-	orion5x_ehci1_init();
-	orion5x_eth_init(&net2big_eth_data);
-	orion5x_i2c_init();
-	orion5x_uart0_init();
-	orion5x_xor_init();
-
-	net2big_sata_power_init();
-	orion5x_sata_init(&net2big_sata_data);
-
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    NET2BIG_NOR_BOOT_BASE,
-				    NET2BIG_NOR_BOOT_SIZE);
-	platform_device_register(&net2big_nor_flash);
-
-	platform_device_register(&net2big_gpio_buttons);
-	net2big_gpio_leds_init();
-
-	i2c_register_board_info(0, net2big_i2c_devices,
-				ARRAY_SIZE(net2big_i2c_devices));
-
-	orion_gpio_set_valid(NET2BIG_GPIO_POWER_OFF, 1);
-
-	if (gpio_request(NET2BIG_GPIO_POWER_OFF, "power-off") == 0 &&
-	    gpio_direction_output(NET2BIG_GPIO_POWER_OFF, 0) == 0)
-		register_platform_power_off(net2big_power_off);
-	else
-		pr_err("net2big: failed to configure power-off GPIO\n");
-
-	pr_notice("net2big: Flash writing is not yet supported.\n");
-}
-
-/* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
-MACHINE_START(NET2BIG, "LaCie 2Big Network")
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= net2big_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
index 06f5320036b1..3d1e6ad0e14b 100644
--- a/arch/arm/mach-orion5x/pci.c
+++ b/arch/arm/mach-orion5x/pci.c
@@ -15,7 +15,6 @@
 #include <asm/irq.h>
 #include <asm/mach/pci.h>
 #include <plat/pcie.h>
-#include <plat/addr-map.h>
 #include "common.h"
 #include "orion5x.h"
 
diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
deleted file mode 100644
index c3db3376950a..000000000000
--- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
+++ /dev/null
@@ -1,366 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Buffalo Terastation Pro II/Live Board Setup
- *
- * Maintainer: Sylver Bruneau <sylver.bruneau@googlemail.com>
- */
-#include <linux/gpio/legacy.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/pci.h>
-#include <linux/irq.h>
-#include <linux/delay.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/i2c.h>
-#include <linux/serial_reg.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-
-/*****************************************************************************
- * Terastation Pro 2/Live Info
- ****************************************************************************/
-
-/*
- * Terastation Pro 2 hardware :
- * - Marvell 88F5281-D0
- * - Marvell 88SX6042 SATA controller (PCI)
- * - Marvell 88E1118 Gigabit Ethernet PHY
- * - 256KB NOR flash
- * - 128MB of DDR RAM
- * - PCIe port (not equipped)
- */
-
-/*
- * 256K NOR flash Device bus boot chip select
- */
-
-#define TSP2_NOR_BOOT_BASE	0xf4000000
-#define TSP2_NOR_BOOT_SIZE	SZ_256K
-
-/*****************************************************************************
- * 256KB NOR Flash on BOOT Device
- ****************************************************************************/
-
-static struct physmap_flash_data tsp2_nor_flash_data = {
-	.width    = 1,
-};
-
-static struct resource tsp2_nor_flash_resource = {
-	.flags = IORESOURCE_MEM,
-	.start = TSP2_NOR_BOOT_BASE,
-	.end   = TSP2_NOR_BOOT_BASE + TSP2_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device tsp2_nor_flash = {
-	.name          = "physmap-flash",
-	.id            = 0,
-	.dev           = {
-		.platform_data	= &tsp2_nor_flash_data,
-	},
-	.num_resources = 1,
-	.resource      = &tsp2_nor_flash_resource,
-};
-
-/*****************************************************************************
- * PCI
- ****************************************************************************/
-#define TSP2_PCI_SLOT0_OFFS		7
-#define TSP2_PCI_SLOT0_IRQ_PIN		11
-
-static void __init tsp2_pci_preinit(void)
-{
-	int pin;
-
-	/*
-	 * Configure PCI GPIO IRQ pins
-	 */
-	pin = TSP2_PCI_SLOT0_IRQ_PIN;
-	if (gpio_request(pin, "PCI Int1") == 0) {
-		if (gpio_direction_input(pin) == 0) {
-			irq_set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
-		} else {
-			printk(KERN_ERR "tsp2_pci_preinit failed "
-					"to set_irq_type pin %d\n", pin);
-			gpio_free(pin);
-		}
-	} else {
-		printk(KERN_ERR "tsp2_pci_preinit failed to "
-				"gpio_request %d\n", pin);
-	}
-}
-
-static int __init tsp2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-	int irq;
-
-	/*
-	 * Check for devices with hard-wired IRQs.
-	 */
-	irq = orion5x_pci_map_irq(dev, slot, pin);
-	if (irq != -1)
-		return irq;
-
-	/*
-	 * PCI IRQs are connected via GPIOs.
-	 */
-	if (slot == TSP2_PCI_SLOT0_OFFS)
-		return gpio_to_irq(TSP2_PCI_SLOT0_IRQ_PIN);
-
-	return -1;
-}
-
-static struct hw_pci tsp2_pci __initdata = {
-	.nr_controllers = 2,
-	.preinit        = tsp2_pci_preinit,
-	.setup          = orion5x_pci_sys_setup,
-	.scan           = orion5x_pci_sys_scan_bus,
-	.map_irq        = tsp2_pci_map_irq,
-};
-
-static int __init tsp2_pci_init(void)
-{
-	if (machine_is_terastation_pro2())
-		pci_common_init(&tsp2_pci);
-
-	return 0;
-}
-
-subsys_initcall(tsp2_pci_init);
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-
-static struct mv643xx_eth_platform_data tsp2_eth_data = {
-	.phy_addr	= 0,
-};
-
-/*****************************************************************************
- * RTC 5C372a on I2C bus
- ****************************************************************************/
-
-#define TSP2_RTC_GPIO	9
-
-static struct i2c_board_info __initdata tsp2_i2c_rtc = {
-	I2C_BOARD_INFO("rs5c372a", 0x32),
-};
-
-/*****************************************************************************
- * Terastation Pro II specific power off method via UART1-attached
- * microcontroller
- ****************************************************************************/
-
-#define UART1_REG(x)	(UART1_VIRT_BASE + ((UART_##x) << 2))
-
-static int tsp2_miconread(unsigned char *buf, int count)
-{
-	int i;
-	int timeout;
-
-	for (i = 0; i < count; i++) {
-		timeout = 10;
-
-		while (!(readl(UART1_REG(LSR)) & UART_LSR_DR)) {
-			if (--timeout == 0)
-				break;
-			udelay(1000);
-		}
-
-		if (timeout == 0)
-			break;
-		buf[i] = readl(UART1_REG(RX));
-	}
-
-	/* return read bytes */
-	return i;
-}
-
-static int tsp2_miconwrite(const unsigned char *buf, int count)
-{
-	int i = 0;
-
-	while (count--) {
-		while (!(readl(UART1_REG(LSR)) & UART_LSR_THRE))
-			barrier();
-		writel(buf[i++], UART1_REG(TX));
-	}
-
-	return 0;
-}
-
-static int tsp2_miconsend(const unsigned char *data, int count)
-{
-	int i;
-	unsigned char checksum = 0;
-	unsigned char recv_buf[40];
-	unsigned char send_buf[40];
-	unsigned char correct_ack[3];
-	int retry = 2;
-
-	/* Generate checksum */
-	for (i = 0; i < count; i++)
-		checksum -=  data[i];
-
-	do {
-		/* Send data */
-		tsp2_miconwrite(data, count);
-
-		/* send checksum */
-		tsp2_miconwrite(&checksum, 1);
-
-		if (tsp2_miconread(recv_buf, sizeof(recv_buf)) <= 3) {
-			printk(KERN_ERR ">%s: receive failed.\n", __func__);
-
-			/* send preamble to clear the receive buffer */
-			memset(&send_buf, 0xff, sizeof(send_buf));
-			tsp2_miconwrite(send_buf, sizeof(send_buf));
-
-			/* make dummy reads */
-			mdelay(100);
-			tsp2_miconread(recv_buf, sizeof(recv_buf));
-		} else {
-			/* Generate expected ack */
-			correct_ack[0] = 0x01;
-			correct_ack[1] = data[1];
-			correct_ack[2] = 0x00;
-
-			/* checksum Check */
-			if ((recv_buf[0] + recv_buf[1] + recv_buf[2] +
-			     recv_buf[3]) & 0xFF) {
-				printk(KERN_ERR ">%s: Checksum Error : "
-					"Received data[%02x, %02x, %02x, %02x]"
-					"\n", __func__, recv_buf[0],
-					recv_buf[1], recv_buf[2], recv_buf[3]);
-			} else {
-				/* Check Received Data */
-				if (correct_ack[0] == recv_buf[0] &&
-				    correct_ack[1] == recv_buf[1] &&
-				    correct_ack[2] == recv_buf[2]) {
-					/* Interval for next command */
-					mdelay(10);
-
-					/* Receive ACK */
-					return 0;
-				}
-			}
-			/* Received NAK or illegal Data */
-			printk(KERN_ERR ">%s: Error : NAK or Illegal Data "
-					"Received\n", __func__);
-		}
-	} while (retry--);
-
-	/* Interval for next command */
-	mdelay(10);
-
-	return -1;
-}
-
-static void tsp2_power_off(void)
-{
-	const unsigned char watchdogkill[]	= {0x01, 0x35, 0x00};
-	const unsigned char shutdownwait[]	= {0x00, 0x0c};
-	const unsigned char poweroff[]		= {0x00, 0x06};
-	/* 38400 baud divisor */
-	const unsigned divisor = ((orion5x_tclk + (8 * 38400)) / (16 * 38400));
-
-	pr_info("%s: triggering power-off...\n", __func__);
-
-	/* hijack uart1 and reset into sane state (38400,8n1,even parity) */
-	writel(0x83, UART1_REG(LCR));
-	writel(divisor & 0xff, UART1_REG(DLL));
-	writel((divisor >> 8) & 0xff, UART1_REG(DLM));
-	writel(0x1b, UART1_REG(LCR));
-	writel(0x00, UART1_REG(IER));
-	writel(0x07, UART1_REG(FCR));
-	writel(0x00, UART1_REG(MCR));
-
-	/* Send the commands to shutdown the Terastation Pro II */
-	tsp2_miconsend(watchdogkill, sizeof(watchdogkill)) ;
-	tsp2_miconsend(shutdownwait, sizeof(shutdownwait)) ;
-	tsp2_miconsend(poweroff, sizeof(poweroff));
-}
-
-/*****************************************************************************
- * General Setup
- ****************************************************************************/
-static unsigned int tsp2_mpp_modes[] __initdata = {
-	MPP0_PCIE_RST_OUTn,
-	MPP1_UNUSED,
-	MPP2_UNUSED,
-	MPP3_UNUSED,
-	MPP4_NAND,		/* BOOT NAND Flash REn */
-	MPP5_NAND,		/* BOOT NAND Flash WEn */
-	MPP6_NAND,		/* BOOT NAND Flash HREn[0] */
-	MPP7_NAND,		/* BOOT NAND Flash WEn[0] */
-	MPP8_GPIO,		/* MICON int */
-	MPP9_GPIO,		/* RTC int */
-	MPP10_UNUSED,
-	MPP11_GPIO,		/* PCI Int A */
-	MPP12_UNUSED,
-	MPP13_GPIO,		/* UPS on UART0 enable */
-	MPP14_GPIO,		/* UPS low battery detection */
-	MPP15_UNUSED,
-	MPP16_UART,		/* UART1 RXD */
-	MPP17_UART,		/* UART1 TXD */
-	MPP18_UART,		/* UART1 CTSn */
-	MPP19_UART,		/* UART1 RTSn */
-	0,
-};
-
-static void __init tsp2_init(void)
-{
-	/*
-	 * Setup basic Orion functions. Need to be called early.
-	 */
-	orion5x_init();
-
-	orion5x_mpp_conf(tsp2_mpp_modes);
-
-	/*
-	 * Configure peripherals.
-	 */
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    TSP2_NOR_BOOT_BASE,
-				    TSP2_NOR_BOOT_SIZE);
-	platform_device_register(&tsp2_nor_flash);
-
-	orion5x_ehci0_init();
-	orion5x_eth_init(&tsp2_eth_data);
-	orion5x_i2c_init();
-	orion5x_uart0_init();
-	orion5x_uart1_init();
-
-	/* Get RTC IRQ and register the chip */
-	if (gpio_request(TSP2_RTC_GPIO, "rtc") == 0) {
-		if (gpio_direction_input(TSP2_RTC_GPIO) == 0)
-			tsp2_i2c_rtc.irq = gpio_to_irq(TSP2_RTC_GPIO);
-		else
-			gpio_free(TSP2_RTC_GPIO);
-	}
-	if (tsp2_i2c_rtc.irq == 0)
-		pr_warn("tsp2_init: failed to get RTC IRQ\n");
-	i2c_register_board_info(0, &tsp2_i2c_rtc, 1);
-
-	/* register Terastation Pro II specific power-off method */
-	register_platform_power_off(tsp2_power_off);
-}
-
-MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
-	/* Maintainer:  Sylver Bruneau <sylver.bruneau@googlemail.com> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= tsp2_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
deleted file mode 100644
index 25cd50306c65..000000000000
--- a/arch/arm/mach-orion5x/ts209-setup.c
+++ /dev/null
@@ -1,331 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * QNAP TS-109/TS-209 Board Setup
- *
- * Maintainer: Byron Bradley <byron.bbradley@gmail.com>
- */
-#include <linux/gpio/legacy.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/pci.h>
-#include <linux/irq.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mtd/rawnand.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/i2c.h>
-#include <linux/serial_reg.h>
-#include <linux/ata_platform.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-#include "tsx09-common.h"
-
-#define QNAP_TS209_NOR_BOOT_BASE 0xf4000000
-#define QNAP_TS209_NOR_BOOT_SIZE SZ_8M
-
-/****************************************************************************
- * 8MiB NOR flash. The struct mtd_partition is not in the same order as the
- *     partitions on the device because we want to keep compatibility with
- *     existing QNAP firmware.
- *
- * Layout as used by QNAP:
- *  [2] 0x00000000-0x00200000 : "Kernel"
- *  [3] 0x00200000-0x00600000 : "RootFS1"
- *  [4] 0x00600000-0x00700000 : "RootFS2"
- *  [6] 0x00700000-0x00760000 : "NAS Config" (read-only)
- *  [5] 0x00760000-0x00780000 : "U-Boot Config"
- *  [1] 0x00780000-0x00800000 : "U-Boot" (read-only)
- ***************************************************************************/
-static struct mtd_partition qnap_ts209_partitions[] = {
-	{
-		.name		= "U-Boot",
-		.size		= 0x00080000,
-		.offset		= 0x00780000,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "Kernel",
-		.size		= 0x00200000,
-		.offset		= 0,
-	}, {
-		.name		= "RootFS1",
-		.size		= 0x00400000,
-		.offset		= 0x00200000,
-	}, {
-		.name		= "RootFS2",
-		.size		= 0x00100000,
-		.offset		= 0x00600000,
-	}, {
-		.name		= "U-Boot Config",
-		.size		= 0x00020000,
-		.offset		= 0x00760000,
-	}, {
-		.name		= "NAS Config",
-		.size		= 0x00060000,
-		.offset		= 0x00700000,
-		.mask_flags	= MTD_WRITEABLE,
-	},
-};
-
-static struct physmap_flash_data qnap_ts209_nor_flash_data = {
-	.width		= 1,
-	.parts		= qnap_ts209_partitions,
-	.nr_parts	= ARRAY_SIZE(qnap_ts209_partitions)
-};
-
-static struct resource qnap_ts209_nor_flash_resource = {
-	.flags	= IORESOURCE_MEM,
-	.start	= QNAP_TS209_NOR_BOOT_BASE,
-	.end	= QNAP_TS209_NOR_BOOT_BASE + QNAP_TS209_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device qnap_ts209_nor_flash = {
-	.name		= "physmap-flash",
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &qnap_ts209_nor_flash_data,
-	},
-	.resource	= &qnap_ts209_nor_flash_resource,
-	.num_resources	= 1,
-};
-
-/*****************************************************************************
- * PCI
- ****************************************************************************/
-
-#define QNAP_TS209_PCI_SLOT0_OFFS	7
-#define QNAP_TS209_PCI_SLOT0_IRQ_PIN	6
-#define QNAP_TS209_PCI_SLOT1_IRQ_PIN	7
-
-static void __init qnap_ts209_pci_preinit(void)
-{
-	int pin;
-
-	/*
-	 * Configure PCI GPIO IRQ pins
-	 */
-	pin = QNAP_TS209_PCI_SLOT0_IRQ_PIN;
-	if (gpio_request(pin, "PCI Int1") == 0) {
-		if (gpio_direction_input(pin) == 0) {
-			irq_set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
-		} else {
-			printk(KERN_ERR "qnap_ts209_pci_preinit failed to "
-					"set_irq_type pin %d\n", pin);
-			gpio_free(pin);
-		}
-	} else {
-		printk(KERN_ERR "qnap_ts209_pci_preinit failed to gpio_request "
-				"%d\n", pin);
-	}
-
-	pin = QNAP_TS209_PCI_SLOT1_IRQ_PIN;
-	if (gpio_request(pin, "PCI Int2") == 0) {
-		if (gpio_direction_input(pin) == 0) {
-			irq_set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
-		} else {
-			printk(KERN_ERR "qnap_ts209_pci_preinit failed "
-					"to set_irq_type pin %d\n", pin);
-			gpio_free(pin);
-		}
-	} else {
-		printk(KERN_ERR "qnap_ts209_pci_preinit failed to gpio_request "
-				"%d\n", pin);
-	}
-}
-
-static int __init qnap_ts209_pci_map_irq(const struct pci_dev *dev, u8 slot,
-	u8 pin)
-{
-	int irq;
-
-	/*
-	 * Check for devices with hard-wired IRQs.
-	 */
-	irq = orion5x_pci_map_irq(dev, slot, pin);
-	if (irq != -1)
-		return irq;
-
-	/*
-	 * PCI IRQs are connected via GPIOs.
-	 */
-	switch (slot - QNAP_TS209_PCI_SLOT0_OFFS) {
-	case 0:
-		return gpio_to_irq(QNAP_TS209_PCI_SLOT0_IRQ_PIN);
-	case 1:
-		return gpio_to_irq(QNAP_TS209_PCI_SLOT1_IRQ_PIN);
-	default:
-		return -1;
-	}
-}
-
-static struct hw_pci qnap_ts209_pci __initdata = {
-	.nr_controllers	= 2,
-	.preinit	= qnap_ts209_pci_preinit,
-	.setup		= orion5x_pci_sys_setup,
-	.scan		= orion5x_pci_sys_scan_bus,
-	.map_irq	= qnap_ts209_pci_map_irq,
-};
-
-static int __init qnap_ts209_pci_init(void)
-{
-	if (machine_is_ts209())
-		pci_common_init(&qnap_ts209_pci);
-
-	return 0;
-}
-
-subsys_initcall(qnap_ts209_pci_init);
-
-/*****************************************************************************
- * RTC S35390A on I2C bus
- ****************************************************************************/
-
-#define TS209_RTC_GPIO	3
-
-static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = {
-	I2C_BOARD_INFO("s35390a", 0x30),
-	.irq	= 0,
-};
-
-/****************************************************************************
- * GPIO Attached Keys
- *     Power button is attached to the PIC microcontroller
- ****************************************************************************/
-
-#define QNAP_TS209_GPIO_KEY_MEDIA	1
-#define QNAP_TS209_GPIO_KEY_RESET	2
-
-static struct gpio_keys_button qnap_ts209_buttons[] = {
-	{
-		.code		= KEY_COPY,
-		.gpio		= QNAP_TS209_GPIO_KEY_MEDIA,
-		.desc		= "USB Copy Button",
-		.active_low	= 1,
-	}, {
-		.code		= KEY_RESTART,
-		.gpio		= QNAP_TS209_GPIO_KEY_RESET,
-		.desc		= "Reset Button",
-		.active_low	= 1,
-	},
-};
-
-static struct gpio_keys_platform_data qnap_ts209_button_data = {
-	.buttons	= qnap_ts209_buttons,
-	.nbuttons	= ARRAY_SIZE(qnap_ts209_buttons),
-};
-
-static struct platform_device qnap_ts209_button_device = {
-	.name		= "gpio-keys",
-	.id		= -1,
-	.num_resources	= 0,
-	.dev		= {
-		.platform_data	= &qnap_ts209_button_data,
-	},
-};
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-static struct mv_sata_platform_data qnap_ts209_sata_data = {
-	.n_ports	= 2,
-};
-
-/*****************************************************************************
-
- * General Setup
- ****************************************************************************/
-static unsigned int ts209_mpp_modes[] __initdata = {
-	MPP0_UNUSED,
-	MPP1_GPIO,		/* USB copy button */
-	MPP2_GPIO,		/* Load defaults button */
-	MPP3_GPIO,		/* GPIO RTC */
-	MPP4_UNUSED,
-	MPP5_UNUSED,
-	MPP6_GPIO,		/* PCI Int A */
-	MPP7_GPIO,		/* PCI Int B */
-	MPP8_UNUSED,
-	MPP9_UNUSED,
-	MPP10_UNUSED,
-	MPP11_UNUSED,
-	MPP12_SATA_LED,		/* SATA 0 presence */
-	MPP13_SATA_LED,		/* SATA 1 presence */
-	MPP14_SATA_LED,		/* SATA 0 active */
-	MPP15_SATA_LED,		/* SATA 1 active */
-	MPP16_UART,		/* UART1 RXD */
-	MPP17_UART,		/* UART1 TXD */
-	MPP18_GPIO,		/* SW_RST */
-	MPP19_UNUSED,
-	0,
-};
-
-static void __init qnap_ts209_init(void)
-{
-	/*
-	 * Setup basic Orion functions. Need to be called early.
-	 */
-	orion5x_init();
-
-	orion5x_mpp_conf(ts209_mpp_modes);
-
-	/*
-	 * MPP[20] PCI clock 0
-	 * MPP[21] PCI clock 1
-	 * MPP[22] USB 0 over current
-	 * MPP[23-25] Reserved
-	 */
-
-	/*
-	 * Configure peripherals.
-	 */
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    QNAP_TS209_NOR_BOOT_BASE,
-				    QNAP_TS209_NOR_BOOT_SIZE);
-	platform_device_register(&qnap_ts209_nor_flash);
-
-	orion5x_ehci0_init();
-	orion5x_ehci1_init();
-	qnap_tsx09_find_mac_addr(QNAP_TS209_NOR_BOOT_BASE +
-				 qnap_ts209_partitions[5].offset,
-				 qnap_ts209_partitions[5].size);
-	orion5x_eth_init(&qnap_tsx09_eth_data);
-	orion5x_i2c_init();
-	orion5x_sata_init(&qnap_ts209_sata_data);
-	orion5x_uart0_init();
-	orion5x_uart1_init();
-	orion5x_xor_init();
-
-	platform_device_register(&qnap_ts209_button_device);
-
-	/* Get RTC IRQ and register the chip */
-	if (gpio_request(TS209_RTC_GPIO, "rtc") == 0) {
-		if (gpio_direction_input(TS209_RTC_GPIO) == 0)
-			qnap_ts209_i2c_rtc.irq = gpio_to_irq(TS209_RTC_GPIO);
-		else
-			gpio_free(TS209_RTC_GPIO);
-	}
-	if (qnap_ts209_i2c_rtc.irq == 0)
-		pr_warn("qnap_ts209_init: failed to get RTC IRQ\n");
-	i2c_register_board_info(0, &qnap_ts209_i2c_rtc, 1);
-
-	/* register tsx09 specific power-off method */
-	register_platform_power_off(qnap_tsx09_power_off);
-}
-
-MACHINE_START(TS209, "QNAP TS-109/TS-209")
-	/* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= qnap_ts209_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
deleted file mode 100644
index f92acef0b45f..000000000000
--- a/arch/arm/mach-orion5x/ts409-setup.c
+++ /dev/null
@@ -1,329 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * QNAP TS-409 Board Setup
- *
- * Maintainer: Sylver Bruneau <sylver.bruneau@gmail.com>
- *
- * Copyright (C) 2008  Sylver Bruneau <sylver.bruneau@gmail.com>
- * Copyright (C) 2008  Martin Michlmayr <tbm@cyrius.com>
- */
-#include <linux/gpio/legacy.h>
-#include <linux/gpio/machine.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/pci.h>
-#include <linux/irq.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/i2c.h>
-#include <linux/serial_reg.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-#include "tsx09-common.h"
-
-/*****************************************************************************
- * QNAP TS-409 Info
- ****************************************************************************/
-
-/*
- * QNAP TS-409 hardware :
- * - Marvell 88F5281-D0
- * - Marvell 88SX7042 SATA controller (PCIe)
- * - Marvell 88E1118 Gigabit Ethernet PHY
- * - RTC S35390A (@0x30) on I2C bus
- * - 8MB NOR flash
- * - 256MB of DDR-2 RAM
- */
-
-/*
- * 8MB NOR flash Device bus boot chip select
- */
-
-#define QNAP_TS409_NOR_BOOT_BASE 0xff800000
-#define QNAP_TS409_NOR_BOOT_SIZE SZ_8M
-
-/****************************************************************************
- * 8MiB NOR flash. The struct mtd_partition is not in the same order as the
- *     partitions on the device because we want to keep compatibility with
- *     existing QNAP firmware.
- *
- * Layout as used by QNAP:
- *  [2] 0x00000000-0x00200000 : "Kernel"
- *  [3] 0x00200000-0x00600000 : "RootFS1"
- *  [4] 0x00600000-0x00700000 : "RootFS2"
- *  [6] 0x00700000-0x00760000 : "NAS Config" (read-only)
- *  [5] 0x00760000-0x00780000 : "U-Boot Config"
- *  [1] 0x00780000-0x00800000 : "U-Boot" (read-only)
- ***************************************************************************/
-static struct mtd_partition qnap_ts409_partitions[] = {
-	{
-		.name		= "U-Boot",
-		.size		= 0x00080000,
-		.offset		= 0x00780000,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "Kernel",
-		.size		= 0x00200000,
-		.offset		= 0,
-	}, {
-		.name		= "RootFS1",
-		.size		= 0x00400000,
-		.offset		= 0x00200000,
-	}, {
-		.name		= "RootFS2",
-		.size		= 0x00100000,
-		.offset		= 0x00600000,
-	}, {
-		.name		= "U-Boot Config",
-		.size		= 0x00020000,
-		.offset		= 0x00760000,
-	}, {
-		.name		= "NAS Config",
-		.size		= 0x00060000,
-		.offset		= 0x00700000,
-		.mask_flags	= MTD_WRITEABLE,
-	},
-};
-
-static struct physmap_flash_data qnap_ts409_nor_flash_data = {
-	.width		= 1,
-	.parts		= qnap_ts409_partitions,
-	.nr_parts	= ARRAY_SIZE(qnap_ts409_partitions)
-};
-
-static struct resource qnap_ts409_nor_flash_resource = {
-	.flags	= IORESOURCE_MEM,
-	.start	= QNAP_TS409_NOR_BOOT_BASE,
-	.end	= QNAP_TS409_NOR_BOOT_BASE + QNAP_TS409_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device qnap_ts409_nor_flash = {
-	.name		= "physmap-flash",
-	.id		= 0,
-	.dev		= { .platform_data = &qnap_ts409_nor_flash_data, },
-	.num_resources	= 1,
-	.resource	= &qnap_ts409_nor_flash_resource,
-};
-
-/*****************************************************************************
- * PCI
- ****************************************************************************/
-
-static int __init qnap_ts409_pci_map_irq(const struct pci_dev *dev, u8 slot,
-	u8 pin)
-{
-	int irq;
-
-	/*
-	 * Check for devices with hard-wired IRQs.
-	 */
-	irq = orion5x_pci_map_irq(dev, slot, pin);
-	if (irq != -1)
-		return irq;
-
-	/*
-	 * PCI isn't used on the TS-409
-	 */
-	return -1;
-}
-
-static struct hw_pci qnap_ts409_pci __initdata = {
-	.nr_controllers	= 2,
-	.setup		= orion5x_pci_sys_setup,
-	.scan		= orion5x_pci_sys_scan_bus,
-	.map_irq	= qnap_ts409_pci_map_irq,
-};
-
-static int __init qnap_ts409_pci_init(void)
-{
-	if (machine_is_ts409())
-		pci_common_init(&qnap_ts409_pci);
-
-	return 0;
-}
-
-subsys_initcall(qnap_ts409_pci_init);
-
-/*****************************************************************************
- * RTC S35390A on I2C bus
- ****************************************************************************/
-
-#define TS409_RTC_GPIO	10
-
-static struct i2c_board_info __initdata qnap_ts409_i2c_rtc = {
-	I2C_BOARD_INFO("s35390a", 0x30),
-};
-
-/*****************************************************************************
- * LEDs attached to GPIO
- ****************************************************************************/
-
-static struct gpio_led ts409_led_pins[] = {
-	{
-		.name		= "ts409:red:sata1",
-	}, {
-		.name		= "ts409:red:sata2",
-	}, {
-		.name		= "ts409:red:sata3",
-	}, {
-		.name		= "ts409:red:sata4",
-	},
-};
-
-static struct gpiod_lookup_table ts409_leds_gpio_table = {
-	.dev_id = "leds-gpio",
-	.table = {
-		GPIO_LOOKUP_IDX("orion_gpio0", 4, NULL,
-				0, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", 5, NULL,
-				1, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", 6, NULL,
-				2, GPIO_ACTIVE_LOW),
-		GPIO_LOOKUP_IDX("orion_gpio0", 7, NULL,
-				3, GPIO_ACTIVE_LOW),
-		{ },
-	},
-};
-
-static struct gpio_led_platform_data ts409_led_data = {
-	.leds		= ts409_led_pins,
-	.num_leds	= ARRAY_SIZE(ts409_led_pins),
-};
-
-static struct platform_device ts409_leds = {
-	.name	= "leds-gpio",
-	.id	= -1,
-	.dev	= {
-		.platform_data	= &ts409_led_data,
-	},
-};
-
-/****************************************************************************
- * GPIO Attached Keys
- *     Power button is attached to the PIC microcontroller
- ****************************************************************************/
-
-#define QNAP_TS409_GPIO_KEY_RESET	14
-#define QNAP_TS409_GPIO_KEY_MEDIA	15
-
-static struct gpio_keys_button qnap_ts409_buttons[] = {
-	{
-		.code		= KEY_RESTART,
-		.gpio		= QNAP_TS409_GPIO_KEY_RESET,
-		.desc		= "Reset Button",
-		.active_low	= 1,
-	}, {
-		.code		= KEY_COPY,
-		.gpio		= QNAP_TS409_GPIO_KEY_MEDIA,
-		.desc		= "USB Copy Button",
-		.active_low	= 1,
-	},
-};
-
-static struct gpio_keys_platform_data qnap_ts409_button_data = {
-	.buttons	= qnap_ts409_buttons,
-	.nbuttons	= ARRAY_SIZE(qnap_ts409_buttons),
-};
-
-static struct platform_device qnap_ts409_button_device = {
-	.name		= "gpio-keys",
-	.id		= -1,
-	.num_resources	= 0,
-	.dev		= {
-		.platform_data	= &qnap_ts409_button_data,
-	},
-};
-
-/*****************************************************************************
- * General Setup
- ****************************************************************************/
-static unsigned int ts409_mpp_modes[] __initdata = {
-	MPP0_UNUSED,
-	MPP1_UNUSED,
-	MPP2_UNUSED,
-	MPP3_UNUSED,
-	MPP4_GPIO,		/* HDD 1 status */
-	MPP5_GPIO,		/* HDD 2 status */
-	MPP6_GPIO,		/* HDD 3 status */
-	MPP7_GPIO,		/* HDD 4 status */
-	MPP8_UNUSED,
-	MPP9_UNUSED,
-	MPP10_GPIO,		/* RTC int */
-	MPP11_UNUSED,
-	MPP12_UNUSED,
-	MPP13_UNUSED,
-	MPP14_GPIO,		/* SW_RST */
-	MPP15_GPIO,		/* USB copy button */
-	MPP16_UART,		/* UART1 RXD */
-	MPP17_UART,		/* UART1 TXD */
-	MPP18_UNUSED,
-	MPP19_UNUSED,
-	0,
-};
-
-static void __init qnap_ts409_init(void)
-{
-	/*
-	 * Setup basic Orion functions. Need to be called early.
-	 */
-	orion5x_init();
-
-	orion5x_mpp_conf(ts409_mpp_modes);
-
-	/*
-	 * Configure peripherals.
-	 */
-	mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-				    ORION_MBUS_DEVBUS_BOOT_ATTR,
-				    QNAP_TS409_NOR_BOOT_BASE,
-				    QNAP_TS409_NOR_BOOT_SIZE);
-	platform_device_register(&qnap_ts409_nor_flash);
-
-	orion5x_ehci0_init();
-	qnap_tsx09_find_mac_addr(QNAP_TS409_NOR_BOOT_BASE +
-				 qnap_ts409_partitions[5].offset,
-				 qnap_ts409_partitions[5].size);
-	orion5x_eth_init(&qnap_tsx09_eth_data);
-	orion5x_i2c_init();
-	orion5x_uart0_init();
-	orion5x_uart1_init();
-
-	platform_device_register(&qnap_ts409_button_device);
-
-	/* Get RTC IRQ and register the chip */
-	if (gpio_request(TS409_RTC_GPIO, "rtc") == 0) {
-		if (gpio_direction_input(TS409_RTC_GPIO) == 0)
-			qnap_ts409_i2c_rtc.irq = gpio_to_irq(TS409_RTC_GPIO);
-		else
-			gpio_free(TS409_RTC_GPIO);
-	}
-	if (qnap_ts409_i2c_rtc.irq == 0)
-		pr_warn("qnap_ts409_init: failed to get RTC IRQ\n");
-	i2c_register_board_info(0, &qnap_ts409_i2c_rtc, 1);
-	gpiod_add_lookup_table(&ts409_leds_gpio_table);
-	platform_device_register(&ts409_leds);
-
-	/* register tsx09 specific power-off method */
-	register_platform_power_off(qnap_tsx09_power_off);
-}
-
-MACHINE_START(TS409, "QNAP TS-409")
-	/* Maintainer:  Sylver Bruneau <sylver.bruneau@gmail.com> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= qnap_ts409_init,
-	.map_io		= orion5x_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.fixup		= tag_fixup_mem32,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/ts78xx-fpga.h b/arch/arm/mach-orion5x/ts78xx-fpga.h
deleted file mode 100644
index 2f4fe3ca5c1a..000000000000
--- a/arch/arm/mach-orion5x/ts78xx-fpga.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#define TS7800_FPGA_MAGIC 0x00b480
-#define FPGAID(_magic, _rev) ((_magic << 8) + _rev)
-
-/*
- * get yer id's from http://ts78xx.digriz.org.uk/
- * do *not* make up your own or 'borrow' any!
- */
-enum fpga_ids {
-	/* Technologic Systems */
-	TS7800_REV_1	= FPGAID(TS7800_FPGA_MAGIC, 0x01),
-	TS7800_REV_2	= FPGAID(TS7800_FPGA_MAGIC, 0x02),
-	TS7800_REV_3	= FPGAID(TS7800_FPGA_MAGIC, 0x03),
-	TS7800_REV_4	= FPGAID(TS7800_FPGA_MAGIC, 0x04),
-	TS7800_REV_5	= FPGAID(TS7800_FPGA_MAGIC, 0x05),
-	TS7800_REV_6	= FPGAID(TS7800_FPGA_MAGIC, 0x06),
-	TS7800_REV_7	= FPGAID(TS7800_FPGA_MAGIC, 0x07),
-	TS7800_REV_8	= FPGAID(TS7800_FPGA_MAGIC, 0x08),
-	TS7800_REV_9	= FPGAID(TS7800_FPGA_MAGIC, 0x09),
-
-	/* Unaffordable & Expensive */
-	UAE_DUMMY	= FPGAID(0xffffff, 0x01),
-};
-
-struct fpga_device {
-	unsigned		present:1;
-	unsigned		init:1;
-};
-
-struct fpga_devices {
-	/* Technologic Systems */
-	struct fpga_device	ts_rtc;
-	struct fpga_device	ts_nand;
-	struct fpga_device	ts_rng;
-};
-
-struct ts78xx_fpga_data {
-	unsigned int		id;
-	int			state;
-
-	struct fpga_devices	supports;
-};
diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
deleted file mode 100644
index af810e7ccd79..000000000000
--- a/arch/arm/mach-orion5x/ts78xx-setup.c
+++ /dev/null
@@ -1,574 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * arch/arm/mach-orion5x/ts78xx-setup.c
- *
- * Maintainer: Alexander Clouter <alex@digriz.org.uk>
- */
-
-#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/sysfs.h>
-#include <linux/platform_device.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/ata_platform.h>
-#include <linux/mtd/platnand.h>
-#include <linux/timeriomem-rng.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-#include "common.h"
-#include "mpp.h"
-#include "orion5x.h"
-#include "ts78xx-fpga.h"
-
-/*****************************************************************************
- * TS-78xx Info
- ****************************************************************************/
-
-/*
- * FPGA - lives where the PCI bus would be at ORION5X_PCI_MEM_PHYS_BASE
- */
-#define TS78XX_FPGA_REGS_PHYS_BASE	0xe8000000
-#define TS78XX_FPGA_REGS_VIRT_BASE	IOMEM(0xff900000)
-#define TS78XX_FPGA_REGS_SIZE		SZ_1M
-
-static struct ts78xx_fpga_data ts78xx_fpga = {
-	.id		= 0,
-	.state		= 1,
-/*	.supports	= ... - populated by ts78xx_fpga_supports() */
-};
-
-/*****************************************************************************
- * I/O Address Mapping
- ****************************************************************************/
-static struct map_desc ts78xx_io_desc[] __initdata = {
-	{
-		.virtual	= (unsigned long)TS78XX_FPGA_REGS_VIRT_BASE,
-		.pfn		= __phys_to_pfn(TS78XX_FPGA_REGS_PHYS_BASE),
-		.length		= TS78XX_FPGA_REGS_SIZE,
-		.type		= MT_DEVICE,
-	},
-};
-
-static void __init ts78xx_map_io(void)
-{
-	orion5x_map_io();
-	iotable_init(ts78xx_io_desc, ARRAY_SIZE(ts78xx_io_desc));
-}
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-static struct mv643xx_eth_platform_data ts78xx_eth_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(0),
-};
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-static struct mv_sata_platform_data ts78xx_sata_data = {
-	.n_ports	= 2,
-};
-
-/*****************************************************************************
- * RTC M48T86 - nicked^Wborrowed from arch/arm/mach-ep93xx/ts72xx.c
- ****************************************************************************/
-#define TS_RTC_CTRL	(TS78XX_FPGA_REGS_PHYS_BASE + 0x808)
-#define TS_RTC_DATA	(TS78XX_FPGA_REGS_PHYS_BASE + 0x80c)
-
-static struct resource ts78xx_ts_rtc_resources[] = {
-	DEFINE_RES_MEM(TS_RTC_CTRL, 0x01),
-	DEFINE_RES_MEM(TS_RTC_DATA, 0x01),
-};
-
-static struct platform_device ts78xx_ts_rtc_device = {
-	.name		= "rtc-m48t86",
-	.id		= -1,
-	.resource	= ts78xx_ts_rtc_resources,
-	.num_resources 	= ARRAY_SIZE(ts78xx_ts_rtc_resources),
-};
-
-static int ts78xx_ts_rtc_load(void)
-{
-	int rc;
-
-	if (ts78xx_fpga.supports.ts_rtc.init == 0) {
-		rc = platform_device_register(&ts78xx_ts_rtc_device);
-		if (!rc)
-			ts78xx_fpga.supports.ts_rtc.init = 1;
-	} else {
-		rc = platform_device_add(&ts78xx_ts_rtc_device);
-	}
-
-	if (rc)
-		pr_info("RTC could not be registered: %d\n", rc);
-
-	return rc;
-}
-
-static void ts78xx_ts_rtc_unload(void)
-{
-	platform_device_del(&ts78xx_ts_rtc_device);
-}
-
-/*****************************************************************************
- * NAND Flash
- ****************************************************************************/
-#define TS_NAND_CTRL	(TS78XX_FPGA_REGS_VIRT_BASE + 0x800)	/* VIRT */
-#define TS_NAND_DATA	(TS78XX_FPGA_REGS_PHYS_BASE + 0x804)	/* PHYS */
-
-/*
- * hardware specific access to control-lines
- *
- * ctrl:
- * NAND_NCE: bit 0 -> bit 2
- * NAND_CLE: bit 1 -> bit 1
- * NAND_ALE: bit 2 -> bit 0
- */
-static void ts78xx_ts_nand_cmd_ctrl(struct nand_chip *this, int cmd,
-				    unsigned int ctrl)
-{
-	if (ctrl & NAND_CTRL_CHANGE) {
-		unsigned char bits;
-
-		bits = (ctrl & NAND_NCE) << 2;
-		bits |= ctrl & NAND_CLE;
-		bits |= (ctrl & NAND_ALE) >> 2;
-
-		writeb((readb(TS_NAND_CTRL) & ~0x7) | bits, TS_NAND_CTRL);
-	}
-
-	if (cmd != NAND_CMD_NONE)
-		writeb(cmd, this->legacy.IO_ADDR_W);
-}
-
-static int ts78xx_ts_nand_dev_ready(struct nand_chip *chip)
-{
-	return readb(TS_NAND_CTRL) & 0x20;
-}
-
-static void ts78xx_ts_nand_write_buf(struct nand_chip *chip,
-				     const uint8_t *buf, int len)
-{
-	void __iomem *io_base = chip->legacy.IO_ADDR_W;
-	unsigned long off = ((unsigned long)buf & 3);
-	int sz;
-
-	if (off) {
-		sz = min_t(int, 4 - off, len);
-		writesb(io_base, buf, sz);
-		buf += sz;
-		len -= sz;
-	}
-
-	sz = len >> 2;
-	if (sz) {
-		u32 *buf32 = (u32 *)buf;
-		writesl(io_base, buf32, sz);
-		buf += sz << 2;
-		len -= sz << 2;
-	}
-
-	if (len)
-		writesb(io_base, buf, len);
-}
-
-static void ts78xx_ts_nand_read_buf(struct nand_chip *chip,
-				    uint8_t *buf, int len)
-{
-	void __iomem *io_base = chip->legacy.IO_ADDR_R;
-	unsigned long off = ((unsigned long)buf & 3);
-	int sz;
-
-	if (off) {
-		sz = min_t(int, 4 - off, len);
-		readsb(io_base, buf, sz);
-		buf += sz;
-		len -= sz;
-	}
-
-	sz = len >> 2;
-	if (sz) {
-		u32 *buf32 = (u32 *)buf;
-		readsl(io_base, buf32, sz);
-		buf += sz << 2;
-		len -= sz << 2;
-	}
-
-	if (len)
-		readsb(io_base, buf, len);
-}
-
-static struct mtd_partition ts78xx_ts_nand_parts[] = {
-	{
-		.name		= "mbr",
-		.offset		= 0,
-		.size		= SZ_128K,
-		.mask_flags	= MTD_WRITEABLE,
-	}, {
-		.name		= "kernel",
-		.offset		= MTDPART_OFS_APPEND,
-		.size		= SZ_4M,
-	}, {
-		.name		= "initrd",
-		.offset		= MTDPART_OFS_APPEND,
-		.size		= SZ_4M,
-	}, {
-		.name		= "rootfs",
-		.offset		= MTDPART_OFS_APPEND,
-		.size		= MTDPART_SIZ_FULL,
-	}
-};
-
-static struct platform_nand_data ts78xx_ts_nand_data = {
-	.chip	= {
-		.nr_chips		= 1,
-		.partitions		= ts78xx_ts_nand_parts,
-		.nr_partitions		= ARRAY_SIZE(ts78xx_ts_nand_parts),
-		.chip_delay		= 15,
-		.bbt_options		= NAND_BBT_USE_FLASH,
-	},
-	.ctrl	= {
-		/*
-		 * The HW ECC offloading functions, used to give about a 9%
-		 * performance increase for 'dd if=/dev/mtdblockX' and 5% for
-		 * nanddump.  This all however was changed by git commit
-		 * e6cf5df1838c28bb060ac45b5585e48e71bbc740 so now there is
-		 * no performance advantage to be had so we no longer bother
-		 */
-		.cmd_ctrl		= ts78xx_ts_nand_cmd_ctrl,
-		.dev_ready		= ts78xx_ts_nand_dev_ready,
-		.write_buf		= ts78xx_ts_nand_write_buf,
-		.read_buf		= ts78xx_ts_nand_read_buf,
-	},
-};
-
-static struct resource ts78xx_ts_nand_resources
-			= DEFINE_RES_MEM(TS_NAND_DATA, 4);
-
-static struct platform_device ts78xx_ts_nand_device = {
-	.name		= "gen_nand",
-	.id		= -1,
-	.dev		= {
-		.platform_data	= &ts78xx_ts_nand_data,
-	},
-	.resource	= &ts78xx_ts_nand_resources,
-	.num_resources	= 1,
-};
-
-static int ts78xx_ts_nand_load(void)
-{
-	int rc;
-
-	if (ts78xx_fpga.supports.ts_nand.init == 0) {
-		rc = platform_device_register(&ts78xx_ts_nand_device);
-		if (!rc)
-			ts78xx_fpga.supports.ts_nand.init = 1;
-	} else
-		rc = platform_device_add(&ts78xx_ts_nand_device);
-
-	if (rc)
-		pr_info("NAND could not be registered: %d\n", rc);
-	return rc;
-};
-
-static void ts78xx_ts_nand_unload(void)
-{
-	platform_device_del(&ts78xx_ts_nand_device);
-}
-
-/*****************************************************************************
- * HW RNG
- ****************************************************************************/
-#define TS_RNG_DATA	(TS78XX_FPGA_REGS_PHYS_BASE | 0x044)
-
-static struct resource ts78xx_ts_rng_resource
-			= DEFINE_RES_MEM(TS_RNG_DATA, 4);
-
-static struct timeriomem_rng_data ts78xx_ts_rng_data = {
-	.period		= 1000000, /* one second */
-};
-
-static struct platform_device ts78xx_ts_rng_device = {
-	.name		= "timeriomem_rng",
-	.id		= -1,
-	.dev		= {
-		.platform_data	= &ts78xx_ts_rng_data,
-	},
-	.resource	= &ts78xx_ts_rng_resource,
-	.num_resources	= 1,
-};
-
-static int ts78xx_ts_rng_load(void)
-{
-	int rc;
-
-	if (ts78xx_fpga.supports.ts_rng.init == 0) {
-		rc = platform_device_register(&ts78xx_ts_rng_device);
-		if (!rc)
-			ts78xx_fpga.supports.ts_rng.init = 1;
-	} else
-		rc = platform_device_add(&ts78xx_ts_rng_device);
-
-	if (rc)
-		pr_info("RNG could not be registered: %d\n", rc);
-	return rc;
-};
-
-static void ts78xx_ts_rng_unload(void)
-{
-	platform_device_del(&ts78xx_ts_rng_device);
-}
-
-/*****************************************************************************
- * FPGA 'hotplug' support code
- ****************************************************************************/
-static void ts78xx_fpga_devices_zero_init(void)
-{
-	ts78xx_fpga.supports.ts_rtc.init = 0;
-	ts78xx_fpga.supports.ts_nand.init = 0;
-	ts78xx_fpga.supports.ts_rng.init = 0;
-}
-
-static void ts78xx_fpga_supports(void)
-{
-	/* TODO: put this 'table' into ts78xx-fpga.h */
-	switch (ts78xx_fpga.id) {
-	case TS7800_REV_1:
-	case TS7800_REV_2:
-	case TS7800_REV_3:
-	case TS7800_REV_4:
-	case TS7800_REV_5:
-	case TS7800_REV_6:
-	case TS7800_REV_7:
-	case TS7800_REV_8:
-	case TS7800_REV_9:
-		ts78xx_fpga.supports.ts_rtc.present = 1;
-		ts78xx_fpga.supports.ts_nand.present = 1;
-		ts78xx_fpga.supports.ts_rng.present = 1;
-		break;
-	default:
-		/* enable devices if magic matches */
-		switch ((ts78xx_fpga.id >> 8) & 0xffffff) {
-		case TS7800_FPGA_MAGIC:
-			pr_warn("unrecognised FPGA revision 0x%.2x\n",
-				ts78xx_fpga.id & 0xff);
-			ts78xx_fpga.supports.ts_rtc.present = 1;
-			ts78xx_fpga.supports.ts_nand.present = 1;
-			ts78xx_fpga.supports.ts_rng.present = 1;
-			break;
-		default:
-			ts78xx_fpga.supports.ts_rtc.present = 0;
-			ts78xx_fpga.supports.ts_nand.present = 0;
-			ts78xx_fpga.supports.ts_rng.present = 0;
-		}
-	}
-}
-
-static int ts78xx_fpga_load_devices(void)
-{
-	int tmp, ret = 0;
-
-	if (ts78xx_fpga.supports.ts_rtc.present == 1) {
-		tmp = ts78xx_ts_rtc_load();
-		if (tmp)
-			ts78xx_fpga.supports.ts_rtc.present = 0;
-		ret |= tmp;
-	}
-	if (ts78xx_fpga.supports.ts_nand.present == 1) {
-		tmp = ts78xx_ts_nand_load();
-		if (tmp)
-			ts78xx_fpga.supports.ts_nand.present = 0;
-		ret |= tmp;
-	}
-	if (ts78xx_fpga.supports.ts_rng.present == 1) {
-		tmp = ts78xx_ts_rng_load();
-		if (tmp)
-			ts78xx_fpga.supports.ts_rng.present = 0;
-		ret |= tmp;
-	}
-
-	return ret;
-}
-
-static int ts78xx_fpga_unload_devices(void)
-{
-
-	if (ts78xx_fpga.supports.ts_rtc.present == 1)
-		ts78xx_ts_rtc_unload();
-	if (ts78xx_fpga.supports.ts_nand.present == 1)
-		ts78xx_ts_nand_unload();
-	if (ts78xx_fpga.supports.ts_rng.present == 1)
-		ts78xx_ts_rng_unload();
-
-	return 0;
-}
-
-static int ts78xx_fpga_load(void)
-{
-	ts78xx_fpga.id = readl(TS78XX_FPGA_REGS_VIRT_BASE);
-
-	pr_info("FPGA magic=0x%.6x, rev=0x%.2x\n",
-			(ts78xx_fpga.id >> 8) & 0xffffff,
-			ts78xx_fpga.id & 0xff);
-
-	ts78xx_fpga_supports();
-
-	if (ts78xx_fpga_load_devices()) {
-		ts78xx_fpga.state = -1;
-		return -EBUSY;
-	}
-
-	return 0;
-};
-
-static int ts78xx_fpga_unload(void)
-{
-	unsigned int fpga_id;
-
-	fpga_id = readl(TS78XX_FPGA_REGS_VIRT_BASE);
-
-	/*
-	 * There does not seem to be a feasible way to block access to the GPIO
-	 * pins from userspace (/dev/mem).  This if clause should hopefully warn
-	 * those foolish enough not to follow 'policy' :)
-	 *
-	 * UrJTAG SVN since r1381 can be used to reprogram the FPGA
-	 */
-	if (ts78xx_fpga.id != fpga_id) {
-		pr_err("FPGA magic/rev mismatch\n"
-			"TS-78xx FPGA: was 0x%.6x/%.2x but now 0x%.6x/%.2x\n",
-			(ts78xx_fpga.id >> 8) & 0xffffff, ts78xx_fpga.id & 0xff,
-			(fpga_id >> 8) & 0xffffff, fpga_id & 0xff);
-		ts78xx_fpga.state = -1;
-		return -EBUSY;
-	}
-
-	if (ts78xx_fpga_unload_devices()) {
-		ts78xx_fpga.state = -1;
-		return -EBUSY;
-	}
-
-	return 0;
-};
-
-static ssize_t ts78xx_fpga_show(struct kobject *kobj,
-			struct kobj_attribute *attr, char *buf)
-{
-	if (ts78xx_fpga.state < 0)
-		return sprintf(buf, "borked\n");
-
-	return sprintf(buf, "%s\n", (ts78xx_fpga.state) ? "online" : "offline");
-}
-
-static ssize_t ts78xx_fpga_store(struct kobject *kobj,
-			struct kobj_attribute *attr, const char *buf, size_t n)
-{
-	int value, ret;
-
-	if (ts78xx_fpga.state < 0) {
-		pr_err("FPGA borked, you must powercycle ASAP\n");
-		return -EBUSY;
-	}
-
-	if (strncmp(buf, "online", sizeof("online") - 1) == 0)
-		value = 1;
-	else if (strncmp(buf, "offline", sizeof("offline") - 1) == 0)
-		value = 0;
-	else
-		return -EINVAL;
-
-	if (ts78xx_fpga.state == value)
-		return n;
-
-	ret = (ts78xx_fpga.state == 0)
-		? ts78xx_fpga_load()
-		: ts78xx_fpga_unload();
-
-	if (!(ret < 0))
-		ts78xx_fpga.state = value;
-
-	return n;
-}
-
-static struct kobj_attribute ts78xx_fpga_attr =
-	__ATTR(ts78xx_fpga, 0644, ts78xx_fpga_show, ts78xx_fpga_store);
-
-/*****************************************************************************
- * General Setup
- ****************************************************************************/
-static unsigned int ts78xx_mpp_modes[] __initdata = {
-	MPP0_UNUSED,
-	MPP1_GPIO,		/* JTAG Clock */
-	MPP2_GPIO,		/* JTAG Data In */
-	MPP3_GPIO,		/* Lat ECP2 256 FPGA - PB2B */
-	MPP4_GPIO,		/* JTAG Data Out */
-	MPP5_GPIO,		/* JTAG TMS */
-	MPP6_GPIO,		/* Lat ECP2 256 FPGA - PB31A_CLK4+ */
-	MPP7_GPIO,		/* Lat ECP2 256 FPGA - PB22B */
-	MPP8_UNUSED,
-	MPP9_UNUSED,
-	MPP10_UNUSED,
-	MPP11_UNUSED,
-	MPP12_UNUSED,
-	MPP13_UNUSED,
-	MPP14_UNUSED,
-	MPP15_UNUSED,
-	MPP16_UART,
-	MPP17_UART,
-	MPP18_UART,
-	MPP19_UART,
-	/*
-	 * MPP[20] PCI Clock Out 1
-	 * MPP[21] PCI Clock Out 0
-	 * MPP[22] Unused
-	 * MPP[23] Unused
-	 * MPP[24] Unused
-	 * MPP[25] Unused
-	 */
-	0,
-};
-
-static void __init ts78xx_init(void)
-{
-	int ret;
-
-	/*
-	 * Setup basic Orion functions. Need to be called early.
-	 */
-	orion5x_init();
-
-	orion5x_mpp_conf(ts78xx_mpp_modes);
-
-	/*
-	 * Configure peripherals.
-	 */
-	orion5x_ehci0_init();
-	orion5x_ehci1_init();
-	orion5x_eth_init(&ts78xx_eth_data);
-	orion5x_sata_init(&ts78xx_sata_data);
-	orion5x_uart0_init();
-	orion5x_uart1_init();
-	orion5x_xor_init();
-
-	/* FPGA init */
-	ts78xx_fpga_devices_zero_init();
-	ret = ts78xx_fpga_load();
-	ret = sysfs_create_file(firmware_kobj, &ts78xx_fpga_attr.attr);
-	if (ret)
-		pr_err("sysfs_create_file failed: %d\n", ret);
-}
-
-MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
-	/* Maintainer: Alexander Clouter <alex@digriz.org.uk> */
-	.atag_offset	= 0x100,
-	.nr_irqs	= ORION5X_NR_IRQS,
-	.init_machine	= ts78xx_init,
-	.map_io		= ts78xx_map_io,
-	.init_early	= orion5x_init_early,
-	.init_irq	= orion5x_init_irq,
-	.init_time	= orion5x_timer_init,
-	.restart	= orion5x_restart,
-MACHINE_END
diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
deleted file mode 100644
index 099e6fdfa8e6..000000000000
--- a/arch/arm/mach-orion5x/tsx09-common.c
+++ /dev/null
@@ -1,129 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * QNAP TS-x09 Boards common functions
- *
- * Maintainers: Lennert Buytenhek <buytenh@marvell.com>
- *		Byron Bradley <byron.bbradley@gmail.com>
- */
-
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/timex.h>
-#include <linux/serial_reg.h>
-#include "orion5x.h"
-#include "tsx09-common.h"
-#include "common.h"
-
-/*****************************************************************************
- * QNAP TS-x09 specific power off method via UART1-attached PIC
- ****************************************************************************/
-
-#define UART1_REG(x)	(UART1_VIRT_BASE + ((UART_##x) << 2))
-
-void qnap_tsx09_power_off(void)
-{
-	/* 19200 baud divisor */
-	const unsigned divisor = ((orion5x_tclk + (8 * 19200)) / (16 * 19200));
-
-	pr_info("%s: triggering power-off...\n", __func__);
-
-	/* hijack uart1 and reset into sane state (19200,8n1) */
-	writel(0x83, UART1_REG(LCR));
-	writel(divisor & 0xff, UART1_REG(DLL));
-	writel((divisor >> 8) & 0xff, UART1_REG(DLM));
-	writel(0x03, UART1_REG(LCR));
-	writel(0x00, UART1_REG(IER));
-	writel(0x00, UART1_REG(FCR));
-	writel(0x00, UART1_REG(MCR));
-
-	/* send the power-off command 'A' to PIC */
-	writel('A', UART1_REG(TX));
-}
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-
-struct mv643xx_eth_platform_data qnap_tsx09_eth_data = {
-	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),
-};
-
-static int __init qnap_tsx09_parse_hex_nibble(char n)
-{
-	if (n >= '0' && n <= '9')
-		return n - '0';
-
-	if (n >= 'A' && n <= 'F')
-		return n - 'A' + 10;
-
-	if (n >= 'a' && n <= 'f')
-		return n - 'a' + 10;
-
-	return -1;
-}
-
-static int __init qnap_tsx09_parse_hex_byte(const char *b)
-{
-	int hi;
-	int lo;
-
-	hi = qnap_tsx09_parse_hex_nibble(b[0]);
-	lo = qnap_tsx09_parse_hex_nibble(b[1]);
-
-	if (hi < 0 || lo < 0)
-		return -1;
-
-	return (hi << 4) | lo;
-}
-
-static int __init qnap_tsx09_check_mac_addr(const char *addr_str)
-{
-	u_int8_t addr[6];
-	int i;
-
-	for (i = 0; i < 6; i++) {
-		int byte;
-
-		/*
-		 * Enforce "xx:xx:xx:xx:xx:xx\n" format.
-		 */
-		if (addr_str[(i * 3) + 2] != ((i < 5) ? ':' : '\n'))
-			return -1;
-
-		byte = qnap_tsx09_parse_hex_byte(addr_str + (i * 3));
-		if (byte < 0)
-			return -1;
-		addr[i] = byte;
-	}
-
-	printk(KERN_INFO "tsx09: found ethernet mac address %pM\n", addr);
-
-	memcpy(qnap_tsx09_eth_data.mac_addr, addr, 6);
-
-	return 0;
-}
-
-/*
- * The 'NAS Config' flash partition has an ext2 filesystem which
- * contains a file that has the ethernet MAC address in plain text
- * (format "xx:xx:xx:xx:xx:xx\n").
- */
-void __init qnap_tsx09_find_mac_addr(u32 mem_base, u32 size)
-{
-	unsigned long addr;
-
-	for (addr = mem_base; addr < (mem_base + size); addr += 1024) {
-		char *nor_page;
-		int ret = 0;
-
-		nor_page = ioremap(addr, 1024);
-		if (nor_page != NULL) {
-			ret = qnap_tsx09_check_mac_addr(nor_page);
-			iounmap(nor_page);
-		}
-
-		if (ret == 0)
-			break;
-	}
-}
diff --git a/arch/arm/mach-orion5x/tsx09-common.h b/arch/arm/mach-orion5x/tsx09-common.h
deleted file mode 100644
index 72bedc6b82fb..000000000000
--- a/arch/arm/mach-orion5x/tsx09-common.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ARCH_ORION5X_TSX09_COMMON_H
-#define __ARCH_ORION5X_TSX09_COMMON_H
-
-/*
- * QNAP TS-x09 Boards power-off function
- */
-extern void qnap_tsx09_power_off(void);
-
-/*
- * QNAP TS-x09 Boards function to find Ethernet MAC address in flash memory
- */
-extern void __init qnap_tsx09_find_mac_addr(u32 mem_base, u32 size);
-
-/*
- * QNAP TS-x09 Boards ethernet declaration
- */
-extern struct mv643xx_eth_platform_data qnap_tsx09_eth_data;
-
-
-#endif
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index 6574659dfb61..c40cdb2274ea 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -980,7 +980,7 @@ config CACHE_B15_RAC
 
 config CACHE_FEROCEON_L2
 	bool "Enable the Feroceon L2 cache controller"
-	depends on ARCH_MV78XX0 || ARCH_MVEBU
+	depends on ARCH_MVEBU
 	default y
 	select OUTER_CACHE
 	help
diff --git a/arch/arm/plat-orion/Makefile b/arch/arm/plat-orion/Makefile
index e8c7580df8ca..dfde39cdd992 100644
--- a/arch/arm/plat-orion/Makefile
+++ b/arch/arm/plat-orion/Makefile
@@ -5,5 +5,5 @@
 ccflags-y := -I$(src)/include
 
 orion-gpio-$(CONFIG_GPIOLIB)      += gpio.o
-obj-$(CONFIG_PLAT_ORION_LEGACY)   += irq.o pcie.o time.o common.o mpp.o
+obj-$(CONFIG_PLAT_ORION_LEGACY)   += irq.o pcie.o mpp.o
 obj-$(CONFIG_PLAT_ORION_LEGACY)   += $(orion-gpio-y)
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
deleted file mode 100644
index cabe98386245..000000000000
--- a/arch/arm/plat-orion/common.c
+++ /dev/null
@@ -1,826 +0,0 @@
-/*
- * arch/arm/plat-orion/common.c
- *
- * Marvell Orion SoC common setup code used by multiple mach-/common.c
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/dma-mapping.h>
-#include <linux/serial_8250.h>
-#include <linux/ata_platform.h>
-#include <linux/clk.h>
-#include <linux/clkdev.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/mv643xx_i2c.h>
-#include <linux/platform_data/dma-mv_xor.h>
-#include <linux/platform_data/usb-ehci-orion.h>
-#include <plat/common.h>
-#include <linux/phy.h>
-
-/* Create a clkdev entry for a given device/clk */
-void __init orion_clkdev_add(const char *con_id, const char *dev_id,
-			     struct clk *clk)
-{
-	clkdev_create(clk, con_id, "%s", dev_id);
-}
-
-/* Create clkdev entries for all orion platforms except kirkwood.
-   Kirkwood has gated clocks for some of its peripherals, so creates
-   its own clkdev entries. For all the other orion devices, create
-   clkdev entries to the tclk. */
-void __init orion_clkdev_init(struct clk *tclk)
-{
-	orion_clkdev_add(NULL, "orion_spi.0", tclk);
-	orion_clkdev_add(NULL, "orion_spi.1", tclk);
-	orion_clkdev_add(NULL, MV643XX_ETH_NAME ".0", tclk);
-	orion_clkdev_add(NULL, MV643XX_ETH_NAME ".1", tclk);
-	orion_clkdev_add(NULL, MV643XX_ETH_NAME ".2", tclk);
-	orion_clkdev_add(NULL, MV643XX_ETH_NAME ".3", tclk);
-	orion_clkdev_add(NULL, "orion_wdt", tclk);
-	orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", tclk);
-}
-
-/* Fill in the resources structure and link it into the platform
-   device structure. There is always a memory region, and nearly
-   always an interrupt.*/
-static void fill_resources(struct platform_device *device,
-			   struct resource *resources,
-			   resource_size_t mapbase,
-			   resource_size_t size)
-{
-	device->resource = resources;
-	device->num_resources = 1;
-	resources[0].flags = IORESOURCE_MEM;
-	resources[0].start = mapbase;
-	resources[0].end = mapbase + size;
-}
-
-static void fill_resources_irq(struct platform_device *device,
-			       struct resource *resources,
-			       resource_size_t mapbase,
-			       resource_size_t size,
-			       unsigned int irq)
-{
-	fill_resources(device, resources, mapbase, size);
-
-	device->num_resources++;
-	resources[1].flags = IORESOURCE_IRQ;
-	resources[1].start = irq;
-	resources[1].end = irq;
-}
-
-/*****************************************************************************
- * UART
- ****************************************************************************/
-static unsigned long __init uart_get_clk_rate(struct clk *clk)
-{
-	clk_prepare_enable(clk);
-	return clk_get_rate(clk);
-}
-
-static void __init uart_complete(
-	struct platform_device *orion_uart,
-	struct plat_serial8250_port *data,
-	struct resource *resources,
-	void __iomem *membase,
-	resource_size_t mapbase,
-	unsigned int irq,
-	struct clk *clk)
-{
-	data->mapbase = mapbase;
-	data->membase = membase;
-	data->irq = irq;
-	data->uartclk = uart_get_clk_rate(clk);
-	orion_uart->dev.platform_data = data;
-
-	fill_resources_irq(orion_uart, resources, mapbase, 0xff, irq);
-	platform_device_register(orion_uart);
-}
-
-/*****************************************************************************
- * UART0
- ****************************************************************************/
-static struct plat_serial8250_port orion_uart0_data[] = {
-	{
-		.flags		= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
-		.iotype		= UPIO_MEM,
-		.regshift	= 2,
-	}, {
-	},
-};
-
-static struct resource orion_uart0_resources[2];
-
-static struct platform_device orion_uart0 = {
-	.name			= "serial8250",
-	.id			= PLAT8250_DEV_PLATFORM,
-};
-
-void __init orion_uart0_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk)
-{
-	uart_complete(&orion_uart0, orion_uart0_data, orion_uart0_resources,
-		      membase, mapbase, irq, clk);
-}
-
-/*****************************************************************************
- * UART1
- ****************************************************************************/
-static struct plat_serial8250_port orion_uart1_data[] = {
-	{
-		.flags		= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
-		.iotype		= UPIO_MEM,
-		.regshift	= 2,
-	}, {
-	},
-};
-
-static struct resource orion_uart1_resources[2];
-
-static struct platform_device orion_uart1 = {
-	.name			= "serial8250",
-	.id			= PLAT8250_DEV_PLATFORM1,
-};
-
-void __init orion_uart1_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk)
-{
-	uart_complete(&orion_uart1, orion_uart1_data, orion_uart1_resources,
-		      membase, mapbase, irq, clk);
-}
-
-/*****************************************************************************
- * UART2
- ****************************************************************************/
-static struct plat_serial8250_port orion_uart2_data[] = {
-	{
-		.flags		= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
-		.iotype		= UPIO_MEM,
-		.regshift	= 2,
-	}, {
-	},
-};
-
-static struct resource orion_uart2_resources[2];
-
-static struct platform_device orion_uart2 = {
-	.name			= "serial8250",
-	.id			= PLAT8250_DEV_PLATFORM2,
-};
-
-void __init orion_uart2_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk)
-{
-	uart_complete(&orion_uart2, orion_uart2_data, orion_uart2_resources,
-		      membase, mapbase, irq, clk);
-}
-
-/*****************************************************************************
- * UART3
- ****************************************************************************/
-static struct plat_serial8250_port orion_uart3_data[] = {
-	{
-		.flags		= UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
-		.iotype		= UPIO_MEM,
-		.regshift	= 2,
-	}, {
-	},
-};
-
-static struct resource orion_uart3_resources[2];
-
-static struct platform_device orion_uart3 = {
-	.name			= "serial8250",
-	.id			= 3,
-};
-
-void __init orion_uart3_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk)
-{
-	uart_complete(&orion_uart3, orion_uart3_data, orion_uart3_resources,
-		      membase, mapbase, irq, clk);
-}
-
-/*****************************************************************************
- * SoC RTC
- ****************************************************************************/
-static struct resource orion_rtc_resource[2];
-
-void __init orion_rtc_init(unsigned long mapbase,
-			   unsigned long irq)
-{
-	orion_rtc_resource[0].start = mapbase;
-	orion_rtc_resource[0].end = mapbase + SZ_32 - 1;
-	orion_rtc_resource[0].flags = IORESOURCE_MEM;
-	orion_rtc_resource[1].start = irq;
-	orion_rtc_resource[1].end = irq;
-	orion_rtc_resource[1].flags = IORESOURCE_IRQ;
-
-	platform_device_register_simple("rtc-mv", -1, orion_rtc_resource, 2);
-}
-
-/*****************************************************************************
- * GE
- ****************************************************************************/
-static __init void ge_complete(
-	struct mv643xx_eth_shared_platform_data *orion_ge_shared_data,
-	struct resource *orion_ge_resource, unsigned long irq,
-	struct platform_device *orion_ge_shared,
-	struct platform_device *orion_ge_mvmdio,
-	struct mv643xx_eth_platform_data *eth_data,
-	struct platform_device *orion_ge)
-{
-	orion_ge_resource->start = irq;
-	orion_ge_resource->end = irq;
-	eth_data->shared = orion_ge_shared;
-	orion_ge->dev.platform_data = eth_data;
-
-	platform_device_register(orion_ge_shared);
-	if (orion_ge_mvmdio)
-		platform_device_register(orion_ge_mvmdio);
-	platform_device_register(orion_ge);
-}
-
-/*****************************************************************************
- * GE00
- ****************************************************************************/
-static struct mv643xx_eth_shared_platform_data orion_ge00_shared_data;
-
-static struct resource orion_ge00_shared_resources[] = {
-	{
-		.name	= "ge00 base",
-	},
-};
-
-static struct platform_device orion_ge00_shared = {
-	.name		= MV643XX_ETH_SHARED_NAME,
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &orion_ge00_shared_data,
-	},
-};
-
-static struct resource orion_ge_mvmdio_resources[] = {
-	{
-		.name	= "ge00 mvmdio base",
-	}, {
-		.name	= "ge00 mvmdio err irq",
-	},
-};
-
-static struct platform_device orion_ge_mvmdio = {
-	.name		= "orion-mdio",
-	.id		= -1,
-};
-
-static struct resource orion_ge00_resources[] = {
-	{
-		.name	= "ge00 irq",
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device orion_ge00 = {
-	.name		= MV643XX_ETH_NAME,
-	.id		= 0,
-	.num_resources	= 1,
-	.resource	= orion_ge00_resources,
-	.dev		= {
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-};
-
-void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq,
-			    unsigned long irq_err,
-			    unsigned int tx_csum_limit)
-{
-	fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,
-		       mapbase + 0x2000, SZ_16K - 1);
-	fill_resources_irq(&orion_ge_mvmdio, orion_ge_mvmdio_resources,
-			mapbase + 0x2004, 0x84 - 1, irq_err);
-	orion_ge00_shared_data.tx_csum_limit = tx_csum_limit;
-	ge_complete(&orion_ge00_shared_data,
-		    orion_ge00_resources, irq, &orion_ge00_shared,
-		    &orion_ge_mvmdio,
-		    eth_data, &orion_ge00);
-}
-
-/*****************************************************************************
- * GE01
- ****************************************************************************/
-static struct mv643xx_eth_shared_platform_data orion_ge01_shared_data;
-
-static struct resource orion_ge01_shared_resources[] = {
-	{
-		.name	= "ge01 base",
-	}
-};
-
-static struct platform_device orion_ge01_shared = {
-	.name		= MV643XX_ETH_SHARED_NAME,
-	.id		= 1,
-	.dev		= {
-		.platform_data	= &orion_ge01_shared_data,
-	},
-};
-
-static struct resource orion_ge01_resources[] = {
-	{
-		.name	= "ge01 irq",
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device orion_ge01 = {
-	.name		= MV643XX_ETH_NAME,
-	.id		= 1,
-	.num_resources	= 1,
-	.resource	= orion_ge01_resources,
-	.dev		= {
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-};
-
-void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq,
-			    unsigned int tx_csum_limit)
-{
-	fill_resources(&orion_ge01_shared, orion_ge01_shared_resources,
-		       mapbase + 0x2000, SZ_16K - 1);
-	orion_ge01_shared_data.tx_csum_limit = tx_csum_limit;
-	ge_complete(&orion_ge01_shared_data,
-		    orion_ge01_resources, irq, &orion_ge01_shared,
-		    NULL,
-		    eth_data, &orion_ge01);
-}
-
-/*****************************************************************************
- * GE10
- ****************************************************************************/
-static struct mv643xx_eth_shared_platform_data orion_ge10_shared_data;
-
-static struct resource orion_ge10_shared_resources[] = {
-	{
-		.name	= "ge10 base",
-	}
-};
-
-static struct platform_device orion_ge10_shared = {
-	.name		= MV643XX_ETH_SHARED_NAME,
-	.id		= 2,
-	.dev		= {
-		.platform_data	= &orion_ge10_shared_data,
-	},
-};
-
-static struct resource orion_ge10_resources[] = {
-	{
-		.name	= "ge10 irq",
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device orion_ge10 = {
-	.name		= MV643XX_ETH_NAME,
-	.id		= 2,
-	.num_resources	= 1,
-	.resource	= orion_ge10_resources,
-	.dev		= {
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-};
-
-void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq)
-{
-	fill_resources(&orion_ge10_shared, orion_ge10_shared_resources,
-		       mapbase + 0x2000, SZ_16K - 1);
-	ge_complete(&orion_ge10_shared_data,
-		    orion_ge10_resources, irq, &orion_ge10_shared,
-		    NULL,
-		    eth_data, &orion_ge10);
-}
-
-/*****************************************************************************
- * GE11
- ****************************************************************************/
-static struct mv643xx_eth_shared_platform_data orion_ge11_shared_data;
-
-static struct resource orion_ge11_shared_resources[] = {
-	{
-		.name	= "ge11 base",
-	},
-};
-
-static struct platform_device orion_ge11_shared = {
-	.name		= MV643XX_ETH_SHARED_NAME,
-	.id		= 3,
-	.dev		= {
-		.platform_data	= &orion_ge11_shared_data,
-	},
-};
-
-static struct resource orion_ge11_resources[] = {
-	{
-		.name	= "ge11 irq",
-		.flags	= IORESOURCE_IRQ,
-	},
-};
-
-static struct platform_device orion_ge11 = {
-	.name		= MV643XX_ETH_NAME,
-	.id		= 3,
-	.num_resources	= 1,
-	.resource	= orion_ge11_resources,
-	.dev		= {
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-};
-
-void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq)
-{
-	fill_resources(&orion_ge11_shared, orion_ge11_shared_resources,
-		       mapbase + 0x2000, SZ_16K - 1);
-	ge_complete(&orion_ge11_shared_data,
-		    orion_ge11_resources, irq, &orion_ge11_shared,
-		    NULL,
-		    eth_data, &orion_ge11);
-}
-
-/*****************************************************************************
- * I2C
- ****************************************************************************/
-static struct mv64xxx_i2c_pdata orion_i2c_pdata = {
-	.freq_n		= 3,
-	.timeout	= 1000, /* Default timeout of 1 second */
-};
-
-static struct resource orion_i2c_resources[2];
-
-static struct platform_device orion_i2c = {
-	.name		= MV64XXX_I2C_CTLR_NAME,
-	.id		= 0,
-	.dev		= {
-		.platform_data	= &orion_i2c_pdata,
-	},
-};
-
-static struct mv64xxx_i2c_pdata orion_i2c_1_pdata = {
-	.freq_n		= 3,
-	.timeout	= 1000, /* Default timeout of 1 second */
-};
-
-static struct resource orion_i2c_1_resources[2];
-
-static struct platform_device orion_i2c_1 = {
-	.name		= MV64XXX_I2C_CTLR_NAME,
-	.id		= 1,
-	.dev		= {
-		.platform_data	= &orion_i2c_1_pdata,
-	},
-};
-
-void __init orion_i2c_init(unsigned long mapbase,
-			   unsigned long irq,
-			   unsigned long freq_m)
-{
-	orion_i2c_pdata.freq_m = freq_m;
-	fill_resources_irq(&orion_i2c, orion_i2c_resources, mapbase,
-		       SZ_32 - 1, irq);
-	platform_device_register(&orion_i2c);
-}
-
-void __init orion_i2c_1_init(unsigned long mapbase,
-			     unsigned long irq,
-			     unsigned long freq_m)
-{
-	orion_i2c_1_pdata.freq_m = freq_m;
-	fill_resources_irq(&orion_i2c_1, orion_i2c_1_resources, mapbase,
-		       SZ_32 - 1, irq);
-	platform_device_register(&orion_i2c_1);
-}
-
-/*****************************************************************************
- * SPI
- ****************************************************************************/
-static struct resource orion_spi_resources;
-
-static struct platform_device orion_spi = {
-	.name		= "orion_spi",
-	.id		= 0,
-};
-
-static struct resource orion_spi_1_resources;
-
-static struct platform_device orion_spi_1 = {
-	.name		= "orion_spi",
-	.id		= 1,
-};
-
-/* Note: The SPI silicon core does have interrupts. However the
- * current Linux software driver does not use interrupts. */
-
-void __init orion_spi_init(unsigned long mapbase)
-{
-	fill_resources(&orion_spi, &orion_spi_resources,
-		       mapbase, SZ_512 - 1);
-	platform_device_register(&orion_spi);
-}
-
-void __init orion_spi_1_init(unsigned long mapbase)
-{
-	fill_resources(&orion_spi_1, &orion_spi_1_resources,
-		       mapbase, SZ_512 - 1);
-	platform_device_register(&orion_spi_1);
-}
-
-/*****************************************************************************
- * XOR
- ****************************************************************************/
-static u64 orion_xor_dmamask = DMA_BIT_MASK(32);
-
-/*****************************************************************************
- * XOR0
- ****************************************************************************/
-static struct resource orion_xor0_shared_resources[] = {
-	{
-		.name	= "xor 0 low",
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.name	= "xor 0 high",
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.name   = "irq channel 0",
-		.flags  = IORESOURCE_IRQ,
-	}, {
-		.name   = "irq channel 1",
-		.flags  = IORESOURCE_IRQ,
-	},
-};
-
-static struct mv_xor_channel_data orion_xor0_channels_data[2];
-
-static struct mv_xor_platform_data orion_xor0_pdata = {
-	.channels = orion_xor0_channels_data,
-};
-
-static struct platform_device orion_xor0_shared = {
-	.name		= MV_XOR_NAME,
-	.id		= 0,
-	.num_resources	= ARRAY_SIZE(orion_xor0_shared_resources),
-	.resource	= orion_xor0_shared_resources,
-	.dev            = {
-		.dma_mask               = &orion_xor_dmamask,
-		.coherent_dma_mask      = DMA_BIT_MASK(32),
-		.platform_data          = &orion_xor0_pdata,
-	},
-};
-
-void __init orion_xor0_init(unsigned long mapbase_low,
-			    unsigned long mapbase_high,
-			    unsigned long irq_0,
-			    unsigned long irq_1)
-{
-	orion_xor0_shared_resources[0].start = mapbase_low;
-	orion_xor0_shared_resources[0].end = mapbase_low + 0xff;
-	orion_xor0_shared_resources[1].start = mapbase_high;
-	orion_xor0_shared_resources[1].end = mapbase_high + 0xff;
-
-	orion_xor0_shared_resources[2].start = irq_0;
-	orion_xor0_shared_resources[2].end = irq_0;
-	orion_xor0_shared_resources[3].start = irq_1;
-	orion_xor0_shared_resources[3].end = irq_1;
-
-	dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[0].cap_mask);
-	dma_cap_set(DMA_XOR, orion_xor0_channels_data[0].cap_mask);
-
-	dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[1].cap_mask);
-	dma_cap_set(DMA_XOR, orion_xor0_channels_data[1].cap_mask);
-
-	platform_device_register(&orion_xor0_shared);
-}
-
-/*****************************************************************************
- * XOR1
- ****************************************************************************/
-static struct resource orion_xor1_shared_resources[] = {
-	{
-		.name	= "xor 1 low",
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.name	= "xor 1 high",
-		.flags	= IORESOURCE_MEM,
-	}, {
-		.name   = "irq channel 0",
-		.flags  = IORESOURCE_IRQ,
-	}, {
-		.name   = "irq channel 1",
-		.flags  = IORESOURCE_IRQ,
-	},
-};
-
-static struct mv_xor_channel_data orion_xor1_channels_data[2];
-
-static struct mv_xor_platform_data orion_xor1_pdata = {
-	.channels = orion_xor1_channels_data,
-};
-
-static struct platform_device orion_xor1_shared = {
-	.name		= MV_XOR_NAME,
-	.id		= 1,
-	.num_resources	= ARRAY_SIZE(orion_xor1_shared_resources),
-	.resource	= orion_xor1_shared_resources,
-	.dev            = {
-		.dma_mask               = &orion_xor_dmamask,
-		.coherent_dma_mask      = DMA_BIT_MASK(32),
-		.platform_data          = &orion_xor1_pdata,
-	},
-};
-
-void __init orion_xor1_init(unsigned long mapbase_low,
-			    unsigned long mapbase_high,
-			    unsigned long irq_0,
-			    unsigned long irq_1)
-{
-	orion_xor1_shared_resources[0].start = mapbase_low;
-	orion_xor1_shared_resources[0].end = mapbase_low + 0xff;
-	orion_xor1_shared_resources[1].start = mapbase_high;
-	orion_xor1_shared_resources[1].end = mapbase_high + 0xff;
-
-	orion_xor1_shared_resources[2].start = irq_0;
-	orion_xor1_shared_resources[2].end = irq_0;
-	orion_xor1_shared_resources[3].start = irq_1;
-	orion_xor1_shared_resources[3].end = irq_1;
-
-	dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[0].cap_mask);
-	dma_cap_set(DMA_XOR, orion_xor1_channels_data[0].cap_mask);
-
-	dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[1].cap_mask);
-	dma_cap_set(DMA_XOR, orion_xor1_channels_data[1].cap_mask);
-
-	platform_device_register(&orion_xor1_shared);
-}
-
-/*****************************************************************************
- * EHCI
- ****************************************************************************/
-static struct orion_ehci_data orion_ehci_data;
-static u64 ehci_dmamask = DMA_BIT_MASK(32);
-
-
-/*****************************************************************************
- * EHCI0
- ****************************************************************************/
-static struct resource orion_ehci_resources[2];
-
-static struct platform_device orion_ehci = {
-	.name		= "orion-ehci",
-	.id		= 0,
-	.dev		= {
-		.dma_mask		= &ehci_dmamask,
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-		.platform_data		= &orion_ehci_data,
-	},
-};
-
-void __init orion_ehci_init(unsigned long mapbase,
-			    unsigned long irq,
-			    enum orion_ehci_phy_ver phy_version)
-{
-	orion_ehci_data.phy_version = phy_version;
-	fill_resources_irq(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,
-		       irq);
-
-	platform_device_register(&orion_ehci);
-}
-
-/*****************************************************************************
- * EHCI1
- ****************************************************************************/
-static struct resource orion_ehci_1_resources[2];
-
-static struct platform_device orion_ehci_1 = {
-	.name		= "orion-ehci",
-	.id		= 1,
-	.dev		= {
-		.dma_mask		= &ehci_dmamask,
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-		.platform_data		= &orion_ehci_data,
-	},
-};
-
-void __init orion_ehci_1_init(unsigned long mapbase,
-			      unsigned long irq)
-{
-	fill_resources_irq(&orion_ehci_1, orion_ehci_1_resources,
-		       mapbase, SZ_4K - 1, irq);
-
-	platform_device_register(&orion_ehci_1);
-}
-
-/*****************************************************************************
- * EHCI2
- ****************************************************************************/
-static struct resource orion_ehci_2_resources[2];
-
-static struct platform_device orion_ehci_2 = {
-	.name		= "orion-ehci",
-	.id		= 2,
-	.dev		= {
-		.dma_mask		= &ehci_dmamask,
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-		.platform_data		= &orion_ehci_data,
-	},
-};
-
-void __init orion_ehci_2_init(unsigned long mapbase,
-			      unsigned long irq)
-{
-	fill_resources_irq(&orion_ehci_2, orion_ehci_2_resources,
-		       mapbase, SZ_4K - 1, irq);
-
-	platform_device_register(&orion_ehci_2);
-}
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-static struct resource orion_sata_resources[2] = {
-	{
-		.name	= "sata base",
-	}, {
-		.name	= "sata irq",
-	},
-};
-
-static struct platform_device orion_sata = {
-	.name		= "sata_mv",
-	.id		= 0,
-	.dev		= {
-		.coherent_dma_mask	= DMA_BIT_MASK(32),
-	},
-};
-
-void __init orion_sata_init(struct mv_sata_platform_data *sata_data,
-			    unsigned long mapbase,
-			    unsigned long irq)
-{
-	orion_sata.dev.platform_data = sata_data;
-	fill_resources_irq(&orion_sata, orion_sata_resources,
-		       mapbase, 0x5000 - 1, irq);
-
-	platform_device_register(&orion_sata);
-}
-
-/*****************************************************************************
- * Cryptographic Engines and Security Accelerator (CESA)
- ****************************************************************************/
-static struct resource orion_crypto_resources[] = {
-	{
-		.name   = "regs",
-	}, {
-		.name   = "crypto interrupt",
-	}, {
-		.name   = "sram",
-		.flags  = IORESOURCE_MEM,
-	},
-};
-
-static struct platform_device orion_crypto = {
-	.name           = "mv_crypto",
-	.id             = -1,
-};
-
-void __init orion_crypto_init(unsigned long mapbase,
-			      unsigned long srambase,
-			      unsigned long sram_size,
-			      unsigned long irq)
-{
-	fill_resources_irq(&orion_crypto, orion_crypto_resources,
-		       mapbase, 0xffff, irq);
-	orion_crypto.num_resources = 3;
-	orion_crypto_resources[2].start = srambase;
-	orion_crypto_resources[2].end = srambase + sram_size - 1;
-
-	platform_device_register(&orion_crypto);
-}
diff --git a/arch/arm/plat-orion/include/plat/addr-map.h b/arch/arm/plat-orion/include/plat/addr-map.h
deleted file mode 100644
index b76c06569fe5..000000000000
--- a/arch/arm/plat-orion/include/plat/addr-map.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * arch/arm/plat-orion/include/plat/addr-map.h
- *
- * Marvell Orion SoC address map handling.
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __PLAT_ADDR_MAP_H
-#define __PLAT_ADDR_MAP_H
-
-extern struct mbus_dram_target_info orion_mbus_dram_info;
-
-struct orion_addr_map_cfg {
-	const int num_wins;	/* Total number of windows */
-	const int remappable_wins;
-	void __iomem *bridge_virt_base;
-	int hw_io_coherency;
-
-	/* If NULL, the default cpu_win_can_remap will be used, using
-	   the value in remappable_wins */
-	int (*cpu_win_can_remap) (const struct orion_addr_map_cfg *cfg,
-				  const int win);
-	/* If NULL, the default win_cfg_base will be used, using the
-	   value in bridge_virt_base */
-	void __iomem *(*win_cfg_base) (const struct orion_addr_map_cfg *cfg,
-				 const int win);
-};
-
-/*
- * Information needed to setup one address mapping.
- */
-struct orion_addr_map_info {
-	const int win;
-	const u32 base;
-	const u32 size;
-	const u8 target;
-	const u8 attr;
-	const int remap;
-};
-
-void __init orion_config_wins(struct orion_addr_map_cfg *cfg,
-			      const struct orion_addr_map_info *info);
-
-void __init orion_setup_cpu_win(const struct orion_addr_map_cfg *cfg,
-				const int win, const u32 base,
-				const u32 size, const u8 target,
-				const u8 attr, const int remap);
-
-void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg,
-					const void __iomem *ddr_window_cpu_base);
-#endif
diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
deleted file mode 100644
index d2aad95d20cb..000000000000
--- a/arch/arm/plat-orion/include/plat/common.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * arch/arm/plat-orion/include/plat/common.h
- *
- * Marvell Orion SoC common setup code used by different mach-/common.c
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __PLAT_COMMON_H
-#include <linux/mv643xx_eth.h>
-#include <linux/platform_data/usb-ehci-orion.h>
-
-struct mv_sata_platform_data;
-
-void __init orion_uart0_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk);
-
-void __init orion_uart1_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk);
-
-void __init orion_uart2_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk);
-
-void __init orion_uart3_init(void __iomem *membase,
-			     resource_size_t mapbase,
-			     unsigned int irq,
-			     struct clk *clk);
-
-void __init orion_rtc_init(unsigned long mapbase,
-			   unsigned long irq);
-
-void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq,
-			    unsigned long irq_err,
-			    unsigned int tx_csum_limit);
-
-void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq,
-			    unsigned int tx_csum_limit);
-
-void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq);
-
-void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
-			    unsigned long mapbase,
-			    unsigned long irq);
-
-void __init orion_i2c_init(unsigned long mapbase,
-			   unsigned long irq,
-			   unsigned long freq_m);
-
-void __init orion_i2c_1_init(unsigned long mapbase,
-			     unsigned long irq,
-			     unsigned long freq_m);
-
-void __init orion_spi_init(unsigned long mapbase);
-
-void __init orion_spi_1_init(unsigned long mapbase);
-
-void __init orion_xor0_init(unsigned long mapbase_low,
-			    unsigned long mapbase_high,
-			    unsigned long irq_0,
-			    unsigned long irq_1);
-
-void __init orion_xor1_init(unsigned long mapbase_low,
-			    unsigned long mapbase_high,
-			    unsigned long irq_0,
-			    unsigned long irq_1);
-
-void __init orion_ehci_init(unsigned long mapbase,
-			    unsigned long irq,
-			    enum orion_ehci_phy_ver phy_version);
-
-void __init orion_ehci_1_init(unsigned long mapbase,
-			      unsigned long irq);
-
-void __init orion_ehci_2_init(unsigned long mapbase,
-			      unsigned long irq);
-
-void __init orion_sata_init(struct mv_sata_platform_data *sata_data,
-			    unsigned long mapbase,
-			    unsigned long irq);
-
-void __init orion_crypto_init(unsigned long mapbase,
-			      unsigned long srambase,
-			      unsigned long sram_size,
-			      unsigned long irq);
-
-void __init orion_clkdev_add(const char *con_id, const char *dev_id,
-			     struct clk *clk);
-
-void __init orion_clkdev_init(struct clk *tclk);
-#endif
diff --git a/arch/arm/plat-orion/include/plat/time.h b/arch/arm/plat-orion/include/plat/time.h
deleted file mode 100644
index 07527e417c62..000000000000
--- a/arch/arm/plat-orion/include/plat/time.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * arch/arm/plat-orion/include/plat/time.h
- *
- * Marvell Orion SoC time handling.
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __PLAT_TIME_H
-#define __PLAT_TIME_H
-
-void orion_time_set_base(void __iomem *timer_base);
-
-void orion_time_init(void __iomem *bridge_base, u32 bridge_timer1_clr_mask,
-		     unsigned int irq, unsigned int tclk);
-
-
-#endif
diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c
index 8b8c06d2e9c4..e817f20409c4 100644
--- a/arch/arm/plat-orion/pcie.c
+++ b/arch/arm/plat-orion/pcie.c
@@ -13,7 +13,6 @@
 #include <linux/mbus.h>
 #include <asm/mach/pci.h>
 #include <plat/pcie.h>
-#include <plat/addr-map.h>
 #include <linux/delay.h>
 
 /*
diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c
deleted file mode 100644
index 509d4824dc1c..000000000000
--- a/arch/arm/plat-orion/time.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * arch/arm/plat-orion/time.c
- *
- * Marvell Orion SoC timer handling.
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- *
- * Timer 0 is used as free-running clocksource, while timer 1 is
- * used as clock_event_device.
- */
-
-#include <linux/kernel.h>
-#include <linux/timer.h>
-#include <linux/clockchips.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/sched_clock.h>
-#include <plat/time.h>
-#include <asm/delay.h>
-
-/*
- * MBus bridge block registers.
- */
-#define BRIDGE_CAUSE_OFF	0x0110
-#define BRIDGE_MASK_OFF		0x0114
-#define  BRIDGE_INT_TIMER0	 0x0002
-#define  BRIDGE_INT_TIMER1	 0x0004
-
-
-/*
- * Timer block registers.
- */
-#define TIMER_CTRL_OFF		0x0000
-#define  TIMER0_EN		 0x0001
-#define  TIMER0_RELOAD_EN	 0x0002
-#define  TIMER1_EN		 0x0004
-#define  TIMER1_RELOAD_EN	 0x0008
-#define TIMER0_RELOAD_OFF	0x0010
-#define TIMER0_VAL_OFF		0x0014
-#define TIMER1_RELOAD_OFF	0x0018
-#define TIMER1_VAL_OFF		0x001c
-
-
-/*
- * SoC-specific data.
- */
-static void __iomem *bridge_base;
-static u32 bridge_timer1_clr_mask;
-static void __iomem *timer_base;
-
-
-/*
- * Number of timer ticks per jiffy.
- */
-static u32 ticks_per_jiffy;
-
-
-/*
- * Orion's sched_clock implementation. It has a resolution of
- * at least 7.5ns (133MHz TCLK).
- */
-
-static u64 notrace orion_read_sched_clock(void)
-{
-	return ~readl(timer_base + TIMER0_VAL_OFF);
-}
-
-/*
- * Clockevent handling.
- */
-static int
-orion_clkevt_next_event(unsigned long delta, struct clock_event_device *dev)
-{
-	unsigned long flags;
-	u32 u;
-
-	if (delta == 0)
-		return -ETIME;
-
-	local_irq_save(flags);
-
-	/*
-	 * Clear and enable clockevent timer interrupt.
-	 */
-	writel(bridge_timer1_clr_mask, bridge_base + BRIDGE_CAUSE_OFF);
-
-	u = readl(bridge_base + BRIDGE_MASK_OFF);
-	u |= BRIDGE_INT_TIMER1;
-	writel(u, bridge_base + BRIDGE_MASK_OFF);
-
-	/*
-	 * Setup new clockevent timer value.
-	 */
-	writel(delta, timer_base + TIMER1_VAL_OFF);
-
-	/*
-	 * Enable the timer.
-	 */
-	u = readl(timer_base + TIMER_CTRL_OFF);
-	u = (u & ~TIMER1_RELOAD_EN) | TIMER1_EN;
-	writel(u, timer_base + TIMER_CTRL_OFF);
-
-	local_irq_restore(flags);
-
-	return 0;
-}
-
-static int orion_clkevt_shutdown(struct clock_event_device *evt)
-{
-	unsigned long flags;
-	u32 u;
-
-	local_irq_save(flags);
-
-	/* Disable timer */
-	u = readl(timer_base + TIMER_CTRL_OFF);
-	writel(u & ~TIMER1_EN, timer_base + TIMER_CTRL_OFF);
-
-	/* Disable timer interrupt */
-	u = readl(bridge_base + BRIDGE_MASK_OFF);
-	writel(u & ~BRIDGE_INT_TIMER1, bridge_base + BRIDGE_MASK_OFF);
-
-	/* ACK pending timer interrupt */
-	writel(bridge_timer1_clr_mask, bridge_base + BRIDGE_CAUSE_OFF);
-
-	local_irq_restore(flags);
-
-	return 0;
-}
-
-static int orion_clkevt_set_periodic(struct clock_event_device *evt)
-{
-	unsigned long flags;
-	u32 u;
-
-	local_irq_save(flags);
-
-	/* Setup timer to fire at 1/HZ intervals */
-	writel(ticks_per_jiffy - 1, timer_base + TIMER1_RELOAD_OFF);
-	writel(ticks_per_jiffy - 1, timer_base + TIMER1_VAL_OFF);
-
-	/* Enable timer interrupt */
-	u = readl(bridge_base + BRIDGE_MASK_OFF);
-	writel(u | BRIDGE_INT_TIMER1, bridge_base + BRIDGE_MASK_OFF);
-
-	/* Enable timer */
-	u = readl(timer_base + TIMER_CTRL_OFF);
-	writel(u | TIMER1_EN | TIMER1_RELOAD_EN, timer_base + TIMER_CTRL_OFF);
-
-	local_irq_restore(flags);
-
-	return 0;
-}
-
-static struct clock_event_device orion_clkevt = {
-	.name			= "orion_tick",
-	.features		= CLOCK_EVT_FEAT_ONESHOT |
-				  CLOCK_EVT_FEAT_PERIODIC,
-	.rating			= 300,
-	.set_next_event		= orion_clkevt_next_event,
-	.set_state_shutdown	= orion_clkevt_shutdown,
-	.set_state_periodic	= orion_clkevt_set_periodic,
-	.set_state_oneshot	= orion_clkevt_shutdown,
-	.tick_resume		= orion_clkevt_shutdown,
-};
-
-static irqreturn_t orion_timer_interrupt(int irq, void *dev_id)
-{
-	/*
-	 * ACK timer interrupt and call event handler.
-	 */
-	writel(bridge_timer1_clr_mask, bridge_base + BRIDGE_CAUSE_OFF);
-	orion_clkevt.event_handler(&orion_clkevt);
-
-	return IRQ_HANDLED;
-}
-
-void __init
-orion_time_set_base(void __iomem *_timer_base)
-{
-	timer_base = _timer_base;
-}
-
-static unsigned long orion_delay_timer_read(void)
-{
-	return ~readl(timer_base + TIMER0_VAL_OFF);
-}
-
-static struct delay_timer orion_delay_timer = {
-	.read_current_timer = orion_delay_timer_read,
-};
-
-void __init
-orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
-		unsigned int irq, unsigned int tclk)
-{
-	u32 u;
-
-	/*
-	 * Set SoC-specific data.
-	 */
-	bridge_base = _bridge_base;
-	bridge_timer1_clr_mask = _bridge_timer1_clr_mask;
-
-	ticks_per_jiffy = (tclk + HZ/2) / HZ;
-
-	orion_delay_timer.freq = tclk;
-	register_current_timer_delay(&orion_delay_timer);
-
-	/*
-	 * Set scale and timer for sched_clock.
-	 */
-	sched_clock_register(orion_read_sched_clock, 32, tclk);
-
-	/*
-	 * Setup free-running clocksource timer (interrupts
-	 * disabled).
-	 */
-	writel(0xffffffff, timer_base + TIMER0_VAL_OFF);
-	writel(0xffffffff, timer_base + TIMER0_RELOAD_OFF);
-	u = readl(bridge_base + BRIDGE_MASK_OFF);
-	writel(u & ~BRIDGE_INT_TIMER0, bridge_base + BRIDGE_MASK_OFF);
-	u = readl(timer_base + TIMER_CTRL_OFF);
-	writel(u | TIMER0_EN | TIMER0_RELOAD_EN, timer_base + TIMER_CTRL_OFF);
-	clocksource_mmio_init(timer_base + TIMER0_VAL_OFF, "orion_clocksource",
-		tclk, 300, 32, clocksource_mmio_readl_down);
-
-	/*
-	 * Setup clockevent timer (interrupt-driven).
-	 */
-	if (request_irq(irq, orion_timer_interrupt, IRQF_TIMER, "orion_tick",
-			NULL))
-		pr_err("Failed to request irq %u (orion_tick)\n", irq);
-	orion_clkevt.cpumask = cpumask_of(0);
-	clockevents_config_and_register(&orion_clkevt, tclk, 1, 0xfffffffe);
-}
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 28ca856ecc75..434cce3efd96 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -471,8 +471,7 @@ config SATA_HIGHBANK
 
 config SATA_MV
 	tristate "Marvell SATA support"
-	depends on PCI || ARCH_DOVE || ARCH_MV78XX0 || \
-		   ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST
+	depends on PCI || ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST
 	select GENERIC_PHY
 	select SATA_HOST
 	help
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 4f060d3e5636..d06903635335 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -330,7 +330,7 @@ config MMC_SDHCI_ESDHC_IMX
 
 config MMC_SDHCI_DOVE
 	tristate "SDHCI support on Marvell's Dove SoC"
-	depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST
+	depends on MACH_DOVE || COMPILE_TEST
 	depends on MMC_SDHCI_PLTFM
 	select MMC_SDHCI_IO_ACCESSORS
 	help
diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
index d246bbe37948..7e550c474b7a 100644
--- a/drivers/pci/controller/Kconfig
+++ b/drivers/pci/controller/Kconfig
@@ -197,7 +197,7 @@ config PCI_LOONGSON
 
 config PCI_MVEBU
 	tristate "Marvell EBU PCIe controller"
-	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
+	depends on ARCH_MVEBU || COMPILE_TEST
 	depends on MVEBU_MBUS
 	depends on ARM
 	depends on OF
diff --git a/drivers/phy/marvell/Kconfig b/drivers/phy/marvell/Kconfig
index bccd72dccb77..c29d2d28ae55 100644
--- a/drivers/phy/marvell/Kconfig
+++ b/drivers/phy/marvell/Kconfig
@@ -77,7 +77,7 @@ config PHY_MVEBU_CP110_UTMI
 
 config PHY_MVEBU_SATA
 	def_bool y
-	depends on ARCH_DOVE || MACH_DOVE || MACH_KIRKWOOD
+	depends on MACH_DOVE || MACH_KIRKWOOD
 	depends on OF
 	select GENERIC_PHY
 
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 55ffee3d75ce..5cb6cdfe6015 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -1703,7 +1703,7 @@ config RTC_DRV_STARFIRE
 
 config RTC_DRV_MV
 	tristate "Marvell SoC RTC"
-	depends on ARCH_DOVE || ARCH_MVEBU || COMPILE_TEST
+	depends on ARCH_MVEBU || COMPILE_TEST
 	help
 	  If you say yes here you will get support for the in-chip RTC
 	  that can be found in some of Marvell's SoC devices, such as
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index c9e689080ceb..6411b96d584c 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -9,7 +9,6 @@ obj-$(CONFIG_ARCH_AT91)		+= atmel/
 obj-y				+= bcm/
 obj-$(CONFIG_ARCH_CANAAN)	+= canaan/
 obj-$(CONFIG_EP93XX_SOC)        += cirrus/
-obj-$(CONFIG_ARCH_DOVE)		+= dove/
 obj-$(CONFIG_MACH_DOVE)		+= dove/
 obj-y				+= fsl/
 obj-y				+= fujitsu/
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 810eeccedfba..8cef9b658191 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -391,7 +391,7 @@ config KIRKWOOD_THERMAL
 
 config DOVE_THERMAL
 	tristate "Temperature sensor on Marvell Dove SoCs"
-	depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST
+	depends on MACH_DOVE || COMPILE_TEST
 	depends on HAS_IOMEM
 	depends on OF
 	help
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 0ab0dcc6d27d..d83bfb189705 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -690,7 +690,7 @@ config K3_RTI_WATCHDOG
 
 config ORION_WATCHDOG
 	tristate "Orion watchdog"
-	depends on ARCH_ORION5X || ARCH_DOVE || MACH_DOVE || ARCH_MVEBU || COMPILE_TEST
+	depends on ARCH_ORION5X || MACH_DOVE || ARCH_MVEBU || COMPILE_TEST
 	depends on ARM
 	select WATCHDOG_CORE
 	help
diff --git a/sound/soc/kirkwood/Kconfig b/sound/soc/kirkwood/Kconfig
index 924072e402c8..d59c5bb0b391 100644
--- a/sound/soc/kirkwood/Kconfig
+++ b/sound/soc/kirkwood/Kconfig
@@ -3,7 +3,7 @@ menu "Kirkwood"
 
 config SND_KIRKWOOD_SOC
 	tristate "SoC Audio for the Marvell Kirkwood and Dove chips"
-	depends on ARCH_DOVE || ARCH_MVEBU || COMPILE_TEST
+	depends on ARCH_MVEBU || COMPILE_TEST
 	help
 	  Say Y or M if you want to add support for codecs attached to
 	  the Kirkwood I2S interface. You will also need to select the
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 06/13] ARM: omap2: remove omap24xx support
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (4 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all " Arnd Bergmann
@ 2026-09-08 15:27 ` Arnd Bergmann
  2026-09-08 17:18   ` Aaro Koskinen
                     ` (3 more replies)
  2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
                   ` (7 subsequent siblings)
  13 siblings, 4 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Paul Walmsley,
	Herbert Xu, David S. Miller, Mauro Carvalho Chehab,
	Kyungmin Park, Helge Deller, Tero Kristo, Stephen Boyd,
	Thomas Zimmermann, linux-media, linux-mtd, linux-fbdev,
	dri-devel, linux-clk

From: Arnd Bergmann <arnd@arndb.de>

The omap24xx SoC platform was used in the Nokia N800 and N810 tablets
released on 2007 and was among the first ARMv6 CPUs in products that
made it into products.

Unfortunately the early ARM1136r0 CPU cores had a number of quirks that
caused a disproportionate amount of work to keep them compatible with
later ARMv6K/v7/v8 implementations.

Drop the support for this SoC in order to allow removing ARM1136r0.

Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
Cc: Andreas Kemnade <andreas@kemnade.info>
Cc: Kevin Hilman <khilman@baylibre.com>
Cc: Roger Quadros <rogerq@kernel.org>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Paul Walmsley <paul@pwsan.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Tero Kristo <kristo@kernel.org>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: linux-kernel@vger.kernel.org
Cc: linux-omap@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: linux-mtd@lists.infradead.org
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-clk@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 MAINTAINERS                                   |    2 -
 arch/arm/boot/dts/ti/omap/Makefile            |    6 -
 arch/arm/boot/dts/ti/omap/omap2.dtsi          |  338 -----
 .../arm/boot/dts/ti/omap/omap2420-clocks.dtsi |  267 ----
 arch/arm/boot/dts/ti/omap/omap2420-h4.dts     |   63 -
 arch/arm/boot/dts/ti/omap/omap2420-n800.dts   |    9 -
 .../boot/dts/ti/omap/omap2420-n810-wimax.dts  |    9 -
 arch/arm/boot/dts/ti/omap/omap2420-n810.dts   |   75 -
 .../dts/ti/omap/omap2420-n8x0-common.dtsi     |  123 --
 arch/arm/boot/dts/ti/omap/omap2420.dtsi       |  262 ----
 .../arm/boot/dts/ti/omap/omap2430-clocks.dtsi |  341 -----
 arch/arm/boot/dts/ti/omap/omap2430-sdp.dts    |   70 -
 arch/arm/boot/dts/ti/omap/omap2430.dtsi       |  366 -----
 .../arm/boot/dts/ti/omap/omap24xx-clocks.dtsi | 1241 -----------------
 arch/arm/configs/omap2plus_defconfig          |    2 -
 arch/arm/mach-omap2/Kconfig                   |   62 +-
 arch/arm/mach-omap2/Makefile                  |   63 +-
 arch/arm/mach-omap2/board-generic.c           |   34 -
 arch/arm/mach-omap2/board-n8x0.c              |  512 -------
 arch/arm/mach-omap2/clkt2xxx_dpll.c           |   56 -
 arch/arm/mach-omap2/clkt2xxx_dpllcore.c       |  194 ---
 arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c  |  259 ----
 arch/arm/mach-omap2/clock.c                   |   12 +-
 arch/arm/mach-omap2/clock2xxx.h               |   17 -
 arch/arm/mach-omap2/clockdomain.c             |    4 +-
 arch/arm/mach-omap2/clockdomain.h             |    5 -
 arch/arm/mach-omap2/clockdomains2420_data.c   |  154 --
 arch/arm/mach-omap2/clockdomains2430_data.c   |  181 ---
 .../mach-omap2/clockdomains2xxx_3xxx_data.c   |   29 +-
 arch/arm/mach-omap2/cm-regbits-24xx.h         |   51 -
 arch/arm/mach-omap2/cm2xxx.c                  |  302 ----
 arch/arm/mach-omap2/cm2xxx.h                  |   60 -
 arch/arm/mach-omap2/cm_common.c               |   12 -
 arch/arm/mach-omap2/common-board-devices.h    |   11 -
 arch/arm/mach-omap2/common.h                  |   12 -
 arch/arm/mach-omap2/control.h                 |   56 -
 arch/arm/mach-omap2/display.c                 |    4 +-
 arch/arm/mach-omap2/dma.c                     |   53 +-
 arch/arm/mach-omap2/fb.c                      |   14 +-
 arch/arm/mach-omap2/gpmc.h                    |   10 -
 arch/arm/mach-omap2/i2c.c                     |    2 +-
 arch/arm/mach-omap2/id.c                      |   80 +-
 arch/arm/mach-omap2/io.c                      |  140 +-
 arch/arm/mach-omap2/iomap.h                   |   46 -
 arch/arm/mach-omap2/l3_2xxx.h                 |   15 -
 arch/arm/mach-omap2/l4_2xxx.h                 |   19 -
 arch/arm/mach-omap2/mmc.h                     |   18 -
 arch/arm/mach-omap2/msdi.c                    |   75 -
 arch/arm/mach-omap2/omap2-restart.c           |   62 -
 arch/arm/mach-omap2/omap24xx.h                |   73 -
 arch/arm/mach-omap2/omap_hwmod.c              |   18 +-
 arch/arm/mach-omap2/omap_hwmod.h              |    2 -
 arch/arm/mach-omap2/omap_hwmod_2420_data.c    |  402 ------
 arch/arm/mach-omap2/omap_hwmod_2430_data.c    |  606 --------
 .../omap_hwmod_2xxx_interconnect_data.c       |  256 ----
 .../mach-omap2/omap_hwmod_2xxx_ipblock_data.c |  668 ---------
 arch/arm/mach-omap2/omap_hwmod_common_data.h  |   66 -
 arch/arm/mach-omap2/opp2420_data.c            |  131 --
 arch/arm/mach-omap2/opp2430_data.c            |  136 --
 arch/arm/mach-omap2/opp2xxx.h                 |  430 ------
 arch/arm/mach-omap2/pdata-quirks.c            |   35 +-
 arch/arm/mach-omap2/pm.h                      |    5 -
 arch/arm/mach-omap2/powerdomain.h             |    3 -
 arch/arm/mach-omap2/powerdomains2xxx_data.c   |  134 --
 arch/arm/mach-omap2/prcm-common.h             |  147 --
 arch/arm/mach-omap2/prm-regbits-24xx.h        |   39 -
 arch/arm/mach-omap2/prm2xxx.c                 |  229 ---
 arch/arm/mach-omap2/prm2xxx.h                 |  128 --
 arch/arm/mach-omap2/prm2xxx_3xxx.c            |    1 -
 arch/arm/mach-omap2/prm_common.c              |   11 -
 arch/arm/mach-omap2/sdrc.h                    |   21 -
 arch/arm/mach-omap2/sdrc2xxx.c                |  164 ---
 arch/arm/mach-omap2/sleep24xx.S               |   91 --
 arch/arm/mach-omap2/soc.h                     |   59 -
 arch/arm/mach-omap2/sram.c                    |  159 +--
 arch/arm/mach-omap2/sram.h                    |   32 -
 arch/arm/mach-omap2/sram242x.S                |  317 -----
 arch/arm/mach-omap2/sram243x.S                |  317 -----
 arch/arm/mach-omap2/usb-tusb6010.c            |  217 ---
 arch/arm/mach-omap2/usb-tusb6010.h            |   12 -
 arch/arm/mach-omap2/voltagedomains2xxx_data.c |   29 -
 drivers/crypto/Kconfig                        |    2 +-
 drivers/media/platform/ti/omap/Kconfig        |    4 +-
 drivers/mtd/nand/onenand/Kconfig              |    4 +-
 drivers/video/fbdev/omap2/omapfb/Kconfig      |    2 +-
 include/linux/clk/ti.h                        |    8 -
 86 files changed, 60 insertions(+), 10696 deletions(-)
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-h4.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n800.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n810.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430.dtsi
 delete mode 100644 arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
 delete mode 100644 arch/arm/mach-omap2/board-n8x0.c
 delete mode 100644 arch/arm/mach-omap2/clkt2xxx_dpll.c
 delete mode 100644 arch/arm/mach-omap2/clkt2xxx_dpllcore.c
 delete mode 100644 arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
 delete mode 100644 arch/arm/mach-omap2/clock2xxx.h
 delete mode 100644 arch/arm/mach-omap2/clockdomains2420_data.c
 delete mode 100644 arch/arm/mach-omap2/clockdomains2430_data.c
 delete mode 100644 arch/arm/mach-omap2/cm-regbits-24xx.h
 delete mode 100644 arch/arm/mach-omap2/cm2xxx.c
 delete mode 100644 arch/arm/mach-omap2/cm2xxx.h
 delete mode 100644 arch/arm/mach-omap2/common-board-devices.h
 delete mode 100644 arch/arm/mach-omap2/gpmc.h
 delete mode 100644 arch/arm/mach-omap2/l3_2xxx.h
 delete mode 100644 arch/arm/mach-omap2/l4_2xxx.h
 delete mode 100644 arch/arm/mach-omap2/mmc.h
 delete mode 100644 arch/arm/mach-omap2/msdi.c
 delete mode 100644 arch/arm/mach-omap2/omap2-restart.c
 delete mode 100644 arch/arm/mach-omap2/omap24xx.h
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2420_data.c
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2430_data.c
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
 delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
 delete mode 100644 arch/arm/mach-omap2/opp2420_data.c
 delete mode 100644 arch/arm/mach-omap2/opp2430_data.c
 delete mode 100644 arch/arm/mach-omap2/opp2xxx.h
 delete mode 100644 arch/arm/mach-omap2/powerdomains2xxx_data.c
 delete mode 100644 arch/arm/mach-omap2/prm-regbits-24xx.h
 delete mode 100644 arch/arm/mach-omap2/prm2xxx.c
 delete mode 100644 arch/arm/mach-omap2/prm2xxx.h
 delete mode 100644 arch/arm/mach-omap2/sdrc2xxx.c
 delete mode 100644 arch/arm/mach-omap2/sleep24xx.S
 delete mode 100644 arch/arm/mach-omap2/sram242x.S
 delete mode 100644 arch/arm/mach-omap2/sram243x.S
 delete mode 100644 arch/arm/mach-omap2/usb-tusb6010.c
 delete mode 100644 arch/arm/mach-omap2/usb-tusb6010.h
 delete mode 100644 arch/arm/mach-omap2/voltagedomains2xxx_data.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 028db7ad15ad..0d10f778800d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -19874,7 +19874,6 @@ M:	Jarkko Nikula <jarkko.nikula@bitmer.com>
 L:	linux-sound@vger.kernel.org
 L:	linux-omap@vger.kernel.org
 S:	Maintained
-F:	sound/soc/ti/n810.c
 F:	sound/soc/ti/omap*
 F:	sound/soc/ti/rx51.c
 F:	sound/soc/ti/sdma-pcm.*
@@ -20027,7 +20026,6 @@ F:	drivers/gpio/gpio-tps65219.c
 F:	drivers/i2c/busses/i2c-omap.c
 F:	drivers/irqchip/irq-omap-intc.c
 F:	drivers/mfd/*omap*.c
-F:	drivers/mfd/menelaus.c
 F:	drivers/mfd/palmas.c
 F:	drivers/mfd/tps65217.c
 F:	drivers/mfd/tps65218.c
diff --git a/arch/arm/boot/dts/ti/omap/Makefile b/arch/arm/boot/dts/ti/omap/Makefile
index 498c36ccb5ea..3c5d378df6b9 100644
--- a/arch/arm/boot/dts/ti/omap/Makefile
+++ b/arch/arm/boot/dts/ti/omap/Makefile
@@ -1,10 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
-dtb-$(CONFIG_ARCH_OMAP2) += \
-	omap2420-h4.dtb \
-	omap2420-n800.dtb \
-	omap2420-n810.dtb \
-	omap2420-n810-wimax.dtb \
-	omap2430-sdp.dtb
 dtb-$(CONFIG_ARCH_OMAP3) += \
 	am3517-craneboard.dtb \
 	am3517-evm.dtb \
diff --git a/arch/arm/boot/dts/ti/omap/omap2.dtsi b/arch/arm/boot/dts/ti/omap/omap2.dtsi
deleted file mode 100644
index fdc1790adf43..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2.dtsi
+++ /dev/null
@@ -1,338 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree Source for OMAP2 SoC
- *
- * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
- */
-
-#include <dt-bindings/bus/ti-sysc.h>
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/pinctrl/omap.h>
-
-/ {
-	compatible = "ti,omap2430", "ti,omap2420", "ti,omap2";
-	interrupt-parent = <&intc>;
-	#address-cells = <1>;
-	#size-cells = <1>;
-	chosen { };
-
-	aliases {
-		serial0 = &uart1;
-		serial1 = &uart2;
-		serial2 = &uart3;
-		i2c0 = &i2c1;
-		i2c1 = &i2c2;
-	};
-
-	cpus {
-		#address-cells = <0>;
-		#size-cells = <0>;
-
-		cpu {
-			compatible = "arm,arm1136jf-s";
-			device_type = "cpu";
-		};
-	};
-
-	pmu {
-		compatible = "arm,arm1136-pmu";
-		interrupts = <3>;
-	};
-
-	soc {
-		compatible = "ti,omap-infra";
-		mpu {
-			compatible = "ti,omap2-mpu";
-			ti,hwmods = "mpu";
-		};
-	};
-
-	ocp {
-		compatible = "simple-bus";
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-		ti,hwmods = "l3_main";
-
-		aes: aes@480a6000 {
-			compatible = "ti,omap2-aes";
-			ti,hwmods = "aes";
-			reg = <0x480a6000 0x50>;
-			dmas = <&sdma 9 &sdma 10>;
-			dma-names = "tx", "rx";
-		};
-
-		hdq1w: 1w@480b2000 {
-			compatible = "ti,omap2420-1w";
-			ti,hwmods = "hdq1w";
-			reg = <0x480b2000 0x1000>;
-			interrupts = <58>;
-		};
-
-		intc: interrupt-controller@1 {
-			compatible = "ti,omap2-intc";
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			reg = <0x480FE000 0x1000>;
-		};
-
-		target-module@48056000 {
-			compatible = "ti,sysc-omap2", "ti,sysc";
-			reg = <0x48056000 0x4>,
-			      <0x4805602c 0x4>,
-			      <0x48056028 0x4>;
-			reg-names = "rev", "sysc", "syss";
-			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
-					 SYSC_OMAP2_EMUFREE |
-					 SYSC_OMAP2_SOFTRESET |
-					 SYSC_OMAP2_AUTOIDLE)>;
-			ti,sysc-midle = <SYSC_IDLE_FORCE>,
-					<SYSC_IDLE_NO>,
-					<SYSC_IDLE_SMART>;
-			ti,syss-mask = <1>;
-			clocks = <&core_l3_ck>;
-			clock-names = "fck";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x48056000 0x1000>;
-
-			sdma: dma-controller@0 {
-				compatible = "ti,omap2420-sdma", "ti,omap-sdma";
-				reg = <0 0x1000>;
-				interrupts = <12>,
-					     <13>,
-					     <14>,
-					     <15>;
-				#dma-cells = <1>;
-				dma-channels = <32>;
-				dma-requests = <64>;
-			};
-		};
-
-		i2c1: i2c@48070000 {
-			compatible = "ti,omap2-i2c";
-			ti,hwmods = "i2c1";
-			reg = <0x48070000 0x80>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			interrupts = <56>;
-		};
-
-		i2c2: i2c@48072000 {
-			compatible = "ti,omap2-i2c";
-			ti,hwmods = "i2c2";
-			reg = <0x48072000 0x80>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			interrupts = <57>;
-		};
-
-		mcspi1: spi@48098000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "ti,omap2-mcspi";
-			ti,hwmods = "mcspi1";
-			reg = <0x48098000 0x100>;
-			interrupts = <65>;
-			dmas = <&sdma 35 &sdma 36 &sdma 37 &sdma 38
-				&sdma 39 &sdma 40 &sdma 41 &sdma 42>;
-			dma-names = "tx0", "rx0", "tx1", "rx1",
-				    "tx2", "rx2", "tx3", "rx3";
-		};
-
-		mcspi2: spi@4809a000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "ti,omap2-mcspi";
-			ti,hwmods = "mcspi2";
-			reg = <0x4809a000 0x100>;
-			interrupts = <66>;
-			dmas = <&sdma 43 &sdma 44 &sdma 45 &sdma 46>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
-		};
-
-		rng: rng@480a0000 {
-			compatible = "ti,omap2-rng";
-			ti,hwmods = "rng";
-			reg = <0x480a0000 0x50>;
-			interrupts = <52>;
-		};
-
-		sham: sham@480a4000 {
-			compatible = "ti,omap2-sham";
-			ti,hwmods = "sham";
-			reg = <0x480a4000 0x64>;
-			interrupts = <51>;
-			dmas = <&sdma 13>;
-			dma-names = "rx";
-		};
-
-		uart1: serial@4806a000 {
-			compatible = "ti,omap2-uart";
-			ti,hwmods = "uart1";
-			reg = <0x4806a000 0x2000>;
-			interrupts = <72>;
-			dmas = <&sdma 49 &sdma 50>;
-			dma-names = "tx", "rx";
-			clock-frequency = <48000000>;
-		};
-
-		uart2: serial@4806c000 {
-			compatible = "ti,omap2-uart";
-			ti,hwmods = "uart2";
-			reg = <0x4806c000 0x400>;
-			interrupts = <73>;
-			dmas = <&sdma 51 &sdma 52>;
-			dma-names = "tx", "rx";
-			clock-frequency = <48000000>;
-		};
-
-		uart3: serial@4806e000 {
-			compatible = "ti,omap2-uart";
-			ti,hwmods = "uart3";
-			reg = <0x4806e000 0x400>;
-			interrupts = <74>;
-			dmas = <&sdma 53 &sdma 54>;
-			dma-names = "tx", "rx";
-			clock-frequency = <48000000>;
-		};
-
-		timer2_target: target-module@4802a000 {
-			compatible = "ti,sysc-omap2-timer", "ti,sysc";
-			reg = <0x4802a000 0x4>,
-			      <0x4802a010 0x4>,
-			      <0x4802a014 0x4>;
-			reg-names = "rev", "sysc", "syss";
-			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
-					 SYSC_OMAP2_EMUFREE |
-					 SYSC_OMAP2_ENAWAKEUP |
-					 SYSC_OMAP2_SOFTRESET |
-					 SYSC_OMAP2_AUTOIDLE)>;
-			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
-					<SYSC_IDLE_NO>,
-					<SYSC_IDLE_SMART>;
-			ti,syss-mask = <1>;
-			clocks = <&gpt2_fck>, <&gpt2_ick>;
-			clock-names = "fck", "ick";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0x0 0x4802a000 0x1000>;
-
-			timer2: timer@0 {
-				compatible = "ti,omap2420-timer";
-				reg = <0 0x400>;
-				interrupts = <38>;
-			};
-		};
-
-		timer3: timer@48078000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x48078000 0x400>;
-			interrupts = <39>;
-			ti,hwmods = "timer3";
-		};
-
-		timer4: timer@4807a000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x4807a000 0x400>;
-			interrupts = <40>;
-			ti,hwmods = "timer4";
-		};
-
-		timer5: timer@4807c000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x4807c000 0x400>;
-			interrupts = <41>;
-			ti,hwmods = "timer5";
-			ti,timer-dsp;
-		};
-
-		timer6: timer@4807e000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x4807e000 0x400>;
-			interrupts = <42>;
-			ti,hwmods = "timer6";
-			ti,timer-dsp;
-		};
-
-		timer7: timer@48080000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x48080000 0x400>;
-			interrupts = <43>;
-			ti,hwmods = "timer7";
-			ti,timer-dsp;
-		};
-
-		timer8: timer@48082000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x48082000 0x400>;
-			interrupts = <44>;
-			ti,hwmods = "timer8";
-			ti,timer-dsp;
-		};
-
-		timer9: timer@48084000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x48084000 0x400>;
-			interrupts = <45>;
-			ti,hwmods = "timer9";
-			ti,timer-pwm;
-		};
-
-		timer10: timer@48086000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x48086000 0x400>;
-			interrupts = <46>;
-			ti,hwmods = "timer10";
-			ti,timer-pwm;
-		};
-
-		timer11: timer@48088000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x48088000 0x400>;
-			interrupts = <47>;
-			ti,hwmods = "timer11";
-			ti,timer-pwm;
-		};
-
-		timer12: timer@4808a000 {
-			compatible = "ti,omap2420-timer";
-			reg = <0x4808a000 0x400>;
-			interrupts = <48>;
-			ti,hwmods = "timer12";
-			ti,timer-pwm;
-		};
-
-		dss: dss@48050000 {
-			compatible = "ti,omap2-dss";
-			reg = <0x48050000 0x400>;
-			status = "disabled";
-			ti,hwmods = "dss_core";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-
-			dispc@48050400 {
-				compatible = "ti,omap2-dispc";
-				reg = <0x48050400 0x400>;
-				interrupts = <25>;
-				ti,hwmods = "dss_dispc";
-			};
-
-			rfbi: encoder@48050800 {
-				compatible = "ti,omap2-rfbi";
-				reg = <0x48050800 0x400>;
-				status = "disabled";
-				ti,hwmods = "dss_rfbi";
-			};
-
-			venc: encoder@48050c00 {
-				compatible = "ti,omap2-venc";
-				reg = <0x48050c00 0x400>;
-				status = "disabled";
-				ti,hwmods = "dss_venc";
-			};
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi b/arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
deleted file mode 100644
index 00a7a199a91c..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
+++ /dev/null
@@ -1,267 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree Source for OMAP2420 clock data
- *
- * Copyright (C) 2014 Texas Instruments, Inc.
- */
-
-&prcm_clocks {
-	sys_clkout2_src_gate: sys_clkout2_src_gate@70 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-no-wait-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <15>;
-		reg = <0x0070>;
-	};
-
-	sys_clkout2_src_mux: sys_clkout2_src_mux@70 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&core_ck>, <&sys_ck>, <&func_96m_ck>, <&func_54m_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0070>;
-	};
-
-	sys_clkout2_src: sys_clkout2_src {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&sys_clkout2_src_gate>, <&sys_clkout2_src_mux>;
-	};
-
-	sys_clkout2: sys_clkout2@70 {
-		#clock-cells = <0>;
-		compatible = "ti,divider-clock";
-		clocks = <&sys_clkout2_src>;
-		ti,bit-shift = <11>;
-		ti,max-div = <64>;
-		reg = <0x0070>;
-		ti,index-power-of-two;
-	};
-
-	dsp_gate_ick: dsp_gate_ick@810 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-interface-clock";
-		clocks = <&dsp_fck>;
-		ti,bit-shift = <1>;
-		reg = <0x0810>;
-	};
-
-	dsp_div_ick: dsp_div_ick@840 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&dsp_fck>;
-		ti,bit-shift = <5>;
-		ti,max-div = <3>;
-		reg = <0x0840>;
-		ti,index-starts-at-one;
-	};
-
-	dsp_ick: dsp_ick {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&dsp_gate_ick>, <&dsp_div_ick>;
-	};
-
-	iva1_gate_ifck: iva1_gate_ifck@800 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <10>;
-		reg = <0x0800>;
-	};
-
-	iva1_div_ifck: iva1_div_ifck@840 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0840>;
-		ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>, <0>, <0>, <0>, <12>;
-	};
-
-	iva1_ifck: iva1_ifck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&iva1_gate_ifck>, <&iva1_div_ifck>;
-	};
-
-	iva1_ifck_div: iva1_ifck_div {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&iva1_ifck>;
-		clock-mult = <1>;
-		clock-div = <2>;
-	};
-
-	iva1_mpu_int_ifck: iva1_mpu_int_ifck@800 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&iva1_ifck_div>;
-		ti,bit-shift = <8>;
-		reg = <0x0800>;
-	};
-
-	wdt3_ick: wdt3_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <28>;
-		reg = <0x0210>;
-	};
-
-	wdt3_fck: wdt3_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <28>;
-		reg = <0x0200>;
-	};
-
-	mmc_ick: mmc_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <26>;
-		reg = <0x0210>;
-	};
-
-	mmc_fck: mmc_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <26>;
-		reg = <0x0200>;
-	};
-
-	eac_ick: eac_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <24>;
-		reg = <0x0210>;
-	};
-
-	eac_fck: eac_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <24>;
-		reg = <0x0200>;
-	};
-
-	i2c1_fck: i2c1_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_12m_ck>;
-		ti,bit-shift = <19>;
-		reg = <0x0200>;
-	};
-
-	i2c2_fck: i2c2_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_12m_ck>;
-		ti,bit-shift = <20>;
-		reg = <0x0200>;
-	};
-
-	vlynq_ick: vlynq_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x0210>;
-	};
-
-	vlynq_gate_fck: vlynq_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x0200>;
-	};
-
-	core_d18_ck: core_d18_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <18>;
-	};
-
-	vlynq_mux_fck: vlynq_mux_fck@240 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_96m_ck>, <&core_ck>, <&core_d2_ck>, <&core_d3_ck>, <&core_d4_ck>, <&dummy_ck>, <&core_d6_ck>, <&dummy_ck>, <&core_d8_ck>, <&core_d9_ck>, <&dummy_ck>, <&dummy_ck>, <&core_d12_ck>, <&dummy_ck>, <&dummy_ck>, <&dummy_ck>, <&core_d16_ck>, <&dummy_ck>, <&core_d18_ck>;
-		ti,bit-shift = <15>;
-		reg = <0x0240>;
-	};
-
-	vlynq_fck: vlynq_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&vlynq_gate_fck>, <&vlynq_mux_fck>;
-	};
-};
-
-&prcm_clockdomains {
-	gfx_clkdm: gfx_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&gfx_ick>;
-	};
-
-	core_l3_clkdm: core_l3_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&cam_fck>, <&vlynq_ick>, <&usb_fck>;
-	};
-
-	wkup_clkdm: wkup_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&dpll_ck>, <&emul_ck>, <&gpt1_ick>, <&gpios_ick>,
-			 <&gpios_fck>, <&mpu_wdt_ick>, <&mpu_wdt_fck>,
-			 <&sync_32k_ick>, <&wdt1_ick>, <&omapctrl_ick>;
-	};
-
-	iva1_clkdm: iva1_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&iva1_mpu_int_ifck>;
-	};
-
-	dss_clkdm: dss_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&dss_ick>, <&dss_54m_fck>;
-	};
-
-	core_l4_clkdm: core_l4_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&ssi_l4_ick>, <&gpt2_ick>, <&gpt3_ick>, <&gpt4_ick>,
-			 <&gpt5_ick>, <&gpt6_ick>, <&gpt7_ick>, <&gpt8_ick>,
-			 <&gpt9_ick>, <&gpt10_ick>, <&gpt11_ick>, <&gpt12_ick>,
-			 <&mcbsp1_ick>, <&mcbsp2_ick>, <&mcspi1_ick>,
-			 <&mcspi1_fck>, <&mcspi2_ick>, <&mcspi2_fck>,
-			 <&uart1_ick>, <&uart1_fck>, <&uart2_ick>, <&uart2_fck>,
-			 <&uart3_ick>, <&uart3_fck>, <&cam_ick>,
-			 <&mailboxes_ick>, <&wdt4_ick>, <&wdt4_fck>,
-			 <&wdt3_ick>, <&wdt3_fck>, <&mspro_ick>, <&mspro_fck>,
-			 <&mmc_ick>, <&mmc_fck>, <&fac_ick>, <&fac_fck>,
-			 <&eac_ick>, <&eac_fck>, <&hdq_ick>, <&hdq_fck>,
-			 <&i2c1_ick>, <&i2c1_fck>, <&i2c2_ick>, <&i2c2_fck>,
-			 <&des_ick>, <&sha_ick>, <&rng_ick>, <&aes_ick>,
-			 <&pka_ick>;
-	};
-};
-
-&func_96m_ck {
-	compatible = "fixed-factor-clock";
-	clocks = <&apll96_ck>;
-	clock-mult = <1>;
-	clock-div = <1>;
-};
-
-&dsp_div_fck {
-	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>, <0>, <0>, <0>, <12>;
-};
-
-&ssi_ssr_sst_div_fck {
-	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>;
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420-h4.dts b/arch/arm/boot/dts/ti/omap/omap2420-h4.dts
deleted file mode 100644
index 5acf5dd87c59..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420-h4.dts
+++ /dev/null
@@ -1,63 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
- */
-/dts-v1/;
-
-#include "omap2420.dtsi"
-
-/ {
-	model = "TI OMAP2420 H4 board";
-	compatible = "ti,omap2420-h4", "ti,omap2420", "ti,omap2";
-
-	memory@80000000 {
-		device_type = "memory";
-		reg = <0x80000000 0x4000000>; /* 64 MB */
-	};
-};
-
-&gpmc {
-	ranges = <0 0 0x08000000 0x04000000>;
-
-	nor@0,0 {
-		compatible = "cfi-flash";
-		linux,mtd-name = "intel,ge28f256l18b85";
-		#address-cells = <1>;
-		#size-cells = <1>;
-		reg = <0 0 0x04000000>;
-		bank-width = <2>;
-
-		gpmc,mux-add-data = <2>;
-		gpmc,cs-on-ns = <10>;
-		gpmc,cs-rd-off-ns = <160>;
-		gpmc,cs-wr-off-ns = <160>;
-		gpmc,adv-on-ns = <20>;
-		gpmc,adv-rd-off-ns = <50>;
-		gpmc,adv-wr-off-ns = <50>;
-		gpmc,oe-on-ns = <60>;
-		gpmc,oe-off-ns = <120>;
-		gpmc,we-on-ns = <60>;
-		gpmc,we-off-ns = <120>;
-		gpmc,rd-cycle-ns = <170>;
-		gpmc,wr-cycle-ns = <170>;
-		gpmc,access-ns = <150>;
-		gpmc,page-burst-access-ns = <10>;
-
-		partition@0 {
-			label = "bootloader";
-			reg = <0 0x20000>;
-		};
-		partition@20000 {
-			label = "params";
-			reg = <0x20000 0x20000>;
-		};
-		partition@40000 {
-			label = "kernel";
-			reg = <0x40000 0x200000>;
-		};
-		partition@240000 {
-			label = "file-system";
-			reg = <0x240000 0x3dc0000>;
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n800.dts b/arch/arm/boot/dts/ti/omap/omap2420-n800.dts
deleted file mode 100644
index f06d767e818b..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420-n800.dts
+++ /dev/null
@@ -1,9 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/dts-v1/;
-
-#include "omap2420-n8x0-common.dtsi"
-
-/ {
-	model = "Nokia N800";
-	compatible = "nokia,n800", "nokia,n8x0", "ti,omap2420", "ti,omap2";
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts b/arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
deleted file mode 100644
index ac9acbd609b6..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
+++ /dev/null
@@ -1,9 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/dts-v1/;
-
-#include "omap2420-n8x0-common.dtsi"
-
-/ {
-	model = "Nokia N810 WiMax";
-	compatible = "nokia,n810-wimax", "nokia,n8x0", "ti,omap2420", "ti,omap2";
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n810.dts b/arch/arm/boot/dts/ti/omap/omap2420-n810.dts
deleted file mode 100644
index 3bf8175d85a8..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420-n810.dts
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/dts-v1/;
-
-#include "omap2420-n8x0-common.dtsi"
-
-/ {
-	model = "Nokia N810";
-	compatible = "nokia,n810", "nokia,n8x0", "ti,omap2420", "ti,omap2";
-
-	vio_ape: vio_ape {
-		compatible = "regulator-fixed";
-		regulator-name = "vio_ape";
-		regulator-min-microvolt = <1800000>;
-		regulator-max-microvolt = <1800000>;
-	};
-
-	v28_aic: v28_aic {
-		compatible = "regulator-fixed";
-		regulator-name = "v28_aic";
-		regulator-min-microvolt = <2800000>;
-		regulator-max-microvolt = <2800000>;
-	};
-};
-
-&omap2420_pmx {
-	mcbsp2_pins: mcbsp2-pins {
-		pinctrl-single,pins = <
-			OMAP2420_CORE_IOPAD(0x0124, PIN_INPUT | MUX_MODE1)	/* eac_ac_sclk.mcbsp2_clkx */
-			OMAP2420_CORE_IOPAD(0x0125, PIN_INPUT | MUX_MODE1)	/* eac_ac_fs.mcbsp2_fsx */
-			OMAP2420_CORE_IOPAD(0x0126, PIN_INPUT | MUX_MODE1)	/* eac_ac_din.mcbsp2_dr */
-			OMAP2420_CORE_IOPAD(0x0127, PIN_OUTPUT | MUX_MODE1)	/* eac_ac_dout.mcbsp2_dx */
-		>;
-	};
-
-	aic33_pins: aic33-pins {
-		pinctrl-single,pins = <
-			OMAP2420_CORE_IOPAD(0x0129, PIN_OUTPUT | MUX_MODE3)	/* eac_ac_rst.gpio118 */
-			OMAP2420_CORE_IOPAD(0x00e8, PIN_OUTPUT | MUX_MODE2)	/* vlynq_tx1.sys_clkout2 */
-		>;
-	};
-};
-
-&i2c2 {
-	aic33@18 {
-		compatible = "ti,tlv320aic33";
-		reg = <0x18>;
-
-		pinctrl-names = "default";
-		pinctrl-0 = <&aic33_pins>;
-
-		reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>; /* gpio118 */
-
-		ai3x-gpio-func = <
-			10 /* AIC3X_GPIO1_FUNC_DIGITAL_MIC_MODCLK */
-			5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
-		>;
-		ai3x-micbias-vg = <1>; /* 2V */
-
-		AVDD-supply = <&v28_aic>;
-		DRVDD-supply = <&v28_aic>;
-		IOVDD-supply = <&vio_ape>;
-		DVDD-supply = <&vio_ape>;
-
-		assigned-clocks = <&sys_clkout2_src>, <&sys_clkout2>;
-		assigned-clock-parents = <&func_96m_ck>;
-		assigned-clock-rates = <0>, <12000000>;
-	};
-};
-
-&mcbsp2 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&mcbsp2_pins>;
-
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi b/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
deleted file mode 100644
index fe9dd8bbfc85..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
+++ /dev/null
@@ -1,123 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include "omap2420.dtsi"
-
-/ {
-	memory@80000000 {
-		device_type = "memory";
-		reg = <0x80000000 0x8000000>; /* 128 MB */
-	};
-
-	chosen {
-		stdout-path = &uart3;
-	};
-
-	ocp {
-		i2c0 {
-			compatible = "i2c-cbus-gpio";
-			gpios = <&gpio3 2 GPIO_ACTIVE_HIGH /* gpio66 clk */
-				 &gpio3 1 GPIO_ACTIVE_HIGH /* gpio65 dat */
-				 &gpio3 0 GPIO_ACTIVE_HIGH /* gpio64 sel */
-				>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			retu: retu@1 {
-				compatible = "nokia,retu";
-				interrupt-parent = <&gpio4>;
-				interrupts = <12 IRQ_TYPE_EDGE_RISING>;
-				reg = <0x1>;
-			};
-		};
-	};
-};
-
-&i2c1 {
-	clock-frequency = <400000>;
-
-	pmic@72 {
-		compatible = "menelaus";
-		reg = <0x72>;
-		interrupts = <7 IRQ_TYPE_EDGE_RISING>;
-	};
-};
-
-&i2c2 {
-	clock-frequency = <400000>;
-};
-
-&gpmc {
-	ranges = <0 0 0x04000000 0x1000000>;	/* CS0: 16MB for OneNAND */
-
-	/* gpio-irq for dma: 26 */
-
-	onenand@0,0 {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "ti,omap2-onenand";
-		reg = <0 0 0x20000>;	/* CS0, offset 0, IO size 128K */
-
-		gpmc,sync-read;
-		gpmc,burst-length = <16>;
-		gpmc,burst-read;
-		gpmc,burst-wrap;
-		gpmc,device-width = <2>;
-		gpmc,mux-add-data = <2>;
-		gpmc,cs-on-ns = <0>;
-		gpmc,cs-rd-off-ns = <127>;
-		gpmc,cs-wr-off-ns = <109>;
-		gpmc,adv-on-ns = <0>;
-		gpmc,adv-rd-off-ns = <18>;
-		gpmc,adv-wr-off-ns = <18>;
-		gpmc,oe-on-ns = <27>;
-		gpmc,oe-off-ns = <127>;
-		gpmc,we-on-ns = <27>;
-		gpmc,we-off-ns = <72>;
-		gpmc,rd-cycle-ns = <145>;
-		gpmc,wr-cycle-ns = <136>;
-		gpmc,access-ns = <118>;
-		gpmc,page-burst-access-ns = <27>;
-		gpmc,bus-turnaround-ns = <0>;
-		gpmc,cycle2cycle-delay-ns = <0>;
-		gpmc,wait-monitoring-ns = <0>;
-		gpmc,clk-activation-ns = <9>;
-		gpmc,sync-clk-ps = <27000>;
-
-		/* MTD partition table corresponding to old board-n8x0 file. */
-		partition@0 {
-			label = "bootloader";
-			reg = <0x00000000 0x00020000>;
-			read-only;
-		};
-		partition@1 {
-			label = "config";
-			reg = <0x00020000 0x00060000>;
-		};
-		partition@2 {
-			label = "kernel";
-			reg = <0x00080000 0x00200000>;
-		};
-		partition@3 {
-			label = "initfs";
-			reg = <0x00280000 0x00400000>;
-		};
-		partition@4 {
-			label = "rootfs";
-			reg = <0x00680000 0x0f980000>;
-		};
-		partition@5 {
-			label = "omap2-onenand";
-			reg = <0x00000000 0x10000000>;
-		};
-	};
-};
-
-&mcspi2 {
-	status = "okay";
-
-	wifi@0 {
-		reg = <0>;
-		compatible = "st,stlc4560";
-		spi-max-frequency = <48000000>;
-		interrupts-extended = <&gpio3 23 IRQ_TYPE_EDGE_RISING>;
-		powerdown-gpios = <&gpio4 1 GPIO_ACTIVE_LOW>; /* gpio 97 */
-	};
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2420.dtsi b/arch/arm/boot/dts/ti/omap/omap2420.dtsi
deleted file mode 100644
index 821da51cb870..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2420.dtsi
+++ /dev/null
@@ -1,262 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree Source for OMAP2420 SoC
- *
- * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
- */
-
-#include "omap2.dtsi"
-
-/ {
-	compatible = "ti,omap2420", "ti,omap2";
-
-	ocp {
-		l4: l4@48000000 {
-			compatible = "ti,omap2-l4", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x48000000 0x100000>;
-
-			prcm: prcm@8000 {
-				compatible = "ti,omap2-prcm";
-				reg = <0x8000 0x1000>;
-
-				prcm_clocks: clocks {
-					#address-cells = <1>;
-					#size-cells = <0>;
-				};
-
-				prcm_clockdomains: clockdomains {
-				};
-			};
-
-			scm: scm@0 {
-				compatible = "ti,omap2-scm", "simple-bus";
-				reg = <0x0 0x1000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				#pinctrl-cells = <1>;
-				ranges = <0 0x0 0x1000>;
-
-				omap2420_pmx: pinmux@30 {
-					compatible = "ti,omap2420-padconf",
-						     "pinctrl-single";
-					reg = <0x30 0x0113>;
-					#address-cells = <1>;
-					#size-cells = <0>;
-					#pinctrl-cells = <1>;
-					pinctrl-single,register-width = <8>;
-					pinctrl-single,function-mask = <0x3f>;
-				};
-
-				scm_conf: scm_conf@270 {
-					compatible = "syscon";
-					reg = <0x270 0x100>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-
-					scm_clocks: clocks {
-						#address-cells = <1>;
-						#size-cells = <0>;
-					};
-				};
-
-				scm_clockdomains: clockdomains {
-				};
-			};
-
-			target-module@4000 {
-				compatible = "ti,sysc-omap2", "ti,sysc";
-				reg = <0x4000 0x4>,
-				      <0x4004 0x4>;
-				reg-names = "rev", "sysc";
-				ti,sysc-sidle = <SYSC_IDLE_FORCE>,
-						<SYSC_IDLE_NO>;
-				clocks = <&func_32k_ck>;
-				clock-names = "fck";
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0x0 0x4000 0x1000>;
-
-				counter32k: counter@0 {
-					compatible = "ti,omap-counter32k";
-					reg = <0 0x20>;
-				};
-			};
-		};
-
-		gpio1: gpio@48018000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x48018000 0x200>;
-			interrupts = <29>;
-			ti,hwmods = "gpio1";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio2: gpio@4801a000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x4801a000 0x200>;
-			interrupts = <30>;
-			ti,hwmods = "gpio2";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio3: gpio@4801c000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x4801c000 0x200>;
-			interrupts = <31>;
-			ti,hwmods = "gpio3";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio4: gpio@4801e000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x4801e000 0x200>;
-			interrupts = <32>;
-			ti,hwmods = "gpio4";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpmc: gpmc@6800a000 {
-			compatible = "ti,omap2420-gpmc";
-			reg = <0x6800a000 0x1000>;
-			#address-cells = <2>;
-			#size-cells = <1>;
-			interrupts = <20>;
-			gpmc,num-cs = <8>;
-			gpmc,num-waitpins = <4>;
-			ti,hwmods = "gpmc";
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			gpio-controller;
-			#gpio-cells = <2>;
-		};
-
-		mcbsp1: mcbsp@48074000 {
-			compatible = "ti,omap2420-mcbsp";
-			reg = <0x48074000 0xff>;
-			reg-names = "mpu";
-			interrupts = <59>, /* TX interrupt */
-				     <60>; /* RX interrupt */
-			interrupt-names = "tx", "rx";
-			ti,hwmods = "mcbsp1";
-			dmas = <&sdma 31>,
-			       <&sdma 32>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		mcbsp2: mcbsp@48076000 {
-			compatible = "ti,omap2420-mcbsp";
-			reg = <0x48076000 0xff>;
-			reg-names = "mpu";
-			interrupts = <62>, /* TX interrupt */
-				     <63>; /* RX interrupt */
-			interrupt-names = "tx", "rx";
-			ti,hwmods = "mcbsp2";
-			dmas = <&sdma 33>,
-			       <&sdma 34>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		msdi1: mmc@4809c000 {
-			compatible = "ti,omap2420-mmc";
-			ti,hwmods = "msdi1";
-			reg = <0x4809c000 0x80>;
-			interrupts = <83>;
-			dmas = <&sdma 61 &sdma 62>;
-			dma-names = "tx", "rx";
-		};
-
-		mailbox: mailbox@48094000 {
-			compatible = "ti,omap2-mailbox";
-			reg = <0x48094000 0x200>;
-			interrupts = <26>, <34>;
-			ti,hwmods = "mailbox";
-			#mbox-cells = <1>;
-			ti,mbox-num-users = <4>;
-			ti,mbox-num-fifos = <6>;
-			mbox_dsp: mbox-dsp {
-				ti,mbox-tx = <0 0 0>;
-				ti,mbox-rx = <1 0 0>;
-			};
-			mbox_iva: mbox-iva {
-				ti,mbox-tx = <2 1 3>;
-				ti,mbox-rx = <3 1 3>;
-			};
-		};
-
-		timer1_target: target-module@48028000 {
-			compatible = "ti,sysc-omap2-timer", "ti,sysc";
-			reg = <0x48028000 0x4>,
-			      <0x48028010 0x4>,
-			      <0x48028014 0x4>;
-			reg-names = "rev", "sysc", "syss";
-			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
-					 SYSC_OMAP2_EMUFREE |
-					 SYSC_OMAP2_ENAWAKEUP |
-					 SYSC_OMAP2_SOFTRESET |
-					 SYSC_OMAP2_AUTOIDLE)>;
-			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
-					<SYSC_IDLE_NO>,
-					<SYSC_IDLE_SMART>;
-			ti,syss-mask = <1>;
-			clocks = <&gpt1_fck>, <&gpt1_ick>;
-			clock-names = "fck", "ick";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0x0 0x48028000 0x1000>;
-
-			timer1: timer@0 {
-				compatible = "ti,omap2420-timer";
-				reg = <0 0x400>;
-				interrupts = <37>;
-				ti,timer-alwon;
-			};
-		};
-
-		wd_timer2: wdt@48022000 {
-			compatible = "ti,omap2-wdt";
-			ti,hwmods = "wd_timer2";
-			reg = <0x48022000 0x80>;
-		};
-	};
-};
-
-&i2c1 {
-	compatible = "ti,omap2420-i2c";
-};
-
-&i2c2 {
-	compatible = "ti,omap2420-i2c";
-};
-
-#include "omap24xx-clocks.dtsi"
-#include "omap2420-clocks.dtsi"
-
-/* Preferred always-on timer for clockevent */
-&timer1_target {
-	ti,no-reset-on-init;
-	ti,no-idle;
-	timer@0 {
-		assigned-clocks = <&gpt1_fck>;
-		assigned-clock-parents = <&func_32k_ck>;
-	};
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi b/arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
deleted file mode 100644
index 4e5ab5189476..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
+++ /dev/null
@@ -1,341 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree Source for OMAP2430 clock data
- *
- * Copyright (C) 2014 Texas Instruments, Inc.
- */
-
-&scm_clocks {
-	mcbsp3_mux_fck: mcbsp3_mux_fck@78 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_96m_ck>, <&mcbsp_clks>;
-		reg = <0x78>;
-	};
-
-	mcbsp3_fck: mcbsp3_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&mcbsp3_gate_fck>, <&mcbsp3_mux_fck>;
-	};
-
-	mcbsp4_mux_fck: mcbsp4_mux_fck@78 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_96m_ck>, <&mcbsp_clks>;
-		ti,bit-shift = <2>;
-		reg = <0x78>;
-	};
-
-	mcbsp4_fck: mcbsp4_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&mcbsp4_gate_fck>, <&mcbsp4_mux_fck>;
-	};
-
-	mcbsp5_mux_fck: mcbsp5_mux_fck@78 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_96m_ck>, <&mcbsp_clks>;
-		ti,bit-shift = <4>;
-		reg = <0x78>;
-	};
-
-	mcbsp5_fck: mcbsp5_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&mcbsp5_gate_fck>, <&mcbsp5_mux_fck>;
-	};
-};
-
-&prcm_clocks {
-	iva2_1_gate_ick: iva2_1_gate_ick@800 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&dsp_fck>;
-		ti,bit-shift = <0>;
-		reg = <0x0800>;
-	};
-
-	iva2_1_div_ick: iva2_1_div_ick@840 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&dsp_fck>;
-		ti,bit-shift = <5>;
-		ti,max-div = <3>;
-		reg = <0x0840>;
-		ti,index-starts-at-one;
-	};
-
-	iva2_1_ick: iva2_1_ick {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&iva2_1_gate_ick>, <&iva2_1_div_ick>;
-	};
-
-	mdm_gate_ick: mdm_gate_ick@c10 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-interface-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0c10>;
-	};
-
-	mdm_div_ick: mdm_div_ick@c40 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_ck>;
-		reg = <0x0c40>;
-		ti,dividers = <0>, <1>, <0>, <0>, <4>, <0>, <6>, <0>, <0>, <9>;
-	};
-
-	mdm_ick: mdm_ick {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&mdm_gate_ick>, <&mdm_div_ick>;
-	};
-
-	mdm_osc_ck: mdm_osc_ck@c00 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&osc_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x0c00>;
-	};
-
-	mcbsp3_ick: mcbsp3_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x0214>;
-	};
-
-	mcbsp3_gate_fck: mcbsp3_gate_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&mcbsp_clks>;
-		ti,bit-shift = <3>;
-		reg = <0x0204>;
-	};
-
-	mcbsp4_ick: mcbsp4_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <4>;
-		reg = <0x0214>;
-	};
-
-	mcbsp4_gate_fck: mcbsp4_gate_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&mcbsp_clks>;
-		ti,bit-shift = <4>;
-		reg = <0x0204>;
-	};
-
-	mcbsp5_ick: mcbsp5_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <5>;
-		reg = <0x0214>;
-	};
-
-	mcbsp5_gate_fck: mcbsp5_gate_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&mcbsp_clks>;
-		ti,bit-shift = <5>;
-		reg = <0x0204>;
-	};
-
-	mcspi3_ick: mcspi3_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <9>;
-		reg = <0x0214>;
-	};
-
-	mcspi3_fck: mcspi3_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <9>;
-		reg = <0x0204>;
-	};
-
-	icr_ick: icr_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <6>;
-		reg = <0x0410>;
-	};
-
-	i2chs1_fck: i2chs1_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,omap2430-interface-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <19>;
-		reg = <0x0204>;
-	};
-
-	i2chs2_fck: i2chs2_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,omap2430-interface-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <20>;
-		reg = <0x0204>;
-	};
-
-	usbhs_ick: usbhs_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <6>;
-		reg = <0x0214>;
-	};
-
-	mmchs1_ick: mmchs1_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <7>;
-		reg = <0x0214>;
-	};
-
-	mmchs1_fck: mmchs1_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <7>;
-		reg = <0x0204>;
-	};
-
-	mmchs2_ick: mmchs2_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0214>;
-	};
-
-	mmchs2_fck: mmchs2_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0204>;
-	};
-
-	gpio5_ick: gpio5_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <10>;
-		reg = <0x0214>;
-	};
-
-	gpio5_fck: gpio5_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <10>;
-		reg = <0x0204>;
-	};
-
-	mdm_intc_ick: mdm_intc_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <11>;
-		reg = <0x0214>;
-	};
-
-	mmchsdb1_fck: mmchsdb1_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <16>;
-		reg = <0x0204>;
-	};
-
-	mmchsdb2_fck: mmchsdb2_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <17>;
-		reg = <0x0204>;
-	};
-};
-
-&prcm_clockdomains {
-	gfx_clkdm: gfx_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&gfx_ick>;
-	};
-
-	core_l3_clkdm: core_l3_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&cam_fck>, <&usb_fck>, <&usbhs_ick>;
-	};
-
-	wkup_clkdm: wkup_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&dpll_ck>, <&emul_ck>, <&gpt1_ick>, <&gpios_ick>,
-			 <&gpios_fck>, <&mpu_wdt_ick>, <&mpu_wdt_fck>,
-			 <&sync_32k_ick>, <&wdt1_ick>, <&omapctrl_ick>,
-			 <&icr_ick>;
-	};
-
-	dss_clkdm: dss_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&dss_ick>, <&dss_54m_fck>;
-	};
-
-	core_l4_clkdm: core_l4_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&ssi_l4_ick>, <&gpt2_ick>, <&gpt3_ick>, <&gpt4_ick>,
-			 <&gpt5_ick>, <&gpt6_ick>, <&gpt7_ick>, <&gpt8_ick>,
-			 <&gpt9_ick>, <&gpt10_ick>, <&gpt11_ick>, <&gpt12_ick>,
-			 <&mcbsp1_ick>, <&mcbsp2_ick>, <&mcbsp3_ick>,
-			 <&mcbsp4_ick>, <&mcbsp5_ick>, <&mcspi1_ick>,
-			 <&mcspi1_fck>, <&mcspi2_ick>, <&mcspi2_fck>,
-			 <&mcspi3_ick>, <&mcspi3_fck>, <&uart1_ick>,
-			 <&uart1_fck>, <&uart2_ick>, <&uart2_fck>, <&uart3_ick>,
-			 <&uart3_fck>, <&cam_ick>, <&mailboxes_ick>,
-			 <&wdt4_ick>, <&wdt4_fck>, <&mspro_ick>, <&mspro_fck>,
-			 <&fac_ick>, <&fac_fck>, <&hdq_ick>, <&hdq_fck>,
-			 <&i2c1_ick>, <&i2chs1_fck>, <&i2c2_ick>, <&i2chs2_fck>,
-			 <&des_ick>, <&sha_ick>, <&rng_ick>, <&aes_ick>,
-			 <&pka_ick>, <&mmchs1_ick>, <&mmchs1_fck>,
-			 <&mmchs2_ick>, <&mmchs2_fck>, <&gpio5_ick>,
-			 <&gpio5_fck>, <&mdm_intc_ick>, <&mmchsdb1_fck>,
-			 <&mmchsdb2_fck>;
-	};
-
-	mdm_clkdm: mdm_clkdm {
-		compatible = "ti,clockdomain";
-		clocks = <&mdm_osc_ck>;
-	};
-};
-
-&func_96m_ck {
-	compatible = "ti,mux-clock";
-	clocks = <&apll96_ck>, <&alt_ck>;
-	ti,bit-shift = <4>;
-	reg = <0x0540>;
-};
-
-&dsp_div_fck {
-	ti,max-div = <4>;
-	ti,index-starts-at-one;
-};
-
-&ssi_ssr_sst_div_fck {
-	ti,max-div = <5>;
-	ti,index-starts-at-one;
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap2430-sdp.dts b/arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
deleted file mode 100644
index 207070677e3a..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
+++ /dev/null
@@ -1,70 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2013 Texas Instruments Incorporated - https://www.ti.com/
- */
-/dts-v1/;
-
-#include "omap2430.dtsi"
-
-/ {
-	model = "TI OMAP2430 SDP";
-	compatible = "ti,omap2430-sdp", "ti,omap2430", "ti,omap2";
-
-	memory@80000000 {
-		device_type = "memory";
-		reg = <0x80000000 0x8000000>; /* 128 MB */
-	};
-};
-
-&i2c2 {
-	clock-frequency = <100000>;
-
-	twl: twl@48 {
-		reg = <0x48>;
-		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
-	};
-};
-
-#include "twl4030.dtsi"
-
-&mmc1 {
-	vmmc-supply = <&vmmc1>;
-	bus-width = <4>;
-};
-
-&gpmc {
-	ranges = <5 0 0x08000000 0x01000000>;
-	ethernet@gpmc {
-		compatible = "smsc,lan91c94";
-		interrupt-parent = <&gpio5>;
-		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;	/* gpio149 */
-		reg = <5 0x300 0xf>;
-		bank-width = <2>;
-		gpmc,sync-clk-ps = <0>;
-		gpmc,mux-add-data = <2>;
-		gpmc,device-width = <1>;
-		gpmc,cycle2cycle-samecsen;
-		gpmc,cycle2cycle-diffcsen;
-		gpmc,cs-on-ns = <6>;
-		gpmc,cs-rd-off-ns = <187>;
-		gpmc,cs-wr-off-ns = <187>;
-		gpmc,adv-on-ns = <18>;
-		gpmc,adv-rd-off-ns = <48>;
-		gpmc,adv-wr-off-ns = <48>;
-		gpmc,oe-on-ns = <60>;
-		gpmc,oe-off-ns = <169>;
-		gpmc,we-on-ns = <66>;
-		gpmc,we-off-ns = <169>;
-		gpmc,rd-cycle-ns = <187>;
-		gpmc,wr-cycle-ns = <187>;
-		gpmc,access-ns = <187>;
-		gpmc,page-burst-access-ns = <24>;
-		gpmc,bus-turnaround-ns = <24>;
-		gpmc,cycle2cycle-delay-ns = <24>;
-		gpmc,wait-monitoring-ns = <0>;
-		gpmc,clk-activation-ns = <0>;
-		gpmc,wr-data-mux-bus-ns = <0>;
-		gpmc,wr-access-ns = <0>;
-	};
-};
-
diff --git a/arch/arm/boot/dts/ti/omap/omap2430.dtsi b/arch/arm/boot/dts/ti/omap/omap2430.dtsi
deleted file mode 100644
index 01bd471f9223..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap2430.dtsi
+++ /dev/null
@@ -1,366 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree Source for OMAP243x SoC
- *
- * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
- */
-
-#include "omap2.dtsi"
-
-/ {
-	compatible = "ti,omap2430", "ti,omap2";
-
-	ocp {
-		l4_wkup: l4_wkup@49000000 {
-			compatible = "ti,omap2-l4-wkup", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x49000000 0x31000>;
-
-			prcm: prcm@6000 {
-				compatible = "ti,omap2-prcm";
-				reg = <0x6000 0x1000>;
-
-				prcm_clocks: clocks {
-					#address-cells = <1>;
-					#size-cells = <0>;
-				};
-
-				prcm_clockdomains: clockdomains {
-				};
-			};
-
-			scm: scm@2000 {
-				compatible = "ti,omap2-scm", "simple-bus";
-				reg = <0x2000 0x1000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				#pinctrl-cells = <1>;
-				ranges = <0 0x2000 0x1000>;
-
-				omap2430_pmx: pinmux@30 {
-					compatible = "ti,omap2430-padconf",
-						     "pinctrl-single";
-					reg = <0x30 0x0154>;
-					#address-cells = <1>;
-					#size-cells = <0>;
-					#pinctrl-cells = <1>;
-					pinctrl-single,register-width = <8>;
-					pinctrl-single,function-mask = <0x3f>;
-				};
-
-				scm_conf: scm_conf@270 {
-					compatible = "ti,omap2-scm-conf", "syscon",
-						     "simple-bus";
-					reg = <0x270 0x240>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-					ranges = <0 0x270 0x240>;
-
-					scm_clocks: clocks {
-						#address-cells = <1>;
-						#size-cells = <0>;
-					};
-
-					pbias_regulator: pbias_regulator@230 {
-						compatible = "ti,pbias-omap2", "ti,pbias-omap";
-						reg = <0x230 0x4>;
-						syscon = <&scm_conf>;
-						pbias_mmc_reg: pbias_mmc_omap2430 {
-							regulator-name = "pbias_mmc_omap2430";
-							regulator-min-microvolt = <1800000>;
-							regulator-max-microvolt = <3000000>;
-						};
-					};
-				};
-
-				scm_clockdomains: clockdomains {
-				};
-			};
-
-			target-module@20000 {
-				compatible = "ti,sysc-omap2", "ti,sysc";
-				reg = <0x20000 0x4>,
-				      <0x20004 0x4>;
-				reg-names = "rev", "sysc";
-				ti,sysc-sidle = <SYSC_IDLE_FORCE>,
-						<SYSC_IDLE_NO>;
-				clocks = <&func_32k_ck>;
-				clock-names = "fck";
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0x0 0x20000 0x1000>;
-
-				counter32k: counter@0 {
-					compatible = "ti,omap-counter32k";
-					reg = <0 0x20>;
-				};
-			};
-		};
-
-		gpio1: gpio@4900c000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x4900c000 0x200>;
-			interrupts = <29>;
-			ti,hwmods = "gpio1";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio2: gpio@4900e000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x4900e000 0x200>;
-			interrupts = <30>;
-			ti,hwmods = "gpio2";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio3: gpio@49010000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x49010000 0x200>;
-			interrupts = <31>;
-			ti,hwmods = "gpio3";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio4: gpio@49012000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x49012000 0x200>;
-			interrupts = <32>;
-			ti,hwmods = "gpio4";
-			ti,gpio-always-on;
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpio5: gpio@480b6000 {
-			compatible = "ti,omap2-gpio";
-			reg = <0x480b6000 0x200>;
-			interrupts = <33>;
-			ti,hwmods = "gpio5";
-			#gpio-cells = <2>;
-			gpio-controller;
-			#interrupt-cells = <2>;
-			interrupt-controller;
-		};
-
-		gpmc: gpmc@6e000000 {
-			compatible = "ti,omap2430-gpmc";
-			reg = <0x6e000000 0x1000>;
-			#address-cells = <2>;
-			#size-cells = <1>;
-			interrupts = <20>;
-			gpmc,num-cs = <8>;
-			gpmc,num-waitpins = <4>;
-			ti,hwmods = "gpmc";
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			gpio-controller;
-			#gpio-cells = <2>;
-		};
-
-		mcbsp1: mcbsp@48074000 {
-			compatible = "ti,omap2430-mcbsp";
-			reg = <0x48074000 0xff>;
-			reg-names = "mpu";
-			interrupts = <64>, /* OCP compliant interrupt */
-				     <59>, /* TX interrupt */
-				     <60>, /* RX interrupt */
-				     <61>; /* RX overflow interrupt */
-			interrupt-names = "common", "tx", "rx", "rx_overflow";
-			ti,buffer-size = <128>;
-			ti,hwmods = "mcbsp1";
-			dmas = <&sdma 31>,
-			       <&sdma 32>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		mcbsp2: mcbsp@48076000 {
-			compatible = "ti,omap2430-mcbsp";
-			reg = <0x48076000 0xff>;
-			reg-names = "mpu";
-			interrupts = <16>, /* OCP compliant interrupt */
-				     <62>, /* TX interrupt */
-				     <63>; /* RX interrupt */
-			interrupt-names = "common", "tx", "rx";
-			ti,buffer-size = <128>;
-			ti,hwmods = "mcbsp2";
-			dmas = <&sdma 33>,
-			       <&sdma 34>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		mcbsp3: mcbsp@4808c000 {
-			compatible = "ti,omap2430-mcbsp";
-			reg = <0x4808c000 0xff>;
-			reg-names = "mpu";
-			interrupts = <17>, /* OCP compliant interrupt */
-				     <89>, /* TX interrupt */
-				     <90>; /* RX interrupt */
-			interrupt-names = "common", "tx", "rx";
-			ti,buffer-size = <128>;
-			ti,hwmods = "mcbsp3";
-			dmas = <&sdma 17>,
-			       <&sdma 18>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		mcbsp4: mcbsp@4808e000 {
-			compatible = "ti,omap2430-mcbsp";
-			reg = <0x4808e000 0xff>;
-			reg-names = "mpu";
-			interrupts = <18>, /* OCP compliant interrupt */
-				     <54>, /* TX interrupt */
-				     <55>; /* RX interrupt */
-			interrupt-names = "common", "tx", "rx";
-			ti,buffer-size = <128>;
-			ti,hwmods = "mcbsp4";
-			dmas = <&sdma 19>,
-			       <&sdma 20>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		mcbsp5: mcbsp@48096000 {
-			compatible = "ti,omap2430-mcbsp";
-			reg = <0x48096000 0xff>;
-			reg-names = "mpu";
-			interrupts = <19>, /* OCP compliant interrupt */
-				     <81>, /* TX interrupt */
-				     <82>; /* RX interrupt */
-			interrupt-names = "common", "tx", "rx";
-			ti,buffer-size = <128>;
-			ti,hwmods = "mcbsp5";
-			dmas = <&sdma 21>,
-			       <&sdma 22>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		mmc1: mmc@4809c000 {
-			compatible = "ti,omap2-hsmmc";
-			reg = <0x4809c000 0x200>;
-			interrupts = <83>;
-			ti,hwmods = "mmc1";
-			ti,dual-volt;
-			dmas = <&sdma 61>, <&sdma 62>;
-			dma-names = "tx", "rx";
-			pbias-supply = <&pbias_mmc_reg>;
-		};
-
-		mmc2: mmc@480b4000 {
-			compatible = "ti,omap2-hsmmc";
-			reg = <0x480b4000 0x200>;
-			interrupts = <86>;
-			ti,hwmods = "mmc2";
-			dmas = <&sdma 47>, <&sdma 48>;
-			dma-names = "tx", "rx";
-		};
-
-		mailbox: mailbox@48094000 {
-			compatible = "ti,omap2-mailbox";
-			reg = <0x48094000 0x200>;
-			interrupts = <26>;
-			ti,hwmods = "mailbox";
-			#mbox-cells = <1>;
-			ti,mbox-num-users = <4>;
-			ti,mbox-num-fifos = <6>;
-			mbox_dsp: mbox-dsp {
-				ti,mbox-tx = <0 0 0>;
-				ti,mbox-rx = <1 0 0>;
-			};
-		};
-
-		timer1_target: target-module@49018000 {
-			compatible = "ti,sysc-omap2-timer", "ti,sysc";
-			reg = <0x49018000 0x4>,
-			      <0x49018010 0x4>,
-			      <0x49018014 0x4>;
-			reg-names = "rev", "sysc", "syss";
-			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
-					 SYSC_OMAP2_EMUFREE |
-					 SYSC_OMAP2_ENAWAKEUP |
-					 SYSC_OMAP2_SOFTRESET |
-					 SYSC_OMAP2_AUTOIDLE)>;
-			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
-					<SYSC_IDLE_NO>,
-					<SYSC_IDLE_SMART>;
-			ti,syss-mask = <1>;
-			clocks = <&gpt1_fck>, <&gpt1_ick>;
-			clock-names = "fck", "ick";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0x0 0x49018000 0x1000>;
-
-			timer1: timer@0 {
-				compatible = "ti,omap2420-timer";
-				reg = <0 0x400>;
-				interrupts = <37>;
-				ti,timer-alwon;
-			};
-		};
-
-		mcspi3: spi@480b8000 {
-			compatible = "ti,omap2-mcspi";
-			ti,hwmods = "mcspi3";
-			reg = <0x480b8000 0x100>;
-			interrupts = <91>;
-			dmas = <&sdma 15 &sdma 16 &sdma 23 &sdma 24>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
-		};
-
-		usb_otg_hs: usb_otg_hs@480ac000 {
-			compatible = "ti,omap2-musb";
-			ti,hwmods = "usb_otg_hs";
-			reg = <0x480ac000 0x1000>;
-			interrupts = <93>;
-		};
-
-		wd_timer2: watchdog@49016000 {
-			compatible = "ti,omap2-wdt";
-			ti,hwmods = "wd_timer2";
-			reg = <0x49016000 0x80>;
-		};
-	};
-};
-
-&sdma {
-	compatible = "ti,omap2430-sdma", "ti,omap-sdma";
-};
-
-&i2c1 {
-	compatible = "ti,omap2430-i2c";
-};
-
-&i2c2 {
-	compatible = "ti,omap2430-i2c";
-};
-
-#include "omap24xx-clocks.dtsi"
-#include "omap2430-clocks.dtsi"
-
-/* Preferred always-on timer for clockevent */
-&timer1_target {
-	ti,no-reset-on-init;
-	ti,no-idle;
-	timer@0 {
-		assigned-clocks = <&gpt1_fck>;
-		assigned-clock-parents = <&func_32k_ck>;
-	};
-};
diff --git a/arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi b/arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
deleted file mode 100644
index 07af87edf0e2..000000000000
--- a/arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
+++ /dev/null
@@ -1,1241 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree Source for OMAP24xx clock data
- *
- * Copyright (C) 2014 Texas Instruments, Inc.
- */
-&scm_clocks {
-	mcbsp1_mux_fck: mcbsp1_mux_fck@4 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_96m_ck>, <&mcbsp_clks>;
-		ti,bit-shift = <2>;
-		reg = <0x4>;
-	};
-
-	mcbsp1_fck: mcbsp1_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&mcbsp1_gate_fck>, <&mcbsp1_mux_fck>;
-	};
-
-	mcbsp2_mux_fck: mcbsp2_mux_fck@4 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_96m_ck>, <&mcbsp_clks>;
-		ti,bit-shift = <6>;
-		reg = <0x4>;
-	};
-
-	mcbsp2_fck: mcbsp2_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&mcbsp2_gate_fck>, <&mcbsp2_mux_fck>;
-	};
-};
-
-&prcm_clocks {
-	func_32k_ck: func_32k_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <32768>;
-	};
-
-	secure_32k_ck: secure_32k_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <32768>;
-	};
-
-	virt_12m_ck: virt_12m_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <12000000>;
-	};
-
-	virt_13m_ck: virt_13m_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <13000000>;
-	};
-
-	virt_19200000_ck: virt_19200000_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <19200000>;
-	};
-
-	virt_26m_ck: virt_26m_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <26000000>;
-	};
-
-	aplls_clkin_ck: aplls_clkin_ck@540 {
-		#clock-cells = <0>;
-		compatible = "ti,mux-clock";
-		clocks = <&virt_19200000_ck>, <&virt_26m_ck>, <&virt_13m_ck>, <&virt_12m_ck>;
-		ti,bit-shift = <23>;
-		reg = <0x0540>;
-	};
-
-	aplls_clkin_x2_ck: aplls_clkin_x2_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&aplls_clkin_ck>;
-		clock-mult = <2>;
-		clock-div = <1>;
-	};
-
-	osc_ck: osc_ck@60 {
-		#clock-cells = <0>;
-		compatible = "ti,mux-clock";
-		clocks = <&aplls_clkin_ck>, <&aplls_clkin_x2_ck>;
-		ti,bit-shift = <6>;
-		reg = <0x0060>;
-		ti,index-starts-at-one;
-	};
-
-	sys_ck: sys_ck@60 {
-		#clock-cells = <0>;
-		compatible = "ti,divider-clock";
-		clocks = <&osc_ck>;
-		ti,bit-shift = <6>;
-		ti,max-div = <3>;
-		reg = <0x0060>;
-		ti,index-starts-at-one;
-	};
-
-	alt_ck: alt_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <54000000>;
-	};
-
-	mcbsp_clks: mcbsp_clks {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <0x0>;
-	};
-
-	dpll_ck: dpll_ck@500 {
-		#clock-cells = <0>;
-		compatible = "ti,omap2-dpll-core-clock";
-		clocks = <&sys_ck>, <&sys_ck>;
-		reg = <0x0500>, <0x0540>;
-	};
-
-	apll96_ck: apll96_ck@500 {
-		#clock-cells = <0>;
-		compatible = "ti,omap2-apll-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <2>;
-		ti,idlest-shift = <8>;
-		ti,clock-frequency = <96000000>;
-		reg = <0x0500>, <0x0530>, <0x0520>;
-	};
-
-	apll54_ck: apll54_ck@500 {
-		#clock-cells = <0>;
-		compatible = "ti,omap2-apll-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <6>;
-		ti,idlest-shift = <9>;
-		ti,clock-frequency = <54000000>;
-		reg = <0x0500>, <0x0530>, <0x0520>;
-	};
-
-	func_54m_ck: func_54m_ck@540 {
-		#clock-cells = <0>;
-		compatible = "ti,mux-clock";
-		clocks = <&apll54_ck>, <&alt_ck>;
-		ti,bit-shift = <5>;
-		reg = <0x0540>;
-	};
-
-	core_ck: core_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&dpll_ck>;
-		clock-mult = <1>;
-		clock-div = <1>;
-	};
-
-	func_96m_ck: func_96m_ck@540 {
-		#clock-cells = <0>;
-	};
-
-	apll96_d2_ck: apll96_d2_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&apll96_ck>;
-		clock-mult = <1>;
-		clock-div = <2>;
-	};
-
-	func_48m_ck: func_48m_ck@540 {
-		#clock-cells = <0>;
-		compatible = "ti,mux-clock";
-		clocks = <&apll96_d2_ck>, <&alt_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x0540>;
-	};
-
-	func_12m_ck: func_12m_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&func_48m_ck>;
-		clock-mult = <1>;
-		clock-div = <4>;
-	};
-
-	sys_clkout_src_gate: sys_clkout_src_gate@70 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-no-wait-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <7>;
-		reg = <0x0070>;
-	};
-
-	sys_clkout_src_mux: sys_clkout_src_mux@70 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&core_ck>, <&sys_ck>, <&func_96m_ck>, <&func_54m_ck>;
-		reg = <0x0070>;
-	};
-
-	sys_clkout_src: sys_clkout_src {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&sys_clkout_src_gate>, <&sys_clkout_src_mux>;
-	};
-
-	sys_clkout: sys_clkout@70 {
-		#clock-cells = <0>;
-		compatible = "ti,divider-clock";
-		clocks = <&sys_clkout_src>;
-		ti,bit-shift = <3>;
-		ti,max-div = <64>;
-		reg = <0x0070>;
-		ti,index-power-of-two;
-	};
-
-	emul_ck: emul_ck@78 {
-		#clock-cells = <0>;
-		compatible = "ti,gate-clock";
-		clocks = <&func_54m_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0078>;
-	};
-
-	mpu_ck: mpu_ck@140 {
-		#clock-cells = <0>;
-		compatible = "ti,divider-clock";
-		clocks = <&core_ck>;
-		ti,max-div = <31>;
-		reg = <0x0140>;
-		ti,index-starts-at-one;
-	};
-
-	dsp_gate_fck: dsp_gate_fck@800 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0800>;
-	};
-
-	dsp_div_fck: dsp_div_fck@840 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_ck>;
-		reg = <0x0840>;
-	};
-
-	dsp_fck: dsp_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&dsp_gate_fck>, <&dsp_div_fck>;
-	};
-
-	core_l3_ck: core_l3_ck@240 {
-		#clock-cells = <0>;
-		compatible = "ti,divider-clock";
-		clocks = <&core_ck>;
-		ti,max-div = <31>;
-		reg = <0x0240>;
-		ti,index-starts-at-one;
-	};
-
-	gfx_3d_gate_fck: gfx_3d_gate_fck@300 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0300>;
-	};
-
-	gfx_3d_div_fck: gfx_3d_div_fck@340 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_l3_ck>;
-		ti,max-div = <4>;
-		reg = <0x0340>;
-		ti,index-starts-at-one;
-	};
-
-	gfx_3d_fck: gfx_3d_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gfx_3d_gate_fck>, <&gfx_3d_div_fck>;
-	};
-
-	gfx_2d_gate_fck: gfx_2d_gate_fck@300 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x0300>;
-	};
-
-	gfx_2d_div_fck: gfx_2d_div_fck@340 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_l3_ck>;
-		ti,max-div = <4>;
-		reg = <0x0340>;
-		ti,index-starts-at-one;
-	};
-
-	gfx_2d_fck: gfx_2d_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gfx_2d_gate_fck>, <&gfx_2d_div_fck>;
-	};
-
-	gfx_ick: gfx_ick@310 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0310>;
-	};
-
-	l4_ck: l4_ck@240 {
-		#clock-cells = <0>;
-		compatible = "ti,divider-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <5>;
-		ti,max-div = <3>;
-		reg = <0x0240>;
-		ti,index-starts-at-one;
-	};
-
-	dss_ick: dss_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-no-wait-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0210>;
-	};
-
-	dss1_gate_fck: dss1_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-no-wait-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0200>;
-	};
-
-	core_d2_ck: core_d2_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <2>;
-	};
-
-	core_d3_ck: core_d3_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <3>;
-	};
-
-	core_d4_ck: core_d4_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <4>;
-	};
-
-	core_d5_ck: core_d5_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <5>;
-	};
-
-	core_d6_ck: core_d6_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <6>;
-	};
-
-	dummy_ck: dummy_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-clock";
-		clock-frequency = <0>;
-	};
-
-	core_d8_ck: core_d8_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <8>;
-	};
-
-	core_d9_ck: core_d9_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <9>;
-	};
-
-	core_d12_ck: core_d12_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <12>;
-	};
-
-	core_d16_ck: core_d16_ck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_ck>;
-		clock-mult = <1>;
-		clock-div = <16>;
-	};
-
-	dss1_mux_fck: dss1_mux_fck@240 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&sys_ck>, <&core_ck>, <&core_d2_ck>, <&core_d3_ck>, <&core_d4_ck>, <&core_d5_ck>, <&core_d6_ck>, <&core_d8_ck>, <&core_d9_ck>, <&core_d12_ck>, <&core_d16_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0240>;
-	};
-
-	dss1_fck: dss1_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&dss1_gate_fck>, <&dss1_mux_fck>;
-	};
-
-	dss2_gate_fck: dss2_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-no-wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x0200>;
-	};
-
-	dss2_mux_fck: dss2_mux_fck@240 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&sys_ck>, <&func_48m_ck>;
-		ti,bit-shift = <13>;
-		reg = <0x0240>;
-	};
-
-	dss2_fck: dss2_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&dss2_gate_fck>, <&dss2_mux_fck>;
-	};
-
-	dss_54m_fck: dss_54m_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_54m_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0200>;
-	};
-
-	ssi_ssr_sst_gate_fck: ssi_ssr_sst_gate_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x0204>;
-	};
-
-	ssi_ssr_sst_div_fck: ssi_ssr_sst_div_fck@240 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_ck>;
-		ti,bit-shift = <20>;
-		reg = <0x0240>;
-	};
-
-	ssi_ssr_sst_fck: ssi_ssr_sst_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&ssi_ssr_sst_gate_fck>, <&ssi_ssr_sst_div_fck>;
-	};
-
-	usb_l4_gate_ick: usb_l4_gate_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-interface-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0214>;
-	};
-
-	usb_l4_div_ick: usb_l4_div_ick@240 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-divider-clock";
-		clocks = <&core_l3_ck>;
-		ti,bit-shift = <25>;
-		reg = <0x0240>;
-		ti,dividers = <0>, <1>, <2>, <0>, <4>;
-	};
-
-	usb_l4_ick: usb_l4_ick {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>;
-	};
-
-	ssi_l4_ick: ssi_l4_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x0214>;
-	};
-
-	gpt1_ick: gpt1_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0410>;
-	};
-
-	gpt1_gate_fck: gpt1_gate_fck@400 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0400>;
-	};
-
-	gpt1_mux_fck: gpt1_mux_fck@440 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		reg = <0x0440>;
-	};
-
-	gpt1_fck: gpt1_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt1_gate_fck>, <&gpt1_mux_fck>;
-	};
-
-	gpt2_ick: gpt2_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <4>;
-		reg = <0x0210>;
-	};
-
-	gpt2_gate_fck: gpt2_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <4>;
-		reg = <0x0200>;
-	};
-
-	gpt2_mux_fck: gpt2_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0244>;
-	};
-
-	gpt2_fck: gpt2_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt2_gate_fck>, <&gpt2_mux_fck>;
-	};
-
-	gpt3_ick: gpt3_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <5>;
-		reg = <0x0210>;
-	};
-
-	gpt3_gate_fck: gpt3_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <5>;
-		reg = <0x0200>;
-	};
-
-	gpt3_mux_fck: gpt3_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <4>;
-		reg = <0x0244>;
-	};
-
-	gpt3_fck: gpt3_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt3_gate_fck>, <&gpt3_mux_fck>;
-	};
-
-	gpt4_ick: gpt4_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <6>;
-		reg = <0x0210>;
-	};
-
-	gpt4_gate_fck: gpt4_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <6>;
-		reg = <0x0200>;
-	};
-
-	gpt4_mux_fck: gpt4_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <6>;
-		reg = <0x0244>;
-	};
-
-	gpt4_fck: gpt4_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt4_gate_fck>, <&gpt4_mux_fck>;
-	};
-
-	gpt5_ick: gpt5_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <7>;
-		reg = <0x0210>;
-	};
-
-	gpt5_gate_fck: gpt5_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <7>;
-		reg = <0x0200>;
-	};
-
-	gpt5_mux_fck: gpt5_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0244>;
-	};
-
-	gpt5_fck: gpt5_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt5_gate_fck>, <&gpt5_mux_fck>;
-	};
-
-	gpt6_ick: gpt6_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0210>;
-	};
-
-	gpt6_gate_fck: gpt6_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <8>;
-		reg = <0x0200>;
-	};
-
-	gpt6_mux_fck: gpt6_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <10>;
-		reg = <0x0244>;
-	};
-
-	gpt6_fck: gpt6_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt6_gate_fck>, <&gpt6_mux_fck>;
-	};
-
-	gpt7_ick: gpt7_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <9>;
-		reg = <0x0210>;
-	};
-
-	gpt7_gate_fck: gpt7_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <9>;
-		reg = <0x0200>;
-	};
-
-	gpt7_mux_fck: gpt7_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <12>;
-		reg = <0x0244>;
-	};
-
-	gpt7_fck: gpt7_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt7_gate_fck>, <&gpt7_mux_fck>;
-	};
-
-	gpt8_ick: gpt8_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <10>;
-		reg = <0x0210>;
-	};
-
-	gpt8_gate_fck: gpt8_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <10>;
-		reg = <0x0200>;
-	};
-
-	gpt8_mux_fck: gpt8_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <14>;
-		reg = <0x0244>;
-	};
-
-	gpt8_fck: gpt8_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt8_gate_fck>, <&gpt8_mux_fck>;
-	};
-
-	gpt9_ick: gpt9_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <11>;
-		reg = <0x0210>;
-	};
-
-	gpt9_gate_fck: gpt9_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <11>;
-		reg = <0x0200>;
-	};
-
-	gpt9_mux_fck: gpt9_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <16>;
-		reg = <0x0244>;
-	};
-
-	gpt9_fck: gpt9_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt9_gate_fck>, <&gpt9_mux_fck>;
-	};
-
-	gpt10_ick: gpt10_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <12>;
-		reg = <0x0210>;
-	};
-
-	gpt10_gate_fck: gpt10_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <12>;
-		reg = <0x0200>;
-	};
-
-	gpt10_mux_fck: gpt10_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <18>;
-		reg = <0x0244>;
-	};
-
-	gpt10_fck: gpt10_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt10_gate_fck>, <&gpt10_mux_fck>;
-	};
-
-	gpt11_ick: gpt11_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <13>;
-		reg = <0x0210>;
-	};
-
-	gpt11_gate_fck: gpt11_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <13>;
-		reg = <0x0200>;
-	};
-
-	gpt11_mux_fck: gpt11_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <20>;
-		reg = <0x0244>;
-	};
-
-	gpt11_fck: gpt11_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt11_gate_fck>, <&gpt11_mux_fck>;
-	};
-
-	gpt12_ick: gpt12_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <14>;
-		reg = <0x0210>;
-	};
-
-	gpt12_gate_fck: gpt12_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <14>;
-		reg = <0x0200>;
-	};
-
-	gpt12_mux_fck: gpt12_mux_fck@244 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-mux-clock";
-		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
-		ti,bit-shift = <22>;
-		reg = <0x0244>;
-	};
-
-	gpt12_fck: gpt12_fck {
-		#clock-cells = <0>;
-		compatible = "ti,composite-clock";
-		clocks = <&gpt12_gate_fck>, <&gpt12_mux_fck>;
-	};
-
-	mcbsp1_ick: mcbsp1_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <15>;
-		reg = <0x0210>;
-	};
-
-	mcbsp1_gate_fck: mcbsp1_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&mcbsp_clks>;
-		ti,bit-shift = <15>;
-		reg = <0x0200>;
-	};
-
-	mcbsp2_ick: mcbsp2_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <16>;
-		reg = <0x0210>;
-	};
-
-	mcbsp2_gate_fck: mcbsp2_gate_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,composite-gate-clock";
-		clocks = <&mcbsp_clks>;
-		ti,bit-shift = <16>;
-		reg = <0x0200>;
-	};
-
-	mcspi1_ick: mcspi1_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <17>;
-		reg = <0x0210>;
-	};
-
-	mcspi1_fck: mcspi1_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <17>;
-		reg = <0x0200>;
-	};
-
-	mcspi2_ick: mcspi2_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <18>;
-		reg = <0x0210>;
-	};
-
-	mcspi2_fck: mcspi2_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <18>;
-		reg = <0x0200>;
-	};
-
-	uart1_ick: uart1_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <21>;
-		reg = <0x0210>;
-	};
-
-	uart1_fck: uart1_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <21>;
-		reg = <0x0200>;
-	};
-
-	uart2_ick: uart2_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <22>;
-		reg = <0x0210>;
-	};
-
-	uart2_fck: uart2_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <22>;
-		reg = <0x0200>;
-	};
-
-	uart3_ick: uart3_ick@214 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0214>;
-	};
-
-	uart3_fck: uart3_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0204>;
-	};
-
-	gpios_ick: gpios_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0410>;
-	};
-
-	gpios_fck: gpios_fck@400 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x0400>;
-	};
-
-	mpu_wdt_ick: mpu_wdt_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x0410>;
-	};
-
-	mpu_wdt_fck: mpu_wdt_fck@400 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x0400>;
-	};
-
-	sync_32k_ick: sync_32k_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x0410>;
-	};
-
-	wdt1_ick: wdt1_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <4>;
-		reg = <0x0410>;
-	};
-
-	omapctrl_ick: omapctrl_ick@410 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&sys_ck>;
-		ti,bit-shift = <5>;
-		reg = <0x0410>;
-	};
-
-	cam_fck: cam_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,gate-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <31>;
-		reg = <0x0200>;
-	};
-
-	cam_ick: cam_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-no-wait-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <31>;
-		reg = <0x0210>;
-	};
-
-	mailboxes_ick: mailboxes_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <30>;
-		reg = <0x0210>;
-	};
-
-	wdt4_ick: wdt4_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <29>;
-		reg = <0x0210>;
-	};
-
-	wdt4_fck: wdt4_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_32k_ck>;
-		ti,bit-shift = <29>;
-		reg = <0x0200>;
-	};
-
-	mspro_ick: mspro_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <27>;
-		reg = <0x0210>;
-	};
-
-	mspro_fck: mspro_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_96m_ck>;
-		ti,bit-shift = <27>;
-		reg = <0x0200>;
-	};
-
-	fac_ick: fac_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <25>;
-		reg = <0x0210>;
-	};
-
-	fac_fck: fac_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_12m_ck>;
-		ti,bit-shift = <25>;
-		reg = <0x0200>;
-	};
-
-	hdq_ick: hdq_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <23>;
-		reg = <0x0210>;
-	};
-
-	hdq_fck: hdq_fck@200 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_12m_ck>;
-		ti,bit-shift = <23>;
-		reg = <0x0200>;
-	};
-
-	i2c1_ick: i2c1_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <19>;
-		reg = <0x0210>;
-	};
-
-	i2c2_ick: i2c2_ick@210 {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <20>;
-		reg = <0x0210>;
-	};
-
-	gpmc_fck: gpmc_fck@238 {
-		#clock-cells = <0>;
-		compatible = "ti,fixed-factor-clock";
-		clocks = <&core_l3_ck>;
-		ti,clock-div = <1>;
-		ti,autoidle-shift = <1>;
-		reg = <0x0238>;
-		ti,clock-mult = <1>;
-	};
-
-	sdma_fck: sdma_fck {
-		#clock-cells = <0>;
-		compatible = "fixed-factor-clock";
-		clocks = <&core_l3_ck>;
-		clock-mult = <1>;
-		clock-div = <1>;
-	};
-
-	sdma_ick: sdma_ick@238 {
-		#clock-cells = <0>;
-		compatible = "ti,fixed-factor-clock";
-		clocks = <&core_l3_ck>;
-		ti,clock-div = <1>;
-		ti,autoidle-shift = <0>;
-		reg = <0x0238>;
-		ti,clock-mult = <1>;
-	};
-
-	sdrc_ick: sdrc_ick@238 {
-		#clock-cells = <0>;
-		compatible = "ti,fixed-factor-clock";
-		clocks = <&core_l3_ck>;
-		ti,clock-div = <1>;
-		ti,autoidle-shift = <2>;
-		reg = <0x0238>;
-		ti,clock-mult = <1>;
-	};
-
-	des_ick: des_ick@21c {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x021c>;
-	};
-
-	sha_ick: sha_ick@21c {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <1>;
-		reg = <0x021c>;
-	};
-
-	rng_ick: rng_ick@21c {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <2>;
-		reg = <0x021c>;
-	};
-
-	aes_ick: aes_ick@21c {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <3>;
-		reg = <0x021c>;
-	};
-
-	pka_ick: pka_ick@21c {
-		#clock-cells = <0>;
-		compatible = "ti,omap3-interface-clock";
-		clocks = <&l4_ck>;
-		ti,bit-shift = <4>;
-		reg = <0x021c>;
-	};
-
-	usb_fck: usb_fck@204 {
-		#clock-cells = <0>;
-		compatible = "ti,wait-gate-clock";
-		clocks = <&func_48m_ck>;
-		ti,bit-shift = <0>;
-		reg = <0x0204>;
-	};
-};
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
index f827f89567fd..2e9597f50c58 100644
--- a/arch/arm/configs/omap2plus_defconfig
+++ b/arch/arm/configs/omap2plus_defconfig
@@ -22,9 +22,7 @@ CONFIG_NAMESPACES=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_EXPERT=y
 CONFIG_PROFILING=y
-CONFIG_ARCH_MULTI_V6=y
 CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_ARCH_OMAP2=y
 CONFIG_ARCH_OMAP3=y
 CONFIG_ARCH_OMAP4=y
 CONFIG_SOC_OMAP5=y
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 79f8afe3a6bf..37ecbfc0a19f 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -5,15 +5,6 @@ menu "TI OMAP/AM/DM/DRA Family"
 config OMAP_HWMOD
 	bool
 
-config ARCH_OMAP2
-	bool "TI OMAP2"
-	depends on ARCH_MULTI_V6
-	depends on !SMP
-	select ARCH_OMAP2PLUS
-	select CPU_ARM1136R0
-	select OMAP_HWMOD
-	select SOC_HAS_OMAP2_SDRC
-
 config ARCH_OMAP3
 	bool "TI OMAP3"
 	depends on ARCH_MULTI_V7
@@ -118,7 +109,7 @@ config ARCH_OMAP2PLUS
 	select OMAP_IRQCHIP
 	select CLKSRC_TI_32K
 	help
-	  Systems based on OMAP2, OMAP3, OMAP4 or OMAP5
+	  Systems based on OMAP3, OMAP4 or OMAP5
 
 config OMAP_INTERCONNECT_BARRIER
 	bool
@@ -129,7 +120,7 @@ config ARCH_OMAP
 
 if ARCH_OMAP2PLUS
 
-menu "TI OMAP2/3/4 Specific Features"
+menu "TI OMAP3/4 Specific Features"
 
 config ARCH_OMAP2PLUS_TYPICAL
 	bool "Typical OMAP configuration"
@@ -138,8 +129,7 @@ config ARCH_OMAP2PLUS_TYPICAL
 	select HIGHMEM
 	select I2C
 	select I2C_OMAP
-	select MENELAUS if ARCH_OMAP2
-	select NEON if CPU_V7
+	select NEON
 	select REGULATOR
 	select REGULATOR_FIXED_VOLTAGE
 	select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
@@ -204,27 +194,7 @@ config OMAP3_L2_AUX_SECURE_SERVICE_SET_ID
 	  PPA routine service ID for setting L2 auxiliary control register.
 
 comment "OMAP Core Type"
-	depends on ARCH_OMAP2
-
-config SOC_OMAP2420
-	bool "OMAP2420 support (DEPRECATED)"
-	depends on ARCH_OMAP2
-	default y
-	select OMAP_DM_SYSTIMER
-	select OMAP_DM_TIMER
-	select SOC_HAS_OMAP2_SDRC
-	help
-	  This SoC is scheduled for removal in early 2027,
-	  since it uses the ARM1136r0 CPU revision.
-
-config SOC_OMAP2430
-	bool "OMAP2430 support (DEPRECATED)"
-	depends on ARCH_OMAP2
-	default y
-	select SOC_HAS_OMAP2_SDRC
-	help
-	  This SoC is scheduled for removal in early 2027,
-	  since it uses the ARM1136r0 CPU revision.
+	depends on ARCH_OMAP3
 
 config SOC_OMAP3430
 	bool "OMAP3430 support"
@@ -237,33 +207,9 @@ config SOC_TI81XX
 	depends on ARCH_OMAP3
 	default y
 
-comment "OMAP Legacy Platform Data Board Type"
-	depends on ARCH_OMAP2PLUS
-
 config MACH_OMAP_GENERIC
 	bool
 
-config MACH_OMAP2_TUSB6010
-	bool
-	depends on ARCH_OMAP2 && SOC_OMAP2420
-	default y if MACH_NOKIA_N8X0
-
-config MACH_NOKIA_N810
-	bool
-
-config MACH_NOKIA_N810_WIMAX
-	bool
-
-config MACH_NOKIA_N8X0
-	bool "Nokia N800/N810 (DEPRECATED)"
-	depends on SOC_OMAP2420
-	default y
-	select MACH_NOKIA_N810
-	select MACH_NOKIA_N810_WIMAX
-	help
-	  This machine is scheduled for removal in early 2027,
-	  since it uses the ARM1136r0 CPU revision.
-
 endmenu
 
 endif
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index daf21127c82f..6c741442dc0d 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -5,23 +5,17 @@
 
 # Common support
 obj-y := id.o io.o control.o devices.o fb.o pm.o \
-	 common.o dma.o omap-headsmp.o sram.o
+	 common.o dma.o omap-headsmp.o
 
-hwmod-common				= omap_hwmod.o \
+# OMAP3 hwmod specific
+obj-$(CONFIG_ARCH_OMAP3)		+= sram.o omap_hwmod.o \
 					  omap_hwmod_common_data.o \
 					  omap_hwmod_common_ipblock_data.o \
 					  omap_device.o display.o hdq1w.o \
 					  i2c.o wd_timer.o
-clock-common				= clock.o
-secure-common				= omap-smc.o omap-secure.o
 
-obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common)
-obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
-obj-$(CONFIG_ARCH_OMAP4) += $(secure-common)
-obj-$(CONFIG_SOC_AM33XX) += $(secure-common)
-obj-$(CONFIG_SOC_OMAP5)  += $(secure-common)
-obj-$(CONFIG_SOC_AM43XX) += $(secure-common)
-obj-$(CONFIG_SOC_DRA7XX) += $(secure-common)
+# secure world
+obj-y					+= omap-smc.o omap-secure.o
 
 ifneq ($(CONFIG_SND_SOC_OMAP_MCBSP),)
 obj-$(CONFIG_OMAP_HWMOD) += mcbsp.o
@@ -49,13 +43,7 @@ omap5-dra7-common-$(CONFIG_SOC_HAS_REALTIME_COUNTER) =  timer.o
 obj-$(CONFIG_SOC_OMAP5)			+= $(omap5-dra7-common-y)
 obj-$(CONFIG_SOC_DRA7XX)		+= $(omap5-dra7-common-y)
 
-# Functions loaded to SRAM
-obj-$(CONFIG_SOC_OMAP2420)		+= sram242x.o
-obj-$(CONFIG_SOC_OMAP2430)		+= sram243x.o
-
 # Restart code (OMAP4/5 currently in omap4-common.c)
-obj-$(CONFIG_SOC_OMAP2420)		+= omap2-restart.o
-obj-$(CONFIG_SOC_OMAP2430)		+= omap2-restart.o
 obj-$(CONFIG_SOC_TI81XX)		+= ti81xx-restart.o
 obj-$(CONFIG_SOC_AM33XX)		+= am33xx-restart.o
 obj-$(CONFIG_SOC_AM43XX)		+= omap4-restart.o
@@ -65,7 +53,6 @@ obj-$(CONFIG_SOC_OMAP5)			+= omap4-restart.o
 obj-$(CONFIG_SOC_DRA7XX)		+= omap4-restart.o
 
 # SMS/SDRC
-obj-$(CONFIG_ARCH_OMAP2)		+= sdrc2xxx.o
 # obj-$(CONFIG_ARCH_OMAP3)		+= sdrc3xxx.o
 
 # OPP table initialization
@@ -80,7 +67,6 @@ obj-$(CONFIG_ARCH_OMAP4)		+= $(omap-4-5-pm-common)
 obj-$(CONFIG_SOC_OMAP5)			+= $(omap-4-5-pm-common)
 
 ifeq ($(CONFIG_PM),y)
-obj-$(CONFIG_ARCH_OMAP2)		+= sleep24xx.o
 obj-$(CONFIG_ARCH_OMAP3)		+= pm34xx.o sleep34xx.o
 omap-4-5-pm-common			+= pm44xx.o
 obj-$(CONFIG_ARCH_OMAP4)		+= $(omap-4-5-pm-common)
@@ -105,7 +91,6 @@ endif
 
 # PRCM
 obj-y					+= prm_common.o cm_common.o
-obj-$(CONFIG_ARCH_OMAP2)		+= prm2xxx_3xxx.o prm2xxx.o cm2xxx.o
 obj-$(CONFIG_ARCH_OMAP3)		+= prm2xxx_3xxx.o prm3xxx.o cm3xxx.o
 obj-$(CONFIG_ARCH_OMAP3)		+= vc3xxx_data.o vp3xxx_data.o
 omap-prcm-4-5-common			=  cminst44xx.o prm44xx.o \
@@ -122,8 +107,6 @@ obj-$(CONFIG_SOC_AM43XX)		+= $(omap-prcm-4-5-common) \
 
 # OMAP voltage domains
 voltagedomain-common			:= voltage.o vc.o vp.o
-obj-$(CONFIG_ARCH_OMAP2)		+= $(voltagedomain-common)
-obj-$(CONFIG_ARCH_OMAP2)		+= voltagedomains2xxx_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= $(voltagedomain-common)
 obj-$(CONFIG_ARCH_OMAP3)		+= voltagedomains3xxx_data.o
 obj-$(CONFIG_ARCH_OMAP4)		+= $(voltagedomain-common)
@@ -136,9 +119,6 @@ obj-$(CONFIG_SOC_DRA7XX)		+= $(voltagedomain-common)
 
 # OMAP powerdomain framework
 powerdomain-common			+= powerdomain.o powerdomain-common.o
-obj-$(CONFIG_ARCH_OMAP2)		+= $(powerdomain-common)
-obj-$(CONFIG_ARCH_OMAP2)		+= powerdomains2xxx_data.o
-obj-$(CONFIG_ARCH_OMAP2)		+= powerdomains2xxx_3xxx_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= $(powerdomain-common)
 obj-$(CONFIG_ARCH_OMAP3)		+= powerdomains3xxx_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= powerdomains2xxx_3xxx_data.o
@@ -155,10 +135,6 @@ obj-$(CONFIG_SOC_DRA7XX)		+= powerdomains7xx_data.o
 
 # PRCM clockdomain control
 clockdomain-common			+= clockdomain.o
-obj-$(CONFIG_ARCH_OMAP2)		+= $(clockdomain-common)
-obj-$(CONFIG_ARCH_OMAP2)		+= clockdomains2xxx_3xxx_data.o
-obj-$(CONFIG_SOC_OMAP2420)		+= clockdomains2420_data.o
-obj-$(CONFIG_SOC_OMAP2430)		+= clockdomains2430_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= $(clockdomain-common)
 obj-$(CONFIG_ARCH_OMAP3)		+= clockdomains2xxx_3xxx_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= clockdomains3xxx_data.o
@@ -176,47 +152,20 @@ obj-$(CONFIG_SOC_DRA7XX)		+= $(clockdomain-common)
 obj-$(CONFIG_SOC_DRA7XX)		+= clockdomains7xx_data.o
 
 # Clock framework
-obj-$(CONFIG_ARCH_OMAP2)		+= $(clock-common)
-obj-$(CONFIG_ARCH_OMAP2)		+= clkt2xxx_dpllcore.o
-obj-$(CONFIG_ARCH_OMAP2)		+= clkt2xxx_virt_prcm_set.o
-obj-$(CONFIG_ARCH_OMAP2)		+= clkt2xxx_dpll.o
-obj-$(CONFIG_ARCH_OMAP3)		+= $(clock-common)
-obj-$(CONFIG_ARCH_OMAP4)		+= $(clock-common)
-obj-$(CONFIG_SOC_AM33XX)		+= $(clock-common)
-obj-$(CONFIG_SOC_OMAP5)			+= $(clock-common)
-obj-$(CONFIG_SOC_DRA7XX)		+= $(clock-common)
-obj-$(CONFIG_SOC_AM43XX)		+= $(clock-common)
-
-# OMAP2 clock rate set data (old "OPP" data)
-obj-$(CONFIG_SOC_OMAP2420)		+= opp2420_data.o
-obj-$(CONFIG_SOC_OMAP2430)		+= opp2430_data.o
+obj-y					+= clock.o
 
 # hwmod data
-obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2xxx_ipblock_data.o
-obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2xxx_3xxx_ipblock_data.o
-obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2xxx_interconnect_data.o
-obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2420_data.o
-obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2xxx_ipblock_data.o
-obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2xxx_3xxx_ipblock_data.o
-obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2xxx_interconnect_data.o
-obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2430_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= omap_hwmod_2xxx_3xxx_ipblock_data.o
 obj-$(CONFIG_ARCH_OMAP3)		+= omap_hwmod_3xxx_data.o
 obj-$(CONFIG_SOC_TI81XX)		+= omap_hwmod_81xx_data.o
 
-# OMAP2420 MSDI controller integration support ("MMC")
-obj-$(CONFIG_SOC_OMAP2420)		+= msdi.o
-
 # Specific board support
 obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o pdata-quirks.o
-obj-$(CONFIG_MACH_NOKIA_N8X0)		+= board-n8x0.o
 
 # Platform specific device init code
 
 obj-y					+= omap_phy_internal.o
 
-obj-$(CONFIG_MACH_OMAP2_TUSB6010)	+= usb-tusb6010.o
-
 $(obj)/pm-asm-offsets.h: $(obj)/pm-asm-offsets.s FORCE
 	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
 
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index bff673e932fe..972b8cf0547f 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -45,40 +45,6 @@ void tick_broadcast(const struct cpumask *mask)
 }
 #endif
 
-#ifdef CONFIG_SOC_OMAP2420
-static const char *const omap242x_boards_compat[] __initconst = {
-	"ti,omap2420",
-	NULL,
-};
-
-DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
-	.reserve	= omap_reserve,
-	.map_io		= omap242x_map_io,
-	.init_early	= omap2420_init_early,
-	.init_machine	= omap_generic_init,
-	.init_time	= omap_init_time_of,
-	.dt_compat	= omap242x_boards_compat,
-	.restart	= omap2xxx_restart,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_SOC_OMAP2430
-static const char *const omap243x_boards_compat[] __initconst = {
-	"ti,omap2430",
-	NULL,
-};
-
-DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
-	.reserve	= omap_reserve,
-	.map_io		= omap243x_map_io,
-	.init_early	= omap2430_init_early,
-	.init_machine	= omap_generic_init,
-	.init_time	= omap_init_time_of,
-	.dt_compat	= omap243x_boards_compat,
-	.restart	= omap2xxx_restart,
-MACHINE_END
-#endif
-
 #ifdef CONFIG_ARCH_OMAP3
 /* Some boards need board name for legacy userspace in /proc/cpuinfo */
 static const char *const n900_boards_compat[] __initconst = {
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
deleted file mode 100644
index d9acd32c5457..000000000000
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ /dev/null
@@ -1,512 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/mach-omap2/board-n8x0.c
- *
- * Copyright (C) 2005-2009 Nokia Corporation
- * Author: Juha Yrjola <juha.yrjola@nokia.com>
- *
- * Modified from mach-omap2/board-generic.c
- */
-
-#include <linux/clk.h>
-#include <linux/delay.h>
-#include <linux/gpio/machine.h>
-#include <linux/gpio/consumer.h>
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/irq.h>
-#include <linux/stddef.h>
-#include <linux/i2c.h>
-#include <linux/spi/spi.h>
-#include <linux/usb/musb.h>
-#include <linux/mmc/host.h>
-#include <linux/platform_data/mmc-omap.h>
-#include <linux/mfd/menelaus.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach-types.h>
-
-#include "common.h"
-#include "mmc.h"
-#include "usb-tusb6010.h"
-#include "soc.h"
-#include "common-board-devices.h"
-
-#define TUSB6010_ASYNC_CS	1
-#define TUSB6010_SYNC_CS	4
-#define TUSB6010_DMACHAN	0x3f
-
-#define NOKIA_N810_WIMAX	(1 << 2)
-#define NOKIA_N810		(1 << 1)
-#define NOKIA_N800		(1 << 0)
-
-static u32 board_caps;
-
-#define board_is_n800()		(board_caps & NOKIA_N800)
-#define board_is_n810()		(board_caps & NOKIA_N810)
-#define board_is_n810_wimax()	(board_caps & NOKIA_N810_WIMAX)
-
-static void board_check_revision(void)
-{
-	if (of_machine_is_compatible("nokia,n800"))
-		board_caps = NOKIA_N800;
-	else if (of_machine_is_compatible("nokia,n810"))
-		board_caps = NOKIA_N810;
-	else if (of_machine_is_compatible("nokia,n810-wimax"))
-		board_caps = NOKIA_N810_WIMAX;
-
-	if (!board_caps)
-		pr_err("Unknown board\n");
-}
-
-#if IS_ENABLED(CONFIG_USB_MUSB_TUSB6010)
-
-static struct musb_hdrc_config musb_config = {
-	.multipoint	= 1,
-	.dyn_fifo	= 1,
-	.num_eps	= 16,
-	.ram_bits	= 12,
-};
-
-static struct musb_hdrc_platform_data tusb_data = {
-	.mode		= MUSB_OTG,
-	.min_power	= 25,	/* x2 = 50 mA drawn from VBUS as peripheral */
-	.power		= 100,	/* Max 100 mA VBUS for host mode */
-	.config		= &musb_config,
-};
-
-static struct gpiod_lookup_table tusb_gpio_table = {
-	.dev_id = "musb-tusb",
-	.table = {
-		GPIO_LOOKUP("gpio-0-31", 0, "enable", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("gpio-32-63", 26, "int", GPIO_ACTIVE_HIGH),
-		{ }
-	},
-};
-
-static void __init n8x0_usb_init(void)
-{
-	int ret = 0;
-
-	gpiod_add_lookup_table(&tusb_gpio_table);
-	ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
-				       TUSB6010_ASYNC_CS, TUSB6010_SYNC_CS,
-				       TUSB6010_DMACHAN);
-	if (ret != 0)
-		return;
-
-	pr_info("TUSB 6010\n");
-
-	return;
-}
-#else
-
-static void __init n8x0_usb_init(void) {}
-
-#endif /*CONFIG_USB_MUSB_TUSB6010 */
-
-#if defined(CONFIG_MENELAUS) && IS_ENABLED(CONFIG_MMC_OMAP)
-
-/*
- * On both N800 and N810, only the first of the two MMC controllers is in use.
- * The two MMC slots are multiplexed via Menelaus companion chip over I2C.
- * On N800, both slots are powered via Menelaus. On N810, only one of the
- * slots is powered via Menelaus. The N810 EMMC is powered via GPIO.
- *
- * VMMC				slot 1 on both N800 and N810
- * VDCDC3_APE and VMCS2_APE	slot 2 on N800
- * GPIO23 and GPIO9		slot 2 EMMC on N810
- *
- */
-static int slot1_cover_open;
-static int slot2_cover_open;
-static struct device *mmc_device;
-
-static struct gpiod_lookup_table nokia800_mmc_gpio_table = {
-	.dev_id = "mmci-omap.0",
-	.table = {
-		/* Slot switch, GPIO 96 */
-		GPIO_LOOKUP("gpio-96-127", 0, "switch", GPIO_ACTIVE_HIGH),
-		{ }
-	},
-};
-
-static struct gpiod_lookup_table nokia810_mmc_gpio_table = {
-	.dev_id = "mmci-omap.0",
-	.table = {
-		/* Slot switch, GPIO 96 */
-		GPIO_LOOKUP("gpio-96-127", 0, "switch", GPIO_ACTIVE_HIGH),
-		/* Slot index 1, VSD power, GPIO 23 */
-		GPIO_LOOKUP_IDX("gpio-0-31", 23, "vsd", 1, GPIO_ACTIVE_HIGH),
-		/* Slot index 1, VIO power, GPIO 9 */
-		GPIO_LOOKUP_IDX("gpio-0-31", 9, "vio", 1, GPIO_ACTIVE_HIGH),
-		{ }
-	},
-};
-
-static int n8x0_mmc_set_power_menelaus(struct device *dev, int slot,
-					int power_on, int vdd)
-{
-	int mV;
-
-#ifdef CONFIG_MMC_DEBUG
-	dev_dbg(dev, "Set slot %d power: %s (vdd %d)\n", slot + 1,
-		str_on_off(power_on), vdd);
-#endif
-	if (slot == 0) {
-		if (!power_on)
-			return menelaus_set_vmmc(0);
-		switch (1 << vdd) {
-		case MMC_VDD_33_34:
-		case MMC_VDD_32_33:
-		case MMC_VDD_31_32:
-			mV = 3100;
-			break;
-		case MMC_VDD_30_31:
-			mV = 3000;
-			break;
-		case MMC_VDD_28_29:
-			mV = 2800;
-			break;
-		case MMC_VDD_165_195:
-			mV = 1850;
-			break;
-		default:
-			BUG();
-		}
-		return menelaus_set_vmmc(mV);
-	} else {
-		if (!power_on)
-			return menelaus_set_vdcdc(3, 0);
-		switch (1 << vdd) {
-		case MMC_VDD_33_34:
-		case MMC_VDD_32_33:
-			mV = 3300;
-			break;
-		case MMC_VDD_30_31:
-		case MMC_VDD_29_30:
-			mV = 3000;
-			break;
-		case MMC_VDD_28_29:
-		case MMC_VDD_27_28:
-			mV = 2800;
-			break;
-		case MMC_VDD_24_25:
-		case MMC_VDD_23_24:
-			mV = 2400;
-			break;
-		case MMC_VDD_22_23:
-		case MMC_VDD_21_22:
-			mV = 2200;
-			break;
-		case MMC_VDD_20_21:
-			mV = 2000;
-			break;
-		case MMC_VDD_165_195:
-			mV = 1800;
-			break;
-		default:
-			BUG();
-		}
-		return menelaus_set_vdcdc(3, mV);
-	}
-	return 0;
-}
-
-static int n8x0_mmc_set_power(struct device *dev, int slot, int power_on,
-			      int vdd)
-{
-	if (board_is_n800() || slot == 0)
-		return n8x0_mmc_set_power_menelaus(dev, slot, power_on, vdd);
-
-	/* The n810 power will be handled by GPIO code in the driver */
-
-	return 0;
-}
-
-static int n8x0_mmc_set_bus_mode(struct device *dev, int slot, int bus_mode)
-{
-	int r;
-
-	dev_dbg(dev, "Set slot %d bus mode %s\n", slot + 1,
-		bus_mode == MMC_BUSMODE_OPENDRAIN ? "open-drain" : "push-pull");
-	BUG_ON(slot != 0 && slot != 1);
-	slot++;
-	switch (bus_mode) {
-	case MMC_BUSMODE_OPENDRAIN:
-		r = menelaus_set_mmc_opendrain(slot, 1);
-		break;
-	case MMC_BUSMODE_PUSHPULL:
-		r = menelaus_set_mmc_opendrain(slot, 0);
-		break;
-	default:
-		BUG();
-	}
-	if (r != 0 && printk_ratelimit())
-		dev_err(dev, "MMC: unable to set bus mode for slot %d\n",
-			slot);
-	return r;
-}
-
-static int n8x0_mmc_get_cover_state(struct device *dev, int slot)
-{
-	slot++;
-	BUG_ON(slot != 1 && slot != 2);
-	if (slot == 1)
-		return slot1_cover_open;
-	else
-		return slot2_cover_open;
-}
-
-static void n8x0_mmc_callback(void *data, u8 card_mask)
-{
-#ifdef CONFIG_MMC_OMAP
-	int bit, *openp, index;
-
-	if (board_is_n800()) {
-		bit = 1 << 1;
-		openp = &slot2_cover_open;
-		index = 1;
-	} else {
-		bit = 1;
-		openp = &slot1_cover_open;
-		index = 0;
-	}
-
-	if (card_mask & bit)
-		*openp = 1;
-	else
-		*openp = 0;
-
-	omap_mmc_notify_cover_event(mmc_device, index, *openp);
-#else
-	pr_warn("MMC: notify cover event not available\n");
-#endif
-}
-
-static int n8x0_mmc_late_init(struct device *dev)
-{
-	int r, bit, *openp;
-	int vs2sel;
-
-	mmc_device = dev;
-
-	r = menelaus_set_slot_sel(1);
-	if (r < 0)
-		return r;
-
-	if (board_is_n800())
-		vs2sel = 0;
-	else
-		vs2sel = 2;
-
-	r = menelaus_set_mmc_slot(2, 0, vs2sel, 1);
-	if (r < 0)
-		return r;
-
-	n8x0_mmc_set_power(dev, 0, MMC_POWER_ON, 16); /* MMC_VDD_28_29 */
-	n8x0_mmc_set_power(dev, 1, MMC_POWER_ON, 16);
-
-	r = menelaus_set_mmc_slot(1, 1, 0, 1);
-	if (r < 0)
-		return r;
-	r = menelaus_set_mmc_slot(2, 1, vs2sel, 1);
-	if (r < 0)
-		return r;
-
-	r = menelaus_get_slot_pin_states();
-	if (r < 0)
-		return r;
-
-	if (board_is_n800()) {
-		bit = 1 << 1;
-		openp = &slot2_cover_open;
-	} else {
-		bit = 1;
-		openp = &slot1_cover_open;
-		slot2_cover_open = 0;
-	}
-
-	/* All slot pin bits seem to be inversed until first switch change */
-	if (r == 0xf || r == (0xf & ~bit))
-		r = ~r;
-
-	if (r & bit)
-		*openp = 1;
-	else
-		*openp = 0;
-
-	r = menelaus_register_mmc_callback(n8x0_mmc_callback, NULL);
-
-	return r;
-}
-
-static void n8x0_mmc_shutdown(struct device *dev)
-{
-	int vs2sel;
-
-	if (board_is_n800())
-		vs2sel = 0;
-	else
-		vs2sel = 2;
-
-	menelaus_set_mmc_slot(1, 0, 0, 0);
-	menelaus_set_mmc_slot(2, 0, vs2sel, 0);
-}
-
-static void n8x0_mmc_cleanup(struct device *dev)
-{
-	menelaus_unregister_mmc_callback();
-}
-
-/*
- * MMC controller1 has two slots that are multiplexed via I2C.
- * MMC controller2 is not in use.
- */
-static struct omap_mmc_platform_data mmc1_data = {
-	.nr_slots			= 0,
-	.init				= n8x0_mmc_late_init,
-	.cleanup			= n8x0_mmc_cleanup,
-	.shutdown			= n8x0_mmc_shutdown,
-	.max_freq			= 24000000,
-	.slots[0] = {
-		.wires			= 4,
-		.set_power		= n8x0_mmc_set_power,
-		.set_bus_mode		= n8x0_mmc_set_bus_mode,
-		.get_cover_state	= n8x0_mmc_get_cover_state,
-		.ocr_mask		= MMC_VDD_165_195 | MMC_VDD_30_31 |
-						MMC_VDD_32_33   | MMC_VDD_33_34,
-		.name			= "internal",
-	},
-	.slots[1] = {
-		.set_power		= n8x0_mmc_set_power,
-		.set_bus_mode		= n8x0_mmc_set_bus_mode,
-		.get_cover_state	= n8x0_mmc_get_cover_state,
-		.ocr_mask		= MMC_VDD_165_195 | MMC_VDD_20_21 |
-						MMC_VDD_21_22 | MMC_VDD_22_23 |
-						MMC_VDD_23_24 | MMC_VDD_24_25 |
-						MMC_VDD_27_28 | MMC_VDD_28_29 |
-						MMC_VDD_29_30 | MMC_VDD_30_31 |
-						MMC_VDD_32_33 | MMC_VDD_33_34,
-		.name			= "external",
-	},
-};
-
-static struct omap_mmc_platform_data *mmc_data[OMAP24XX_NR_MMC];
-
-static void __init n8x0_mmc_init(void)
-{
-	if (board_is_n810()) {
-		mmc1_data.slots[0].name = "external";
-
-		/*
-		 * Some Samsung Movinand chips do not like open-ended
-		 * multi-block reads and fall to braind-dead state
-		 * while doing so. Reducing the number of blocks in
-		 * the transfer or delays in clock disable do not help
-		 */
-		mmc1_data.slots[1].name = "internal";
-		mmc1_data.slots[1].ban_openended = 1;
-		gpiod_add_lookup_table(&nokia810_mmc_gpio_table);
-	} else {
-		gpiod_add_lookup_table(&nokia800_mmc_gpio_table);
-	}
-
-	mmc1_data.nr_slots = 2;
-	mmc_data[0] = &mmc1_data;
-}
-#else
-static struct omap_mmc_platform_data mmc1_data;
-static void __init n8x0_mmc_init(void)
-{
-}
-#endif	/* CONFIG_MMC_OMAP */
-
-#ifdef CONFIG_MENELAUS
-
-static int n8x0_auto_sleep_regulators(void)
-{
-	u32 val;
-	int ret;
-
-	val = EN_VPLL_SLEEP | EN_VMMC_SLEEP    \
-		| EN_VAUX_SLEEP | EN_VIO_SLEEP \
-		| EN_VMEM_SLEEP | EN_DC3_SLEEP \
-		| EN_VC_SLEEP | EN_DC2_SLEEP;
-
-	ret = menelaus_set_regulator_sleep(1, val);
-	if (ret < 0) {
-		pr_err("Could not set regulators to sleep on menelaus: %u\n",
-		       ret);
-		return ret;
-	}
-	return 0;
-}
-
-static int n8x0_auto_voltage_scale(void)
-{
-	int ret;
-
-	ret = menelaus_set_vcore_hw(1400, 1050);
-	if (ret < 0) {
-		pr_err("Could not set VCORE voltage on menelaus: %u\n", ret);
-		return ret;
-	}
-	return 0;
-}
-
-static int n8x0_menelaus_late_init(struct device *dev)
-{
-	int ret;
-
-	ret = n8x0_auto_voltage_scale();
-	if (ret < 0)
-		return ret;
-	ret = n8x0_auto_sleep_regulators();
-	if (ret < 0)
-		return ret;
-	return 0;
-}
-
-#else
-static int n8x0_menelaus_late_init(struct device *dev)
-{
-	return 0;
-}
-#endif
-
-struct menelaus_platform_data n8x0_menelaus_platform_data = {
-	.late_init = n8x0_menelaus_late_init,
-};
-
-static struct gpiod_lookup_table nokia810_asoc_gpio_table = {
-	.dev_id = "soc-audio",
-	.table = {
-		GPIO_LOOKUP("gpio-0-15", 10, "headset", GPIO_ACTIVE_HIGH),
-		GPIO_LOOKUP("gpio-80-111", 21, "speaker", GPIO_ACTIVE_HIGH),
-		{ }
-	},
-};
-
-static int __init n8x0_late_initcall(void)
-{
-	if (!board_caps)
-		return -ENODEV;
-
-	n8x0_mmc_init();
-	n8x0_usb_init();
-	gpiod_add_lookup_table(&nokia810_asoc_gpio_table);
-
-	return 0;
-}
-omap_late_initcall(n8x0_late_initcall);
-
-/*
- * Legacy init pdata init for n8x0. Note that we want to follow the
- * I2C bus numbering starting at 0 for device tree like other omaps.
- */
-void * __init n8x0_legacy_init(void)
-{
-	board_check_revision();
-	return &mmc1_data;
-}
diff --git a/arch/arm/mach-omap2/clkt2xxx_dpll.c b/arch/arm/mach-omap2/clkt2xxx_dpll.c
deleted file mode 100644
index 0edebf3355fa..000000000000
--- a/arch/arm/mach-omap2/clkt2xxx_dpll.c
+++ /dev/null
@@ -1,56 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * OMAP2-specific DPLL control functions
- *
- * Copyright (C) 2011 Nokia Corporation
- * Paul Walmsley
- */
-
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-
-#include "clock.h"
-#include "cm2xxx.h"
-#include "cm-regbits-24xx.h"
-
-/* Private functions */
-
-/**
- * _allow_idle - enable DPLL autoidle bits
- * @clk: struct clk * of the DPLL to operate on
- *
- * Enable DPLL automatic idle control.  The DPLL will enter low-power
- * stop when its downstream clocks are gated.  No return value.
- * REVISIT: DPLL can optionally enter low-power bypass by writing 0x1
- * instead.  Add some mechanism to optionally enter this mode.
- */
-static void _allow_idle(struct clk_hw_omap *clk)
-{
-	if (!clk || !clk->dpll_data)
-		return;
-
-	omap2xxx_cm_set_dpll_auto_low_power_stop();
-}
-
-/**
- * _deny_idle - prevent DPLL from automatically idling
- * @clk: struct clk * of the DPLL to operate on
- *
- * Disable DPLL automatic idle control.  No return value.
- */
-static void _deny_idle(struct clk_hw_omap *clk)
-{
-	if (!clk || !clk->dpll_data)
-		return;
-
-	omap2xxx_cm_set_dpll_disable_autoidle();
-}
-
-
-/* Public data */
-const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll = {
-	.allow_idle	= _allow_idle,
-	.deny_idle	= _deny_idle,
-};
diff --git a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c b/arch/arm/mach-omap2/clkt2xxx_dpllcore.c
deleted file mode 100644
index 93f6d3cd9525..000000000000
--- a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c
+++ /dev/null
@@ -1,194 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * DPLL + CORE_CLK composite clock functions
- *
- * Copyright (C) 2005-2008 Texas Instruments, Inc.
- * Copyright (C) 2004-2010 Nokia Corporation
- *
- * Contacts:
- * Richard Woodruff <r-woodruff2@ti.com>
- * Paul Walmsley
- *
- * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
- * Gordon McNutt and RidgeRun, Inc.
- *
- * XXX The DPLL and CORE clocks should be split into two separate clock
- * types.
- */
-#undef DEBUG
-
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/clk.h>
-#include <linux/clk/ti.h>
-#include <linux/io.h>
-
-#include "clock.h"
-#include "clock2xxx.h"
-#include "opp2xxx.h"
-#include "cm2xxx.h"
-#include "cm-regbits-24xx.h"
-#include "sdrc.h"
-#include "sram.h"
-
-/* #define DOWN_VARIABLE_DPLL 1 */		/* Experimental */
-
-/*
- * dpll_core_ck: pointer to the combined dpll_ck + core_ck on OMAP2xxx
- * (currently defined as "dpll_ck" in the OMAP2xxx clock tree).  Set
- * during dpll_ck init and used later by omap2xxx_clk_get_core_rate().
- */
-static struct clk_hw_omap *dpll_core_ck;
-
-/**
- * omap2xxx_clk_get_core_rate - return the CORE_CLK rate
- *
- * Returns the CORE_CLK rate.  CORE_CLK can have one of three rate
- * sources on OMAP2xxx: the DPLL CLKOUT rate, DPLL CLKOUTX2, or 32KHz
- * (the latter is unusual).  This currently should be called with
- * struct clk *dpll_ck, which is a composite clock of dpll_ck and
- * core_ck.
- */
-unsigned long omap2xxx_clk_get_core_rate(void)
-{
-	long long core_clk;
-	u32 v;
-
-	WARN_ON(!dpll_core_ck);
-
-	core_clk = omap2_get_dpll_rate(dpll_core_ck);
-
-	v = omap2xxx_cm_get_core_clk_src();
-
-	if (v == CORE_CLK_SRC_32K)
-		core_clk = 32768;
-	else
-		core_clk *= v;
-
-	return core_clk;
-}
-
-/*
- * Uses the current prcm set to tell if a rate is valid.
- * You can go slower, but not faster within a given rate set.
- */
-static long omap2_dpllcore_round_rate(unsigned long target_rate)
-{
-	u32 high, low, core_clk_src;
-
-	core_clk_src = omap2xxx_cm_get_core_clk_src();
-
-	if (core_clk_src == CORE_CLK_SRC_DPLL) {	/* DPLL clockout */
-		high = curr_prcm_set->dpll_speed * 2;
-		low = curr_prcm_set->dpll_speed;
-	} else {				/* DPLL clockout x 2 */
-		high = curr_prcm_set->dpll_speed;
-		low = curr_prcm_set->dpll_speed / 2;
-	}
-
-#ifdef DOWN_VARIABLE_DPLL
-	if (target_rate > high)
-		return high;
-	else
-		return target_rate;
-#else
-	if (target_rate > low)
-		return high;
-	else
-		return low;
-#endif
-
-}
-
-unsigned long omap2_dpllcore_recalc(struct clk_hw *hw,
-				    unsigned long parent_rate)
-{
-	return omap2xxx_clk_get_core_rate();
-}
-
-int omap2_reprogram_dpllcore(struct clk_hw *hw, unsigned long rate,
-			     unsigned long parent_rate)
-{
-	struct clk_hw_omap *clk = to_clk_hw_omap(hw);
-	u32 cur_rate, low, mult, div, valid_rate, done_rate;
-	u32 bypass = 0;
-	struct prcm_config tmpset;
-	const struct dpll_data *dd;
-
-	cur_rate = omap2xxx_clk_get_core_rate();
-	mult = omap2xxx_cm_get_core_clk_src();
-
-	if ((rate == (cur_rate / 2)) && (mult == 2)) {
-		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
-	} else if ((rate == (cur_rate * 2)) && (mult == 1)) {
-		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
-	} else if (rate != cur_rate) {
-		valid_rate = omap2_dpllcore_round_rate(rate);
-		if (valid_rate != rate)
-			return -EINVAL;
-
-		if (mult == 1)
-			low = curr_prcm_set->dpll_speed;
-		else
-			low = curr_prcm_set->dpll_speed / 2;
-
-		dd = clk->dpll_data;
-		if (!dd)
-			return -EINVAL;
-
-		tmpset.cm_clksel1_pll =
-			omap_clk_ll_ops.clk_readl(&dd->mult_div1_reg);
-		tmpset.cm_clksel1_pll &= ~(dd->mult_mask |
-					   dd->div1_mask);
-		div = ((curr_prcm_set->xtal_speed / 1000000) - 1);
-		tmpset.cm_clksel2_pll = omap2xxx_cm_get_core_pll_config();
-		tmpset.cm_clksel2_pll &= ~OMAP24XX_CORE_CLK_SRC_MASK;
-		if (rate > low) {
-			tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL_X2;
-			mult = ((rate / 2) / 1000000);
-			done_rate = CORE_CLK_SRC_DPLL_X2;
-		} else {
-			tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL;
-			mult = (rate / 1000000);
-			done_rate = CORE_CLK_SRC_DPLL;
-		}
-		tmpset.cm_clksel1_pll |= (div << __ffs(dd->mult_mask));
-		tmpset.cm_clksel1_pll |= (mult << __ffs(dd->div1_mask));
-
-		/* Worst case */
-		tmpset.base_sdrc_rfr = SDRC_RFR_CTRL_BYPASS;
-
-		if (rate == curr_prcm_set->xtal_speed)	/* If asking for 1-1 */
-			bypass = 1;
-
-		/* For omap2xxx_sdrc_init_params() */
-		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
-
-		/* Force dll lock mode */
-		omap2_set_prcm(tmpset.cm_clksel1_pll, tmpset.base_sdrc_rfr,
-			       bypass);
-
-		/* Errata: ret dll entry state */
-		omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
-		omap2xxx_sdrc_reprogram(done_rate, 0);
-	}
-
-	return 0;
-}
-
-/**
- * omap2xxx_clkt_dpllcore_init - clk init function for dpll_ck
- * @clk: struct clk *dpll_ck
- *
- * Store a local copy of @clk in dpll_core_ck so other code can query
- * the core rate without having to clk_get(), which can sleep.  Must
- * only be called once.  No return value.  XXX If the clock
- * registration process is ever changed such that dpll_ck is no longer
- * statically defined, this code may need to change to increment some
- * kind of use count on dpll_ck.
- */
-void omap2xxx_clkt_dpllcore_init(struct clk_hw *hw)
-{
-	WARN(dpll_core_ck, "dpll_core_ck already set - should never happen");
-	dpll_core_ck = to_clk_hw_omap(hw);
-}
diff --git a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
deleted file mode 100644
index 2b04e422b46c..000000000000
--- a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
+++ /dev/null
@@ -1,259 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * OMAP2xxx DVFS virtual clock functions
- *
- * Copyright (C) 2005-2008, 2012 Texas Instruments, Inc.
- * Copyright (C) 2004-2010 Nokia Corporation
- *
- * Contacts:
- * Richard Woodruff <r-woodruff2@ti.com>
- * Paul Walmsley
- *
- * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
- * Gordon McNutt and RidgeRun, Inc.
- *
- * XXX Some of this code should be replaceable by the upcoming OPP layer
- * code.  However, some notion of "rate set" is probably still necessary
- * for OMAP2xxx at least.  Rate sets should be generalized so they can be
- * used for any OMAP chip, not just OMAP2xxx.  In particular, Richard Woodruff
- * has in the past expressed a preference to use rate sets for OPP changes,
- * rather than dynamically recalculating the clock tree, so if someone wants
- * this badly enough to write the code to handle it, we should support it
- * as an option.
- */
-#undef DEBUG
-
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-#include <linux/cpufreq.h>
-#include <linux/slab.h>
-
-#include "soc.h"
-#include "clock.h"
-#include "clock2xxx.h"
-#include "opp2xxx.h"
-#include "cm2xxx.h"
-#include "cm-regbits-24xx.h"
-#include "sdrc.h"
-#include "sram.h"
-
-static u16 cpu_mask;
-
-const struct prcm_config *curr_prcm_set;
-const struct prcm_config *rate_table;
-
-/*
- * sys_ck_rate: the rate of the external high-frequency clock
- * oscillator on the board.  Set by the SoC-specific clock init code.
- * Once set during a boot, will not change.
- */
-static unsigned long sys_ck_rate;
-
-/**
- * omap2_table_mpu_recalc - just return the MPU speed
- * @clk: virt_prcm_set struct clk
- *
- * Set virt_prcm_set's rate to the mpu_speed field of the current PRCM set.
- */
-static unsigned long omap2_table_mpu_recalc(struct clk_hw *clk,
-				     unsigned long parent_rate)
-{
-	return curr_prcm_set->mpu_speed;
-}
-
-/*
- * Look for a rate equal or less than the target rate given a configuration set.
- *
- * What's not entirely clear is "which" field represents the key field.
- * Some might argue L3-DDR, others ARM, others IVA. This code is simple and
- * just uses the ARM rates.
- */
-static int omap2_determine_rate_to_table(struct clk_hw *hw,
-					 struct clk_rate_request *req)
-{
-	const struct prcm_config *ptr;
-	long highest_rate;
-
-	highest_rate = -EINVAL;
-
-	for (ptr = rate_table; ptr->mpu_speed; ptr++) {
-		if (!(ptr->flags & cpu_mask))
-			continue;
-		if (ptr->xtal_speed != sys_ck_rate)
-			continue;
-
-		highest_rate = ptr->mpu_speed;
-
-		/* Can check only after xtal frequency check */
-		if (ptr->mpu_speed <= req->rate)
-			break;
-	}
-	req->rate = highest_rate;
-
-	return 0;
-}
-
-/* Sets basic clocks based on the specified rate */
-static int omap2_select_table_rate(struct clk_hw *hw, unsigned long rate,
-				   unsigned long parent_rate)
-{
-	u32 cur_rate, done_rate, bypass = 0;
-	const struct prcm_config *prcm;
-	unsigned long found_speed = 0;
-	unsigned long flags;
-
-	for (prcm = rate_table; prcm->mpu_speed; prcm++) {
-		if (!(prcm->flags & cpu_mask))
-			continue;
-
-		if (prcm->xtal_speed != sys_ck_rate)
-			continue;
-
-		if (prcm->mpu_speed <= rate) {
-			found_speed = prcm->mpu_speed;
-			break;
-		}
-	}
-
-	if (!found_speed) {
-		printk(KERN_INFO "Could not set MPU rate to %luMHz\n",
-		       rate / 1000000);
-		return -EINVAL;
-	}
-
-	curr_prcm_set = prcm;
-	cur_rate = omap2xxx_clk_get_core_rate();
-
-	if (prcm->dpll_speed == cur_rate / 2) {
-		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
-	} else if (prcm->dpll_speed == cur_rate * 2) {
-		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
-	} else if (prcm->dpll_speed != cur_rate) {
-		local_irq_save(flags);
-
-		if (prcm->dpll_speed == prcm->xtal_speed)
-			bypass = 1;
-
-		if ((prcm->cm_clksel2_pll & OMAP24XX_CORE_CLK_SRC_MASK) ==
-		    CORE_CLK_SRC_DPLL_X2)
-			done_rate = CORE_CLK_SRC_DPLL_X2;
-		else
-			done_rate = CORE_CLK_SRC_DPLL;
-
-		omap2xxx_cm_set_mod_dividers(prcm->cm_clksel_mpu,
-					     prcm->cm_clksel_dsp,
-					     prcm->cm_clksel_gfx,
-					     prcm->cm_clksel1_core,
-					     prcm->cm_clksel_mdm);
-
-		/* x2 to enter omap2xxx_sdrc_init_params() */
-		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
-
-		omap2_set_prcm(prcm->cm_clksel1_pll, prcm->base_sdrc_rfr,
-			       bypass);
-
-		omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
-		omap2xxx_sdrc_reprogram(done_rate, 0);
-
-		local_irq_restore(flags);
-	}
-
-	return 0;
-}
-
-/**
- * omap2xxx_clkt_vps_check_bootloader_rates - determine which of the rate
- * table sets matches the current CORE DPLL hardware rate
- *
- * Check the MPU rate set by bootloader.  Sets the 'curr_prcm_set'
- * global to point to the active rate set when found; otherwise, sets
- * it to NULL.  No return value;
- */
-static void omap2xxx_clkt_vps_check_bootloader_rates(void)
-{
-	const struct prcm_config *prcm = NULL;
-	unsigned long rate;
-
-	rate = omap2xxx_clk_get_core_rate();
-	for (prcm = rate_table; prcm->mpu_speed; prcm++) {
-		if (!(prcm->flags & cpu_mask))
-			continue;
-		if (prcm->xtal_speed != sys_ck_rate)
-			continue;
-		if (prcm->dpll_speed <= rate)
-			break;
-	}
-	curr_prcm_set = prcm;
-}
-
-/**
- * omap2xxx_clkt_vps_late_init - store a copy of the sys_ck rate
- *
- * Store a copy of the sys_ck rate for later use by the OMAP2xxx DVFS
- * code.  (The sys_ck rate does not -- or rather, must not -- change
- * during kernel runtime.)  Must be called after we have a valid
- * sys_ck rate, but before the virt_prcm_set clock rate is
- * recalculated.  No return value.
- */
-static void omap2xxx_clkt_vps_late_init(void)
-{
-	struct clk *c;
-
-	c = clk_get(NULL, "sys_ck");
-	if (IS_ERR(c)) {
-		WARN(1, "could not locate sys_ck\n");
-	} else {
-		sys_ck_rate = clk_get_rate(c);
-		clk_put(c);
-	}
-}
-
-#ifdef CONFIG_OF
-#include <linux/clk-provider.h>
-#include <linux/clkdev.h>
-
-static const struct clk_ops virt_prcm_set_ops = {
-	.recalc_rate	= &omap2_table_mpu_recalc,
-	.set_rate	= &omap2_select_table_rate,
-	.determine_rate = &omap2_determine_rate_to_table,
-};
-
-/**
- * omap2xxx_clkt_vps_init - initialize virt_prcm_set clock
- *
- * Does a manual init for the virtual prcm DVFS clock for OMAP2. This
- * function is called only from omap2 DT clock init, as the virtual
- * node is not modelled in the DT clock data.
- */
-void omap2xxx_clkt_vps_init(void)
-{
-	struct clk_init_data init = { NULL };
-	struct clk_hw_omap *hw = NULL;
-	struct clk *clk;
-	const char *parent_name = "mpu_ck";
-
-	omap2xxx_clkt_vps_late_init();
-	omap2xxx_clkt_vps_check_bootloader_rates();
-
-	hw = kzalloc_obj(*hw);
-	if (!hw)
-		return;
-	init.name = "virt_prcm_set";
-	init.ops = &virt_prcm_set_ops;
-	init.parent_names = &parent_name;
-	init.num_parents = 1;
-
-	hw->hw.init = &init;
-
-	clk = clk_register(NULL, &hw->hw);
-	if (IS_ERR(clk)) {
-		printk(KERN_ERR "Failed to register clock\n");
-		kfree(hw);
-		return;
-	}
-
-	clkdev_create(clk, "cpufreq_ck", NULL);
-}
-#endif
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
index 83fae51722a9..b73a80503da8 100644
--- a/arch/arm/mach-omap2/clock.c
+++ b/arch/arm/mach-omap2/clock.c
@@ -30,9 +30,7 @@
 #include "clockdomain.h"
 #include "clock.h"
 #include "cm.h"
-#include "cm2xxx.h"
 #include "cm3xxx.h"
-#include "cm-regbits-24xx.h"
 #include "cm-regbits-34xx.h"
 #include "common.h"
 
@@ -94,11 +92,7 @@ void __init ti_clk_init_features(void)
 	}
 
 	/* Bypass value setup for DPLLs */
-	if (cpu_is_omap24xx()) {
-		features.dpll_bypass_vals |=
-			(1 << OMAP2XXX_EN_DPLL_LPBYPASS) |
-			(1 << OMAP2XXX_EN_DPLL_FRBYPASS);
-	} else if (cpu_is_omap34xx()) {
+	if (cpu_is_omap34xx()) {
 		features.dpll_bypass_vals |=
 			(1 << OMAP3XXX_EN_DPLL_LPBYPASS) |
 			(1 << OMAP3XXX_EN_DPLL_FRBYPASS);
@@ -122,9 +116,7 @@ void __init ti_clk_init_features(void)
 	 * 34xx reverses this, just to keep us on our toes
 	 * AM35xx uses both, depending on the module.
 	 */
-	if (cpu_is_omap24xx())
-		features.cm_idlest_val = OMAP24XX_CM_IDLEST_VAL;
-	else if (cpu_is_omap34xx())
+	if (cpu_is_omap34xx())
 		features.cm_idlest_val = OMAP34XX_CM_IDLEST_VAL;
 
 	/* On OMAP3430 ES1.0, DPLL4 can't be re-programmed */
diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h
deleted file mode 100644
index 73c011dadfd2..000000000000
--- a/arch/arm/mach-omap2/clock2xxx.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * OMAP2 clock function prototypes and macros
- *
- * Copyright (C) 2005-2010 Texas Instruments, Inc.
- * Copyright (C) 2004-2010 Nokia Corporation
- */
-
-#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK2XXX_H
-#define __ARCH_ARM_MACH_OMAP2_CLOCK2XXX_H
-
-#include <linux/clk-provider.h>
-#include "clock.h"
-
-unsigned long omap2xxx_clk_get_core_rate(void);
-
-#endif
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c
index 69dc5b839335..4b5ae1f40d50 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -1213,7 +1213,7 @@ int clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk)
 int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh)
 {
 	/* The clkdm attribute does not exist yet prior OMAP4 */
-	if (cpu_is_omap24xx() || cpu_is_omap34xx())
+	if (cpu_is_omap34xx())
 		return 0;
 
 	/*
@@ -1244,7 +1244,7 @@ int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh)
 int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh)
 {
 	/* The clkdm attribute does not exist yet prior OMAP4 */
-	if (cpu_is_omap24xx() || cpu_is_omap34xx())
+	if (cpu_is_omap34xx())
 		return 0;
 
 	if (!oh)
diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h
index 86a2f9e5d0ef..2d422b5f121f 100644
--- a/arch/arm/mach-omap2/clockdomain.h
+++ b/arch/arm/mach-omap2/clockdomain.h
@@ -216,8 +216,6 @@ int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh);
 void clkdm_save_context(void);
 void clkdm_restore_context(void);
 
-extern void __init omap242x_clockdomains_init(void);
-extern void __init omap243x_clockdomains_init(void);
 extern void __init omap3xxx_clockdomains_init(void);
 extern void __init am33xx_clockdomains_init(void);
 extern void __init ti814x_clockdomains_init(void);
@@ -230,14 +228,11 @@ void am43xx_clockdomains_init(void);
 extern void clkdm_add_autodeps(struct clockdomain *clkdm);
 extern void clkdm_del_autodeps(struct clockdomain *clkdm);
 
-extern struct clkdm_ops omap2_clkdm_operations;
 extern struct clkdm_ops omap3_clkdm_operations;
 extern struct clkdm_ops omap4_clkdm_operations;
 extern struct clkdm_ops am33xx_clkdm_operations;
 extern struct clkdm_ops am43xx_clkdm_operations;
 
-extern struct clkdm_dep gfx_24xx_wkdeps[];
-extern struct clkdm_dep dsp_24xx_wkdeps[];
 extern struct clockdomain wkup_common_clkdm;
 
 #endif
diff --git a/arch/arm/mach-omap2/clockdomains2420_data.c b/arch/arm/mach-omap2/clockdomains2420_data.c
deleted file mode 100644
index ac4ffb5d2ffc..000000000000
--- a/arch/arm/mach-omap2/clockdomains2420_data.c
+++ /dev/null
@@ -1,154 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * OMAP2420 clockdomains
- *
- * Copyright (C) 2008-2011 Texas Instruments, Inc.
- * Copyright (C) 2008-2010 Nokia Corporation
- *
- * Paul Walmsley, Jouni Högander
- *
- * This file contains clockdomains and clockdomain wakeup dependencies
- * for OMAP2420 chips.  Some notes:
- *
- * A useful validation rule for struct clockdomain: Any clockdomain
- * referenced by a wkdep_srcs must have a dep_bit assigned.  So
- * wkdep_srcs are really just software-controllable dependencies.
- * Non-software-controllable dependencies do exist, but they are not
- * encoded below (yet).
- *
- * 24xx does not support programmable sleep dependencies (SLEEPDEP)
- *
- * The overly-specific dep_bit names are due to a bit name collision
- * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
- * value are the same for all powerdomains: 2
- *
- * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
- * sanity check?
- * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
- */
-
-/*
- * To-Do List
- * -> Port the Sleep/Wakeup dependencies for the domains
- *    from the Power domain framework
- */
-
-#include <linux/kernel.h>
-#include <linux/io.h>
-
-#include "soc.h"
-#include "clockdomain.h"
-#include "prm2xxx_3xxx.h"
-#include "cm2xxx_3xxx.h"
-#include "cm-regbits-24xx.h"
-#include "prm-regbits-24xx.h"
-
-/*
- * Clockdomain dependencies for wkdeps
- *
- * XXX Hardware dependencies (e.g., dependencies that cannot be
- * changed in software) are not included here yet, but should be.
- */
-
-/* Wakeup dependency source arrays */
-
-/* 2420-specific possible wakeup dependencies */
-
-/* 2420 PM_WKDEP_MPU: CORE, DSP, WKUP */
-static struct clkdm_dep mpu_2420_wkdeps[] = {
-	{ .clkdm_name = "core_l3_clkdm" },
-	{ .clkdm_name = "core_l4_clkdm" },
-	{ .clkdm_name = "dsp_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ NULL },
-};
-
-/* 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP */
-static struct clkdm_dep core_2420_wkdeps[] = {
-	{ .clkdm_name = "dsp_clkdm" },
-	{ .clkdm_name = "gfx_clkdm" },
-	{ .clkdm_name = "mpu_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ NULL },
-};
-
-/*
- * 2420-only clockdomains
- */
-
-static struct clockdomain mpu_2420_clkdm = {
-	.name		= "mpu_clkdm",
-	.pwrdm		= { .name = "mpu_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.wkdep_srcs	= mpu_2420_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
-};
-
-static struct clockdomain iva1_2420_clkdm = {
-	.name		= "iva1_clkdm",
-	.pwrdm		= { .name = "dsp_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.dep_bit	= OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
-	.wkdep_srcs	= dsp_24xx_wkdeps,
-	.clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
-};
-
-static struct clockdomain dsp_2420_clkdm = {
-	.name		= "dsp_clkdm",
-	.pwrdm		= { .name = "dsp_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
-};
-
-static struct clockdomain gfx_2420_clkdm = {
-	.name		= "gfx_clkdm",
-	.pwrdm		= { .name = "gfx_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.wkdep_srcs	= gfx_24xx_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
-};
-
-static struct clockdomain core_l3_2420_clkdm = {
-	.name		= "core_l3_clkdm",
-	.pwrdm		= { .name = "core_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.wkdep_srcs	= core_2420_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
-};
-
-static struct clockdomain core_l4_2420_clkdm = {
-	.name		= "core_l4_clkdm",
-	.pwrdm		= { .name = "core_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.wkdep_srcs	= core_2420_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
-};
-
-static struct clockdomain dss_2420_clkdm = {
-	.name		= "dss_clkdm",
-	.pwrdm		= { .name = "core_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
-};
-
-static struct clockdomain *clockdomains_omap242x[] __initdata = {
-	&wkup_common_clkdm,
-	&mpu_2420_clkdm,
-	&iva1_2420_clkdm,
-	&dsp_2420_clkdm,
-	&gfx_2420_clkdm,
-	&core_l3_2420_clkdm,
-	&core_l4_2420_clkdm,
-	&dss_2420_clkdm,
-	NULL,
-};
-
-void __init omap242x_clockdomains_init(void)
-{
-	if (!cpu_is_omap242x())
-		return;
-
-	clkdm_register_platform_funcs(&omap2_clkdm_operations);
-	clkdm_register_clkdms(clockdomains_omap242x);
-	clkdm_complete_init();
-}
diff --git a/arch/arm/mach-omap2/clockdomains2430_data.c b/arch/arm/mach-omap2/clockdomains2430_data.c
deleted file mode 100644
index 0e97e178abaa..000000000000
--- a/arch/arm/mach-omap2/clockdomains2430_data.c
+++ /dev/null
@@ -1,181 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * OMAP2xxx clockdomains
- *
- * Copyright (C) 2008-2009 Texas Instruments, Inc.
- * Copyright (C) 2008-2010 Nokia Corporation
- *
- * Paul Walmsley, Jouni Högander
- *
- * This file contains clockdomains and clockdomain wakeup dependencies
- * for OMAP2xxx chips.  Some notes:
- *
- * A useful validation rule for struct clockdomain: Any clockdomain
- * referenced by a wkdep_srcs must have a dep_bit assigned.  So
- * wkdep_srcs are really just software-controllable dependencies.
- * Non-software-controllable dependencies do exist, but they are not
- * encoded below (yet).
- *
- * 24xx does not support programmable sleep dependencies (SLEEPDEP)
- *
- * The overly-specific dep_bit names are due to a bit name collision
- * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
- * value are the same for all powerdomains: 2
- *
- * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
- * sanity check?
- * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
- */
-
-/*
- * To-Do List
- * -> Port the Sleep/Wakeup dependencies for the domains
- *    from the Power domain framework
- */
-
-#include <linux/kernel.h>
-#include <linux/io.h>
-
-#include "soc.h"
-#include "clockdomain.h"
-#include "prm2xxx_3xxx.h"
-#include "cm2xxx_3xxx.h"
-#include "cm-regbits-24xx.h"
-#include "prm-regbits-24xx.h"
-
-/*
- * Clockdomain dependencies for wkdeps
- *
- * XXX Hardware dependencies (e.g., dependencies that cannot be
- * changed in software) are not included here yet, but should be.
- */
-
-/* Wakeup dependency source arrays */
-
-/* 2430-specific possible wakeup dependencies */
-
-/* 2430 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP, MDM */
-static struct clkdm_dep core_2430_wkdeps[] = {
-	{ .clkdm_name = "dsp_clkdm" },
-	{ .clkdm_name = "gfx_clkdm" },
-	{ .clkdm_name = "mpu_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ .clkdm_name = "mdm_clkdm" },
-	{ NULL },
-};
-
-/* 2430 PM_WKDEP_MPU: CORE, DSP, WKUP, MDM */
-static struct clkdm_dep mpu_2430_wkdeps[] = {
-	{ .clkdm_name = "core_l3_clkdm" },
-	{ .clkdm_name = "core_l4_clkdm" },
-	{ .clkdm_name = "dsp_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ .clkdm_name = "mdm_clkdm" },
-	{ NULL },
-};
-
-/* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */
-static struct clkdm_dep mdm_2430_wkdeps[] = {
-	{ .clkdm_name = "core_l3_clkdm" },
-	{ .clkdm_name = "core_l4_clkdm" },
-	{ .clkdm_name = "mpu_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ NULL },
-};
-
-/*
- * 2430-only clockdomains
- */
-
-static struct clockdomain mpu_2430_clkdm = {
-	.name		= "mpu_clkdm",
-	.pwrdm		= { .name = "mpu_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.wkdep_srcs	= mpu_2430_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
-};
-
-/* Another case of bit name collisions between several registers: EN_MDM */
-static struct clockdomain mdm_clkdm = {
-	.name		= "mdm_clkdm",
-	.pwrdm		= { .name = "mdm_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.dep_bit	= OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
-	.wkdep_srcs	= mdm_2430_wkdeps,
-	.clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
-};
-
-static struct clockdomain dsp_2430_clkdm = {
-	.name		= "dsp_clkdm",
-	.pwrdm		= { .name = "dsp_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.dep_bit	= OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
-	.wkdep_srcs	= dsp_24xx_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
-};
-
-static struct clockdomain gfx_2430_clkdm = {
-	.name		= "gfx_clkdm",
-	.pwrdm		= { .name = "gfx_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP_SWSUP,
-	.wkdep_srcs	= gfx_24xx_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
-};
-
-/*
- * XXX add usecounting for clkdm dependencies, otherwise the presence
- * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
- * could cause trouble
- */
-static struct clockdomain core_l3_2430_clkdm = {
-	.name		= "core_l3_clkdm",
-	.pwrdm		= { .name = "core_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.dep_bit	= OMAP24XX_EN_CORE_SHIFT,
-	.wkdep_srcs	= core_2430_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
-};
-
-/*
- * XXX add usecounting for clkdm dependencies, otherwise the presence
- * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
- * could cause trouble
- */
-static struct clockdomain core_l4_2430_clkdm = {
-	.name		= "core_l4_clkdm",
-	.pwrdm		= { .name = "core_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.dep_bit	= OMAP24XX_EN_CORE_SHIFT,
-	.wkdep_srcs	= core_2430_wkdeps,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
-};
-
-static struct clockdomain dss_2430_clkdm = {
-	.name		= "dss_clkdm",
-	.pwrdm		= { .name = "core_pwrdm" },
-	.flags		= CLKDM_CAN_HWSUP,
-	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
-};
-
-static struct clockdomain *clockdomains_omap243x[] __initdata = {
-	&wkup_common_clkdm,
-	&mpu_2430_clkdm,
-	&mdm_clkdm,
-	&dsp_2430_clkdm,
-	&gfx_2430_clkdm,
-	&core_l3_2430_clkdm,
-	&core_l4_2430_clkdm,
-	&dss_2430_clkdm,
-	NULL,
-};
-
-void __init omap243x_clockdomains_init(void)
-{
-	if (!cpu_is_omap243x())
-		return;
-
-	clkdm_register_platform_funcs(&omap2_clkdm_operations);
-	clkdm_register_clkdms(clockdomains_omap243x);
-	clkdm_complete_init();
-}
-
diff --git a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
index 220c22f5e0f5..4d20c2720660 100644
--- a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
+++ b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
@@ -8,7 +8,7 @@
  * Paul Walmsley, Jouni Högander
  *
  * This file contains clockdomains and clockdomain wakeup/sleep
- * dependencies for the OMAP2/3 chips.  Some notes:
+ * dependencies for the OMAP3 chips.  Some notes:
  *
  * A useful validation rule for struct clockdomain: Any clockdomain
  * referenced by a wkdep_srcs or sleepdep_srcs array must have a
@@ -16,8 +16,6 @@
  * software-controllable dependencies.  Non-software-controllable
  * dependencies do exist, but they are not encoded below (yet).
  *
- * 24xx does not support programmable sleep dependencies (SLEEPDEP)
- *
  * The overly-specific dep_bit names are due to a bit name collision
  * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
  * value are the same for all powerdomains: 2
@@ -39,10 +37,8 @@
 #include "clockdomain.h"
 #include "prm2xxx_3xxx.h"
 #include "cm2xxx_3xxx.h"
-#include "cm-regbits-24xx.h"
 #include "cm-regbits-34xx.h"
 #include "cm-regbits-44xx.h"
-#include "prm-regbits-24xx.h"
 #include "prm-regbits-34xx.h"
 
 /*
@@ -54,29 +50,8 @@
 
 /* Wakeup dependency source arrays */
 
-/* 2xxx-specific possible dependencies */
-
-/* 2xxx PM_WKDEP_GFX: CORE, MPU, WKUP */
-struct clkdm_dep gfx_24xx_wkdeps[] = {
-	{ .clkdm_name = "core_l3_clkdm" },
-	{ .clkdm_name = "core_l4_clkdm" },
-	{ .clkdm_name = "mpu_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ NULL },
-};
-
-/* 2xxx PM_WKDEP_DSP: CORE, MPU, WKUP */
-struct clkdm_dep dsp_24xx_wkdeps[] = {
-	{ .clkdm_name = "core_l3_clkdm" },
-	{ .clkdm_name = "core_l4_clkdm" },
-	{ .clkdm_name = "mpu_clkdm" },
-	{ .clkdm_name = "wkup_clkdm" },
-	{ NULL },
-};
-
-
 /*
- * OMAP2/3-common clockdomains
+ * OMAP3-common clockdomains
  *
  * Even though the 2420 has a single PRCM module from the
  * interconnect's perspective, internally it does appear to have
diff --git a/arch/arm/mach-omap2/cm-regbits-24xx.h b/arch/arm/mach-omap2/cm-regbits-24xx.h
deleted file mode 100644
index 59c14dbb6f87..000000000000
--- a/arch/arm/mach-omap2/cm-regbits-24xx.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARCH_ARM_MACH_OMAP2_CM_REGBITS_24XX_H
-#define __ARCH_ARM_MACH_OMAP2_CM_REGBITS_24XX_H
-
-/*
- * OMAP24XX Clock Management register bits
- *
- * Copyright (C) 2007 Texas Instruments, Inc.
- * Copyright (C) 2007 Nokia Corporation
- *
- * Written by Paul Walmsley
- */
-
-#define OMAP24XX_AUTOSTATE_MPU_MASK			(1 << 0)
-#define OMAP24XX_EN_DSS1_MASK				(1 << 0)
-#define OMAP24XX_ST_MAILBOXES_SHIFT			30
-#define OMAP24XX_ST_HDQ_SHIFT				23
-#define OMAP2420_ST_I2C2_SHIFT				20
-#define OMAP2430_ST_I2CHS1_SHIFT			19
-#define OMAP2420_ST_I2C1_SHIFT				19
-#define OMAP2430_ST_I2CHS2_SHIFT			20
-#define OMAP24XX_ST_MCBSP2_SHIFT			16
-#define OMAP24XX_ST_MCBSP1_SHIFT			15
-#define OMAP2430_ST_MCBSP5_SHIFT			5
-#define OMAP2430_ST_MCBSP4_SHIFT			4
-#define OMAP2430_ST_MCBSP3_SHIFT			3
-#define OMAP24XX_ST_AES_SHIFT				3
-#define OMAP24XX_ST_RNG_SHIFT				2
-#define OMAP24XX_ST_SHA_SHIFT				1
-#define OMAP24XX_CLKSEL_DSS2_MASK			(0x1 << 13)
-#define OMAP24XX_AUTOSTATE_DSS_MASK			(1 << 2)
-#define OMAP24XX_AUTOSTATE_L4_MASK			(1 << 1)
-#define OMAP24XX_AUTOSTATE_L3_MASK			(1 << 0)
-#define OMAP24XX_AUTOSTATE_GFX_MASK			(1 << 0)
-#define OMAP24XX_ST_MPU_WDT_SHIFT			3
-#define OMAP24XX_ST_32KSYNC_SHIFT			1
-#define OMAP24XX_EN_54M_PLL_SHIFT			6
-#define OMAP24XX_EN_96M_PLL_SHIFT			2
-#define OMAP24XX_ST_54M_APLL_SHIFT			9
-#define OMAP24XX_ST_96M_APLL_SHIFT			8
-#define OMAP24XX_AUTO_54M_MASK				(0x3 << 6)
-#define OMAP24XX_AUTO_96M_MASK				(0x3 << 2)
-#define OMAP24XX_AUTO_DPLL_SHIFT			0
-#define OMAP24XX_AUTO_DPLL_MASK				(0x3 << 0)
-#define OMAP24XX_CORE_CLK_SRC_MASK			(0x3 << 0)
-#define OMAP2420_AUTOSTATE_IVA_MASK			(1 << 8)
-#define OMAP24XX_AUTOSTATE_DSP_MASK			(1 << 0)
-#define OMAP2430_AUTOSTATE_MDM_MASK			(1 << 0)
-#define OMAP24XX_CLKSTCTRL_DISABLE_AUTO		0x0
-#define OMAP24XX_CLKSTCTRL_ENABLE_AUTO		0x1
-#endif
diff --git a/arch/arm/mach-omap2/cm2xxx.c b/arch/arm/mach-omap2/cm2xxx.c
deleted file mode 100644
index 1c6d69f4bf49..000000000000
--- a/arch/arm/mach-omap2/cm2xxx.c
+++ /dev/null
@@ -1,302 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * OMAP2xxx CM module functions
- *
- * Copyright (C) 2009 Nokia Corporation
- * Copyright (C) 2008-2010, 2012 Texas Instruments, Inc.
- * Paul Walmsley
- * Rajendra Nayak <rnayak@ti.com>
- */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/delay.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/io.h>
-
-#include "prm2xxx.h"
-#include "cm.h"
-#include "cm2xxx.h"
-#include "cm-regbits-24xx.h"
-#include "clockdomain.h"
-
-/* CM_AUTOIDLE_PLL.AUTO_* bit values for DPLLs */
-#define DPLL_AUTOIDLE_DISABLE				0x0
-#define OMAP2XXX_DPLL_AUTOIDLE_LOW_POWER_STOP		0x3
-
-/* CM_AUTOIDLE_PLL.AUTO_* bit values for APLLs (OMAP2xxx only) */
-#define OMAP2XXX_APLL_AUTOIDLE_DISABLE			0x0
-#define OMAP2XXX_APLL_AUTOIDLE_LOW_POWER_STOP		0x3
-
-/* CM_IDLEST_PLL bit value offset for APLLs (OMAP2xxx only) */
-#define EN_APLL_LOCKED					3
-
-static const u8 omap2xxx_cm_idlest_offs[] = {
-	CM_IDLEST1, CM_IDLEST2, OMAP2430_CM_IDLEST3, OMAP24XX_CM_IDLEST4
-};
-
-/*
- *
- */
-
-static void _write_clktrctrl(u8 c, s16 module, u32 mask)
-{
-	u32 v;
-
-	v = omap2_cm_read_mod_reg(module, OMAP2_CM_CLKSTCTRL);
-	v &= ~mask;
-	v |= c << __ffs(mask);
-	omap2_cm_write_mod_reg(v, module, OMAP2_CM_CLKSTCTRL);
-}
-
-static bool omap2xxx_cm_is_clkdm_in_hwsup(s16 module, u32 mask)
-{
-	u32 v;
-
-	v = omap2_cm_read_mod_reg(module, OMAP2_CM_CLKSTCTRL);
-	v &= mask;
-	v >>= __ffs(mask);
-
-	return (v == OMAP24XX_CLKSTCTRL_ENABLE_AUTO) ? 1 : 0;
-}
-
-static void omap2xxx_cm_clkdm_enable_hwsup(s16 module, u32 mask)
-{
-	_write_clktrctrl(OMAP24XX_CLKSTCTRL_ENABLE_AUTO, module, mask);
-}
-
-static void omap2xxx_cm_clkdm_disable_hwsup(s16 module, u32 mask)
-{
-	_write_clktrctrl(OMAP24XX_CLKSTCTRL_DISABLE_AUTO, module, mask);
-}
-
-/*
- * DPLL autoidle control
- */
-
-static void _omap2xxx_set_dpll_autoidle(u8 m)
-{
-	u32 v;
-
-	v = omap2_cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
-	v &= ~OMAP24XX_AUTO_DPLL_MASK;
-	v |= m << OMAP24XX_AUTO_DPLL_SHIFT;
-	omap2_cm_write_mod_reg(v, PLL_MOD, CM_AUTOIDLE);
-}
-
-void omap2xxx_cm_set_dpll_disable_autoidle(void)
-{
-	_omap2xxx_set_dpll_autoidle(OMAP2XXX_DPLL_AUTOIDLE_LOW_POWER_STOP);
-}
-
-void omap2xxx_cm_set_dpll_auto_low_power_stop(void)
-{
-	_omap2xxx_set_dpll_autoidle(DPLL_AUTOIDLE_DISABLE);
-}
-
-/**
- * omap2xxx_cm_split_idlest_reg - split CM_IDLEST reg addr into its components
- * @idlest_reg: CM_IDLEST* virtual address
- * @prcm_inst: pointer to an s16 to return the PRCM instance offset
- * @idlest_reg_id: pointer to a u8 to return the CM_IDLESTx register ID
- *
- * XXX This function is only needed until absolute register addresses are
- * removed from the OMAP struct clk records.
- */
-static int omap2xxx_cm_split_idlest_reg(struct clk_omap_reg *idlest_reg,
-					s16 *prcm_inst,
-					u8 *idlest_reg_id)
-{
-	unsigned long offs;
-	u8 idlest_offs;
-	int i;
-
-	idlest_offs = idlest_reg->offset & 0xff;
-	for (i = 0; i < ARRAY_SIZE(omap2xxx_cm_idlest_offs); i++) {
-		if (idlest_offs == omap2xxx_cm_idlest_offs[i]) {
-			*idlest_reg_id = i + 1;
-			break;
-		}
-	}
-
-	if (i == ARRAY_SIZE(omap2xxx_cm_idlest_offs))
-		return -EINVAL;
-
-	offs = idlest_reg->offset;
-	offs &= 0xff00;
-	*prcm_inst = offs;
-
-	return 0;
-}
-
-/*
- *
- */
-
-/**
- * omap2xxx_cm_wait_module_ready - wait for a module to leave idle or standby
- * @part: PRCM partition, ignored for OMAP2
- * @prcm_mod: PRCM module offset
- * @idlest_id: CM_IDLESTx register ID (i.e., x = 1, 2, 3)
- * @idlest_shift: shift of the bit in the CM_IDLEST* register to check
- *
- * Wait for the PRCM to indicate that the module identified by
- * (@prcm_mod, @idlest_id, @idlest_shift) is clocked.  Return 0 upon
- * success or -EBUSY if the module doesn't enable in time.
- */
-static int omap2xxx_cm_wait_module_ready(u8 part, s16 prcm_mod, u16 idlest_id,
-					 u8 idlest_shift)
-{
-	int ena = 0, i = 0;
-	u8 cm_idlest_reg;
-	u32 mask;
-
-	if (!idlest_id || (idlest_id > ARRAY_SIZE(omap2xxx_cm_idlest_offs)))
-		return -EINVAL;
-
-	cm_idlest_reg = omap2xxx_cm_idlest_offs[idlest_id - 1];
-
-	mask = 1 << idlest_shift;
-	ena = mask;
-
-	omap_test_timeout(((omap2_cm_read_mod_reg(prcm_mod, cm_idlest_reg) &
-			    mask) == ena), MAX_MODULE_READY_TIME, i);
-
-	return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
-}
-
-/* Clockdomain low-level functions */
-
-static void omap2xxx_clkdm_allow_idle(struct clockdomain *clkdm)
-{
-	omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs,
-				       clkdm->clktrctrl_mask);
-}
-
-static void omap2xxx_clkdm_deny_idle(struct clockdomain *clkdm)
-{
-	omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs,
-					clkdm->clktrctrl_mask);
-}
-
-static int omap2xxx_clkdm_clk_enable(struct clockdomain *clkdm)
-{
-	bool hwsup = false;
-
-	if (!clkdm->clktrctrl_mask)
-		return 0;
-
-	hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
-					      clkdm->clktrctrl_mask);
-	if (!hwsup && clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)
-		omap2xxx_clkdm_wakeup(clkdm);
-
-	return 0;
-}
-
-static int omap2xxx_clkdm_clk_disable(struct clockdomain *clkdm)
-{
-	bool hwsup = false;
-
-	if (!clkdm->clktrctrl_mask)
-		return 0;
-
-	hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
-					      clkdm->clktrctrl_mask);
-
-	if (!hwsup && clkdm->flags & CLKDM_CAN_FORCE_SLEEP)
-		omap2xxx_clkdm_sleep(clkdm);
-
-	return 0;
-}
-
-struct clkdm_ops omap2_clkdm_operations = {
-	.clkdm_add_wkdep	= omap2_clkdm_add_wkdep,
-	.clkdm_del_wkdep	= omap2_clkdm_del_wkdep,
-	.clkdm_read_wkdep	= omap2_clkdm_read_wkdep,
-	.clkdm_clear_all_wkdeps	= omap2_clkdm_clear_all_wkdeps,
-	.clkdm_sleep		= omap2xxx_clkdm_sleep,
-	.clkdm_wakeup		= omap2xxx_clkdm_wakeup,
-	.clkdm_allow_idle	= omap2xxx_clkdm_allow_idle,
-	.clkdm_deny_idle	= omap2xxx_clkdm_deny_idle,
-	.clkdm_clk_enable	= omap2xxx_clkdm_clk_enable,
-	.clkdm_clk_disable	= omap2xxx_clkdm_clk_disable,
-};
-
-int omap2xxx_cm_fclks_active(void)
-{
-	u32 f1, f2;
-
-	f1 = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
-	f2 = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
-
-	return (f1 | f2) ? 1 : 0;
-}
-
-int omap2xxx_cm_mpu_retention_allowed(void)
-{
-	u32 l;
-
-	/* Check for MMC, UART2, UART1, McSPI2, McSPI1 and DSS1. */
-	l = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
-	if (l & (OMAP2420_EN_MMC_MASK | OMAP24XX_EN_UART2_MASK |
-		 OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_MCSPI2_MASK |
-		 OMAP24XX_EN_MCSPI1_MASK | OMAP24XX_EN_DSS1_MASK))
-		return 0;
-	/* Check for UART3. */
-	l = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
-	if (l & OMAP24XX_EN_UART3_MASK)
-		return 0;
-
-	return 1;
-}
-
-u32 omap2xxx_cm_get_core_clk_src(void)
-{
-	u32 v;
-
-	v = omap2_cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
-	v &= OMAP24XX_CORE_CLK_SRC_MASK;
-
-	return v;
-}
-
-u32 omap2xxx_cm_get_core_pll_config(void)
-{
-	return omap2_cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
-}
-
-void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core, u32 mdm)
-{
-	u32 tmp;
-
-	omap2_cm_write_mod_reg(mpu, MPU_MOD, CM_CLKSEL);
-	omap2_cm_write_mod_reg(dsp, OMAP24XX_DSP_MOD, CM_CLKSEL);
-	omap2_cm_write_mod_reg(gfx, GFX_MOD, CM_CLKSEL);
-	tmp = omap2_cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) &
-		OMAP24XX_CLKSEL_DSS2_MASK;
-	omap2_cm_write_mod_reg(core | tmp, CORE_MOD, CM_CLKSEL1);
-	if (mdm)
-		omap2_cm_write_mod_reg(mdm, OMAP2430_MDM_MOD, CM_CLKSEL);
-}
-
-/*
- *
- */
-
-static const struct cm_ll_data omap2xxx_cm_ll_data = {
-	.split_idlest_reg	= &omap2xxx_cm_split_idlest_reg,
-	.wait_module_ready	= &omap2xxx_cm_wait_module_ready,
-};
-
-int __init omap2xxx_cm_init(const struct omap_prcm_init_data *data)
-{
-	return cm_register(&omap2xxx_cm_ll_data);
-}
-
-static void __exit omap2xxx_cm_exit(void)
-{
-	cm_unregister(&omap2xxx_cm_ll_data);
-}
-__exitcall(omap2xxx_cm_exit);
diff --git a/arch/arm/mach-omap2/cm2xxx.h b/arch/arm/mach-omap2/cm2xxx.h
deleted file mode 100644
index 7cbeff15ffb0..000000000000
--- a/arch/arm/mach-omap2/cm2xxx.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * OMAP2xxx Clock Management (CM) register definitions
- *
- * Copyright (C) 2007-2009, 2012 Texas Instruments, Inc.
- * Copyright (C) 2007-2010 Nokia Corporation
- * Paul Walmsley
- *
- * The CM hardware modules on the OMAP2/3 are quite similar to each
- * other.  The CM modules/instances on OMAP4 are quite different, so
- * they are handled in a separate file.
- */
-#ifndef __ARCH_ASM_MACH_OMAP2_CM2XXX_H
-#define __ARCH_ASM_MACH_OMAP2_CM2XXX_H
-
-#include "prcm-common.h"
-#include "cm2xxx_3xxx.h"
-
-#define OMAP2420_CM_REGADDR(module, reg)				\
-			OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE + (module) + (reg))
-#define OMAP2430_CM_REGADDR(module, reg)				\
-			OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE + (module) + (reg))
-
-/*
- * Module specific CM register offsets from CM_BASE + domain offset
- * Use cm_{read,write}_mod_reg() with these registers.
- * These register offsets generally appear in more than one PRCM submodule.
- */
-
-/* OMAP2-specific register offsets */
-
-#define OMAP24XX_CM_FCLKEN2				0x0004
-#define OMAP24XX_CM_ICLKEN4				0x001c
-#define OMAP24XX_CM_AUTOIDLE4				0x003c
-#define OMAP24XX_CM_IDLEST4				0x002c
-
-/* CM_IDLEST bit field values to indicate deasserted IdleReq */
-
-#define OMAP24XX_CM_IDLEST_VAL				0
-
-
-/* Clock management domain register get/set */
-
-#ifndef __ASSEMBLER__
-
-extern void omap2xxx_cm_set_dpll_disable_autoidle(void);
-extern void omap2xxx_cm_set_dpll_auto_low_power_stop(void);
-
-extern int omap2xxx_cm_fclks_active(void);
-extern int omap2xxx_cm_mpu_retention_allowed(void);
-extern u32 omap2xxx_cm_get_core_clk_src(void);
-extern u32 omap2xxx_cm_get_core_pll_config(void);
-extern void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core,
-					 u32 mdm);
-
-int __init omap2xxx_cm_init(const struct omap_prcm_init_data *data);
-
-#endif
-
-#endif
diff --git a/arch/arm/mach-omap2/cm_common.c b/arch/arm/mach-omap2/cm_common.c
index 87f2c2d2d754..fc16cd1fd2d5 100644
--- a/arch/arm/mach-omap2/cm_common.c
+++ b/arch/arm/mach-omap2/cm_common.c
@@ -15,7 +15,6 @@
 #include <linux/of.h>
 #include <linux/of_address.h>
 
-#include "cm2xxx.h"
 #include "cm3xxx.h"
 #include "cm33xx.h"
 #include "cm44xx.h"
@@ -230,14 +229,6 @@ static struct omap_prcm_init_data cm2_data __initdata = {
 };
 #endif
 
-#ifdef CONFIG_ARCH_OMAP2
-static struct omap_prcm_init_data omap2_prcm_data __initdata = {
-	.index = TI_CLKM_CM,
-	.init = omap2xxx_cm_init,
-	.flags = CM_NO_CLOCKS | CM_SINGLE_INSTANCE,
-};
-#endif
-
 #ifdef CONFIG_ARCH_OMAP3
 static struct omap_prcm_init_data omap3_cm_data __initdata = {
 	.index = TI_CLKM_CM,
@@ -269,9 +260,6 @@ static struct omap_prcm_init_data am4_prcm_data __initdata = {
 #endif
 
 static const struct of_device_id omap_cm_dt_match_table[] __initconst = {
-#ifdef CONFIG_ARCH_OMAP2
-	{ .compatible = "ti,omap2-prcm", .data = &omap2_prcm_data },
-#endif
 #ifdef CONFIG_ARCH_OMAP3
 	{ .compatible = "ti,omap3-cm", .data = &omap3_cm_data },
 #endif
diff --git a/arch/arm/mach-omap2/common-board-devices.h b/arch/arm/mach-omap2/common-board-devices.h
deleted file mode 100644
index 69694af71475..000000000000
--- a/arch/arm/mach-omap2/common-board-devices.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __OMAP_COMMON_BOARD_DEVICES__
-#define __OMAP_COMMON_BOARD_DEVICES__
-
-#include <linux/mfd/menelaus.h>
-
-void *n8x0_legacy_init(void);
-
-extern struct menelaus_platform_data n8x0_menelaus_platform_data;
-
-#endif /* __OMAP_COMMON_BOARD_DEVICES__ */
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 9d60799e9752..f8ed97044ade 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -102,8 +102,6 @@ static inline void omap5_realtime_timer_init(void)
 }
 #endif
 
-void omap2420_init_early(void);
-void omap2430_init_early(void);
 void omap3430_init_early(void);
 void omap3630_init_early(void);
 void am33xx_init_early(void);
@@ -130,14 +128,6 @@ static inline void omap_soc_device_init(void)
 }
 #endif
 
-#if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
-void omap2xxx_restart(enum reboot_mode mode, const char *cmd);
-#else
-static inline void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
-{
-}
-#endif
-
 #ifdef CONFIG_SOC_AM33XX
 void am33xx_restart(enum reboot_mode mode, const char *cmd);
 #else
@@ -183,8 +173,6 @@ static inline void omap_barrier_reserve_memblock(void)
 /* This gets called from mach-omap2/io.c, do not call this */
 void __init omap2_set_globals_tap(u32 class, void __iomem *tap);
 
-void __init omap242x_map_io(void);
-void __init omap243x_map_io(void);
 void __init omap3_map_io(void);
 void __init am33xx_map_io(void);
 void __init omap4_map_io(void);
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
index 7e7440533bf9..3ab1c6e6dde6 100644
--- a/arch/arm/mach-omap2/control.h
+++ b/arch/arm/mach-omap2/control.h
@@ -19,19 +19,11 @@
 #include "am33xx.h"
 
 #ifndef __ASSEMBLY__
-#define OMAP242X_CTRL_REGADDR(reg)					\
-		OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg))
-#define OMAP243X_CTRL_REGADDR(reg)					\
-		OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg))
 #define OMAP343X_CTRL_REGADDR(reg)					\
 		OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg))
 #define AM33XX_CTRL_REGADDR(reg)					\
 		AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg))
 #else
-#define OMAP242X_CTRL_REGADDR(reg)					\
-		OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg))
-#define OMAP243X_CTRL_REGADDR(reg)					\
-		OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg))
 #define OMAP343X_CTRL_REGADDR(reg)					\
 		OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg))
 #define AM33XX_CTRL_REGADDR(reg)					\
@@ -74,52 +66,6 @@
 #define OMAP2_CONTROL_RPUB_KEY_H_2	(OMAP2_CONTROL_GENERAL + 0x0098)
 #define OMAP2_CONTROL_RPUB_KEY_H_3	(OMAP2_CONTROL_GENERAL + 0x009c)
 
-/* 242x-only CONTROL_GENERAL register offsets */
-#define OMAP242X_CONTROL_DEVCONF	OMAP2_CONTROL_DEVCONF0 /* match TRM */
-#define OMAP242X_CONTROL_OCM_RAM_PERM	(OMAP2_CONTROL_GENERAL + 0x0068)
-
-/* 243x-only CONTROL_GENERAL register offsets */
-/* CONTROL_IVA2_BOOT{ADDR,MOD} are at the same place on 343x - noted below */
-#define OMAP243X_CONTROL_DEVCONF1	(OMAP2_CONTROL_GENERAL + 0x0078)
-#define OMAP243X_CONTROL_CSIRXFE	(OMAP2_CONTROL_GENERAL + 0x007c)
-#define OMAP243X_CONTROL_IVA2_BOOTADDR	(OMAP2_CONTROL_GENERAL + 0x0190)
-#define OMAP243X_CONTROL_IVA2_BOOTMOD	(OMAP2_CONTROL_GENERAL + 0x0194)
-#define OMAP243X_CONTROL_IVA2_GEMCFG	(OMAP2_CONTROL_GENERAL + 0x0198)
-#define OMAP243X_CONTROL_PBIAS_LITE	(OMAP2_CONTROL_GENERAL + 0x0230)
-
-/* 24xx-only CONTROL_GENERAL register offsets */
-#define OMAP24XX_CONTROL_DEBOBS		(OMAP2_CONTROL_GENERAL + 0x0000)
-#define OMAP24XX_CONTROL_EMU_SUPPORT	(OMAP2_CONTROL_GENERAL + 0x0008)
-#define OMAP24XX_CONTROL_SEC_TEST	(OMAP2_CONTROL_GENERAL + 0x0044)
-#define OMAP24XX_CONTROL_PSA_CTRL	(OMAP2_CONTROL_GENERAL + 0x0048)
-#define OMAP24XX_CONTROL_PSA_CMD	(OMAP2_CONTROL_GENERAL + 0x004c)
-#define OMAP24XX_CONTROL_PSA_VALUE	(OMAP2_CONTROL_GENERAL + 0x0050)
-#define OMAP24XX_CONTROL_SEC_EMU	(OMAP2_CONTROL_GENERAL + 0x0060)
-#define OMAP24XX_CONTROL_SEC_TAP	(OMAP2_CONTROL_GENERAL + 0x0064)
-#define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD	(OMAP2_CONTROL_GENERAL + 0x006c)
-#define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD	(OMAP2_CONTROL_GENERAL + 0x0070)
-#define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD	(OMAP2_CONTROL_GENERAL + 0x0074)
-#define OMAP24XX_CONTROL_SEC_STATUS		(OMAP2_CONTROL_GENERAL + 0x0080)
-#define OMAP24XX_CONTROL_SEC_ERR_STATUS		(OMAP2_CONTROL_GENERAL + 0x0084)
-#define OMAP24XX_CONTROL_STATUS			(OMAP2_CONTROL_GENERAL + 0x0088)
-#define OMAP24XX_CONTROL_GENERAL_PURPOSE_STATUS	(OMAP2_CONTROL_GENERAL + 0x008c)
-#define OMAP24XX_CONTROL_RAND_KEY_0	(OMAP2_CONTROL_GENERAL + 0x00a0)
-#define OMAP24XX_CONTROL_RAND_KEY_1	(OMAP2_CONTROL_GENERAL + 0x00a4)
-#define OMAP24XX_CONTROL_RAND_KEY_2	(OMAP2_CONTROL_GENERAL + 0x00a8)
-#define OMAP24XX_CONTROL_RAND_KEY_3	(OMAP2_CONTROL_GENERAL + 0x00ac)
-#define OMAP24XX_CONTROL_CUST_KEY_0	(OMAP2_CONTROL_GENERAL + 0x00b0)
-#define OMAP24XX_CONTROL_CUST_KEY_1	(OMAP2_CONTROL_GENERAL + 0x00b4)
-#define OMAP24XX_CONTROL_TEST_KEY_0	(OMAP2_CONTROL_GENERAL + 0x00c0)
-#define OMAP24XX_CONTROL_TEST_KEY_1	(OMAP2_CONTROL_GENERAL + 0x00c4)
-#define OMAP24XX_CONTROL_TEST_KEY_2	(OMAP2_CONTROL_GENERAL + 0x00c8)
-#define OMAP24XX_CONTROL_TEST_KEY_3	(OMAP2_CONTROL_GENERAL + 0x00cc)
-#define OMAP24XX_CONTROL_TEST_KEY_4	(OMAP2_CONTROL_GENERAL + 0x00d0)
-#define OMAP24XX_CONTROL_TEST_KEY_5	(OMAP2_CONTROL_GENERAL + 0x00d4)
-#define OMAP24XX_CONTROL_TEST_KEY_6	(OMAP2_CONTROL_GENERAL + 0x00d8)
-#define OMAP24XX_CONTROL_TEST_KEY_7	(OMAP2_CONTROL_GENERAL + 0x00dc)
-#define OMAP24XX_CONTROL_TEST_KEY_8	(OMAP2_CONTROL_GENERAL + 0x00e0)
-#define OMAP24XX_CONTROL_TEST_KEY_9	(OMAP2_CONTROL_GENERAL + 0x00e4)
-
 #define OMAP343X_CONTROL_PADCONF_SYSNIRQ (OMAP2_CONTROL_INTERFACE + 0x01b0)
 
 /* 34xx-only CONTROL_GENERAL register offsets */
@@ -311,14 +257,12 @@
  */
 /* CONTROL_DEVCONF0 bits */
 #define OMAP2_MMCSDIO1ADPCLKISEL	(1 << 24) /* MMC1 loop back clock */
-#define OMAP24XX_USBSTANDBYCTRL		(1 << 15)
 #define OMAP2_MCBSP2_CLKS_MASK		(1 << 6)
 #define OMAP2_MCBSP1_FSR_MASK		(1 << 4)
 #define OMAP2_MCBSP1_CLKR_MASK		(1 << 3)
 #define OMAP2_MCBSP1_CLKS_MASK		(1 << 2)
 
 /* CONTROL_DEVCONF1 bits */
-#define OMAP243X_MMC1_ACTIVE_OVERWRITE	(1 << 31)
 #define OMAP2_MMCSDIO2ADPCLKISEL	(1 << 6) /* MMC2 loop back clock */
 #define OMAP2_MCBSP5_CLKS_MASK		(1 << 4) /* > 242x */
 #define OMAP2_MCBSP4_CLKS_MASK		(1 << 2) /* > 242x */
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index dbec3bb9fbf4..addc14898bd5 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -124,9 +124,7 @@ static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask)
 
 static enum omapdss_version __init omap_display_get_version(void)
 {
-	if (cpu_is_omap24xx())
-		return OMAPDSS_VER_OMAP24xx;
-	else if (cpu_is_omap3630())
+	if (cpu_is_omap3630())
 		return OMAPDSS_VER_OMAP3630;
 	else if (cpu_is_omap34xx()) {
 		if (soc_is_am35xx()) {
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c
index 830cd4e7eb44..3a6b7b4620ca 100644
--- a/arch/arm/mach-omap2/dma.c
+++ b/arch/arm/mach-omap2/dma.c
@@ -82,39 +82,6 @@ static unsigned configure_dma_errata(void)
 {
 	unsigned errata = 0;
 
-	/*
-	 * Errata applicable for OMAP2430ES1.0 and all omap2420
-	 *
-	 * I.
-	 * Erratum ID: Not Available
-	 * Inter Frame DMA buffering issue DMA will wrongly
-	 * buffer elements if packing and bursting is enabled. This might
-	 * result in data gets stalled in FIFO at the end of the block.
-	 * Workaround: DMA channels must have BUFFERING_DISABLED bit set to
-	 * guarantee no data will stay in the DMA FIFO in case inter frame
-	 * buffering occurs
-	 *
-	 * II.
-	 * Erratum ID: Not Available
-	 * DMA may hang when several channels are used in parallel
-	 * In the following configuration, DMA channel hanging can occur:
-	 * a. Channel i, hardware synchronized, is enabled
-	 * b. Another channel (Channel x), software synchronized, is enabled.
-	 * c. Channel i is disabled before end of transfer
-	 * d. Channel i is reenabled.
-	 * e. Steps 1 to 4 are repeated a certain number of times.
-	 * f. A third channel (Channel y), software synchronized, is enabled.
-	 * Channel x and Channel y may hang immediately after step 'f'.
-	 * Workaround:
-	 * For any channel used - make sure NextLCH_ID is set to the value j.
-	 */
-	if (cpu_is_omap2420() || (cpu_is_omap2430() &&
-				(omap_type() == OMAP2430_REV_ES1_0))) {
-
-		SET_DMA_ERRATA(DMA_ERRATA_IFRAME_BUFFERING);
-		SET_DMA_ERRATA(DMA_ERRATA_PARALLEL_CHANNELS);
-	}
-
 	/*
 	 * Erratum ID: i378: OMAP2+: sDMA Channel is not disabled
 	 * after a transaction error.
@@ -162,16 +129,6 @@ static unsigned configure_dma_errata(void)
 	return errata;
 }
 
-static const struct dma_slave_map omap24xx_sdma_dt_map[] = {
-	/* external DMA requests when tusb6010 is used */
-	{ "musb-hdrc.1.auto", "dmareq0", SDMA_FILTER_PARAM(2) },
-	{ "musb-hdrc.1.auto", "dmareq1", SDMA_FILTER_PARAM(3) },
-	{ "musb-hdrc.1.auto", "dmareq2", SDMA_FILTER_PARAM(14) }, /* OMAP2420 only */
-	{ "musb-hdrc.1.auto", "dmareq3", SDMA_FILTER_PARAM(15) }, /* OMAP2420 only */
-	{ "musb-hdrc.1.auto", "dmareq4", SDMA_FILTER_PARAM(16) }, /* OMAP2420 only */
-	{ "musb-hdrc.1.auto", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */
-};
-
 static struct omap_dma_dev_attr dma_attr = {
 	.dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
 		    IS_CSSA_32 | IS_CDSA_32,
@@ -188,15 +145,7 @@ struct omap_system_dma_plat_info dma_plat_info = {
 static int __init omap2_system_dma_init(void)
 {
 	dma_plat_info.errata = configure_dma_errata();
-
-	if (soc_is_omap24xx()) {
-		/* DMA slave map for drivers not yet converted to DT */
-		dma_plat_info.slave_map = omap24xx_sdma_dt_map;
-		dma_plat_info.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map);
-	}
-
-	if (!soc_is_omap242x())
-		dma_attr.dev_caps |= IS_RW_PRIORITY;
+	dma_attr.dev_caps |= IS_RW_PRIORITY;
 
 	if (soc_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP))
 		dma_attr.dev_caps |= HS_CHANNELS_RESERVED;
diff --git a/arch/arm/mach-omap2/fb.c b/arch/arm/mach-omap2/fb.c
index 0f8c8efe3ae8..9a425c36f996 100644
--- a/arch/arm/mach-omap2/fb.c
+++ b/arch/arm/mach-omap2/fb.c
@@ -27,15 +27,6 @@
  * The first memory resource is the register region for VRFB,
  * the rest are VRFB virtual memory areas for each VRFB context.
  */
-
-static const struct resource omap2_vrfb_resources[] = {
-	DEFINE_RES_MEM_NAMED(0x68008000u, 0x40, "vrfb-regs"),
-	DEFINE_RES_MEM_NAMED(0x70000000u, 0x4000000, "vrfb-area-0"),
-	DEFINE_RES_MEM_NAMED(0x74000000u, 0x4000000, "vrfb-area-1"),
-	DEFINE_RES_MEM_NAMED(0x78000000u, 0x4000000, "vrfb-area-2"),
-	DEFINE_RES_MEM_NAMED(0x7c000000u, 0x4000000, "vrfb-area-3"),
-};
-
 static const struct resource omap3_vrfb_resources[] = {
 	DEFINE_RES_MEM_NAMED(0x6C000180u, 0xc0, "vrfb-regs"),
 	DEFINE_RES_MEM_NAMED(0x70000000u, 0x4000000, "vrfb-area-0"),
@@ -58,10 +49,7 @@ int __init omap_init_vrfb(void)
 	const struct resource *res;
 	unsigned int num_res;
 
-	if (cpu_is_omap24xx()) {
-		res = omap2_vrfb_resources;
-		num_res = ARRAY_SIZE(omap2_vrfb_resources);
-	} else if (cpu_is_omap34xx()) {
+	if (cpu_is_omap34xx()) {
 		res = omap3_vrfb_resources;
 		num_res = ARRAY_SIZE(omap3_vrfb_resources);
 	} else {
diff --git a/arch/arm/mach-omap2/gpmc.h b/arch/arm/mach-omap2/gpmc.h
deleted file mode 100644
index e060f1b5c27d..000000000000
--- a/arch/arm/mach-omap2/gpmc.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * General-Purpose Memory Controller for OMAP2
- *
- * Copyright (C) 2005-2006 Nokia Corporation
- *
- * Do not include this file in any new code, this will get removed
- * once omap3 boots in device tree only mode.
- */
-#include <linux/omap-gpmc.h>
diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c
index 3b4b9514f4fa..d956c70f8899 100644
--- a/arch/arm/mach-omap2/i2c.c
+++ b/arch/arm/mach-omap2/i2c.c
@@ -39,7 +39,7 @@ int omap_i2c_reset(struct omap_hwmod *oh)
 	u16 i2c_con;
 	int c = 0;
 
-	if (soc_is_omap24xx() || soc_is_omap34xx() || soc_is_am35xx())
+	if (soc_is_omap34xx() || soc_is_am35xx())
 		i2c_con = OMAP2_I2C_CON_OFFSET;
 	else
 		i2c_con = OMAP4_I2C_CON_OFFSET;
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index cf2bfb447ee2..3e731dd21311 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -55,9 +55,7 @@ int omap_type(void)
 	if (val < OMAP2_DEVICETYPE_MASK)
 		return val;
 
-	if (soc_is_omap24xx()) {
-		val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
-	} else if (soc_is_ti81xx()) {
+	if (soc_is_ti81xx()) {
 		val = omap_ctrl_readl(TI81XX_CONTROL_STATUS);
 	} else if (soc_is_am33xx() || soc_is_am43xx()) {
 		val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
@@ -99,22 +97,6 @@ EXPORT_SYMBOL(omap_type);
 
 #define read_tap_reg(reg)	readl_relaxed(tap_base  + (reg))
 
-struct omap_id {
-	u16	hawkeye;	/* Silicon type (Hawkeye id) */
-	u8	dev;		/* Device type from production_id reg */
-	u32	type;		/* Combined type id copied to omap_revision */
-};
-
-/* Register values to detect the OMAP version */
-static struct omap_id omap_ids[] __initdata = {
-	{ .hawkeye = 0xb5d9, .dev = 0x0, .type = 0x24200024 },
-	{ .hawkeye = 0xb5d9, .dev = 0x1, .type = 0x24201024 },
-	{ .hawkeye = 0xb5d9, .dev = 0x2, .type = 0x24202024 },
-	{ .hawkeye = 0xb5d9, .dev = 0x4, .type = 0x24220024 },
-	{ .hawkeye = 0xb5d9, .dev = 0x8, .type = 0x24230024 },
-	{ .hawkeye = 0xb68a, .dev = 0x0, .type = 0x24300024 },
-};
-
 static void __iomem *tap_base;
 static u16 tap_prod_id;
 
@@ -145,62 +127,6 @@ static int __init omap_feed_randpool(void)
 }
 omap_device_initcall(omap_feed_randpool);
 
-void __init omap2xxx_check_revision(void)
-{
-	int i, j;
-	u32 idcode, prod_id;
-	u16 hawkeye;
-	u8  dev_type, rev;
-	struct omap_die_id odi;
-
-	idcode = read_tap_reg(OMAP_TAP_IDCODE);
-	prod_id = read_tap_reg(tap_prod_id);
-	hawkeye = (idcode >> 12) & 0xffff;
-	rev = (idcode >> 28) & 0x0f;
-	dev_type = (prod_id >> 16) & 0x0f;
-	omap_get_die_id(&odi);
-
-	pr_debug("OMAP_TAP_IDCODE 0x%08x REV %i HAWKEYE 0x%04x MANF %03x\n",
-		 idcode, rev, hawkeye, (idcode >> 1) & 0x7ff);
-	pr_debug("OMAP_TAP_DIE_ID_0: 0x%08x\n", odi.id_0);
-	pr_debug("OMAP_TAP_DIE_ID_1: 0x%08x DEV_REV: %i\n",
-		 odi.id_1, (odi.id_1 >> 28) & 0xf);
-	pr_debug("OMAP_TAP_DIE_ID_2: 0x%08x\n", odi.id_2);
-	pr_debug("OMAP_TAP_DIE_ID_3: 0x%08x\n", odi.id_3);
-	pr_debug("OMAP_TAP_PROD_ID_0: 0x%08x DEV_TYPE: %i\n",
-		 prod_id, dev_type);
-
-	/* Check hawkeye ids */
-	for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
-		if (hawkeye == omap_ids[i].hawkeye)
-			break;
-	}
-
-	if (i == ARRAY_SIZE(omap_ids)) {
-		printk(KERN_ERR "Unknown OMAP CPU id\n");
-		return;
-	}
-
-	for (j = i; j < ARRAY_SIZE(omap_ids); j++) {
-		if (dev_type == omap_ids[j].dev)
-			break;
-	}
-
-	if (j == ARRAY_SIZE(omap_ids)) {
-		pr_err("Unknown OMAP device type. Handling it as OMAP%04x\n",
-		       omap_ids[i].type >> 16);
-		j = i;
-	}
-
-	sprintf(soc_name, "OMAP%04x", omap_rev() >> 16);
-	sprintf(soc_rev, "ES%x", (omap_rev() >> 12) & 0xf);
-
-	pr_info("%s", soc_name);
-	if ((omap_rev() >> 8) & 0x0f)
-		pr_cont("%s", soc_rev);
-	pr_cont("\n");
-}
-
 #define OMAP3_SHOW_FEATURE(feat)		\
 	if (omap3_has_ ##feat())		\
 		n += scnprintf(buf + n, sizeof(buf) - n, #feat " ");
@@ -750,9 +676,7 @@ static const char * const omap_types[] = {
 
 static const char * __init omap_get_family(void)
 {
-	if (soc_is_omap24xx())
-		return kasprintf(GFP_KERNEL, "OMAP2");
-	else if (soc_is_omap34xx())
+	if (soc_is_omap34xx())
 		return kasprintf(GFP_KERNEL, "OMAP3");
 	else if (soc_is_omap44xx())
 		return kasprintf(GFP_KERNEL, "OMAP4");
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 14ec3f78000b..1c945be5e7cc 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -35,7 +35,6 @@
 #include "sdrc.h"
 #include "control.h"
 #include "sram.h"
-#include "cm2xxx.h"
 #include "cm3xxx.h"
 #include "cm33xx.h"
 #include "cm44xx.h"
@@ -43,11 +42,9 @@
 #include "cm.h"
 #include "prcm_mpu44xx.h"
 #include "prminst44xx.h"
-#include "prm2xxx.h"
 #include "prm3xxx.h"
 #include "prm33xx.h"
 #include "prm44xx.h"
-#include "opp2xxx.h"
 #include "omap-secure.h"
 
 /*
@@ -61,76 +58,6 @@ static int (*omap_clk_soc_init)(void);
  * default mapping provided here.
  */
 
-#if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
-static struct map_desc omap24xx_io_desc[] __initdata = {
-	{
-		.virtual	= L3_24XX_VIRT,
-		.pfn		= __phys_to_pfn(L3_24XX_PHYS),
-		.length		= L3_24XX_SIZE,
-		.type		= MT_DEVICE
-	},
-	{
-		.virtual	= L4_24XX_VIRT,
-		.pfn		= __phys_to_pfn(L4_24XX_PHYS),
-		.length		= L4_24XX_SIZE,
-		.type		= MT_DEVICE
-	},
-};
-
-#ifdef CONFIG_SOC_OMAP2420
-static struct map_desc omap242x_io_desc[] __initdata = {
-	{
-		.virtual	= DSP_MEM_2420_VIRT,
-		.pfn		= __phys_to_pfn(DSP_MEM_2420_PHYS),
-		.length		= DSP_MEM_2420_SIZE,
-		.type		= MT_DEVICE
-	},
-	{
-		.virtual	= DSP_IPI_2420_VIRT,
-		.pfn		= __phys_to_pfn(DSP_IPI_2420_PHYS),
-		.length		= DSP_IPI_2420_SIZE,
-		.type		= MT_DEVICE
-	},
-	{
-		.virtual	= DSP_MMU_2420_VIRT,
-		.pfn		= __phys_to_pfn(DSP_MMU_2420_PHYS),
-		.length		= DSP_MMU_2420_SIZE,
-		.type		= MT_DEVICE
-	},
-};
-
-#endif
-
-#ifdef CONFIG_SOC_OMAP2430
-static struct map_desc omap243x_io_desc[] __initdata = {
-	{
-		.virtual	= L4_WK_243X_VIRT,
-		.pfn		= __phys_to_pfn(L4_WK_243X_PHYS),
-		.length		= L4_WK_243X_SIZE,
-		.type		= MT_DEVICE
-	},
-	{
-		.virtual	= OMAP243X_GPMC_VIRT,
-		.pfn		= __phys_to_pfn(OMAP243X_GPMC_PHYS),
-		.length		= OMAP243X_GPMC_SIZE,
-		.type		= MT_DEVICE
-	},
-	{
-		.virtual	= OMAP243X_SDRC_VIRT,
-		.pfn		= __phys_to_pfn(OMAP243X_SDRC_PHYS),
-		.length		= OMAP243X_SDRC_SIZE,
-		.type		= MT_DEVICE
-	},
-	{
-		.virtual	= OMAP243X_SMS_VIRT,
-		.pfn		= __phys_to_pfn(OMAP243X_SMS_PHYS),
-		.length		= OMAP243X_SMS_SIZE,
-		.type		= MT_DEVICE
-	},
-};
-#endif
-#endif
-
 #ifdef	CONFIG_ARCH_OMAP3
 static struct map_desc omap34xx_io_desc[] __initdata = {
 	{
@@ -305,22 +232,6 @@ static struct map_desc dra7xx_io_desc[] __initdata = {
 };
 #endif
 
-#ifdef CONFIG_SOC_OMAP2420
-void __init omap242x_map_io(void)
-{
-	iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
-	iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc));
-}
-#endif
-
-#ifdef CONFIG_SOC_OMAP2430
-void __init omap243x_map_io(void)
-{
-	iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
-	iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc));
-}
-#endif
-
 #ifdef CONFIG_ARCH_OMAP3
 void __init omap3_map_io(void)
 {
@@ -365,6 +276,8 @@ void __init dra7xx_map_io(void)
 	omap_barriers_init();
 }
 #endif
+
+#ifdef CONFIG_ARCH_OMAP3
 /*
  * omap2_init_reprogram_sdrc - reprogram SDRC timing parameters
  *
@@ -399,7 +312,6 @@ static int __init _omap2_init_reprogram_sdrc(void)
 	return v;
 }
 
-#ifdef CONFIG_OMAP_HWMOD
 static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data)
 {
 	return omap_hwmod_set_postsetup_state(oh, *(u8 *)data);
@@ -412,55 +324,11 @@ static void __init __maybe_unused omap_hwmod_init_postsetup(void)
 	/* Set the default postsetup state for all hwmods */
 	omap_hwmod_for_each(_set_hwmod_postsetup_state, &postsetup_state);
 }
-#else
-static inline void omap_hwmod_init_postsetup(void)
-{
-}
-#endif
-
-#ifdef CONFIG_SOC_OMAP2420
-void __init omap2420_init_early(void)
-{
-	omap2_set_globals_tap(OMAP242X_CLASS, OMAP2_L4_IO_ADDRESS(0x48014000));
-	omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP2420_SDRC_BASE),
-			       OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE));
-	omap2_control_base_init();
-	omap2xxx_check_revision();
-	omap2_prcm_base_init();
-	omap2xxx_voltagedomains_init();
-	omap242x_powerdomains_init();
-	omap242x_clockdomains_init();
-	omap2420_hwmod_init();
-	omap_hwmod_init_postsetup();
-	omap_clk_soc_init = omap2420_dt_clk_init;
-	rate_table = omap2420_rate_table;
-}
-#endif
-
-#ifdef CONFIG_SOC_OMAP2430
-void __init omap2430_init_early(void)
-{
-	omap2_set_globals_tap(OMAP243X_CLASS, OMAP2_L4_IO_ADDRESS(0x4900a000));
-	omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP243X_SDRC_BASE),
-			       OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE));
-	omap2_control_base_init();
-	omap2xxx_check_revision();
-	omap2_prcm_base_init();
-	omap2xxx_voltagedomains_init();
-	omap243x_powerdomains_init();
-	omap243x_clockdomains_init();
-	omap2430_hwmod_init();
-	omap_hwmod_init_postsetup();
-	omap_clk_soc_init = omap2430_dt_clk_init;
-	rate_table = omap2430_rate_table;
-}
-#endif
 
 /*
  * Currently only board-omap3beagle.c should call this because of the
  * same machine_id for 34xx and 36xx beagle.. Will get fixed with DT.
  */
-#ifdef CONFIG_ARCH_OMAP3
 static void __init omap3_init_early(void)
 {
 	omap2_set_globals_tap(OMAP343X_CLASS, OMAP2_L4_IO_ADDRESS(0x4830A000));
@@ -661,16 +529,18 @@ void __init dra7xx_init_late(void)
 #endif
 
 
+#ifdef CONFIG_ARCH_OMAP3
 void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
 				      struct omap_sdrc_params *sdrc_cs1)
 {
 	omap_sram_init();
 
-	if (cpu_is_omap24xx() || omap3_has_sdrc()) {
+	if (omap3_has_sdrc()) {
 		omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
 		_omap2_init_reprogram_sdrc();
 	}
 }
+#endif
 
 int __init omap_clk_init(void)
 {
diff --git a/arch/arm/mach-omap2/iomap.h b/arch/arm/mach-omap2/iomap.h
index 6191d244438a..403444bb6924 100644
--- a/arch/arm/mach-omap2/iomap.h
+++ b/arch/arm/mach-omap2/iomap.h
@@ -48,52 +48,6 @@
 #define OMAP2_EMU_IO_OFFSET		0xaa800000	/* Emulation */
 #define OMAP2_EMU_IO_ADDRESS(pa)	IOMEM((pa) + OMAP2_EMU_IO_OFFSET)
 
-/*
- * ----------------------------------------------------------------------------
- * Omap2 specific IO mapping
- * ----------------------------------------------------------------------------
- */
-
-/* We map both L3 and L4 on OMAP2 */
-#define L3_24XX_PHYS	L3_24XX_BASE	/* 0x68000000 --> 0xf8000000*/
-#define L3_24XX_VIRT	(L3_24XX_PHYS + OMAP2_L3_IO_OFFSET)
-#define L3_24XX_SIZE	SZ_1M		/* 44kB of 128MB used, want 1MB sect */
-#define L4_24XX_PHYS	L4_24XX_BASE	/* 0x48000000 --> 0xfa000000 */
-#define L4_24XX_VIRT	(L4_24XX_PHYS + OMAP2_L4_IO_OFFSET)
-#define L4_24XX_SIZE	SZ_1M		/* 1MB of 128MB used, want 1MB sect */
-
-#define L4_WK_243X_PHYS		L4_WK_243X_BASE	/* 0x49000000 --> 0xfb000000 */
-#define L4_WK_243X_VIRT		(L4_WK_243X_PHYS + OMAP2_L4_IO_OFFSET)
-#define L4_WK_243X_SIZE		SZ_1M
-#define OMAP243X_GPMC_PHYS	OMAP243X_GPMC_BASE
-#define OMAP243X_GPMC_VIRT	(OMAP243X_GPMC_PHYS + OMAP2_L3_IO_OFFSET)
-						/* 0x6e000000 --> 0xfe000000 */
-#define OMAP243X_GPMC_SIZE	SZ_1M
-#define OMAP243X_SDRC_PHYS	OMAP243X_SDRC_BASE
-						/* 0x6D000000 --> 0xfd000000 */
-#define OMAP243X_SDRC_VIRT	(OMAP243X_SDRC_PHYS + OMAP2_L3_IO_OFFSET)
-#define OMAP243X_SDRC_SIZE	SZ_1M
-#define OMAP243X_SMS_PHYS	OMAP243X_SMS_BASE
-						/* 0x6c000000 --> 0xfc000000 */
-#define OMAP243X_SMS_VIRT	(OMAP243X_SMS_PHYS + OMAP2_L3_IO_OFFSET)
-#define OMAP243X_SMS_SIZE	SZ_1M
-
-/* 2420 IVA */
-#define DSP_MEM_2420_PHYS	OMAP2420_DSP_MEM_BASE
-						/* 0x58000000 --> 0xfc100000 */
-#define DSP_MEM_2420_VIRT	0xfc100000
-#define DSP_MEM_2420_SIZE	0x28000
-#define DSP_IPI_2420_PHYS	OMAP2420_DSP_IPI_BASE
-						/* 0x59000000 --> 0xfc128000 */
-#define DSP_IPI_2420_VIRT	0xfc128000
-#define DSP_IPI_2420_SIZE	SZ_4K
-#define DSP_MMU_2420_PHYS	OMAP2420_DSP_MMU_BASE
-						/* 0x5a000000 --> 0xfc129000 */
-#define DSP_MMU_2420_VIRT	0xfc129000
-#define DSP_MMU_2420_SIZE	SZ_4K
-
-/* 2430 IVA2.1 - currently unmapped */
-
 /*
  * ----------------------------------------------------------------------------
  * Omap3 specific IO mapping
diff --git a/arch/arm/mach-omap2/l3_2xxx.h b/arch/arm/mach-omap2/l3_2xxx.h
deleted file mode 100644
index 6297c62428ac..000000000000
--- a/arch/arm/mach-omap2/l3_2xxx.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * arch/arm/plat-omap/include/plat/l3_2xxx.h - L3 firewall definitions
- *
- * Copyright (C) 2010 Texas Instruments Incorporated - https://www.ti.com/
- *	Sumit Semwal
- */
-#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L3_2XXX_H
-#define __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L3_2XXX_H
-
-/* L3 CONNIDs */
-/* Display Sub system (DSS) */
-#define OMAP2_L3_CORE_FW_CONNID_DSS			8
-
-#endif
diff --git a/arch/arm/mach-omap2/l4_2xxx.h b/arch/arm/mach-omap2/l4_2xxx.h
deleted file mode 100644
index 418e1072d730..000000000000
--- a/arch/arm/mach-omap2/l4_2xxx.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * arch/arm/plat-omap/include/plat/l4_2xxx.h - L4 firewall definitions
- *
- * Copyright (C) 2010 Texas Instruments Incorporated - https://www.ti.com/
- *	Sumit Semwal
- */
-#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L4_2XXX_H
-#define __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L4_2XXX_H
-
-/* L4 CORE */
-/* Display Sub system (DSS) */
-#define OMAP2420_L4_CORE_FW_DSS_CORE_REGION			28
-#define OMAP2420_L4_CORE_FW_DSS_DISPC_REGION			29
-#define OMAP2420_L4_CORE_FW_DSS_RFBI_REGION			30
-#define OMAP2420_L4_CORE_FW_DSS_VENC_REGION			31
-#define OMAP2420_L4_CORE_FW_DSS_TA_REGION			32
-
-#endif
diff --git a/arch/arm/mach-omap2/mmc.h b/arch/arm/mach-omap2/mmc.h
deleted file mode 100644
index b5533e93cb63..000000000000
--- a/arch/arm/mach-omap2/mmc.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-
-#define OMAP24XX_NR_MMC		2
-#define OMAP2420_MMC_SIZE	OMAP1_MMC_SIZE
-#define OMAP2_MMC1_BASE		0x4809c000
-
-#define OMAP4_MMC_REG_OFFSET	0x100
-
-struct omap_hwmod;
-
-#ifdef CONFIG_SOC_OMAP2420
-int omap_msdi_reset(struct omap_hwmod *oh);
-#else
-static inline int omap_msdi_reset(struct omap_hwmod *oh)
-{
-	return 0;
-}
-#endif
diff --git a/arch/arm/mach-omap2/msdi.c b/arch/arm/mach-omap2/msdi.c
deleted file mode 100644
index 552b2fa4e4f1..000000000000
--- a/arch/arm/mach-omap2/msdi.c
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * MSDI IP block reset
- *
- * Copyright (C) 2012 Texas Instruments, Inc.
- * Paul Walmsley
- *
- * XXX What about pad muxing?
- */
-
-#include <linux/kernel.h>
-#include <linux/err.h>
-
-#include "prm.h"
-#include "common.h"
-#include "control.h"
-#include "omap_hwmod.h"
-#include "omap_device.h"
-#include "mmc.h"
-
-/*
- * MSDI_CON_OFFSET: offset in bytes of the MSDI IP block's CON register
- *     from the IP block's base address
- */
-#define MSDI_CON_OFFSET				0x0c
-
-/* Register bitfields in the CON register */
-#define MSDI_CON_POW_MASK			BIT(11)
-#define MSDI_CON_CLKD_MASK			(0x3f << 0)
-#define MSDI_CON_CLKD_SHIFT			0
-
-/* MSDI_TARGET_RESET_CLKD: clock divisor to use throughout the reset */
-#define MSDI_TARGET_RESET_CLKD		0x3ff
-
-/**
- * omap_msdi_reset - reset the MSDI IP block
- * @oh: struct omap_hwmod *
- *
- * The MSDI IP block on OMAP2420 has to have both the POW and CLKD
- * fields set inside its CON register for a reset to complete
- * successfully.  This is not documented in the TRM.  For CLKD, we use
- * the value that results in the lowest possible clock rate, to attempt
- * to avoid disturbing any cards.
- */
-int omap_msdi_reset(struct omap_hwmod *oh)
-{
-	u16 v = 0;
-	int c = 0;
-
-	/* Write to the SOFTRESET bit */
-	omap_hwmod_softreset(oh);
-
-	/* Enable the MSDI core and internal clock */
-	v |= MSDI_CON_POW_MASK;
-	v |= MSDI_TARGET_RESET_CLKD << MSDI_CON_CLKD_SHIFT;
-	omap_hwmod_write(v, oh, MSDI_CON_OFFSET);
-
-	/* Poll on RESETDONE bit */
-	omap_test_timeout((omap_hwmod_read(oh, oh->class->sysc->syss_offs)
-			   & SYSS_RESETDONE_MASK),
-			  MAX_MODULE_SOFTRESET_WAIT, c);
-
-	if (c == MAX_MODULE_SOFTRESET_WAIT)
-		pr_warn("%s: %s: softreset failed (waited %d usec)\n",
-			__func__, oh->name, MAX_MODULE_SOFTRESET_WAIT);
-	else
-		pr_debug("%s: %s: softreset in %d usec\n", __func__,
-			 oh->name, c);
-
-	/* Disable the MSDI internal clock */
-	v &= ~MSDI_CON_CLKD_MASK;
-	omap_hwmod_write(v, oh, MSDI_CON_OFFSET);
-
-	return 0;
-}
diff --git a/arch/arm/mach-omap2/omap2-restart.c b/arch/arm/mach-omap2/omap2-restart.c
deleted file mode 100644
index fdcc75c97d70..000000000000
--- a/arch/arm/mach-omap2/omap2-restart.c
+++ /dev/null
@@ -1,62 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * omap2-restart.c - code common to all OMAP2xxx machines.
- *
- * Copyright (C) 2012 Texas Instruments
- * Paul Walmsley
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-
-#include "soc.h"
-#include "common.h"
-#include "prm.h"
-
-/*
- * reset_virt_prcm_set_ck, reset_sys_ck: pointers to the virt_prcm_set
- * clock and the sys_ck.  Used during the reset process
- */
-static struct clk *reset_virt_prcm_set_ck, *reset_sys_ck;
-
-/* Reboot handling */
-
-/**
- * omap2xxx_restart - Set DPLL to bypass mode for reboot to work
- *
- * Set the DPLL to bypass so that reboot completes successfully.  No
- * return value.
- */
-void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
-{
-	u32 rate;
-
-	rate = clk_get_rate(reset_sys_ck);
-	clk_set_rate(reset_virt_prcm_set_ck, rate);
-
-	/* XXX Should save the cmd argument for use after the reboot */
-
-	omap_prm_reset_system();
-}
-
-/**
- * omap2xxx_common_look_up_clks_for_reset - look up clocks needed for restart
- *
- * Some clocks need to be looked up in advance for the SoC restart
- * operation to work - see omap2xxx_restart().  Returns -EINVAL upon
- * error or 0 upon success.
- */
-static int __init omap2xxx_common_look_up_clks_for_reset(void)
-{
-	reset_virt_prcm_set_ck = clk_get(NULL, "virt_prcm_set");
-	if (IS_ERR(reset_virt_prcm_set_ck))
-		return -EINVAL;
-
-	reset_sys_ck = clk_get(NULL, "sys_ck");
-	if (IS_ERR(reset_sys_ck))
-		return -EINVAL;
-
-	return 0;
-}
-omap_postcore_initcall(omap2xxx_common_look_up_clks_for_reset);
diff --git a/arch/arm/mach-omap2/omap24xx.h b/arch/arm/mach-omap2/omap24xx.h
deleted file mode 100644
index d9ecc0578292..000000000000
--- a/arch/arm/mach-omap2/omap24xx.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * This file contains the processor specific definitions
- * of the TI OMAP24XX.
- *
- * Copyright (C) 2007 Texas Instruments.
- * Copyright (C) 2007 Nokia Corporation.
- */
-
-#ifndef __ASM_ARCH_OMAP2_H
-#define __ASM_ARCH_OMAP2_H
-
-/*
- * Please place only base defines here and put the rest in device
- * specific headers. Note also that some of these defines are needed
- * for omap1 to compile without adding ifdefs.
- */
-
-#define L4_24XX_BASE		0x48000000
-#define L4_WK_243X_BASE		0x49000000
-#define L3_24XX_BASE		0x68000000
-
-/* interrupt controller */
-#define OMAP24XX_IC_BASE	(L4_24XX_BASE + 0xfe000)
-#define OMAP24XX_IVA_INTC_BASE	0x40000000
-
-#define OMAP242X_CTRL_BASE	L4_24XX_BASE
-#define OMAP2420_32KSYNCT_BASE	(L4_24XX_BASE + 0x4000)
-#define OMAP2420_PRCM_BASE	(L4_24XX_BASE + 0x8000)
-#define OMAP2420_CM_BASE	(L4_24XX_BASE + 0x8000)
-#define OMAP2420_PRM_BASE	OMAP2420_CM_BASE
-#define OMAP2420_SDRC_BASE	(L3_24XX_BASE + 0x9000)
-#define OMAP2420_SMS_BASE	0x68008000
-#define OMAP2420_GPMC_BASE	0x6800a000
-
-#define OMAP2430_32KSYNCT_BASE	(L4_WK_243X_BASE + 0x20000)
-#define OMAP2430_PRCM_BASE	(L4_WK_243X_BASE + 0x6000)
-#define OMAP2430_CM_BASE	(L4_WK_243X_BASE + 0x6000)
-#define OMAP2430_PRM_BASE	OMAP2430_CM_BASE
-
-#define OMAP243X_SMS_BASE	0x6C000000
-#define OMAP243X_SDRC_BASE	0x6D000000
-#define OMAP243X_GPMC_BASE	0x6E000000
-#define OMAP243X_SCM_BASE	(L4_WK_243X_BASE + 0x2000)
-#define OMAP243X_CTRL_BASE	OMAP243X_SCM_BASE
-#define OMAP243X_HS_BASE	(L4_24XX_BASE + 0x000ac000)
-
-/* DSP SS */
-#define OMAP2420_DSP_BASE	0x58000000
-#define OMAP2420_DSP_MEM_BASE	(OMAP2420_DSP_BASE + 0x0)
-#define OMAP2420_DSP_IPI_BASE	(OMAP2420_DSP_BASE + 0x1000000)
-#define OMAP2420_DSP_MMU_BASE	(OMAP2420_DSP_BASE + 0x2000000)
-
-#define OMAP243X_DSP_BASE	0x5C000000
-#define OMAP243X_DSP_MEM_BASE	(OMAP243X_DSP_BASE + 0x0)
-#define OMAP243X_DSP_MMU_BASE	(OMAP243X_DSP_BASE + 0x1000000)
-
-/* Mailbox */
-#define OMAP24XX_MAILBOX_BASE	(L4_24XX_BASE + 0x94000)
-
-/* Camera */
-#define OMAP24XX_CAMERA_BASE	(L4_24XX_BASE + 0x52000)
-
-/* Security */
-#define OMAP24XX_SEC_BASE	(L4_24XX_BASE + 0xA0000)
-#define OMAP24XX_SEC_RNG_BASE	(OMAP24XX_SEC_BASE + 0x0000)
-#define OMAP24XX_SEC_DES_BASE	(OMAP24XX_SEC_BASE + 0x2000)
-#define OMAP24XX_SEC_SHA1MD5_BASE (OMAP24XX_SEC_BASE + 0x4000)
-#define OMAP24XX_SEC_AES_BASE	(OMAP24XX_SEC_BASE + 0x6000)
-#define OMAP24XX_SEC_PKA_BASE	(OMAP24XX_SEC_BASE + 0x8000)
-
-#endif /* __ASM_ARCH_OMAP2_H */
-
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 03cd523dff87..c918399ea735 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -153,9 +153,7 @@
 #include "common.h"
 #include "clockdomain.h"
 #include "hdq1w.h"
-#include "mmc.h"
 #include "powerdomain.h"
-#include "cm2xxx.h"
 #include "cm3xxx.h"
 #include "cm33xx.h"
 #include "prm.h"
@@ -3469,10 +3467,6 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
 	return -ENOMEM;
 }
 
-static const struct omap_hwmod_reset omap24xx_reset_quirks[] = {
-	{ .match = "msdi", .len = 4, .reset = omap_msdi_reset, },
-};
-
 static const struct omap_hwmod_reset omap_reset_quirks[] = {
 	{ .match = "dss_core", .len = 8, .reset = omap_dss_reset, },
 	{ .match = "hdq1w", .len = 5, .reset = omap_hdq1w_reset, },
@@ -3503,11 +3497,6 @@ static void
 omap_hwmod_init_reset_quirks(struct device *dev, struct omap_hwmod *oh,
 			     const struct ti_sysc_module_data *data)
 {
-	if (soc_is_omap24xx())
-		omap_hwmod_init_reset_quirk(dev, oh, data,
-					    omap24xx_reset_quirks,
-					    ARRAY_SIZE(omap24xx_reset_quirks));
-
 	omap_hwmod_init_reset_quirk(dev, oh, data, omap_reset_quirks,
 				    ARRAY_SIZE(omap_reset_quirks));
 }
@@ -3914,12 +3903,7 @@ int omap_hwmod_set_postsetup_state(struct omap_hwmod *oh, u8 state)
  */
 void __init omap_hwmod_init(void)
 {
-	if (cpu_is_omap24xx()) {
-		soc_ops.wait_target_ready = _omap2xxx_3xxx_wait_target_ready;
-		soc_ops.assert_hardreset = _omap2_assert_hardreset;
-		soc_ops.deassert_hardreset = _omap2_deassert_hardreset;
-		soc_ops.is_hardreset_asserted = _omap2_is_hardreset_asserted;
-	} else if (cpu_is_omap34xx()) {
+	if (cpu_is_omap34xx()) {
 		soc_ops.wait_target_ready = _omap2xxx_3xxx_wait_target_ready;
 		soc_ops.assert_hardreset = _omap2_assert_hardreset;
 		soc_ops.deassert_hardreset = _omap2_deassert_hardreset;
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
index dcab7a01c10e..b60cd09c1997 100644
--- a/arch/arm/mach-omap2/omap_hwmod.h
+++ b/arch/arm/mach-omap2/omap_hwmod.h
@@ -663,8 +663,6 @@ omap_hwmod_for_each_by_class(const char *classname,
  * Chip variant-specific hwmod init routines - XXX should be converted
  * to use initcalls once the initial boot ordering is straightened out
  */
-extern int omap2420_hwmod_init(void);
-extern int omap2430_hwmod_init(void);
 extern int omap3xxx_hwmod_init(void);
 extern int dm814x_hwmod_init(void);
 extern int dm816x_hwmod_init(void);
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
deleted file mode 100644
index dbd9dc9f0962..000000000000
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ /dev/null
@@ -1,402 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
- *
- * Copyright (C) 2009-2011 Nokia Corporation
- * Copyright (C) 2012 Texas Instruments, Inc.
- * Paul Walmsley
- *
- * XXX handle crossbar/shared link difference for L3?
- * XXX these should be marked initdata for multi-OMAP kernels
- */
-
-#include <linux/platform_data/i2c-omap.h>
-
-#include "omap_hwmod.h"
-#include "l3_2xxx.h"
-#include "l4_2xxx.h"
-
-#include "omap_hwmod_common_data.h"
-
-#include "cm-regbits-24xx.h"
-#include "prm-regbits-24xx.h"
-#include "i2c.h"
-#include "mmc.h"
-#include "wd_timer.h"
-
-/*
- * OMAP2420 hardware module integration data
- *
- * All of the data in this section should be autogeneratable from the
- * TI hardware database or other technical documentation.  Data that
- * is driver-specific or driver-kernel integration-specific belongs
- * elsewhere.
- */
-
-/*
- * IP blocks
- */
-
-/* IVA1 (IVA1) */
-static struct omap_hwmod_class iva1_hwmod_class = {
-	.name		= "iva1",
-};
-
-static struct omap_hwmod_rst_info omap2420_iva_resets[] = {
-	{ .name = "iva", .rst_shift = 8 },
-};
-
-static struct omap_hwmod omap2420_iva_hwmod = {
-	.name		= "iva",
-	.class		= &iva1_hwmod_class,
-	.clkdm_name	= "iva1_clkdm",
-	.rst_lines	= omap2420_iva_resets,
-	.rst_lines_cnt	= ARRAY_SIZE(omap2420_iva_resets),
-	.main_clk	= "iva1_ifck",
-};
-
-/* DSP */
-static struct omap_hwmod_class dsp_hwmod_class = {
-	.name		= "dsp",
-};
-
-static struct omap_hwmod_rst_info omap2420_dsp_resets[] = {
-	{ .name = "logic", .rst_shift = 0 },
-	{ .name = "mmu", .rst_shift = 1 },
-};
-
-static struct omap_hwmod omap2420_dsp_hwmod = {
-	.name		= "dsp",
-	.class		= &dsp_hwmod_class,
-	.clkdm_name	= "dsp_clkdm",
-	.rst_lines	= omap2420_dsp_resets,
-	.rst_lines_cnt	= ARRAY_SIZE(omap2420_dsp_resets),
-	.main_clk	= "dsp_fck",
-};
-
-/* I2C common */
-static struct omap_hwmod_class_sysconfig i2c_sysc = {
-	.rev_offs	= 0x00,
-	.sysc_offs	= 0x20,
-	.syss_offs	= 0x10,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class i2c_class = {
-	.name		= "i2c",
-	.sysc		= &i2c_sysc,
-	.reset		= &omap_i2c_reset,
-};
-
-/* I2C1 */
-static struct omap_hwmod omap2420_i2c1_hwmod = {
-	.name		= "i2c1",
-	.main_clk	= "i2c1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
-		},
-	},
-	.class		= &i2c_class,
-	/*
-	 * From mach-omap2/pm24xx.c: "Putting MPU into the WFI state
-	 * while a transfer is active seems to cause the I2C block to
-	 * timeout. Why? Good question."
-	 */
-	.flags		= (HWMOD_16BIT_REG | HWMOD_BLOCK_WFI),
-};
-
-/* I2C2 */
-static struct omap_hwmod omap2420_i2c2_hwmod = {
-	.name		= "i2c2",
-	.main_clk	= "i2c2_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
-		},
-	},
-	.class		= &i2c_class,
-	.flags		= HWMOD_16BIT_REG,
-};
-
-/* mailbox */
-static struct omap_hwmod omap2420_mailbox_hwmod = {
-	.name		= "mailbox",
-	.class		= &omap2xxx_mailbox_hwmod_class,
-	.main_clk	= "mailboxes_ick",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
-		},
-	},
-};
-
-/*
- * 'mcbsp' class
- * multi channel buffered serial port controller
- */
-
-static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
-	.name = "mcbsp",
-};
-
-static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
-	{ .role = "pad_fck", .clk = "mcbsp_clks" },
-	{ .role = "prcm_fck", .clk = "func_96m_ck" },
-};
-
-/* mcbsp1 */
-static struct omap_hwmod omap2420_mcbsp1_hwmod = {
-	.name		= "mcbsp1",
-	.class		= &omap2420_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-/* mcbsp2 */
-static struct omap_hwmod omap2420_mcbsp2_hwmod = {
-	.name		= "mcbsp2",
-	.class		= &omap2420_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp2_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-static struct omap_hwmod_class_sysconfig omap2420_msdi_sysc = {
-	.rev_offs	= 0x3c,
-	.sysc_offs	= 0x64,
-	.syss_offs	= 0x68,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2420_msdi_hwmod_class = {
-	.name	= "msdi",
-	.sysc	= &omap2420_msdi_sysc,
-	.reset	= &omap_msdi_reset,
-};
-
-/* msdi1 */
-static struct omap_hwmod omap2420_msdi1_hwmod = {
-	.name		= "msdi1",
-	.class		= &omap2420_msdi_hwmod_class,
-	.main_clk	= "mmc_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP2420_ST_MMC_SHIFT,
-		},
-	},
-	.flags		= HWMOD_16BIT_REG,
-};
-
-/* HDQ1W/1-wire */
-static struct omap_hwmod omap2420_hdq1w_hwmod = {
-	.name		= "hdq1w",
-	.main_clk	= "hdq_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
-		},
-	},
-	.class		= &omap2_hdq1w_class,
-};
-
-/*
- * interfaces
- */
-
-/* L4 CORE -> I2C1 interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_i2c1_hwmod,
-	.clk		= "i2c1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> I2C2 interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_i2c2_hwmod,
-	.clk		= "i2c2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* IVA <- L3 interface */
-static struct omap_hwmod_ocp_if omap2420_l3__iva = {
-	.master		= &omap2xxx_l3_main_hwmod,
-	.slave		= &omap2420_iva_hwmod,
-	.clk		= "core_l3_ck",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* DSP <- L3 interface */
-static struct omap_hwmod_ocp_if omap2420_l3__dsp = {
-	.master		= &omap2xxx_l3_main_hwmod,
-	.slave		= &omap2420_dsp_hwmod,
-	.clk		= "dsp_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_wd_timer2_hwmod,
-	.clk		= "mpu_wdt_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio1 */
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio1_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio2 */
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio2_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio3 */
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio3_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio4 */
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio4_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mailbox */
-static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_mailbox_hwmod,
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_mcbsp1_hwmod,
-	.clk		= "mcbsp1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp2 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_mcbsp2_hwmod,
-	.clk		= "mcbsp2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> msdi1 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__msdi1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_msdi1_hwmod,
-	.clk		= "mmc_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> hdq1w interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__hdq1w = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2420_hdq1w_hwmod,
-	.clk		= "hdq_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-	.flags		= OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
-};
-
-static struct omap_hwmod_ocp_if omap2420_l3__gpmc = {
-	.master		= &omap2xxx_l3_main_hwmod,
-	.slave		= &omap2xxx_gpmc_hwmod,
-	.clk		= "core_l3_ck",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = {
-	&omap2xxx_l3_main__l4_core,
-	&omap2xxx_mpu__l3_main,
-	&omap2xxx_dss__l3,
-	&omap2xxx_l4_core__mcspi1,
-	&omap2xxx_l4_core__mcspi2,
-	&omap2xxx_l4_core__l4_wkup,
-	&omap2_l4_core__uart1,
-	&omap2_l4_core__uart2,
-	&omap2_l4_core__uart3,
-	&omap2420_l4_core__i2c1,
-	&omap2420_l4_core__i2c2,
-	&omap2420_l3__iva,
-	&omap2420_l3__dsp,
-	&omap2xxx_l4_core__timer3,
-	&omap2xxx_l4_core__timer4,
-	&omap2xxx_l4_core__timer5,
-	&omap2xxx_l4_core__timer6,
-	&omap2xxx_l4_core__timer7,
-	&omap2xxx_l4_core__timer8,
-	&omap2xxx_l4_core__timer9,
-	&omap2xxx_l4_core__timer10,
-	&omap2xxx_l4_core__timer11,
-	&omap2xxx_l4_core__timer12,
-	&omap2420_l4_wkup__wd_timer2,
-	&omap2xxx_l4_core__dss,
-	&omap2xxx_l4_core__dss_dispc,
-	&omap2xxx_l4_core__dss_rfbi,
-	&omap2xxx_l4_core__dss_venc,
-	&omap2420_l4_wkup__gpio1,
-	&omap2420_l4_wkup__gpio2,
-	&omap2420_l4_wkup__gpio3,
-	&omap2420_l4_wkup__gpio4,
-	&omap2420_l4_core__mailbox,
-	&omap2420_l4_core__mcbsp1,
-	&omap2420_l4_core__mcbsp2,
-	&omap2420_l4_core__msdi1,
-	&omap2xxx_l4_core__rng,
-	&omap2xxx_l4_core__sham,
-	&omap2xxx_l4_core__aes,
-	&omap2420_l4_core__hdq1w,
-	&omap2420_l3__gpmc,
-	NULL,
-};
-
-int __init omap2420_hwmod_init(void)
-{
-	omap_hwmod_init();
-	return omap_hwmod_register_links(omap2420_hwmod_ocp_ifs);
-}
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
deleted file mode 100644
index c93200801b34..000000000000
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ /dev/null
@@ -1,606 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * omap_hwmod_2430_data.c - hardware modules present on the OMAP2430 chips
- *
- * Copyright (C) 2009-2011 Nokia Corporation
- * Copyright (C) 2012 Texas Instruments, Inc.
- * Paul Walmsley
- *
- * XXX handle crossbar/shared link difference for L3?
- * XXX these should be marked initdata for multi-OMAP kernels
- */
-
-#include <linux/platform_data/i2c-omap.h>
-#include <linux/platform_data/hsmmc-omap.h>
-
-#include "omap_hwmod.h"
-#include "l3_2xxx.h"
-
-#include "soc.h"
-#include "omap_hwmod_common_data.h"
-#include "prm-regbits-24xx.h"
-#include "cm-regbits-24xx.h"
-#include "i2c.h"
-#include "wd_timer.h"
-
-/*
- * OMAP2430 hardware module integration data
- *
- * All of the data in this section should be autogeneratable from the
- * TI hardware database or other technical documentation.  Data that
- * is driver-specific or driver-kernel integration-specific belongs
- * elsewhere.
- */
-
-/*
- * IP blocks
- */
-
-/* IVA2 (IVA2) */
-static struct omap_hwmod_rst_info omap2430_iva_resets[] = {
-	{ .name = "logic", .rst_shift = 0 },
-	{ .name = "mmu", .rst_shift = 1 },
-};
-
-static struct omap_hwmod omap2430_iva_hwmod = {
-	.name		= "iva",
-	.class		= &iva_hwmod_class,
-	.clkdm_name	= "dsp_clkdm",
-	.rst_lines	= omap2430_iva_resets,
-	.rst_lines_cnt	= ARRAY_SIZE(omap2430_iva_resets),
-	.main_clk	= "dsp_fck",
-};
-
-/* I2C common */
-static struct omap_hwmod_class_sysconfig i2c_sysc = {
-	.rev_offs	= 0x00,
-	.sysc_offs	= 0x20,
-	.syss_offs	= 0x10,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-			   SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class i2c_class = {
-	.name		= "i2c",
-	.sysc		= &i2c_sysc,
-	.reset		= &omap_i2c_reset,
-};
-
-/* I2C1 */
-static struct omap_hwmod omap2430_i2c1_hwmod = {
-	.name		= "i2c1",
-	.flags		= HWMOD_16BIT_REG,
-	.main_clk	= "i2chs1_fck",
-	.prcm		= {
-		.omap2 = {
-			/*
-			 * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
-			 * I2CHS IP's do not follow the usual pattern.
-			 * prcm_reg_id alone cannot be used to program
-			 * the iclk and fclk. Needs to be handled using
-			 * additional flags when clk handling is moved
-			 * to hwmod framework.
-			 */
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
-		},
-	},
-	.class		= &i2c_class,
-};
-
-/* I2C2 */
-static struct omap_hwmod omap2430_i2c2_hwmod = {
-	.name		= "i2c2",
-	.flags		= HWMOD_16BIT_REG,
-	.main_clk	= "i2chs2_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
-		},
-	},
-	.class		= &i2c_class,
-};
-
-/* gpio5 */
-static struct omap_hwmod omap2430_gpio5_hwmod = {
-	.name		= "gpio5",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.main_clk	= "gpio5_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_gpio_hwmod_class,
-};
-
-/* mailbox */
-static struct omap_hwmod omap2430_mailbox_hwmod = {
-	.name		= "mailbox",
-	.class		= &omap2xxx_mailbox_hwmod_class,
-	.main_clk	= "mailboxes_ick",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
-		},
-	},
-};
-
-/* mcspi3 */
-static struct omap_hwmod omap2430_mcspi3_hwmod = {
-	.name		= "mcspi3",
-	.main_clk	= "mcspi3_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_mcspi_class,
-};
-
-/* usbhsotg */
-static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
-	.rev_offs	= 0x0400,
-	.sysc_offs	= 0x0404,
-	.syss_offs	= 0x0408,
-	.sysc_flags	= (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
-			  SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-			  SYSC_HAS_AUTOIDLE),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-			  MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class usbotg_class = {
-	.name = "usbotg",
-	.sysc = &omap2430_usbhsotg_sysc,
-};
-
-/* usb_otg_hs */
-static struct omap_hwmod omap2430_usbhsotg_hwmod = {
-	.name		= "usb_otg_hs",
-	.main_clk	= "usbhs_ick",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
-		},
-	},
-	.class		= &usbotg_class,
-	/*
-	 * Erratum ID: i479  idle_req / idle_ack mechanism potentially
-	 * broken when autoidle is enabled
-	 * workaround is to disable the autoidle bit at module level.
-	 */
-	.flags		= HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
-				| HWMOD_SWSUP_MSTANDBY,
-};
-
-/*
- * 'mcbsp' class
- * multi channel buffered serial port controller
- */
-
-static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
-	.rev_offs	= 0x007C,
-	.sysc_offs	= 0x008C,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET),
-	.sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
-	.name = "mcbsp",
-	.sysc = &omap2430_mcbsp_sysc,
-};
-
-static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
-	{ .role = "pad_fck", .clk = "mcbsp_clks" },
-	{ .role = "prcm_fck", .clk = "func_96m_ck" },
-};
-
-/* mcbsp1 */
-static struct omap_hwmod omap2430_mcbsp1_hwmod = {
-	.name		= "mcbsp1",
-	.class		= &omap2430_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-/* mcbsp2 */
-static struct omap_hwmod omap2430_mcbsp2_hwmod = {
-	.name		= "mcbsp2",
-	.class		= &omap2430_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp2_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-/* mcbsp3 */
-static struct omap_hwmod omap2430_mcbsp3_hwmod = {
-	.name		= "mcbsp3",
-	.class		= &omap2430_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp3_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-/* mcbsp4 */
-static struct omap_hwmod omap2430_mcbsp4_hwmod = {
-	.name		= "mcbsp4",
-	.class		= &omap2430_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp4_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-/* mcbsp5 */
-static struct omap_hwmod omap2430_mcbsp5_hwmod = {
-	.name		= "mcbsp5",
-	.class		= &omap2430_mcbsp_hwmod_class,
-	.main_clk	= "mcbsp5_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
-		},
-	},
-	.opt_clks	= mcbsp_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
-};
-
-/* MMC/SD/SDIO common */
-static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
-	.rev_offs	= 0x1fc,
-	.sysc_offs	= 0x10,
-	.syss_offs	= 0x14,
-	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-			   SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-	.sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2430_mmc_class = {
-	.name = "mmc",
-	.sysc = &omap2430_mmc_sysc,
-};
-
-/* MMC/SD/SDIO1 */
-static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
-	{ .role = "dbck", .clk = "mmchsdb1_fck" },
-};
-
-static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
-	.flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
-};
-
-static struct omap_hwmod omap2430_mmc1_hwmod = {
-	.name		= "mmc1",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.opt_clks	= omap2430_mmc1_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(omap2430_mmc1_opt_clks),
-	.main_clk	= "mmchs1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
-		},
-	},
-	.dev_attr	= &mmc1_dev_attr,
-	.class		= &omap2430_mmc_class,
-};
-
-/* MMC/SD/SDIO2 */
-static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
-	{ .role = "dbck", .clk = "mmchsdb2_fck" },
-};
-
-static struct omap_hwmod omap2430_mmc2_hwmod = {
-	.name		= "mmc2",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.opt_clks	= omap2430_mmc2_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(omap2430_mmc2_opt_clks),
-	.main_clk	= "mmchs2_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
-		},
-	},
-	.class		= &omap2430_mmc_class,
-};
-
-/* HDQ1W/1-wire */
-static struct omap_hwmod omap2430_hdq1w_hwmod = {
-	.name		= "hdq1w",
-	.main_clk	= "hdq_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
-		},
-	},
-	.class		= &omap2_hdq1w_class,
-};
-
-/*
- * interfaces
- */
-
-/* L3 -> L4_CORE interface */
-/* l3_core -> usbhsotg  interface */
-static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
-	.master		= &omap2430_usbhsotg_hwmod,
-	.slave		= &omap2xxx_l3_main_hwmod,
-	.clk		= "core_l3_ck",
-	.user		= OCP_USER_MPU,
-};
-
-/* L4 CORE -> I2C1 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_i2c1_hwmod,
-	.clk		= "i2c1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> I2C2 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_i2c2_hwmod,
-	.clk		= "i2c2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/*  l4_core ->usbhsotg  interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_usbhsotg_hwmod,
-	.clk		= "usb_l4_ick",
-	.user		= OCP_USER_MPU,
-};
-
-/* L4 CORE -> MMC1 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mmc1_hwmod,
-	.clk		= "mmchs1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> MMC2 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mmc2_hwmod,
-	.clk		= "mmchs2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> mcspi3 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mcspi3_hwmod,
-	.clk		= "mcspi3_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* IVA2 <- L3 interface */
-static struct omap_hwmod_ocp_if omap2430_l3__iva = {
-	.master		= &omap2xxx_l3_main_hwmod,
-	.slave		= &omap2430_iva_hwmod,
-	.clk		= "core_l3_ck",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__wd_timer2 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_wd_timer2_hwmod,
-	.clk		= "mpu_wdt_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio1 */
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio1_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio2 */
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio2_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio3 */
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio3_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio4 */
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
-	.master		= &omap2xxx_l4_wkup_hwmod,
-	.slave		= &omap2xxx_gpio4_hwmod,
-	.clk		= "gpios_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> gpio5 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_gpio5_hwmod,
-	.clk		= "gpio5_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mailbox */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mailbox_hwmod,
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mcbsp1_hwmod,
-	.clk		= "mcbsp1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp2 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mcbsp2_hwmod,
-	.clk		= "mcbsp2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp3 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mcbsp3_hwmod,
-	.clk		= "mcbsp3_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp4 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mcbsp4_hwmod,
-	.clk		= "mcbsp4_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> mcbsp5 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_mcbsp5_hwmod,
-	.clk		= "mcbsp5_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> hdq1w */
-static struct omap_hwmod_ocp_if omap2430_l4_core__hdq1w = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2430_hdq1w_hwmod,
-	.clk		= "hdq_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-	.flags		= OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
-};
-
-static struct omap_hwmod_ocp_if omap2430_l3__gpmc = {
-	.master		= &omap2xxx_l3_main_hwmod,
-	.slave		= &omap2xxx_gpmc_hwmod,
-	.clk		= "core_l3_ck",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
-	&omap2xxx_l3_main__l4_core,
-	&omap2xxx_mpu__l3_main,
-	&omap2xxx_dss__l3,
-	&omap2430_usbhsotg__l3,
-	&omap2430_l4_core__i2c1,
-	&omap2430_l4_core__i2c2,
-	&omap2xxx_l4_core__l4_wkup,
-	&omap2_l4_core__uart1,
-	&omap2_l4_core__uart2,
-	&omap2_l4_core__uart3,
-	&omap2430_l4_core__usbhsotg,
-	&omap2430_l4_core__mmc1,
-	&omap2430_l4_core__mmc2,
-	&omap2xxx_l4_core__mcspi1,
-	&omap2xxx_l4_core__mcspi2,
-	&omap2430_l4_core__mcspi3,
-	&omap2430_l3__iva,
-	&omap2xxx_l4_core__timer3,
-	&omap2xxx_l4_core__timer4,
-	&omap2xxx_l4_core__timer5,
-	&omap2xxx_l4_core__timer6,
-	&omap2xxx_l4_core__timer7,
-	&omap2xxx_l4_core__timer8,
-	&omap2xxx_l4_core__timer9,
-	&omap2xxx_l4_core__timer10,
-	&omap2xxx_l4_core__timer11,
-	&omap2xxx_l4_core__timer12,
-	&omap2430_l4_wkup__wd_timer2,
-	&omap2xxx_l4_core__dss,
-	&omap2xxx_l4_core__dss_dispc,
-	&omap2xxx_l4_core__dss_rfbi,
-	&omap2xxx_l4_core__dss_venc,
-	&omap2430_l4_wkup__gpio1,
-	&omap2430_l4_wkup__gpio2,
-	&omap2430_l4_wkup__gpio3,
-	&omap2430_l4_wkup__gpio4,
-	&omap2430_l4_core__gpio5,
-	&omap2430_l4_core__mailbox,
-	&omap2430_l4_core__mcbsp1,
-	&omap2430_l4_core__mcbsp2,
-	&omap2430_l4_core__mcbsp3,
-	&omap2430_l4_core__mcbsp4,
-	&omap2430_l4_core__mcbsp5,
-	&omap2430_l4_core__hdq1w,
-	&omap2xxx_l4_core__rng,
-	&omap2xxx_l4_core__sham,
-	&omap2xxx_l4_core__aes,
-	&omap2430_l3__gpmc,
-	NULL,
-};
-
-int __init omap2430_hwmod_init(void)
-{
-	omap_hwmod_init();
-	return omap_hwmod_register_links(omap2430_hwmod_ocp_ifs);
-}
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
deleted file mode 100644
index 761d34914ed9..000000000000
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
+++ /dev/null
@@ -1,256 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * omap_hwmod_2xxx_interconnect_data.c - common interconnect data for OMAP2xxx
- *
- * Copyright (C) 2009-2011 Nokia Corporation
- * Paul Walmsley
- *
- * XXX handle crossbar/shared link difference for L3?
- * XXX these should be marked initdata for multi-OMAP kernels
- */
-#include <linux/sizes.h>
-
-#include "omap_hwmod.h"
-#include "l3_2xxx.h"
-#include "l4_2xxx.h"
-
-#include "omap_hwmod_common_data.h"
-
-/*
- * Common interconnect data
- */
-
-/* L3 -> L4_CORE interface */
-struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core = {
-	.master	= &omap2xxx_l3_main_hwmod,
-	.slave	= &omap2xxx_l4_core_hwmod,
-	.user	= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* MPU -> L3 interface */
-struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main = {
-	.master = &omap2xxx_mpu_hwmod,
-	.slave	= &omap2xxx_l3_main_hwmod,
-	.user	= OCP_USER_MPU,
-};
-
-/* DSS -> l3 */
-struct omap_hwmod_ocp_if omap2xxx_dss__l3 = {
-	.master		= &omap2xxx_dss_core_hwmod,
-	.slave		= &omap2xxx_l3_main_hwmod,
-	.fw = {
-		.omap2 = {
-			.l3_perm_bit  = OMAP2_L3_CORE_FW_CONNID_DSS,
-			.flags	= OMAP_FIREWALL_L3,
-		},
-	},
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4_CORE -> L4_WKUP interface */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup = {
-	.master	= &omap2xxx_l4_core_hwmod,
-	.slave	= &omap2xxx_l4_wkup_hwmod,
-	.user	= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> UART1 interface */
-struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_uart1_hwmod,
-	.clk		= "uart1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> UART2 interface */
-struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_uart2_hwmod,
-	.clk		= "uart2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 PER -> UART3 interface */
-struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_uart3_hwmod,
-	.clk		= "uart3_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> mcspi1 interface */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_mcspi1_hwmod,
-	.clk		= "mcspi1_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> mcspi2 interface */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_mcspi2_hwmod,
-	.clk		= "mcspi2_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer3 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer3_hwmod,
-	.clk		= "gpt3_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer4 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer4_hwmod,
-	.clk		= "gpt4_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer5 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer5_hwmod,
-	.clk		= "gpt5_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer6 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer6_hwmod,
-	.clk		= "gpt6_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer7 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer7_hwmod,
-	.clk		= "gpt7_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer8 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer8_hwmod,
-	.clk		= "gpt8_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer9 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer9_hwmod,
-	.clk		= "gpt9_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer10 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer10_hwmod,
-	.clk		= "gpt10_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer11 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer11_hwmod,
-	.clk		= "gpt11_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> timer12 */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12 = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_timer12_hwmod,
-	.clk		= "gpt12_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> dss */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__dss = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_dss_core_hwmod,
-	.clk		= "dss_ick",
-	.fw = {
-		.omap2 = {
-			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
-			.flags	= OMAP_FIREWALL_L4,
-		},
-	},
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> dss_dispc */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_dss_dispc_hwmod,
-	.clk		= "dss_ick",
-	.fw = {
-		.omap2 = {
-			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
-			.flags	= OMAP_FIREWALL_L4,
-		},
-	},
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> dss_rfbi */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_dss_rfbi_hwmod,
-	.clk		= "dss_ick",
-	.fw = {
-		.omap2 = {
-			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
-			.flags	= OMAP_FIREWALL_L4,
-		},
-	},
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> dss_venc */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_dss_venc_hwmod,
-	.clk		= "dss_ick",
-	.fw = {
-		.omap2 = {
-			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
-			.flags	= OMAP_FIREWALL_L4,
-		},
-	},
-	.flags		= OCPIF_SWSUP_IDLE,
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> rng */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__rng = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_rng_hwmod,
-	.clk		= "rng_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> sham interface */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__sham = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_sham_hwmod,
-	.clk		= "sha_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> aes interface */
-struct omap_hwmod_ocp_if omap2xxx_l4_core__aes = {
-	.master		= &omap2xxx_l4_core_hwmod,
-	.slave		= &omap2xxx_aes_hwmod,
-	.clk		= "aes_ick",
-	.user		= OCP_USER_MPU | OCP_USER_SDMA,
-};
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
deleted file mode 100644
index 4982e04ead53..000000000000
--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
+++ /dev/null
@@ -1,668 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * omap_hwmod_2xxx_ipblock_data.c - common IP block data for OMAP2xxx
- *
- * Copyright (C) 2011 Nokia Corporation
- * Paul Walmsley
- */
-
-#include <linux/types.h>
-
-#include "omap_hwmod.h"
-#include "omap_hwmod_common_data.h"
-#include "cm-regbits-24xx.h"
-#include "prm-regbits-24xx.h"
-#include "wd_timer.h"
-
-/*
- * 'dispc' class
- * display controller
- */
-
-static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
-	.rev_offs	= 0x0000,
-	.sysc_offs	= 0x0010,
-	.syss_offs	= 0x0014,
-	.sysc_flags	= (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
-			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-			   MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2_dispc_hwmod_class = {
-	.name	= "dispc",
-	.sysc	= &omap2_dispc_sysc,
-};
-
-/* OMAP2xxx Timer Common */
-static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
-	.rev_offs	= 0x0000,
-	.sysc_offs	= 0x0010,
-	.syss_offs	= 0x0014,
-	.sysc_flags	= (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
-			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-			   SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2xxx_timer_hwmod_class = {
-	.name	= "timer",
-	.sysc	= &omap2xxx_timer_sysc,
-};
-
-/*
- * 'wd_timer' class
- * 32-bit watchdog upward counter that generates a pulse on the reset pin on
- * overflow condition
- */
-
-static struct omap_hwmod_class_sysconfig omap2xxx_wd_timer_sysc = {
-	.rev_offs	= 0x0000,
-	.sysc_offs	= 0x0010,
-	.syss_offs	= 0x0014,
-	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET |
-			   SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2xxx_wd_timer_hwmod_class = {
-	.name		= "wd_timer",
-	.sysc		= &omap2xxx_wd_timer_sysc,
-	.pre_shutdown	= &omap2_wd_timer_disable,
-	.reset		= &omap2_wd_timer_reset,
-};
-
-/*
- * 'gpio' class
- * general purpose io module
- */
-static struct omap_hwmod_class_sysconfig omap2xxx_gpio_sysc = {
-	.rev_offs	= 0x0000,
-	.sysc_offs	= 0x0010,
-	.syss_offs	= 0x0014,
-	.sysc_flags	= (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
-			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-			   SYSS_HAS_RESET_STATUS),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-struct omap_hwmod_class omap2xxx_gpio_hwmod_class = {
-	.name = "gpio",
-	.sysc = &omap2xxx_gpio_sysc,
-};
-
-/*
- * 'mailbox' class
- * mailbox module allowing communication between the on-chip processors
- * using a queued mailbox-interrupt mechanism.
- */
-
-static struct omap_hwmod_class_sysconfig omap2xxx_mailbox_sysc = {
-	.rev_offs	= 0x000,
-	.sysc_offs	= 0x010,
-	.syss_offs	= 0x014,
-	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-struct omap_hwmod_class omap2xxx_mailbox_hwmod_class = {
-	.name	= "mailbox",
-	.sysc	= &omap2xxx_mailbox_sysc,
-};
-
-/*
- * 'mcspi' class
- * multichannel serial port interface (mcspi) / master/slave synchronous serial
- * bus
- */
-
-static struct omap_hwmod_class_sysconfig omap2xxx_mcspi_sysc = {
-	.rev_offs	= 0x0000,
-	.sysc_offs	= 0x0010,
-	.syss_offs	= 0x0014,
-	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-				SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-				SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-struct omap_hwmod_class omap2xxx_mcspi_class = {
-	.name	= "mcspi",
-	.sysc	= &omap2xxx_mcspi_sysc,
-};
-
-/*
- * 'gpmc' class
- * general purpose memory controller
- */
-
-static struct omap_hwmod_class_sysconfig omap2xxx_gpmc_sysc = {
-	.rev_offs	= 0x0000,
-	.sysc_offs	= 0x0010,
-	.syss_offs	= 0x0014,
-	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
-			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2xxx_gpmc_hwmod_class = {
-	.name	= "gpmc",
-	.sysc	= &omap2xxx_gpmc_sysc,
-};
-
-/*
- * IP blocks
- */
-
-/* L3 */
-struct omap_hwmod omap2xxx_l3_main_hwmod = {
-	.name		= "l3_main",
-	.class		= &l3_hwmod_class,
-	.flags		= HWMOD_NO_IDLEST,
-};
-
-/* L4 CORE */
-struct omap_hwmod omap2xxx_l4_core_hwmod = {
-	.name		= "l4_core",
-	.class		= &l4_hwmod_class,
-	.flags		= HWMOD_NO_IDLEST,
-};
-
-/* L4 WKUP */
-struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
-	.name		= "l4_wkup",
-	.class		= &l4_hwmod_class,
-	.flags		= HWMOD_NO_IDLEST,
-};
-
-/* MPU */
-struct omap_hwmod omap2xxx_mpu_hwmod = {
-	.name		= "mpu",
-	.class		= &mpu_hwmod_class,
-	.main_clk	= "mpu_ck",
-};
-
-/* timer3 */
-struct omap_hwmod omap2xxx_timer3_hwmod = {
-	.name		= "timer3",
-	.main_clk	= "gpt3_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer4 */
-struct omap_hwmod omap2xxx_timer4_hwmod = {
-	.name		= "timer4",
-	.main_clk	= "gpt4_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer5 */
-struct omap_hwmod omap2xxx_timer5_hwmod = {
-	.name		= "timer5",
-	.main_clk	= "gpt5_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer6 */
-struct omap_hwmod omap2xxx_timer6_hwmod = {
-	.name		= "timer6",
-	.main_clk	= "gpt6_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer7 */
-struct omap_hwmod omap2xxx_timer7_hwmod = {
-	.name		= "timer7",
-	.main_clk	= "gpt7_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer8 */
-struct omap_hwmod omap2xxx_timer8_hwmod = {
-	.name		= "timer8",
-	.main_clk	= "gpt8_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer9 */
-struct omap_hwmod omap2xxx_timer9_hwmod = {
-	.name		= "timer9",
-	.main_clk	= "gpt9_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer10 */
-struct omap_hwmod omap2xxx_timer10_hwmod = {
-	.name		= "timer10",
-	.main_clk	= "gpt10_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer11 */
-struct omap_hwmod omap2xxx_timer11_hwmod = {
-	.name		= "timer11",
-	.main_clk	= "gpt11_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* timer12 */
-struct omap_hwmod omap2xxx_timer12_hwmod = {
-	.name		= "timer12",
-	.main_clk	= "gpt12_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_timer_hwmod_class,
-	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
-};
-
-/* wd_timer2 */
-struct omap_hwmod omap2xxx_wd_timer2_hwmod = {
-	.name		= "wd_timer2",
-	.class		= &omap2xxx_wd_timer_hwmod_class,
-	.main_clk	= "mpu_wdt_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = WKUP_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
-		},
-	},
-};
-
-/* UART1 */
-
-struct omap_hwmod omap2xxx_uart1_hwmod = {
-	.name		= "uart1",
-	.main_clk	= "uart1_fck",
-	.flags		= DEBUG_OMAP2UART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
-		},
-	},
-	.class		= &omap2_uart_class,
-};
-
-/* UART2 */
-
-struct omap_hwmod omap2xxx_uart2_hwmod = {
-	.name		= "uart2",
-	.main_clk	= "uart2_fck",
-	.flags		= DEBUG_OMAP2UART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
-		},
-	},
-	.class		= &omap2_uart_class,
-};
-
-/* UART3 */
-
-struct omap_hwmod omap2xxx_uart3_hwmod = {
-	.name		= "uart3",
-	.main_clk	= "uart3_fck",
-	.flags		= DEBUG_OMAP2UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 2,
-			.idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
-		},
-	},
-	.class		= &omap2_uart_class,
-};
-
-/* dss */
-
-static struct omap_hwmod_opt_clk dss_opt_clks[] = {
-	/*
-	 * The DSS HW needs all DSS clocks enabled during reset. The dss_core
-	 * driver does not use these clocks.
-	 */
-	{ .role = "tv_clk", .clk = "dss_54m_fck" },
-	{ .role = "sys_clk", .clk = "dss2_fck" },
-};
-
-struct omap_hwmod omap2xxx_dss_core_hwmod = {
-	.name		= "dss_core",
-	.class		= &omap2_dss_hwmod_class,
-	.main_clk	= "dss1_fck", /* instead of dss_fck */
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-		},
-	},
-	.opt_clks	= dss_opt_clks,
-	.opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
-	.flags		= HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-};
-
-struct omap_hwmod omap2xxx_dss_dispc_hwmod = {
-	.name		= "dss_dispc",
-	.class		= &omap2_dispc_hwmod_class,
-	.main_clk	= "dss1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-		},
-	},
-	.flags		= HWMOD_NO_IDLEST,
-	.dev_attr	= &omap2_3_dss_dispc_dev_attr,
-};
-
-static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
-	{ .role = "ick", .clk = "dss_ick" },
-};
-
-struct omap_hwmod omap2xxx_dss_rfbi_hwmod = {
-	.name		= "dss_rfbi",
-	.class		= &omap2_rfbi_hwmod_class,
-	.main_clk	= "dss1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-		},
-	},
-	.opt_clks	= dss_rfbi_opt_clks,
-	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks),
-	.flags		= HWMOD_NO_IDLEST,
-};
-
-struct omap_hwmod omap2xxx_dss_venc_hwmod = {
-	.name		= "dss_venc",
-	.class		= &omap2_venc_hwmod_class,
-	.main_clk	= "dss_54m_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-		},
-	},
-	.flags		= HWMOD_NO_IDLEST,
-};
-
-/* gpio1 */
-struct omap_hwmod omap2xxx_gpio1_hwmod = {
-	.name		= "gpio1",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.main_clk	= "gpios_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = WKUP_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_gpio_hwmod_class,
-};
-
-/* gpio2 */
-struct omap_hwmod omap2xxx_gpio2_hwmod = {
-	.name		= "gpio2",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.main_clk	= "gpios_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = WKUP_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_gpio_hwmod_class,
-};
-
-/* gpio3 */
-struct omap_hwmod omap2xxx_gpio3_hwmod = {
-	.name		= "gpio3",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.main_clk	= "gpios_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = WKUP_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_gpio_hwmod_class,
-};
-
-/* gpio4 */
-struct omap_hwmod omap2xxx_gpio4_hwmod = {
-	.name		= "gpio4",
-	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-	.main_clk	= "gpios_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = WKUP_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_gpio_hwmod_class,
-};
-
-/* mcspi1 */
-struct omap_hwmod omap2xxx_mcspi1_hwmod = {
-	.name		= "mcspi1",
-	.main_clk	= "mcspi1_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_mcspi_class,
-};
-
-/* mcspi2 */
-struct omap_hwmod omap2xxx_mcspi2_hwmod = {
-	.name		= "mcspi2",
-	.main_clk	= "mcspi2_fck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 1,
-			.idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_mcspi_class,
-};
-
-/* gpmc */
-struct omap_hwmod omap2xxx_gpmc_hwmod = {
-	.name		= "gpmc",
-	.class		= &omap2xxx_gpmc_hwmod_class,
-	.main_clk	= "gpmc_fck",
-	/* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
-	.flags		= HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS,
-	.prcm		= {
-		.omap2	= {
-			.module_offs = CORE_MOD,
-		},
-	},
-};
-
-/* RNG */
-
-static struct omap_hwmod_class_sysconfig omap2_rng_sysc = {
-	.rev_offs	= 0x3c,
-	.sysc_offs	= 0x40,
-	.syss_offs	= 0x44,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-			   SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2_rng_hwmod_class = {
-	.name		= "rng",
-	.sysc		= &omap2_rng_sysc,
-};
-
-struct omap_hwmod omap2xxx_rng_hwmod = {
-	.name		= "rng",
-	.main_clk	= "l4_ck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 4,
-			.idlest_idle_bit = OMAP24XX_ST_RNG_SHIFT,
-		},
-	},
-	/*
-	 * XXX The first read from the SYSSTATUS register of the RNG
-	 * after the SYSCONFIG SOFTRESET bit is set triggers an
-	 * imprecise external abort.  It's unclear why this happens.
-	 * Until this is analyzed, skip the IP block reset.
-	 */
-	.flags		= HWMOD_INIT_NO_RESET,
-	.class		= &omap2_rng_hwmod_class,
-};
-
-/* SHAM */
-
-static struct omap_hwmod_class_sysconfig omap2_sham_sysc = {
-	.rev_offs	= 0x5c,
-	.sysc_offs	= 0x60,
-	.syss_offs	= 0x64,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-			   SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2xxx_sham_class = {
-	.name	= "sham",
-	.sysc	= &omap2_sham_sysc,
-};
-
-struct omap_hwmod omap2xxx_sham_hwmod = {
-	.name		= "sham",
-	.main_clk	= "l4_ck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 4,
-			.idlest_idle_bit = OMAP24XX_ST_SHA_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_sham_class,
-};
-
-/* AES */
-
-static struct omap_hwmod_class_sysconfig omap2_aes_sysc = {
-	.rev_offs	= 0x44,
-	.sysc_offs	= 0x48,
-	.syss_offs	= 0x4c,
-	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-			   SYSS_HAS_RESET_STATUS),
-	.sysc_fields	= &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2xxx_aes_class = {
-	.name	= "aes",
-	.sysc	= &omap2_aes_sysc,
-};
-
-struct omap_hwmod omap2xxx_aes_hwmod = {
-	.name		= "aes",
-	.main_clk	= "l4_ck",
-	.prcm		= {
-		.omap2 = {
-			.module_offs = CORE_MOD,
-			.idlest_reg_id = 4,
-			.idlest_idle_bit = OMAP24XX_ST_AES_SHIFT,
-		},
-	},
-	.class		= &omap2xxx_aes_class,
-};
diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.h b/arch/arm/mach-omap2/omap_hwmod_common_data.h
index 69dddc53e1d8..8b270cb3f64b 100644
--- a/arch/arm/mach-omap2/omap_hwmod_common_data.h
+++ b/arch/arm/mach-omap2/omap_hwmod_common_data.h
@@ -15,68 +15,6 @@
 #include "common.h"
 #include "display.h"
 
-/* Common IP block data across OMAP2xxx */
-extern struct omap_hwmod omap2xxx_l3_main_hwmod;
-extern struct omap_hwmod omap2xxx_l4_core_hwmod;
-extern struct omap_hwmod omap2xxx_l4_wkup_hwmod;
-extern struct omap_hwmod omap2xxx_mpu_hwmod;
-extern struct omap_hwmod omap2xxx_timer3_hwmod;
-extern struct omap_hwmod omap2xxx_timer4_hwmod;
-extern struct omap_hwmod omap2xxx_timer5_hwmod;
-extern struct omap_hwmod omap2xxx_timer6_hwmod;
-extern struct omap_hwmod omap2xxx_timer7_hwmod;
-extern struct omap_hwmod omap2xxx_timer8_hwmod;
-extern struct omap_hwmod omap2xxx_timer9_hwmod;
-extern struct omap_hwmod omap2xxx_timer10_hwmod;
-extern struct omap_hwmod omap2xxx_timer11_hwmod;
-extern struct omap_hwmod omap2xxx_timer12_hwmod;
-extern struct omap_hwmod omap2xxx_wd_timer2_hwmod;
-extern struct omap_hwmod omap2xxx_uart1_hwmod;
-extern struct omap_hwmod omap2xxx_uart2_hwmod;
-extern struct omap_hwmod omap2xxx_uart3_hwmod;
-extern struct omap_hwmod omap2xxx_dss_core_hwmod;
-extern struct omap_hwmod omap2xxx_dss_dispc_hwmod;
-extern struct omap_hwmod omap2xxx_dss_rfbi_hwmod;
-extern struct omap_hwmod omap2xxx_dss_venc_hwmod;
-extern struct omap_hwmod omap2xxx_gpio1_hwmod;
-extern struct omap_hwmod omap2xxx_gpio2_hwmod;
-extern struct omap_hwmod omap2xxx_gpio3_hwmod;
-extern struct omap_hwmod omap2xxx_gpio4_hwmod;
-extern struct omap_hwmod omap2xxx_mcspi1_hwmod;
-extern struct omap_hwmod omap2xxx_mcspi2_hwmod;
-extern struct omap_hwmod omap2xxx_gpmc_hwmod;
-extern struct omap_hwmod omap2xxx_rng_hwmod;
-extern struct omap_hwmod omap2xxx_sham_hwmod;
-extern struct omap_hwmod omap2xxx_aes_hwmod;
-
-/* Common interface data across OMAP2xxx */
-extern struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core;
-extern struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main;
-extern struct omap_hwmod_ocp_if omap2xxx_dss__l3;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup;
-extern struct omap_hwmod_ocp_if omap2_l4_core__uart1;
-extern struct omap_hwmod_ocp_if omap2_l4_core__uart2;
-extern struct omap_hwmod_ocp_if omap2_l4_core__uart3;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__rng;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__sham;
-extern struct omap_hwmod_ocp_if omap2xxx_l4_core__aes;
-
 /* OMAP hwmod classes - forward declarations */
 extern struct omap_hwmod_class l3_hwmod_class;
 extern struct omap_hwmod_class l4_hwmod_class;
@@ -88,10 +26,6 @@ extern struct omap_hwmod_class omap2_rfbi_hwmod_class;
 extern struct omap_hwmod_class omap2_venc_hwmod_class;
 extern struct omap_hwmod_class omap2_hdq1w_class;
 
-extern struct omap_hwmod_class omap2xxx_gpio_hwmod_class;
-extern struct omap_hwmod_class omap2xxx_mailbox_hwmod_class;
-extern struct omap_hwmod_class omap2xxx_mcspi_class;
-
 extern struct omap_dss_dispc_dev_attr omap2_3_dss_dispc_dev_attr;
 
 #endif
diff --git a/arch/arm/mach-omap2/opp2420_data.c b/arch/arm/mach-omap2/opp2420_data.c
deleted file mode 100644
index 18a448f938ea..000000000000
--- a/arch/arm/mach-omap2/opp2420_data.c
+++ /dev/null
@@ -1,131 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * opp2420_data.c - old-style "OPP" table for OMAP2420
- *
- * Copyright (C) 2005-2009 Texas Instruments, Inc.
- * Copyright (C) 2004-2009 Nokia Corporation
- *
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
- * These configurations are characterized by voltage and speed for clocks.
- * The device is only validated for certain combinations. One way to express
- * these combinations is via the 'ratios' which the clocks operate with
- * respect to each other. These ratio sets are for a given voltage/DPLL
- * setting. All configurations can be described by a DPLL setting and a ratio.
- *
- * XXX Missing voltage data.
- * XXX Missing 19.2MHz sys_clk rate sets (needed for N800/N810)
- *
- * THe format described in this file is deprecated.  Once a reasonable
- * OPP API exists, the data in this file should be converted to use it.
- *
- * This is technically part of the OMAP2xxx clock code.
- *
- * Considerable work is still needed to fully support dynamic frequency
- * changes on OMAP2xxx-series chips.  Readers interested in such a
- * project are encouraged to review the Maemo Diablo RX-34 and RX-44
- * kernel source at:
- *     http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
- */
-
-#include <linux/kernel.h>
-
-#include "opp2xxx.h"
-#include "sdrc.h"
-#include "clock.h"
-
-/*
- * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
- * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
- * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
- * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
- *
- * Filling in table based on H4 boards available.  There are quite a
- * few more rate combinations which could be defined.
- *
- * When multiple values are defined the start up will try and choose
- * the fastest one. If a 'fast' value is defined, then automatically,
- * the /2 one should be included as it can be used.  Generally having
- * more than one fast set does not make sense, as static timings need
- * to be changed to change the set.  The exception is the bypass
- * setting which is available for low power bypass.
- *
- * Note: This table needs to be sorted, fastest to slowest.
- **/
-const struct prcm_config omap2420_rate_table[] = {
-	/* PRCM I - FAST */
-	{S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL,		/* 330MHz ARM */
-		RI_CM_CLKSEL_DSP_VAL, RI_CM_CLKSEL_GFX_VAL,
-		RI_CM_CLKSEL1_CORE_VAL, MI_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_165MHz,
-		RATE_IN_242X},
-
-	/* PRCM II - FAST */
-	{S12M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL,		/* 300MHz ARM */
-		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
-		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
-		RATE_IN_242X},
-
-	{S13M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL,		/* 300MHz ARM */
-		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
-		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
-		RATE_IN_242X},
-
-	/* PRCM III - FAST */
-	{S12M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL,		/* 266MHz ARM */
-		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
-		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
-		RATE_IN_242X},
-
-	{S13M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL,		/* 266MHz ARM */
-		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
-		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
-		RATE_IN_242X},
-
-	/* PRCM II - SLOW */
-	{S12M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL,		/* 150MHz ARM */
-		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
-		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
-		RATE_IN_242X},
-
-	{S13M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL,		/* 150MHz ARM */
-		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
-		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
-		RATE_IN_242X},
-
-	/* PRCM III - SLOW */
-	{S12M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL,		/* 133MHz ARM */
-		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
-		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
-		RATE_IN_242X},
-
-	{S13M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL,		/* 133MHz ARM */
-		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
-		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
-		RATE_IN_242X},
-
-	/* PRCM-VII (boot-bypass) */
-	{S12M, S12M, S12M, RVII_CM_CLKSEL_MPU_VAL,		/* 12MHz ARM*/
-		RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL,
-		RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS,
-		RATE_IN_242X},
-
-	/* PRCM-VII (boot-bypass) */
-	{S13M, S13M, S13M, RVII_CM_CLKSEL_MPU_VAL,		/* 13MHz ARM */
-		RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL,
-		RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS,
-		RATE_IN_242X},
-
-	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-};
diff --git a/arch/arm/mach-omap2/opp2430_data.c b/arch/arm/mach-omap2/opp2430_data.c
deleted file mode 100644
index ded8b566a23a..000000000000
--- a/arch/arm/mach-omap2/opp2430_data.c
+++ /dev/null
@@ -1,136 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * opp2430_data.c - old-style "OPP" table for OMAP2430
- *
- * Copyright (C) 2005-2009 Texas Instruments, Inc.
- * Copyright (C) 2004-2009 Nokia Corporation
- *
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
- * These configurations are characterized by voltage and speed for clocks.
- * The device is only validated for certain combinations. One way to express
- * these combinations is via the 'ratios' which the clocks operate with
- * respect to each other. These ratio sets are for a given voltage/DPLL
- * setting. All configurations can be described by a DPLL setting and a ratio.
- *
- * 2430 differs from 2420 in that there are no more phase synchronizers used.
- * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
- * 2430 (iva2.1, NOdsp, mdm)
- *
- * XXX Missing voltage data.
- * XXX Missing 19.2MHz sys_clk rate sets.
- *
- * THe format described in this file is deprecated.  Once a reasonable
- * OPP API exists, the data in this file should be converted to use it.
- *
- * This is technically part of the OMAP2xxx clock code.
- */
-
-#include <linux/kernel.h>
-
-#include "opp2xxx.h"
-#include "sdrc.h"
-#include "clock.h"
-
-/*
- * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
- * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
- * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
- * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
- *
- * Filling in table based on 2430-SDPs variants available.  There are
- * quite a few more rate combinations which could be defined.
- *
- * When multiple values are defined the start up will try and choose
- * the fastest one. If a 'fast' value is defined, then automatically,
- * the /2 one should be included as it can be used.  Generally having
- * more than one fast set does not make sense, as static timings need
- * to be changed to change the set.  The exception is the bypass
- * setting which is available for low power bypass.
- *
- * Note: This table needs to be sorted, fastest to slowest.
- */
-const struct prcm_config omap2430_rate_table[] = {
-	/* PRCM #4 - ratio2 (ES2.1) - FAST */
-	{S13M, S798M, S399M, R2_CM_CLKSEL_MPU_VAL,		/* 399MHz ARM */
-		R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL,
-		R2_CM_CLKSEL1_CORE_VAL, M4_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, R2_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_133MHz,
-		RATE_IN_243X},
-
-	/* PRCM #2 - ratio1 (ES2) - FAST */
-	{S13M, S658M, S329M, R1_CM_CLKSEL_MPU_VAL,		/* 330MHz ARM */
-		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
-		R1_CM_CLKSEL1_CORE_VAL, M2_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_165MHz,
-		RATE_IN_243X},
-
-	/* PRCM #5a - ratio1 - FAST */
-	{S13M, S532M, S266M, R1_CM_CLKSEL_MPU_VAL,		/* 266MHz ARM */
-		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
-		R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_133MHz,
-		RATE_IN_243X},
-
-	/* PRCM #5b - ratio1 - FAST */
-	{S13M, S400M, S200M, R1_CM_CLKSEL_MPU_VAL,		/* 200MHz ARM */
-		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
-		R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_100MHz,
-		RATE_IN_243X},
-
-	/* PRCM #4 - ratio1 (ES2.1) - SLOW */
-	{S13M, S399M, S199M, R2_CM_CLKSEL_MPU_VAL,		/* 200MHz ARM */
-		R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL,
-		R2_CM_CLKSEL1_CORE_VAL, M4_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_1x_VAL, R2_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_133MHz,
-		RATE_IN_243X},
-
-	/* PRCM #2 - ratio1 (ES2) - SLOW */
-	{S13M, S329M, S164M, R1_CM_CLKSEL_MPU_VAL,		/* 165MHz ARM */
-		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
-		R1_CM_CLKSEL1_CORE_VAL, M2_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_165MHz,
-		RATE_IN_243X},
-
-	/* PRCM #5a - ratio1 - SLOW */
-	{S13M, S266M, S133M, R1_CM_CLKSEL_MPU_VAL,		/* 133MHz ARM */
-		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
-		R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_133MHz,
-		RATE_IN_243X},
-
-	/* PRCM #5b - ratio1 - SLOW*/
-	{S13M, S200M, S100M, R1_CM_CLKSEL_MPU_VAL,		/* 100MHz ARM */
-		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
-		R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_100MHz,
-		RATE_IN_243X},
-
-	/* PRCM-boot/bypass */
-	{S13M, S13M, S13M, RB_CM_CLKSEL_MPU_VAL,		/* 13MHz */
-		RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL,
-		RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_13_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_BYPASS,
-		RATE_IN_243X},
-
-	/* PRCM-boot/bypass */
-	{S12M, S12M, S12M, RB_CM_CLKSEL_MPU_VAL,		/* 12MHz */
-		RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL,
-		RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_12_VAL,
-		MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL,
-		SDRC_RFR_CTRL_BYPASS,
-		RATE_IN_243X},
-
-	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-};
diff --git a/arch/arm/mach-omap2/opp2xxx.h b/arch/arm/mach-omap2/opp2xxx.h
deleted file mode 100644
index a451182cdc02..000000000000
--- a/arch/arm/mach-omap2/opp2xxx.h
+++ /dev/null
@@ -1,430 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * opp2xxx.h - macros for old-style OMAP2xxx "OPP" definitions
- *
- * Copyright (C) 2005-2009 Texas Instruments, Inc.
- * Copyright (C) 2004-2009 Nokia Corporation
- *
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
- * These configurations are characterized by voltage and speed for clocks.
- * The device is only validated for certain combinations. One way to express
- * these combinations is via the 'ratio's' which the clocks operate with
- * respect to each other. These ratio sets are for a given voltage/DPLL
- * setting. All configurations can be described by a DPLL setting and a ratio
- * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
- *
- * 2430 differs from 2420 in that there are no more phase synchronizers used.
- * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
- * 2430 (iva2.1, NOdsp, mdm)
- *
- * XXX Missing voltage data.
- *
- * THe format described in this file is deprecated.  Once a reasonable
- * OPP API exists, the data in this file should be converted to use it.
- *
- * This is technically part of the OMAP2xxx clock code.
- */
-
-#ifndef __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
-#define __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
-
-/**
- * struct prcm_config - define clock rates on a per-OPP basis (24xx)
- *
- * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated.
- * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,CM_CLKSEL_DSP
- * CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL CM_CLKSEL2_PLL, CM_CLKSEL_MDM
- *
- * This is deprecated.  As soon as we have a decent OPP API, we should
- * move all this stuff to it.
- */
-struct prcm_config {
-	unsigned long xtal_speed;	/* crystal rate */
-	unsigned long dpll_speed;	/* dpll: out*xtal*M/(N-1)table_recalc */
-	unsigned long mpu_speed;	/* speed of MPU */
-	unsigned long cm_clksel_mpu;	/* mpu divider */
-	unsigned long cm_clksel_dsp;	/* dsp+iva1 div(2420), iva2.1(2430) */
-	unsigned long cm_clksel_gfx;	/* gfx dividers */
-	unsigned long cm_clksel1_core;	/* major subsystem dividers */
-	unsigned long cm_clksel1_pll;	/* m,n */
-	unsigned long cm_clksel2_pll;	/* dpllx1 or x2 out */
-	unsigned long cm_clksel_mdm;	/* modem dividers 2430 only */
-	unsigned long base_sdrc_rfr;	/* base refresh timing for a set */
-	unsigned short flags;
-};
-
-
-/* Core fields for cm_clksel, not ratio governed */
-#define RX_CLKSEL_DSS1			(0x10 << 8)
-#define RX_CLKSEL_DSS2			(0x0 << 13)
-#define RX_CLKSEL_SSI			(0x5 << 20)
-
-/*-------------------------------------------------------------------------
- * Voltage/DPLL ratios
- *-------------------------------------------------------------------------*/
-
-/* 2430 Ratio's, 2430-Ratio Config 1 */
-#define R1_CLKSEL_L3			(4 << 0)
-#define R1_CLKSEL_L4			(2 << 5)
-#define R1_CLKSEL_USB			(4 << 25)
-#define R1_CM_CLKSEL1_CORE_VAL		(R1_CLKSEL_USB | RX_CLKSEL_SSI | \
-					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
-					 R1_CLKSEL_L4 | R1_CLKSEL_L3)
-#define R1_CLKSEL_MPU			(2 << 0)
-#define R1_CM_CLKSEL_MPU_VAL		R1_CLKSEL_MPU
-#define R1_CLKSEL_DSP			(2 << 0)
-#define R1_CLKSEL_DSP_IF		(2 << 5)
-#define R1_CM_CLKSEL_DSP_VAL		(R1_CLKSEL_DSP | R1_CLKSEL_DSP_IF)
-#define R1_CLKSEL_GFX			(2 << 0)
-#define R1_CM_CLKSEL_GFX_VAL		R1_CLKSEL_GFX
-#define R1_CLKSEL_MDM			(4 << 0)
-#define R1_CM_CLKSEL_MDM_VAL		R1_CLKSEL_MDM
-
-/* 2430-Ratio Config 2 */
-#define R2_CLKSEL_L3			(6 << 0)
-#define R2_CLKSEL_L4			(2 << 5)
-#define R2_CLKSEL_USB			(2 << 25)
-#define R2_CM_CLKSEL1_CORE_VAL		(R2_CLKSEL_USB | RX_CLKSEL_SSI | \
-					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
-					 R2_CLKSEL_L4 | R2_CLKSEL_L3)
-#define R2_CLKSEL_MPU			(2 << 0)
-#define R2_CM_CLKSEL_MPU_VAL		R2_CLKSEL_MPU
-#define R2_CLKSEL_DSP			(2 << 0)
-#define R2_CLKSEL_DSP_IF		(3 << 5)
-#define R2_CM_CLKSEL_DSP_VAL		(R2_CLKSEL_DSP | R2_CLKSEL_DSP_IF)
-#define R2_CLKSEL_GFX			(2 << 0)
-#define R2_CM_CLKSEL_GFX_VAL		R2_CLKSEL_GFX
-#define R2_CLKSEL_MDM			(6 << 0)
-#define R2_CM_CLKSEL_MDM_VAL		R2_CLKSEL_MDM
-
-/* 2430-Ratio Bootm (BYPASS) */
-#define RB_CLKSEL_L3			(1 << 0)
-#define RB_CLKSEL_L4			(1 << 5)
-#define RB_CLKSEL_USB			(1 << 25)
-#define RB_CM_CLKSEL1_CORE_VAL		(RB_CLKSEL_USB | RX_CLKSEL_SSI | \
-					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
-					 RB_CLKSEL_L4 | RB_CLKSEL_L3)
-#define RB_CLKSEL_MPU			(1 << 0)
-#define RB_CM_CLKSEL_MPU_VAL		RB_CLKSEL_MPU
-#define RB_CLKSEL_DSP			(1 << 0)
-#define RB_CLKSEL_DSP_IF		(1 << 5)
-#define RB_CM_CLKSEL_DSP_VAL		(RB_CLKSEL_DSP | RB_CLKSEL_DSP_IF)
-#define RB_CLKSEL_GFX			(1 << 0)
-#define RB_CM_CLKSEL_GFX_VAL		RB_CLKSEL_GFX
-#define RB_CLKSEL_MDM			(1 << 0)
-#define RB_CM_CLKSEL_MDM_VAL		RB_CLKSEL_MDM
-
-/* 2420 Ratio Equivalents */
-#define RXX_CLKSEL_VLYNQ		(0x12 << 15)
-#define RXX_CLKSEL_SSI			(0x8 << 20)
-
-/* 2420-PRCM III 532MHz core */
-#define RIII_CLKSEL_L3			(4 << 0)	/* 133MHz */
-#define RIII_CLKSEL_L4			(2 << 5)	/* 66.5MHz */
-#define RIII_CLKSEL_USB			(4 << 25)	/* 33.25MHz */
-#define RIII_CM_CLKSEL1_CORE_VAL	(RIII_CLKSEL_USB | RXX_CLKSEL_SSI | \
-					 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
-					 RX_CLKSEL_DSS1 | RIII_CLKSEL_L4 | \
-					 RIII_CLKSEL_L3)
-#define RIII_CLKSEL_MPU			(2 << 0)	/* 266MHz */
-#define RIII_CM_CLKSEL_MPU_VAL		RIII_CLKSEL_MPU
-#define RIII_CLKSEL_DSP			(3 << 0)	/* c5x - 177.3MHz */
-#define RIII_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 88.67MHz */
-#define RIII_SYNC_DSP			(1 << 7)	/* Enable sync */
-#define RIII_CLKSEL_IVA			(6 << 8)	/* iva1 - 88.67MHz */
-#define RIII_SYNC_IVA			(1 << 13)	/* Enable sync */
-#define RIII_CM_CLKSEL_DSP_VAL		(RIII_SYNC_IVA | RIII_CLKSEL_IVA | \
-					 RIII_SYNC_DSP | RIII_CLKSEL_DSP_IF | \
-					 RIII_CLKSEL_DSP)
-#define RIII_CLKSEL_GFX			(2 << 0)	/* 66.5MHz */
-#define RIII_CM_CLKSEL_GFX_VAL		RIII_CLKSEL_GFX
-
-/* 2420-PRCM II 600MHz core */
-#define RII_CLKSEL_L3			(6 << 0)	/* 100MHz */
-#define RII_CLKSEL_L4			(2 << 5)	/* 50MHz */
-#define RII_CLKSEL_USB			(2 << 25)	/* 50MHz */
-#define RII_CM_CLKSEL1_CORE_VAL		(RII_CLKSEL_USB | RXX_CLKSEL_SSI | \
-					 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
-					 RX_CLKSEL_DSS1 | RII_CLKSEL_L4 | \
-					 RII_CLKSEL_L3)
-#define RII_CLKSEL_MPU			(2 << 0)	/* 300MHz */
-#define RII_CM_CLKSEL_MPU_VAL		RII_CLKSEL_MPU
-#define RII_CLKSEL_DSP			(3 << 0)	/* c5x - 200MHz */
-#define RII_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 100MHz */
-#define RII_SYNC_DSP			(0 << 7)	/* Bypass sync */
-#define RII_CLKSEL_IVA			(3 << 8)	/* iva1 - 200MHz */
-#define RII_SYNC_IVA			(0 << 13)	/* Bypass sync */
-#define RII_CM_CLKSEL_DSP_VAL		(RII_SYNC_IVA | RII_CLKSEL_IVA | \
-					 RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \
-					 RII_CLKSEL_DSP)
-#define RII_CLKSEL_GFX			(2 << 0)	/* 50MHz */
-#define RII_CM_CLKSEL_GFX_VAL		RII_CLKSEL_GFX
-
-/* 2420-PRCM I 660MHz core */
-#define RI_CLKSEL_L3			(4 << 0)	/* 165MHz */
-#define RI_CLKSEL_L4			(2 << 5)	/* 82.5MHz */
-#define RI_CLKSEL_USB			(4 << 25)	/* 41.25MHz */
-#define RI_CM_CLKSEL1_CORE_VAL		(RI_CLKSEL_USB |		\
-					 RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \
-					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
-					 RI_CLKSEL_L4 | RI_CLKSEL_L3)
-#define RI_CLKSEL_MPU			(2 << 0)	/* 330MHz */
-#define RI_CM_CLKSEL_MPU_VAL		RI_CLKSEL_MPU
-#define RI_CLKSEL_DSP			(3 << 0)	/* c5x - 220MHz */
-#define RI_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 110MHz */
-#define RI_SYNC_DSP			(1 << 7)	/* Activate sync */
-#define RI_CLKSEL_IVA			(4 << 8)	/* iva1 - 165MHz */
-#define RI_SYNC_IVA			(0 << 13)	/* Bypass sync */
-#define RI_CM_CLKSEL_DSP_VAL		(RI_SYNC_IVA | RI_CLKSEL_IVA |	\
-					 RI_SYNC_DSP | RI_CLKSEL_DSP_IF | \
-					 RI_CLKSEL_DSP)
-#define RI_CLKSEL_GFX			(1 << 0)	/* 165MHz */
-#define RI_CM_CLKSEL_GFX_VAL		RI_CLKSEL_GFX
-
-/* 2420-PRCM VII (boot) */
-#define RVII_CLKSEL_L3			(1 << 0)
-#define RVII_CLKSEL_L4			(1 << 5)
-#define RVII_CLKSEL_DSS1		(1 << 8)
-#define RVII_CLKSEL_DSS2		(0 << 13)
-#define RVII_CLKSEL_VLYNQ		(1 << 15)
-#define RVII_CLKSEL_SSI			(1 << 20)
-#define RVII_CLKSEL_USB			(1 << 25)
-
-#define RVII_CM_CLKSEL1_CORE_VAL	(RVII_CLKSEL_USB | RVII_CLKSEL_SSI | \
-					 RVII_CLKSEL_VLYNQ | \
-					 RVII_CLKSEL_DSS2 | RVII_CLKSEL_DSS1 | \
-					 RVII_CLKSEL_L4 | RVII_CLKSEL_L3)
-
-#define RVII_CLKSEL_MPU			(1 << 0) /* all divide by 1 */
-#define RVII_CM_CLKSEL_MPU_VAL		RVII_CLKSEL_MPU
-
-#define RVII_CLKSEL_DSP			(1 << 0)
-#define RVII_CLKSEL_DSP_IF		(1 << 5)
-#define RVII_SYNC_DSP			(0 << 7)
-#define RVII_CLKSEL_IVA			(1 << 8)
-#define RVII_SYNC_IVA			(0 << 13)
-#define RVII_CM_CLKSEL_DSP_VAL		(RVII_SYNC_IVA | RVII_CLKSEL_IVA | \
-					 RVII_SYNC_DSP | RVII_CLKSEL_DSP_IF | \
-					 RVII_CLKSEL_DSP)
-
-#define RVII_CLKSEL_GFX			(1 << 0)
-#define RVII_CM_CLKSEL_GFX_VAL		RVII_CLKSEL_GFX
-
-/*-------------------------------------------------------------------------
- * 2430 Target modes: Along with each configuration the CPU has several
- * modes which goes along with them. Modes mainly are the addition of
- * describe DPLL combinations to go along with a ratio.
- *-------------------------------------------------------------------------*/
-
-/* Hardware governed */
-#define MX_48M_SRC			(0 << 3)
-#define MX_54M_SRC			(0 << 5)
-#define MX_APLLS_CLIKIN_12		(3 << 23)
-#define MX_APLLS_CLIKIN_13		(2 << 23)
-#define MX_APLLS_CLIKIN_19_2		(0 << 23)
-
-/*
- * 2430 - standalone, 2*ref*M/(n+1), M/N is for exactness not relock speed
- * #5a	(ratio1) baseport-target, target DPLL = 266*2 = 532MHz
- */
-#define M5A_DPLL_MULT_12		(133 << 12)
-#define M5A_DPLL_DIV_12			(5 << 8)
-#define M5A_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M5A_DPLL_DIV_12 | M5A_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-#define M5A_DPLL_MULT_13		(61 << 12)
-#define M5A_DPLL_DIV_13			(2 << 8)
-#define M5A_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M5A_DPLL_DIV_13 | M5A_DPLL_MULT_13 | \
-					 MX_APLLS_CLIKIN_13)
-#define M5A_DPLL_MULT_19		(55 << 12)
-#define M5A_DPLL_DIV_19			(3 << 8)
-#define M5A_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M5A_DPLL_DIV_19 | M5A_DPLL_MULT_19 | \
-					 MX_APLLS_CLIKIN_19_2)
-/* #5b	(ratio1) target DPLL = 200*2 = 400MHz */
-#define M5B_DPLL_MULT_12		(50 << 12)
-#define M5B_DPLL_DIV_12			(2 << 8)
-#define M5B_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M5B_DPLL_DIV_12 | M5B_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-#define M5B_DPLL_MULT_13		(200 << 12)
-#define M5B_DPLL_DIV_13			(12 << 8)
-
-#define M5B_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M5B_DPLL_DIV_13 | M5B_DPLL_MULT_13 | \
-					 MX_APLLS_CLIKIN_13)
-#define M5B_DPLL_MULT_19		(125 << 12)
-#define M5B_DPLL_DIV_19			(31 << 8)
-#define M5B_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M5B_DPLL_DIV_19 | M5B_DPLL_MULT_19 | \
-					 MX_APLLS_CLIKIN_19_2)
-/*
- * #4	(ratio2), DPLL = 399*2 = 798MHz, L3=133MHz
- */
-#define M4_DPLL_MULT_12			(133 << 12)
-#define M4_DPLL_DIV_12			(3 << 8)
-#define M4_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M4_DPLL_DIV_12 | M4_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-
-#define M4_DPLL_MULT_13			(399 << 12)
-#define M4_DPLL_DIV_13			(12 << 8)
-#define M4_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M4_DPLL_DIV_13 | M4_DPLL_MULT_13 | \
-					 MX_APLLS_CLIKIN_13)
-
-#define M4_DPLL_MULT_19			(145 << 12)
-#define M4_DPLL_DIV_19			(6 << 8)
-#define M4_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M4_DPLL_DIV_19 | M4_DPLL_MULT_19 | \
-					 MX_APLLS_CLIKIN_19_2)
-
-/*
- * #3	(ratio2) baseport-target, target DPLL = 330*2 = 660MHz
- */
-#define M3_DPLL_MULT_12			(55 << 12)
-#define M3_DPLL_DIV_12			(1 << 8)
-#define M3_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M3_DPLL_DIV_12 | M3_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-#define M3_DPLL_MULT_13			(76 << 12)
-#define M3_DPLL_DIV_13			(2 << 8)
-#define M3_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M3_DPLL_DIV_13 | M3_DPLL_MULT_13 | \
-					 MX_APLLS_CLIKIN_13)
-#define M3_DPLL_MULT_19			(17 << 12)
-#define M3_DPLL_DIV_19			(0 << 8)
-#define M3_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M3_DPLL_DIV_19 | M3_DPLL_MULT_19 | \
-					 MX_APLLS_CLIKIN_19_2)
-
-/*
- * #2   (ratio1) DPLL = 330*2 = 660MHz, L3=165MHz
- */
-#define M2_DPLL_MULT_12		        (55 << 12)
-#define M2_DPLL_DIV_12		        (1 << 8)
-#define M2_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M2_DPLL_DIV_12 | M2_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-
-/* Speed changes - Used 658.7MHz instead of 660MHz for LP-Refresh M=76 N=2,
- * relock time issue */
-/* Core frequency changed from 330/165 to 329/164 MHz*/
-#define M2_DPLL_MULT_13		        (76 << 12)
-#define M2_DPLL_DIV_13		        (2 << 8)
-#define M2_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M2_DPLL_DIV_13 | M2_DPLL_MULT_13 | \
-					 MX_APLLS_CLIKIN_13)
-
-#define M2_DPLL_MULT_19		        (17 << 12)
-#define M2_DPLL_DIV_19		        (0 << 8)
-#define M2_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 M2_DPLL_DIV_19 | M2_DPLL_MULT_19 | \
-					 MX_APLLS_CLIKIN_19_2)
-
-/* boot (boot) */
-#define MB_DPLL_MULT			(1 << 12)
-#define MB_DPLL_DIV			(0 << 8)
-#define MB_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 MB_DPLL_DIV | MB_DPLL_MULT | \
-					 MX_APLLS_CLIKIN_12)
-
-#define MB_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 MB_DPLL_DIV | MB_DPLL_MULT | \
-					 MX_APLLS_CLIKIN_13)
-
-#define MB_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 MB_DPLL_DIV | MB_DPLL_MULT | \
-					 MX_APLLS_CLIKIN_19)
-
-/*
- * 2430 - chassis (sedna)
- * 165 (ratio1) same as above #2
- * 150 (ratio1)
- * 133 (ratio2) same as above #4
- * 110 (ratio2) same as above #3
- * 104 (ratio2)
- * boot (boot)
- */
-
-/* PRCM I target DPLL = 2*330MHz = 660MHz */
-#define MI_DPLL_MULT_12			(55 << 12)
-#define MI_DPLL_DIV_12			(1 << 8)
-#define MI_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
-					 MI_DPLL_DIV_12 | MI_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-
-/*
- * 2420 Equivalent - mode registers
- * PRCM II , target DPLL = 2*300MHz = 600MHz
- */
-#define MII_DPLL_MULT_12		(50 << 12)
-#define MII_DPLL_DIV_12			(1 << 8)
-#define MII_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC |	\
-					 MII_DPLL_DIV_12 | MII_DPLL_MULT_12 | \
-					 MX_APLLS_CLIKIN_12)
-#define MII_DPLL_MULT_13		(300 << 12)
-#define MII_DPLL_DIV_13			(12 << 8)
-#define MII_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC |	\
-					 MII_DPLL_DIV_13 | MII_DPLL_MULT_13 | \
-					 MX_APLLS_CLIKIN_13)
-
-/* PRCM III target DPLL = 2*266 = 532MHz*/
-#define MIII_DPLL_MULT_12		(133 << 12)
-#define MIII_DPLL_DIV_12		(5 << 8)
-#define MIII_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC |	\
-					 MIII_DPLL_DIV_12 | \
-					 MIII_DPLL_MULT_12 | MX_APLLS_CLIKIN_12)
-#define MIII_DPLL_MULT_13		(266 << 12)
-#define MIII_DPLL_DIV_13		(12 << 8)
-#define MIII_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC |	\
-					 MIII_DPLL_DIV_13 | \
-					 MIII_DPLL_MULT_13 | MX_APLLS_CLIKIN_13)
-
-/* PRCM VII (boot bypass) */
-#define MVII_CM_CLKSEL1_PLL_12_VAL	MB_CM_CLKSEL1_PLL_12_VAL
-#define MVII_CM_CLKSEL1_PLL_13_VAL	MB_CM_CLKSEL1_PLL_13_VAL
-
-/* High and low operation value */
-#define MX_CLKSEL2_PLL_2x_VAL		(2 << 0)
-#define MX_CLKSEL2_PLL_1x_VAL		(1 << 0)
-
-/* MPU speed defines */
-#define S12M	12000000
-#define S13M	13000000
-#define S19M	19200000
-#define S26M	26000000
-#define S100M	100000000
-#define S133M	133000000
-#define S150M	150000000
-#define S164M	164000000
-#define S165M	165000000
-#define S199M	199000000
-#define S200M	200000000
-#define S266M	266000000
-#define S300M	300000000
-#define S329M	329000000
-#define S330M	330000000
-#define S399M	399000000
-#define S400M	400000000
-#define S532M	532000000
-#define S600M	600000000
-#define S658M	658000000
-#define S660M	660000000
-#define S798M	798000000
-
-
-extern const struct prcm_config omap2420_rate_table[];
-
-#ifdef CONFIG_SOC_OMAP2430
-extern const struct prcm_config omap2430_rate_table[];
-#else
-#define omap2430_rate_table	NULL
-#endif
-extern const struct prcm_config *rate_table;
-extern const struct prcm_config *curr_prcm_set;
-
-#endif
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index b947bacf23a3..8b8021b297aa 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -27,7 +27,6 @@
 
 #include "clockdomain.h"
 #include "common.h"
-#include "common-board-devices.h"
 #include "control.h"
 #include "omap_device.h"
 #include "omap-secure.h"
@@ -42,15 +41,6 @@ struct pdata_init {
 
 static struct of_dev_auxdata omap_auxdata_lookup[];
 
-#ifdef CONFIG_MACH_NOKIA_N8X0
-static void __init omap2420_n8x0_legacy_init(void)
-{
-	omap_auxdata_lookup[0].platform_data = n8x0_legacy_init();
-}
-#else
-#define omap2420_n8x0_legacy_init	NULL
-#endif
-
 #ifdef CONFIG_ARCH_OMAP3
 /*
  * Configures GPIOs 126, 127 and 129 to 1.8V mode instead of 3.0V
@@ -431,26 +421,9 @@ static void __init omap3_mcbsp_init(void)
 static void __init omap3_mcbsp_init(void) {}
 #endif
 
-/*
- * Few boards still need auxdata populated before we populate
- * the dev entries in of_platform_populate().
- */
-static struct pdata_init auxdata_quirks[] __initdata = {
-#ifdef CONFIG_SOC_OMAP2420
-	{ "nokia,n800", omap2420_n8x0_legacy_init, },
-	{ "nokia,n810", omap2420_n8x0_legacy_init, },
-	{ "nokia,n810-wimax", omap2420_n8x0_legacy_init, },
-#endif
-	{ /* sentinel */ },
-};
-
 struct omap_sr_data __maybe_unused omap_sr_pdata[OMAP_SR_NR];
 
 static struct of_dev_auxdata omap_auxdata_lookup[] = {
-#ifdef CONFIG_MACH_NOKIA_N8X0
-	OF_DEV_AUXDATA("ti,omap2420-mmc", 0x4809c000, "mmci-omap.0", NULL),
-	OF_DEV_AUXDATA("menelaus", 0x72, "1-0072", &n8x0_menelaus_platform_data),
-#endif
 #ifdef CONFIG_ARCH_OMAP3
 	OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d000000, "5d000000.mmu",
 		       &omap3_iommu_pdata),
@@ -560,13 +533,11 @@ void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
 	 * We still need this for omap2420 and omap3 PM to work, others are
 	 * using drivers/misc/sram.c already.
 	 */
-	if (of_machine_is_compatible("ti,omap2420") ||
-	    of_machine_is_compatible("ti,omap3"))
+	if (IS_ENABLED(CONFIG_ARCH_OMAP3) &&
+	    of_machine_is_compatible("ti,omap3")) {
 		omap_sdrc_init(NULL, NULL);
-
-	if (of_machine_is_compatible("ti,omap3"))
 		omap3_mcbsp_init();
-	pdata_quirks_check(auxdata_quirks);
+	}
 
 	pdata_quirks_init_clocks(omap_dt_match_table);
 
diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
index f97ff93f2fb4..5751b85e9ffb 100644
--- a/arch/arm/mach-omap2/pm.h
+++ b/arch/arm/mach-omap2/pm.h
@@ -43,11 +43,6 @@ extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev);
 #define pm_dbg_update_time(pwrdm, prev) do {} while (0);
 #endif /* CONFIG_PM_DEBUG */
 
-/* 24xx */
-extern void omap24xx_cpu_suspend(u32 dll_ctrl, void __iomem *sdrc_dlla_ctrl,
-					void __iomem *sdrc_power);
-extern unsigned int omap24xx_cpu_suspend_sz;
-
 /* 3xxx */
 extern void omap34xx_cpu_suspend(int save_state);
 
diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h
index fbc89999460b..eaf6d1104dc2 100644
--- a/arch/arm/mach-omap2/powerdomain.h
+++ b/arch/arm/mach-omap2/powerdomain.h
@@ -244,8 +244,6 @@ int pwrdm_post_transition(struct powerdomain *pwrdm);
 
 extern int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 state);
 
-extern void omap242x_powerdomains_init(void);
-extern void omap243x_powerdomains_init(void);
 extern void omap3xxx_powerdomains_init(void);
 extern void am33xx_powerdomains_init(void);
 extern void omap44xx_powerdomains_init(void);
@@ -253,7 +251,6 @@ extern void omap54xx_powerdomains_init(void);
 extern void dra7xx_powerdomains_init(void);
 void am43xx_powerdomains_init(void);
 
-extern struct pwrdm_ops omap2_pwrdm_operations;
 extern struct pwrdm_ops omap3_pwrdm_operations;
 extern struct pwrdm_ops am33xx_pwrdm_operations;
 extern struct pwrdm_ops omap4_pwrdm_operations;
diff --git a/arch/arm/mach-omap2/powerdomains2xxx_data.c b/arch/arm/mach-omap2/powerdomains2xxx_data.c
deleted file mode 100644
index fa259adbdc61..000000000000
--- a/arch/arm/mach-omap2/powerdomains2xxx_data.c
+++ /dev/null
@@ -1,134 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * OMAP2XXX powerdomain definitions
- *
- * Copyright (C) 2007-2008, 2011 Texas Instruments, Inc.
- * Copyright (C) 2007-2011 Nokia Corporation
- *
- * Paul Walmsley, Jouni Högander
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-
-#include "soc.h"
-#include "powerdomain.h"
-#include "powerdomains2xxx_3xxx_data.h"
-
-#include "prcm-common.h"
-#include "prm2xxx_3xxx.h"
-#include "prm-regbits-24xx.h"
-
-/* 24XX powerdomains and dependencies */
-
-/* Powerdomains */
-
-static struct powerdomain dsp_pwrdm = {
-	.name		  = "dsp_pwrdm",
-	.prcm_offs	  = OMAP24XX_DSP_MOD,
-	.pwrsts		  = PWRSTS_OFF_RET_ON,
-	.pwrsts_logic_ret = PWRSTS_RET,
-	.banks		  = 1,
-	.pwrsts_mem_ret	  = {
-		[0] = PWRSTS_RET,
-	},
-	.pwrsts_mem_on	  = {
-		[0] = PWRSTS_ON,
-	},
-	.voltdm		  = { .name = "core" },
-};
-
-static struct powerdomain mpu_24xx_pwrdm = {
-	.name		  = "mpu_pwrdm",
-	.prcm_offs	  = MPU_MOD,
-	.pwrsts		  = PWRSTS_OFF_RET_ON,
-	.pwrsts_logic_ret = PWRSTS_OFF_RET,
-	.banks		  = 1,
-	.pwrsts_mem_ret	  = {
-		[0] = PWRSTS_RET,
-	},
-	.pwrsts_mem_on	  = {
-		[0] = PWRSTS_ON,
-	},
-	.voltdm		  = { .name = "core" },
-};
-
-static struct powerdomain core_24xx_pwrdm = {
-	.name		  = "core_pwrdm",
-	.prcm_offs	  = CORE_MOD,
-	.pwrsts		  = PWRSTS_OFF_RET_ON,
-	.pwrsts_logic_ret = PWRSTS_RET,
-	.banks		  = 3,
-	.pwrsts_mem_ret	  = {
-		[0] = PWRSTS_OFF_RET,	 /* MEM1RETSTATE */
-		[1] = PWRSTS_OFF_RET,	 /* MEM2RETSTATE */
-		[2] = PWRSTS_OFF_RET,	 /* MEM3RETSTATE */
-	},
-	.pwrsts_mem_on	  = {
-		[0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
-		[1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
-		[2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */
-	},
-	.voltdm		  = { .name = "core" },
-};
-
-
-/*
- * 2430-specific powerdomains
- */
-
-/* XXX 2430 KILLDOMAINWKUP bit?  No current users apparently */
-
-static struct powerdomain mdm_pwrdm = {
-	.name		  = "mdm_pwrdm",
-	.prcm_offs	  = OMAP2430_MDM_MOD,
-	.pwrsts		  = PWRSTS_OFF_RET_ON,
-	.pwrsts_logic_ret = PWRSTS_RET,
-	.banks		  = 1,
-	.pwrsts_mem_ret	  = {
-		[0] = PWRSTS_RET, /* MEMRETSTATE */
-	},
-	.pwrsts_mem_on	  = {
-		[0] = PWRSTS_ON,  /* MEMONSTATE */
-	},
-	.voltdm		  = { .name = "core" },
-};
-
-/*
- *
- */
-
-static struct powerdomain *powerdomains_omap24xx[] __initdata = {
-	&wkup_omap2_pwrdm,
-	&gfx_omap2_pwrdm,
-	&dsp_pwrdm,
-	&mpu_24xx_pwrdm,
-	&core_24xx_pwrdm,
-	NULL
-};
-
-static struct powerdomain *powerdomains_omap2430[] __initdata = {
-	&mdm_pwrdm,
-	NULL
-};
-
-void __init omap242x_powerdomains_init(void)
-{
-	if (!cpu_is_omap2420())
-		return;
-
-	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
-	pwrdm_register_pwrdms(powerdomains_omap24xx);
-	pwrdm_complete_init();
-}
-
-void __init omap243x_powerdomains_init(void)
-{
-	if (!cpu_is_omap2430())
-		return;
-
-	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
-	pwrdm_register_pwrdms(powerdomains_omap24xx);
-	pwrdm_register_pwrdms(powerdomains_omap2430);
-	pwrdm_complete_init();
-}
diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h
index 5e3544a63526..e326bb6a09db 100644
--- a/arch/arm/mach-omap2/prcm-common.h
+++ b/arch/arm/mach-omap2/prcm-common.h
@@ -27,12 +27,6 @@
 #define PLL_MOD						0x500
 
 
-/* Chip-specific module offsets */
-#define OMAP24XX_GR_MOD					OCP_MOD
-#define OMAP24XX_DSP_MOD				0x800
-
-#define OMAP2430_MDM_MOD				0xc00
-
 /* IVA2 module is < base on 3430 */
 #define OMAP3430_IVA2_MOD				-0x800
 #define OMAP3430ES2_SGX_MOD				GFX_MOD
@@ -63,147 +57,6 @@
 #define TI816X_PRM_SGX_MOD				0x0f00
 #define TI81XX_PRM_ALWON_MOD			0x1800
 
-/* 24XX register bits shared between CM & PRM registers */
-
-/* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
-#define OMAP2420_EN_MMC_SHIFT				26
-#define OMAP2420_EN_MMC_MASK				(1 << 26)
-#define OMAP24XX_EN_UART2_SHIFT				22
-#define OMAP24XX_EN_UART2_MASK				(1 << 22)
-#define OMAP24XX_EN_UART1_SHIFT				21
-#define OMAP24XX_EN_UART1_MASK				(1 << 21)
-#define OMAP24XX_EN_MCSPI2_SHIFT			18
-#define OMAP24XX_EN_MCSPI2_MASK				(1 << 18)
-#define OMAP24XX_EN_MCSPI1_SHIFT			17
-#define OMAP24XX_EN_MCSPI1_MASK				(1 << 17)
-#define OMAP24XX_EN_MCBSP2_SHIFT			16
-#define OMAP24XX_EN_MCBSP2_MASK				(1 << 16)
-#define OMAP24XX_EN_MCBSP1_SHIFT			15
-#define OMAP24XX_EN_MCBSP1_MASK				(1 << 15)
-#define OMAP24XX_EN_GPT12_SHIFT				14
-#define OMAP24XX_EN_GPT12_MASK				(1 << 14)
-#define OMAP24XX_EN_GPT11_SHIFT				13
-#define OMAP24XX_EN_GPT11_MASK				(1 << 13)
-#define OMAP24XX_EN_GPT10_SHIFT				12
-#define OMAP24XX_EN_GPT10_MASK				(1 << 12)
-#define OMAP24XX_EN_GPT9_SHIFT				11
-#define OMAP24XX_EN_GPT9_MASK				(1 << 11)
-#define OMAP24XX_EN_GPT8_SHIFT				10
-#define OMAP24XX_EN_GPT8_MASK				(1 << 10)
-#define OMAP24XX_EN_GPT7_SHIFT				9
-#define OMAP24XX_EN_GPT7_MASK				(1 << 9)
-#define OMAP24XX_EN_GPT6_SHIFT				8
-#define OMAP24XX_EN_GPT6_MASK				(1 << 8)
-#define OMAP24XX_EN_GPT5_SHIFT				7
-#define OMAP24XX_EN_GPT5_MASK				(1 << 7)
-#define OMAP24XX_EN_GPT4_SHIFT				6
-#define OMAP24XX_EN_GPT4_MASK				(1 << 6)
-#define OMAP24XX_EN_GPT3_SHIFT				5
-#define OMAP24XX_EN_GPT3_MASK				(1 << 5)
-#define OMAP24XX_EN_GPT2_SHIFT				4
-#define OMAP24XX_EN_GPT2_MASK				(1 << 4)
-#define OMAP2420_EN_VLYNQ_SHIFT				3
-#define OMAP2420_EN_VLYNQ_MASK				(1 << 3)
-
-/* CM_FCLKEN2_CORE, CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
-#define OMAP2430_EN_GPIO5_SHIFT				10
-#define OMAP2430_EN_GPIO5_MASK				(1 << 10)
-#define OMAP2430_EN_MCSPI3_SHIFT			9
-#define OMAP2430_EN_MCSPI3_MASK				(1 << 9)
-#define OMAP2430_EN_MMCHS2_SHIFT			8
-#define OMAP2430_EN_MMCHS2_MASK				(1 << 8)
-#define OMAP2430_EN_MMCHS1_SHIFT			7
-#define OMAP2430_EN_MMCHS1_MASK				(1 << 7)
-#define OMAP24XX_EN_UART3_SHIFT				2
-#define OMAP24XX_EN_UART3_MASK				(1 << 2)
-#define OMAP24XX_EN_USB_SHIFT				0
-#define OMAP24XX_EN_USB_MASK				(1 << 0)
-
-/* CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
-#define OMAP2430_EN_MDM_INTC_SHIFT			11
-#define OMAP2430_EN_MDM_INTC_MASK			(1 << 11)
-#define OMAP2430_EN_USBHS_SHIFT				6
-#define OMAP2430_EN_USBHS_MASK				(1 << 6)
-#define OMAP24XX_EN_GPMC_SHIFT				1
-#define OMAP24XX_EN_GPMC_MASK				(1 << 1)
-
-/* CM_IDLEST1_CORE, PM_WKST1_CORE shared bits */
-#define OMAP2420_ST_MMC_SHIFT				26
-#define OMAP2420_ST_MMC_MASK				(1 << 26)
-#define OMAP24XX_ST_UART2_SHIFT				22
-#define OMAP24XX_ST_UART2_MASK				(1 << 22)
-#define OMAP24XX_ST_UART1_SHIFT				21
-#define OMAP24XX_ST_UART1_MASK				(1 << 21)
-#define OMAP24XX_ST_MCSPI2_SHIFT			18
-#define OMAP24XX_ST_MCSPI2_MASK				(1 << 18)
-#define OMAP24XX_ST_MCSPI1_SHIFT			17
-#define OMAP24XX_ST_MCSPI1_MASK				(1 << 17)
-#define OMAP24XX_ST_MCBSP2_SHIFT			16
-#define OMAP24XX_ST_MCBSP2_MASK				(1 << 16)
-#define OMAP24XX_ST_MCBSP1_SHIFT			15
-#define OMAP24XX_ST_MCBSP1_MASK				(1 << 15)
-#define OMAP24XX_ST_GPT12_SHIFT				14
-#define OMAP24XX_ST_GPT12_MASK				(1 << 14)
-#define OMAP24XX_ST_GPT11_SHIFT				13
-#define OMAP24XX_ST_GPT11_MASK				(1 << 13)
-#define OMAP24XX_ST_GPT10_SHIFT				12
-#define OMAP24XX_ST_GPT10_MASK				(1 << 12)
-#define OMAP24XX_ST_GPT9_SHIFT				11
-#define OMAP24XX_ST_GPT9_MASK				(1 << 11)
-#define OMAP24XX_ST_GPT8_SHIFT				10
-#define OMAP24XX_ST_GPT8_MASK				(1 << 10)
-#define OMAP24XX_ST_GPT7_SHIFT				9
-#define OMAP24XX_ST_GPT7_MASK				(1 << 9)
-#define OMAP24XX_ST_GPT6_SHIFT				8
-#define OMAP24XX_ST_GPT6_MASK				(1 << 8)
-#define OMAP24XX_ST_GPT5_SHIFT				7
-#define OMAP24XX_ST_GPT5_MASK				(1 << 7)
-#define OMAP24XX_ST_GPT4_SHIFT				6
-#define OMAP24XX_ST_GPT4_MASK				(1 << 6)
-#define OMAP24XX_ST_GPT3_SHIFT				5
-#define OMAP24XX_ST_GPT3_MASK				(1 << 5)
-#define OMAP24XX_ST_GPT2_SHIFT				4
-#define OMAP24XX_ST_GPT2_MASK				(1 << 4)
-#define OMAP2420_ST_VLYNQ_SHIFT				3
-#define OMAP2420_ST_VLYNQ_MASK				(1 << 3)
-
-/* CM_IDLEST2_CORE, PM_WKST2_CORE shared bits */
-#define OMAP2430_ST_MDM_INTC_SHIFT			11
-#define OMAP2430_ST_MDM_INTC_MASK			(1 << 11)
-#define OMAP2430_ST_GPIO5_SHIFT				10
-#define OMAP2430_ST_GPIO5_MASK				(1 << 10)
-#define OMAP2430_ST_MCSPI3_SHIFT			9
-#define OMAP2430_ST_MCSPI3_MASK				(1 << 9)
-#define OMAP2430_ST_MMCHS2_SHIFT			8
-#define OMAP2430_ST_MMCHS2_MASK				(1 << 8)
-#define OMAP2430_ST_MMCHS1_SHIFT			7
-#define OMAP2430_ST_MMCHS1_MASK				(1 << 7)
-#define OMAP2430_ST_USBHS_SHIFT				6
-#define OMAP2430_ST_USBHS_MASK				(1 << 6)
-#define OMAP24XX_ST_UART3_SHIFT				2
-#define OMAP24XX_ST_UART3_MASK				(1 << 2)
-#define OMAP24XX_ST_USB_SHIFT				0
-#define OMAP24XX_ST_USB_MASK				(1 << 0)
-
-/* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
-#define OMAP24XX_EN_GPIOS_SHIFT				2
-#define OMAP24XX_EN_GPIOS_MASK				(1 << 2)
-#define OMAP24XX_EN_GPT1_SHIFT				0
-#define OMAP24XX_EN_GPT1_MASK				(1 << 0)
-
-/* PM_WKST_WKUP, CM_IDLEST_WKUP shared bits */
-#define OMAP24XX_ST_GPIOS_SHIFT				2
-#define OMAP24XX_ST_GPIOS_MASK				(1 << 2)
-#define OMAP24XX_ST_32KSYNC_SHIFT			1
-#define OMAP24XX_ST_32KSYNC_MASK			(1 << 1)
-#define OMAP24XX_ST_GPT1_SHIFT				0
-#define OMAP24XX_ST_GPT1_MASK				(1 << 0)
-
-/* CM_IDLEST_MDM and PM_WKST_MDM shared bits */
-#define OMAP2430_ST_MDM_SHIFT				0
-#define OMAP2430_ST_MDM_MASK				(1 << 0)
-
-
 /* 3430 register bits shared between CM & PRM registers */
 
 /* CM_REVISION, PRM_REVISION shared bits */
diff --git a/arch/arm/mach-omap2/prm-regbits-24xx.h b/arch/arm/mach-omap2/prm-regbits-24xx.h
deleted file mode 100644
index ff83801f6439..000000000000
--- a/arch/arm/mach-omap2/prm-regbits-24xx.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_24XX_H
-#define __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_24XX_H
-
-/*
- * OMAP24XX Power/Reset Management register bits
- *
- * Copyright (C) 2007 Texas Instruments, Inc.
- * Copyright (C) 2007 Nokia Corporation
- *
- * Written by Paul Walmsley
- */
-
-#include "prm2xxx.h"
-
-#define OMAP24XX_EN_CORE_SHIFT 				0
-#define OMAP24XX_FORCESTATE_MASK			(1 << 18)
-#define OMAP24XX_AUTOIDLE_MASK				(1 << 0)
-#define OMAP24XX_AUTO_EXTVOLT_MASK			(1 << 15)
-#define OMAP24XX_SETOFF_LEVEL_SHIFT			12
-#define OMAP24XX_MEMRETCTRL_MASK			(1 << 8)
-#define OMAP24XX_SETRET_LEVEL_SHIFT			6
-#define OMAP24XX_VOLT_LEVEL_SHIFT			0
-#define OMAP2420_CLKOUT2_EN_SHIFT			15
-#define OMAP2420_CLKOUT2_DIV_SHIFT			11
-#define OMAP2420_CLKOUT2_DIV_WIDTH			3
-#define OMAP2420_CLKOUT2_SOURCE_MASK			(0x3 << 8)
-#define OMAP24XX_CLKOUT_EN_SHIFT			7
-#define OMAP24XX_CLKOUT_DIV_SHIFT			3
-#define OMAP24XX_CLKOUT_DIV_WIDTH			3
-#define OMAP24XX_CLKOUT_SOURCE_MASK			(0x3 << 0)
-#define OMAP24XX_EMULATION_EN_SHIFT			0
-#define OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT		5
-#define OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT		2
-#define OMAP24XX_EXTWMPU_RST_SHIFT			6
-#define OMAP24XX_SECU_WD_RST_SHIFT			5
-#define OMAP24XX_MPU_WD_RST_SHIFT			4
-#define OMAP24XX_SECU_VIOL_RST_SHIFT			3
-#endif
diff --git a/arch/arm/mach-omap2/prm2xxx.c b/arch/arm/mach-omap2/prm2xxx.c
deleted file mode 100644
index 35a58f54b528..000000000000
--- a/arch/arm/mach-omap2/prm2xxx.c
+++ /dev/null
@@ -1,229 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * OMAP2xxx PRM module functions
- *
- * Copyright (C) 2010-2012 Texas Instruments, Inc.
- * Copyright (C) 2010 Nokia Corporation
- * Benoît Cousson
- * Paul Walmsley
- * Rajendra Nayak <rnayak@ti.com>
- */
-
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/irq.h>
-
-#include "powerdomain.h"
-#include "clockdomain.h"
-#include "prm2xxx.h"
-#include "cm2xxx_3xxx.h"
-#include "prm-regbits-24xx.h"
-
-/*
- * OMAP24xx PM_PWSTCTRL_*.POWERSTATE and PM_PWSTST_*.LASTSTATEENTERED bits -
- * these are reversed from the bits used on OMAP3+
- */
-#define OMAP24XX_PWRDM_POWER_ON			0x0
-#define OMAP24XX_PWRDM_POWER_RET		0x1
-#define OMAP24XX_PWRDM_POWER_OFF		0x3
-
-/*
- * omap2xxx_prm_reset_src_map - map from bits in the PRM_RSTST_WKUP
- *   hardware register (which are specific to the OMAP2xxx SoCs) to
- *   reset source ID bit shifts (which is an OMAP SoC-independent
- *   enumeration)
- */
-static struct prm_reset_src_map omap2xxx_prm_reset_src_map[] = {
-	{ OMAP_GLOBALCOLD_RST_SHIFT, OMAP_GLOBAL_COLD_RST_SRC_ID_SHIFT },
-	{ OMAP_GLOBALWARM_RST_SHIFT, OMAP_GLOBAL_WARM_RST_SRC_ID_SHIFT },
-	{ OMAP24XX_SECU_VIOL_RST_SHIFT, OMAP_SECU_VIOL_RST_SRC_ID_SHIFT },
-	{ OMAP24XX_MPU_WD_RST_SHIFT, OMAP_MPU_WD_RST_SRC_ID_SHIFT },
-	{ OMAP24XX_SECU_WD_RST_SHIFT, OMAP_SECU_WD_RST_SRC_ID_SHIFT },
-	{ OMAP24XX_EXTWMPU_RST_SHIFT, OMAP_EXTWARM_RST_SRC_ID_SHIFT },
-	{ -1, -1 },
-};
-
-/**
- * omap2xxx_prm_read_reset_sources - return the last SoC reset source
- *
- * Return a u32 representing the last reset sources of the SoC.  The
- * returned reset source bits are standardized across OMAP SoCs.
- */
-static u32 omap2xxx_prm_read_reset_sources(void)
-{
-	struct prm_reset_src_map *p;
-	u32 r = 0;
-	u32 v;
-
-	v = omap2_prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST);
-
-	p = omap2xxx_prm_reset_src_map;
-	while (p->reg_shift >= 0 && p->std_shift >= 0) {
-		if (v & (1 << p->reg_shift))
-			r |= 1 << p->std_shift;
-		p++;
-	}
-
-	return r;
-}
-
-/**
- * omap2xxx_pwrst_to_common_pwrst - convert OMAP2xxx pwrst to common pwrst
- * @omap2xxx_pwrst: OMAP2xxx hardware power state to convert
- *
- * Return the common power state bits corresponding to the OMAP2xxx
- * hardware power state bits @omap2xxx_pwrst, or -EINVAL upon error.
- */
-static int omap2xxx_pwrst_to_common_pwrst(u8 omap2xxx_pwrst)
-{
-	u8 pwrst;
-
-	switch (omap2xxx_pwrst) {
-	case OMAP24XX_PWRDM_POWER_OFF:
-		pwrst = PWRDM_POWER_OFF;
-		break;
-	case OMAP24XX_PWRDM_POWER_RET:
-		pwrst = PWRDM_POWER_RET;
-		break;
-	case OMAP24XX_PWRDM_POWER_ON:
-		pwrst = PWRDM_POWER_ON;
-		break;
-	default:
-		return -EINVAL;
-	}
-
-	return pwrst;
-}
-
-/**
- * omap2xxx_prm_dpll_reset - use DPLL reset to reboot the OMAP SoC
- *
- * Set the DPLL reset bit, which should reboot the SoC.  This is the
- * recommended way to restart the SoC.  No return value.
- */
-static void omap2xxx_prm_dpll_reset(void)
-{
-	omap2_prm_set_mod_reg_bits(OMAP_RST_DPLL3_MASK, WKUP_MOD,
-				   OMAP2_RM_RSTCTRL);
-	/* OCP barrier */
-	omap2_prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTCTRL);
-}
-
-/**
- * omap2xxx_prm_clear_mod_irqs - clear wakeup status bits for a module
- * @module: PRM module to clear wakeups from
- * @regs: register offset to clear
- * @wkst_mask: wakeup status mask to clear
- *
- * Clears wakeup status bits for a given module, so that the device can
- * re-enter idle.
- */
-static int omap2xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask)
-{
-	u32 wkst;
-
-	wkst = omap2_prm_read_mod_reg(module, regs);
-	wkst &= wkst_mask;
-	omap2_prm_write_mod_reg(wkst, module, regs);
-	return 0;
-}
-
-int omap2xxx_clkdm_sleep(struct clockdomain *clkdm)
-{
-	omap2_prm_set_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
-				   clkdm->pwrdm.ptr->prcm_offs,
-				   OMAP2_PM_PWSTCTRL);
-	return 0;
-}
-
-int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm)
-{
-	omap2_prm_clear_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
-				     clkdm->pwrdm.ptr->prcm_offs,
-				     OMAP2_PM_PWSTCTRL);
-	return 0;
-}
-
-static int omap2xxx_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
-{
-	u8 omap24xx_pwrst;
-
-	switch (pwrst) {
-	case PWRDM_POWER_OFF:
-		omap24xx_pwrst = OMAP24XX_PWRDM_POWER_OFF;
-		break;
-	case PWRDM_POWER_RET:
-		omap24xx_pwrst = OMAP24XX_PWRDM_POWER_RET;
-		break;
-	case PWRDM_POWER_ON:
-		omap24xx_pwrst = OMAP24XX_PWRDM_POWER_ON;
-		break;
-	default:
-		return -EINVAL;
-	}
-
-	omap2_prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK,
-				   (omap24xx_pwrst << OMAP_POWERSTATE_SHIFT),
-				   pwrdm->prcm_offs, OMAP2_PM_PWSTCTRL);
-	return 0;
-}
-
-static int omap2xxx_pwrdm_read_next_pwrst(struct powerdomain *pwrdm)
-{
-	u8 omap2xxx_pwrst;
-
-	omap2xxx_pwrst = omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs,
-						       OMAP2_PM_PWSTCTRL,
-						       OMAP_POWERSTATE_MASK);
-
-	return omap2xxx_pwrst_to_common_pwrst(omap2xxx_pwrst);
-}
-
-static int omap2xxx_pwrdm_read_pwrst(struct powerdomain *pwrdm)
-{
-	u8 omap2xxx_pwrst;
-
-	omap2xxx_pwrst = omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs,
-						       OMAP2_PM_PWSTST,
-						       OMAP_POWERSTATEST_MASK);
-
-	return omap2xxx_pwrst_to_common_pwrst(omap2xxx_pwrst);
-}
-
-struct pwrdm_ops omap2_pwrdm_operations = {
-	.pwrdm_set_next_pwrst	= omap2xxx_pwrdm_set_next_pwrst,
-	.pwrdm_read_next_pwrst	= omap2xxx_pwrdm_read_next_pwrst,
-	.pwrdm_read_pwrst	= omap2xxx_pwrdm_read_pwrst,
-	.pwrdm_set_logic_retst	= omap2_pwrdm_set_logic_retst,
-	.pwrdm_set_mem_onst	= omap2_pwrdm_set_mem_onst,
-	.pwrdm_set_mem_retst	= omap2_pwrdm_set_mem_retst,
-	.pwrdm_read_mem_pwrst	= omap2_pwrdm_read_mem_pwrst,
-	.pwrdm_read_mem_retst	= omap2_pwrdm_read_mem_retst,
-	.pwrdm_wait_transition	= omap2_pwrdm_wait_transition,
-};
-
-/*
- *
- */
-
-static struct prm_ll_data omap2xxx_prm_ll_data = {
-	.read_reset_sources = &omap2xxx_prm_read_reset_sources,
-	.assert_hardreset = &omap2_prm_assert_hardreset,
-	.deassert_hardreset = &omap2_prm_deassert_hardreset,
-	.is_hardreset_asserted = &omap2_prm_is_hardreset_asserted,
-	.reset_system = &omap2xxx_prm_dpll_reset,
-	.clear_mod_irqs = &omap2xxx_prm_clear_mod_irqs,
-};
-
-int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data)
-{
-	return prm_register(&omap2xxx_prm_ll_data);
-}
-
-static void __exit omap2xxx_prm_exit(void)
-{
-	prm_unregister(&omap2xxx_prm_ll_data);
-}
-__exitcall(omap2xxx_prm_exit);
diff --git a/arch/arm/mach-omap2/prm2xxx.h b/arch/arm/mach-omap2/prm2xxx.h
deleted file mode 100644
index 659b917348f8..000000000000
--- a/arch/arm/mach-omap2/prm2xxx.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * OMAP2xxx Power/Reset Management (PRM) register definitions
- *
- * Copyright (C) 2007-2009, 2011-2012 Texas Instruments, Inc.
- * Copyright (C) 2008-2010 Nokia Corporation
- * Paul Walmsley
- *
- * The PRM hardware modules on the OMAP2/3 are quite similar to each
- * other.  The PRM on OMAP4 has a new register layout, and is handled
- * in a separate file.
- */
-#ifndef __ARCH_ARM_MACH_OMAP2_PRM2XXX_H
-#define __ARCH_ARM_MACH_OMAP2_PRM2XXX_H
-
-#include "prcm-common.h"
-#include "prm.h"
-#include "prm2xxx_3xxx.h"
-
-#define OMAP2420_PRM_REGADDR(module, reg)				\
-		OMAP2_L4_IO_ADDRESS(OMAP2420_PRM_BASE + (module) + (reg))
-#define OMAP2430_PRM_REGADDR(module, reg)				\
-		OMAP2_L4_IO_ADDRESS(OMAP2430_PRM_BASE + (module) + (reg))
-
-/*
- * OMAP2-specific global PRM registers
- * Use {read,write}l_relaxed() with these registers.
- *
- * With a few exceptions, these are the register names beginning with
- * PRCM_* on 24xx.  (The exceptions are the IRQSTATUS and IRQENABLE
- * bits.)
- *
- */
-
-#define OMAP2_PRCM_REVISION_OFFSET	0x0000
-#define OMAP2420_PRCM_REVISION		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0000)
-#define OMAP2_PRCM_SYSCONFIG_OFFSET	0x0010
-#define OMAP2420_PRCM_SYSCONFIG		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0010)
-
-#define OMAP2_PRCM_IRQSTATUS_MPU_OFFSET	0x0018
-#define OMAP2420_PRCM_IRQSTATUS_MPU	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0018)
-#define OMAP2_PRCM_IRQENABLE_MPU_OFFSET	0x001c
-#define OMAP2420_PRCM_IRQENABLE_MPU	OMAP2420_PRM_REGADDR(OCP_MOD, 0x001c)
-
-#define OMAP2_PRCM_VOLTCTRL_OFFSET	0x0050
-#define OMAP2420_PRCM_VOLTCTRL		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0050)
-#define OMAP2_PRCM_VOLTST_OFFSET	0x0054
-#define OMAP2420_PRCM_VOLTST		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0054)
-#define OMAP2_PRCM_CLKSRC_CTRL_OFFSET	0x0060
-#define OMAP2420_PRCM_CLKSRC_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0060)
-#define OMAP2_PRCM_CLKOUT_CTRL_OFFSET	0x0070
-#define OMAP2420_PRCM_CLKOUT_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0070)
-#define OMAP2_PRCM_CLKEMUL_CTRL_OFFSET	0x0078
-#define OMAP2420_PRCM_CLKEMUL_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0078)
-#define OMAP2_PRCM_CLKCFG_CTRL_OFFSET	0x0080
-#define OMAP2420_PRCM_CLKCFG_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0080)
-#define OMAP2_PRCM_CLKCFG_STATUS_OFFSET	0x0084
-#define OMAP2420_PRCM_CLKCFG_STATUS	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0084)
-#define OMAP2_PRCM_VOLTSETUP_OFFSET	0x0090
-#define OMAP2420_PRCM_VOLTSETUP		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0090)
-#define OMAP2_PRCM_CLKSSETUP_OFFSET	0x0094
-#define OMAP2420_PRCM_CLKSSETUP		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0094)
-#define OMAP2_PRCM_POLCTRL_OFFSET	0x0098
-#define OMAP2420_PRCM_POLCTRL		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0098)
-
-#define OMAP2430_PRCM_REVISION		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0000)
-#define OMAP2430_PRCM_SYSCONFIG		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0010)
-
-#define OMAP2430_PRCM_IRQSTATUS_MPU	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0018)
-#define OMAP2430_PRCM_IRQENABLE_MPU	OMAP2430_PRM_REGADDR(OCP_MOD, 0x001c)
-
-#define OMAP2430_PRCM_VOLTCTRL		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0050)
-#define OMAP2430_PRCM_VOLTST		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0054)
-#define OMAP2430_PRCM_CLKSRC_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0060)
-#define OMAP2430_PRCM_CLKOUT_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0070)
-#define OMAP2430_PRCM_CLKEMUL_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0078)
-#define OMAP2430_PRCM_CLKCFG_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0080)
-#define OMAP2430_PRCM_CLKCFG_STATUS	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0084)
-#define OMAP2430_PRCM_VOLTSETUP		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0090)
-#define OMAP2430_PRCM_CLKSSETUP		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0094)
-#define OMAP2430_PRCM_POLCTRL		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0098)
-
-/*
- * Module specific PRM register offsets from PRM_BASE + domain offset
- *
- * Use prm_{read,write}_mod_reg() with these registers.
- *
- * With a few exceptions, these are the register names beginning with
- * {PM,RM}_* on both OMAP2/3 SoC families..  (The exceptions are the
- * IRQSTATUS and IRQENABLE bits.)
- */
-
-/* Register offsets appearing on both OMAP2 and OMAP3 */
-
-#define OMAP2_RM_RSTCTRL				0x0050
-#define OMAP2_RM_RSTTIME				0x0054
-#define OMAP2_RM_RSTST					0x0058
-#define OMAP2_PM_PWSTCTRL				0x00e0
-#define OMAP2_PM_PWSTST					0x00e4
-
-#define PM_WKEN						0x00a0
-#define PM_WKEN1					PM_WKEN
-#define PM_WKST						0x00b0
-#define PM_WKST1					PM_WKST
-#define PM_WKDEP					0x00c8
-#define PM_EVGENCTRL					0x00d4
-#define PM_EVGENONTIM					0x00d8
-#define PM_EVGENOFFTIM					0x00dc
-
-/* OMAP2xxx specific register offsets */
-#define OMAP24XX_PM_WKEN2				0x00a4
-#define OMAP24XX_PM_WKST2				0x00b4
-
-#define OMAP24XX_PRCM_IRQSTATUS_DSP			0x00f0	/* IVA mod */
-#define OMAP24XX_PRCM_IRQENABLE_DSP			0x00f4	/* IVA mod */
-#define OMAP24XX_PRCM_IRQSTATUS_IVA			0x00f8
-#define OMAP24XX_PRCM_IRQENABLE_IVA			0x00fc
-
-#ifndef __ASSEMBLER__
-/* Function prototypes */
-extern int omap2xxx_clkdm_sleep(struct clockdomain *clkdm);
-extern int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm);
-
-int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data);
-
-#endif
-
-#endif
diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c b/arch/arm/mach-omap2/prm2xxx_3xxx.c
index d983efac6f4f..afaba7153ece 100644
--- a/arch/arm/mach-omap2/prm2xxx_3xxx.c
+++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c
@@ -15,7 +15,6 @@
 
 #include "powerdomain.h"
 #include "prm2xxx_3xxx.h"
-#include "prm-regbits-24xx.h"
 #include "clockdomain.h"
 
 /**
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index ee4588acda50..3546e7292bfb 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -26,7 +26,6 @@
 
 #include "soc.h"
 #include "prm2xxx_3xxx.h"
-#include "prm2xxx.h"
 #include "prm3xxx.h"
 #include "prm33xx.h"
 #include "prm44xx.h"
@@ -582,13 +581,6 @@ int prm_unregister(struct prm_ll_data *pld)
 	return 0;
 }
 
-#ifdef CONFIG_ARCH_OMAP2
-static struct omap_prcm_init_data omap2_prm_data __initdata = {
-	.index = TI_CLKM_PRM,
-	.init = omap2xxx_prm_init,
-};
-#endif
-
 #ifdef CONFIG_ARCH_OMAP3
 static struct omap_prcm_init_data omap3_prm_data __initdata = {
 	.index = TI_CLKM_PRM,
@@ -670,9 +662,6 @@ static const struct of_device_id omap_prcm_dt_match_table[] __initconst = {
 	{ .compatible = "ti,dm814-pllss", .data = &dm814_pllss_data },
 	{ .compatible = "ti,dm816-prcm", .data = &am3_prm_data },
 #endif
-#ifdef CONFIG_ARCH_OMAP2
-	{ .compatible = "ti,omap2-prcm", .data = &omap2_prm_data },
-#endif
 #ifdef CONFIG_ARCH_OMAP3
 	{ .compatible = "ti,omap3-prm", .data = &omap3_prm_data },
 #endif
diff --git a/arch/arm/mach-omap2/sdrc.h b/arch/arm/mach-omap2/sdrc.h
index 45b35422b587..c34fba4d2f1a 100644
--- a/arch/arm/mach-omap2/sdrc.h
+++ b/arch/arm/mach-omap2/sdrc.h
@@ -90,17 +90,7 @@ struct memory_timings {
 	u32 base_cs;		/* base chip select to use for calculations */
 };
 
-extern void omap2xxx_sdrc_init_params(u32 force_lock_to_unlock_mode);
-
-u32 omap2xxx_sdrc_dll_is_unlocked(void);
-u32 omap2xxx_sdrc_reprogram(u32 level, u32 force);
-
-
 #else
-#define OMAP242X_SDRC_REGADDR(reg)					\
-			OMAP2_L3_IO_ADDRESS(OMAP2420_SDRC_BASE + (reg))
-#define OMAP243X_SDRC_REGADDR(reg)					\
-			OMAP2_L3_IO_ADDRESS(OMAP243X_SDRC_BASE + (reg))
 #define OMAP34XX_SDRC_REGADDR(reg)					\
 			OMAP2_L3_IO_ADDRESS(OMAP343X_SDRC_BASE + (reg))
 
@@ -184,17 +174,6 @@ u32 omap2xxx_sdrc_reprogram(u32 level, u32 force);
 #define SDRC_RFR_CTRL_BYPASS	(0x00005000 | 1) /* Need to calc */
 
 
-/*
- * SMS register access
- */
-
-#define OMAP242X_SMS_REGADDR(reg)					\
-		(void __iomem *)OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE + reg)
-#define OMAP243X_SMS_REGADDR(reg)					\
-		(void __iomem *)OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE + reg)
-#define OMAP343X_SMS_REGADDR(reg)					\
-		(void __iomem *)OMAP2_L3_IO_ADDRESS(OMAP343X_SMS_BASE + reg)
-
 /* SMS register offsets - read/write with sms_{read,write}_reg() */
 
 #define SMS_SYSCONFIG			0x010
diff --git a/arch/arm/mach-omap2/sdrc2xxx.c b/arch/arm/mach-omap2/sdrc2xxx.c
deleted file mode 100644
index 5a275b4fd404..000000000000
--- a/arch/arm/mach-omap2/sdrc2xxx.c
+++ /dev/null
@@ -1,164 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * SDRAM timing related functions for OMAP2xxx
- *
- * Copyright (C) 2005, 2008 Texas Instruments Inc.
- * Copyright (C) 2005, 2008 Nokia Corporation
- *
- * Tony Lindgren <tony@atomide.com>
- * Paul Walmsley
- * Richard Woodruff <r-woodruff2@ti.com>
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/device.h>
-#include <linux/list.h>
-#include <linux/errno.h>
-#include <linux/delay.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-
-#include "soc.h"
-#include "iomap.h"
-#include "common.h"
-#include "prm2xxx.h"
-#include "clock.h"
-#include "sdrc.h"
-#include "sram.h"
-
-/* Memory timing, DLL mode flags */
-#define M_DDR		1
-#define M_LOCK_CTRL	(1 << 2)
-#define M_UNLOCK	0
-#define M_LOCK		1
-
-
-static struct memory_timings mem_timings;
-static u32 curr_perf_level = CORE_CLK_SRC_DPLL_X2;
-
-static u32 omap2xxx_sdrc_get_slow_dll_ctrl(void)
-{
-	return mem_timings.slow_dll_ctrl;
-}
-
-static u32 omap2xxx_sdrc_get_fast_dll_ctrl(void)
-{
-	return mem_timings.fast_dll_ctrl;
-}
-
-static u32 omap2xxx_sdrc_get_type(void)
-{
-	return mem_timings.m_type;
-}
-
-/*
- * Check the DLL lock state, and return tue if running in unlock mode.
- * This is needed to compensate for the shifted DLL value in unlock mode.
- */
-u32 omap2xxx_sdrc_dll_is_unlocked(void)
-{
-	/* dlla and dllb are a set */
-	u32 dll_state = sdrc_read_reg(SDRC_DLLA_CTRL);
-
-	if ((dll_state & (1 << 2)) == (1 << 2))
-		return 1;
-	else
-		return 0;
-}
-
-/*
- * 'level' is the value to store to CM_CLKSEL2_PLL.CORE_CLK_SRC.
- * Practical values are CORE_CLK_SRC_DPLL (for CORE_CLK = DPLL_CLK) or
- * CORE_CLK_SRC_DPLL_X2 (for CORE_CLK = * DPLL_CLK * 2)
- *
- * Used by the clock framework during CORE DPLL changes
- */
-u32 omap2xxx_sdrc_reprogram(u32 level, u32 force)
-{
-	u32 dll_ctrl, m_type;
-	u32 prev = curr_perf_level;
-	unsigned long flags;
-
-	if ((curr_perf_level == level) && !force)
-		return prev;
-
-	if (level == CORE_CLK_SRC_DPLL)
-		dll_ctrl = omap2xxx_sdrc_get_slow_dll_ctrl();
-	else if (level == CORE_CLK_SRC_DPLL_X2)
-		dll_ctrl = omap2xxx_sdrc_get_fast_dll_ctrl();
-	else
-		return prev;
-
-	m_type = omap2xxx_sdrc_get_type();
-
-	local_irq_save(flags);
-	/*
-	 * XXX These calls should be abstracted out through a
-	 * prm2xxx.c function
-	 */
-	if (cpu_is_omap2420())
-		writel_relaxed(0xffff, OMAP2420_PRCM_VOLTSETUP);
-	else
-		writel_relaxed(0xffff, OMAP2430_PRCM_VOLTSETUP);
-	omap2_sram_reprogram_sdrc(level, dll_ctrl, m_type);
-	curr_perf_level = level;
-	local_irq_restore(flags);
-
-	return prev;
-}
-
-/* Used by the clock framework during CORE DPLL changes */
-void omap2xxx_sdrc_init_params(u32 force_lock_to_unlock_mode)
-{
-	unsigned long dll_cnt;
-	u32 fast_dll = 0;
-
-	/* DDR = 1, SDR = 0 */
-	mem_timings.m_type = !((sdrc_read_reg(SDRC_MR_0) & 0x3) == 0x1);
-
-	/* 2422 es2.05 and beyond has a single SIP DDR instead of 2 like others.
-	 * In the case of 2422, its ok to use CS1 instead of CS0.
-	 */
-	if (cpu_is_omap2422())
-		mem_timings.base_cs = 1;
-	else
-		mem_timings.base_cs = 0;
-
-	if (mem_timings.m_type != M_DDR)
-		return;
-
-	/* With DDR we need to determine the low frequency DLL value */
-	if (((mem_timings.fast_dll_ctrl & (1 << 2)) == M_LOCK_CTRL))
-		mem_timings.dll_mode = M_UNLOCK;
-	else
-		mem_timings.dll_mode = M_LOCK;
-
-	if (mem_timings.base_cs == 0) {
-		fast_dll = sdrc_read_reg(SDRC_DLLA_CTRL);
-		dll_cnt = sdrc_read_reg(SDRC_DLLA_STATUS) & 0xff00;
-	} else {
-		fast_dll = sdrc_read_reg(SDRC_DLLB_CTRL);
-		dll_cnt = sdrc_read_reg(SDRC_DLLB_STATUS) & 0xff00;
-	}
-	if (force_lock_to_unlock_mode) {
-		fast_dll &= ~0xff00;
-		fast_dll |= dll_cnt;		/* Current lock mode */
-	}
-	/* set fast timings with DLL filter disabled */
-	mem_timings.fast_dll_ctrl = (fast_dll | (3 << 8));
-
-	/* No disruptions, DDR will be offline & C-ABI not followed */
-	omap2_sram_ddr_init(&mem_timings.slow_dll_ctrl,
-			    mem_timings.fast_dll_ctrl,
-			    mem_timings.base_cs,
-			    force_lock_to_unlock_mode);
-	mem_timings.slow_dll_ctrl &= 0xff00;	/* Keep lock value */
-
-	/* Turn status into unlock ctrl */
-	mem_timings.slow_dll_ctrl |=
-		((mem_timings.fast_dll_ctrl & 0xF) | (1 << 2));
-
-	/* 90 degree phase for anything below 133MHz + disable DLL filter */
-	mem_timings.slow_dll_ctrl |= ((1 << 1) | (3 << 8));
-}
diff --git a/arch/arm/mach-omap2/sleep24xx.S b/arch/arm/mach-omap2/sleep24xx.S
deleted file mode 100644
index 84d8c43ad382..000000000000
--- a/arch/arm/mach-omap2/sleep24xx.S
+++ /dev/null
@@ -1,91 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * linux/arch/arm/mach-omap2/sleep.S
- *
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * (C) Copyright 2006 Nokia Corporation
- * Fixed idle loop sleep
- * Igor Stoppa <igor.stoppa@nokia.com>
- */
-
-#include <linux/linkage.h>
-#include <asm/assembler.h>
-
-#include "omap24xx.h"
-#include "sdrc.h"
-
-/* First address of reserved address space?  apparently valid for OMAP2 & 3 */
-#define A_SDRC0_V		(0xC0000000)
-
-	.text
-
-/*
- * omap24xx_cpu_suspend() - Forces OMAP into deep sleep state by completing
- * SDRC shutdown then ARM shutdown.  Upon wake MPU is back on so just restore
- * SDRC.
- *
- * Input:
- * R0 :	DLL ctrl value pre-Sleep
- * R1 : SDRC_DLLA_CTRL
- * R2 : SDRC_POWER
- *
- * The if the DPLL is going to AutoIdle. It seems like the DPLL may be back on
- * when we get called, but the DLL probably isn't.  We will wait a bit more in
- * case the DPLL isn't quite there yet. The code will wait on DLL for DDR even
- * if in unlocked mode.
- *
- * For less than 242x-ES2.2 upon wake from a sleep mode where the external
- * oscillator was stopped, a timing bug exists where a non-stabilized 12MHz
- * clock can pass into the PRCM can cause problems at DSP and IVA.
- * To work around this the code will switch to the 32kHz source prior to sleep.
- * Post sleep we will shift back to using the DPLL.  Apparently,
- * CM_IDLEST_CLKGEN does not reflect the full clock change so you need to wait
- * 3x12MHz + 3x32kHz clocks for a full switch.
- *
- * The DLL load value is not kept in RETENTION or OFF.	It needs to be restored
- * at wake
- */
-	.align	3
-ENTRY(omap24xx_cpu_suspend)
-	stmfd	sp!, {r0 - r12, lr}	@ save registers on stack
-	mov	r3, #0x0		@ clear for mcr call
-	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier, hope SDR/DDR finished
-	nop
-	nop
-	ldr	r4, [r2]		@ read SDRC_POWER
-	orr	r4, r4, #0x40		@ enable self refresh on idle req
-	mov	r5, #0x2000		@ set delay (DPLL relock + DLL relock)
-	str	r4, [r2]		@ make it so
-	nop
-	mcr	p15, 0, r3, c7, c0, 4	@ wait for interrupt
-	nop
-loop:
-	subs	r5, r5, #0x1		@ awake, wait just a bit
-	bne	loop
-
-	/* The DPLL has to be on before we take the DDR out of self refresh */
-	bic	r4, r4, #0x40		@ now clear self refresh bit.
-	str	r4, [r2]		@ write to SDRC_POWER
-	ldr	r4, A_SDRC0		@ make a clock happen
-	ldr	r4, [r4]		@ read A_SDRC0
-	nop				@ start auto refresh only after clk ok
-	movs	r0, r0			@ see if DDR or SDR
-	strne	r0, [r1]		@ rewrite DLLA to force DLL reload
-	addne	r1, r1, #0x8		@ move to DLLB
-	strne	r0, [r1]		@ rewrite DLLB to force DLL reload
-
-	mov	r5, #0x1000
-loop2:
-	subs	r5, r5, #0x1
-	bne	loop2
-	/* resume*/
-	ldmfd	sp!, {r0 - r12, pc}	@ restore regs and return
-
-A_SDRC0:
-	.word A_SDRC0_V
-
-ENTRY(omap24xx_cpu_suspend_sz)
-	.word	. - omap24xx_cpu_suspend
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h
index 9e3dbb743e5c..9c9f56ca9142 100644
--- a/arch/arm/mach-omap2/soc.h
+++ b/arch/arm/mach-omap2/soc.h
@@ -12,7 +12,6 @@
  * Added DRA7xxx specific defines - Sricharan R<r.sricharan@ti.com>
  */
 
-#include "omap24xx.h"
 #include "omap34xx.h"
 #include "omap44xx.h"
 #include "ti81xx.h"
@@ -62,9 +61,6 @@ static inline int soc_is_omap(void)
 /*
  * Macros to group OMAP into cpu classes.
  * These can be used in most places.
- * soc_is_omap24xx():	True for OMAP2420, OMAP2422, OMAP2423, OMAP2430
- * soc_is_omap242x():	True for OMAP2420, OMAP2422, OMAP2423
- * soc_is_omap243x():	True for OMAP2430
  * soc_is_omap343x():	True for OMAP3430
  * soc_is_omap443x():	True for OMAP4430
  * soc_is_omap446x():	True for OMAP4460
@@ -137,7 +133,6 @@ static inline int is_dra ##subclass ##_ ##package (void)		\
 	return (is_dra ##subclass () && GET_DRA_PACKAGE == id) ? 1 : 0;	\
 }
 
-IS_OMAP_CLASS(24xx, 0x24)
 IS_OMAP_CLASS(34xx, 0x34)
 IS_OMAP_CLASS(44xx, 0x44)
 IS_AM_CLASS(35xx, 0x35)
@@ -148,8 +143,6 @@ IS_AM_CLASS(43xx, 0x43)
 IS_TI_CLASS(81xx, 0x81)
 IS_DRA_CLASS(7xx, 0x7)
 
-IS_OMAP_SUBCLASS(242x, 0x242)
-IS_OMAP_SUBCLASS(243x, 0x243)
 IS_OMAP_SUBCLASS(343x, 0x343)
 IS_OMAP_SUBCLASS(363x, 0x363)
 IS_OMAP_SUBCLASS(443x, 0x443)
@@ -186,21 +179,6 @@ IS_DRA_SUBCLASS(72x, 0x72)
 #define soc_is_dra74x()			0
 #define soc_is_dra72x()			0
 
-#if defined(CONFIG_ARCH_OMAP2)
-# define soc_is_omap24xx()		is_omap24xx()
-#else
-# define soc_is_omap24xx()		0
-#endif
-#if defined(CONFIG_SOC_OMAP2420)
-# define soc_is_omap242x()		is_omap242x()
-#else
-# define soc_is_omap242x()		0
-#endif
-#if defined(CONFIG_SOC_OMAP2430)
-# define soc_is_omap243x()		is_omap243x()
-#else
-# define soc_is_omap243x()		0
-#endif
 #if defined(CONFIG_ARCH_OMAP3)
 # define soc_is_omap34xx()		is_omap34xx()
 # define soc_is_omap343x()		is_omap343x()
@@ -212,10 +190,6 @@ IS_DRA_SUBCLASS(72x, 0x72)
 /*
  * Macros to detect individual cpu types.
  * These are only rarely needed.
- * soc_is_omap2420():	True for OMAP2420
- * soc_is_omap2422():	True for OMAP2422
- * soc_is_omap2423():	True for OMAP2423
- * soc_is_omap2430():	True for OMAP2430
  * soc_is_omap3430():	True for OMAP3430
  */
 #define GET_OMAP_TYPE	((omap_rev() >> 16) & 0xffff)
@@ -226,16 +200,8 @@ static inline int is_omap ##type (void)			\
 	return (GET_OMAP_TYPE == (id)) ? 1 : 0;		\
 }
 
-IS_OMAP_TYPE(2420, 0x2420)
-IS_OMAP_TYPE(2422, 0x2422)
-IS_OMAP_TYPE(2423, 0x2423)
-IS_OMAP_TYPE(2430, 0x2430)
 IS_OMAP_TYPE(3430, 0x3430)
 
-#define soc_is_omap2420()		0
-#define soc_is_omap2422()		0
-#define soc_is_omap2423()		0
-#define soc_is_omap2430()		0
 #define soc_is_omap3430()		0
 #define soc_is_omap3630()		0
 #define soc_is_omap5430()		0
@@ -252,17 +218,6 @@ IS_OMAP_TYPE(3430, 0x3430)
 #define cpu_class_is_omap1()		0
 #define cpu_class_is_omap2()		1
 
-#if defined(CONFIG_ARCH_OMAP2)
-# undef  soc_is_omap2420
-# undef  soc_is_omap2422
-# undef  soc_is_omap2423
-# undef  soc_is_omap2430
-# define soc_is_omap2420()		is_omap2420()
-# define soc_is_omap2422()		is_omap2422()
-# define soc_is_omap2423()		is_omap2423()
-# define soc_is_omap2430()		is_omap2430()
-#endif
-
 #if defined(CONFIG_ARCH_OMAP3)
 # undef soc_is_omap3430
 # undef soc_is_ti81xx
@@ -326,13 +281,6 @@ IS_OMAP_TYPE(3430, 0x3430)
 #endif
 
 /* Various silicon revisions for omap2 */
-#define OMAP242X_CLASS		0x24200024
-#define OMAP2420_REV_ES1_0	OMAP242X_CLASS
-#define OMAP2420_REV_ES2_0	(OMAP242X_CLASS | (0x1 << 8))
-
-#define OMAP243X_CLASS		0x24300024
-#define OMAP2430_REV_ES1_0	OMAP243X_CLASS
-
 #define OMAP343X_CLASS		0x34300034
 #define OMAP3430_REV_ES1_0	OMAP343X_CLASS
 #define OMAP3430_REV_ES2_0	(OMAP343X_CLASS | (0x1 << 8))
@@ -400,7 +348,6 @@ IS_OMAP_TYPE(3430, 0x3430)
 #define DRA722_REV_ES2_0	(DRA7XX_CLASS | (0x22 << 16) | (0x20 << 8))
 #define DRA722_REV_ES2_1	(DRA7XX_CLASS | (0x22 << 16) | (0x21 << 8))
 
-void omap2xxx_check_revision(void);
 void omap3xxx_check_revision(void);
 void omap4xxx_check_revision(void);
 void omap5xxx_check_revision(void);
@@ -484,12 +431,6 @@ level(__##fn);
 #define omap_late_initcall_sync(fn)	omap_initcall(late_initcall_sync, fn)
 
 /* Legacy defines, these can be removed when users are removed */
-#define cpu_is_omap2420()	soc_is_omap2420()
-#define cpu_is_omap2422()	soc_is_omap2422()
-#define cpu_is_omap242x()	soc_is_omap242x()
-#define cpu_is_omap2430()	soc_is_omap2430()
-#define cpu_is_omap243x()	soc_is_omap243x()
-#define cpu_is_omap24xx()	soc_is_omap24xx()
 #define cpu_is_omap3430()	soc_is_omap3430()
 #define cpu_is_omap343x()	soc_is_omap343x()
 #define cpu_is_omap34xx()	soc_is_omap34xx()
diff --git a/arch/arm/mach-omap2/sram.c b/arch/arm/mach-omap2/sram.c
index 898b011ae8d9..8f980849f201 100644
--- a/arch/arm/mach-omap2/sram.c
+++ b/arch/arm/mach-omap2/sram.c
@@ -28,15 +28,10 @@
 #include "sdrc.h"
 #include "sram.h"
 
-#define OMAP2_SRAM_PUB_PA	(OMAP2_SRAM_PA + 0xf800)
 #define OMAP3_SRAM_PUB_PA       (OMAP3_SRAM_PA + 0x8000)
 
 #define SRAM_BOOTLOADER_SZ	0x00
 
-#define OMAP24XX_VA_REQINFOPERM0	OMAP2_L3_IO_ADDRESS(0x68005048)
-#define OMAP24XX_VA_READPERM0		OMAP2_L3_IO_ADDRESS(0x68005050)
-#define OMAP24XX_VA_WRITEPERM0		OMAP2_L3_IO_ADDRESS(0x68005058)
-
 #define OMAP34XX_VA_REQINFOPERM0	OMAP2_L3_IO_ADDRESS(0x68012848)
 #define OMAP34XX_VA_READPERM0		OMAP2_L3_IO_ADDRESS(0x68012850)
 #define OMAP34XX_VA_WRITEPERM0		OMAP2_L3_IO_ADDRESS(0x68012858)
@@ -120,18 +115,11 @@ static int is_sram_locked(void)
 {
 	if (omap_type() == OMAP2_DEVICE_TYPE_GP) {
 		/* RAMFW: R/W access to all initiators for all qualifier sets */
-		if (cpu_is_omap242x()) {
-			writel_relaxed(0xFF, OMAP24XX_VA_REQINFOPERM0); /* all q-vects */
-			writel_relaxed(0xCFDE, OMAP24XX_VA_READPERM0);  /* all i-read */
-			writel_relaxed(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */
-		}
-		if (cpu_is_omap34xx()) {
-			writel_relaxed(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */
-			writel_relaxed(0xFFFF, OMAP34XX_VA_READPERM0);  /* all i-read */
-			writel_relaxed(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */
-			writel_relaxed(0x0, OMAP34XX_VA_ADDR_MATCH2);
-			writel_relaxed(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0);
-		}
+		writel_relaxed(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */
+		writel_relaxed(0xFFFF, OMAP34XX_VA_READPERM0);  /* all i-read */
+		writel_relaxed(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */
+		writel_relaxed(0x0, OMAP34XX_VA_ADDR_MATCH2);
+		writel_relaxed(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0);
 		return 0;
 	} else
 		return 1; /* assume locked with no PPA or security driver */
@@ -147,30 +135,17 @@ static void __init omap_detect_sram(void)
 {
 	omap_sram_skip = SRAM_BOOTLOADER_SZ;
 	if (is_sram_locked()) {
-		if (cpu_is_omap34xx()) {
-			omap_sram_start = OMAP3_SRAM_PUB_PA;
-			if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) ||
-			    (omap_type() == OMAP2_DEVICE_TYPE_SEC)) {
-				omap_sram_size = 0x7000; /* 28K */
-				omap_sram_skip += SZ_16K;
-			} else {
-				omap_sram_size = 0x8000; /* 32K */
-			}
+		omap_sram_start = OMAP3_SRAM_PUB_PA;
+		if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) ||
+		    (omap_type() == OMAP2_DEVICE_TYPE_SEC)) {
+			omap_sram_size = 0x7000; /* 28K */
+			omap_sram_skip += SZ_16K;
 		} else {
-			omap_sram_start = OMAP2_SRAM_PUB_PA;
-			omap_sram_size = 0x800; /* 2K */
+			omap_sram_size = 0x8000; /* 32K */
 		}
 	} else {
-		if (cpu_is_omap34xx()) {
-			omap_sram_start = OMAP3_SRAM_PA;
-			omap_sram_size = 0x10000; /* 64K */
-		} else {
-			omap_sram_start = OMAP2_SRAM_PA;
-			if (cpu_is_omap242x())
-				omap_sram_size = 0xa0000; /* 640K */
-			else if (cpu_is_omap243x())
-				omap_sram_size = 0x10000; /* 64K */
-		}
+		omap_sram_start = OMAP3_SRAM_PA;
+		omap_sram_size = 0x10000; /* 64K */
 	}
 }
 
@@ -181,24 +156,20 @@ static void __init omap2_map_sram(void)
 {
 	unsigned long base;
 	int pages;
-	int cached = 1;
-
-	if (cpu_is_omap34xx()) {
-		/*
-		 * SRAM must be marked as non-cached on OMAP3 since the
-		 * CORE DPLL M2 divider change code (in SRAM) runs with the
-		 * SDRAM controller disabled, and if it is marked cached,
-		 * the ARM may attempt to write cache lines back to SDRAM
-		 * which will cause the system to hang.
-		 */
-		cached = 0;
-	}
 
 	if (omap_sram_size == 0)
 		return;
 
 	omap_sram_start = ROUND_DOWN(omap_sram_start, PAGE_SIZE);
-	omap_sram_base = __arm_ioremap_exec(omap_sram_start, omap_sram_size, cached);
+	/*
+	 * SRAM must be marked as non-cached on OMAP3 since the
+	 * CORE DPLL M2 divider change code (in SRAM) runs with the
+	 * SDRAM controller disabled, and if it is marked cached,
+	 * the ARM may attempt to write cache lines back to SDRAM
+	 * which will cause the system to hang.
+	 */
+
+	omap_sram_base = __arm_ioremap_exec(omap_sram_start, omap_sram_size, 0);
 	if (!omap_sram_base) {
 		pr_err("SRAM: Could not map\n");
 		return;
@@ -219,78 +190,6 @@ static void __init omap2_map_sram(void)
 	set_memory_rox(base, pages);
 }
 
-static void (*_omap2_sram_ddr_init)(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
-			      u32 base_cs, u32 force_unlock);
-
-void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
-		   u32 base_cs, u32 force_unlock)
-{
-	BUG_ON(!_omap2_sram_ddr_init);
-	_omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl,
-			     base_cs, force_unlock);
-}
-
-static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val,
-					  u32 mem_type);
-
-void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type)
-{
-	BUG_ON(!_omap2_sram_reprogram_sdrc);
-	_omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type);
-}
-
-static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
-
-u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass)
-{
-	BUG_ON(!_omap2_set_prcm);
-	return _omap2_set_prcm(dpll_ctrl_val, sdrc_rfr_val, bypass);
-}
-
-#ifdef CONFIG_SOC_OMAP2420
-static int __init omap242x_sram_init(void)
-{
-	_omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init,
-					omap242x_sram_ddr_init_sz);
-
-	_omap2_sram_reprogram_sdrc = omap_sram_push(omap242x_sram_reprogram_sdrc,
-					    omap242x_sram_reprogram_sdrc_sz);
-
-	_omap2_set_prcm = omap_sram_push(omap242x_sram_set_prcm,
-					 omap242x_sram_set_prcm_sz);
-
-	return 0;
-}
-#else
-static inline int omap242x_sram_init(void)
-{
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_SOC_OMAP2430
-static int __init omap243x_sram_init(void)
-{
-	_omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init,
-					omap243x_sram_ddr_init_sz);
-
-	_omap2_sram_reprogram_sdrc = omap_sram_push(omap243x_sram_reprogram_sdrc,
-					    omap243x_sram_reprogram_sdrc_sz);
-
-	_omap2_set_prcm = omap_sram_push(omap243x_sram_set_prcm,
-					 omap243x_sram_set_prcm_sz);
-
-	return 0;
-}
-#else
-static inline int omap243x_sram_init(void)
-{
-	return 0;
-}
-#endif
-
-#ifdef CONFIG_ARCH_OMAP3
-
 void omap3_sram_restore_context(void)
 {
 	omap_sram_reset();
@@ -303,24 +202,12 @@ static inline int omap34xx_sram_init(void)
 	omap3_sram_restore_context();
 	return 0;
 }
-#else
-static inline int omap34xx_sram_init(void)
-{
-	return 0;
-}
-#endif /* CONFIG_ARCH_OMAP3 */
 
 int __init omap_sram_init(void)
 {
 	omap_detect_sram();
 	omap2_map_sram();
-
-	if (cpu_is_omap242x())
-		omap242x_sram_init();
-	else if (cpu_is_omap2430())
-		omap243x_sram_init();
-	else if (cpu_is_omap34xx())
-		omap34xx_sram_init();
+	omap34xx_sram_init();
 
 	return 0;
 }
diff --git a/arch/arm/mach-omap2/sram.h b/arch/arm/mach-omap2/sram.h
index 030cabc39821..2db2c4598cdb 100644
--- a/arch/arm/mach-omap2/sram.h
+++ b/arch/arm/mach-omap2/sram.h
@@ -5,43 +5,12 @@
 
 #ifndef __ASSEMBLY__
 
-extern void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
-				u32 base_cs, u32 force_unlock);
-extern void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
-				      u32 mem_type);
-extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
-
 extern void omap3_sram_restore_context(void);
 
 extern int __init omap_sram_init(void);
 
 extern void *omap_sram_push(void *funcp, unsigned long size);
 
-extern void omap242x_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
-						u32 base_cs, u32 force_unlock);
-extern unsigned long omap242x_sram_ddr_init_sz;
-
-extern u32 omap242x_sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val,
-						int bypass);
-extern unsigned long omap242x_sram_set_prcm_sz;
-
-extern void omap242x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
-						u32 mem_type);
-extern unsigned long omap242x_sram_reprogram_sdrc_sz;
-
-
-extern void omap243x_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
-						u32 base_cs, u32 force_unlock);
-extern unsigned long omap243x_sram_ddr_init_sz;
-
-extern u32 omap243x_sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val,
-						int bypass);
-extern unsigned long omap243x_sram_set_prcm_sz;
-
-extern void omap243x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
-						u32 mem_type);
-extern unsigned long omap243x_sram_reprogram_sdrc_sz;
-
 #ifdef CONFIG_PM
 extern void omap_push_sram_idle(void);
 #else
@@ -54,5 +23,4 @@ static inline void omap_push_sram_idle(void) {}
  * OMAP2+: define the SRAM PA addresses.
  * Used by the SRAM management code and the idle sleep code.
  */
-#define OMAP2_SRAM_PA		0x40200000
 #define OMAP3_SRAM_PA           0x40200000
diff --git a/arch/arm/mach-omap2/sram242x.S b/arch/arm/mach-omap2/sram242x.S
deleted file mode 100644
index 92ef21ac2ac1..000000000000
--- a/arch/arm/mach-omap2/sram242x.S
+++ /dev/null
@@ -1,317 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * linux/arch/arm/mach-omap2/sram242x.S
- *
- * Omap2 specific functions that need to be run in internal SRAM
- *
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * Richard Woodruff notes that any changes to this code must be carefully
- * audited and tested to ensure that they don't cause a TLB miss while
- * the SDRAM is inaccessible.  Such a situation will crash the system
- * since it will cause the ARM MMU to attempt to walk the page tables.
- * These crashes may be intermittent.
- */
-#include <linux/linkage.h>
-
-#include <asm/assembler.h>
-
-#include "soc.h"
-#include "iomap.h"
-#include "prm2xxx.h"
-#include "cm2xxx.h"
-#include "sdrc.h"
-
-	.text
-
-	.align	3
-ENTRY(omap242x_sram_ddr_init)
-	stmfd	sp!, {r0 - r12, lr}	@ save registers on stack
-
-	mov	r12, r2			@ capture CS1 vs CS0
-	mov	r8, r3			@ capture force parameter
-
-	/* frequency shift down */
-	ldr	r2, omap242x_sdi_cm_clksel2_pll	@ get address of dpllout reg
-	mov	r3, #0x1		@ value for 1x operation
-	str	r3, [r2]		@ go to L1-freq operation
-
-	/* voltage shift down */
-	mov r9, #0x1			@ set up for L1 voltage call
-	bl voltage_shift		@ go drop voltage
-
-	/* dll lock mode */
-	ldr	r11, omap242x_sdi_sdrc_dlla_ctrl	@ addr of dlla ctrl
-	ldr	r10, [r11]		@ get current val
-	cmp	r12, #0x1		@ cs1 base (2422 es2.05/1)
-	addeq	r11, r11, #0x8		@ if cs1 base, move to DLLB
-	mvn	r9, #0x4		@ mask to get clear bit2
-	and	r10, r10, r9		@ clear bit2 for lock mode.
-	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
-	orr	r10, r10, #0x2		@ 90 degree phase for all below 133MHz
-	str	r10, [r11]		@ commit to DLLA_CTRL
-	bl	i_dll_wait		@ wait for dll to lock
-
-	/* get dll value */
-	add	r11, r11, #0x4		@ get addr of status reg
-	ldr	r10, [r11]		@ get locked value
-
-	/* voltage shift up */
-	mov r9, #0x0			@ shift back to L0-voltage
-	bl voltage_shift		@ go raise voltage
-
-	/* frequency shift up */
-	mov	r3, #0x2		@ value for 2x operation
-	str	r3, [r2]		@ go to L0-freq operation
-
-	/* reset entry mode for dllctrl */
-	sub	r11, r11, #0x4		@ move from status to ctrl
-	cmp	r12, #0x1		@ normalize if cs1 based
-	subeq	r11, r11, #0x8		@ possibly back to DLLA
-	cmp	r8, #0x1		@ if forced unlock exit
-	orreq	r1, r1, #0x4		@ make sure exit with unlocked value
-	str	r1, [r11]		@ restore DLLA_CTRL high value
-	add	r11, r11, #0x8		@ move to DLLB_CTRL addr
-	str	r1, [r11]		@ set value DLLB_CTRL
-	bl	i_dll_wait		@ wait for possible lock
-
-	/* set up for return, DDR should be good */
-	str r10, [r0]			@ write dll_status and return counter
-	ldmfd	sp!, {r0 - r12, pc}	@ restore regs and return
-
-	/* ensure the DLL has relocked */
-i_dll_wait:
-	mov	r4, #0x800		@ delay DLL relock, min 0x400 L3 clocks
-i_dll_delay:
-	subs	r4, r4, #0x1
-	bne	i_dll_delay
-	ret	lr
-
-	/*
-	 * shift up or down voltage, use R9 as input to tell level.
-	 * wait for it to finish, use 32k sync counter, 1tick=31uS.
-	 */
-voltage_shift:
-	ldr	r4, omap242x_sdi_prcm_voltctrl	@ get addr of volt ctrl.
-	ldr	r5, [r4]		@ get value.
-	ldr	r6, prcm_mask_val	@ get value of mask
-	and	r5, r5, r6		@ apply mask to clear bits
-	orr	r5, r5, r9		@ bulld value for L0/L1-volt operation.
-	str	r5, [r4]		@ set up for change.
-	mov	r3, #0x4000		@ get val for force
-	orr	r5, r5, r3		@ build value for force
-	str	r5, [r4]		@ Force transition to L1
-
-	ldr	r3, omap242x_sdi_timer_32ksynct_cr	@ get addr of counter
-	ldr	r5, [r3]		@ get value
-	add	r5, r5, #0x3		@ give it at most 93uS
-volt_delay:
-	ldr	r7, [r3]		@ get timer value
-	cmp	r5, r7			@ time up?
-	bhi	volt_delay		@ not yet->branch
-	ret	lr			@ back to caller.
-
-omap242x_sdi_cm_clksel2_pll:
-	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
-omap242x_sdi_sdrc_dlla_ctrl:
-	.word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL)
-omap242x_sdi_prcm_voltctrl:
-	.word OMAP2420_PRCM_VOLTCTRL
-prcm_mask_val:
-	.word 0xFFFF3FFC
-omap242x_sdi_timer_32ksynct_cr:
-	.word OMAP2_L4_IO_ADDRESS(OMAP2420_32KSYNCT_BASE + 0x010)
-ENTRY(omap242x_sram_ddr_init_sz)
-	.word	. - omap242x_sram_ddr_init
-
-/*
- * Reprograms memory timings.
- * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR]
- * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0
- */
-	.align	3
-ENTRY(omap242x_sram_reprogram_sdrc)
-	stmfd	sp!, {r0 - r10, lr}	@ save registers on stack
-	mov	r3, #0x0		@ clear for mrc call
-	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier, finish ARM SDR/DDR
-	nop
-	nop
-	ldr	r6, omap242x_srs_sdrc_rfr_ctrl	@ get addr of refresh reg
-	ldr	r5, [r6]		@ get value
-	mov	r5, r5, lsr #8		@ isolate rfr field and drop burst
-
-	cmp	r0, #0x1		@ going to half speed?
-	movne	r9, #0x0		@ if up set flag up for pre up, hi volt
-
-	blne	voltage_shift_c		@ adjust voltage
-
-	cmp	r0, #0x1		@ going to half speed (post branch link)
-	moveq	r5, r5, lsr #1		@ divide by 2 if to half
-	movne	r5, r5, lsl #1		@ mult by 2 if to full
-	mov	r5, r5, lsl #8		@ put rfr field back into place
-	add	r5, r5, #0x1		@ turn on burst of 1
-	ldr	r4, omap242x_srs_cm_clksel2_pll	@ get address of out reg
-	ldr	r3, [r4]		@ get curr value
-	orr	r3, r3, #0x3
-	bic	r3, r3, #0x3		@ clear lower bits
-	orr	r3, r3, r0		@ new state value
-	str	r3, [r4]		@ set new state (pll/x, x=1 or 2)
-	nop
-	nop
-
-	moveq	r9, #0x1		@ if speed down, post down, drop volt
-	bleq	voltage_shift_c
-
-	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier
-	str	r5, [r6]		@ set new RFR_1 value
-	add	r6, r6, #0x30		@ get RFR_2 addr
-	str	r5, [r6]		@ set RFR_2
-	nop
-	cmp	r2, #0x1		@ (SDR or DDR) do we need to adjust DLL
-	bne	freq_out		@ leave if SDR, no DLL function
-
-	/* With DDR, we need to take care of the DLL for the frequency change */
-	ldr	r2, omap242x_srs_sdrc_dlla_ctrl	@ addr of dlla ctrl
-	str	r1, [r2]		@ write out new SDRC_DLLA_CTRL
-	add	r2, r2, #0x8		@ addr to SDRC_DLLB_CTRL
-	str	r1, [r2]		@ commit to SDRC_DLLB_CTRL
-	mov	r1, #0x2000		@ wait DLL relock, min 0x400 L3 clocks
-dll_wait:
-	subs	r1, r1, #0x1
-	bne	dll_wait
-freq_out:
-	ldmfd	sp!, {r0 - r10, pc}	@ restore regs and return
-
-    /*
-     * shift up or down voltage, use R9 as input to tell level.
-     *	wait for it to finish, use 32k sync counter, 1tick=31uS.
-     */
-voltage_shift_c:
-	ldr	r10, omap242x_srs_prcm_voltctrl	@ get addr of volt ctrl
-	ldr	r8, [r10]		@ get value
-	ldr	r7, ddr_prcm_mask_val	@ get value of mask
-	and	r8, r8, r7		@ apply mask to clear bits
-	orr	r8, r8, r9		@ bulld value for L0/L1-volt operation.
-	str	r8, [r10]		@ set up for change.
-	mov	r7, #0x4000		@ get val for force
-	orr	r8, r8, r7		@ build value for force
-	str	r8, [r10]		@ Force transition to L1
-
-	ldr	r10, omap242x_srs_timer_32ksynct	@ get addr of counter
-	ldr	r8, [r10]		@ get value
-	add	r8, r8, #0x2		@ give it at most 62uS (min 31+)
-volt_delay_c:
-	ldr	r7, [r10]		@ get timer value
-	cmp	r8, r7			@ time up?
-	bhi	volt_delay_c		@ not yet->branch
-	ret	lr			@ back to caller
-
-omap242x_srs_cm_clksel2_pll:
-	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
-omap242x_srs_sdrc_dlla_ctrl:
-	.word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL)
-omap242x_srs_sdrc_rfr_ctrl:
-	.word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
-omap242x_srs_prcm_voltctrl:
-	.word OMAP2420_PRCM_VOLTCTRL
-ddr_prcm_mask_val:
-	.word 0xFFFF3FFC
-omap242x_srs_timer_32ksynct:
-	.word OMAP2_L4_IO_ADDRESS(OMAP2420_32KSYNCT_BASE + 0x010)
-
-ENTRY(omap242x_sram_reprogram_sdrc_sz)
-	.word	. - omap242x_sram_reprogram_sdrc
-
-/*
- * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode.
- */
-	.align	3
-ENTRY(omap242x_sram_set_prcm)
-	stmfd	sp!, {r0-r12, lr}	@ regs to stack
-	adr	r4, pbegin		@ addr of preload start
-	adr	r8, pend		@ addr of preload end
-	mcrr	p15, 1, r8, r4, c12	@ preload into icache
-pbegin:
-	/* move into fast relock bypass */
-	ldr	r8, omap242x_ssp_pll_ctl	@ get addr
-	ldr	r5, [r8]		@ get val
-	mvn	r6, #0x3		@ clear mask
-	and	r5, r5, r6		@ clear field
-	orr	r7, r5, #0x2		@ fast relock val
-	str	r7, [r8]		@ go to fast relock
-	ldr	r4, omap242x_ssp_pll_stat	@ addr of stat
-block:
-	/* wait for bypass */
-	ldr	r8, [r4]		@ stat value
-	and	r8, r8, #0x3		@ mask for stat
-	cmp	r8, #0x1		@ there yet
-	bne	block			@ loop if not
-
-	/* set new dpll dividers _after_ in bypass */
-	ldr	r4, omap242x_ssp_pll_div	@ get addr
-	str	r0, [r4]		@ set dpll ctrl val
-
-	ldr	r4, omap242x_ssp_set_config	@ get addr
-	mov	r8, #1			@ valid cfg msk
-	str	r8, [r4]		@ make dividers take
-
-	mov	r4, #100		@ dead spin a bit
-wait_a_bit:
-	subs	r4, r4, #1		@ dec loop
-	bne	wait_a_bit		@ delay done?
-
-	/* check if staying in bypass */
-	cmp	r2, #0x1		@ stay in bypass?
-	beq	pend			@ jump over dpll relock
-
-	/* relock DPLL with new vals */
-	ldr	r5, omap242x_ssp_pll_stat	@ get addr
-	ldr	r4, omap242x_ssp_pll_ctl	@ get addr
-	orr	r8, r7, #0x3		@ val for lock dpll
-	str	r8, [r4]		@ set val
-	mov	r0, #1000		@ dead spin a bit
-wait_more:
-	subs	r0, r0, #1		@ dec loop
-	bne	wait_more		@ delay done?
-wait_lock:
-	ldr	r8, [r5]		@ get lock val
-	and	r8, r8, #3		@ isolate field
-	cmp	r8, #2			@ locked?
-	bne	wait_lock		@ wait if not
-pend:
-	/* update memory timings & briefly lock dll */
-	ldr	r4, omap242x_ssp_sdrc_rfr	@ get addr
-	str	r1, [r4]		@ update refresh timing
-	ldr	r11, omap242x_ssp_dlla_ctrl	@ get addr of DLLA ctrl
-	ldr	r10, [r11]		@ get current val
-	mvn	r9, #0x4		@ mask to get clear bit2
-	and	r10, r10, r9		@ clear bit2 for lock mode
-	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
-	str	r10, [r11]		@ commit to DLLA_CTRL
-	add	r11, r11, #0x8		@ move to dllb
-	str	r10, [r11]		@ hit DLLB also
-
-	mov	r4, #0x800		@ relock time (min 0x400 L3 clocks)
-wait_dll_lock:
-	subs	r4, r4, #0x1
-	bne	wait_dll_lock
-	nop
-	ldmfd	sp!, {r0-r12, pc}	@ restore regs and return
-
-omap242x_ssp_set_config:
-	.word OMAP2420_PRCM_CLKCFG_CTRL
-omap242x_ssp_pll_ctl:
-	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKEN)
-omap242x_ssp_pll_stat:
-	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_IDLEST)
-omap242x_ssp_pll_div:
-	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL1)
-omap242x_ssp_sdrc_rfr:
-	.word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
-omap242x_ssp_dlla_ctrl:
-	.word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL)
-
-ENTRY(omap242x_sram_set_prcm_sz)
-	.word	. - omap242x_sram_set_prcm
diff --git a/arch/arm/mach-omap2/sram243x.S b/arch/arm/mach-omap2/sram243x.S
deleted file mode 100644
index faf03b7f08f5..000000000000
--- a/arch/arm/mach-omap2/sram243x.S
+++ /dev/null
@@ -1,317 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * linux/arch/arm/mach-omap2/sram243x.S
- *
- * Omap2 specific functions that need to be run in internal SRAM
- *
- * (C) Copyright 2004
- * Texas Instruments, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * Richard Woodruff notes that any changes to this code must be carefully
- * audited and tested to ensure that they don't cause a TLB miss while
- * the SDRAM is inaccessible.  Such a situation will crash the system
- * since it will cause the ARM MMU to attempt to walk the page tables.
- * These crashes may be intermittent.
- */
-#include <linux/linkage.h>
-
-#include <asm/assembler.h>
-
-#include "soc.h"
-#include "iomap.h"
-#include "prm2xxx.h"
-#include "cm2xxx.h"
-#include "sdrc.h"
-
-	.text
-
-	.align	3
-ENTRY(omap243x_sram_ddr_init)
-	stmfd	sp!, {r0 - r12, lr}	@ save registers on stack
-
-	mov	r12, r2			@ capture CS1 vs CS0
-	mov	r8, r3			@ capture force parameter
-
-	/* frequency shift down */
-	ldr	r2, omap243x_sdi_cm_clksel2_pll	@ get address of dpllout reg
-	mov	r3, #0x1		@ value for 1x operation
-	str	r3, [r2]		@ go to L1-freq operation
-
-	/* voltage shift down */
-	mov r9, #0x1			@ set up for L1 voltage call
-	bl voltage_shift		@ go drop voltage
-
-	/* dll lock mode */
-	ldr	r11, omap243x_sdi_sdrc_dlla_ctrl	@ addr of dlla ctrl
-	ldr	r10, [r11]		@ get current val
-	cmp	r12, #0x1		@ cs1 base (2422 es2.05/1)
-	addeq	r11, r11, #0x8		@ if cs1 base, move to DLLB
-	mvn	r9, #0x4		@ mask to get clear bit2
-	and	r10, r10, r9		@ clear bit2 for lock mode.
-	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
-	orr	r10, r10, #0x2		@ 90 degree phase for all below 133MHz
-	str	r10, [r11]		@ commit to DLLA_CTRL
-	bl	i_dll_wait		@ wait for dll to lock
-
-	/* get dll value */
-	add	r11, r11, #0x4		@ get addr of status reg
-	ldr	r10, [r11]		@ get locked value
-
-	/* voltage shift up */
-	mov r9, #0x0			@ shift back to L0-voltage
-	bl voltage_shift		@ go raise voltage
-
-	/* frequency shift up */
-	mov	r3, #0x2		@ value for 2x operation
-	str	r3, [r2]		@ go to L0-freq operation
-
-	/* reset entry mode for dllctrl */
-	sub	r11, r11, #0x4		@ move from status to ctrl
-	cmp	r12, #0x1		@ normalize if cs1 based
-	subeq	r11, r11, #0x8		@ possibly back to DLLA
-	cmp	r8, #0x1		@ if forced unlock exit
-	orreq	r1, r1, #0x4		@ make sure exit with unlocked value
-	str	r1, [r11]		@ restore DLLA_CTRL high value
-	add	r11, r11, #0x8		@ move to DLLB_CTRL addr
-	str	r1, [r11]		@ set value DLLB_CTRL
-	bl	i_dll_wait		@ wait for possible lock
-
-	/* set up for return, DDR should be good */
-	str r10, [r0]			@ write dll_status and return counter
-	ldmfd	sp!, {r0 - r12, pc}	@ restore regs and return
-
-	/* ensure the DLL has relocked */
-i_dll_wait:
-	mov	r4, #0x800		@ delay DLL relock, min 0x400 L3 clocks
-i_dll_delay:
-	subs	r4, r4, #0x1
-	bne	i_dll_delay
-	ret	lr
-
-	/*
-	 * shift up or down voltage, use R9 as input to tell level.
-	 * wait for it to finish, use 32k sync counter, 1tick=31uS.
-	 */
-voltage_shift:
-	ldr	r4, omap243x_sdi_prcm_voltctrl	@ get addr of volt ctrl.
-	ldr	r5, [r4]		@ get value.
-	ldr	r6, prcm_mask_val	@ get value of mask
-	and	r5, r5, r6		@ apply mask to clear bits
-	orr	r5, r5, r9		@ bulld value for L0/L1-volt operation.
-	str	r5, [r4]		@ set up for change.
-	mov	r3, #0x4000		@ get val for force
-	orr	r5, r5, r3		@ build value for force
-	str	r5, [r4]		@ Force transition to L1
-
-	ldr	r3, omap243x_sdi_timer_32ksynct_cr	@ get addr of counter
-	ldr	r5, [r3]		@ get value
-	add	r5, r5, #0x3		@ give it at most 93uS
-volt_delay:
-	ldr	r7, [r3]		@ get timer value
-	cmp	r5, r7			@ time up?
-	bhi	volt_delay		@ not yet->branch
-	ret	lr			@ back to caller.
-
-omap243x_sdi_cm_clksel2_pll:
-	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
-omap243x_sdi_sdrc_dlla_ctrl:
-	.word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL)
-omap243x_sdi_prcm_voltctrl:
-	.word OMAP2430_PRCM_VOLTCTRL
-prcm_mask_val:
-	.word 0xFFFF3FFC
-omap243x_sdi_timer_32ksynct_cr:
-	.word OMAP2_L4_IO_ADDRESS(OMAP2430_32KSYNCT_BASE + 0x010)
-ENTRY(omap243x_sram_ddr_init_sz)
-	.word	. - omap243x_sram_ddr_init
-
-/*
- * Reprograms memory timings.
- * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR]
- * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0
- */
-	.align	3
-ENTRY(omap243x_sram_reprogram_sdrc)
-	stmfd	sp!, {r0 - r10, lr}	@ save registers on stack
-	mov	r3, #0x0		@ clear for mrc call
-	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier, finish ARM SDR/DDR
-	nop
-	nop
-	ldr	r6, omap243x_srs_sdrc_rfr_ctrl	@ get addr of refresh reg
-	ldr	r5, [r6]		@ get value
-	mov	r5, r5, lsr #8		@ isolate rfr field and drop burst
-
-	cmp	r0, #0x1		@ going to half speed?
-	movne	r9, #0x0		@ if up set flag up for pre up, hi volt
-
-	blne	voltage_shift_c		@ adjust voltage
-
-	cmp	r0, #0x1		@ going to half speed (post branch link)
-	moveq	r5, r5, lsr #1		@ divide by 2 if to half
-	movne	r5, r5, lsl #1		@ mult by 2 if to full
-	mov	r5, r5, lsl #8		@ put rfr field back into place
-	add	r5, r5, #0x1		@ turn on burst of 1
-	ldr	r4, omap243x_srs_cm_clksel2_pll	@ get address of out reg
-	ldr	r3, [r4]		@ get curr value
-	orr	r3, r3, #0x3
-	bic	r3, r3, #0x3		@ clear lower bits
-	orr	r3, r3, r0		@ new state value
-	str	r3, [r4]		@ set new state (pll/x, x=1 or 2)
-	nop
-	nop
-
-	moveq	r9, #0x1		@ if speed down, post down, drop volt
-	bleq	voltage_shift_c
-
-	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier
-	str	r5, [r6]		@ set new RFR_1 value
-	add	r6, r6, #0x30		@ get RFR_2 addr
-	str	r5, [r6]		@ set RFR_2
-	nop
-	cmp	r2, #0x1		@ (SDR or DDR) do we need to adjust DLL
-	bne	freq_out		@ leave if SDR, no DLL function
-
-	/* With DDR, we need to take care of the DLL for the frequency change */
-	ldr	r2, omap243x_srs_sdrc_dlla_ctrl	@ addr of dlla ctrl
-	str	r1, [r2]		@ write out new SDRC_DLLA_CTRL
-	add	r2, r2, #0x8		@ addr to SDRC_DLLB_CTRL
-	str	r1, [r2]		@ commit to SDRC_DLLB_CTRL
-	mov	r1, #0x2000		@ wait DLL relock, min 0x400 L3 clocks
-dll_wait:
-	subs	r1, r1, #0x1
-	bne	dll_wait
-freq_out:
-	ldmfd	sp!, {r0 - r10, pc}	@ restore regs and return
-
-    /*
-     * shift up or down voltage, use R9 as input to tell level.
-     *	wait for it to finish, use 32k sync counter, 1tick=31uS.
-     */
-voltage_shift_c:
-	ldr	r10, omap243x_srs_prcm_voltctrl	@ get addr of volt ctrl
-	ldr	r8, [r10]		@ get value
-	ldr	r7, ddr_prcm_mask_val	@ get value of mask
-	and	r8, r8, r7		@ apply mask to clear bits
-	orr	r8, r8, r9		@ bulld value for L0/L1-volt operation.
-	str	r8, [r10]		@ set up for change.
-	mov	r7, #0x4000		@ get val for force
-	orr	r8, r8, r7		@ build value for force
-	str	r8, [r10]		@ Force transition to L1
-
-	ldr	r10, omap243x_srs_timer_32ksynct	@ get addr of counter
-	ldr	r8, [r10]		@ get value
-	add	r8, r8, #0x2		@ give it at most 62uS (min 31+)
-volt_delay_c:
-	ldr	r7, [r10]		@ get timer value
-	cmp	r8, r7			@ time up?
-	bhi	volt_delay_c		@ not yet->branch
-	ret	lr			@ back to caller
-
-omap243x_srs_cm_clksel2_pll:
-	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
-omap243x_srs_sdrc_dlla_ctrl:
-	.word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL)
-omap243x_srs_sdrc_rfr_ctrl:
-	.word OMAP243X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
-omap243x_srs_prcm_voltctrl:
-	.word OMAP2430_PRCM_VOLTCTRL
-ddr_prcm_mask_val:
-	.word 0xFFFF3FFC
-omap243x_srs_timer_32ksynct:
-	.word OMAP2_L4_IO_ADDRESS(OMAP2430_32KSYNCT_BASE + 0x010)
-
-ENTRY(omap243x_sram_reprogram_sdrc_sz)
-	.word	. - omap243x_sram_reprogram_sdrc
-
-/*
- * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode.
- */
-	.align	3
-ENTRY(omap243x_sram_set_prcm)
-	stmfd	sp!, {r0-r12, lr}	@ regs to stack
-	adr	r4, pbegin		@ addr of preload start
-	adr	r8, pend		@ addr of preload end
-	mcrr	p15, 1, r8, r4, c12	@ preload into icache
-pbegin:
-	/* move into fast relock bypass */
-	ldr	r8, omap243x_ssp_pll_ctl	@ get addr
-	ldr	r5, [r8]		@ get val
-	mvn	r6, #0x3		@ clear mask
-	and	r5, r5, r6		@ clear field
-	orr	r7, r5, #0x2		@ fast relock val
-	str	r7, [r8]		@ go to fast relock
-	ldr	r4, omap243x_ssp_pll_stat	@ addr of stat
-block:
-	/* wait for bypass */
-	ldr	r8, [r4]		@ stat value
-	and	r8, r8, #0x3		@ mask for stat
-	cmp	r8, #0x1		@ there yet
-	bne	block			@ loop if not
-
-	/* set new dpll dividers _after_ in bypass */
-	ldr	r4, omap243x_ssp_pll_div	@ get addr
-	str	r0, [r4]		@ set dpll ctrl val
-
-	ldr	r4, omap243x_ssp_set_config	@ get addr
-	mov	r8, #1			@ valid cfg msk
-	str	r8, [r4]		@ make dividers take
-
-	mov	r4, #100		@ dead spin a bit
-wait_a_bit:
-	subs	r4, r4, #1		@ dec loop
-	bne	wait_a_bit		@ delay done?
-
-	/* check if staying in bypass */
-	cmp	r2, #0x1		@ stay in bypass?
-	beq	pend			@ jump over dpll relock
-
-	/* relock DPLL with new vals */
-	ldr	r5, omap243x_ssp_pll_stat	@ get addr
-	ldr	r4, omap243x_ssp_pll_ctl	@ get addr
-	orr	r8, r7, #0x3		@ val for lock dpll
-	str	r8, [r4]		@ set val
-	mov	r0, #1000		@ dead spin a bit
-wait_more:
-	subs	r0, r0, #1		@ dec loop
-	bne	wait_more		@ delay done?
-wait_lock:
-	ldr	r8, [r5]		@ get lock val
-	and	r8, r8, #3		@ isolate field
-	cmp	r8, #2			@ locked?
-	bne	wait_lock		@ wait if not
-pend:
-	/* update memory timings & briefly lock dll */
-	ldr	r4, omap243x_ssp_sdrc_rfr	@ get addr
-	str	r1, [r4]		@ update refresh timing
-	ldr	r11, omap243x_ssp_dlla_ctrl	@ get addr of DLLA ctrl
-	ldr	r10, [r11]		@ get current val
-	mvn	r9, #0x4		@ mask to get clear bit2
-	and	r10, r10, r9		@ clear bit2 for lock mode
-	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
-	str	r10, [r11]		@ commit to DLLA_CTRL
-	add	r11, r11, #0x8		@ move to dllb
-	str	r10, [r11]		@ hit DLLB also
-
-	mov	r4, #0x800		@ relock time (min 0x400 L3 clocks)
-wait_dll_lock:
-	subs	r4, r4, #0x1
-	bne	wait_dll_lock
-	nop
-	ldmfd	sp!, {r0-r12, pc}	@ restore regs and return
-
-omap243x_ssp_set_config:
-	.word OMAP2430_PRCM_CLKCFG_CTRL
-omap243x_ssp_pll_ctl:
-	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKEN)
-omap243x_ssp_pll_stat:
-	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_IDLEST)
-omap243x_ssp_pll_div:
-	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL1)
-omap243x_ssp_sdrc_rfr:
-	.word OMAP243X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
-omap243x_ssp_dlla_ctrl:
-	.word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL)
-
-ENTRY(omap243x_sram_set_prcm_sz)
-	.word	. - omap243x_sram_set_prcm
diff --git a/arch/arm/mach-omap2/usb-tusb6010.c b/arch/arm/mach-omap2/usb-tusb6010.c
deleted file mode 100644
index b46c254c2bc4..000000000000
--- a/arch/arm/mach-omap2/usb-tusb6010.c
+++ /dev/null
@@ -1,217 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/mach-omap2/usb-tusb6010.c
- *
- * Copyright (C) 2006 Nokia Corporation
- */
-
-#include <linux/err.h>
-#include <linux/string.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/delay.h>
-#include <linux/platform_device.h>
-#include <linux/export.h>
-#include <linux/platform_data/usb-omap.h>
-
-#include <linux/usb/musb.h>
-
-#include "usb-tusb6010.h"
-#include "gpmc.h"
-
-static u8		async_cs, sync_cs;
-static unsigned		refclk_psec;
-
-static struct gpmc_settings tusb_async = {
-	.wait_on_read	= true,
-	.wait_on_write	= true,
-	.device_width	= GPMC_DEVWIDTH_16BIT,
-	.mux_add_data	= GPMC_MUX_AD,
-};
-
-static struct gpmc_settings tusb_sync = {
-	.burst_read	= true,
-	.burst_write	= true,
-	.sync_read	= true,
-	.sync_write	= true,
-	.wait_on_read	= true,
-	.wait_on_write	= true,
-	.burst_len	= GPMC_BURST_16,
-	.device_width	= GPMC_DEVWIDTH_16BIT,
-	.mux_add_data	= GPMC_MUX_AD,
-};
-
-/* NOTE:  timings are from tusb 6010 datasheet Rev 1.8, 12-Sept 2006 */
-
-static int tusb_set_async_mode(unsigned sysclk_ps)
-{
-	struct gpmc_device_timings dev_t;
-	struct gpmc_timings	t;
-	unsigned		t_acsnh_advnh = sysclk_ps + 3000;
-
-	memset(&dev_t, 0, sizeof(dev_t));
-
-	dev_t.t_ceasu = 8 * 1000;
-	dev_t.t_avdasu = t_acsnh_advnh - 7000;
-	dev_t.t_ce_avd = 1000;
-	dev_t.t_avdp_r = t_acsnh_advnh;
-	dev_t.t_oeasu = t_acsnh_advnh + 1000;
-	dev_t.t_oe = 300;
-	dev_t.t_cez_r = 7000;
-	dev_t.t_cez_w = dev_t.t_cez_r;
-	dev_t.t_avdp_w = t_acsnh_advnh;
-	dev_t.t_weasu = t_acsnh_advnh + 1000;
-	dev_t.t_wpl = 300;
-	dev_t.cyc_aavdh_we = 1;
-
-	gpmc_calc_timings(&t, &tusb_async, &dev_t);
-
-	return gpmc_cs_set_timings(async_cs, &t, &tusb_async);
-}
-
-static int tusb_set_sync_mode(unsigned sysclk_ps)
-{
-	struct gpmc_device_timings dev_t;
-	struct gpmc_timings	t;
-	unsigned		t_scsnh_advnh = sysclk_ps + 3000;
-
-	memset(&dev_t, 0, sizeof(dev_t));
-
-	dev_t.clk = 11100;
-	dev_t.t_bacc = 1000;
-	dev_t.t_ces = 1000;
-	dev_t.t_ceasu = 8 * 1000;
-	dev_t.t_avdasu = t_scsnh_advnh - 7000;
-	dev_t.t_ce_avd = 1000;
-	dev_t.t_avdp_r = t_scsnh_advnh;
-	dev_t.cyc_aavdh_oe = 3;
-	dev_t.cyc_oe = 5;
-	dev_t.t_ce_rdyz = 7000;
-	dev_t.t_avdp_w = t_scsnh_advnh;
-	dev_t.cyc_aavdh_we = 3;
-	dev_t.cyc_wpl = 6;
-
-	gpmc_calc_timings(&t, &tusb_sync, &dev_t);
-
-	return gpmc_cs_set_timings(sync_cs, &t, &tusb_sync);
-}
-
-/* tusb driver calls this when it changes the chip's clocking */
-static int tusb6010_platform_retime(unsigned is_refclk)
-{
-	static const char	error[] =
-		KERN_ERR "tusb6010 %s retime error %d\n";
-
-	unsigned	sysclk_ps;
-	int		status;
-
-	if (!refclk_psec)
-		return -ENODEV;
-
-	sysclk_ps = is_refclk ? refclk_psec : TUSB6010_OSCCLK_60;
-
-	status = tusb_set_async_mode(sysclk_ps);
-	if (status < 0) {
-		printk(error, "async", status);
-		goto done;
-	}
-	status = tusb_set_sync_mode(sysclk_ps);
-	if (status < 0)
-		printk(error, "sync", status);
-done:
-	return status;
-}
-
-static struct resource tusb_resources[] = {
-	/* Order is significant!  The start/end fields
-	 * are updated during setup..
-	 */
-	{ /* Asynchronous access */
-		.flags	= IORESOURCE_MEM,
-	},
-	{ /* Synchronous access */
-		.flags	= IORESOURCE_MEM,
-	},
-};
-
-static u64 tusb_dmamask = ~(u32)0;
-
-static struct platform_device tusb_device = {
-	.name		= "musb-tusb",
-	.id		= -1,
-	.dev = {
-		.dma_mask		= &tusb_dmamask,
-		.coherent_dma_mask	= 0xffffffff,
-	},
-	.num_resources	= ARRAY_SIZE(tusb_resources),
-	.resource	= tusb_resources,
-};
-
-
-/* this may be called only from board-*.c setup code */
-int __init tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
-		unsigned int ps_refclk, unsigned int waitpin,
-		unsigned int async, unsigned int sync,
-		unsigned int dmachan)
-{
-	int		status;
-	static char	error[] __initdata =
-		KERN_ERR "tusb6010 init error %d, %d\n";
-
-	/* ASYNC region, primarily for PIO */
-	status = gpmc_cs_request(async, SZ_16M, (unsigned long *)
-				&tusb_resources[0].start);
-	if (status < 0) {
-		printk(error, 1, status);
-		return status;
-	}
-	tusb_resources[0].end = tusb_resources[0].start + 0x9ff;
-	tusb_async.wait_pin = waitpin;
-	async_cs = async;
-
-	status = gpmc_cs_program_settings(async_cs, &tusb_async);
-	if (status < 0)
-		return status;
-
-	/* SYNC region, primarily for DMA */
-	status = gpmc_cs_request(sync, SZ_16M, (unsigned long *)
-				&tusb_resources[1].start);
-	if (status < 0) {
-		printk(error, 2, status);
-		return status;
-	}
-	tusb_resources[1].end = tusb_resources[1].start + 0x9ff;
-	tusb_sync.wait_pin = waitpin;
-	sync_cs = sync;
-
-	status = gpmc_cs_program_settings(sync_cs, &tusb_sync);
-	if (status < 0)
-		return status;
-
-	/* set up memory timings ... can speed them up later */
-	if (!ps_refclk) {
-		printk(error, 4, status);
-		return -ENODEV;
-	}
-	refclk_psec = ps_refclk;
-	status = tusb6010_platform_retime(1);
-	if (status < 0) {
-		printk(error, 5, status);
-		return status;
-	}
-
-	/* finish device setup ... */
-	if (!data) {
-		printk(error, 6, status);
-		return -ENODEV;
-	}
-	tusb_device.dev.platform_data = data;
-
-	/* so far so good ... register the device */
-	status = platform_device_register(&tusb_device);
-	if (status < 0) {
-		printk(error, 7, status);
-		return status;
-	}
-	return 0;
-}
diff --git a/arch/arm/mach-omap2/usb-tusb6010.h b/arch/arm/mach-omap2/usb-tusb6010.h
deleted file mode 100644
index d210ff6238c2..000000000000
--- a/arch/arm/mach-omap2/usb-tusb6010.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-
-#ifndef __USB_TUSB6010_H
-#define __USB_TUSB6010_H
-
-extern int __init tusb6010_setup_interface(
-		struct musb_hdrc_platform_data *data,
-		unsigned int ps_refclk, unsigned int waitpin,
-		unsigned int async_cs, unsigned int sync_cs,
-		unsigned int dmachan);
-
-#endif /* __USB_TUSB6010_H */
diff --git a/arch/arm/mach-omap2/voltagedomains2xxx_data.c b/arch/arm/mach-omap2/voltagedomains2xxx_data.c
deleted file mode 100644
index 9bc116fe3ba9..000000000000
--- a/arch/arm/mach-omap2/voltagedomains2xxx_data.c
+++ /dev/null
@@ -1,29 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * OMAP3 voltage domain data
- *
- * Copyright (C) 2011 Texas Instruments, Inc.
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-
-#include "voltage.h"
-
-static struct voltagedomain omap2_voltdm_core = {
-	.name = "core",
-};
-
-static struct voltagedomain omap2_voltdm_wkup = {
-	.name = "wakeup",
-};
-
-static struct voltagedomain *voltagedomains_omap2[] __initdata = {
-	&omap2_voltdm_core,
-	&omap2_voltdm_wkup,
-	NULL,
-};
-
-void __init omap2xxx_voltagedomains_init(void)
-{
-	voltdm_init(voltagedomains_omap2);
-}
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 0189dfdcbbe1..a383ff8f446c 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -337,7 +337,7 @@ config CRYPTO_DEV_OMAP_SHAM
 
 config CRYPTO_DEV_OMAP_AES
 	tristate "Support for OMAP AES hw engine"
-	depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP2PLUS
+	depends on ARCH_OMAP3 || ARCH_OMAP2PLUS
 	select CRYPTO_AES
 	select CRYPTO_SKCIPHER
 	select CRYPTO_ENGINE
diff --git a/drivers/media/platform/ti/omap/Kconfig b/drivers/media/platform/ti/omap/Kconfig
index a9dbe1097775..c41812b324ad 100644
--- a/drivers/media/platform/ti/omap/Kconfig
+++ b/drivers/media/platform/ti/omap/Kconfig
@@ -9,9 +9,9 @@ config VIDEO_OMAP2_VOUT
 	depends on V4L_PLATFORM_DRIVERS
 	depends on MMU
 	depends on FB_OMAP2 || (COMPILE_TEST && FB_OMAP2=n)
-	depends on ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
+	depends on ARCH_OMAP3 || COMPILE_TEST
 	depends on VIDEO_DEV
 	select VIDEOBUF2_DMA_CONTIG
-	select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
+	select OMAP2_VRFB if ARCH_OMAP3
 	help
 	  V4L2 Display driver support for OMAP2/3 based boards.
diff --git a/drivers/mtd/nand/onenand/Kconfig b/drivers/mtd/nand/onenand/Kconfig
index 7d57836bf32f..8a362fd5bfc4 100644
--- a/drivers/mtd/nand/onenand/Kconfig
+++ b/drivers/mtd/nand/onenand/Kconfig
@@ -23,8 +23,8 @@ config MTD_ONENAND_GENERIC
 	  Support for OneNAND flash via platform device driver.
 
 config MTD_ONENAND_OMAP2
-	tristate "OneNAND on OMAP2/OMAP3 support"
-	depends on ARCH_OMAP2 || ARCH_OMAP3 || (COMPILE_TEST && ARM)
+	tristate "OneNAND on OMAP3 support"
+	depends on ARCH_OMAP3 || (COMPILE_TEST && ARM)
 	depends on OF
 	depends on OMAP_GPMC
 	help
diff --git a/drivers/video/fbdev/omap2/omapfb/Kconfig b/drivers/video/fbdev/omap2/omapfb/Kconfig
index 2d20e79adefc..d8227f4326bd 100644
--- a/drivers/video/fbdev/omap2/omapfb/Kconfig
+++ b/drivers/video/fbdev/omap2/omapfb/Kconfig
@@ -8,7 +8,7 @@ menuconfig FB_OMAP2
 	depends on DRM_OMAP = n
 	depends on GPIOLIB
 	select FB_OMAP2_DSS
-	select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
+	select OMAP2_VRFB if ARCH_OMAP3
 	select FB_IOMEM_HELPERS
 	help
 	  Frame buffer driver for OMAP2+ based boards.
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
index 54a3fa370004..ca151152da19 100644
--- a/include/linux/clk/ti.h
+++ b/include/linux/clk/ti.h
@@ -265,12 +265,6 @@ int omap2_clk_disable_autoidle_all(void);
 int omap2_clk_enable_autoidle_all(void);
 int omap2_clk_allow_idle(struct clk *clk);
 int omap2_clk_deny_idle(struct clk *clk);
-unsigned long omap2_dpllcore_recalc(struct clk_hw *hw,
-				    unsigned long parent_rate);
-int omap2_reprogram_dpllcore(struct clk_hw *clk, unsigned long rate,
-			     unsigned long parent_rate);
-void omap2xxx_clkt_dpllcore_init(struct clk_hw *hw);
-void omap2xxx_clkt_vps_init(void);
 unsigned long omap2_get_dpll_rate(struct clk_hw_omap *clk);
 
 void ti_dt_clk_init_retry_clks(void);
@@ -322,8 +316,6 @@ void omap3_noncore_dpll_restore_context(struct clk_hw *hw);
 int omap3_core_dpll_save_context(struct clk_hw *hw);
 void omap3_core_dpll_restore_context(struct clk_hw *hw);
 
-extern const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll;
-
 #ifdef CONFIG_ATAGS
 int omap3430_clk_legacy_init(void);
 int omap3430es1_clk_legacy_init(void);
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 07/13] ARM: imx: remove i.MX31 SoC support
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (5 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 06/13] ARM: omap2: remove omap24xx support Arnd Bergmann
@ 2026-09-08 15:27 ` Arnd Bergmann
  2026-09-09  8:24   ` Vladimir Zapolskiy
                     ` (2 more replies)
  2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
                   ` (6 subsequent siblings)
  13 siblings, 3 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

From: Arnd Bergmann <arnd@arndb.de>

The Freescale i.MX31 was an early SoC based on the ARM1136r0 CPU core. It
was used in the Bug Labs modular computer but ultimately much less
popular than most other i.MX SoCs.

As the ARM1136r0 support is causing a lot of extra maintenance effort
to keep alive and there are no known users, remove i.MX31 in order to
allow removing support for that CPU core altogether.

The related i.MX35 is based on a slightly newer ARM1136r1 CPU core that
does not have this problem, so there is no reason to remove that.

Cc: Russell King <linux@armlinux.org.uk>
Cc: Frank Li <Frank.Li@nxp.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: imx@lists.linux.dev
Cc: devicetree@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig.debug                   |   9 -
 arch/arm/boot/dts/nxp/imx/Makefile       |   3 -
 arch/arm/boot/dts/nxp/imx/imx31-bug.dts  |  22 --
 arch/arm/boot/dts/nxp/imx/imx31-lite.dts | 178 -----------
 arch/arm/boot/dts/nxp/imx/imx31.dtsi     | 371 -----------------------
 arch/arm/configs/imx_v6_v7_defconfig     |   1 -
 arch/arm/mach-imx/Kconfig                |  11 -
 arch/arm/mach-imx/Makefile               |   1 -
 arch/arm/mach-imx/cpu-imx31.c            |  72 -----
 arch/arm/mach-imx/mach-imx31.c           |  18 --
 arch/arm/mach-imx/mm-imx3.c              |  44 ---
 11 files changed, 730 deletions(-)
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-bug.dts
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-lite.dts
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31.dtsi
 delete mode 100644 arch/arm/mach-imx/cpu-imx31.c
 delete mode 100644 arch/arm/mach-imx/mach-imx31.c

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index e2fc89055463..52387fe2a057 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -424,13 +424,6 @@ choice
 		  Say Y here if you want kernel low-level debugging support
 		  on i.MX28.
 
-	config DEBUG_IMX31_UART
-		bool "i.MX31 Debug UART"
-		depends on SOC_IMX31
-		help
-		  Say Y here if you want kernel low-level debugging support
-		  on i.MX31.
-
 	config DEBUG_IMX35_UART
 		bool "i.MX35 Debug UART"
 		depends on SOC_IMX35
@@ -1411,7 +1404,6 @@ config DEBUG_IMX_UART_PORT
 	depends on DEBUG_IMX1_UART || \
 		   DEBUG_IMX25_UART || \
 		   DEBUG_IMX27_UART || \
-		   DEBUG_IMX31_UART || \
 		   DEBUG_IMX35_UART || \
 		   DEBUG_IMX50_UART || \
 		   DEBUG_IMX51_UART || \
@@ -1468,7 +1460,6 @@ config DEBUG_LL_INCLUDE
 	default "debug/imx.S" if DEBUG_IMX1_UART || \
 				 DEBUG_IMX25_UART || \
 				 DEBUG_IMX27_UART || \
-				 DEBUG_IMX31_UART || \
 				 DEBUG_IMX35_UART || \
 				 DEBUG_IMX50_UART || \
 				 DEBUG_IMX51_UART || \
diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
index 1a2539fa19b4..e0747cb6e772 100644
--- a/arch/arm/boot/dts/nxp/imx/Makefile
+++ b/arch/arm/boot/dts/nxp/imx/Makefile
@@ -16,9 +16,6 @@ dtb-$(CONFIG_SOC_IMX27) += \
 	imx27-pdk.dtb \
 	imx27-phytec-phycore-rdk.dtb \
 	imx27-phytec-phycard-s-rdk.dtb
-dtb-$(CONFIG_SOC_IMX31) += \
-	imx31-bug.dtb \
-	imx31-lite.dtb
 dtb-$(CONFIG_SOC_IMX35) += \
 	imx35-eukrea-mbimxsd35-baseboard.dtb \
 	imx35-pdk.dtb
diff --git a/arch/arm/boot/dts/nxp/imx/imx31-bug.dts b/arch/arm/boot/dts/nxp/imx/imx31-bug.dts
deleted file mode 100644
index d87eee3f9b3c..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imx31-bug.dts
+++ /dev/null
@@ -1,22 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
- */
-
-/dts-v1/;
-#include "imx31.dtsi"
-
-/ {
-	model = "Buglabs i.MX31 Bug 1.x";
-	compatible = "buglabs,imx31-bug", "fsl,imx31";
-
-	memory@80000000 {
-		device_type = "memory";
-		reg = <0x80000000 0x8000000>; /* 128M */
-	};
-};
-
-&uart5 {
-	uart-has-rtscts;
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/nxp/imx/imx31-lite.dts b/arch/arm/boot/dts/nxp/imx/imx31-lite.dts
deleted file mode 100644
index 630f8fa69ba8..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imx31-lite.dts
+++ /dev/null
@@ -1,178 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-//
-// Copyright (C) 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
-
-/dts-v1/;
-
-#include "imx31.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-
-/ {
-	model = "LogicPD i.MX31 Lite";
-	compatible = "logicpd,imx31-lite", "fsl,imx31";
-
-	chosen {
-		stdout-path = &uart1;
-	};
-
-	memory@80000000 {
-		device_type = "memory";
-		reg = <0x80000000 0x8000000>;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-
-		led0 {
-			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
-		};
-
-		led1 {
-			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
-		};
-	};
-};
-
-&ata {
-	status = "okay";
-};
-
-&nfc {
-	nand-bus-width = <8>;
-	nand-ecc-mode = "hw";
-	nand-on-flash-bbt;
-	status = "okay";
-};
-
-&sdhci1 {
-	bus-width = <4>;
-	cd-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
-	wp-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
-	status = "okay";
-};
-
-&spi2 {
-	status = "okay";
-
-	pmic@0 {
-		compatible = "fsl,mc13783";
-		reg = <0>;
-		spi-cs-high;
-		spi-max-frequency = <1000000>;
-		interrupt-parent = <&gpio1>;
-		interrupts = <3 IRQ_TYPE_EDGE_RISING>;
-
-		fsl,mc13xxx-uses-adc;
-		fsl,mc13xxx-uses-rtc;
-
-		regulators {
-			sw1a {		/* QVCC */
-				regulator-min-microvolt = <1200000>;
-				regulator-max-microvolt = <1500000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			sw1b {		/* QVCC */
-				regulator-min-microvolt = <1200000>;
-				regulator-max-microvolt = <1500000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			sw2a {		/* 1.8V_DDR, NVCC2, NVCC21 and NVCC22 */
-				regulator-min-microvolt = <1800000>;
-				regulator-max-microvolt = <1800000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			sw2b {		/* NVCC10 */
-				regulator-min-microvolt = <1800000>;
-				regulator-max-microvolt = <1800000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			violo {		/* NVCC1 and NVCC7 */
-				regulator-min-microvolt = <1800000>;
-				regulator-max-microvolt = <1800000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			viohi {		/* VIOHI */
-				regulator-min-microvolt = <2775000>;
-				regulator-max-microvolt = <2775000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			vaudio {	/* VAUDIO */
-				regulator-min-microvolt = <2775000>;
-				regulator-max-microvolt = <2775000>;
-			};
-
-			vcam {		/* NVCC4 */
-				regulator-min-microvolt = <2800000>;
-				regulator-max-microvolt = <2800000>;
-			};
-
-			vgen {		/* NVCC5 / NVCC8 and NVCC6 / NVCC9 */
-				regulator-min-microvolt = <2775000>;
-				regulator-max-microvolt = <2775000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-
-			vmmc2 {		/* NVCC3 */
-				regulator-min-microvolt = <1600000>;
-				regulator-max-microvolt = <3000000>;
-				regulator-always-on;
-				regulator-boot-on;
-			};
-		};
-	};
-};
-
-&uart1 {
-	uart-has-rtscts;
-	status = "okay";
-};
-
-/* Routed to the extension board */
-&uart2 {
-	uart-has-rtscts;
-	status = "okay";
-};
-
-/* Routed to the extension board */
-&uart3 {
-	uart-has-rtscts;
-	status = "okay";
-};
-
-&weim {
-	status = "okay";
-
-	flash@0,0 {
-		compatible = "cfi-flash";
-		reg = <0 0x0 0x200000>;
-		bank-width = <2>;
-		linux,mtd-name = "physmap-flash.0";
-		fsl,weim-cs-timing = <0x0000cf03 0xa0330d01 0x00220800>;
-	};
-
-	ethernet@4,0 {
-		compatible = "smsc,lan9117", "smsc,lan9115";
-		reg = <4 0x0 0x100>;
-		interrupt-parent = <&gpio1>;
-		interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
-		phy-mode = "mii";
-		reg-io-width = <2>;
-		smsc,irq-push-pull;
-		fsl,weim-cs-timing = <0x00008701 0x04000541 0x00010000>;
-	};
-};
diff --git a/arch/arm/boot/dts/nxp/imx/imx31.dtsi b/arch/arm/boot/dts/nxp/imx/imx31.dtsi
deleted file mode 100644
index c58f855ea851..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imx31.dtsi
+++ /dev/null
@@ -1,371 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-//
-// Copyright 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
-// Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-	/*
-	 * The decompressor and also some bootloaders rely on a
-	 * pre-existing /chosen node to be available to insert the
-	 * command line and merge other ATAGS info.
-	 */
-	chosen {};
-
-	aliases {
-		gpio0 = &gpio1;
-		gpio1 = &gpio2;
-		gpio2 = &gpio3;
-		i2c0 = &i2c1;
-		i2c1 = &i2c2;
-		i2c2 = &i2c3;
-		serial0 = &uart1;
-		serial1 = &uart2;
-		serial2 = &uart3;
-		serial3 = &uart4;
-		serial4 = &uart5;
-		spi0 = &spi1;
-		spi1 = &spi2;
-		spi2 = &spi3;
-	};
-
-	cpus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		cpu@0 {
-			compatible = "arm,arm1136jf-s";
-			device_type = "cpu";
-			reg = <0>;
-		};
-	};
-
-	avic: interrupt-controller@68000000 {
-		compatible = "fsl,imx31-avic", "fsl,avic";
-		interrupt-controller;
-		#interrupt-cells = <1>;
-		reg = <0x68000000 0x100000>;
-	};
-
-	soc: soc {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "simple-bus";
-		interrupt-parent = <&avic>;
-		ranges;
-
-		iram: sram@1fffc000 {
-			compatible = "mmio-sram";
-			reg = <0x1fffc000 0x4000>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x1fffc000 0x4000>;
-		};
-
-		aips1: bus@43f00000 { /* AIPS1 */
-			compatible = "fsl,aips-bus", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			reg = <0x43f00000 0x100000>;
-			ranges;
-
-			i2c1: i2c@43f80000 {
-				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
-				reg = <0x43f80000 0x4000>;
-				interrupts = <10>;
-				clocks = <&clks 33>;
-				#address-cells = <1>;
-				#size-cells = <0>;
-				status = "disabled";
-			};
-
-			i2c3: i2c@43f84000 {
-				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
-				reg = <0x43f84000 0x4000>;
-				interrupts = <3>;
-				clocks = <&clks 35>;
-				#address-cells = <1>;
-				#size-cells = <0>;
-				status = "disabled";
-			};
-
-			ata: ata@43f8c000 {
-				compatible = "fsl,imx31-pata", "fsl,imx27-pata";
-				reg = <0x43f8c000 0x4000>;
-				interrupts = <15>;
-				clocks = <&clks 26>;
-				status = "disabled";
-			};
-
-			uart1: serial@43f90000 {
-				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
-				reg = <0x43f90000 0x4000>;
-				interrupts = <45>;
-				clocks = <&clks 10>, <&clks 30>;
-				clock-names = "ipg", "per";
-				status = "disabled";
-			};
-
-			uart2: serial@43f94000 {
-				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
-				reg = <0x43f94000 0x4000>;
-				interrupts = <32>;
-				clocks = <&clks 10>, <&clks 31>;
-				clock-names = "ipg", "per";
-				status = "disabled";
-			};
-
-			i2c2: i2c@43f98000 {
-				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
-				reg = <0x43f98000 0x4000>;
-				interrupts = <4>;
-				clocks = <&clks 34>;
-				#address-cells = <1>;
-				#size-cells = <0>;
-				status = "disabled";
-			};
-
-			spi1: spi@43fa4000 {
-				compatible = "fsl,imx31-cspi";
-				reg = <0x43fa4000 0x4000>;
-				interrupts = <14>;
-				clocks = <&clks 10>, <&clks 53>;
-				clock-names = "ipg", "per";
-				dmas = <&sdma 8 8 0>, <&sdma 9 8 0>;
-				dma-names = "rx", "tx";
-				#address-cells = <1>;
-				#size-cells = <0>;
-				status = "disabled";
-			};
-
-			kpp: kpp@43fa8000 {
-				compatible = "fsl,imx31-kpp", "fsl,imx21-kpp";
-				reg = <0x43fa8000 0x4000>;
-				interrupts = <24>;
-				clocks = <&clks 46>;
-				status = "disabled";
-			};
-
-			uart4: serial@43fb0000 {
-				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
-				reg = <0x43fb0000 0x4000>;
-				clocks = <&clks 10>, <&clks 49>;
-				clock-names = "ipg", "per";
-				interrupts = <46>;
-				status = "disabled";
-			};
-
-			uart5: serial@43fb4000 {
-				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
-				reg = <0x43fb4000 0x4000>;
-				interrupts = <47>;
-				clocks = <&clks 10>, <&clks 50>;
-				clock-names = "ipg", "per";
-				status = "disabled";
-			};
-		};
-
-		spba-bus@50000000 {
-			compatible = "fsl,spba-bus", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			reg = <0x50000000 0x100000>;
-			ranges;
-
-			sdhci1: mmc@50004000 {
-				compatible = "fsl,imx31-mmc";
-				reg = <0x50004000 0x4000>;
-				interrupts = <9>;
-				clocks = <&clks 10>, <&clks 20>;
-				clock-names = "ipg", "per";
-				dmas = <&sdma 20 3 0>;
-				dma-names = "rx-tx";
-				status = "disabled";
-			};
-
-			sdhci2: mmc@50008000 {
-				compatible = "fsl,imx31-mmc";
-				reg = <0x50008000 0x4000>;
-				interrupts = <8>;
-				clocks = <&clks 10>, <&clks 21>;
-				clock-names = "ipg", "per";
-				dmas = <&sdma 21 3 0>;
-				dma-names = "rx-tx";
-				status = "disabled";
-			};
-
-			uart3: serial@5000c000 {
-				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
-				reg = <0x5000c000 0x4000>;
-				interrupts = <18>;
-				clocks = <&clks 10>, <&clks 48>;
-				clock-names = "ipg", "per";
-				status = "disabled";
-			};
-
-			spi2: spi@50010000 {
-				compatible = "fsl,imx31-cspi";
-				reg = <0x50010000 0x4000>;
-				interrupts = <13>;
-				clocks = <&clks 10>, <&clks 54>;
-				clock-names = "ipg", "per";
-				dmas = <&sdma 6 8 0>, <&sdma 7 8 0>;
-				dma-names = "rx", "tx";
-				#address-cells = <1>;
-				#size-cells = <0>;
-				status = "disabled";
-			};
-
-			iim: efuse@5001c000 {
-				compatible = "fsl,imx31-iim";
-				reg = <0x5001c000 0x1000>;
-				interrupts = <19>;
-				clocks = <&clks 25>;
-			};
-		};
-
-		bus@53f00000 { /* AIPS2 */
-			compatible = "fsl,aips-bus", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			reg = <0x53f00000 0x100000>;
-			ranges;
-
-			clks: ccm@53f80000 {
-				compatible = "fsl,imx31-ccm";
-				reg = <0x53f80000 0x4000>;
-				interrupts = <31>, <53>;
-				#clock-cells = <1>;
-			};
-
-			spi3: spi@53f84000 {
-				compatible = "fsl,imx31-cspi";
-				reg = <0x53f84000 0x4000>;
-				interrupts = <17>;
-				clocks = <&clks 10>, <&clks 28>;
-				clock-names = "ipg", "per";
-				dmas = <&sdma 10 8 0>, <&sdma 11 8 0>;
-				dma-names = "rx", "tx";
-				#address-cells = <1>;
-				#size-cells = <0>;
-				status = "disabled";
-			};
-
-			gpt: timer@53f90000 {
-				compatible = "fsl,imx31-gpt";
-				reg = <0x53f90000 0x4000>;
-				interrupts = <29>;
-				clocks = <&clks 10>, <&clks 22>;
-				clock-names = "ipg", "per";
-			};
-
-			gpio3: gpio@53fa4000 {
-				compatible = "fsl,imx31-gpio";
-				reg = <0x53fa4000 0x4000>;
-				interrupts = <56>;
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-			};
-
-			rng@53fb0000 {
-				compatible = "fsl,imx31-rnga";
-				reg = <0x53fb0000 0x4000>;
-				interrupts = <22>;
-				clocks = <&clks 29>;
-			};
-
-			gpio1: gpio@53fcc000 {
-				compatible = "fsl,imx31-gpio";
-				reg = <0x53fcc000 0x4000>;
-				interrupts = <52>;
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-			};
-
-			gpio2: gpio@53fd0000 {
-				compatible = "fsl,imx31-gpio";
-				reg = <0x53fd0000 0x4000>;
-				interrupts = <51>;
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-			};
-
-			sdma: dma-controller@53fd4000 {
-				compatible = "fsl,imx31-sdma";
-				reg = <0x53fd4000 0x4000>;
-				interrupts = <34>;
-				clocks = <&clks 10>, <&clks 27>;
-				clock-names = "ipg", "ahb";
-				#dma-cells = <3>;
-				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx31.bin";
-			};
-
-			rtc: rtc@53fd8000 {
-				compatible = "fsl,imx31-rtc", "fsl,imx21-rtc";
-				reg = <0x53fd8000 0x4000>;
-				interrupts = <25>;
-				clocks = <&clks 2>, <&clks 40>;
-				clock-names = "ref", "ipg";
-			};
-
-			wdog: watchdog@53fdc000 {
-				compatible = "fsl,imx31-wdt", "fsl,imx21-wdt";
-				reg = <0x53fdc000 0x4000>;
-				clocks = <&clks 41>;
-				interrupts = <55>;
-			};
-
-			pwm: pwm@53fe0000 {
-				compatible = "fsl,imx31-pwm", "fsl,imx27-pwm";
-				reg = <0x53fe0000 0x4000>;
-				interrupts = <26>;
-				clocks = <&clks 10>, <&clks 42>;
-				clock-names = "ipg", "per";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		emi-bus@b8000000 { /* External Memory Interface */
-			compatible = "simple-bus";
-			reg = <0xb8000000 0x5000>;
-			ranges;
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			nfc: nand-controller@b8000000 {
-				compatible = "fsl,imx31-nand", "fsl,imx27-nand";
-				reg = <0xb8000000 0x1000>;
-				interrupts = <33>;
-				clocks = <&clks 9>;
-				dmas = <&sdma 30 17 0>;
-				dma-names = "rx-tx";
-				#address-cells = <1>;
-				#size-cells = <1>;
-				status = "disabled";
-			};
-
-			weim: memory-controller@b8002000 {
-				compatible = "fsl,imx31-weim", "fsl,imx27-weim";
-				reg = <0xb8002000 0x1000>;
-				clocks = <&clks 56>;
-				#address-cells = <2>;
-				#size-cells = <1>;
-				ranges = <0 0 0xa0000000 0x08000000
-					  1 0 0xa8000000 0x08000000
-					  2 0 0xb0000000 0x02000000
-					  3 0 0xb2000000 0x02000000
-					  4 0 0xb4000000 0x02000000
-					  5 0 0xb6000000 0x02000000>;
-				status = "disabled";
-			};
-		};
-	};
-};
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index ed588add8d31..6ac42c06c1e9 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -15,7 +15,6 @@ CONFIG_PERF_EVENTS=y
 CONFIG_KEXEC=y
 CONFIG_ARCH_MULTI_V6=y
 CONFIG_ARCH_MXC=y
-CONFIG_SOC_IMX31=y
 CONFIG_SOC_IMX35=y
 CONFIG_SOC_IMX50=y
 CONFIG_SOC_IMX51=y
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 3f0521c652cb..77704c6a70ba 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -39,17 +39,6 @@ if ARCH_MULTI_V6
 
 comment "ARM1136 platforms"
 
-config SOC_IMX31
-	bool "i.MX31 support (DEPRECATED)"
-	depends on !SMP
-	select CPU_ARM1136R0
-	select MXC_AVIC
-	help
-	  This enables support for Freescale i.MX31 processor
-
-	  This SoC is scheduled for removal in early 2027,
-	  since it uses the ARM1136r0 CPU revision.
-
 config SOC_IMX35
 	bool "i.MX35 support"
 	select CPU_ARM1136R1
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 5c650bf40e02..fa0144f0882d 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -5,7 +5,6 @@ obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
 
 obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o mach-imx27.o
 
-obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o mach-imx31.o
 obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o mach-imx35.o
 
 imx5-pm-$(CONFIG_PM) += pm-imx5.o
diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
deleted file mode 100644
index e81ef9e36a1f..000000000000
--- a/arch/arm/mach-imx/cpu-imx31.c
+++ /dev/null
@@ -1,72 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * MX31 CPU type detection
- *
- * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
- */
-
-#include <linux/module.h>
-#include <linux/of_address.h>
-#include <linux/io.h>
-
-#include "common.h"
-#include "hardware.h"
-#include "iim.h"
-
-static int mx31_cpu_rev = -1;
-
-static struct {
-	u8 srev;
-	const char *name;
-	unsigned int rev;
-} mx31_cpu_type[] = {
-	{ .srev = 0x00, .name = "i.MX31(L)", .rev = IMX_CHIP_REVISION_1_0 },
-	{ .srev = 0x10, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_1 },
-	{ .srev = 0x11, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_1 },
-	{ .srev = 0x12, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_1 },
-	{ .srev = 0x13, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_1 },
-	{ .srev = 0x14, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_2 },
-	{ .srev = 0x15, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_2 },
-	{ .srev = 0x28, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_2_0 },
-	{ .srev = 0x29, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_2_0 },
-};
-
-static int mx31_read_cpu_rev(void)
-{
-	void __iomem *iim_base;
-	struct device_node *np;
-	u32 i, srev;
-	int rev = IMX_CHIP_REVISION_UNKNOWN;
-
-	np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
-	iim_base = of_iomap(np, 0);
-	of_node_put(np);
-	BUG_ON(!iim_base);
-
-	/* read SREV register from IIM module */
-	srev = imx_readl(iim_base + MXC_IIMSREV);
-	srev &= 0xff;
-
-	for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
-		if (srev == mx31_cpu_type[i].srev) {
-			rev = mx31_cpu_type[i].rev;
-			imx_print_silicon_rev(mx31_cpu_type[i].name,
-						mx31_cpu_type[i].rev);
-			goto out;
-		}
-
-	imx_print_silicon_rev("i.MX31", IMX_CHIP_REVISION_UNKNOWN);
-
-out:
-	iounmap(iim_base);
-	return rev;
-}
-
-int mx31_revision(void)
-{
-	if (mx31_cpu_rev == -1)
-		mx31_cpu_rev = mx31_read_cpu_rev();
-
-	return mx31_cpu_rev;
-}
-EXPORT_SYMBOL(mx31_revision);
diff --git a/arch/arm/mach-imx/mach-imx31.c b/arch/arm/mach-imx/mach-imx31.c
deleted file mode 100644
index e9a1092b6093..000000000000
--- a/arch/arm/mach-imx/mach-imx31.c
+++ /dev/null
@@ -1,18 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Copyright 2012 Sascha Hauer, Pengutronix
- */
-
-#include <asm/mach/arch.h>
-#include "common.h"
-
-static const char * const imx31_dt_board_compat[] __initconst = {
-	"fsl,imx31",
-	NULL
-};
-
-DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
-	.map_io		= mx31_map_io,
-	.init_early	= imx31_init_early,
-	.dt_compat	= imx31_dt_board_compat,
-MACHINE_END
diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c
index 9b0b014d7fe2..42e73518004a 100644
--- a/arch/arm/mach-imx/mm-imx3.c
+++ b/arch/arm/mach-imx/mm-imx3.c
@@ -69,49 +69,6 @@ static void __iomem *imx3_ioremap_caller(phys_addr_t phys_addr, size_t size,
 	return __arm_ioremap_caller(phys_addr, size, mtype, caller);
 }
 
-#ifdef CONFIG_SOC_IMX31
-static struct map_desc mx31_io_desc[] __initdata = {
-	imx_map_entry(MX31, X_MEMC, MT_DEVICE),
-	imx_map_entry(MX31, AVIC, MT_DEVICE_NONSHARED),
-	imx_map_entry(MX31, AIPS1, MT_DEVICE_NONSHARED),
-	imx_map_entry(MX31, AIPS2, MT_DEVICE_NONSHARED),
-	imx_map_entry(MX31, SPBA0, MT_DEVICE_NONSHARED),
-};
-
-/*
- * This function initializes the memory map. It is called during the
- * system startup to create static physical to virtual memory mappings
- * for the IO modules.
- */
-void __init mx31_map_io(void)
-{
-	iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc));
-}
-
-static void imx31_idle(void)
-{
-	int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR);
-	reg &= ~MXC_CCM_CCMR_LPM_MASK;
-	imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR);
-
-	imx3_idle();
-}
-
-void __init imx31_init_early(void)
-{
-	struct device_node *np;
-
-	mxc_set_cpu_type(MXC_CPU_MX31);
-	arch_ioremap_caller = imx3_ioremap_caller;
-	arm_pm_idle = imx31_idle;
-	np = of_find_compatible_node(NULL, NULL, "fsl,imx31-ccm");
-	mx3_ccm_base = of_iomap(np, 0);
-	of_node_put(np);
-	BUG_ON(!mx3_ccm_base);
-}
-#endif /* ifdef CONFIG_SOC_IMX31 */
-
-#ifdef CONFIG_SOC_IMX35
 static struct map_desc mx35_io_desc[] __initdata = {
 	imx_map_entry(MX35, X_MEMC, MT_DEVICE),
 	imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED),
@@ -147,4 +104,3 @@ void __init imx35_init_early(void)
 	of_node_put(np);
 	BUG_ON(!mx3_ccm_base);
 }
-#endif /* ifdef CONFIG_SOC_IMX35 */
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 08/13] ARM: imx: remove nommu support
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (6 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
@ 2026-09-08 15:27 ` Arnd Bergmann
  2026-09-09 20:17   ` Fabio Estevam
                     ` (2 more replies)
  2026-09-08 15:27 ` [PATCH 09/13] ARM: lpc18xx: remove entire platform Arnd Bergmann
                   ` (5 subsequent siblings)
  13 siblings, 3 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Giulio Benetti

From: Arnd Bergmann <arnd@arndb.de>

The i.MX platform has grown support for three separate product
lines using Cortex-M based microcontrollers over the years:

 - i.MX RT1050, a high-end microcontroller
 - Vybrid vf610 suppors running Linux on either the Cortex-A5
   CPU or the Cortex-M4 MCU
 - i.MX7D similarly can run Linux on the Cortex-A7 or the
   Cortex-M4

There are no known upstream users of any of those three, so
drop support and simplify the platform to assume that an MMU
is present.

Cc: Frank Li <Frank.Li@nxp.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Stefan Agner <stefan@agner.ch>
Cc: Rob Herring <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Vladimir Zapolskiy <vz@mleia.com>
Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
Cc: devicetree@vger.kernel.org
Cc: imx@lists.linux.dev
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/boot/dts/nxp/imx/Makefile            |    2 -
 arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
 arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 -----------
 arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
 arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 -----------------
 arch/arm/boot/dts/nxp/vf/Makefile             |    2 -
 arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts  |   61 -
 arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts   |   88 -
 arch/arm/boot/dts/nxp/vf/vf610m4.dtsi         |   61 -
 arch/arm/configs/imxrt_defconfig              |   35 -
 arch/arm/configs/vf610m4_defconfig            |   39 -
 arch/arm/mach-imx/Kconfig                     |   27 +-
 arch/arm/mach-imx/Makefile                    |    3 -
 arch/arm/mach-imx/mach-imx7d-cm4.c            |   18 -
 arch/arm/mach-imx/mach-imxrt.c                |   19 -
 arch/arm/mach-imx/mach-vf610.c                |    1 -
 16 files changed, 6 insertions(+), 3136 deletions(-)
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
 delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
 delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
 delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
 delete mode 100644 arch/arm/configs/imxrt_defconfig
 delete mode 100644 arch/arm/configs/vf610m4_defconfig
 delete mode 100644 arch/arm/mach-imx/mach-imx7d-cm4.c
 delete mode 100644 arch/arm/mach-imx/mach-imxrt.c

diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
index e0747cb6e772..288d16d9315d 100644
--- a/arch/arm/boot/dts/nxp/imx/Makefile
+++ b/arch/arm/boot/dts/nxp/imx/Makefile
@@ -452,5 +452,3 @@ dtb-$(CONFIG_SOC_IMX7D) += \
 dtb-$(CONFIG_SOC_IMX7ULP) += \
 	imx7ulp-com.dtb \
 	imx7ulp-evk.dtb
-dtb-$(CONFIG_SOC_IMXRT) += \
-	imxrt1050-evk.dtb
diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts b/arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
deleted file mode 100644
index 6a9c10decf52..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
+++ /dev/null
@@ -1,72 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2019
- * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
- */
-
-/dts-v1/;
-#include "imxrt1050.dtsi"
-#include "imxrt1050-pinfunc.h"
-
-/ {
-	model = "NXP IMXRT1050-evk board";
-	compatible = "fsl,imxrt1050-evk", "fsl,imxrt1050";
-
-	chosen {
-		stdout-path = &lpuart1;
-	};
-
-	aliases {
-		gpio0 = &gpio1;
-		gpio1 = &gpio2;
-		gpio2 = &gpio3;
-		gpio3 = &gpio4;
-		gpio4 = &gpio5;
-		mmc0 = &usdhc1;
-		serial0 = &lpuart1;
-	};
-
-	memory@80000000 {
-		device_type = "memory";
-		reg = <0x80000000 0x2000000>;
-	};
-};
-
-&lpuart1 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_lpuart1>;
-	status = "okay";
-};
-
-&iomuxc {
-	pinctrl-names = "default";
-	pinctrl_lpuart1: lpuart1grp {
-		fsl,pins = <
-			MXRT1050_IOMUXC_GPIO_AD_B0_12_LPUART1_TXD	0xf1
-			MXRT1050_IOMUXC_GPIO_AD_B0_13_LPUART1_RXD	0xf1
-		>;
-	};
-
-	pinctrl_usdhc0: usdhc0grp {
-		fsl,pins = <
-			MXRT1050_IOMUXC_GPIO_B1_12_USDHC1_CD_B		0x1B000
-			MXRT1050_IOMUXC_GPIO_B1_14_USDHC1_VSELECT	0xB069
-			MXRT1050_IOMUXC_GPIO_SD_B0_00_USDHC1_CMD	0x17061
-			MXRT1050_IOMUXC_GPIO_SD_B0_01_USDHC1_CLK	0x17061
-			MXRT1050_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3	0x17061
-			MXRT1050_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2	0x17061
-			MXRT1050_IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1	0x17061
-			MXRT1050_IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0	0x17061
-		>;
-	};
-};
-
-&usdhc1 {
-	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
-	pinctrl-0 = <&pinctrl_usdhc0>;
-	pinctrl-1 = <&pinctrl_usdhc0>;
-	pinctrl-2 = <&pinctrl_usdhc0>;
-	pinctrl-3 = <&pinctrl_usdhc0>;
-	cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h b/arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
deleted file mode 100644
index 22c14a3262ad..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
+++ /dev/null
@@ -1,993 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
-/*
- * Copyright (C) 2019
- * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
- */
-
-#ifndef _DT_BINDINGS_PINCTRL_IMXRT1050_PINFUNC_H
-#define _DT_BINDINGS_PINCTRL_IMXRT1050_PINFUNC_H
-
-#define IMX_PAD_SION	0x40000000
-
-/*
- * The pin function ID is a tuple of
- * <mux_reg conf_reg input_reg mux_mode input_val>
- */
-
-#define MXRT1050_IOMUXC_GPIO_EMC_00_SEMC_DA00				0x014 0x204 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_00_FLEXPWM4_PWM0_A			0x014 0x204 0x494 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_00_LPSPI2_SCK				0x014 0x204 0x500 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_00_XBAR_INOUT2				0x014 0x204 0x60C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_00_FLEXIO1_D00				0x014 0x204 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_00_GPIO4_IO00				0x014 0x204 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_01_SEMC_DA01				0x018 0x208 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_01_FLEXPWM4_PWM0_B			0x018 0x208 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_01_LPSPI2_PCS0				0x018 0x208 0x4FC 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_01_XBAR_INOUT3				0x018 0x208 0x610 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_01_FLEXIO1_D01				0x018 0x208 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_01_GPIO4_IO01				0x018 0x208 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_02_SEMC_DA02				0x01C 0x20C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_02_FLEXPWM4_PWM1_A			0x01C 0x20C 0x498 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_02_LPSPI2_SDO				0x01C 0x20C 0x508 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_02_XBAR_INOUT4				0x01C 0x20C 0x614 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_02_FLEXIO1_D02				0x01C 0x20C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_02_GPIO4_IO02				0x01C 0x20C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_03_SEMC_DA03				0x020 0x210 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_03_FLEXPWM4_PWM1_B			0x020 0x210 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_03_LPSPI2_SDI				0x020 0x210 0x504 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_03_XBAR_INOUT5				0x020 0x210 0x618 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_03_FLEXIO1_D03				0x020 0x210 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_03_GPIO4_IO03				0x020 0x210 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_04_SEMC_DA04				0x024 0x214 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_04_FLEXPWM4_PWM2_A			0x024 0x214 0x49C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_04_SAI2_TX_DATA			0x024 0x214 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_04_XBAR_INOUT6				0x024 0x214 0x61C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_04_FLEXIO1_D04				0x024 0x214 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_04_GPIO4_IO04				0x024 0x214 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_05_SEMC_DA05				0x028 0x218 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_05_FLEXPWM4_PWM2_B			0x028 0x218 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_05_SAI2_TX_SYNC			0x028 0x218 0x5C4 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_05_XBAR_INOUT7				0x028 0x218 0x620 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_05_FLEXIO1_D05				0x028 0x218 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_05_GPIO4_IO05				0x028 0x218 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_06_SEMC_DA06				0x02C 0x21C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_06_FLEXPWM2_PWM0_A			0x02C 0x21C 0x478 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_06_SAI2_TX_BCLK			0x02C 0x21C 0x5C0 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_06_XBAR_INOUT8				0x02C 0x21C 0x624 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_06_FLEXIO1_D06				0x02C 0x21C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_06_GPIO4_IO06				0x02C 0x21C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_07_SEMC_DA07				0x030 0x220 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_07_FLEXPWM2_PWM0_B			0x030 0x220 0x488 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_07_SAI2_MCLK				0x030 0x220 0x5B0 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_07_XBAR_INOUT9				0x030 0x220 0x628 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_07_FLEXIO1_D07				0x030 0x220 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_07_GPIO4_IO07				0x030 0x220 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_08_SEMC_DM00				0x034 0x224 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_08_FLEXPWM2_PWM1_A			0x034 0x224 0x47C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_08_SAI2_RX_DATA			0x034 0x224 0x5B8 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_08_XBAR_INOUT17			0x034 0x224 0x62C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_08_FLEXIO1_D08				0x034 0x224 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_08_GPIO4_IO08				0x034 0x224 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_09_SEMC_ADDR00				0x038 0x228 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_09_FLEXPWM2_PWM1_B			0x038 0x228 0x48C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_09_SAI2_RX_SYNC			0x038 0x228 0x5BC 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_09_FLEXCAN2_TX				0x038 0x228 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_09_FLEXIO1_D09				0x038 0x228 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_09_GPIO4_IO09				0x038 0x228 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_10_SEMC_ADDR01				0x03C 0x22C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_10_FLEXPWM2_PWM2_A			0x03C 0x22C 0x480 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_10_SAI2_RX_BCLK			0x03C 0x22C 0x5B4 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_10_FLEXCAN2_RX				0x03C 0x22C 0x450 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_10_FLEXIO1_D10				0x03C 0x22C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_10_GPIO4_IO10				0x03C 0x22C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_11_SEMC_ADDR02				0x040 0x230 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_11_FLEXPWM2_PWM2_B			0x040 0x230 0x490 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_11_LPI2C4_SDA				0x040 0x230 0x4E8 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_11_USDHC2_RESET_B			0x040 0x230 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_11_FLEXIO1_D11				0x040 0x230 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_11_GPIO4_IO11				0x040 0x230 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_12_SEMC_ADDR03				0x044 0x234 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_12_XBAR_INOUT24			0x044 0x234 0x640 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_12_LPI2C4_SCL				0x044 0x234 0x4E4 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_12_USDHC2_WP				0x044 0x234 0x5D8 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_12_FLEXPWM1_PWM3_A			0x044 0x234 0x454 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_12_GPIO4_IO12				0x044 0x234 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_13_SEMC_ADDR04				0x048 0x238 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_13_XBAR_INOUT25			0x048 0x238 0x650 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_13_LPUART3_TXD				0x048 0x238 0x53C 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_13_MQS_RIGHT				0x048 0x238 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_13_FLEXPWM1_PWM3_B			0x048 0x238 0x464 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_13_GPIO4_IO13				0x048 0x238 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_14_SEMC_ADDR05				0x04C 0x23C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_14_XBAR_INOUT19			0x04C 0x23C 0x654 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_14_LPUART3_RXD				0x04C 0x23C 0x538 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_14_MQS_LEFT				0x04C 0x23C 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_14_LPSPI2_PCS1				0x04C 0x23C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_14_GPIO4_IO14				0x04C 0x23C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_15_SEMC_ADDR06				0x050 0x240 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_15_XBAR_INOUT20			0x050 0x240 0x634 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_15_LPUART3_CTS_B			0x050 0x240 0x534 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_15_SPDIF_OUT				0x050 0x240 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_15_TMR3_TIMER0				0x050 0x240 0x57C 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_15_GPIO4_IO15				0x050 0x240 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_16_SEMC_ADDR07				0x054 0x244 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_16_XBAR_INOUT21			0x054 0x244 0x658 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_16_LPUART3_RTS_B			0x054 0x244 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_16_SPDIF_IN				0x054 0x244 0x5C8 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_16_TMR3_TIMER1				0x054 0x244 0x580 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_16_GPIO4_IO16				0x054 0x244 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_17_SEMC_ADDR08				0x058 0x248 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_17_FLEXPWM4_PWM3_A			0x058 0x248 0x4A0 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_17_LPUART4_CTS_B			0x058 0x248 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_17_FLEXCAN1_TX				0x058 0x248 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_17_TMR3_TIMER2				0x058 0x248 0x584 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_17_GPIO4_IO17				0x058 0x248 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_18_SEMC_ADDR09				0x05C 0x24C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_18_FLEXPWM4_PWM3_B			0x05C 0x24C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_18_LPUART4_RTS_B			0x05C 0x24C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_18_FLEXCAN1_RX				0x05C 0x24C 0x44C 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_18_TMR3_TIMER3				0x05C 0x24C 0x588 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_18_GPIO4_IO18				0x05C 0x24C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_18_SNVS_VIO_5_CTL			0x05C 0x24C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_19_SEMC_ADDR11				0x060 0x250 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_19_FLEXPWM2_PWM3_A			0x060 0x250 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_19_LPUART4_TXD				0x060 0x250 0x544 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_19_ENET_RX_DATA01			0x060 0x250 0x438 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_19_TMR2_TIMER0				0x060 0x250 0x56C 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_19_GPIO4_IO19				0x060 0x250 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_19_SNVS_VIO_5				0x060 0x250 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_20_SEMC_ADDR12				0x064 0x254 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_20_FLEXPWM2_PWM3_B			0x064 0x254 0x484 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_20_LPUART4_RXD				0x064 0x254 0x540 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_20_ENET_RX_DATA00			0x064 0x254 0x434 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_20_TMR2_TIMER0				0x064 0x254 0x570 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_20_GPIO4_IO20				0x064 0x254 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_21_SEMC_BA0				0x068 0x258 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_21_FLEXPWM3_PWM3_A			0x068 0x258 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_21_LPI2C3_SDA				0x068 0x258 0x4E0 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_21_ENET_TX_DATA01			0x068 0x258 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_21_TMR2_TIMER2				0x068 0x258 0x574 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_21_GPIO4_IO21				0x068 0x258 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_22_SEMC_BA1				0x06C 0x25C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_22_FLEXPWM3_PWM3_B			0x06C 0x25C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_22_LPI2C3_SCL				0x06C 0x25C 0x4DC 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_22_ENET_TX_DATA00			0x06C 0x25C 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_22_TMR2_TIMER3				0x06C 0x25C 0x578 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_22_GPIO4_IO22				0x06C 0x25C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_23_SEMC_ADDR10				0x070 0x260 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_23_FLEXPWM1_PWM0_A			0x070 0x260 0x458 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_23_LPUART5_TXD				0x070 0x260 0x54C 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_23_ENET_RX_EN				0x070 0x260 0x43C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_23_GPT1_CAPTURE2			0x070 0x260 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_23_GPIO4_IO23				0x070 0x260 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_24_SEMC_CAS				0x074 0x264 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_24_FLEXPWM1_PWM0_B			0x074 0x264 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_24_LPUART5_RXD				0x074 0x264 0x548 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_24_ENET_TX_EN				0x074 0x264 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_24_GPT1_CAPTURE1			0x074 0x264 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_24_GPIO4_IO24				0x074 0x264 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_25_SEMC_RAS				0x078 0x268 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_25_FLEXPWM1_PWM1_A			0x078 0x268 0x45C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_25_LPUART6_TXD				0x078 0x268 0x554 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_25_ENET_TX_CLK				0x078 0x268 0x448 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_25_ENET_REF_CLK			0x078 0x268 0x42C 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_25_GPIO4_IO25				0x078 0x268 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_26_SEMC_CLK				0x07C 0x26C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_26_FLEXPWM1_PWM1_B			0x07C 0x26C 0x46C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_26_LPUART6_RXD				0x07C 0x26C 0x550 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_26_ENET_RX_ER				0x07C 0x26C 0x440 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_26_FLEXIO1_D12				0x07C 0x26C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_26_GPIO4_IO26				0x07C 0x26C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_27_SEMC_CKE				0x080 0x270 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_27_FLEXPWM1_PWM2_A			0x080 0x270 0x460 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_27_LPUART5_RTS_B			0x080 0x270 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_27_LPSPI1_SCK				0x080 0x270 0x4F0 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_27_FLEXIO1_D13				0x080 0x270 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_27_GPIO4_IO27				0x080 0x270 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_28_SEMC_WE				0x084 0x274 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_28_FLEXPWM1_PWM2_B			0x084 0x274 0x470 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_28_LPUART5_CTS_B			0x084 0x274 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_28_LPSPI1_SDO				0x084 0x274 0x4F8 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_28_FLEXIO1_D14				0x084 0x274 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_28_GPIO4_IO28				0x084 0x274 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_29_SEMC_CS0				0x088 0x278 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_29_FLEXPWM3_PWM0_A			0x088 0x278 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_29_LPUART6_RTS_B			0x088 0x278 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_29_LPSPI1_SDI				0x088 0x278 0x4F4 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_29_FLEXIO1_D15				0x088 0x278 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_29_GPIO4_IO29				0x088 0x278 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_30_SEMC_DA08				0x08C 0x27C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_30_FLEXPWM3_PWM0_B			0x08C 0x27C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_30_LPUART6_CTS_B			0x08C 0x27C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_30_LPSPI1_PCS0				0x08C 0x27C 0x4EC 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_30_CSI_DATA23				0x08C 0x27C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_30_GPIO4_IO30				0x08C 0x27C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_31_SEMC_DA09				0x090 0x280 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_31_FLEXPWM3_PWM1_A			0x090 0x280 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_31_LPUART7_TXD				0x090 0x280 0x55C 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_31_LPSPI1_PCS1				0x090 0x280 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_31_CSI_DATA22				0x090 0x280 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_31_GPIO4_IO31				0x090 0x280 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_32_SEMC_DA10				0x094 0x284 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_32_FLEXPWM3_PWM1_B			0x094 0x284 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_32_LPUART7_RXD				0x094 0x284 0x558 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_32_CCM_PMIC_READY			0x094 0x284 0x3FC 0x3 0x4
-#define MXRT1050_IOMUXC_GPIO_EMC_32_CSI_DATA21				0x094 0x284 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_32_GPIO3_IO18				0x094 0x284 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_33_SEMC_DA11				0x098 0x288 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_33_FLEXPWM3_PWM2_A			0x098 0x288 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_33_USDHC1_RESET_B			0x098 0x288 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_33_SAI3_RX_DATA			0x098 0x288 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_33_CSI_DATA20				0x098 0x288 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_33_GPIO3_IO19				0x098 0x288 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_34_SEMC_DA12				0x09C 0x28C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_34_FLEXPWM3_PWM2_B			0x09C 0x28C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_34_USDHC1_VSELECT			0x09C 0x28C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_34_SAI3_RX_SYNC			0x09C 0x28C 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_34_CSI_DATA19				0x09C 0x28C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_34_GPIO3_IO20				0x09C 0x28C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_35_SEMC_DA13				0x0A0 0x290 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_35_XBAR_INOUT18			0x0A0 0x290 0x630 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_35_GPT1_COMPARE1			0x0A0 0x290 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_35_SAI3_RX_BCLK			0x0A0 0x290 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_35_CSI_DATA18				0x0A0 0x290 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_35_GPIO3_IO21				0x0A0 0x290 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_35_USDHC1_CD_B				0x0A0 0x290 0x5D4 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_36_SEMC_DA14				0x0A4 0x294 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_36_XBAR_INOUT22			0x0A4 0x294 0x638 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_36_GPT1_COMPARE2			0x0A4 0x294 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_36_SAI3_TX_DATA			0x0A4 0x294 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_36_CSI_DATA17				0x0A4 0x294 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_36_GPIO3_IO22				0x0A4 0x294 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_36_USDHC1_WP				0x0A4 0x294 0x5D8 0x6 0x1
-
-#define MXRT1050_IOMUXC_GPIO_EMC_37_SEMC_DA15				0x0A8 0x298 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_37_XBAR_INOUT23			0x0A8 0x298 0x63C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_37_GPT1_COMPARE3			0x0A8 0x298 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_37_SAI3_MCLK				0x0A8 0x298 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_37_CSI_DATA16				0x0A8 0x298 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_37_GPIO3_IO23				0x0A8 0x298 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_37_USDHC2_WP				0x0A8 0x298 0x608 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_38_SEMC_DM01				0x0AC 0x29C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_38_FLEXPWM1_PWM3_A			0x0AC 0x29C 0x454 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_EMC_38_LPUART8_TXD				0x0AC 0x29C 0x564 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_EMC_38_SAI3_TX_BCLK			0x0AC 0x29C 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_38_CSI_FIELD				0x0AC 0x29C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_38_GPIO3_IO24				0x0AC 0x29C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_38_USDHC2_VSELECT			0x0AC 0x29C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_39_SEMC_DQS				0x0B0 0x2A0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_39_FLEXPWM1_PWM3_B			0x0B0 0x2A0 0x464 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_EMC_39_LPUART8_RXD				0x0B0 0x2A0 0x560 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_EMC_39_SAI3_TX_SYNC			0x0B0 0x2A0 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_39_WDOG1_B				0x0B0 0x2A0 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_39_GPIO3_IO25				0x0B0 0x2A0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_39_USDHC2_CD_B				0x0B0 0x2A0 0x5E0 0x6 0x1
-
-#define MXRT1050_IOMUXC_GPIO_EMC_40_SEMC_RDY				0x0B4 0x2A4 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_40_GPT2_CAPTURE2			0x0B4 0x2A4 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_40_LPSPI1_PCS2				0x0B4 0x2A4 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_40_USB_OTG2_OC				0x0B4 0x2A4 0x5CC 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_40_ENET_MDC				0x0B4 0x2A4 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_40_GPIO3_IO26				0x0B4 0x2A4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_40_USDHC2_RESET_B			0x0B4 0x2A4 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_EMC_41_SEMC_CSX0				0x0B8 0x2A8 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_41_GPT2_CAPTURE1			0x0B8 0x2A8 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_41_LPSPI1_PCS3				0x0B8 0x2A8 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_41_USB_OTG2_PWR			0x0B8 0x2A8 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_41_ENET_MDIO				0x0B8 0x2A8 0x430 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_EMC_41_GPIO3_IO27				0x0B8 0x2A8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_EMC_41_USDHC2_VSELECT			0x0B8 0x2A8 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_FLEXPWM2_PWM3_A			0x0BC 0x2AC 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_XBAR_INOUT14			0x0BC 0x2AC 0x644 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_REF_CLK_32K			0x0BC 0x2AC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_USB_OTG2_ID			0x0BC 0x2AC 0x3F8 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_LPI2C1_SCLS			0x0BC 0x2AC 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_GPIO1_IO00			0x0BC 0x2AC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_USDHC1_RESET_B			0x0BC 0x2AC 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_00_LPSPI3_SCK			0x0BC 0x2AC 0x510 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_FLEXPWM2_PWM3_B			0x0C0 0x2B0 0x484 0x0 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_XBAR_INOUT15			0x0C0 0x2B0 0x648 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_REF_CLK_24M			0x0C0 0x2B0 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_USB_OTG1_ID			0x0C0 0x2B0 0x3F4 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_LPI2C1_SDAS			0x0C0 0x2B0 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_GPIO1_IO01			0x0C0 0x2B0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_EWM_OUT_B				0x0C0 0x2B0 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_01_LPSPI3_SDO			0x0C0 0x2B0 0x518 0x7 0x1
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_FLEXCAN2_TX			0x0C4 0x2B4 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_XBAR_INOUT16			0x0C4 0x2B4 0x64C 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_LPUART6_TXD			0x0C4 0x2B4 0x554 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_USB_OTG1_PWR			0x0C4 0x2B4 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_FLEXPWM1_PWM0_X			0x0C4 0x2B4 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_GPIO1_IO02			0x0C4 0x2B4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_LPI2C1_HREQ			0x0C4 0x2B4 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_02_LPSPI3_SDI			0x0C4 0x2B4 0x514 0x7 0x1
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_FLEXCAN2_RX			0x0C8 0x2B8 0x450 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_XBAR_INOUT17			0x0C8 0x2B8 0x62C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_LPUART6_RXD			0x0C8 0x2B8 0x550 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_USB_OTG1_OC			0x0C8 0x2B8 0x5D0 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_FLEXPWM1_PWM1_X			0x0C8 0x2B8 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_GPIO1_IO03			0x0C8 0x2B8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_REF_CLK_24M			0x0C8 0x2B8 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_03_LPSPI3_PCS0			0x0C8 0x2B8 0x50C 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_SRC_BOOT_MODE00			0x0CC 0x2BC 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_MQS_RIGHT				0x0CC 0x2BC 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_ENET_TX_DATA03			0x0CC 0x2BC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_SAI2_TX_SYNC			0x0CC 0x2BC 0x5C4 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_CSI_DATA09			0x0CC 0x2BC 0x41C 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_GPIO1_IO04			0x0CC 0x2BC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_PIT_TRIGGER00			0x0CC 0x2BC 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_04_LPSPI3_PCS1			0x0CC 0x2BC 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_SRC_BOOT_MODE01			0x0D0 0x2C0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_MQS_LEFT				0x0D0 0x2C0 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_ENET_TX_DATA02			0x0D0 0x2C0 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_SAI2_TX_BCLK			0x0D0 0x2C0 0x5C0 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_CSI_DATA08			0x0D0 0x2C0 0x418 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_GPIO1_IO05			0x0D0 0x2C0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_XBAR_INOUT17			0x0D0 0x2C0 0x62C 0x6 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B0_05_LPSPI3_PCS2			0x0D0 0x2C0 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_JTAG_TMS				0x0D4 0x2C4 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_GPT2_COMPARE1			0x0D4 0x2C4 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_ENET_RX_CLK			0x0D4 0x2C4 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_SAI2_RX_BCLK			0x0D4 0x2C4 0x5B4 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_CSI_DATA07			0x0D4 0x2C4 0x414 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_GPIO1_IO06			0x0D4 0x2C4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_XBAR_INOUT18			0x0D4 0x2C4 0x630 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_06_LPSPI3_PCS3			0x0D4 0x2C4 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_JTAG_TCK				0x0D8 0x2C8 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_GPT2_COMPARE2			0x0D8 0x2C8 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_ENET_TX_ER			0x0D8 0x2C8 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_SAI2_RX_SYNC			0x0D8 0x2C8 0x5BC 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_CSI_DATA06			0x0D8 0x2C8 0x410 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_GPIO1_IO07			0x0D8 0x2C8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_XBAR_INOUT19			0x0D8 0x2C8 0x654 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_07_ENET_1588_EVENT3_OUT		0x0D8 0x2C8 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_JTAG_MOD				0x0DC 0x2CC 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_GPT2_COMPARE3			0x0DC 0x2CC 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_ENET_RX_DATA03			0x0DC 0x2CC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_SAI2_RX_DATA			0x0DC 0x2CC 0x5B8 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_CSI_DATA05			0x0DC 0x2CC 0x40C 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_GPIO1_IO08			0x0DC 0x2CC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_XBAR_INOUT20			0x0DC 0x2CC 0x634 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_08_ENET_1588_EVENT3_IN		0x0DC 0x2CC 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_JTAG_TDI				0x0E0 0x2D0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_FLEXPWM2_PWM3_A			0x0E0 0x2D0 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_ENET_RX_DATA02			0x0E0 0x2D0 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_SAI2_TX_DATA			0x0E0 0x2D0 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_CSI_DATA04			0x0E0 0x2D0 0x408 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_GPIO1_IO09			0x0E0 0x2D0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_XBAR_INOUT21			0x0E0 0x2D0 0x658 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_09_GPT2_CLK				0x0E0 0x2D0 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_JTAG_TDO				0x0E4 0x2D4 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_FLEXPWM1_PWM3_A			0x0E4 0x2D4 0x454 0x1 0x3
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_ENET_CRS				0x0E4 0x2D4 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_SAI2_MCLK				0x0E4 0x2D4 0x5B0 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_CSI_DATA03			0x0E4 0x2D4 0x404 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_GPIO1_IO10			0x0E4 0x2D4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_XBAR_INOUT22			0x0E4 0x2D4 0x638 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_10_ENET_1588_EVENT0_OUT		0x0E4 0x2D4 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_JTAG_TRSTB			0x0E8 0x2D8 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_FLEXPWM1_PWM3_B			0x0E8 0x2D8 0x464 0x1 0x3
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_ENET_COL				0x0E8 0x2D8 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_WDOG1_B				0x0E8 0x2D8 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_CSI_DATA02			0x0E8 0x2D8 0x400 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_GPIO1_IO11			0x0E8 0x2D8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_XBAR_INOUT23			0x0E8 0x2D8 0x63C 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_11_ENET_1588_EVENT0_IN		0x0E8 0x2D8 0x444 0x7 0x1
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_LPI2C4_SCL			0x0EC 0x2DC 0x4E4 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_CCM_PMIC_READY			0x0EC 0x2DC 0x3FC 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_LPUART1_TXD			0x0EC 0x2DC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_WDOG2_B				0x0EC 0x2DC 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_FLEXPWM1_PWM2_X			0x0EC 0x2DC 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_GPIO1_IO12			0x0EC 0x2DC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_ENET_1588_EVENT1_OUT		0x0EC 0x2DC 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_12_NMI				0x0EC 0x2DC 0x568 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_LPI2C4_SDA			0x0F0 0x2E0 0x4E8 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_GPT1_CLK				0x0F0 0x2E0 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_LPUART1_RXD			0x0F0 0x2E0 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_EWM_OUT_B				0x0F0 0x2E0 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_FLEXPWM1_PWM3_X			0x0F0 0x2E0 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_GPIO1_IO13			0x0F0 0x2E0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_ENET_1588_EVENT1_IN		0x0F0 0x2E0 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_13_REF_CLK_24M			0x0F0 0x2E0 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_USB_OTG2_OC			0x0F4 0x2E4 0x5CC 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_XBAR_INOUT24			0x0F4 0x2E4 0x640 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B			0x0F4 0x2E4 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_ENET_1588_EVENT0_OUT		0x0F4 0x2E4 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_CSI_VSYNC				0x0F4 0x2E4 0x428 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_GPIO1_IO14			0x0F4 0x2E4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_14_FLEXCAN2_TX			0x0F4 0x2E4 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_USB_OTG2_PWR			0x0F8 0x2E8 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_XBAR_INOUT25			0x0F8 0x2E8 0x650 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B			0x0F8 0x2E8 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_ENET_1588_EVENT0_IN		0x0F8 0x2E8 0x444 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_CSI_HSYNC				0x0F8 0x2E8 0x420 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_GPIO1_IO15			0x0F8 0x2E8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_FLEXCAN2_RX			0x0F8 0x2E8 0x450 0x6 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B0_15_WDOG1_WDOG_RST_B_DEB		0x0F8 0x2E8 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_USB_OTG2_ID			0x0FC 0x2EC 0x3F8 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_TMR3_TIMER0			0x0FC 0x2EC 0x57C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B			0x0FC 0x2EC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_LPI2C1_SCL			0x0FC 0x2EC 0x4CC 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_WDOG1_B				0x0FC 0x2EC 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_GPIO1_IO16			0x0FC 0x2EC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_USDHC1_WP				0x0FC 0x2EC 0x5D8 0x6 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B1_00_KPP_ROW07				0x0FC 0x2EC 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_USB_OTG1_PWR			0x100 0x2F0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_TMR3_TIMER1			0x100 0x2F0 0x580 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B			0x100 0x2F0 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_LPI2C1_SDA			0x100 0x2F0 0x4D0 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_CCM_PMIC_READY			0x100 0x2F0 0x3FC 0x4 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_GPIO1_IO17			0x100 0x2F0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_USDHC1_VSELECT			0x100 0x2F0 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_01_KPP_COL07				0x100 0x2F0 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_USB_OTG1_ID			0x104 0x2F4 0x3F4 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_TMR3_TIMER2			0x104 0x2F4 0x584 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_LPUART2_TXD			0x104 0x2F4 0x530 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_SPDIF_OUT				0x104 0x2F4 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_ENET_1588_EVENT2_OUT		0x104 0x2F4 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_GPIO1_IO18			0x104 0x2F4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_USDHC1_CD_B			0x104 0x2F4 0x5D4 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_02_KPP_ROW06				0x104 0x2F4 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_USB_OTG1_OC			0x108 0x2F8 0x5D0 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_TMR3_TIMER3			0x108 0x2F8 0x588 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_LPUART2_RXD			0x108 0x2F8 0x52C 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_SPDIF_IN				0x108 0x2F8 0x5C8 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_ENET_1588_EVENT2_IN		0x108 0x2F8 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_GPIO1_IO19			0x108 0x2F8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_USDHC2_CD_B			0x108 0x2F8 0x5E0 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_03_KPP_COL06				0x108 0x2F8 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_FLEXSPI_B_DATA3			0x10C 0x2FC 0x4C4 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_ENET_MDC				0x10C 0x2FC 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B			0x10C 0x2FC 0x534 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_SPDIF_SR_CLK			0x10C 0x2FC 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_CSI_PIXCLK			0x10C 0x2FC 0x424 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_GPIO1_IO20			0x10C 0x2FC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_USDHC2_DATA0			0x10C 0x2FC 0x5E8 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_04_KPP_ROW05				0x10C 0x2FC 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_FLEXSPI_B_DATA2			0x110 0x300 0x4C0 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_ENET_MDIO				0x110 0x300 0x430 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B			0x110 0x300 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_SPDIF_OUT				0x110 0x300 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_CSI_MCLK				0x110 0x300 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_GPIO1_IO21			0x110 0x300 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_USDHC2_DATA1			0x110 0x300 0x5EC 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_05_KPP_COL05				0x110 0x300 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_FLEXSPI_B_DATA1			0x114 0x304 0x4BC 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA			0x114 0x304 0x4E0 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_LPUART3_TXD			0x114 0x304 0x53C 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_SPDIF_LOCK			0x114 0x304 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_CSI_VSYNC				0x114 0x304 0x428 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_GPIO1_IO22			0x114 0x304 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_USDHC2_DATA2			0x114 0x304 0x5F0 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_06_KPP_ROW04				0x114 0x304 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_FLEXSPI_B_DATA0			0x118 0x308 0x4B8 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL			0x118 0x308 0x4DC 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_LPUART3_RXD			0x118 0x308 0x538 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_SPDIF_EXT_CLK			0x118 0x308 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_CSI_HSYNC				0x118 0x308 0x420 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_GPIO1_IO23			0x118 0x308 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_USDHC2_DATA3			0x118 0x308 0x5F4 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_07_KPP_COL04				0x118 0x308 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_FLEXSPI_A_SS1_B			0x11C 0x30C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_FLEXPWM4_PWM0_A			0x11C 0x30C 0x494 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_FLEXCAN1_TX			0x11C 0x30C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_CCM_PMIC_READY			0x11C 0x30C 0x3FC 0x3 0x3
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_CSI_DATA09			0x11C 0x30C 0x41C 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_GPIO1_IO24			0x11C 0x30C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_USDHC2_CMD			0x11C 0x30C 0x5E4 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_08_KPP_ROW03				0x11C 0x30C 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_FLEXSPI_A_DQS			0x120 0x310 0x4A4 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_FLEXPWM4_PWM1_A			0x120 0x310 0x498 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_FLEXCAN1_RX			0x120 0x310 0x44C 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_SAI1_MCLK				0x120 0x310 0x58C 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_CSI_DATA08			0x120 0x310 0x418 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_GPIO1_IO25			0x120 0x310 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_USDHC2_CLK			0x120 0x310 0x5DC 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_09_KPP_COL03				0x120 0x310 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_FLEXSPI_A_DATA3			0x124 0x314 0x4B4 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_WDOG1_B				0x124 0x314 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_LPUART8_TXD			0x124 0x314 0x564 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_SAI1_RX_SYNC			0x124 0x314 0x5A4 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_CSI_DATA07			0x124 0x314 0x414 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_GPIO1_IO26			0x124 0x314 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_USDHC2_WP				0x124 0x314 0x608 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_10_KPP_ROW02				0x124 0x314 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_FLEXSPI_A_DATA2			0x128 0x318 0x4B0 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_EWM_OUT_B				0x128 0x318 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_LPUART8_RXD			0x128 0x318 0x560 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_SAI1_RX_BCLK			0x128 0x318 0x590 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_CSI_DATA06			0x128 0x318 0x410 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_GPIO1_IO27			0x128 0x318 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_USDHC2_RESET_B			0x128 0x318 0x000 0x6 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_11_KPP_COL02				0x128 0x318 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_FLEXSPI_A_DATA1			0x12C 0x31C 0x4AC 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_ACMP1_OUT				0x12C 0x31C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_LPSPI3_PCS0			0x12C 0x31C 0x50C 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_SAI1_RX_DATA00			0x12C 0x31C 0x594 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_CSI_DATA05			0x12C 0x31C 0x40C 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_GPIO1_IO28			0x12C 0x31C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_USDHC2_DATA4			0x12C 0x31C 0x5F8 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_12_KPP_ROW01				0x12C 0x31C 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_FLEXSPI_A_DATA0			0x130 0x320 0x4A8 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_ACMP2_OUT				0x130 0x320 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_LPSPI3_SDI			0x130 0x320 0x514 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_SAI1_TX_DATA00			0x130 0x320 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_CSI_DATA04			0x130 0x320 0x408 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_GPIO1_IO29			0x130 0x320 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_USDHC2_DATA5			0x130 0x320 0x5FC 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_13_KPP_COL01				0x130 0x320 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_FLEXSPI_A_SCLK			0x134 0x324 0x4C8 0x0 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_ACMP3_OUT				0x134 0x324 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_LPSPI3_SDO			0x134 0x324 0x518 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_SAI1_TX_BCLK			0x134 0x324 0x5A8 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_CSI_DATA03			0x134 0x324 0x404 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_GPIO1_IO30			0x134 0x324 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_USDHC2_DATA6			0x134 0x324 0x600 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_14_KPP_ROW00				0x134 0x324 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_FLEXSPI_A_SS0_B			0x138 0x328 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_ACMP4_OUT				0x138 0x328 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_LPSPI3_SCK			0x138 0x328 0x510 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_SAI1_TX_SYNC			0x138 0x328 0x5AC 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_CSI_DATA02			0x138 0x328 0x400 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_GPIO1_IO31			0x138 0x328 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_USDHC2_DATA7			0x138 0x328 0x604 0x6 0x1
-#define MXRT1050_IOMUXC_GPIO_AD_B1_15_KPP_COL00				0x138 0x328 0x000 0x7 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_00_LCD_CLK				0x13C 0x32C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_00_TMR1_TIMER0				0x13C 0x32C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_00_MQS_RIGHT				0x13C 0x32C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_00_LPSPI4_PCS0				0x13C 0x32C 0x51C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_00_FLEXIO2_D00				0x13C 0x32C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_00_GPIO2_IO00				0x13C 0x32C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_00_SEMC_CSX1				0x13C 0x32C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_01_LCD_ENABLE				0x140 0x330 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_01_TMR1_TIMER1				0x140 0x330 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_01_MQS_LEFT				0x140 0x330 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_01_LPSPI4_SDI				0x140 0x330 0x524 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_01_FLEXIO2_D01				0x140 0x330 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_01_GPIO2_IO01				0x140 0x330 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_01_SEMC_CSX2				0x140 0x330 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_02_LCD_HSYNC				0x144 0x334 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_02_TMR1_TIMER2				0x144 0x334 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_02_FLEXCAN1_TX				0x144 0x334 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_02_LPSPI4_SDO				0x144 0x334 0x528 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_02_FLEXIO2_D02				0x144 0x334 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_02_GPIO2_IO02				0x144 0x334 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_02_SEMC_CSX3				0x144 0x334 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_03_LCD_VSYNC				0x148 0x338 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_03_TMR2_TIMER0				0x148 0x338 0x56C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_03_FLEXCAN1_RX				0x148 0x338 0x44C 0x2 0x3
-#define MXRT1050_IOMUXC_GPIO_B0_03_LPSPI4_SCK				0x148 0x338 0x520 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_03_FLEXIO2_D03				0x148 0x338 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_03_GPIO2_IO03				0x148 0x338 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_03_WDOG2_RESET_B_DEB			0x148 0x338 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_04_LCD_DATA00				0x14C 0x33C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_04_TMR2_TIMER1				0x14C 0x33C 0x570 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_04_LPI2C2_SCL				0x14C 0x33C 0x4D4 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_04_ARM_TRACE00				0x14C 0x33C 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_04_FLEXIO2_D04				0x14C 0x33C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_04_GPIO2_IO04				0x14C 0x33C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_04_SRC_BT_CFG00				0x14C 0x33C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_05_LCD_DATA01				0x150 0x340 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_05_TMR2_TIMER2				0x150 0x340 0x574 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_05_LPI2C2_SDA				0x150 0x340 0x4D8 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_05_ARM_TRACE01				0x150 0x340 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_05_FLEXIO2_D05				0x150 0x340 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_05_GPIO2_IO05				0x150 0x340 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_05_SRC_BT_CFG01				0x150 0x340 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_06_LCD_DATA02				0x154 0x344 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_06_TMR3_TIMER0				0x154 0x344 0x57C 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_06_FLEXPWM2_PWM0_A			0x154 0x344 0x478 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_06_ARM_TRACE02				0x154 0x344 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_06_FLEXIO2_D06				0x154 0x344 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_06_GPIO2_IO06				0x154 0x344 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_06_SRC_BT_CFG02				0x154 0x344 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_07_LCD_DATA03				0x158 0x348 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_07_TMR3_TIMER1				0x158 0x348 0x580 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_07_FLEXPWM2_PWM0_B			0x158 0x348 0x488 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_07_ARM_TRACE03				0x158 0x348 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_07_FLEXIO2_D07				0x158 0x348 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_07_GPIO2_IO07				0x158 0x348 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_07_SRC_BT_CFG03				0x158 0x348 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_08_LCD_DATA04				0x15C 0x34C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_08_TMR3_TIMER2				0x15C 0x34C 0x584 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_08_FLEXPWM2_PWM1_A			0x15C 0x34C 0x47C 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_08_LPUART3_TXD				0x15C 0x34C 0x53C 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_08_FLEXIO2_D08				0x15C 0x34C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_08_GPIO2_IO08				0x15C 0x34C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_08_SRC_BT_CFG04				0x15C 0x34C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_09_LCD_DATA05				0x160 0x350 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_09_TMR4_TIMER0				0x160 0x350 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_09_FLEXPWM2_PWM1_B			0x160 0x350 0x48C 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_09_LPUART3_RXD				0x160 0x350 0x538 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_09_FLEXIO2_D09				0x160 0x350 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_09_GPIO2_IO09				0x160 0x350 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_09_SRC_BT_CFG05				0x160 0x350 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_10_LCD_DATA06				0x164 0x354 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_10_TMR4_TIMER1				0x164 0x354 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_10_FLEXPWM2_PWM2_A			0x164 0x354 0x480 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_10_SAI1_TX_DATA03			0x164 0x354 0x598 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_10_FLEXIO2_D10				0x164 0x354 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_10_GPIO2_IO10				0x164 0x354 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_10_SRC_BT_CFG06				0x164 0x354 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_11_LCD_DATA07				0x168 0x358 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_11_TMR4_TIMER2				0x168 0x358 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_11_FLEXPWM2_PWM2_B			0x168 0x358 0x490 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_11_SAI1_TX_DATA02			0x168 0x358 0x59C 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_11_FLEXIO2_D11				0x168 0x358 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_11_GPIO2_IO11				0x168 0x358 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_11_SRC_BT_CFG07				0x168 0x358 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_12_LCD_DATA08				0x16C 0x35C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_12_XBAR_INOUT10				0x16C 0x35C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_12_ARM_TRACE_CLK			0x16C 0x35C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_12_SAI1_TX_DATA01			0x16C 0x35C 0x5A0 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B0_12_FLEXIO2_D12				0x16C 0x35C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_12_GPIO2_IO12				0x16C 0x35C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_12_SRC_BT_CFG08				0x16C 0x35C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_13_LCD_DATA09				0x170 0x360 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_13_XBAR_INOUT11				0x170 0x360 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_13_ARM_TRACE_SWO			0x170 0x360 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_13_SAI1_MCLK				0x170 0x360 0x58C 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_13_FLEXIO2_D13				0x170 0x360 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_13_GPIO2_IO13				0x170 0x360 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_13_SRC_BT_CFG09				0x170 0x360 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_14_LCD_DATA10				0x174 0x364 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_14_XBAR_INOUT12				0x174 0x364 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_14_ARM_CM7_TXEV				0x174 0x364 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_14_SAI1_RX_SYNC				0x174 0x364 0x5A4 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_14_FLEXIO2_D14				0x174 0x364 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_14_GPIO2_IO14				0x174 0x364 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_14_SRC_BT_CFG10				0x174 0x364 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B0_15_LCD_DATA11				0x178 0x368 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_15_XBAR_INOUT13				0x178 0x368 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_15_ARM_CM7_RXEV				0x178 0x368 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_15_SAI1_RX_BCLK				0x178 0x368 0x590 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B0_15_FLEXIO2_D15				0x178 0x368 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_15_GPIO2_IO15				0x178 0x368 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B0_15_SRC_BT_CFG11				0x178 0x368 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_00_LCD_DATA12				0x17C 0x36C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_00_XBAR_INOUT14				0x17C 0x36C 0x644 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_00_LPUART4_TXD				0x17C 0x36C 0x544 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_00_SAI1_RX_DATA00			0x17C 0x36C 0x594 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_00_FLEXIO2_D16				0x17C 0x36C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_00_GPIO2_IO16				0x17C 0x36C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_00_FLEXPWM1_PWM3_A			0x17C 0x36C 0x454 0x6 0x4
-
-#define MXRT1050_IOMUXC_GPIO_B1_01_LCD_DATA13				0x180 0x370 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_01_XBAR_INOUT15				0x180 0x370 0x648 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_01_LPUART4_RXD				0x180 0x370 0x540 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_01_SAI1_TX_DATA00			0x180 0x370 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_01_FLEXIO2_D17				0x180 0x370 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_01_GPIO2_IO17				0x180 0x370 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_01_FLEXPWM1_PWM3_B			0x180 0x370 0x464 0x6 0x4
-
-#define MXRT1050_IOMUXC_GPIO_B1_02_LCD_DATA14				0x184 0x374 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_02_XBAR_INOUT16				0x184 0x374 0x64C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_02_LPSPI4_PCS2				0x184 0x374 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_02_SAI1_TX_BCLK				0x184 0x374 0x5A8 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_02_FLEXIO2_D18				0x184 0x374 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_02_GPIO2_IO18				0x184 0x374 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_02_FLEXPWM2_PWM3_A			0x184 0x374 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_03_LCD_DATA15				0x188 0x378 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_03_XBAR_INOUT17				0x188 0x378 0x62C 0x1 0x3
-#define MXRT1050_IOMUXC_GPIO_B1_03_LPSPI4_PCS1				0x188 0x378 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_03_SAI1_TX_SYNC				0x188 0x378 0x5AC 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_03_FLEXIO2_D19				0x188 0x378 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_03_GPIO2_IO19				0x188 0x378 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_03_FLEXPWM2_PWM3_B			0x188 0x378 0x484 0x6 0x3
-
-#define MXRT1050_IOMUXC_GPIO_B1_04_LCD_DATA16				0x18C 0x37C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_04_LPSPI4_PCS0				0x18C 0x37C 0x51C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_04_CSI_DATA15				0x18C 0x37C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_04_ENET_RX_DATA00			0x18C 0x37C 0x434 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_04_FLEXIO2_D20				0x18C 0x37C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_04_GPIO2_IO20				0x18C 0x37C 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_05_LCD_DATA17				0x190 0x380 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_05_LPSPI4_SDI				0x190 0x380 0x524 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_05_CSI_DATA14				0x190 0x380 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_05_ENET_RX_DATA01			0x190 0x380 0x438 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_05_FLEXIO2_D21				0x190 0x380 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_05_GPIO2_IO21				0x190 0x380 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_06_LCD_DATA18				0x194 0x384 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_06_LPSPI4_SDO				0x194 0x384 0x528 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_06_CSI_DATA13				0x194 0x384 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_06_ENET_RX_EN				0x194 0x384 0x43C 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_06_FLEXIO2_D22				0x194 0x384 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_06_GPIO2_IO22				0x194 0x384 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_07_LCD_DATA19				0x198 0x388 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_07_LPSPI4_SCK				0x198 0x388 0x520 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_07_CSI_DATA12				0x198 0x388 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_07_ENET_TX_DATA00			0x198 0x388 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_07_FLEXIO2_D23				0x198 0x388 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_07_GPIO2_IO23				0x198 0x388 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_08_LCD_DATA20				0x19C 0x38C 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_08_TMR1_TIMER3				0x19C 0x38C 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_08_CSI_DATA11				0x19C 0x38C 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_08_ENET_TX_DATA01			0x19C 0x38C 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_08_FLEXIO2_D24				0x19C 0x38C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_08_GPIO2_IO24				0x19C 0x38C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_08_FLEXCAN2_TX				0x19C 0x38C 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_09_LCD_DATA21				0x1A0 0x390 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_09_TMR2_TIMER3				0x1A0 0x390 0x578 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_09_CSI_DATA10				0x1A0 0x390 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_09_ENET_TX_EN				0x1A0 0x390 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_09_FLEXIO2_D25				0x1A0 0x390 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_09_GPIO2_IO25				0x1A0 0x390 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_09_FLEXCAN2_RX				0x1A0 0x390 0x450 0x6 0x3
-
-#define MXRT1050_IOMUXC_GPIO_B1_10_LCD_DATA22				0x1A4 0x394 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_10_TMR3_TIMER3				0x1A4 0x394 0x588 0x1 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_10_CSI_DATA00				0x1A4 0x394 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_10_ENET_TX_CLK				0x1A4 0x394 0x448 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_10_FLEXIO2_D26				0x1A4 0x394 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_10_GPIO2_IO26				0x1A4 0x394 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_10_ENET_REF_CLK				0x1A4 0x394 0x42C 0x6 0x1
-
-#define MXRT1050_IOMUXC_GPIO_B1_11_LCD_DATA23				0x1A8 0x398 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_11_TMR4_TIMER3				0x1A8 0x398 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_11_CSI_DATA01				0x1A8 0x398 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_11_ENET_RX_ER				0x1A8 0x398 0x440 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_11_FLEXIO2_D27				0x1A8 0x398 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_11_GPIO2_IO27				0x1A8 0x398 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_11_LPSPI4_PCS3				0x1A8 0x398 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_12_LPUART5_TXD				0x1AC 0x39C 0x54C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_12_CSI_PIXCLK				0x1AC 0x39C 0x424 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_12_ENET_1588_EVENT0_IN			0x1AC 0x39C 0x444 0x3 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_12_FLEXIO2_D28				0x1AC 0x39C 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_12_GPIO2_IO28				0x1AC 0x39C 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_12_USDHC1_CD_B				0x1AC 0x39C 0x5D4 0x6 0x2
-
-#define MXRT1050_IOMUXC_GPIO_B1_13_WDOG1_B				0x1B0 0x3A0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_13_LPUART5_RXD				0x1B0 0x3A0 0x548 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_13_CSI_VSYNC				0x1B0 0x3A0 0x428 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_13_ENET_1588_EVENT0_OUT			0x1B0 0x3A0 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_13_FLEXIO2_D29				0x1B0 0x3A0 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_13_GPIO2_IO29				0x1B0 0x3A0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_13_USDHC1_WP				0x1B0 0x3A0 0x5D8 0x6 0x3
-
-#define MXRT1050_IOMUXC_GPIO_B1_14_ENET_MDC				0x1B4 0x3A4 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_14_FLEXPWM4_PWM2_A			0x1B4 0x3A4 0x49C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_14_CSI_HSYNC				0x1B4 0x3A4 0x420 0x2 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_14_XBAR_INOUT02				0x1B4 0x3A4 0x60C 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_14_FLEXIO2_D30				0x1B4 0x3A4 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_14_GPIO2_IO30				0x1B4 0x3A4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_14_USDHC1_VSELECT			0x1B4 0x3A4 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_B1_15_ENET_MDIO				0x1B8 0x3A8 0x430 0x0 0x2
-#define MXRT1050_IOMUXC_GPIO_B1_15_FLEXPWM4_PWM3_A			0x1B8 0x3A8 0x4A0 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_15_CSI_MCLK				0x1B8 0x3A8 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_15_XBAR_INOUT03				0x1B8 0x3A8 0x610 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_B1_15_FLEXIO2_D31				0x1B8 0x3A8 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_15_GPIO2_IO31				0x1B8 0x3A8 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_B1_15_USDHC1_RESET_B			0x1B8 0x3A8 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_USDHC1_CMD			0x1BC 0x3AC 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_FLEXPWM1_PWM0_A			0x1BC 0x3AC 0x458 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_LPI2C3_SCL			0x1BC 0x3AC 0x4DC 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_XBAR_INOUT04			0x1BC 0x3AC 0x614 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_LPSPI1_SCK			0x1BC 0x3AC 0x4F0 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_GPIO3_IO12			0x1BC 0x3AC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_00_FLEXSPI_A_SS1_B			0x1BC 0x3AC 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_USDHC1_CLK			0x1C0 0x3B0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_FLEXPWM1_PWM0_B			0x1C0 0x3B0 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_LPI2C3_SDA			0x1C0 0x3B0 0x4E0 0x2 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_XBAR_INOUT05			0x1C0 0x3B0 0x618 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_LPSPI1_PCS0			0x1C0 0x3B0 0x4EC 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_GPIO3_IO13			0x1C0 0x3B0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_01_FLEXSPI_B_SS1_B			0x1C0 0x3B0 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0			0x1C4 0x3B4 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_02_FLEXPWM1_PWM1_A			0x1C4 0x3B4 0x45C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B			0x1C4 0x3B4 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_02_XBAR_INOUT06			0x1C4 0x3B4 0x61C 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_02_LPSPI1_SDO			0x1C4 0x3B4 0x4F8 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_02_GPIO3_IO14			0x1C4 0x3B4 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1			0x1C8 0x3B8 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_03_FLEXPWM1_PWM1_B			0x1C8 0x3B8 0x46C 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B			0x1C8 0x3B8 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_03_XBAR_INOUT07			0x1C8 0x3B8 0x620 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_03_LPSPI1_SDI			0x1C8 0x3B8 0x4F4 0x4 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_03_GPIO3_IO15			0x1C8 0x3B8 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2			0x1CC 0x3BC 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_FLEXPWM1_PWM2_A			0x1CC 0x3BC 0x460 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_LPUART8_TXD			0x1CC 0x3BC 0x564 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_XBAR_INOUT08			0x1CC 0x3BC 0x624 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_FLEXSPI_B_SS0_B			0x1CC 0x3BC 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_GPIO3_IO16			0x1CC 0x3BC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_04_CCM_CLKO1				0x1CC 0x3BC 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3			0x1D0 0x3C0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_FLEXPWM1_PWM2_B			0x1D0 0x3C0 0x470 0x1 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_LPUART8_RXD			0x1D0 0x3C0 0x560 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_XBAR_INOUT09			0x1D0 0x3C0 0x628 0x3 0x1
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_FLEXSPI_B_DQS			0x1D0 0x3C0 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_GPIO3_IO17			0x1D0 0x3C0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B0_05_CCM_CLKO2				0x1D0 0x3C0 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_00_USDHC2_DATA3			0x1D4 0x3C4 0x5F4 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_00_FLEXSPI_B_DATA3			0x1D4 0x3C4 0x4C4 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_00_FLEXPWM1_PWM3_A			0x1D4 0x3C4 0x454 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_00_SAI1_TX_DATA03			0x1D4 0x3C4 0x598 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_00_LPUART4_TXD			0x1D4 0x3C4 0x544 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_00_GPIO3_IO00			0x1D4 0x3C4 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_01_USDHC2_DATA2			0x1D8 0x3C8 0x5F0 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_01_FLEXSPI_B_DATA2			0x1D8 0x3C8 0x4C0 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_01_FLEXPWM1_PWM3_B			0x1D8 0x3C8 0x464 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_01_SAI1_TX_DATA02			0x1D8 0x3C8 0x59C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_01_LPUART4_RXD			0x1D8 0x3C8 0x540 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_01_GPIO3_IO01			0x1D8 0x3C8 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_USDHC2_DATA1			0x1DC 0x3CC 0x5EC 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_FLEXSPI_B_DATA1			0x1DC 0x3CC 0x4BC 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_FLEXPWM2_PWM3_A			0x1DC 0x3CC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_SAI1_TX_DATA01			0x1DC 0x3CC 0x5A0 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_FLEXCAN1_TX			0x1DC 0x3CC 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_GPIO3_IO02			0x1DC 0x3CC 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_02_CCM_WAIT				0x1DC 0x3CC 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_USDHC2_DATA0			0x1E0 0x3D0 0x5E8 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_FLEXSPI_B_DATA0			0x1E0 0x3D0 0x4B8 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_FLEXPWM2_PWM3_B			0x1E0 0x3D0 0x484 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_SAI1_MCLK				0x1E0 0x3D0 0x58C 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_FLEXCAN1_RX			0x1E0 0x3D0 0x44C 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_GPIO3_IO03			0x1E0 0x3D0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_03_CCM_PMIC_READY			0x1E0 0x3D0 0x3FC 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_USDHC2_CLK			0x1E4 0x3D4 0x5DC 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_FLEXSPI_B_SCLK			0x1E4 0x3D4 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_LPI2C1_SCL			0x1E4 0x3D4 0x4CC 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_SAI1_RX_SYNC			0x1E4 0x3D4 0x5A4 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_FLEXCAN1_A_SS1_B			0x1E4 0x3D4 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_GPIO3_IO04			0x1E4 0x3D4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_04_CCM_STOP				0x1E4 0x3D4 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_05_USDHC2_CMD			0x1E8 0x3D8 0x5E4 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_05_FLEXSPI_A_DQS			0x1E8 0x3D8 0x4A4 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_05_LPI2C1_SDA			0x1E8 0x3D8 0x4D0 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_05_SAI1_RX_BCLK			0x1E8 0x3D8 0x590 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_05_FLEXCAN1_B_SS0_B			0x1E8 0x3D8 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_05_GPIO3_IO05			0x1E8 0x3D8 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_06_USDHC2_RESET_B			0x1EC 0x3DC 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_06_FLEXSPI_A_SS0_B			0x1EC 0x3DC 0x000 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_06_LPUART7_CTS_B			0x1EC 0x3DC 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_06_SAI1_RX_DATA00			0x1EC 0x3DC 0x594 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_06_LPSPI2_PCS0			0x1EC 0x3DC 0x4FC 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_06_GPIO3_IO06			0x1EC 0x3DC 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_SEMC_CSX1				0x1F0 0x3E0 0x000 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_FLEXSPI_A_SCLK			0x1F0 0x3E0 0x4C8 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_LPUART7_RTS_B			0x1F0 0x3E0 0x000 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_SAI1_TX_DATA00			0x1F0 0x3E0 0x000 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_LPSPI2_SCK			0x1F0 0x3E0 0x500 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_GPIO3_IO07			0x1F0 0x3E0 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_07_CCM_REF_EN_B			0x1F0 0x3E0 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_USDHC2_DATA4			0x1F4 0x3E4 0x5F8 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_FLEXSPI_A_DATA0			0x1F4 0x3E4 0x4A8 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_LPUART7_TXD			0x1F4 0x3E4 0x55C 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_SAI1_TX_BLCK			0x1F4 0x3E4 0x5A8 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_LPSPI2_SDO			0x1F4 0x3E4 0x508 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_GPIO3_IO08			0x1F4 0x3E4 0x000 0x5 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_08_SEMC_CSX2				0x1F4 0x3E4 0x000 0x6 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_09_USDHC2_DATA5			0x1F8 0x3E8 0x5FC 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_09_FLEXSPI_A_DATA1			0x1F8 0x3E8 0x4AC 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_09_LPUART7_RXD			0x1F8 0x3E8 0x558 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_09_SAI1_TX_SYNC			0x1F8 0x3E8 0x5AC 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_09_LPSPI2_SDI			0x1F8 0x3E8 0x504 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_09_GPIO3_IO09			0x1F8 0x3E8 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_10_USDHC2_DATA6			0x1FC 0x3EC 0x600 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_10_FLEXSPI_A_DATA2			0x1FC 0x3EC 0x4B0 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_10_LPUART2_RXD			0x1FC 0x3EC 0x52C 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_10_LPI2C2_SDA			0x1FC 0x3EC 0x4D8 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_10_LPSPI2_PCS2			0x1FC 0x3EC 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_10_GPIO3_IO10			0x1FC 0x3EC 0x000 0x5 0x0
-
-#define MXRT1050_IOMUXC_GPIO_SD_B1_11_USDHC2_DATA7			0x200 0x3F0 0x604 0x0 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_11_FLEXSPI_A_DATA3			0x200 0x3F0 0x4B4 0x1 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_11_LPUART2_TXD			0x200 0x3F0 0x530 0x2 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_11_LPI2C2_SCL			0x200 0x3F0 0x4D4 0x3 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_11_LPSPI2_PCS3			0x200 0x3F0 0x000 0x4 0x0
-#define MXRT1050_IOMUXC_GPIO_SD_B1_11_GPIO3_IO11			0x200 0x3F0 0x000 0x5 0x0
-
-#endif /* _DT_BINDINGS_PINCTRL_IMXRT1050_PINFUNC_H */
diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi b/arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
deleted file mode 100644
index b0bad0d1ba36..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
+++ /dev/null
@@ -1,160 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright (C) 2019
- * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
- */
-
-#include "../../armv7-m.dtsi"
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/clock/imxrt1050-clock.h>
-#include <dt-bindings/gpio/gpio.h>
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	clocks {
-		osc: osc {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <24000000>;
-		};
-
-		osc3M: osc3M {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <3000000>;
-		};
-	};
-
-	soc {
-		lpuart1: serial@40184000 {
-			compatible = "fsl,imxrt1050-lpuart", "fsl,imx7ulp-lpuart";
-			reg = <0x40184000 0x4000>;
-			interrupts = <20>;
-			clocks = <&clks IMXRT1050_CLK_LPUART1>;
-			clock-names = "ipg";
-			status = "disabled";
-		};
-
-		iomuxc: pinctrl@401f8000 {
-			compatible = "fsl,imxrt1050-iomuxc";
-			reg = <0x401f8000 0x4000>;
-			fsl,mux_mask = <0x7>;
-		};
-
-		anatop: anatop@400d8000 {
-			compatible = "fsl,imxrt-anatop";
-			reg = <0x400d8000 0x4000>;
-		};
-
-		clks: clock-controller@400fc000 {
-			compatible = "fsl,imxrt1050-ccm";
-			reg = <0x400fc000 0x4000>;
-			interrupts = <95>, <96>;
-			clocks = <&osc>;
-			clock-names = "osc";
-			#clock-cells = <1>;
-			assigned-clocks = <&clks IMXRT1050_CLK_PLL1_BYPASS>,
-				<&clks IMXRT1050_CLK_PLL1_BYPASS>,
-				<&clks IMXRT1050_CLK_PLL2_BYPASS>,
-				<&clks IMXRT1050_CLK_PLL3_BYPASS>,
-				<&clks IMXRT1050_CLK_PLL3_PFD1_664_62M>,
-				<&clks IMXRT1050_CLK_PLL2_PFD2_396M>;
-			assigned-clock-parents = <&clks IMXRT1050_CLK_PLL1_REF_SEL>,
-				<&clks IMXRT1050_CLK_PLL1_ARM>,
-				<&clks IMXRT1050_CLK_PLL2_SYS>,
-				<&clks IMXRT1050_CLK_PLL3_USB_OTG>,
-				<&clks IMXRT1050_CLK_PLL3_USB_OTG>,
-				<&clks IMXRT1050_CLK_PLL2_SYS>;
-		};
-
-		edma1: dma-controller@400e8000 {
-			#dma-cells = <2>;
-			compatible = "fsl,imx7ulp-edma";
-			reg = <0x400e8000 0x4000>,
-				<0x400ec000 0x4000>;
-			dma-channels = <32>;
-			interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>, <8>,
-				<9>, <10>, <11>, <12>, <13>, <14>, <15>, <16>;
-			clock-names = "dma", "dmamux0";
-			clocks = <&clks IMXRT1050_CLK_DMA>,
-				 <&clks IMXRT1050_CLK_DMA_MUX>;
-		};
-
-		usdhc1: mmc@402c0000 {
-			compatible = "fsl,imxrt1050-usdhc", "fsl,imx6sl-usdhc";
-			reg = <0x402c0000 0x4000>;
-			interrupts = <110>;
-			clocks = <&clks IMXRT1050_CLK_IPG_PDOF>,
-				<&clks IMXRT1050_CLK_AHB_PODF>,
-				<&clks IMXRT1050_CLK_USDHC1>;
-			clock-names = "ipg", "ahb", "per";
-			bus-width = <4>;
-			fsl,wp-controller;
-			no-1-8-v;
-			max-frequency = <200000000>;
-			fsl,tuning-start-tap = <20>;
-			fsl,tuning-step = <2>;
-			status = "disabled";
-		};
-
-		gpio1: gpio@401b8000 {
-			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
-			reg = <0x401b8000 0x4000>;
-			interrupts = <80>, <81>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-		};
-
-		gpio2: gpio@401bc000 {
-			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
-			reg = <0x401bc000 0x4000>;
-			interrupts = <82>, <83>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-		};
-
-		gpio3: gpio@401c0000 {
-			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
-			reg = <0x401c0000 0x4000>;
-			interrupts = <84>, <85>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-		};
-
-		gpio4: gpio@401c4000 {
-			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
-			reg = <0x401c4000 0x4000>;
-			interrupts = <86>, <87>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-		};
-
-		gpio5: gpio@400c0000 {
-			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
-			reg = <0x400c0000 0x4000>;
-			interrupts = <88>, <89>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-		};
-
-		gpt: timer@401ec000 {
-			compatible = "fsl,imxrt1050-gpt", "fsl,imx6dl-gpt", "fsl,imx6sl-gpt";
-			reg = <0x401ec000 0x4000>;
-			interrupts = <100>;
-			clocks = <&osc3M>;
-			clock-names = "per";
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h b/arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
deleted file mode 100644
index 3b9fff2f08e1..000000000000
--- a/arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
+++ /dev/null
@@ -1,1561 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
-/*
- * Copyright (C) 2021
- * Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
- */
-
-#ifndef _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H
-#define _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H
-
-#define IMX_PAD_SION		0x40000000
-
-/*
- * The pin function ID is a tuple of
- * <mux_reg conf_reg input_reg mux_mode input_val>
- */
-
-#define IOMUXC_GPIO_LPSR_00_FLEXCAN3_TX				0x000 0x040 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_00_MIC_CLK				0x000 0x040 0x0 0x1 0x0
-#define IOMUXC_GPIO_LPSR_00_MQS_RIGHT				0x000 0x040 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_00_ARM_CM4_EVENTO			0x000 0x040 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_00_GPIO_MUX6_IO00			0x000 0x040 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_00_LPUART12_TXD			0x000 0x040 0x0B0 0x6 0x0
-#define IOMUXC_GPIO_LPSR_00_SAI4_MCLK				0x000 0x040 0x0C8 0x7 0x0
-#define IOMUXC_GPIO_LPSR_00_GPIO12_IO00				0x000 0x040 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_01_FLEXCAN3_RX				0x004 0x044 0x080 0x0 0x0
-#define IOMUXC_GPIO_LPSR_01_MIC_BITSTREAM0			0x004 0x044 0x0B4 0x1 0x0
-#define IOMUXC_GPIO_LPSR_01_MQS_LEFT				0x004 0x044 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_01_ARM_CM4_EVENTI			0x004 0x044 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_01_GPIO_MUX6_IO01			0x004 0x044 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_01_LPUART12_RXD			0x004 0x044 0x0AC 0x6 0x0
-#define IOMUXC_GPIO_LPSR_01_GPIO12_IO01				0x004 0x044 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_02_GPIO12_IO02				0x008 0x048 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_02_SRC_BOOT_MODE00			0x008 0x048 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_02_LPSPI5_SCK				0x008 0x048 0x098 0x1 0x0
-#define IOMUXC_GPIO_LPSR_02_SAI4_TX_DATA			0x008 0x048 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_02_MQS_RIGHT				0x008 0x048 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_02_GPIO_MUX6_IO02			0x008 0x048 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_LPSR_03_SRC_BOOT_MODE01			0x00C 0x04C 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_03_LPSPI5_PCS0				0x00C 0x04C 0x094 0x1 0x0
-#define IOMUXC_GPIO_LPSR_03_SAI4_TX_SYNC			0x00C 0x04C 0x0DC 0x2 0x0
-#define IOMUXC_GPIO_LPSR_03_MQS_LEFT				0x00C 0x04C 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_03_GPIO_MUX6_IO03			0x00C 0x04C 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_03_GPIO12_IO03				0x00C 0x04C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_04_LPI2C5_SDA				0x010 0x050 0x088 0x0 0x0
-#define IOMUXC_GPIO_LPSR_04_LPSPI5_SOUT				0x010 0x050 0x0A0 0x1 0x0
-#define IOMUXC_GPIO_LPSR_04_SAI4_TX_BCLK			0x010 0x050 0x0D8 0x2 0x0
-#define IOMUXC_GPIO_LPSR_04_LPUART12_RTS_B			0x010 0x050 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_04_GPIO_MUX6_IO04			0x010 0x050 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_04_LPUART11_TXD			0x010 0x050 0x0A8 0x6 0x0
-#define IOMUXC_GPIO_LPSR_04_GPIO12_IO04				0x010 0x050 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_05_GPIO12_IO05				0x014 0x054 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_05_LPI2C5_SCL				0x014 0x054 0x084 0x0 0x0
-#define IOMUXC_GPIO_LPSR_05_LPSPI5_SIN				0x014 0x054 0x09C 0x1 0x0
-#define IOMUXC_GPIO_LPSR_05_SAI4_MCLK				0x014 0x054 0x0C8 0x2 0x1
-#define IOMUXC_GPIO_LPSR_05_LPUART12_CTS_B			0x014 0x054 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_05_GPIO_MUX6_IO05			0x014 0x054 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_05_LPUART11_RXD			0x014 0x054 0x0A4 0x6 0x0
-#define IOMUXC_GPIO_LPSR_05_NMI_GLUE_NMI			0x014 0x054 0x0C4 0x7 0x0
-
-#define IOMUXC_GPIO_LPSR_06_LPI2C6_SDA				0x018 0x058 0x090 0x0 0x0
-#define IOMUXC_GPIO_LPSR_06_SAI4_RX_DATA			0x018 0x058 0x0D0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_06_LPUART12_TXD			0x018 0x058 0x0B0 0x3 0x1
-#define IOMUXC_GPIO_LPSR_06_LPSPI6_PCS3				0x018 0x058 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_06_GPIO_MUX6_IO06			0x018 0x058 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_06_FLEXCAN3_TX				0x018 0x058 0x0 0x6 0x0
-#define IOMUXC_GPIO_LPSR_06_PIT2_TRIGGER3			0x018 0x058 0x0 0x7 0x0
-#define IOMUXC_GPIO_LPSR_06_LPSPI5_PCS1				0x018 0x058 0x0 0x8 0x0
-#define IOMUXC_GPIO_LPSR_06_GPIO12_IO06				0x018 0x058 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_07_LPI2C6_SCL				0x01C 0x05C 0x08C 0x0 0x0
-#define IOMUXC_GPIO_LPSR_07_SAI4_RX_BCLK			0x01C 0x05C 0x0CC 0x2 0x0
-#define IOMUXC_GPIO_LPSR_07_LPUART12_RXD			0x01C 0x05C 0x0AC 0x3 0x1
-#define IOMUXC_GPIO_LPSR_07_LPSPI6_PCS2				0x01C 0x05C 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_07_GPIO_MUX6_IO07			0x01C 0x05C 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_07_FLEXCAN3_RX				0x01C 0x05C 0x080 0x6 0x1
-#define IOMUXC_GPIO_LPSR_07_PIT2_TRIGGER2			0x01C 0x05C 0x0 0x7 0x0
-#define IOMUXC_GPIO_LPSR_07_LPSPI5_PCS2				0x01C 0x05C 0x0 0x8 0x0
-#define IOMUXC_GPIO_LPSR_07_GPIO12_IO07				0x01C 0x05C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_08_GPIO12_IO08				0x020 0x060 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_08_LPUART11_TXD			0x020 0x060 0x0A8 0x0 0x1
-#define IOMUXC_GPIO_LPSR_08_FLEXCAN3_TX				0x020 0x060 0x0 0x1 0x0
-#define IOMUXC_GPIO_LPSR_08_SAI4_RX_SYNC			0x020 0x060 0x0D4 0x2 0x0
-#define IOMUXC_GPIO_LPSR_08_MIC_CLK				0x020 0x060 0x0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_08_LPSPI6_PCS1				0x020 0x060 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_08_GPIO_MUX6_IO08			0x020 0x060 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_08_LPI2C5_SDA				0x020 0x060 0x088 0x6 0x1
-#define IOMUXC_GPIO_LPSR_08_PIT2_TRIGGER1			0x020 0x060 0x0 0x7 0x0
-#define IOMUXC_GPIO_LPSR_08_LPSPI5_PCS3				0x020 0x060 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_LPSR_09_GPIO12_IO09				0x024 0x064 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_09_LPUART11_RXD			0x024 0x064 0x0A4 0x0 0x1
-#define IOMUXC_GPIO_LPSR_09_FLEXCAN3_RX				0x024 0x064 0x080 0x1 0x2
-#define IOMUXC_GPIO_LPSR_09_PIT2_TRIGGER0			0x024 0x064 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_09_MIC_BITSTREAM0			0x024 0x064 0x0B4 0x3 0x1
-#define IOMUXC_GPIO_LPSR_09_LPSPI6_PCS0				0x024 0x064 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_09_GPIO_MUX6_IO09			0x024 0x064 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_09_LPI2C5_SCL				0x024 0x064 0x084 0x6 0x1
-#define IOMUXC_GPIO_LPSR_09_SAI4_TX_DATA			0x024 0x064 0x0 0x7 0x0
-
-#define IOMUXC_GPIO_LPSR_10_GPIO12_IO10				0x028 0x068 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_10_JTAG_MUX_TRSTB			0x028 0x068 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_10_LPUART11_CTS_B			0x028 0x068 0x0 0x1 0x0
-#define IOMUXC_GPIO_LPSR_10_LPI2C6_SDA				0x028 0x068 0x090 0x2 0x1
-#define IOMUXC_GPIO_LPSR_10_MIC_BITSTREAM1			0x028 0x068 0x0B8 0x3 0x0
-#define IOMUXC_GPIO_LPSR_10_LPSPI6_SCK				0x028 0x068 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_10_GPIO_MUX6_IO10			0x028 0x068 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_10_LPI2C5_SCLS				0x028 0x068 0x0 0x6 0x0
-#define IOMUXC_GPIO_LPSR_10_SAI4_TX_SYNC			0x028 0x068 0x0DC 0x7 0x1
-#define IOMUXC_GPIO_LPSR_10_LPUART12_TXD			0x028 0x068 0x0B0 0x8 0x2
-
-#define IOMUXC_GPIO_LPSR_11_JTAG_MUX_TDO			0x02C 0x06C 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_11_LPUART11_RTS_B			0x02C 0x06C 0x0 0x1 0x0
-#define IOMUXC_GPIO_LPSR_11_LPI2C6_SCL				0x02C 0x06C 0x08C 0x2 0x1
-#define IOMUXC_GPIO_LPSR_11_MIC_BITSTREAM2			0x02C 0x06C 0x0BC 0x3 0x0
-#define IOMUXC_GPIO_LPSR_11_LPSPI6_SOUT				0x02C 0x06C 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_11_GPIO_MUX6_IO11			0x02C 0x06C 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_11_LPI2C5_SDAS				0x02C 0x06C 0x0 0x6 0x0
-#define IOMUXC_GPIO_LPSR_11_ARM_TRACE_SWO			0x02C 0x06C 0x0 0x7 0x0
-#define IOMUXC_GPIO_LPSR_11_LPUART12_RXD			0x02C 0x06C 0x0AC 0x8 0x2
-#define IOMUXC_GPIO_LPSR_11_GPIO12_IO11				0x02C 0x06C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_12_GPIO12_IO12				0x030 0x070 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_12_JTAG_MUX_TDI			0x030 0x070 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_12_PIT2_TRIGGER0			0x030 0x070 0x0 0x1 0x0
-#define IOMUXC_GPIO_LPSR_12_MIC_BITSTREAM3			0x030 0x070 0x0C0 0x3 0x0
-#define IOMUXC_GPIO_LPSR_12_LPSPI6_SIN				0x030 0x070 0x0 0x4 0x0
-#define IOMUXC_GPIO_LPSR_12_GPIO_MUX6_IO12			0x030 0x070 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_12_LPI2C5_HREQ				0x030 0x070 0x0 0x6 0x0
-#define IOMUXC_GPIO_LPSR_12_SAI4_TX_BCLK			0x030 0x070 0x0D8 0x7 0x1
-#define IOMUXC_GPIO_LPSR_12_LPSPI5_SCK				0x030 0x070 0x098 0x8 0x1
-
-#define IOMUXC_GPIO_LPSR_13_GPIO12_IO13				0x034 0x074 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_13_JTAG_MUX_MOD			0x034 0x074 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_13_MIC_BITSTREAM1			0x034 0x074 0x0B8 0x1 0x1
-#define IOMUXC_GPIO_LPSR_13_PIT2_TRIGGER1			0x034 0x074 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_13_GPIO_MUX6_IO13			0x034 0x074 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_13_SAI4_RX_DATA			0x034 0x074 0x0D0 0x7 0x1
-#define IOMUXC_GPIO_LPSR_13_LPSPI5_PCS0				0x034 0x074 0x094 0x8 0x1
-
-#define IOMUXC_GPIO_LPSR_14_JTAG_MUX_TCK			0x038 0x078 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_14_MIC_BITSTREAM2			0x038 0x078 0x0BC 0x1 0x1
-#define IOMUXC_GPIO_LPSR_14_PIT2_TRIGGER2			0x038 0x078 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_14_GPIO_MUX6_IO14			0x038 0x078 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_14_SAI4_RX_BCLK			0x038 0x078 0x0CC 0x7 0x1
-#define IOMUXC_GPIO_LPSR_14_LPSPI5_SOUT				0x038 0x078 0x0A0 0x8 0x1
-#define IOMUXC_GPIO_LPSR_14_GPIO12_IO14				0x038 0x078 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_LPSR_15_GPIO12_IO15				0x03C 0x07C 0x0 0xA 0x0
-#define IOMUXC_GPIO_LPSR_15_JTAG_MUX_TMS			0x03C 0x07C 0x0 0x0 0x0
-#define IOMUXC_GPIO_LPSR_15_MIC_BITSTREAM3			0x03C 0x07C 0x0C0 0x1 0x1
-#define IOMUXC_GPIO_LPSR_15_PIT2_TRIGGER3			0x03C 0x07C 0x0 0x2 0x0
-#define IOMUXC_GPIO_LPSR_15_GPIO_MUX6_IO15			0x03C 0x07C 0x0 0x5 0x0
-#define IOMUXC_GPIO_LPSR_15_SAI4_RX_SYNC			0x03C 0x07C 0x0D4 0x7 0x1
-#define IOMUXC_GPIO_LPSR_15_LPSPI5_SIN				0x03C 0x07C 0x09C 0x8 0x1
-
-#define IOMUXC_WAKEUP_DIG_GPIO13_IO00				0x40C94000 0x40C94040 0x0 0x5 0x0
-#define IOMUXC_WAKEUP_DIG_NMI_GLUE_NMI				0x40C94000 0x40C94040 0x0C4 0x7 0x1
-
-#define IOMUXC_PMIC_ON_REQ_DIG_SNVS_LP_PMIC_ON_REQ		0x40C94004 0x40C94044 0x0 0x0 0x0
-#define IOMUXC_PMIC_ON_REQ_DIG_GPIO13_IO01			0x40C94004 0x40C94044 0x0 0x5 0x0
-
-#define IOMUXC_PMIC_STBY_REQ_DIG_CCM_PMIC_VSTBY_REQ		0x40C94008 0x40C94048 0x0 0x0 0x0
-#define IOMUXC_PMIC_STBY_REQ_DIG_GPIO13_IO02			0x40C94008 0x40C94048 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_00_DIG_SNVS_TAMPER0			0x40C9400C 0x40C9404C 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_00_DIG_GPIO13_IO03			0x40C9400C 0x40C9404C 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_01_DIG_SNVS_TAMPER1			0x40C94010 0x40C94050 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_01_DIG_GPIO13_IO04			0x40C94010 0x40C94050 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_02_DIG_SNVS_TAMPER2			0x40C94014 0x40C94054 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_02_DIG_GPIO13_IO05			0x40C94014 0x40C94054 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_03_DIG_SNVS_TAMPER3			0x40C94018 0x40C94058 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_03_DIG_GPIO13_IO06			0x40C94018 0x40C94058 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_04_DIG_SNVS_TAMPER4			0x40C9401C 0x40C9405C 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_04_DIG_GPIO13_IO07			0x40C9401C 0x40C9405C 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_05_DIG_SNVS_TAMPER5			0x40C94020 0x40C94060 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_05_DIG_GPIO13_IO08			0x40C94020 0x40C94060 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_06_DIG_SNVS_TAMPER6			0x40C94024 0x40C94064 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_06_DIG_GPIO13_IO09			0x40C94024 0x40C94064 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_07_DIG_SNVS_TAMPER7			0x40C94028 0x40C94068 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_07_DIG_GPIO13_IO10			0x40C94028 0x40C94068 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_08_DIG_SNVS_TAMPER8			0x40C9402C 0x40C9406C 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_08_DIG_GPIO13_IO11			0x40C9402C 0x40C9406C 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SNVS_09_DIG_SNVS_TAMPER9			0x40C94030 0x40C94070 0x0 0x0 0x0
-#define IOMUXC_GPIO_SNVS_09_DIG_GPIO13_IO12			0x40C94030 0x40C94070 0x0 0x5 0x0
-
-#define IOMUXC_TEST_MODE_DIG					0x0 0x40C94034 0x0 0x0 0x0
-
-#define IOMUXC_POR_B_DIG					0x0 0x40C94038 0x0 0x0 0x0
-
-#define IOMUXC_ONOFF_DIG					0x0 0x40C9403C 0x0 0x0 0x0
-
-#define IOMUXC_GPIO_EMC_B1_00_SEMC_DATA00			0x010 0x254 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_00_FLEXPWM4_PWM0_A			0x010 0x254 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_00_GPIO_MUX1_IO00			0x010 0x254 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_00_FLEXIO1_D00			0x010 0x254 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_00_GPIO7_IO00			0x010 0x254 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_01_GPIO7_IO01			0x014 0x258 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_01_SEMC_DATA01			0x014 0x258 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_01_FLEXPWM4_PWM0_B			0x014 0x258 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_01_GPIO_MUX1_IO01			0x014 0x258 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_01_FLEXIO1_D01			0x014 0x258 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_02_SEMC_DATA02			0x018 0x25C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_02_FLEXPWM4_PWM1_A			0x018 0x25C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_02_GPIO_MUX1_IO02			0x018 0x25C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_02_FLEXIO1_D02			0x018 0x25C 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_02_GPIO7_IO02			0x018 0x25C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_03_SEMC_DATA03			0x01C 0x260 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_03_FLEXPWM4_PWM1_B			0x01C 0x260 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_03_GPIO_MUX1_IO03			0x01C 0x260 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_03_FLEXIO1_D03			0x01C 0x260 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_03_GPIO7_IO03			0x01C 0x260 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_04_GPIO7_IO04			0x020 0x264 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_04_SEMC_DATA04			0x020 0x264 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_04_FLEXPWM4_PWM2_A			0x020 0x264 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_04_GPIO_MUX1_IO04			0x020 0x264 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_04_FLEXIO1_D04			0x020 0x264 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_05_SEMC_DATA05			0x024 0x268 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_05_FLEXPWM4_PWM2_B			0x024 0x268 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_05_GPIO_MUX1_IO05			0x024 0x268 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_05_FLEXIO1_D05			0x024 0x268 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_05_GPIO7_IO05			0x024 0x268 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_06_SEMC_DATA06			0x028 0x26C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_06_FLEXPWM2_PWM0_A			0x028 0x26C 0x518 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_06_GPIO_MUX1_IO06			0x028 0x26C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_06_FLEXIO1_D06			0x028 0x26C 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_06_GPIO7_IO06			0x028 0x26C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_07_GPIO7_IO07			0x02C 0x270 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_07_SEMC_DATA07			0x02C 0x270 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_07_FLEXPWM2_PWM0_B			0x02C 0x270 0x524 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_07_GPIO_MUX1_IO07			0x02C 0x270 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_07_FLEXIO1_D07			0x02C 0x270 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_08_SEMC_DM00				0x030 0x274 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_08_FLEXPWM2_PWM1_A			0x030 0x274 0x51C 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_08_GPIO_MUX1_IO08			0x030 0x274 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_08_FLEXIO1_D08			0x030 0x274 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_08_GPIO7_IO08			0x030 0x274 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_09_SEMC_ADDR00			0x034 0x278 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_09_FLEXPWM2_PWM1_B			0x034 0x278 0x528 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_09_GPT5_CAPTURE1			0x034 0x278 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_09_GPIO_MUX1_IO09			0x034 0x278 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_09_FLEXIO1_D09			0x034 0x278 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_09_GPIO7_IO09			0x034 0x278 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_10_SEMC_ADDR01			0x038 0x27C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_10_FLEXPWM2_PWM2_A			0x038 0x27C 0x520 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_10_GPT5_CAPTURE2			0x038 0x27C 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_10_GPIO_MUX1_IO10			0x038 0x27C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_10_FLEXIO1_D10			0x038 0x27C 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_10_GPIO7_IO10			0x038 0x27C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_11_GPIO7_IO11			0x03C 0x280 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_11_SEMC_ADDR02			0x03C 0x280 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_11_FLEXPWM2_PWM2_B			0x03C 0x280 0x52C 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_11_GPT5_COMPARE1			0x03C 0x280 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_11_GPIO_MUX1_IO11			0x03C 0x280 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_11_FLEXIO1_D11			0x03C 0x280 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_12_SEMC_ADDR03			0x040 0x284 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_12_XBAR1_INOUT04			0x040 0x284 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_12_GPT5_COMPARE2			0x040 0x284 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_12_GPIO_MUX1_IO12			0x040 0x284 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_12_FLEXIO1_D12			0x040 0x284 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_12_GPIO7_IO12			0x040 0x284 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_13_SEMC_ADDR04			0x044 0x288 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_13_XBAR1_INOUT05			0x044 0x288 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_13_GPT5_COMPARE3			0x044 0x288 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_13_GPIO_MUX1_IO13			0x044 0x288 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_13_FLEXIO1_D13			0x044 0x288 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_13_GPIO7_IO13			0x044 0x288 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_14_GPIO7_IO14			0x048 0x28C 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_14_SEMC_ADDR05			0x048 0x28C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_14_XBAR1_INOUT06			0x048 0x28C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_14_GPT5_CLK				0x048 0x28C 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_14_GPIO_MUX1_IO14			0x048 0x28C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_14_FLEXIO1_D14			0x048 0x28C 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_15_SEMC_ADDR06			0x04C 0x290 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_15_XBAR1_INOUT07			0x04C 0x290 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_15_GPIO_MUX1_IO15			0x04C 0x290 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_15_FLEXIO1_D15			0x04C 0x290 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_15_GPIO7_IO15			0x04C 0x290 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_16_SEMC_ADDR07			0x050 0x294 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_16_XBAR1_INOUT08			0x050 0x294 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_16_GPIO_MUX1_IO16			0x050 0x294 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_16_FLEXIO1_D16			0x050 0x294 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_16_GPIO7_IO16			0x050 0x294 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_17_GPIO7_IO17			0x054 0x298 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_17_SEMC_ADDR08			0x054 0x298 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_17_FLEXPWM4_PWM3_A			0x054 0x298 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_17_TMR1_TIMER0			0x054 0x298 0x63C 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_17_GPIO_MUX1_IO17			0x054 0x298 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_17_FLEXIO1_D17			0x054 0x298 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_18_SEMC_ADDR09			0x058 0x29C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_18_FLEXPWM4_PWM3_B			0x058 0x29C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_18_TMR2_TIMER0			0x058 0x29C 0x648 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_18_GPIO_MUX1_IO18			0x058 0x29C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_18_FLEXIO1_D18			0x058 0x29C 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_18_GPIO7_IO18			0x058 0x29C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_19_SEMC_ADDR11			0x05C 0x2A0 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_19_FLEXPWM2_PWM3_A			0x05C 0x2A0 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_19_TMR3_TIMER0			0x05C 0x2A0 0x654 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_19_GPIO_MUX1_IO19			0x05C 0x2A0 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_19_FLEXIO1_D19			0x05C 0x2A0 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_19_GPIO7_IO19			0x05C 0x2A0 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_20_SEMC_ADDR12			0x060 0x2A4 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_20_FLEXPWM2_PWM3_B			0x060 0x2A4 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_20_TMR4_TIMER0			0x060 0x2A4 0x660 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_20_GPIO_MUX1_IO20			0x060 0x2A4 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_20_FLEXIO1_D20			0x060 0x2A4 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_20_GPIO7_IO20			0x060 0x2A4 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_21_GPIO7_IO21			0x064 0x2A8 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_21_SEMC_BA0				0x064 0x2A8 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_21_FLEXPWM3_PWM3_A			0x064 0x2A8 0x53C 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_21_GPIO_MUX1_IO21			0x064 0x2A8 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_21_FLEXIO1_D21			0x064 0x2A8 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_22_GPIO7_IO22			0x068 0x2AC 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_22_SEMC_BA1				0x068 0x2AC 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_22_FLEXPWM3_PWM3_B			0x068 0x2AC 0x54C 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_22_GPIO_MUX1_IO22			0x068 0x2AC 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_22_FLEXIO1_D22			0x068 0x2AC 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_23_SEMC_ADDR10			0x06C 0x2B0 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_23_FLEXPWM1_PWM0_A			0x06C 0x2B0 0x500 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_23_GPIO_MUX1_IO23			0x06C 0x2B0 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_23_FLEXIO1_D23			0x06C 0x2B0 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_23_GPIO7_IO23			0x06C 0x2B0 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_24_GPIO7_IO24			0x070 0x2B4 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_24_SEMC_CAS				0x070 0x2B4 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_24_FLEXPWM1_PWM0_B			0x070 0x2B4 0x50C 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_24_GPIO_MUX1_IO24			0x070 0x2B4 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_24_FLEXIO1_D24			0x070 0x2B4 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_25_GPIO7_IO25			0x074 0x2B8 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_25_SEMC_RAS				0x074 0x2B8 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_25_FLEXPWM1_PWM1_A			0x074 0x2B8 0x504 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_25_GPIO_MUX1_IO25			0x074 0x2B8 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_25_FLEXIO1_D25			0x074 0x2B8 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_26_SEMC_CLK				0x078 0x2BC 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_26_FLEXPWM1_PWM1_B			0x078 0x2BC 0x510 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_26_GPIO_MUX1_IO26			0x078 0x2BC 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_26_FLEXIO1_D26			0x078 0x2BC 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_26_GPIO7_IO26			0x078 0x2BC 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_27_GPIO7_IO27			0x07C 0x2C0 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_27_SEMC_CKE				0x07C 0x2C0 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_27_FLEXPWM1_PWM2_A			0x07C 0x2C0 0x508 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_27_GPIO_MUX1_IO27			0x07C 0x2C0 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_27_FLEXIO1_D27			0x07C 0x2C0 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_28_GPIO7_IO28			0x080 0x2C4 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_28_SEMC_WE				0x080 0x2C4 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_28_FLEXPWM1_PWM2_B			0x080 0x2C4 0x514 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_28_GPIO_MUX1_IO28			0x080 0x2C4 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_28_FLEXIO1_D28			0x080 0x2C4 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_29_SEMC_CS0				0x084 0x2C8 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_29_FLEXPWM3_PWM0_A			0x084 0x2C8 0x530 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_29_GPIO_MUX1_IO29			0x084 0x2C8 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_29_FLEXIO1_D29			0x084 0x2C8 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_29_GPIO7_IO29			0x084 0x2C8 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_30_SEMC_DATA08			0x088 0x2CC 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_30_FLEXPWM3_PWM0_B			0x088 0x2CC 0x540 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_30_GPIO_MUX1_IO30			0x088 0x2CC 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_30_FLEXIO1_D30			0x088 0x2CC 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B1_30_GPIO7_IO30			0x088 0x2CC 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_31_GPIO7_IO31			0x08C 0x2D0 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_31_SEMC_DATA09			0x08C 0x2D0 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_31_FLEXPWM3_PWM1_A			0x08C 0x2D0 0x534 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_31_GPIO_MUX1_IO31			0x08C 0x2D0 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_31_FLEXIO1_D31			0x08C 0x2D0 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_EMC_B1_32_GPIO8_IO00			0x090 0x2D4 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_32_SEMC_DATA10			0x090 0x2D4 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_32_FLEXPWM3_PWM1_B			0x090 0x2D4 0x544 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_32_GPIO_MUX2_IO00			0x090 0x2D4 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_EMC_B1_33_SEMC_DATA11			0x094 0x2D8 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_33_FLEXPWM3_PWM2_A			0x094 0x2D8 0x538 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_33_GPIO_MUX2_IO01			0x094 0x2D8 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_33_GPIO8_IO01			0x094 0x2D8 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_34_GPIO8_IO02			0x098 0x2DC 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_34_SEMC_DATA12			0x098 0x2DC 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_34_FLEXPWM3_PWM2_B			0x098 0x2DC 0x548 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_34_GPIO_MUX2_IO02			0x098 0x2DC 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_EMC_B1_35_GPIO8_IO03			0x09C 0x2E0 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_35_SEMC_DATA13			0x09C 0x2E0 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_35_XBAR1_INOUT09			0x09C 0x2E0 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_35_GPIO_MUX2_IO03			0x09C 0x2E0 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_EMC_B1_36_SEMC_DATA14			0x0A0 0x2E4 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_36_XBAR1_INOUT10			0x0A0 0x2E4 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_36_GPIO_MUX2_IO04			0x0A0 0x2E4 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_36_GPIO8_IO04			0x0A0 0x2E4 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_37_GPIO8_IO05			0x0A4 0x2E8 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_37_SEMC_DATA15			0x0A4 0x2E8 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_37_XBAR1_INOUT11			0x0A4 0x2E8 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_37_GPIO_MUX2_IO05			0x0A4 0x2E8 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_EMC_B1_38_GPIO8_IO06			0x0A8 0x2EC 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_38_SEMC_DM01				0x0A8 0x2EC 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_38_FLEXPWM1_PWM3_A			0x0A8 0x2EC 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_38_TMR1_TIMER1			0x0A8 0x2EC 0x640 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_38_GPIO_MUX2_IO06			0x0A8 0x2EC 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_EMC_B1_39_SEMC_DQS				0x0AC 0x2F0 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_39_FLEXPWM1_PWM3_B			0x0AC 0x2F0 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_39_TMR2_TIMER1			0x0AC 0x2F0 0x64C 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_39_GPIO_MUX2_IO07			0x0AC 0x2F0 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_39_GPIO8_IO07			0x0AC 0x2F0 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_40_SEMC_RDY				0x0B0 0x2F4 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_40_XBAR1_INOUT12			0x0B0 0x2F4 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_40_MQS_RIGHT				0x0B0 0x2F4 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_40_LPUART6_TXD			0x0B0 0x2F4 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B1_40_GPIO_MUX2_IO08			0x0B0 0x2F4 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_40_ENET_1G_MDC			0x0B0 0x2F4 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B1_40_CCM_CLKO1				0x0B0 0x2F4 0x0 0x9 0x0
-#define IOMUXC_GPIO_EMC_B1_40_GPIO8_IO08			0x0B0 0x2F4 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B1_41_GPIO8_IO09			0x0B4 0x2F8 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B1_41_SEMC_CSX00			0x0B4 0x2F8 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B1_41_XBAR1_INOUT13			0x0B4 0x2F8 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B1_41_MQS_LEFT				0x0B4 0x2F8 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B1_41_LPUART6_RXD			0x0B4 0x2F8 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B1_41_FLEXSPI2_B_DATA07			0x0B4 0x2F8 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B1_41_GPIO_MUX2_IO09			0x0B4 0x2F8 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B1_41_ENET_1G_MDIO			0x0B4 0x2F8 0x4C8 0x7 0x0
-#define IOMUXC_GPIO_EMC_B1_41_CCM_CLKO2				0x0B4 0x2F8 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_EMC_B2_00_SEMC_DATA16			0x0B8 0x2FC 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_00_CCM_ENET_REF_CLK_25M		0x0B8 0x2FC 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_00_TMR3_TIMER1			0x0B8 0x2FC 0x658 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_00_LPUART6_CTS_B			0x0B8 0x2FC 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_00_FLEXSPI2_B_DATA06			0x0B8 0x2FC 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_00_GPIO_MUX2_IO10			0x0B8 0x2FC 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_00_XBAR1_INOUT20			0x0B8 0x2FC 0x6D8 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_00_ENET_QOS_1588_EVENT1_OUT		0x0B8 0x2FC 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_00_LPSPI1_SCK			0x0B8 0x2FC 0x5D0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_00_LPI2C2_SCL			0x0B8 0x2FC 0x5B4 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_00_GPIO8_IO10			0x0B8 0x2FC 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_00_FLEXPWM3_PWM0_A			0x0B8 0x2FC 0x530 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_01_SEMC_DATA17			0x0BC 0x300 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_01_USDHC2_CD_B			0x0BC 0x300 0x6D0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_01_TMR4_TIMER1			0x0BC 0x300 0x664 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_01_LPUART6_RTS_B			0x0BC 0x300 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_01_FLEXSPI2_B_DATA05			0x0BC 0x300 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_01_GPIO_MUX2_IO11			0x0BC 0x300 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_01_XBAR1_INOUT21			0x0BC 0x300 0x6DC 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_01_ENET_QOS_1588_EVENT1_IN		0x0BC 0x300 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_01_LPSPI1_PCS0			0x0BC 0x300 0x5CC 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_01_LPI2C2_SDA			0x0BC 0x300 0x5B8 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_01_GPIO8_IO11			0x0BC 0x300 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_01_FLEXPWM3_PWM0_B			0x0BC 0x300 0x540 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_02_SEMC_DATA18			0x0C0 0x304 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_02_USDHC2_WP				0x0C0 0x304 0x6D4 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_02_VIDEO_MUX_CSI_DATA23		0x0C0 0x304 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_02_FLEXSPI2_B_DATA04			0x0C0 0x304 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_02_GPIO_MUX2_IO12			0x0C0 0x304 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_02_XBAR1_INOUT22			0x0C0 0x304 0x6E0 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_02_ENET_QOS_1588_EVENT1_AUX_IN	0x0C0 0x304 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_02_LPSPI1_SOUT			0x0C0 0x304 0x5D8 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_02_GPIO8_IO12			0x0C0 0x304 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_02_FLEXPWM3_PWM1_A			0x0C0 0x304 0x534 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_03_SEMC_DATA19			0x0C4 0x308 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_03_USDHC2_VSELECT			0x0C4 0x308 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_03_VIDEO_MUX_CSI_DATA22		0x0C4 0x308 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_03_FLEXSPI2_B_DATA03			0x0C4 0x308 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_03_GPIO_MUX2_IO13			0x0C4 0x308 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_03_XBAR1_INOUT23			0x0C4 0x308 0x6E4 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_03_ENET_1G_TX_DATA03			0x0C4 0x308 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_03_LPSPI1_SIN			0x0C4 0x308 0x5D4 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_03_GPIO8_IO13			0x0C4 0x308 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_03_FLEXPWM3_PWM1_B			0x0C4 0x308 0x544 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_04_SEMC_DATA20			0x0C8 0x30C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_04_USDHC2_RESET_B			0x0C8 0x30C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_04_SAI2_MCLK				0x0C8 0x30C 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_04_VIDEO_MUX_CSI_DATA21		0x0C8 0x30C 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_04_FLEXSPI2_B_DATA02			0x0C8 0x30C 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_04_GPIO_MUX2_IO14			0x0C8 0x30C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_04_XBAR1_INOUT24			0x0C8 0x30C 0x6E8 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_04_ENET_1G_TX_DATA02			0x0C8 0x30C 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_04_LPSPI3_SCK			0x0C8 0x30C 0x600 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_04_GPIO8_IO14			0x0C8 0x30C 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_04_FLEXPWM3_PWM2_A			0x0C8 0x30C 0x538 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_05_SEMC_DATA21			0x0CC 0x310 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_05_GPT3_CLK				0x0CC 0x310 0x598 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_05_SAI2_RX_SYNC			0x0CC 0x310 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_05_VIDEO_MUX_CSI_DATA20		0x0CC 0x310 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_05_FLEXSPI2_B_DATA01			0x0CC 0x310 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_05_GPIO_MUX2_IO15			0x0CC 0x310 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_05_XBAR1_INOUT25			0x0CC 0x310 0x6EC 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_05_ENET_1G_RX_CLK			0x0CC 0x310 0x4CC 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_05_LPSPI3_PCS0			0x0CC 0x310 0x5F0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_05_PIT1_TRIGGER0			0x0CC 0x310 0x0 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_05_GPIO8_IO15			0x0CC 0x310 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_05_FLEXPWM3_PWM2_B			0x0CC 0x310 0x548 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_06_SEMC_DATA22			0x0D0 0x314 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_06_GPT3_CAPTURE1			0x0D0 0x314 0x590 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_06_GPIO8_IO16			0x0D0 0x314 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_06_SAI2_RX_BCLK			0x0D0 0x314 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_06_FLEXPWM3_PWM3_A			0x0D0 0x314 0x53C 0xB 0x1
-#define IOMUXC_GPIO_EMC_B2_06_VIDEO_MUX_CSI_DATA19		0x0D0 0x314 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_06_FLEXSPI2_B_DATA00			0x0D0 0x314 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_06_GPIO_MUX2_IO16			0x0D0 0x314 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_06_XBAR1_INOUT26			0x0D0 0x314 0x6F0 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_06_ENET_1G_TX_ER			0x0D0 0x314 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_06_LPSPI3_SOUT			0x0D0 0x314 0x608 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_06_PIT1_TRIGGER1			0x0D0 0x314 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_EMC_B2_07_SEMC_DATA23			0x0D4 0x318 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_07_GPT3_CAPTURE2			0x0D4 0x318 0x594 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_07_SAI2_RX_DATA			0x0D4 0x318 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_07_VIDEO_MUX_CSI_DATA18		0x0D4 0x318 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_07_FLEXSPI2_B_DQS			0x0D4 0x318 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_07_GPIO_MUX2_IO17			0x0D4 0x318 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_07_XBAR1_INOUT27			0x0D4 0x318 0x6F4 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_07_ENET_1G_RX_DATA03			0x0D4 0x318 0x4DC 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_07_LPSPI3_SIN			0x0D4 0x318 0x604 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_07_PIT1_TRIGGER2			0x0D4 0x318 0x0 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_07_GPIO8_IO17			0x0D4 0x318 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_07_FLEXPWM3_PWM3_B			0x0D4 0x318 0x54C 0xB 0x1
-
-#define IOMUXC_GPIO_EMC_B2_08_SEMC_DM02				0x0D8 0x31C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_08_GPT3_COMPARE1			0x0D8 0x31C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_08_SAI2_TX_DATA			0x0D8 0x31C 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_08_VIDEO_MUX_CSI_DATA17		0x0D8 0x31C 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_08_FLEXSPI2_B_SS0_B			0x0D8 0x31C 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_08_GPIO_MUX2_IO18			0x0D8 0x31C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_08_XBAR1_INOUT28			0x0D8 0x31C 0x6F8 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_08_ENET_1G_RX_DATA02			0x0D8 0x31C 0x4D8 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_08_LPSPI3_PCS1			0x0D8 0x31C 0x5F4 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_08_PIT1_TRIGGER3			0x0D8 0x31C 0x0 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_08_GPIO8_IO18			0x0D8 0x31C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_09_GPIO8_IO19			0x0DC 0x320 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_09_SEMC_DATA24			0x0DC 0x320 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_09_GPT3_COMPARE2			0x0DC 0x320 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_09_SAI2_TX_BCLK			0x0DC 0x320 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_09_VIDEO_MUX_CSI_DATA16		0x0DC 0x320 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_09_FLEXSPI2_B_SCLK			0x0DC 0x320 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_09_GPIO_MUX2_IO19			0x0DC 0x320 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_09_XBAR1_INOUT29			0x0DC 0x320 0x6FC 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_09_ENET_1G_CRS			0x0DC 0x320 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_09_LPSPI3_PCS2			0x0DC 0x320 0x5F8 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_09_TMR1_TIMER0			0x0DC 0x320 0x63C 0x9 0x1
-
-#define IOMUXC_GPIO_EMC_B2_10_GPIO8_IO20			0x0E0 0x324 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_10_SEMC_DATA25			0x0E0 0x324 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_10_GPT3_COMPARE3			0x0E0 0x324 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_10_SAI2_TX_SYNC			0x0E0 0x324 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_10_VIDEO_MUX_CSI_FIELD		0x0E0 0x324 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_10_FLEXSPI2_A_SCLK			0x0E0 0x324 0x58C 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_10_GPIO_MUX2_IO20			0x0E0 0x324 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_10_XBAR1_INOUT30			0x0E0 0x324 0x700 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_10_ENET_1G_COL			0x0E0 0x324 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_10_LPSPI3_PCS3			0x0E0 0x324 0x5FC 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_10_TMR1_TIMER1			0x0E0 0x324 0x640 0x9 0x1
-
-#define IOMUXC_GPIO_EMC_B2_11_SEMC_DATA26			0x0E4 0x328 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_11_SPDIF_IN				0x0E4 0x328 0x6B4 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_11_ENET_1G_TX_DATA00			0x0E4 0x328 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_11_SAI3_RX_SYNC			0x0E4 0x328 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_11_FLEXSPI2_A_SS0_B			0x0E4 0x328 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_11_GPIO_MUX2_IO21			0x0E4 0x328 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_11_XBAR1_INOUT31			0x0E4 0x328 0x704 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_11_EMVSIM1_IO			0x0E4 0x328 0x69C 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_11_TMR1_TIMER2			0x0E4 0x328 0x644 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_11_GPIO8_IO21			0x0E4 0x328 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_12_SEMC_DATA27			0x0E8 0x32C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_12_SPDIF_OUT				0x0E8 0x32C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_12_ENET_1G_TX_DATA01			0x0E8 0x32C 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_12_SAI3_RX_BCLK			0x0E8 0x32C 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_12_FLEXSPI2_A_DQS			0x0E8 0x32C 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_12_GPIO_MUX2_IO22			0x0E8 0x32C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_12_XBAR1_INOUT32			0x0E8 0x32C 0x708 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_12_EMVSIM1_CLK			0x0E8 0x32C 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_12_TMR1_TIMER3			0x0E8 0x32C 0x0 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_12_GPIO8_IO22			0x0E8 0x32C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_13_GPIO8_IO23			0x0EC 0x330 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_13_SEMC_DATA28			0x0EC 0x330 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_13_ENET_1G_TX_EN			0x0EC 0x330 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_13_SAI3_RX_DATA			0x0EC 0x330 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_13_FLEXSPI2_A_DATA00			0x0EC 0x330 0x57C 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_13_GPIO_MUX2_IO23			0x0EC 0x330 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_13_XBAR1_INOUT33			0x0EC 0x330 0x70C 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_13_EMVSIM1_RST			0x0EC 0x330 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_13_TMR2_TIMER0			0x0EC 0x330 0x648 0x9 0x1
-
-#define IOMUXC_GPIO_EMC_B2_14_SEMC_DATA29			0x0F0 0x334 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_14_ENET_1G_TX_CLK_IO			0x0F0 0x334 0x4E8 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_14_SAI3_TX_DATA			0x0F0 0x334 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_14_FLEXSPI2_A_DATA01			0x0F0 0x334 0x580 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_14_GPIO_MUX2_IO24			0x0F0 0x334 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_14_XBAR1_INOUT34			0x0F0 0x334 0x710 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_14_SFA_ipp_do_atx_clk_under_test	0x0F0 0x334 0x0 0x7 0x0
-#define IOMUXC_GPIO_EMC_B2_14_EMVSIM1_SVEN			0x0F0 0x334 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_14_TMR2_TIMER1			0x0F0 0x334 0x64C 0x9 0x1
-#define IOMUXC_GPIO_EMC_B2_14_GPIO8_IO24			0x0F0 0x334 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_15_SEMC_DATA30			0x0F4 0x338 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_15_ENET_1G_RX_DATA00			0x0F4 0x338 0x4D0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_15_SAI3_TX_BCLK			0x0F4 0x338 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_15_FLEXSPI2_A_DATA02			0x0F4 0x338 0x584 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_15_GPIO_MUX2_IO25			0x0F4 0x338 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_15_XBAR1_INOUT35			0x0F4 0x338 0x714 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_15_EMVSIM1_PD			0x0F4 0x338 0x6A0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_15_TMR2_TIMER2			0x0F4 0x338 0x650 0x9 0x0
-#define IOMUXC_GPIO_EMC_B2_15_GPIO8_IO25			0x0F4 0x338 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_16_GPIO8_IO26			0x0F8 0x33C 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_16_SEMC_DATA31			0x0F8 0x33C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_16_XBAR1_INOUT14			0x0F8 0x33C 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_16_ENET_1G_RX_DATA01			0x0F8 0x33C 0x4D4 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_16_SAI3_TX_SYNC			0x0F8 0x33C 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_16_FLEXSPI2_A_DATA03			0x0F8 0x33C 0x588 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_16_GPIO_MUX2_IO26			0x0F8 0x33C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_16_EMVSIM1_POWER_FAIL		0x0F8 0x33C 0x6A4 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_16_TMR2_TIMER3			0x0F8 0x33C 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_EMC_B2_17_SEMC_DM03				0x0FC 0x340 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_17_XBAR1_INOUT15			0x0FC 0x340 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_17_ENET_1G_RX_EN			0x0FC 0x340 0x4E0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_17_SAI3_MCLK				0x0FC 0x340 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_17_FLEXSPI2_A_DATA04			0x0FC 0x340 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_17_GPIO_MUX2_IO27			0x0FC 0x340 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_17_WDOG1_ANY				0x0FC 0x340 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_17_TMR3_TIMER0			0x0FC 0x340 0x654 0x9 0x1
-#define IOMUXC_GPIO_EMC_B2_17_GPIO8_IO27			0x0FC 0x340 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_18_SEMC_DQS4				0x100 0x344 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_18_XBAR1_INOUT16			0x100 0x344 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_18_ENET_1G_RX_ER			0x100 0x344 0x4E4 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_18_EWM_OUT_B				0x100 0x344 0x0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_18_FLEXSPI2_A_DATA05			0x100 0x344 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_18_GPIO_MUX2_IO28			0x100 0x344 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_18_FLEXSPI1_A_DQS			0x100 0x344 0x550 0x6 0x0
-#define IOMUXC_GPIO_EMC_B2_18_WDOG1_B				0x100 0x344 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_18_TMR3_TIMER1			0x100 0x344 0x658 0x9 0x1
-#define IOMUXC_GPIO_EMC_B2_18_GPIO8_IO28			0x100 0x344 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_EMC_B2_19_GPIO8_IO29			0x104 0x348 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_19_SEMC_CLKX00			0x104 0x348 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_19_ENET_MDC				0x104 0x348 0x0 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_19_ENET_1G_MDC			0x104 0x348 0x0 0x2 0x0
-#define IOMUXC_GPIO_EMC_B2_19_ENET_1G_REF_CLK			0x104 0x348 0x4C4 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_19_FLEXSPI2_A_DATA06			0x104 0x348 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_19_GPIO_MUX2_IO29			0x104 0x348 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_19_ENET_QOS_MDC			0x104 0x348 0x0 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_19_TMR3_TIMER2			0x104 0x348 0x65C 0x9 0x0
-
-#define IOMUXC_GPIO_EMC_B2_20_GPIO8_IO30			0x108 0x34C 0x0 0xA 0x0
-#define IOMUXC_GPIO_EMC_B2_20_SEMC_CLKX01			0x108 0x34C 0x0 0x0 0x0
-#define IOMUXC_GPIO_EMC_B2_20_ENET_MDIO				0x108 0x34C 0x4AC 0x1 0x0
-#define IOMUXC_GPIO_EMC_B2_20_ENET_1G_MDIO			0x108 0x34C 0x4C8 0x2 0x1
-#define IOMUXC_GPIO_EMC_B2_20_ENET_QOS_REF_CLK			0x108 0x34C 0x4A0 0x3 0x0
-#define IOMUXC_GPIO_EMC_B2_20_FLEXSPI2_A_DATA07			0x108 0x34C 0x0 0x4 0x0
-#define IOMUXC_GPIO_EMC_B2_20_GPIO_MUX2_IO30			0x108 0x34C 0x0 0x5 0x0
-#define IOMUXC_GPIO_EMC_B2_20_ENET_QOS_MDIO			0x108 0x34C 0x4EC 0x8 0x0
-#define IOMUXC_GPIO_EMC_B2_20_TMR3_TIMER3			0x108 0x34C 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_00_GPIO8_IO31				0x10C 0x350 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_00_EMVSIM1_IO				0x10C 0x350 0x69C 0x0 0x1
-#define IOMUXC_GPIO_AD_00_FLEXCAN2_TX				0x10C 0x350 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_00_ENET_1G_1588_EVENT1_IN		0x10C 0x350 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_00_GPT2_CAPTURE1				0x10C 0x350 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_00_FLEXPWM1_PWM0_A			0x10C 0x350 0x500 0x4 0x1
-#define IOMUXC_GPIO_AD_00_GPIO_MUX2_IO31			0x10C 0x350 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_00_LPUART7_TXD				0x10C 0x350 0x630 0x6 0x0
-#define IOMUXC_GPIO_AD_00_FLEXIO2_D00				0x10C 0x350 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_00_FLEXSPI2_B_SS1_B			0x10C 0x350 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_01_GPIO9_IO00				0x110 0x354 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_01_EMVSIM1_CLK				0x110 0x354 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_01_FLEXCAN2_RX				0x110 0x354 0x49C 0x1 0x0
-#define IOMUXC_GPIO_AD_01_ENET_1G_1588_EVENT1_OUT		0x110 0x354 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_01_GPT2_CAPTURE2				0x110 0x354 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_01_FLEXPWM1_PWM0_B			0x110 0x354 0x50C 0x4 0x1
-#define IOMUXC_GPIO_AD_01_GPIO_MUX3_IO00			0x110 0x354 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_01_LPUART7_RXD				0x110 0x354 0x62C 0x6 0x0
-#define IOMUXC_GPIO_AD_01_FLEXIO2_D01				0x110 0x354 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_01_FLEXSPI2_A_SS1_B			0x110 0x354 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_02_GPIO9_IO01				0x114 0x358 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_02_EMVSIM1_RST				0x114 0x358 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_02_LPUART7_CTS_B				0x114 0x358 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_02_ENET_1G_1588_EVENT2_IN		0x114 0x358 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_02_GPT2_COMPARE1				0x114 0x358 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_02_FLEXPWM1_PWM1_A			0x114 0x358 0x504 0x4 0x1
-#define IOMUXC_GPIO_AD_02_GPIO_MUX3_IO01			0x114 0x358 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_02_LPUART8_TXD				0x114 0x358 0x638 0x6 0x0
-#define IOMUXC_GPIO_AD_02_FLEXIO2_D02				0x114 0x358 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_02_VIDEO_MUX_EXT_DCIC1			0x114 0x358 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_03_GPIO9_IO02				0x118 0x35C 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_03_EMVSIM1_SVEN				0x118 0x35C 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_03_LPUART7_RTS_B				0x118 0x35C 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_03_ENET_1G_1588_EVENT2_OUT		0x118 0x35C 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_03_GPT2_COMPARE2				0x118 0x35C 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_03_FLEXPWM1_PWM1_B			0x118 0x35C 0x510 0x4 0x1
-#define IOMUXC_GPIO_AD_03_GPIO_MUX3_IO02			0x118 0x35C 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_03_LPUART8_RXD				0x118 0x35C 0x634 0x6 0x0
-#define IOMUXC_GPIO_AD_03_FLEXIO2_D03				0x118 0x35C 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_03_VIDEO_MUX_EXT_DCIC2			0x118 0x35C 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_04_EMVSIM1_PD				0x11C 0x360 0x6A0 0x0 0x1
-#define IOMUXC_GPIO_AD_04_LPUART8_CTS_B				0x11C 0x360 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_04_ENET_1G_1588_EVENT3_IN		0x11C 0x360 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_04_GPT2_COMPARE3				0x11C 0x360 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_04_FLEXPWM1_PWM2_A			0x11C 0x360 0x508 0x4 0x1
-#define IOMUXC_GPIO_AD_04_GPIO_MUX3_IO03			0x11C 0x360 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_04_WDOG1_B				0x11C 0x360 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_04_FLEXIO2_D04				0x11C 0x360 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_04_TMR4_TIMER0				0x11C 0x360 0x660 0x9 0x1
-#define IOMUXC_GPIO_AD_04_GPIO9_IO03				0x11C 0x360 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_05_EMVSIM1_POWER_FAIL			0x120 0x364 0x6A4 0x0 0x1
-#define IOMUXC_GPIO_AD_05_LPUART8_RTS_B				0x120 0x364 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_05_ENET_1G_1588_EVENT3_OUT		0x120 0x364 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_05_GPT2_CLK				0x120 0x364 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_05_FLEXPWM1_PWM2_B			0x120 0x364 0x514 0x4 0x1
-#define IOMUXC_GPIO_AD_05_GPIO_MUX3_IO04			0x120 0x364 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_05_WDOG2_B				0x120 0x364 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_05_FLEXIO2_D05				0x120 0x364 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_05_TMR4_TIMER1				0x120 0x364 0x664 0x9 0x1
-#define IOMUXC_GPIO_AD_05_GPIO9_IO04				0x120 0x364 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_06_USB_OTG2_OC				0x124 0x368 0x6B8 0x0 0x0
-#define IOMUXC_GPIO_AD_06_FLEXCAN1_TX				0x124 0x368 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_06_EMVSIM2_IO				0x124 0x368 0x6A8 0x2 0x0
-#define IOMUXC_GPIO_AD_06_GPT3_CAPTURE1				0x124 0x368 0x590 0x3 0x1
-#define IOMUXC_GPIO_AD_06_VIDEO_MUX_CSI_DATA15			0x124 0x368 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_06_GPIO_MUX3_IO05			0x124 0x368 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_06_ENET_1588_EVENT1_IN			0x124 0x368 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_06_FLEXIO2_D06				0x124 0x368 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_06_TMR4_TIMER2				0x124 0x368 0x668 0x9 0x0
-#define IOMUXC_GPIO_AD_06_GPIO9_IO05				0x124 0x368 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_06_FLEXPWM1_PWM0_X			0x124 0x368 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_07_USB_OTG2_PWR				0x128 0x36C 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_07_FLEXCAN1_RX				0x128 0x36C 0x498 0x1 0x0
-#define IOMUXC_GPIO_AD_07_EMVSIM2_CLK				0x128 0x36C 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_07_GPT3_CAPTURE2				0x128 0x36C 0x594 0x3 0x1
-#define IOMUXC_GPIO_AD_07_VIDEO_MUX_CSI_DATA14			0x128 0x36C 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_07_GPIO_MUX3_IO06			0x128 0x36C 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_07_ENET_1588_EVENT1_OUT			0x128 0x36C 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_07_FLEXIO2_D07				0x128 0x36C 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_07_TMR4_TIMER3				0x128 0x36C 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_07_GPIO9_IO06				0x128 0x36C 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_07_FLEXPWM1_PWM1_X			0x128 0x36C 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_08_USBPHY2_OTG_ID			0x12C 0x370 0x6C4 0x0 0x0
-#define IOMUXC_GPIO_AD_08_LPI2C1_SCL				0x12C 0x370 0x5AC 0x1 0x0
-#define IOMUXC_GPIO_AD_08_EMVSIM2_RST				0x12C 0x370 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_08_GPT3_COMPARE1				0x12C 0x370 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_08_VIDEO_MUX_CSI_DATA13			0x12C 0x370 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_08_GPIO_MUX3_IO07			0x12C 0x370 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_08_ENET_1588_EVENT2_IN			0x12C 0x370 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_08_FLEXIO2_D08				0x12C 0x370 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_08_GPIO9_IO07				0x12C 0x370 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_08_FLEXPWM1_PWM2_X			0x12C 0x370 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_09_USBPHY1_OTG_ID			0x130 0x374 0x6C0 0x0 0x0
-#define IOMUXC_GPIO_AD_09_LPI2C1_SDA				0x130 0x374 0x5B0 0x1 0x0
-#define IOMUXC_GPIO_AD_09_EMVSIM2_SVEN				0x130 0x374 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_09_GPT3_COMPARE2				0x130 0x374 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_09_VIDEO_MUX_CSI_DATA12			0x130 0x374 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_09_GPIO_MUX3_IO08			0x130 0x374 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_09_ENET_1588_EVENT2_OUT			0x130 0x374 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_09_FLEXIO2_D09				0x130 0x374 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_09_GPIO9_IO08				0x130 0x374 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_09_FLEXPWM1_PWM3_X			0x130 0x374 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_10_USB_OTG1_PWR				0x134 0x378 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_10_LPI2C1_SCLS				0x134 0x378 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_10_EMVSIM2_PD				0x134 0x378 0x6AC 0x2 0x0
-#define IOMUXC_GPIO_AD_10_GPT3_COMPARE3				0x134 0x378 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_10_VIDEO_MUX_CSI_DATA11			0x134 0x378 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_10_GPIO_MUX3_IO09			0x134 0x378 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_10_ENET_1588_EVENT3_IN			0x134 0x378 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_10_FLEXIO2_D10				0x134 0x378 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_10_GPIO9_IO09				0x134 0x378 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_10_FLEXPWM2_PWM0_X			0x134 0x378 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_11_USB_OTG1_OC				0x138 0x37C 0x6BC 0x0 0x0
-#define IOMUXC_GPIO_AD_11_LPI2C1_SDAS				0x138 0x37C 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_11_EMVSIM2_POWER_FAIL			0x138 0x37C 0x6B0 0x2 0x0
-#define IOMUXC_GPIO_AD_11_GPT3_CLK				0x138 0x37C 0x598 0x3 0x1
-#define IOMUXC_GPIO_AD_11_VIDEO_MUX_CSI_DATA10			0x138 0x37C 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_11_GPIO_MUX3_IO10			0x138 0x37C 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_11_ENET_1588_EVENT3_OUT			0x138 0x37C 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_11_FLEXIO2_D11				0x138 0x37C 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_11_GPIO9_IO10				0x138 0x37C 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_11_FLEXPWM2_PWM1_X			0x138 0x37C 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_12_SPDIF_LOCK				0x13C 0x380 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_12_LPI2C1_HREQ				0x13C 0x380 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_12_GPT1_CAPTURE1				0x13C 0x380 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_12_FLEXSPI1_B_DATA03			0x13C 0x380 0x570 0x3 0x0
-#define IOMUXC_GPIO_AD_12_VIDEO_MUX_CSI_PIXCLK			0x13C 0x380 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_12_GPIO_MUX3_IO11			0x13C 0x380 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_12_ENET_TX_DATA03			0x13C 0x380 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_12_FLEXIO2_D12				0x13C 0x380 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_12_EWM_OUT_B				0x13C 0x380 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_12_GPIO9_IO11				0x13C 0x380 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_12_FLEXPWM2_PWM2_X			0x13C 0x380 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_13_SPDIF_SR_CLK				0x140 0x384 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_13_PIT1_TRIGGER0				0x140 0x384 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_13_GPT1_CAPTURE2				0x140 0x384 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_13_FLEXSPI1_B_DATA02			0x140 0x384 0x56C 0x3 0x0
-#define IOMUXC_GPIO_AD_13_VIDEO_MUX_CSI_MCLK			0x140 0x384 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_13_GPIO_MUX3_IO12			0x140 0x384 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_13_ENET_TX_DATA02			0x140 0x384 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_13_FLEXIO2_D13				0x140 0x384 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_13_REF_CLK_32K				0x140 0x384 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_13_GPIO9_IO12				0x140 0x384 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_13_FLEXPWM2_PWM3_X			0x140 0x384 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_14_SPDIF_EXT_CLK				0x144 0x388 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_14_REF_CLK_24M				0x144 0x388 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_14_GPT1_COMPARE1				0x144 0x388 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_14_FLEXSPI1_B_DATA01			0x144 0x388 0x568 0x3 0x0
-#define IOMUXC_GPIO_AD_14_VIDEO_MUX_CSI_VSYNC			0x144 0x388 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_14_GPIO_MUX3_IO13			0x144 0x388 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_14_ENET_RX_CLK				0x144 0x388 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_14_FLEXIO2_D14				0x144 0x388 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_14_CCM_ENET_REF_CLK_25M			0x144 0x388 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_14_GPIO9_IO13				0x144 0x388 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_14_FLEXPWM3_PWM0_X			0x144 0x388 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_15_GPIO9_IO14				0x148 0x38C 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_15_FLEXPWM3_PWM1_X			0x148 0x38C 0x0 0xB 0x0
-#define IOMUXC_GPIO_AD_15_SPDIF_IN				0x148 0x38C 0x6B4 0x0 0x1
-#define IOMUXC_GPIO_AD_15_LPUART10_TXD				0x148 0x38C 0x628 0x1 0x0
-#define IOMUXC_GPIO_AD_15_GPT1_COMPARE2				0x148 0x38C 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_15_FLEXSPI1_B_DATA00			0x148 0x38C 0x564 0x3 0x0
-#define IOMUXC_GPIO_AD_15_VIDEO_MUX_CSI_HSYNC			0x148 0x38C 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_15_GPIO_MUX3_IO14			0x148 0x38C 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_15_ENET_TX_ER				0x148 0x38C 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_15_FLEXIO2_D15				0x148 0x38C 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_AD_16_SPDIF_OUT				0x14C 0x390 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_16_LPUART10_RXD				0x14C 0x390 0x624 0x1 0x0
-#define IOMUXC_GPIO_AD_16_GPT1_COMPARE3				0x14C 0x390 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_16_FLEXSPI1_B_SCLK			0x14C 0x390 0x578 0x3 0x0
-#define IOMUXC_GPIO_AD_16_VIDEO_MUX_CSI_DATA09			0x14C 0x390 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_16_GPIO_MUX3_IO15			0x14C 0x390 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_16_ENET_RX_DATA03			0x14C 0x390 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_16_FLEXIO2_D16				0x14C 0x390 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_16_ENET_1G_MDC				0x14C 0x390 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_16_GPIO9_IO15				0x14C 0x390 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_16_FLEXPWM3_PWM2_X			0x14C 0x390 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_17_SAI1_MCLK				0x150 0x394 0x66C 0x0 0x0
-#define IOMUXC_GPIO_AD_17_ACMP1_OUT				0x150 0x394 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_17_GPT1_CLK				0x150 0x394 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_17_FLEXSPI1_A_DQS			0x150 0x394 0x550 0x3 0x1
-#define IOMUXC_GPIO_AD_17_VIDEO_MUX_CSI_DATA08			0x150 0x394 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_17_GPIO_MUX3_IO16			0x150 0x394 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_17_ENET_RX_DATA02			0x150 0x394 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_17_FLEXIO2_D17				0x150 0x394 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_17_ENET_1G_MDIO				0x150 0x394 0x4C8 0x9 0x2
-#define IOMUXC_GPIO_AD_17_GPIO9_IO16				0x150 0x394 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_17_FLEXPWM3_PWM3_X			0x150 0x394 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_18_GPIO9_IO17				0x154 0x398 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_18_FLEXPWM4_PWM0_X			0x154 0x398 0x0 0xB 0x0
-#define IOMUXC_GPIO_AD_18_SAI1_RX_SYNC				0x154 0x398 0x678 0x0 0x0
-#define IOMUXC_GPIO_AD_18_ACMP2_OUT				0x154 0x398 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_18_LPSPI1_PCS1				0x154 0x398 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_18_FLEXSPI1_A_SS0_B			0x154 0x398 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_18_VIDEO_MUX_CSI_DATA07			0x154 0x398 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_18_GPIO_MUX3_IO17			0x154 0x398 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_18_ENET_CRS				0x154 0x398 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_18_FLEXIO2_D18				0x154 0x398 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_18_LPI2C2_SCL				0x154 0x398 0x5B4 0x9 0x1
-
-#define IOMUXC_GPIO_AD_19_SAI1_RX_BCLK				0x158 0x39C 0x670 0x0 0x0
-#define IOMUXC_GPIO_AD_19_ACMP3_OUT				0x158 0x39C 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_19_LPSPI1_PCS2				0x158 0x39C 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_19_FLEXSPI1_A_SCLK			0x158 0x39C 0x574 0x3 0x0
-#define IOMUXC_GPIO_AD_19_VIDEO_MUX_CSI_DATA06			0x158 0x39C 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_19_GPIO_MUX3_IO18			0x158 0x39C 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_19_ENET_COL				0x158 0x39C 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_19_FLEXIO2_D19				0x158 0x39C 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_19_LPI2C2_SDA				0x158 0x39C 0x5B8 0x9 0x1
-#define IOMUXC_GPIO_AD_19_GPIO9_IO18				0x158 0x39C 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_19_FLEXPWM4_PWM1_X			0x158 0x39C 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_20_SAI1_RX_DATA00			0x15C 0x3A0 0x674 0x0 0x0
-#define IOMUXC_GPIO_AD_20_ACMP4_OUT				0x15C 0x3A0 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_20_LPSPI1_PCS3				0x15C 0x3A0 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_20_FLEXSPI1_A_DATA00			0x15C 0x3A0 0x554 0x3 0x0
-#define IOMUXC_GPIO_AD_20_VIDEO_MUX_CSI_DATA05			0x15C 0x3A0 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_20_GPIO_MUX3_IO19			0x15C 0x3A0 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_20_KPP_ROW07				0x15C 0x3A0 0x5A8 0x6 0x0
-#define IOMUXC_GPIO_AD_20_FLEXIO2_D20				0x15C 0x3A0 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_20_ENET_QOS_1588_EVENT2_OUT		0x15C 0x3A0 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_20_GPIO9_IO19				0x15C 0x3A0 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_20_FLEXPWM4_PWM2_X			0x15C 0x3A0 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_21_SAI1_TX_DATA00			0x160 0x3A4 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_21_LPSPI2_PCS1				0x160 0x3A4 0x5E0 0x2 0x0
-#define IOMUXC_GPIO_AD_21_FLEXSPI1_A_DATA01			0x160 0x3A4 0x558 0x3 0x0
-#define IOMUXC_GPIO_AD_21_VIDEO_MUX_CSI_DATA04			0x160 0x3A4 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_21_GPIO_MUX3_IO20			0x160 0x3A4 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_21_KPP_COL07				0x160 0x3A4 0x5A0 0x6 0x0
-#define IOMUXC_GPIO_AD_21_FLEXIO2_D21				0x160 0x3A4 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_21_ENET_QOS_1588_EVENT2_IN		0x160 0x3A4 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_21_GPIO9_IO20				0x160 0x3A4 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_21_FLEXPWM4_PWM3_X			0x160 0x3A4 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_22_GPIO9_IO21				0x164 0x3A8 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_22_SAI1_TX_BCLK				0x164 0x3A8 0x67C 0x0 0x0
-#define IOMUXC_GPIO_AD_22_LPSPI2_PCS2				0x164 0x3A8 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_22_FLEXSPI1_A_DATA02			0x164 0x3A8 0x55C 0x3 0x0
-#define IOMUXC_GPIO_AD_22_VIDEO_MUX_CSI_DATA03			0x164 0x3A8 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_22_GPIO_MUX3_IO21			0x164 0x3A8 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_22_KPP_ROW06				0x164 0x3A8 0x5A4 0x6 0x0
-#define IOMUXC_GPIO_AD_22_FLEXIO2_D22				0x164 0x3A8 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_22_ENET_QOS_1588_EVENT3_OUT		0x164 0x3A8 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_23_SAI1_TX_SYNC				0x168 0x3AC 0x680 0x0 0x0
-#define IOMUXC_GPIO_AD_23_LPSPI2_PCS3				0x168 0x3AC 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_23_FLEXSPI1_A_DATA03			0x168 0x3AC 0x560 0x3 0x0
-#define IOMUXC_GPIO_AD_23_VIDEO_MUX_CSI_DATA02			0x168 0x3AC 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_23_GPIO_MUX3_IO22			0x168 0x3AC 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_23_KPP_COL06				0x168 0x3AC 0x59C 0x6 0x0
-#define IOMUXC_GPIO_AD_23_FLEXIO2_D23				0x168 0x3AC 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_23_ENET_QOS_1588_EVENT3_IN		0x168 0x3AC 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_23_GPIO9_IO22				0x168 0x3AC 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_24_LPUART1_TXD				0x16C 0x3B0 0x620 0x0 0x0
-#define IOMUXC_GPIO_AD_24_LPSPI2_SCK				0x16C 0x3B0 0x5E4 0x1 0x0
-#define IOMUXC_GPIO_AD_24_VIDEO_MUX_CSI_DATA00			0x16C 0x3B0 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_24_ENET_RX_EN				0x16C 0x3B0 0x4B8 0x3 0x0
-#define IOMUXC_GPIO_AD_24_FLEXPWM2_PWM0_A			0x16C 0x3B0 0x518 0x4 0x1
-#define IOMUXC_GPIO_AD_24_GPIO_MUX3_IO23			0x16C 0x3B0 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_24_KPP_ROW05				0x16C 0x3B0 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_24_FLEXIO2_D24				0x16C 0x3B0 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_24_LPI2C4_SCL				0x16C 0x3B0 0x5C4 0x9 0x0
-#define IOMUXC_GPIO_AD_24_GPIO9_IO23				0x16C 0x3B0 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_25_GPIO9_IO24				0x170 0x3B4 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_25_LPUART1_RXD				0x170 0x3B4 0x61C 0x0 0x0
-#define IOMUXC_GPIO_AD_25_LPSPI2_PCS0				0x170 0x3B4 0x5DC 0x1 0x0
-#define IOMUXC_GPIO_AD_25_VIDEO_MUX_CSI_DATA01			0x170 0x3B4 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_25_ENET_RX_ER				0x170 0x3B4 0x4BC 0x3 0x0
-#define IOMUXC_GPIO_AD_25_FLEXPWM2_PWM0_B			0x170 0x3B4 0x524 0x4 0x1
-#define IOMUXC_GPIO_AD_25_GPIO_MUX3_IO24			0x170 0x3B4 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_25_KPP_COL05				0x170 0x3B4 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_25_FLEXIO2_D25				0x170 0x3B4 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_25_LPI2C4_SDA				0x170 0x3B4 0x5C8 0x9 0x0
-
-#define IOMUXC_GPIO_AD_26_LPUART1_CTS_B				0x174 0x3B8 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_26_LPSPI2_SOUT				0x174 0x3B8 0x5EC 0x1 0x0
-#define IOMUXC_GPIO_AD_26_SEMC_CSX01				0x174 0x3B8 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_26_ENET_RX_DATA00			0x174 0x3B8 0x4B0 0x3 0x0
-#define IOMUXC_GPIO_AD_26_FLEXPWM2_PWM1_A			0x174 0x3B8 0x51C 0x4 0x1
-#define IOMUXC_GPIO_AD_26_GPIO_MUX3_IO25			0x174 0x3B8 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_26_KPP_ROW04				0x174 0x3B8 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_26_FLEXIO2_D26				0x174 0x3B8 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_26_ENET_QOS_MDC				0x174 0x3B8 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_26_GPIO9_IO25				0x174 0x3B8 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_26_USDHC2_CD_B				0x174 0x3B8 0x6D0 0xB 0x1
-
-#define IOMUXC_GPIO_AD_27_LPUART1_RTS_B				0x178 0x3BC 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_27_LPSPI2_SIN				0x178 0x3BC 0x5E8 0x1 0x0
-#define IOMUXC_GPIO_AD_27_SEMC_CSX02				0x178 0x3BC 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_27_ENET_RX_DATA01			0x178 0x3BC 0x4B4 0x3 0x0
-#define IOMUXC_GPIO_AD_27_FLEXPWM2_PWM1_B			0x178 0x3BC 0x528 0x4 0x1
-#define IOMUXC_GPIO_AD_27_GPIO_MUX3_IO26			0x178 0x3BC 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_27_KPP_COL04				0x178 0x3BC 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_27_FLEXIO2_D27				0x178 0x3BC 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_27_ENET_QOS_MDIO				0x178 0x3BC 0x4EC 0x9 0x1
-#define IOMUXC_GPIO_AD_27_GPIO9_IO26				0x178 0x3BC 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_27_USDHC2_WP				0x178 0x3BC 0x6D4 0xB 0x1
-
-#define IOMUXC_GPIO_AD_28_GPIO9_IO27				0x17C 0x3C0 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_28_USDHC2_VSELECT			0x17C 0x3C0 0x0 0xB 0x0
-#define IOMUXC_GPIO_AD_28_LPSPI1_SCK				0x17C 0x3C0 0x5D0 0x0 0x1
-#define IOMUXC_GPIO_AD_28_LPUART5_TXD				0x17C 0x3C0 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_28_SEMC_CSX03				0x17C 0x3C0 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_28_ENET_TX_EN				0x17C 0x3C0 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_28_FLEXPWM2_PWM2_A			0x17C 0x3C0 0x520 0x4 0x1
-#define IOMUXC_GPIO_AD_28_GPIO_MUX3_IO27			0x17C 0x3C0 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_28_KPP_ROW03				0x17C 0x3C0 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_28_FLEXIO2_D28				0x17C 0x3C0 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_28_VIDEO_MUX_EXT_DCIC1			0x17C 0x3C0 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_29_LPSPI1_PCS0				0x180 0x3C4 0x5CC 0x0 0x1
-#define IOMUXC_GPIO_AD_29_LPUART5_RXD				0x180 0x3C4 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_29_ENET_REF_CLK				0x180 0x3C4 0x4A8 0x2 0x0
-#define IOMUXC_GPIO_AD_29_ENET_TX_CLK				0x180 0x3C4 0x4C0 0x3 0x0
-#define IOMUXC_GPIO_AD_29_FLEXPWM2_PWM2_B			0x180 0x3C4 0x52C 0x4 0x1
-#define IOMUXC_GPIO_AD_29_GPIO_MUX3_IO28			0x180 0x3C4 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_29_KPP_COL03				0x180 0x3C4 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_29_FLEXIO2_D29				0x180 0x3C4 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_29_VIDEO_MUX_EXT_DCIC2			0x180 0x3C4 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_29_GPIO9_IO28				0x180 0x3C4 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_29_USDHC2_RESET_B			0x180 0x3C4 0x0 0xB 0x0
-
-#define IOMUXC_GPIO_AD_30_LPSPI1_SOUT				0x184 0x3C8 0x5D8 0x0 0x1
-#define IOMUXC_GPIO_AD_30_USB_OTG2_OC				0x184 0x3C8 0x6B8 0x1 0x1
-#define IOMUXC_GPIO_AD_30_FLEXCAN2_TX				0x184 0x3C8 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_30_ENET_TX_DATA00			0x184 0x3C8 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_30_LPUART3_TXD				0x184 0x3C8 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_30_GPIO_MUX3_IO29			0x184 0x3C8 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_30_KPP_ROW02				0x184 0x3C8 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_30_FLEXIO2_D30				0x184 0x3C8 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_30_WDOG2_RESET_B_DEB			0x184 0x3C8 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_30_GPIO9_IO29				0x184 0x3C8 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_31_LPSPI1_SIN				0x188 0x3CC 0x5D4 0x0 0x1
-#define IOMUXC_GPIO_AD_31_USB_OTG2_PWR				0x188 0x3CC 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_31_FLEXCAN2_RX				0x188 0x3CC 0x49C 0x2 0x1
-#define IOMUXC_GPIO_AD_31_ENET_TX_DATA01			0x188 0x3CC 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_31_LPUART3_RXD				0x188 0x3CC 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_31_GPIO_MUX3_IO30			0x188 0x3CC 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_31_KPP_COL02				0x188 0x3CC 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_31_FLEXIO2_D31				0x188 0x3CC 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_31_WDOG1_RESET_B_DEB			0x188 0x3CC 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_31_GPIO9_IO30				0x188 0x3CC 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_32_GPIO9_IO31				0x18C 0x3D0 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_32_LPI2C1_SCL				0x18C 0x3D0 0x5AC 0x0 0x1
-#define IOMUXC_GPIO_AD_32_USBPHY2_OTG_ID			0x18C 0x3D0 0x6C4 0x1 0x1
-#define IOMUXC_GPIO_AD_32_PGMC_PMIC_RDY				0x18C 0x3D0 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_32_ENET_MDC				0x18C 0x3D0 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_32_USDHC1_CD_B				0x18C 0x3D0 0x6C8 0x4 0x0
-#define IOMUXC_GPIO_AD_32_GPIO_MUX3_IO31			0x18C 0x3D0 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_32_KPP_ROW01				0x18C 0x3D0 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_32_LPUART10_TXD				0x18C 0x3D0 0x628 0x8 0x1
-#define IOMUXC_GPIO_AD_32_ENET_1G_MDC				0x18C 0x3D0 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_AD_33_LPI2C1_SDA				0x190 0x3D4 0x5B0 0x0 0x1
-#define IOMUXC_GPIO_AD_33_USBPHY1_OTG_ID			0x190 0x3D4 0x6C0 0x1 0x1
-#define IOMUXC_GPIO_AD_33_XBAR1_INOUT17				0x190 0x3D4 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_33_ENET_MDIO				0x190 0x3D4 0x4AC 0x3 0x1
-#define IOMUXC_GPIO_AD_33_USDHC1_WP				0x190 0x3D4 0x6CC 0x4 0x0
-#define IOMUXC_GPIO_AD_33_GPIO_MUX4_IO00			0x190 0x3D4 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_33_KPP_COL01				0x190 0x3D4 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_33_LPUART10_RXD				0x190 0x3D4 0x624 0x8 0x1
-#define IOMUXC_GPIO_AD_33_ENET_1G_MDIO				0x190 0x3D4 0x4C8 0x9 0x3
-#define IOMUXC_GPIO_AD_33_GPIO10_IO00				0x190 0x3D4 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_34_ENET_1G_1588_EVENT0_IN		0x194 0x3D8 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_34_USB_OTG1_PWR				0x194 0x3D8 0x0 0x1 0x0
-#define IOMUXC_GPIO_AD_34_XBAR1_INOUT18				0x194 0x3D8 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_34_ENET_1588_EVENT0_IN			0x194 0x3D8 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_34_USDHC1_VSELECT			0x194 0x3D8 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_34_GPIO_MUX4_IO01			0x194 0x3D8 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_34_KPP_ROW00				0x194 0x3D8 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_34_LPUART10_CTS_B			0x194 0x3D8 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_34_WDOG1_ANY				0x194 0x3D8 0x0 0x9 0x0
-#define IOMUXC_GPIO_AD_34_GPIO10_IO01				0x194 0x3D8 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_AD_35_GPIO10_IO02				0x198 0x3DC 0x0 0xA 0x0
-#define IOMUXC_GPIO_AD_35_ENET_1G_1588_EVENT0_OUT		0x198 0x3DC 0x0 0x0 0x0
-#define IOMUXC_GPIO_AD_35_USB_OTG1_OC				0x198 0x3DC 0x6BC 0x1 0x1
-#define IOMUXC_GPIO_AD_35_XBAR1_INOUT19				0x198 0x3DC 0x0 0x2 0x0
-#define IOMUXC_GPIO_AD_35_ENET_1588_EVENT0_OUT			0x198 0x3DC 0x0 0x3 0x0
-#define IOMUXC_GPIO_AD_35_USDHC1_RESET_B			0x198 0x3DC 0x0 0x4 0x0
-#define IOMUXC_GPIO_AD_35_GPIO_MUX4_IO02			0x198 0x3DC 0x0 0x5 0x0
-#define IOMUXC_GPIO_AD_35_KPP_COL00				0x198 0x3DC 0x0 0x6 0x0
-#define IOMUXC_GPIO_AD_35_LPUART10_RTS_B			0x198 0x3DC 0x0 0x8 0x0
-#define IOMUXC_GPIO_AD_35_FLEXSPI1_B_SS1_B			0x198 0x3DC 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_SD_B1_00_USDHC1_CMD				0x19C 0x3E0 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B1_00_XBAR1_INOUT20			0x19C 0x3E0 0x6D8 0x2 0x1
-#define IOMUXC_GPIO_SD_B1_00_GPT4_CAPTURE1			0x19C 0x3E0 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B1_00_GPIO_MUX4_IO03			0x19C 0x3E0 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B1_00_FLEXSPI2_A_SS0_B			0x19C 0x3E0 0x0 0x6 0x0
-#define IOMUXC_GPIO_SD_B1_00_KPP_ROW07				0x19C 0x3E0 0x5A8 0x8 0x1
-#define IOMUXC_GPIO_SD_B1_00_GPIO10_IO03			0x19C 0x3E0 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B1_01_USDHC1_CLK				0x1A0 0x3E4 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B1_01_XBAR1_INOUT21			0x1A0 0x3E4 0x6DC 0x2 0x1
-#define IOMUXC_GPIO_SD_B1_01_GPT4_CAPTURE2			0x1A0 0x3E4 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B1_01_GPIO_MUX4_IO04			0x1A0 0x3E4 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B1_01_FLEXSPI2_A_SCLK			0x1A0 0x3E4 0x58C 0x6 0x1
-#define IOMUXC_GPIO_SD_B1_01_KPP_COL07				0x1A0 0x3E4 0x5A0 0x8 0x1
-#define IOMUXC_GPIO_SD_B1_01_GPIO10_IO04			0x1A0 0x3E4 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B1_02_GPIO10_IO05			0x1A4 0x3E8 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B1_02_USDHC1_DATA0			0x1A4 0x3E8 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B1_02_XBAR1_INOUT22			0x1A4 0x3E8 0x6E0 0x2 0x1
-#define IOMUXC_GPIO_SD_B1_02_GPT4_COMPARE1			0x1A4 0x3E8 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B1_02_GPIO_MUX4_IO05			0x1A4 0x3E8 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B1_02_FLEXSPI2_A_DATA00			0x1A4 0x3E8 0x57C 0x6 0x1
-#define IOMUXC_GPIO_SD_B1_02_KPP_ROW06				0x1A4 0x3E8 0x5A4 0x8 0x1
-#define IOMUXC_GPIO_SD_B1_02_FLEXSPI1_A_SS1_B			0x1A4 0x3E8 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_SD_B1_03_USDHC1_DATA1			0x1A8 0x3EC 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B1_03_XBAR1_INOUT23			0x1A8 0x3EC 0x6E4 0x2 0x1
-#define IOMUXC_GPIO_SD_B1_03_GPT4_COMPARE2			0x1A8 0x3EC 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B1_03_GPIO_MUX4_IO06			0x1A8 0x3EC 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B1_03_FLEXSPI2_A_DATA01			0x1A8 0x3EC 0x580 0x6 0x1
-#define IOMUXC_GPIO_SD_B1_03_KPP_COL06				0x1A8 0x3EC 0x59C 0x8 0x1
-#define IOMUXC_GPIO_SD_B1_03_FLEXSPI1_B_SS1_B			0x1A8 0x3EC 0x0 0x9 0x0
-#define IOMUXC_GPIO_SD_B1_03_GPIO10_IO06			0x1A8 0x3EC 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B1_04_USDHC1_DATA2			0x1AC 0x3F0 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B1_04_XBAR1_INOUT24			0x1AC 0x3F0 0x6E8 0x2 0x1
-#define IOMUXC_GPIO_SD_B1_04_GPT4_COMPARE3			0x1AC 0x3F0 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B1_04_GPIO_MUX4_IO07			0x1AC 0x3F0 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B1_04_FLEXSPI2_A_DATA02			0x1AC 0x3F0 0x584 0x6 0x1
-#define IOMUXC_GPIO_SD_B1_04_FLEXSPI1_B_SS0_B			0x1AC 0x3F0 0x0 0x8 0x0
-#define IOMUXC_GPIO_SD_B1_04_ENET_QOS_1588_EVENT2_AUX_IN	0x1AC 0x3F0 0x0 0x9 0x0
-#define IOMUXC_GPIO_SD_B1_04_GPIO10_IO07			0x1AC 0x3F0 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B1_05_GPIO10_IO08			0x1B0 0x3F4 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B1_05_USDHC1_DATA3			0x1B0 0x3F4 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B1_05_XBAR1_INOUT25			0x1B0 0x3F4 0x6EC 0x2 0x1
-#define IOMUXC_GPIO_SD_B1_05_GPT4_CLK				0x1B0 0x3F4 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B1_05_GPIO_MUX4_IO08			0x1B0 0x3F4 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B1_05_FLEXSPI2_A_DATA03			0x1B0 0x3F4 0x588 0x6 0x1
-#define IOMUXC_GPIO_SD_B1_05_FLEXSPI1_B_DQS			0x1B0 0x3F4 0x0 0x8 0x0
-#define IOMUXC_GPIO_SD_B1_05_ENET_QOS_1588_EVENT3_AUX_IN	0x1B0 0x3F4 0x0 0x9 0x0
-
-#define IOMUXC_GPIO_SD_B2_00_GPIO10_IO09			0x1B4 0x3F8 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_00_USDHC2_DATA3			0x1B4 0x3F8 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_00_FLEXSPI1_B_DATA03			0x1B4 0x3F8 0x570 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_00_ENET_1G_RX_EN			0x1B4 0x3F8 0x4E0 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_00_LPUART9_TXD			0x1B4 0x3F8 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_00_LPSPI4_SCK				0x1B4 0x3F8 0x610 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_00_GPIO_MUX4_IO09			0x1B4 0x3F8 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SD_B2_01_USDHC2_DATA2			0x1B8 0x3FC 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_01_FLEXSPI1_B_DATA02			0x1B8 0x3FC 0x56C 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_01_ENET_1G_RX_CLK			0x1B8 0x3FC 0x4CC 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_01_LPUART9_RXD			0x1B8 0x3FC 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_01_LPSPI4_PCS0			0x1B8 0x3FC 0x60C 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_01_GPIO_MUX4_IO10			0x1B8 0x3FC 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_01_GPIO10_IO10			0x1B8 0x3FC 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B2_02_GPIO10_IO11			0x1BC 0x400 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_02_USDHC2_DATA1			0x1BC 0x400 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_02_FLEXSPI1_B_DATA01			0x1BC 0x400 0x568 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_02_ENET_1G_RX_DATA00			0x1BC 0x400 0x4D0 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_02_LPUART9_CTS_B			0x1BC 0x400 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_02_LPSPI4_SOUT			0x1BC 0x400 0x618 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_02_GPIO_MUX4_IO11			0x1BC 0x400 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SD_B2_03_GPIO10_IO12			0x1C0 0x404 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_03_USDHC2_DATA0			0x1C0 0x404 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_03_FLEXSPI1_B_DATA00			0x1C0 0x404 0x564 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_03_ENET_1G_RX_DATA01			0x1C0 0x404 0x4D4 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_03_LPUART9_RTS_B			0x1C0 0x404 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_03_LPSPI4_SIN				0x1C0 0x404 0x614 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_03_GPIO_MUX4_IO12			0x1C0 0x404 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SD_B2_04_USDHC2_CLK				0x1C4 0x408 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_04_FLEXSPI1_B_SCLK			0x1C4 0x408 0x578 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_04_ENET_1G_RX_DATA02			0x1C4 0x408 0x4D8 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_04_FLEXSPI1_A_SS1_B			0x1C4 0x408 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_04_LPSPI4_PCS1			0x1C4 0x408 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_04_GPIO_MUX4_IO13			0x1C4 0x408 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_04_GPIO10_IO13			0x1C4 0x408 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B2_05_GPIO10_IO14			0x1C8 0x40C 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_05_USDHC2_CMD				0x1C8 0x40C 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_05_FLEXSPI1_A_DQS			0x1C8 0x40C 0x550 0x1 0x2
-#define IOMUXC_GPIO_SD_B2_05_ENET_1G_RX_DATA03			0x1C8 0x40C 0x4DC 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_05_FLEXSPI1_B_SS0_B			0x1C8 0x40C 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_05_LPSPI4_PCS2			0x1C8 0x40C 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_05_GPIO_MUX4_IO14			0x1C8 0x40C 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SD_B2_06_GPIO10_IO15			0x1CC 0x410 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_06_USDHC2_RESET_B			0x1CC 0x410 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_06_FLEXSPI1_A_SS0_B			0x1CC 0x410 0x0 0x1 0x0
-#define IOMUXC_GPIO_SD_B2_06_ENET_1G_TX_DATA03			0x1CC 0x410 0x0 0x2 0x0
-#define IOMUXC_GPIO_SD_B2_06_LPSPI4_PCS3			0x1CC 0x410 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_06_GPT6_CAPTURE1			0x1CC 0x410 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_06_GPIO_MUX4_IO15			0x1CC 0x410 0x0 0x5 0x0
-
-#define IOMUXC_GPIO_SD_B2_07_USDHC2_STROBE			0x1D0 0x414 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_07_FLEXSPI1_A_SCLK			0x1D0 0x414 0x574 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_07_ENET_1G_TX_DATA02			0x1D0 0x414 0x0 0x2 0x0
-#define IOMUXC_GPIO_SD_B2_07_LPUART3_CTS_B			0x1D0 0x414 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_07_GPT6_CAPTURE2			0x1D0 0x414 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_07_GPIO_MUX4_IO16			0x1D0 0x414 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_07_LPSPI2_SCK				0x1D0 0x414 0x5E4 0x6 0x1
-#define IOMUXC_GPIO_SD_B2_07_ENET_TX_ER				0x1D0 0x414 0x0 0x8 0x0
-#define IOMUXC_GPIO_SD_B2_07_ENET_QOS_REF_CLK			0x1D0 0x414 0x4A0 0x9 0x1
-#define IOMUXC_GPIO_SD_B2_07_GPIO10_IO16			0x1D0 0x414 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_SD_B2_08_GPIO10_IO17			0x1D4 0x418 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_08_USDHC2_DATA4			0x1D4 0x418 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_08_FLEXSPI1_A_DATA00			0x1D4 0x418 0x554 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_08_ENET_1G_TX_DATA01			0x1D4 0x418 0x0 0x2 0x0
-#define IOMUXC_GPIO_SD_B2_08_LPUART3_RTS_B			0x1D4 0x418 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_08_GPT6_COMPARE1			0x1D4 0x418 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_08_GPIO_MUX4_IO17			0x1D4 0x418 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_08_LPSPI2_PCS0			0x1D4 0x418 0x5DC 0x6 0x1
-
-#define IOMUXC_GPIO_SD_B2_09_GPIO10_IO18			0x1D8 0x41C 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_09_USDHC2_DATA5			0x1D8 0x41C 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_09_FLEXSPI1_A_DATA01			0x1D8 0x41C 0x558 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_09_ENET_1G_TX_DATA00			0x1D8 0x41C 0x0 0x2 0x0
-#define IOMUXC_GPIO_SD_B2_09_LPUART5_CTS_B			0x1D8 0x41C 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_09_GPT6_COMPARE2			0x1D8 0x41C 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_09_GPIO_MUX4_IO18			0x1D8 0x41C 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_09_LPSPI2_SOUT			0x1D8 0x41C 0x5EC 0x6 0x1
-
-#define IOMUXC_GPIO_SD_B2_10_GPIO10_IO19			0x1DC 0x420 0x0 0xA 0x0
-#define IOMUXC_GPIO_SD_B2_10_USDHC2_DATA6			0x1DC 0x420 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_10_FLEXSPI1_A_DATA02			0x1DC 0x420 0x55C 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_10_ENET_1G_TX_EN			0x1DC 0x420 0x0 0x2 0x0
-#define IOMUXC_GPIO_SD_B2_10_LPUART5_RTS_B			0x1DC 0x420 0x0 0x3 0x0
-#define IOMUXC_GPIO_SD_B2_10_GPT6_COMPARE3			0x1DC 0x420 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_10_GPIO_MUX4_IO19			0x1DC 0x420 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_10_LPSPI2_SIN				0x1DC 0x420 0x5E8 0x6 0x1
-
-#define IOMUXC_GPIO_SD_B2_11_USDHC2_DATA7			0x1E0 0x424 0x0 0x0 0x0
-#define IOMUXC_GPIO_SD_B2_11_FLEXSPI1_A_DATA03			0x1E0 0x424 0x560 0x1 0x1
-#define IOMUXC_GPIO_SD_B2_11_ENET_1G_TX_CLK_IO			0x1E0 0x424 0x4E8 0x2 0x1
-#define IOMUXC_GPIO_SD_B2_11_ENET_1G_REF_CLK			0x1E0 0x424 0x4C4 0x3 0x1
-#define IOMUXC_GPIO_SD_B2_11_GPT6_CLK				0x1E0 0x424 0x0 0x4 0x0
-#define IOMUXC_GPIO_SD_B2_11_GPIO_MUX4_IO20			0x1E0 0x424 0x0 0x5 0x0
-#define IOMUXC_GPIO_SD_B2_11_LPSPI2_PCS1			0x1E0 0x424 0x5E0 0x6 0x1
-#define IOMUXC_GPIO_SD_B2_11_GPIO10_IO20			0x1E0 0x424 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_00_VIDEO_MUX_LCDIF_CLK		0x1E4 0x428 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_00_ENET_1G_RX_EN			0x1E4 0x428 0x4E0 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_00_TMR1_TIMER0			0x1E4 0x428 0x63C 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_00_XBAR1_INOUT26			0x1E4 0x428 0x6F0 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_00_GPIO_MUX4_IO21			0x1E4 0x428 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_00_ENET_QOS_RX_EN			0x1E4 0x428 0x4F8 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_00_GPIO10_IO21			0x1E4 0x428 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_01_VIDEO_MUX_LCDIF_ENABLE		0x1E8 0x42C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_01_ENET_1G_RX_CLK			0x1E8 0x42C 0x4CC 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_01_ENET_1G_RX_ER			0x1E8 0x42C 0x4E4 0x2 0x1
-#define IOMUXC_GPIO_DISP_B1_01_TMR1_TIMER1			0x1E8 0x42C 0x640 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_01_XBAR1_INOUT27			0x1E8 0x42C 0x6F4 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_01_GPIO_MUX4_IO22			0x1E8 0x42C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_01_ENET_QOS_RX_CLK			0x1E8 0x42C 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_01_ENET_QOS_RX_ER			0x1E8 0x42C 0x4FC 0x9 0x0
-#define IOMUXC_GPIO_DISP_B1_01_GPIO10_IO22			0x1E8 0x42C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_02_GPIO10_IO23			0x1EC 0x430 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B1_02_VIDEO_MUX_LCDIF_HSYNC		0x1EC 0x430 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_02_ENET_1G_RX_DATA00		0x1EC 0x430 0x4D0 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_02_LPI2C3_SCL			0x1EC 0x430 0x5BC 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_02_TMR1_TIMER2			0x1EC 0x430 0x644 0x3 0x1
-#define IOMUXC_GPIO_DISP_B1_02_XBAR1_INOUT28			0x1EC 0x430 0x6F8 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_02_GPIO_MUX4_IO23			0x1EC 0x430 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_02_ENET_QOS_RX_DATA00		0x1EC 0x430 0x4F0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_02_LPUART1_TXD			0x1EC 0x430 0x620 0x9 0x1
-
-#define IOMUXC_GPIO_DISP_B1_03_VIDEO_MUX_LCDIF_VSYNC		0x1F0 0x434 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_03_ENET_1G_RX_DATA01		0x1F0 0x434 0x4D4 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_03_LPI2C3_SDA			0x1F0 0x434 0x5C0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_03_TMR2_TIMER0			0x1F0 0x434 0x648 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_03_XBAR1_INOUT29			0x1F0 0x434 0x6FC 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_03_GPIO_MUX4_IO24			0x1F0 0x434 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_03_ENET_QOS_RX_DATA01		0x1F0 0x434 0x4F4 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_03_LPUART1_RXD			0x1F0 0x434 0x61C 0x9 0x1
-#define IOMUXC_GPIO_DISP_B1_03_GPIO10_IO24			0x1F0 0x434 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_04_VIDEO_MUX_LCDIF_DATA00		0x1F4 0x438 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_04_ENET_1G_RX_DATA02		0x1F4 0x438 0x4D8 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_04_LPUART4_RXD			0x1F4 0x438 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_04_TMR2_TIMER1			0x1F4 0x438 0x64C 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_04_XBAR1_INOUT30			0x1F4 0x438 0x700 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_04_GPIO_MUX4_IO25			0x1F4 0x438 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_04_ENET_QOS_RX_DATA02		0x1F4 0x438 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_04_LPSPI3_SCK			0x1F4 0x438 0x600 0x9 0x1
-#define IOMUXC_GPIO_DISP_B1_04_GPIO10_IO25			0x1F4 0x438 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_05_GPIO10_IO26			0x1F8 0x43C 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B1_05_VIDEO_MUX_LCDIF_DATA01		0x1F8 0x43C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_05_ENET_1G_RX_DATA03		0x1F8 0x43C 0x4DC 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_05_LPUART4_CTS_B			0x1F8 0x43C 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_05_TMR2_TIMER2			0x1F8 0x43C 0x650 0x3 0x1
-#define IOMUXC_GPIO_DISP_B1_05_XBAR1_INOUT31			0x1F8 0x43C 0x704 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_05_GPIO_MUX4_IO26			0x1F8 0x43C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_05_ENET_QOS_RX_DATA03		0x1F8 0x43C 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_05_LPSPI3_SIN			0x1F8 0x43C 0x604 0x9 0x1
-
-#define IOMUXC_GPIO_DISP_B1_06_VIDEO_MUX_LCDIF_DATA02		0x1FC 0x440 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_06_ENET_1G_TX_DATA03		0x1FC 0x440 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B1_06_LPUART4_TXD			0x1FC 0x440 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_06_TMR3_TIMER0			0x1FC 0x440 0x654 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_06_XBAR1_INOUT32			0x1FC 0x440 0x708 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_06_GPIO_MUX4_IO27			0x1FC 0x440 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_06_SRC_BT_CFG00			0x1FC 0x440 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B1_06_ENET_QOS_TX_DATA03		0x1FC 0x440 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_06_LPSPI3_SOUT			0x1FC 0x440 0x608 0x9 0x1
-#define IOMUXC_GPIO_DISP_B1_06_GPIO10_IO27			0x1FC 0x440 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_07_VIDEO_MUX_LCDIF_DATA03		0x200 0x444 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_07_ENET_1G_TX_DATA02		0x200 0x444 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B1_07_LPUART4_RTS_B			0x200 0x444 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_07_TMR3_TIMER1			0x200 0x444 0x658 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_07_XBAR1_INOUT33			0x200 0x444 0x70C 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_07_GPIO_MUX4_IO28			0x200 0x444 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_07_SRC_BT_CFG01			0x200 0x444 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B1_07_ENET_QOS_TX_DATA02		0x200 0x444 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_07_LPSPI3_PCS0			0x200 0x444 0x5F0 0x9 0x1
-#define IOMUXC_GPIO_DISP_B1_07_GPIO10_IO28			0x200 0x444 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_08_GPIO10_IO29			0x204 0x448 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B1_08_VIDEO_MUX_LCDIF_DATA04		0x204 0x448 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_08_ENET_1G_TX_DATA01		0x204 0x448 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B1_08_USDHC1_CD_B			0x204 0x448 0x6C8 0x2 0x1
-#define IOMUXC_GPIO_DISP_B1_08_TMR3_TIMER2			0x204 0x448 0x65C 0x3 0x1
-#define IOMUXC_GPIO_DISP_B1_08_XBAR1_INOUT34			0x204 0x448 0x710 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_08_GPIO_MUX4_IO29			0x204 0x448 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_08_SRC_BT_CFG02			0x204 0x448 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B1_08_ENET_QOS_TX_DATA01		0x204 0x448 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_08_LPSPI3_PCS1			0x204 0x448 0x5F4 0x9 0x1
-
-#define IOMUXC_GPIO_DISP_B1_09_VIDEO_MUX_LCDIF_DATA05		0x208 0x44C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_09_ENET_1G_TX_DATA00		0x208 0x44C 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B1_09_USDHC1_WP			0x208 0x44C 0x6CC 0x2 0x1
-#define IOMUXC_GPIO_DISP_B1_09_TMR4_TIMER0			0x208 0x44C 0x660 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_09_XBAR1_INOUT35			0x208 0x44C 0x714 0x4 0x1
-#define IOMUXC_GPIO_DISP_B1_09_GPIO_MUX4_IO30			0x208 0x44C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_09_SRC_BT_CFG03			0x208 0x44C 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B1_09_ENET_QOS_TX_DATA00		0x208 0x44C 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_09_LPSPI3_PCS2			0x208 0x44C 0x5F8 0x9 0x1
-#define IOMUXC_GPIO_DISP_B1_09_GPIO10_IO30			0x208 0x44C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_10_VIDEO_MUX_LCDIF_DATA06		0x20C 0x450 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_10_ENET_1G_TX_EN			0x20C 0x450 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B1_10_USDHC1_RESET_B			0x20C 0x450 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B1_10_TMR4_TIMER1			0x20C 0x450 0x664 0x3 0x2
-#define IOMUXC_GPIO_DISP_B1_10_XBAR1_INOUT36			0x20C 0x450 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B1_10_GPIO_MUX4_IO31			0x20C 0x450 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_10_SRC_BT_CFG04			0x20C 0x450 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B1_10_ENET_QOS_TX_EN			0x20C 0x450 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_10_LPSPI3_PCS3			0x20C 0x450 0x5FC 0x9 0x1
-#define IOMUXC_GPIO_DISP_B1_10_GPIO10_IO31			0x20C 0x450 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B1_11_VIDEO_MUX_LCDIF_DATA07		0x210 0x454 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B1_11_ENET_1G_TX_CLK_IO		0x210 0x454 0x4E8 0x1 0x2
-#define IOMUXC_GPIO_DISP_B1_11_ENET_1G_REF_CLK			0x210 0x454 0x4C4 0x2 0x2
-#define IOMUXC_GPIO_DISP_B1_11_TMR4_TIMER2			0x210 0x454 0x668 0x3 0x1
-#define IOMUXC_GPIO_DISP_B1_11_XBAR1_INOUT37			0x210 0x454 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B1_11_GPIO_MUX5_IO00			0x210 0x454 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B1_11_SRC_BT_CFG05			0x210 0x454 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B1_11_ENET_QOS_TX_CLK			0x210 0x454 0x4A4 0x8 0x0
-#define IOMUXC_GPIO_DISP_B1_11_ENET_QOS_REF_CLK			0x210 0x454 0x4A0 0x9 0x2
-#define IOMUXC_GPIO_DISP_B1_11_GPIO11_IO00			0x210 0x454 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B2_00_GPIO11_IO01			0x214 0x458 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_00_VIDEO_MUX_LCDIF_DATA08		0x214 0x458 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_00_WDOG1_B				0x214 0x458 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_00_MQS_RIGHT			0x214 0x458 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_00_ENET_1G_TX_ER			0x214 0x458 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_00_SAI1_TX_DATA03			0x214 0x458 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_00_GPIO_MUX5_IO01			0x214 0x458 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_00_SRC_BT_CFG06			0x214 0x458 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_00_ENET_QOS_TX_ER			0x214 0x458 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_DISP_B2_01_VIDEO_MUX_LCDIF_DATA09		0x218 0x45C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_01_USDHC1_VSELECT			0x218 0x45C 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_01_MQS_LEFT				0x218 0x45C 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_01_WDOG2_B				0x218 0x45C 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_01_SAI1_TX_DATA02			0x218 0x45C 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_01_GPIO_MUX5_IO02			0x218 0x45C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_01_SRC_BT_CFG07			0x218 0x45C 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_01_EWM_OUT_B			0x218 0x45C 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_01_CCM_ENET_REF_CLK_25M		0x218 0x45C 0x0 0x9 0x0
-#define IOMUXC_GPIO_DISP_B2_01_GPIO11_IO02			0x218 0x45C 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B2_02_GPIO11_IO03			0x21C 0x460 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_02_VIDEO_MUX_LCDIF_DATA10		0x21C 0x460 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_02_ENET_TX_DATA00			0x21C 0x460 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_02_PIT1_TRIGGER3			0x21C 0x460 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_02_ARM_TRACE00			0x21C 0x460 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_02_SAI1_TX_DATA01			0x21C 0x460 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_02_GPIO_MUX5_IO03			0x21C 0x460 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_02_SRC_BT_CFG08			0x21C 0x460 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_02_ENET_QOS_TX_DATA00		0x21C 0x460 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_DISP_B2_03_GPIO11_IO04			0x220 0x464 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_03_VIDEO_MUX_LCDIF_DATA11		0x220 0x464 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_03_ENET_TX_DATA01			0x220 0x464 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_03_PIT1_TRIGGER2			0x220 0x464 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_03_ARM_TRACE01			0x220 0x464 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_03_SAI1_MCLK			0x220 0x464 0x66C 0x4 0x1
-#define IOMUXC_GPIO_DISP_B2_03_GPIO_MUX5_IO04			0x220 0x464 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_03_SRC_BT_CFG09			0x220 0x464 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_03_ENET_QOS_TX_DATA01		0x220 0x464 0x0 0x8 0x0
-
-#define IOMUXC_GPIO_DISP_B2_04_VIDEO_MUX_LCDIF_DATA12		0x224 0x468 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_04_ENET_TX_EN			0x224 0x468 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_04_PIT1_TRIGGER1			0x224 0x468 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_04_ARM_TRACE02			0x224 0x468 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_04_SAI1_RX_SYNC			0x224 0x468 0x678 0x4 0x1
-#define IOMUXC_GPIO_DISP_B2_04_GPIO_MUX5_IO05			0x224 0x468 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_04_SRC_BT_CFG10			0x224 0x468 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_04_ENET_QOS_TX_EN			0x224 0x468 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_04_GPIO11_IO05			0x224 0x468 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B2_05_GPIO11_IO06			0x228 0x46C 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_05_VIDEO_MUX_LCDIF_DATA13		0x228 0x46C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_05_ENET_TX_CLK			0x228 0x46C 0x4C0 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK			0x228 0x46C 0x4A8 0x2 0x1
-#define IOMUXC_GPIO_DISP_B2_05_ARM_TRACE03			0x228 0x46C 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_05_SAI1_RX_BCLK			0x228 0x46C 0x670 0x4 0x1
-#define IOMUXC_GPIO_DISP_B2_05_GPIO_MUX5_IO06			0x228 0x46C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_05_SRC_BT_CFG11			0x228 0x46C 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_05_ENET_QOS_TX_CLK			0x228 0x46C 0x4A4 0x8 0x1
-
-#define IOMUXC_GPIO_DISP_B2_06_GPIO11_IO07			0x22C 0x470 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_06_VIDEO_MUX_LCDIF_DATA14		0x22C 0x470 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_06_ENET_RX_DATA00			0x22C 0x470 0x4B0 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_06_LPUART7_TXD			0x22C 0x470 0x630 0x2 0x1
-#define IOMUXC_GPIO_DISP_B2_06_ARM_TRACE_CLK			0x22C 0x470 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_06_SAI1_RX_DATA00			0x22C 0x470 0x674 0x4 0x1
-#define IOMUXC_GPIO_DISP_B2_06_GPIO_MUX5_IO07			0x22C 0x470 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_06_ENET_QOS_RX_DATA00		0x22C 0x470 0x4F0 0x8 0x1
-
-#define IOMUXC_GPIO_DISP_B2_07_VIDEO_MUX_LCDIF_DATA15		0x230 0x474 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_07_ENET_RX_DATA01			0x230 0x474 0x4B4 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_07_LPUART7_RXD			0x230 0x474 0x62C 0x2 0x1
-#define IOMUXC_GPIO_DISP_B2_07_ARM_TRACE_SWO			0x230 0x474 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_07_SAI1_TX_DATA00			0x230 0x474 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_07_GPIO_MUX5_IO08			0x230 0x474 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_07_ENET_QOS_RX_DATA01		0x230 0x474 0x4F4 0x8 0x1
-#define IOMUXC_GPIO_DISP_B2_07_GPIO11_IO08			0x230 0x474 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B2_08_GPIO11_IO09			0x234 0x478 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_08_VIDEO_MUX_LCDIF_DATA16		0x234 0x478 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_08_ENET_RX_EN			0x234 0x478 0x4B8 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_08_LPUART8_TXD			0x234 0x478 0x638 0x2 0x1
-#define IOMUXC_GPIO_DISP_B2_08_ARM_CM7_EVENTO			0x234 0x478 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_08_SAI1_TX_BCLK			0x234 0x478 0x67C 0x4 0x1
-#define IOMUXC_GPIO_DISP_B2_08_GPIO_MUX5_IO09			0x234 0x478 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_08_ENET_QOS_RX_EN			0x234 0x478 0x4F8 0x8 0x1
-#define IOMUXC_GPIO_DISP_B2_08_LPUART1_TXD			0x234 0x478 0x620 0x9 0x2
-
-#define IOMUXC_GPIO_DISP_B2_09_GPIO11_IO10			0x238 0x47C 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_09_VIDEO_MUX_LCDIF_DATA17		0x238 0x47C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_09_ENET_RX_ER			0x238 0x47C 0x4BC 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_09_LPUART8_RXD			0x238 0x47C 0x634 0x2 0x1
-#define IOMUXC_GPIO_DISP_B2_09_ARM_CM7_EVENTI			0x238 0x47C 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_09_SAI1_TX_SYNC			0x238 0x47C 0x680 0x4 0x1
-#define IOMUXC_GPIO_DISP_B2_09_GPIO_MUX5_IO10			0x238 0x47C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_09_ENET_QOS_RX_ER			0x238 0x47C 0x4FC 0x8 0x1
-#define IOMUXC_GPIO_DISP_B2_09_LPUART1_RXD			0x238 0x47C 0x61C 0x9 0x2
-
-#define IOMUXC_GPIO_DISP_B2_10_GPIO11_IO11			0x23C 0x480 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_10_VIDEO_MUX_LCDIF_DATA18		0x23C 0x480 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_10_EMVSIM2_IO			0x23C 0x480 0x6A8 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_10_LPUART2_TXD			0x23C 0x480 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_10_WDOG2_RESET_B_DEB		0x23C 0x480 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_10_XBAR1_INOUT38			0x23C 0x480 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_10_GPIO_MUX5_IO11			0x23C 0x480 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_10_LPI2C3_SCL			0x23C 0x480 0x5BC 0x6 0x1
-#define IOMUXC_GPIO_DISP_B2_10_ENET_QOS_RX_ER			0x23C 0x480 0x4FC 0x8 0x2
-#define IOMUXC_GPIO_DISP_B2_10_SPDIF_IN				0x23C 0x480 0x6B4 0x9 0x2
-
-#define IOMUXC_GPIO_DISP_B2_11_VIDEO_MUX_LCDIF_DATA19		0x240 0x484 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_11_EMVSIM2_CLK			0x240 0x484 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_11_LPUART2_RXD			0x240 0x484 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_11_WDOG1_RESET_B_DEB		0x240 0x484 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_11_XBAR1_INOUT39			0x240 0x484 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_11_GPIO_MUX5_IO12			0x240 0x484 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_11_LPI2C3_SDA			0x240 0x484 0x5C0 0x6 0x1
-#define IOMUXC_GPIO_DISP_B2_11_ENET_QOS_CRS			0x240 0x484 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_11_SPDIF_OUT			0x240 0x484 0x0 0x9 0x0
-#define IOMUXC_GPIO_DISP_B2_11_GPIO11_IO12			0x240 0x484 0x0 0xA 0x0
-
-#define IOMUXC_GPIO_DISP_B2_12_GPIO11_IO13			0x244 0x488 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_12_VIDEO_MUX_LCDIF_DATA20		0x244 0x488 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_12_EMVSIM2_RST			0x244 0x488 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_12_FLEXCAN1_TX			0x244 0x488 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_12_LPUART2_CTS_B			0x244 0x488 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_12_XBAR1_INOUT40			0x244 0x488 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_12_GPIO_MUX5_IO13			0x244 0x488 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_12_LPI2C4_SCL			0x244 0x488 0x5C4 0x6 0x1
-#define IOMUXC_GPIO_DISP_B2_12_ENET_QOS_COL			0x244 0x488 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_12_LPSPI4_SCK			0x244 0x488 0x610 0x9 0x1
-
-#define IOMUXC_GPIO_DISP_B2_13_GPIO11_IO14			0x248 0x48C 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_13_VIDEO_MUX_LCDIF_DATA21		0x248 0x48C 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_13_EMVSIM2_SVEN			0x248 0x48C 0x0 0x1 0x0
-#define IOMUXC_GPIO_DISP_B2_13_FLEXCAN1_RX			0x248 0x48C 0x498 0x2 0x1
-#define IOMUXC_GPIO_DISP_B2_13_LPUART2_RTS_B			0x248 0x48C 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_13_ENET_REF_CLK			0x248 0x48C 0x4A8 0x4 0x2
-#define IOMUXC_GPIO_DISP_B2_13_GPIO_MUX5_IO14			0x248 0x48C 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_13_LPI2C4_SDA			0x248 0x48C 0x5C8 0x6 0x1
-#define IOMUXC_GPIO_DISP_B2_13_ENET_QOS_1588_EVENT0_OUT		0x248 0x48C 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_13_LPSPI4_SIN			0x248 0x48C 0x614 0x9 0x1
-
-#define IOMUXC_GPIO_DISP_B2_14_GPIO_MUX5_IO15			0x24C 0x490 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_14_FLEXCAN1_TX			0x24C 0x490 0x0 0x6 0x0
-#define IOMUXC_GPIO_DISP_B2_14_ENET_QOS_1588_EVENT0_IN		0x24C 0x490 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_14_LPSPI4_SOUT			0x24C 0x490 0x618 0x9 0x1
-#define IOMUXC_GPIO_DISP_B2_14_GPIO11_IO15			0x24C 0x490 0x0 0xA 0x0
-#define IOMUXC_GPIO_DISP_B2_14_VIDEO_MUX_LCDIF_DATA22		0x24C 0x490 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_14_EMVSIM2_PD			0x24C 0x490 0x6AC 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_14_WDOG2_B				0x24C 0x490 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_14_VIDEO_MUX_EXT_DCIC1		0x24C 0x490 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_14_ENET_1G_REF_CLK			0x24C 0x490 0x4C4 0x4 0x3
-
-#define IOMUXC_GPIO_DISP_B2_15_VIDEO_MUX_LCDIF_DATA23		0x250 0x494 0x0 0x0 0x0
-#define IOMUXC_GPIO_DISP_B2_15_EMVSIM2_POWER_FAIL		0x250 0x494 0x6B0 0x1 0x1
-#define IOMUXC_GPIO_DISP_B2_15_WDOG1_B				0x250 0x494 0x0 0x2 0x0
-#define IOMUXC_GPIO_DISP_B2_15_VIDEO_MUX_EXT_DCIC2		0x250 0x494 0x0 0x3 0x0
-#define IOMUXC_GPIO_DISP_B2_15_PIT1_TRIGGER0			0x250 0x494 0x0 0x4 0x0
-#define IOMUXC_GPIO_DISP_B2_15_GPIO_MUX5_IO16			0x250 0x494 0x0 0x5 0x0
-#define IOMUXC_GPIO_DISP_B2_15_FLEXCAN1_RX			0x250 0x494 0x498 0x6 0x2
-#define IOMUXC_GPIO_DISP_B2_15_ENET_QOS_1588_EVENT0_AUX_IN	0x250 0x494 0x0 0x8 0x0
-#define IOMUXC_GPIO_DISP_B2_15_LPSPI4_PCS0			0x250 0x494 0x60C 0x9 0x1
-#define IOMUXC_GPIO_DISP_B2_15_GPIO11_IO16			0x250 0x494 0x0 0xA 0x0
-
-#endif  /* _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H */
diff --git a/arch/arm/boot/dts/nxp/vf/Makefile b/arch/arm/boot/dts/nxp/vf/Makefile
index 0a4a7f9dd43e..1733506c0c72 100644
--- a/arch/arm/boot/dts/nxp/vf/Makefile
+++ b/arch/arm/boot/dts/nxp/vf/Makefile
@@ -3,9 +3,7 @@ dtb-$(CONFIG_SOC_VF610) += \
 	vf500-colibri-eval-v3.dtb \
 	vf610-bk4.dtb \
 	vf610-colibri-eval-v3.dtb \
-	vf610m4-colibri.dtb \
 	vf610-cosmic.dtb \
-	vf610m4-cosmic.dtb \
 	vf610-twr.dtb \
 	vf610-zii-cfu1.dtb \
 	vf610-zii-dev-rev-b.dtb \
diff --git a/arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts b/arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
deleted file mode 100644
index 86d32f54c250..000000000000
--- a/arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
+++ /dev/null
@@ -1,61 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+ OR MIT
-/*
- * Device tree for Colibri VF61 Cortex-M4 support
- *
- * Copyright (C) 2015 Stefan Agner
- */
-
-/dts-v1/;
-#include "vf610m4.dtsi"
-
-/ {
-	model = "VF610 Cortex-M4";
-	compatible = "fsl,vf610m4";
-
-	chosen {
-		bootargs = "clk_ignore_unused init=/linuxrc rw";
-		stdout-path = "serial2:115200";
-	};
-
-	memory@8c000000 {
-		device_type = "memory";
-		reg = <0x8c000000 0x3000000>;
-	};
-};
-
-&gpio0 {
-	status = "disabled";
-};
-
-&gpio1 {
-	status = "disabled";
-};
-
-&gpio2 {
-	status = "disabled";
-};
-
-&gpio3 {
-	status = "disabled";
-};
-
-&gpio4 {
-	status = "disabled";
-};
-
-&uart2 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_uart2>;
-	status = "okay";
-};
-
-&iomuxc {
-	pinctrl_uart2: uart2grp {
-		fsl,pins = <
-			VF610_PAD_PTD0__UART2_TX		0x21a2
-			VF610_PAD_PTD1__UART2_RX		0x21a1
-			VF610_PAD_PTD2__UART2_RTS		0x21a2
-			VF610_PAD_PTD3__UART2_CTS		0x21a1
-		>;
-	};
-};
diff --git a/arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts b/arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
deleted file mode 100644
index 454b484368cb..000000000000
--- a/arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Device tree for Cosmic+ VF6xx Cortex-M4 support
- *
- * Copyright (C) 2015
- *
- * Based on vf610m4 Colibri
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "vf610m4.dtsi"
-
-/ {
-	model = "VF610 Cortex-M4";
-	compatible = "fsl,vf610m4";
-};
-
-&gpio0 {
-	status = "disabled";
-};
-
-&gpio1 {
-	status = "disabled";
-};
-
-&gpio2 {
-	status = "disabled";
-};
-
-&gpio3 {
-	status = "disabled";
-};
-
-&gpio4 {
-	status = "disabled";
-};
-
-&uart3 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_uart3>;
-	status = "okay";
-};
-
-&iomuxc {
-	pinctrl_uart3: uart3grp {
-		fsl,pins = <
-			VF610_PAD_PTA20__UART3_TX		0x21a2
-			VF610_PAD_PTA21__UART3_RX		0x21a1
-		>;
-	};
-};
diff --git a/arch/arm/boot/dts/nxp/vf/vf610m4.dtsi b/arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
deleted file mode 100644
index 648d219e1d0e..000000000000
--- a/arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Device tree for VF6xx Cortex-M4 support
- *
- * Copyright (C) 2015 Stefan Agner
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "../../armv7-m.dtsi"
-#include "vfxxx.dtsi"
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-	chosen { };
-	aliases { };
-};
-
-&mscm_ir {
-	interrupt-parent = <&nvic>;
-};
-
-&nvic {
-	arm,num-irq-priority-bits = <4>;
-};
diff --git a/arch/arm/configs/imxrt_defconfig b/arch/arm/configs/imxrt_defconfig
deleted file mode 100644
index 52dba3762996..000000000000
--- a/arch/arm/configs/imxrt_defconfig
+++ /dev/null
@@ -1,35 +0,0 @@
-# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_BPF_SYSCALL=y
-CONFIG_SCHED_AUTOGROUP=y
-# CONFIG_MMU is not set
-CONFIG_ARCH_MXC=y
-CONFIG_SOC_IMXRT=y
-CONFIG_SET_MEM_PARAM=y
-CONFIG_DRAM_BASE=0x80000000
-CONFIG_DRAM_SIZE=0x02000000
-CONFIG_BINFMT_FLAT=y
-CONFIG_UEVENT_HELPER=y
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_IMX_WEIM=y
-CONFIG_LEGACY_PTY_COUNT=2
-CONFIG_SERIAL_FSL_LPUART=y
-CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
-CONFIG_SERIAL_DEV_BUS=y
-CONFIG_PINCTRL_IMXRT1050=y
-CONFIG_GPIO_MXC=y
-CONFIG_MMC=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_PLTFM=y
-CONFIG_MMC_SDHCI_ESDHC_IMX=y
-CONFIG_DMADEVICES=y
-CONFIG_FSL_EDMA=y
-CONFIG_CLK_IMXRT1050=y
-CONFIG_EXT4_FS=y
-CONFIG_EXT4_FS_POSIX_ACL=y
-CONFIG_EXT4_FS_SECURITY=y
-CONFIG_VFAT_FS=y
-CONFIG_FAT_DEFAULT_UTF8=y
-CONFIG_EXFAT_FS=y
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_UTF8=y
diff --git a/arch/arm/configs/vf610m4_defconfig b/arch/arm/configs/vf610m4_defconfig
deleted file mode 100644
index a5609cbfdfb3..000000000000
--- a/arch/arm/configs/vf610m4_defconfig
+++ /dev/null
@@ -1,39 +0,0 @@
-CONFIG_NAMESPACES=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_XZ is not set
-# CONFIG_RD_LZ4 is not set
-CONFIG_EXPERT=y
-CONFIG_KALLSYMS_ALL=y
-# CONFIG_MMU is not set
-CONFIG_ARCH_MXC=y
-CONFIG_SOC_VF610=y
-CONFIG_SET_MEM_PARAM=y
-CONFIG_DRAM_BASE=0x8c000000
-CONFIG_FLASH_MEM_BASE=0x8f000000
-CONFIG_FLASH_SIZE=0x01000000
-CONFIG_CMDLINE="console=/dev/ttyLP2"
-CONFIG_XIP_KERNEL=y
-CONFIG_XIP_PHYS_ADDR=0x0f000080
-# CONFIG_SUSPEND is not set
-CONFIG_BINFMT_FLAT=y
-CONFIG_BINFMT_ZFLAT=y
-# CONFIG_UEVENT_HELPER is not set
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-# CONFIG_ALLOW_DEV_COREDUMP is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=4
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_KEYBOARD_ATKBD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-CONFIG_SERIAL_FSL_LPUART=y
-CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_MFD_SYSCON=y
-# CONFIG_HID is not set
-# CONFIG_USB_SUPPORT is not set
-CONFIG_EXT4_FS=y
-# CONFIG_MISC_FILESYSTEMS is not set
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 77704c6a70ba..cdc1b31fe573 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -2,7 +2,7 @@
 menuconfig ARCH_MXC
 	bool "Freescale i.MX family"
 	depends on ((ARCH_MULTI_V4T || ARCH_MULTI_V5) && CPU_LITTLE_ENDIAN) || \
-		ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
+		ARCH_MULTI_V6_V7
 	select CLKSRC_IMX_GPT
 	select GENERIC_IRQ_CHIP
 	select GPIOLIB
@@ -174,7 +174,7 @@ config SOC_LS1021A
 
 endif
 
-if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
+if ARCH_MULTI_V7
 
 comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
 
@@ -187,38 +187,23 @@ config SOC_IMX7D_CA7
 	select HAVE_IMX_SRC
 	select IMX_GPCV2
 
-config SOC_IMX7D_CM4
-	bool
-	select ARMV7M_SYSTICK
-
 config SOC_IMX7D
 	bool "i.MX7 Dual support"
-	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
-	select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
-	select ARM_ERRATA_814220 if ARCH_MULTI_V7
+	select SOC_IMX7D_CA7
+	select ARM_ERRATA_814220
 	help
 	  This enables support for Freescale i.MX7 Dual processor.
 
 config SOC_IMX7ULP
 	bool "i.MX7ULP support"
 	select CLKSRC_IMX_TPM
-	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
-	select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
+	select SOC_IMX7D_CA7
 	help
 	  This enables support for Freescale i.MX7 Ultra Low Power processor.
 
-config SOC_IMXRT
-	bool "i.MXRT support (DEPRECATED)"
-	depends on ARM_SINGLE_ARMV7M
-	select ARMV7M_SYSTICK if ARM_SINGLE_ARMV7M
-	help
-	  This enables support for Freescale i.MXRT Crossover processor.
-
-	  This platform is scheduled for removal in early 2027
-
 config SOC_VF610
 	bool "Vybrid Family VF610 support"
-	select ARM_GIC if ARCH_MULTI_V7
+	select ARM_GIC
 
 	help
 	  This enables support for Freescale Vybrid VF610 processor.
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index fa0144f0882d..135079340428 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -42,7 +42,6 @@ obj-$(CONFIG_SOC_IMX6SLL) += mach-imx6sl.o
 obj-$(CONFIG_SOC_IMX6SX) += mach-imx6sx.o
 obj-$(CONFIG_SOC_IMX6UL) += mach-imx6ul.o
 obj-$(CONFIG_SOC_IMX7D_CA7) += mach-imx7d.o
-obj-$(CONFIG_SOC_IMX7D_CM4) += mach-imx7d-cm4.o
 obj-$(CONFIG_SOC_IMX7ULP) += mach-imx7ulp.o pm-imx7ulp.o
 
 ifeq ($(CONFIG_SUSPEND),y)
@@ -59,8 +58,6 @@ obj-$(CONFIG_SOC_IMX50) += mach-imx50.o
 obj-$(CONFIG_SOC_IMX51) += mach-imx51.o
 obj-$(CONFIG_SOC_IMX53) += mach-imx53.o
 
-obj-$(CONFIG_SOC_IMXRT) += mach-imxrt.o
-
 obj-$(CONFIG_SOC_VF610) += mach-vf610.o
 
 obj-$(CONFIG_SOC_LS1021A) += mach-ls1021a.o
diff --git a/arch/arm/mach-imx/mach-imx7d-cm4.c b/arch/arm/mach-imx/mach-imx7d-cm4.c
deleted file mode 100644
index 0800b5891d2a..000000000000
--- a/arch/arm/mach-imx/mach-imx7d-cm4.c
+++ /dev/null
@@ -1,18 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2018 Pengutronix, Oleksij Rempel <o.rempel@pengutronix.de>
- */
-
-#include <linux/kernel.h>
-#include <asm/v7m.h>
-#include <asm/mach/arch.h>
-
-static const char * const imx7d_cm4_dt_compat[] __initconst = {
-	"fsl,imx7d-cm4",
-	NULL,
-};
-
-DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual Cortex-M4 (Device Tree)")
-	.dt_compat = imx7d_cm4_dt_compat,
-	.restart = armv7m_restart,
-MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imxrt.c b/arch/arm/mach-imx/mach-imxrt.c
deleted file mode 100644
index 2063a3059c84..000000000000
--- a/arch/arm/mach-imx/mach-imxrt.c
+++ /dev/null
@@ -1,19 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (C) 2019
- * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
- */
-
-#include <linux/kernel.h>
-#include <asm/mach/arch.h>
-#include <asm/v7m.h>
-
-static const char *const imxrt_compat[] __initconst = {
-	"fsl,imxrt1050",
-	NULL
-};
-
-DT_MACHINE_START(IMXRTDT, "IMXRT (Device Tree Support)")
-	.dt_compat = imxrt_compat,
-	.restart = armv7m_restart,
-MACHINE_END
diff --git a/arch/arm/mach-imx/mach-vf610.c b/arch/arm/mach-imx/mach-vf610.c
index 208ff640698d..f77565381097 100644
--- a/arch/arm/mach-imx/mach-vf610.c
+++ b/arch/arm/mach-imx/mach-vf610.c
@@ -59,7 +59,6 @@ static const char * const vf610_dt_compat[] __initconst = {
 	"fsl,vf510",
 	"fsl,vf600",
 	"fsl,vf610",
-	"fsl,vf610m4",
 	NULL,
 };
 
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 09/13] ARM: lpc18xx: remove entire platform
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (7 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
@ 2026-09-08 15:27 ` 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
                   ` (4 subsequent siblings)
  13 siblings, 2 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:27 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

From: Arnd Bergmann <arnd@arndb.de>

The NXP LPC18xx and LPC43xx microcontrollers are the more modern
version of the classic LPC32xx line, but they lack memory management
units.

These microcontrollers all remain in production as of 2026, but
there are no known users running Linux on them.

The platform was marked deprecated in the 7.3-LTS release, which
will remain supported for a few more years.

Remove support for both LPC18xx and LPC43xx.

Cc: Frank Li <Frank.Li@nxp.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Vladimir Zapolskiy <vz@mleia.com>
Cc: imx@lists.linux.dev
Cc: devicetree@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 MAINTAINERS                                   |  12 -
 arch/arm/Kconfig                              |  14 -
 arch/arm/Kconfig.debug                        |   9 -
 arch/arm/Makefile                             |   1 -
 arch/arm/boot/dts/nxp/lpc/Makefile            |   5 -
 arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi        | 543 ---------------
 arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts    | 221 -------
 .../boot/dts/nxp/lpc/lpc4350-hitex-eval.dts   | 485 --------------
 arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi        |  48 --
 .../dts/nxp/lpc/lpc4357-ea4357-devkit.dts     | 624 ------------------
 .../boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts  | 621 -----------------
 arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi        |  52 --
 arch/arm/configs/lpc18xx_defconfig            | 158 -----
 arch/arm/mach-lpc18xx/Makefile                |   2 -
 arch/arm/mach-lpc18xx/board-dt.c              |  19 -
 15 files changed, 2814 deletions(-)
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4350-hitex-eval.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4357-ea4357-devkit.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts
 delete mode 100644 arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi
 delete mode 100644 arch/arm/configs/lpc18xx_defconfig
 delete mode 100644 arch/arm/mach-lpc18xx/Makefile
 delete mode 100644 arch/arm/mach-lpc18xx/board-dt.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 0d10f778800d..292327185a08 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3032,18 +3032,6 @@ L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
 F:	arch/arm64/boot/dts/lg/
 
-ARM/LPC18XX ARCHITECTURE
-M:	Vladimir Zapolskiy <vz@mleia.com>
-L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
-S:	Maintained
-F:	Documentation/devicetree/bindings/i2c/nxp,lpc1788-i2c.yaml
-F:	arch/arm/boot/dts/nxp/lpc/lpc43*
-F:	drivers/i2c/busses/i2c-lpc2k.c
-F:	drivers/memory/pl172.c
-F:	drivers/mtd/spi-nor/controllers/nxp-spifi.c
-F:	drivers/rtc/rtc-lpc24xx.c
-N:	lpc18xx
-
 ARM/LPC32XX SOC SUPPORT
 M:	Vladimir Zapolskiy <vz@mleia.com>
 M:	Piotr Wojtaszczyk <piotr.wojtaszczyk@timesys.com>
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index da29afce309f..13b38be3353a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -443,20 +443,6 @@ source "arch/arm/mach-zte/Kconfig"
 
 source "arch/arm/mach-zynq/Kconfig"
 
-# ARMv7-M architecture
-config ARCH_LPC18XX
-	bool "NXP LPC18xx/LPC43xx (DEPRECATED)"
-	depends on ARM_SINGLE_ARMV7M
-	select ARCH_HAS_RESET_CONTROLLER
-	select ARM_AMBA
-	select CLKSRC_LPC32XX
-	select PINCTRL
-	help
-	  Support for NXP's LPC18xx Cortex-M3 and LPC43xx Cortex-M4
-	  high performance microcontrollers.
-
-	  This platform is scheduled for removal in early 2027
-
 config ARCH_MPS2
 	bool "ARM MPS2 platform (DEPRECATED)"
 	depends on ARM_SINGLE_ARMV7M
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 52387fe2a057..e4910cf865da 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -511,14 +511,6 @@ choice
 		  Say Y here if you want the debug print routines to direct
 		  their output to UART1 serial port on KEYSTONE2 devices.
 
-	config DEBUG_LPC18XX_UART0
-		bool "Kernel low-level debugging via LPC18xx/43xx UART0"
-		depends on ARCH_LPC18XX
-		select DEBUG_UART_8250
-		help
-		  Say Y here if you want kernel low-level debugging support
-		  on NXP LPC18xx/43xx UART0.
-
 	config DEBUG_LPC32XX
 		bool "Kernel low-level debugging messages via NXP LPC32xx UART"
 		depends on ARCH_LPC32XX
@@ -1551,7 +1543,6 @@ config DEBUG_UART_PHYS
 	default 0x40011000 if STM32F4_DEBUG_UART || STM32F7_DEBUG_UART || \
 				STM32H7_DEBUG_UART
 	default 0x40028000 if DEBUG_AT91_SAMV7_USART1
-	default 0x40081000 if DEBUG_LPC18XX_UART0
 	default 0x40090000 if DEBUG_LPC32XX
 	default 0x40100000 if DEBUG_PXA_UART1
 	default 0x42000000 if DEBUG_GEMINI
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 5421a3ec3825..d3479e374c6f 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -185,7 +185,6 @@ machine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
 machine-$(CONFIG_ARCH_HISI)		+= hisi
 machine-$(CONFIG_ARCH_IXP4XX)		+= ixp4xx
 machine-$(CONFIG_ARCH_KEYSTONE)		+= keystone
-machine-$(CONFIG_ARCH_LPC18XX)		+= lpc18xx
 machine-$(CONFIG_ARCH_LPC32XX)		+= lpc32xx
 machine-$(CONFIG_ARCH_MESON)		+= meson
 machine-$(CONFIG_ARCH_MMP)		+= mmp
diff --git a/arch/arm/boot/dts/nxp/lpc/Makefile b/arch/arm/boot/dts/nxp/lpc/Makefile
index 56b9a0ebb917..3f82628f3ff9 100644
--- a/arch/arm/boot/dts/nxp/lpc/Makefile
+++ b/arch/arm/boot/dts/nxp/lpc/Makefile
@@ -1,9 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
-dtb-$(CONFIG_ARCH_LPC18XX) += \
-	lpc4337-ciaa.dtb \
-	lpc4350-hitex-eval.dtb \
-	lpc4357-ea4357-devkit.dtb \
-	lpc4357-myd-lpc4357.dtb
 dtb-$(CONFIG_ARCH_LPC32XX) += \
 	lpc3250-ea3250.dtb \
 	lpc3250-phy3250.dtb
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi b/arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi
deleted file mode 100644
index 152e98cf0c4e..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc18xx.dtsi
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
- * Common base for NXP LPC18xx and LPC43xx devices.
- *
- * Copyright 2015 Joachim Eastwood <manabian@gmail.com>
- *
- * This code is released using a dual license strategy: BSD/GPL
- * You can choose the licence that better fits your requirements.
- *
- * Released under the terms of 3-clause BSD License
- * Released under the terms of GNU General Public License Version 2.0
- *
- */
-
-#include "../../armv7-m.dtsi"
-
-#include "dt-bindings/clock/lpc18xx-cgu.h"
-#include "dt-bindings/clock/lpc18xx-ccu.h"
-
-#define LPC_PIN(port, pin)	(0x##port * 32 + pin)
-#define LPC_GPIO(port, pin)	(port * 32 + pin)
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	cpus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		cpu@0 {
-			compatible = "arm,cortex-m3";
-			device_type = "cpu";
-			reg = <0x0>;
-			clocks = <&ccu1 CLK_CPU_CORE>;
-		};
-	};
-
-	clocks {
-		xtal: xtal {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <12000000>;
-		};
-
-		xtal32: xtal32 {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <32768>;
-		};
-
-		enet_rx_clk: enet_rx_clk {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <0>;
-			clock-output-names = "enet_rx_clk";
-		};
-
-		enet_tx_clk: enet_tx_clk {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <0>;
-			clock-output-names = "enet_tx_clk";
-		};
-
-		gp_clkin: gp_clkin {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <0>;
-			clock-output-names = "gp_clkin";
-		};
-	};
-
-	soc {
-		sct_pwm: pwm@40000000 {
-			compatible = "nxp,lpc1850-sct-pwm";
-			reg = <0x40000000 0x1000>;
-			clocks = <&ccu1 CLK_CPU_SCT>;
-			clock-names = "pwm";
-			resets = <&rgu 37>;
-			#pwm-cells = <3>;
-			status = "disabled";
-		};
-
-		dmac: dma-controller@40002000 {
-			compatible = "arm,pl080", "arm,primecell";
-			arm,primecell-periphid = <0x00041080>;
-			reg = <0x40002000 0x1000>;
-			interrupts = <2>;
-			clocks = <&ccu1 CLK_CPU_DMA>;
-			clock-names = "apb_pclk";
-			resets = <&rgu 19>;
-			#dma-cells = <2>;
-			dma-channels = <8>;
-			dma-requests = <16>;
-			lli-bus-interface-ahb1;
-			lli-bus-interface-ahb2;
-			mem-bus-interface-ahb1;
-			mem-bus-interface-ahb2;
-			memcpy-burst-size = <256>;
-			memcpy-bus-width = <32>;
-		};
-
-		spifi: spi@40003000 {
-			compatible = "nxp,lpc1773-spifi";
-			reg = <0x40003000 0x1000>, <0x14000000 0x4000000>;
-			reg-names = "spifi", "flash";
-			interrupts = <30>;
-			clocks = <&ccu1 CLK_SPIFI>, <&ccu1 CLK_CPU_SPIFI>;
-			clock-names = "spifi", "reg";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			resets = <&rgu 53>;
-			status = "disabled";
-		};
-
-		mmcsd: mmc@40004000 {
-			compatible = "snps,dw-mshc";
-			reg = <0x40004000 0x1000>;
-			interrupts = <6>;
-			clocks = <&ccu1 CLK_CPU_SDIO>, <&ccu2 CLK_SDIO>;
-			clock-names = "biu", "ciu";
-			resets = <&rgu 20>;
-			status = "disabled";
-		};
-
-		usb0: usb@40006100 {
-			compatible = "nxp,lpc1850-ehci", "generic-ehci";
-			reg = <0x40006100 0x100>;
-			interrupts = <8>;
-			clocks = <&ccu1 CLK_CPU_USB0>;
-			resets = <&rgu 17>;
-			phys = <&usb0_otg_phy>;
-			phy-names = "usb";
-			has-transaction-translator;
-			status = "disabled";
-		};
-
-		usb1: usb@40007100 {
-			compatible = "nxp,lpc1850-ehci", "generic-ehci";
-			reg = <0x40007100 0x100>;
-			interrupts = <9>;
-			clocks = <&ccu1 CLK_CPU_USB1>;
-			resets = <&rgu 18>;
-			status = "disabled";
-		};
-
-		emc: memory-controller@40005000 {
-			compatible = "arm,pl172", "arm,primecell";
-			reg = <0x40005000 0x1000>;
-			clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>;
-			clock-names = "mpmcclk", "apb_pclk";
-			resets = <&rgu 21>;
-			#address-cells = <2>;
-			#size-cells = <1>;
-			ranges = <0 0 0x1c000000 0x1000000
-				  1 0 0x1d000000 0x1000000
-				  2 0 0x1e000000 0x1000000
-				  3 0 0x1f000000 0x1000000>;
-			status = "disabled";
-		};
-
-		lcdc: lcd-controller@40008000 {
-			compatible = "arm,pl111", "arm,primecell";
-			reg = <0x40008000 0x1000>;
-			interrupts = <7>;
-			interrupt-names = "combined";
-			clocks = <&cgu BASE_LCD_CLK>, <&ccu1 CLK_CPU_LCD>;
-			clock-names = "clcdclk", "apb_pclk";
-			resets = <&rgu 16>;
-			status = "disabled";
-		};
-
-		eeprom: eeprom@4000e000 {
-			compatible = "nxp,lpc1857-eeprom";
-			reg = <0x4000e000 0x1000>, <0x20040000 0x4000>;
-			reg-names = "reg", "mem";
-			clocks = <&ccu1 CLK_CPU_EEPROM>;
-			clock-names = "eeprom";
-			resets = <&rgu 27>;
-			interrupts = <4>;
-			status = "disabled";
-		};
-
-		mac: ethernet@40010000 {
-			compatible = "nxp,lpc1850-dwmac", "snps,dwmac-3.611", "snps,dwmac";
-			reg = <0x40010000 0x2000>;
-			interrupts = <5>;
-			interrupt-names = "macirq";
-			clocks = <&ccu1 CLK_CPU_ETHERNET>;
-			clock-names = "stmmaceth";
-			resets = <&rgu 22>;
-			reset-names = "stmmaceth";
-			rx-fifo-depth = <256>;
-			tx-fifo-depth = <256>;
-			snps,pbl = <4>; /* 32 (8x mode) */
-			snps,force_thresh_dma_mode;
-			status = "disabled";
-		};
-
-		creg: syscon@40043000 {
-			compatible = "nxp,lpc1850-creg", "syscon", "simple-mfd";
-			reg = <0x40043000 0x1000>;
-			clocks = <&ccu1 CLK_CPU_CREG>;
-			resets = <&rgu 5>;
-
-			creg_clk: clock-controller {
-				compatible = "nxp,lpc1850-creg-clk";
-				clocks = <&xtal32>;
-				#clock-cells = <1>;
-			};
-
-			usb0_otg_phy: phy {
-				compatible = "nxp,lpc1850-usb-otg-phy";
-				clocks = <&ccu1 CLK_USB0>;
-				#phy-cells = <0>;
-			};
-
-			dmamux: dma-mux {
-				compatible = "nxp,lpc1850-dmamux";
-				#dma-cells = <3>;
-				dma-requests = <64>;
-				dma-masters = <&dmac>;
-			};
-		};
-
-		rtc: rtc@40046000 {
-			compatible = "nxp,lpc1850-rtc", "nxp,lpc1788-rtc";
-			reg = <0x40046000 0x1000>;
-			interrupts = <47>;
-			clocks = <&creg_clk 0>, <&ccu1 CLK_CPU_BUS>;
-			clock-names = "rtc", "reg";
-		};
-
-		cgu: clock-controller@40050000 {
-			compatible = "nxp,lpc1850-cgu";
-			reg = <0x40050000 0x1000>;
-			#clock-cells = <1>;
-			clocks = <&xtal>, <&creg_clk 1>, <&enet_rx_clk>, <&enet_tx_clk>, <&gp_clkin>;
-		};
-
-		ccu1: clock-controller@40051000 {
-			compatible = "nxp,lpc1850-ccu";
-			reg = <0x40051000 0x1000>;
-			#clock-cells = <1>;
-			clocks = <&cgu BASE_APB3_CLK>,   <&cgu BASE_APB1_CLK>,
-				 <&cgu BASE_SPIFI_CLK>,  <&cgu BASE_CPU_CLK>,
-				 <&cgu BASE_PERIPH_CLK>, <&cgu BASE_USB0_CLK>,
-				 <&cgu BASE_USB1_CLK>,   <&cgu BASE_SPI_CLK>;
-			clock-names = "base_apb3_clk",   "base_apb1_clk",
-				      "base_spifi_clk",  "base_cpu_clk",
-				      "base_periph_clk", "base_usb0_clk",
-				      "base_usb1_clk",   "base_spi_clk";
-		};
-
-		ccu2: clock-controller@40052000 {
-			compatible = "nxp,lpc1850-ccu";
-			reg = <0x40052000 0x1000>;
-			#clock-cells = <1>;
-			clocks = <&cgu BASE_AUDIO_CLK>, <&cgu BASE_UART3_CLK>,
-				 <&cgu BASE_UART2_CLK>, <&cgu BASE_UART1_CLK>,
-				 <&cgu BASE_UART0_CLK>, <&cgu BASE_SSP1_CLK>,
-				 <&cgu BASE_SSP0_CLK>,  <&cgu BASE_SDIO_CLK>;
-			clock-names = "base_audio_clk", "base_uart3_clk",
-				      "base_uart2_clk", "base_uart1_clk",
-				      "base_uart0_clk", "base_ssp1_clk",
-				      "base_ssp0_clk",  "base_sdio_clk";
-		};
-
-		rgu: reset-controller@40053000 {
-			compatible = "nxp,lpc1850-rgu";
-			reg = <0x40053000 0x1000>;
-			clocks = <&cgu BASE_SAFE_CLK>, <&ccu1 CLK_CPU_BUS>;
-			clock-names = "delay", "reg";
-			#reset-cells = <1>;
-		};
-
-		watchdog@40080000 {
-			compatible = "nxp,lpc1850-wwdt";
-			reg = <0x40080000 0x24>;
-			interrupts = <49>;
-			clocks = <&cgu BASE_SAFE_CLK>, <&ccu1 CLK_CPU_WWDT>;
-			clock-names = "wdtclk", "reg";
-		};
-
-		uart0: serial@40081000 {
-			compatible = "nxp,lpc1850-uart", "ns16550a";
-			reg = <0x40081000 0x1000>;
-			reg-shift = <2>;
-			interrupts = <24>;
-			clocks = <&ccu2 CLK_APB0_UART0>, <&ccu1 CLK_CPU_UART0>;
-			clock-names = "uartclk", "reg";
-			resets = <&rgu 44>;
-			dmas = <&dmamux  1 1 2
-				&dmamux  2 1 2
-				&dmamux 11 2 2
-				&dmamux 12 2 2>;
-			dma-names = "tx", "rx", "tx", "rx";
-			status = "disabled";
-		};
-
-		uart1: serial@40082000 {
-			compatible = "nxp,lpc1850-uart", "ns16550a";
-			reg = <0x40082000 0x1000>;
-			reg-shift = <2>;
-			interrupts = <25>;
-			clocks = <&ccu2 CLK_APB0_UART1>, <&ccu1 CLK_CPU_UART1>;
-			clock-names = "uartclk", "reg";
-			resets = <&rgu 45>;
-			dmas = <&dmamux 3 1 2
-				&dmamux 4 1 2>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		ssp0: spi@40083000 {
-			compatible = "arm,pl022", "arm,primecell";
-			reg = <0x40083000 0x1000>;
-			interrupts = <22>;
-			clocks = <&ccu2 CLK_APB0_SSP0>, <&ccu1 CLK_CPU_SSP0>;
-			clock-names = "sspclk", "apb_pclk";
-			resets = <&rgu 50>;
-			dmas = <&dmamux  9 0 2
-				&dmamux 10 0 2>;
-			dma-names = "rx", "tx";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		timer0: timer@40084000 {
-			compatible = "nxp,lpc3220-timer";
-			reg = <0x40084000 0x1000>;
-			interrupts = <12>;
-			clocks = <&ccu1 CLK_CPU_TIMER0>;
-			clock-names = "timerclk";
-			resets = <&rgu 32>;
-		};
-
-		timer1: timer@40085000 {
-			compatible = "nxp,lpc3220-timer";
-			reg = <0x40085000 0x1000>;
-			interrupts = <13>;
-			clocks = <&ccu1 CLK_CPU_TIMER1>;
-			clock-names = "timerclk";
-			resets = <&rgu 33>;
-		};
-
-		pinctrl: pinctrl@40086000 {
-			compatible = "nxp,lpc1850-scu";
-			reg = <0x40086000 0x1000>;
-			clocks = <&ccu1 CLK_CPU_SCU>;
-		};
-
-		i2c0: i2c@400a1000 {
-			compatible = "nxp,lpc1788-i2c";
-			reg = <0x400a1000 0x1000>;
-			interrupts = <18>;
-			clocks = <&ccu1 CLK_APB1_I2C0>;
-			resets = <&rgu 48>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		can1: can@400a4000 {
-			compatible = "bosch,c_can";
-			reg = <0x400a4000 0x1000>;
-			interrupts = <43>;
-			clocks = <&ccu1 CLK_APB1_CAN1>;
-			resets = <&rgu 54>;
-			status = "disabled";
-		};
-
-		uart2: serial@400c1000 {
-			compatible = "nxp,lpc1850-uart", "ns16550a";
-			reg = <0x400c1000 0x1000>;
-			reg-shift = <2>;
-			interrupts = <26>;
-			clocks = <&ccu2 CLK_APB2_UART2>, <&ccu1 CLK_CPU_UART2>;
-			clock-names = "uartclk", "reg";
-			resets = <&rgu 46>;
-			dmas = <&dmamux 5 1 2
-				&dmamux 6 1 2>;
-			dma-names = "tx", "rx";
-			status = "disabled";
-		};
-
-		uart3: serial@400c2000 {
-			compatible = "nxp,lpc1850-uart", "ns16550a";
-			reg = <0x400c2000 0x1000>;
-			reg-shift = <2>;
-			interrupts = <27>;
-			clocks = <&ccu2 CLK_APB2_UART3>, <&ccu1 CLK_CPU_UART3>;
-			clock-names = "uartclk", "reg";
-			resets = <&rgu 47>;
-			dmas = <&dmamux  7 1 2
-				&dmamux  8 1 2
-				&dmamux 13 3 2
-				&dmamux 14 3 2>;
-			dma-names = "tx", "rx", "rx", "tx";
-			status = "disabled";
-		};
-
-		timer2: timer@400c3000 {
-			compatible = "nxp,lpc3220-timer";
-			reg = <0x400c3000 0x1000>;
-			interrupts = <14>;
-			clocks = <&ccu1 CLK_CPU_TIMER2>;
-			clock-names = "timerclk";
-			resets = <&rgu 34>;
-		};
-
-		timer3: timer@400c4000 {
-			compatible = "nxp,lpc3220-timer";
-			reg = <0x400c4000 0x1000>;
-			interrupts = <15>;
-			clocks = <&ccu1 CLK_CPU_TIMER3>;
-			clock-names = "timerclk";
-			resets = <&rgu 35>;
-		};
-
-		ssp1: spi@400c5000 {
-			compatible = "arm,pl022", "arm,primecell";
-			reg = <0x400c5000 0x1000>;
-			interrupts = <23>;
-			clocks = <&ccu2 CLK_APB2_SSP1>, <&ccu1 CLK_CPU_SSP1>;
-			clock-names = "sspclk", "apb_pclk";
-			resets = <&rgu 51>;
-			dmas = <&dmamux 11 2 2
-				&dmamux 12 2 2
-				&dmamux  3 3 2
-				&dmamux  4 3 2
-				&dmamux  5 2 2
-				&dmamux  6 2 2
-				&dmamux 13 2 2
-				&dmamux 14 2 2>;
-			dma-names = "rx", "tx", "tx", "rx",
-				    "tx", "rx", "rx", "tx";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c1: i2c@400e0000 {
-			compatible = "nxp,lpc1788-i2c";
-			reg = <0x400e0000 0x1000>;
-			interrupts = <19>;
-			clocks = <&ccu1 CLK_APB3_I2C1>;
-			resets = <&rgu 49>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		dac: dac@400e1000 {
-			compatible = "nxp,lpc1850-dac";
-			reg = <0x400e1000 0x1000>;
-			interrupts = <0>;
-			clocks = <&ccu1 CLK_APB3_DAC>;
-			resets = <&rgu 42>;
-			status = "disabled";
-		};
-
-		can0: can@400e2000 {
-			compatible = "bosch,c_can";
-			reg = <0x400e2000 0x1000>;
-			interrupts = <51>;
-			clocks = <&ccu1 CLK_APB3_CAN0>;
-			resets = <&rgu 55>;
-			status = "disabled";
-		};
-
-		adc0: adc@400e3000 {
-			compatible = "nxp,lpc1850-adc";
-			reg = <0x400e3000 0x1000>;
-			interrupts = <17>;
-			clocks = <&ccu1 CLK_APB3_ADC0>;
-			resets = <&rgu 40>;
-			status = "disabled";
-		};
-
-		adc1: adc@400e4000 {
-			compatible = "nxp,lpc1850-adc";
-			reg = <0x400e4000 0x1000>;
-			interrupts = <21>;
-			clocks = <&ccu1 CLK_APB3_ADC1>;
-			resets = <&rgu 41>;
-			status = "disabled";
-		};
-
-		gpio: gpio@400f4000 {
-			compatible = "nxp,lpc1850-gpio";
-			reg = <0x400f4000 0x4000>;
-			clocks = <&ccu1 CLK_CPU_GPIO>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			gpio-ranges =	<&pinctrl LPC_GPIO(0,0)  LPC_PIN(0,0)  2>,
-					<&pinctrl LPC_GPIO(0,4)  LPC_PIN(1,0)  1>,
-					<&pinctrl LPC_GPIO(0,8)  LPC_PIN(1,1)  4>,
-					<&pinctrl LPC_GPIO(1,8)  LPC_PIN(1,5)  2>,
-					<&pinctrl LPC_GPIO(1,0)  LPC_PIN(1,7)  8>,
-					<&pinctrl LPC_GPIO(0,2)  LPC_PIN(1,15) 2>,
-					<&pinctrl LPC_GPIO(0,12) LPC_PIN(1,17) 2>,
-					<&pinctrl LPC_GPIO(0,15) LPC_PIN(1,20) 1>,
-					<&pinctrl LPC_GPIO(5,0)  LPC_PIN(2,0)  7>,
-					<&pinctrl LPC_GPIO(0,7)  LPC_PIN(2,7)  1>,
-					<&pinctrl LPC_GPIO(5,7)  LPC_PIN(2,8)  1>,
-					<&pinctrl LPC_GPIO(1,10) LPC_PIN(2,9)  1>,
-					<&pinctrl LPC_GPIO(0,14) LPC_PIN(2,10) 1>,
-					<&pinctrl LPC_GPIO(1,11) LPC_PIN(2,11) 3>,
-					<&pinctrl LPC_GPIO(5,8)  LPC_PIN(3,1)  2>,
-					<&pinctrl LPC_GPIO(1,14) LPC_PIN(3,4)  2>,
-					<&pinctrl LPC_GPIO(0,6)  LPC_PIN(3,6)  1>,
-					<&pinctrl LPC_GPIO(5,10) LPC_PIN(3,7)  2>,
-					<&pinctrl LPC_GPIO(2,0)  LPC_PIN(4,0)  7>,
-					<&pinctrl LPC_GPIO(5,12) LPC_PIN(4,8)  3>,
-					<&pinctrl LPC_GPIO(2,9)  LPC_PIN(5,0)  7>,
-					<&pinctrl LPC_GPIO(2,7)  LPC_PIN(5,7)  1>,
-					<&pinctrl LPC_GPIO(3,0)  LPC_PIN(6,1)  5>,
-					<&pinctrl LPC_GPIO(0,5)  LPC_PIN(6,6)  1>,
-					<&pinctrl LPC_GPIO(5,15) LPC_PIN(6,7)  2>,
-					<&pinctrl LPC_GPIO(3,5)  LPC_PIN(6,9)  3>,
-					<&pinctrl LPC_GPIO(2,8)  LPC_PIN(6,12) 1>,
-					<&pinctrl LPC_GPIO(3,8)  LPC_PIN(7,0)  8>,
-					<&pinctrl LPC_GPIO(4,0)  LPC_PIN(8,0)  8>,
-					<&pinctrl LPC_GPIO(4,12) LPC_PIN(9,0)  4>,
-					<&pinctrl LPC_GPIO(5,17) LPC_PIN(9,4)  2>,
-					<&pinctrl LPC_GPIO(4,11) LPC_PIN(9,6)  1>,
-					<&pinctrl LPC_GPIO(4,8)  LPC_PIN(a,1)  3>,
-					<&pinctrl LPC_GPIO(5,19) LPC_PIN(a,4)  1>,
-					<&pinctrl LPC_GPIO(5,20) LPC_PIN(b,0)  7>,
-					<&pinctrl LPC_GPIO(6,0)  LPC_PIN(c,1) 14>,
-					<&pinctrl LPC_GPIO(6,14) LPC_PIN(d,0) 17>,
-					<&pinctrl LPC_GPIO(7,0)  LPC_PIN(e,0) 16>,
-					<&pinctrl LPC_GPIO(7,16) LPC_PIN(f,1)  3>,
-					<&pinctrl LPC_GPIO(7,19) LPC_PIN(f,5)  7>;
-		};
-	};
-};
-
-&nvic {
-	arm,num-irq-priority-bits = <3>;
-};
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts b/arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts
deleted file mode 100644
index 5ff43c825944..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc4337-ciaa.dts
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * CIAA NXP LPC4337 (http://www.proyecto-ciaa.com.ar)
- *
- * Copyright (C) 2015 VanguardiaSur - www.vanguardiasur.com.ar
- *
- * This code is released using a dual license strategy: BSD/GPL
- * You can choose the licence that better fits your requirements.
- *
- * Released under the terms of 3-clause BSD License
- * Released under the terms of GNU General Public License Version 2.0
- */
-/dts-v1/;
-
-#include "lpc18xx.dtsi"
-#include "lpc4357.dtsi"
-
-#include "dt-bindings/gpio/gpio.h"
-
-/ {
-	model = "CIAA NXP LPC4337";
-	compatible = "ciaa,lpc4337", "nxp,lpc4337", "nxp,lpc4350";
-
-	aliases {
-		serial0 = &uart2;
-		serial1 = &uart3;
-	};
-
-	chosen {
-		bootargs = "console=ttyS0,115200 earlyprintk";
-		stdout-path = &uart2;
-	};
-
-	memory@28000000 {
-		device_type = "memory";
-		reg = <0x28000000 0x0800000>; /* 8 MB */
-	};
-};
-
-&pinctrl {
-	enet_rmii_pins: enet-rmii-pins {
-		enet_rmii_rxd_cfg {
-			pins = "p1_15", "p0_0";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_rmii_txd_cfg {
-			pins = "p1_18", "p1_20";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_rmii_rx_dv_cfg {
-			pins = "p1_16";
-			function = "enet";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_rmii_tx_en_cfg {
-			pins = "p0_1";
-			function = "enet";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_ref_clk_cfg {
-			pins = "p1_19";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_mdio_cfg {
-			pins = "p1_17";
-			function = "enet";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_mdc_cfg {
-			pins = "p7_7";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-	};
-
-	i2c0_pins: i2c0-pins {
-		i2c0_pins_cfg {
-			pins = "i2c0_scl", "i2c0_sda";
-			function = "i2c0";
-			input-enable;
-		};
-	};
-
-	ssp_pins: ssp-pins {
-		ssp1_cs_cfg {
-			pins = "p6_7";
-			function = "gpio";
-			bias-pull-up;
-			bias-disable;
-		};
-
-		ssp1_miso_mosi_cfg {
-			pins = "p1_3", "p1_4";
-			function = "ssp1";
-			slew-rate = <1>;
-			bias-pull-down;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		ssp1_sck_cfg {
-			pins = "pf_4";
-			function = "ssp1";
-			slew-rate = <1>;
-			bias-disable;
-		};
-	};
-
-	uart2_pins: uart2-pins {
-		uart2_rx_cfg {
-			pins = "p7_2";
-			function = "uart2";
-			bias-disable;
-			input-enable;
-		};
-
-		uart2_tx_cfg {
-			pins = "p7_1";
-			function = "uart2";
-			bias-disable;
-		};
-	};
-
-	uart3_pins: uart3-pins {
-		uart3_rx_cfg {
-			pins = "p2_4";
-			function = "uart3";
-			bias-disable;
-			input-enable;
-		};
-
-		uart3_tx_cfg {
-			pins = "p2_3";
-			function = "uart3";
-			bias-disable;
-		};
-	};
-};
-
-&enet_tx_clk {
-	clock-frequency = <50000000>;
-};
-
-&i2c0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c0_pins>;
-	clock-frequency = <400000>;
-
-	eeprom@50 {
-		compatible = "microchip,24c512", "atmel,24c512";
-		reg = <0x50>;
-	};
-
-	eeprom@51 {
-		compatible = "microchip,24c02", "atmel,24c02";
-		reg = <0x51>;
-	};
-
-	eeprom@54 {
-		compatible = "microchip,24c512", "atmel,24c512";
-		reg = <0x54>;
-	};
-};
-
-&mac {
-	status = "okay";
-	phy-mode = "rmii";
-	pinctrl-names = "default";
-	pinctrl-0 = <&enet_rmii_pins>;
-};
-
-&sct_pwm {
-	status = "okay";
-};
-
-&ssp1 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&ssp_pins>;
-	cs-gpios = <&gpio LPC_GPIO(5,15) GPIO_ACTIVE_HIGH>;
-	num-cs = <1>;
-};
-
-&uart2 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart2_pins>;
-};
-
-&uart3 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart3_pins>;
-};
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc4350-hitex-eval.dts b/arch/arm/boot/dts/nxp/lpc/lpc4350-hitex-eval.dts
deleted file mode 100644
index 18f757c56905..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc4350-hitex-eval.dts
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * Hitex LPC4350 Evaluation Board
- *
- * Copyright 2015 Ariel D'Alessandro <ariel.dalessandro@gmail.com>
- *
- * This code is released using a dual license strategy: BSD/GPL
- * You can choose the licence that better fits your requirements.
- *
- * Released under the terms of 3-clause BSD License
- * Released under the terms of GNU General Public License Version 2.0
- *
- */
-/dts-v1/;
-
-#include "lpc18xx.dtsi"
-#include "lpc4350.dtsi"
-
-#include "dt-bindings/input/input.h"
-#include "dt-bindings/gpio/gpio.h"
-
-/ {
-	model = "Hitex LPC4350 Evaluation Board";
-	compatible = "hitex,lpc4350-eval-board", "nxp,lpc4350";
-
-	aliases {
-		serial0 = &uart0;
-		serial1 = &uart1;
-		serial2 = &uart2;
-		serial3 = &uart3;
-	};
-
-	chosen {
-		stdout-path = &uart0;
-	};
-
-	memory@28000000 {
-		device_type = "memory";
-		reg = <0x28000000 0x800000>; /* 8 MB */
-	};
-
-	pca_buttons {
-		compatible = "gpio-keys-polled";
-		poll-interval = <100>;
-		autorepeat;
-
-		button-0 {
-			label = "joy:right";
-			linux,code = <KEY_RIGHT>;
-			gpios = <&pca_gpio 8 GPIO_ACTIVE_LOW>;
-		};
-
-		button-1 {
-			label = "joy:up";
-			linux,code = <KEY_UP>;
-			gpios = <&pca_gpio 9 GPIO_ACTIVE_LOW>;
-		};
-
-
-		button-2 {
-			label = "joy:enter";
-			linux,code = <KEY_ENTER>;
-			gpios = <&pca_gpio 10 GPIO_ACTIVE_LOW>;
-		};
-
-		button-3 {
-			label = "joy:left";
-			linux,code = <KEY_LEFT>;
-			gpios = <&pca_gpio 11 GPIO_ACTIVE_LOW>;
-		};
-
-		button-4 {
-			label = "joy:down";
-			linux,code = <KEY_DOWN>;
-			gpios = <&pca_gpio 12 GPIO_ACTIVE_LOW>;
-		};
-
-		button-5 {
-			label = "user:sw3";
-			linux,code = <KEY_F1>;
-			gpios = <&pca_gpio 13 GPIO_ACTIVE_LOW>;
-		};
-
-		button-6 {
-			label = "user:sw4";
-			linux,code = <KEY_F2>;
-			gpios = <&pca_gpio 14 GPIO_ACTIVE_LOW>;
-		};
-
-		button-7 {
-			label = "user:sw5";
-			linux,code = <KEY_F3>;
-			gpios = <&pca_gpio 15 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	pca_leds {
-		compatible = "gpio-leds";
-
-		led0 {
-			label = "ext:led0";
-			gpios = <&pca_gpio 0 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "heartbeat";
-		};
-
-		led1 {
-			label = "ext:led1";
-			gpios = <&pca_gpio 1 GPIO_ACTIVE_LOW>;
-		};
-
-		led2 {
-			label = "ext:led2";
-			gpios = <&pca_gpio 2 GPIO_ACTIVE_LOW>;
-		};
-
-		led3 {
-			label = "ext:led3";
-			gpios = <&pca_gpio 3 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	vcc: vcc_fixed {
-		compatible = "regulator-fixed";
-		regulator-name = "3v3io";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-};
-
-&pinctrl {
-	adc1_pins: adc1-pins {
-		adc1_pins_cfg {
-			pins = "pf_9";
-			function = "adc";
-			input-disable;
-			bias-disable;
-		};
-	};
-
-	emc_pins: emc-pins {
-		emc_addr0_23_cfg {
-			pins =	"p2_9",  "p2_10", "p2_11", "p2_12",
-				"p2_13", "p1_0",  "p1_1",  "p1_2",
-				"p2_8",  "p2_7",  "p2_6",  "p2_2",
-				"p2_1",  "p2_0",  "p6_8",  "p6_7",
-				"pd_16", "pd_15", "pe_0",  "pe_1",
-				"pe_2",  "pe_3",  "pe_4",  "pa_4";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_data0_15_cfg {
-			pins =	"p1_7",  "p1_8",  "p1_9",  "p1_10",
-				"p1_11", "p1_12", "p1_13", "p1_14",
-				"p5_4",  "p5_5",  "p5_6",  "p5_7",
-				"p5_0",  "p5_1",  "p5_2",  "p5_3";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_we_oe_cfg {
-			pins = "p1_6", "p1_3";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_bls0_3_cfg {
-			pins = "p1_4", "p6_6", "pd_13", "pd_10";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_cs0_cs2_cfg {
-			pins = "p1_5", "pd_12";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_dqm0_3_cfg {
-			pins = "p6_12", "p6_10", "pd_0", "pe_13";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_ras_cas_cfg {
-			pins = "p6_5", "p6_4";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_dycs0_cfg {
-			pins = "p6_9";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_cke_cfg {
-			pins = "p6_11";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_clock_cfg {
-			pins = "clk0", "clk1", "clk2", "clk3";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-	};
-
-	enet_mii_pins: enet-mii-pins {
-		enet_mii_rxd0_3_cfg {
-			pins = "p1_15", "p0_0", "p9_3", "p9_2";
-			function = "enet";
-			bias-disable;
-			input-enable;
-		};
-
-		enet_mii_txd0_3_cfg {
-			pins = "p1_18", "p1_20", "p9_4", "p9_5";
-			function = "enet";
-			bias-disable;
-		};
-
-		enet_mii_crs_col_cfg {
-			pins = "p9_0", "p9_6";
-			function = "enet";
-			bias-disable;
-			input-enable;
-		};
-
-		enet_mii_rx_clk_dv_er_cfg {
-			pins = "pc_0", "p1_16", "p9_1";
-			function = "enet";
-			bias-disable;
-			input-enable;
-		};
-
-		enet_mii_tx_clk_en_cfg {
-			pins = "p1_19", "p0_1";
-			function = "enet";
-			bias-disable;
-			input-enable;
-		};
-
-		enet_mdio_cfg {
-			pins = "p1_17";
-			function = "enet";
-			bias-disable;
-			input-enable;
-		};
-
-		enet_mdc_cfg {
-			pins = "pc_1";
-			function = "enet";
-			bias-disable;
-		};
-	};
-
-	i2c0_pins: i2c0-pins {
-		i2c0_pins_cfg {
-			pins = "i2c0_scl", "i2c0_sda";
-			function = "i2c0";
-			input-enable;
-		};
-	};
-
-	spifi_pins: spifi-pins {
-		spifi_clk_cfg {
-			pins = "p3_3";
-			function = "spifi";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		spifi_mosi_miso_sio2_3_cfg {
-			pins = "p3_7", "p3_6", "p3_5", "p3_4";
-			function = "spifi";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		spifi_cs_cfg {
-			pins = "p3_8";
-			function = "spifi";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-	};
-
-	uart0_pins: uart0-pins {
-		uart0_rx_cfg {
-			pins = "pf_11";
-			function = "uart0";
-			input-schmitt-disable;
-			bias-disable;
-			input-enable;
-		};
-
-		uart0_tx_cfg {
-			pins = "pf_10";
-			function = "uart0";
-			bias-pull-down;
-		};
-	};
-};
-
-&adc1 {
-	status = "okay";
-	vref-supply = <&vcc>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&adc1_pins>;
-};
-
-&emc {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&emc_pins>;
-
-	cs0 {
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges;
-
-		mpmc,cs = <0>;
-		mpmc,memory-width = <16>;
-		mpmc,byte-lane-low;
-		mpmc,write-enable-delay = <0>;
-		mpmc,output-enable-delay = <0>;
-		mpmc,read-access-delay = <70>;
-		mpmc,page-mode-read-delay = <70>;
-
-		flash@0,0 {
-			compatible = "sst,sst39vf320", "cfi-flash";
-			reg = <0 0 0x400000>;
-			bank-width = <2>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition@0 {
-				label = "bootloader";
-				reg = <0x000000 0x040000>; /* 256 KiB */
-			};
-
-			partition@1 {
-				label = "kernel";
-				reg = <0x040000 0x2C0000>; /* 2.75 MiB */
-			};
-
-			partition@2 {
-				label = "rootfs";
-				reg = <0x300000 0x100000>; /* 1 MiB */
-			};
-		};
-	};
-
-	cs2 {
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges;
-
-		mpmc,cs = <2>;
-		mpmc,memory-width = <16>;
-		mpmc,byte-lane-low;
-		mpmc,write-enable-delay = <0>;
-		mpmc,output-enable-delay = <30>;
-		mpmc,read-access-delay = <90>;
-		mpmc,page-mode-read-delay = <55>;
-		mpmc,write-access-delay = <55>;
-		mpmc,turn-round-delay = <55>;
-
-		ext_sram: sram@2,0 {
-			compatible = "mmio-sram";
-			reg = <2 0 0x80000>; /* 512 KiB SRAM on IS62WV25616 */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 2 0 0x80000>;
-		};
-	};
-};
-
-&enet_tx_clk {
-	clock-frequency = <25000000>;
-};
-
-&i2c0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c0_pins>;
-	clock-frequency = <400000>;
-
-	/* NXP SE97BTP with temperature sensor + eeprom */
-	sensor@18 {
-		compatible = "nxp,se97", "jedec,jc-42.4-temp";
-		reg = <0x18>;
-	};
-
-	eeprom@50 {
-		compatible = "nxp,24c02", "atmel,24c02";
-		reg = <0x50>;
-	};
-
-	pca_gpio: gpio@24 {
-		compatible = "nxp,pca9673";
-		reg = <0x24>;
-		gpio-controller;
-		#gpio-cells = <2>;
-	};
-};
-
-&mac {
-	status = "okay";
-	phy-mode = "mii";
-	pinctrl-names = "default";
-	pinctrl-0 = <&enet_mii_pins>;
-};
-
-&spifi {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&spifi_pins>;
-
-	flash@0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-rx-bus-width = <4>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		partition@0 {
-			label = "bootloader";
-			reg = <0x000000 0x040000>; /* 256 KiB */
-		};
-
-		partition@1 {
-			label = "kernel";
-			reg = <0x040000 0x2c0000>; /* 2.75 MiB */
-		};
-
-		partition@2 {
-			label = "rootfs";
-			reg = <0x300000 0x500000>; /* 5 MiB */
-		};
-	};
-};
-
-&uart0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins>;
-};
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi b/arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi
deleted file mode 100644
index 707d22a219d8..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc4350.dtsi
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * NXP LPC4350 and LPC4330 SoC
- *
- * Copyright 2015 Ariel D'Alessandro <ariel.dalessandro@gmail.com>
- *
- * This code is released using a dual license strategy: BSD/GPL
- * You can choose the licence that better fits your requirements.
- *
- * Released under the terms of 3-clause BSD License
- * Released under the terms of GNU General Public License Version 2.0
- *
- */
-
-/ {
-	compatible = "nxp,lpc4350", "nxp,lpc4330";
-
-	cpus {
-		cpu@0 {
-			compatible = "arm,cortex-m4";
-		};
-	};
-
-	soc {
-		sram0: sram@10000000 {
-			compatible = "mmio-sram";
-			reg = <0x10000000 0x20000>; /* 96 + 32 KiB local SRAM */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-		};
-
-		sram1: sram@10080000 {
-			compatible = "mmio-sram";
-			reg = <0x10080000 0x12000>; /* 64 + 8 KiB local SRAM */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-		};
-
-		sram2: sram@20000000 {
-			compatible = "mmio-sram";
-			reg = <0x20000000 0x10000>; /* 4 x 16 KiB AHB SRAM */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc4357-ea4357-devkit.dts b/arch/arm/boot/dts/nxp/lpc/lpc4357-ea4357-devkit.dts
deleted file mode 100644
index 7ccb4c2ca571..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc4357-ea4357-devkit.dts
+++ /dev/null
@@ -1,624 +0,0 @@
-/*
- * Embedded Artist LPC4357 Developer's Kit
- *
- * Copyright 2015 Joachim Eastwood <manabian@gmail.com>
- *
- * This code is released using a dual license strategy: BSD/GPL
- * You can choose the licence that better fits your requirements.
- *
- * Released under the terms of 3-clause BSD License
- * Released under the terms of GNU General Public License Version 2.0
- *
- */
-/dts-v1/;
-
-#include "lpc18xx.dtsi"
-#include "lpc4357.dtsi"
-
-#include "dt-bindings/input/input.h"
-#include "dt-bindings/gpio/gpio.h"
-
-/ {
-	model = "Embedded Artists' LPC4357 Developer's Kit";
-	compatible = "ea,lpc4357-developers-kit", "nxp,lpc4357", "nxp,lpc4350";
-
-	aliases {
-		serial0 = &uart0;
-		serial1 = &uart1;
-		serial2 = &uart2;
-		serial3 = &uart3;
-	};
-
-	chosen {
-		stdout-path = &uart0;
-	};
-
-	memory@28000000 {
-		device_type = "memory";
-		reg = <0x28000000 0x2000000>; /* 32 MB */
-	};
-
-	vcc: vcc_fixed {
-		compatible = "regulator-fixed";
-		regulator-name = "3v3-supply";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	/* vmmc is controlled by sdmmc host internally */
-	vmmc: vmmc_fixed {
-		compatible = "regulator-fixed";
-		regulator-name = "vmmc-supply";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	gpio_joystick {
-		compatible = "gpio-keys-polled";
-		pinctrl-names = "default";
-		pinctrl-0 = <&gpio_joystick_pins>;
-		poll-interval = <100>;
-		autorepeat;
-
-		button-0 {
-			label = "joy_enter";
-			linux,code = <KEY_ENTER>;
-			gpios = <&gpio LPC_GPIO(4,8) GPIO_ACTIVE_LOW>;
-		};
-
-		button-1 {
-			label = "joy_left";
-			linux,code = <KEY_LEFT>;
-			gpios = <&gpio LPC_GPIO(4,9) GPIO_ACTIVE_LOW>;
-		};
-
-		button-2 {
-			label = "joy_up";
-			linux,code = <KEY_UP>;
-			gpios = <&gpio LPC_GPIO(4,10) GPIO_ACTIVE_LOW>;
-		};
-
-		button-3 {
-			label = "joy_right";
-			linux,code = <KEY_RIGHT>;
-			gpios = <&gpio LPC_GPIO(4,12) GPIO_ACTIVE_LOW>;
-		};
-
-		button-4 {
-			label = "joy_down";
-			linux,code = <KEY_DOWN>;
-			gpios = <&gpio LPC_GPIO(4,13) GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	leds_mmio {
-		compatible = "gpio-leds";
-
-		led1 {
-			gpios = <&mmio_leds 15 GPIO_ACTIVE_HIGH>;
-			linux,default-trigger = "heartbeat";
-		};
-
-		led2 {
-			gpios = <&mmio_leds 14 GPIO_ACTIVE_HIGH>;
-		};
-
-		led3 {
-			gpios = <&mmio_leds 13 GPIO_ACTIVE_HIGH>;
-		};
-
-		led4 {
-			gpios = <&mmio_leds 12 GPIO_ACTIVE_HIGH>;
-		};
-
-		led5 {
-			gpios = <&mmio_leds 11 GPIO_ACTIVE_HIGH>;
-		};
-
-		led6 {
-			gpios = <&mmio_leds 10 GPIO_ACTIVE_HIGH>;
-		};
-
-		led7 {
-			gpios = <&mmio_leds 9 GPIO_ACTIVE_HIGH>;
-		};
-
-		led8 {
-			gpios = <&mmio_leds 8 GPIO_ACTIVE_HIGH>;
-		};
-
-		led9 {
-			gpios = <&mmio_leds 7 GPIO_ACTIVE_HIGH>;
-		};
-
-		led10 {
-			gpios = <&mmio_leds 6 GPIO_ACTIVE_HIGH>;
-		};
-
-		led11 {
-			gpios = <&mmio_leds 5 GPIO_ACTIVE_HIGH>;
-		};
-
-		led12 {
-			gpios = <&mmio_leds 4 GPIO_ACTIVE_HIGH>;
-		};
-
-		led13 {
-			gpios = <&mmio_leds 3 GPIO_ACTIVE_HIGH>;
-		};
-
-		led14 {
-			gpios = <&mmio_leds 2 GPIO_ACTIVE_HIGH>;
-		};
-
-		led15 {
-			gpios = <&mmio_leds 1 GPIO_ACTIVE_HIGH>;
-		};
-
-		led16 {
-			gpios = <&mmio_leds 0 GPIO_ACTIVE_HIGH>;
-		};
-	};
-};
-
-&pinctrl {
-	emc_pins: emc-pins {
-		emc_addr0_23_cfg {
-			pins =	"p2_9",  "p2_10", "p2_11", "p2_12",
-				"p2_13", "p1_0",  "p1_1",  "p1_2",
-				"p2_8",  "p2_7",  "p2_6",  "p2_2",
-				"p2_1",  "p2_0",  "p6_8",  "p6_7",
-				"pd_16", "pd_15", "pe_0",  "pe_1",
-				"pe_2",  "pe_3",  "pe_4",  "pa_4";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_data0_31_cfg {
-			pins =	"p1_7",  "p1_8",  "p1_9",  "p1_10",
-				"p1_11", "p1_12", "p1_13", "p1_14",
-				"p5_4",  "p5_5",  "p5_6",  "p5_7",
-				"p5_0",  "p5_1",  "p5_2",  "p5_3",
-				"pd_2",  "pd_3",  "pd_4",  "pd_5",
-				"pd_6",  "pd_7",  "pd_8",  "pd_9",
-				"pe_5",  "pe_6",  "pe_7",  "pe_8",
-				"pe_9",  "pe_10", "pe_11", "pe_12";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_we_oe_cfg {
-			pins = "p1_6", "p1_3";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_bls0_3_cfg {
-			pins = "p1_4", "p6_6", "pd_13", "pd_10";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_cs0_3_cfg {
-			pins = "p1_5", "p6_3", "pd_12", "pd_11";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_dqm0_3_cfg {
-			pins = "p6_12", "p6_10", "pd_0", "pe_13";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_ras_cas_cfg {
-			pins = "p6_5", "p6_4";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_dycs0_cfg {
-			pins = "p6_9";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_cke_cfg {
-			pins = "p6_11";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		emc_sdram_clock_cfg {
-			pins = "clk0", "clk1", "clk2", "clk3";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-	};
-
-	enet_rmii_pins: enet-rmii-pins {
-		enet_rmii_rxd_cfg {
-			pins = "p1_15", "p0_0";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_rmii_txd_cfg {
-			pins = "p1_18", "p1_20";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_rmii_rx_dv_cfg {
-			pins = "p1_16";
-			function = "enet";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_rmii_tx_en_cfg {
-			pins = "p0_1";
-			function = "enet";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_ref_clk_cfg {
-			pins = "p1_19";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_mdio_cfg {
-			pins = "p1_17";
-			function = "enet";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		enet_mdc_cfg {
-			pins = "pc_1";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-	};
-
-	gpio_joystick_pins: gpio-joystick-pins {
-		gpio_joystick_cfg {
-			pins =	"p9_0", "p9_1", "pa_1", "pa_2", "pa_3";
-			function = "gpio";
-			input-enable;
-			bias-disable;
-		};
-	};
-
-	i2c0_pins: i2c0-pins {
-		i2c0_pins_cfg {
-			pins = "i2c0_scl", "i2c0_sda";
-			function = "i2c0";
-			input-enable;
-		};
-	};
-
-	sdmmc_pins: sdmmc-pins {
-		sdmmc_clk_cfg {
-			pins = "pc_0";
-			function = "sdmmc";
-			slew-rate = <1>;
-			bias-pull-down;
-		};
-
-		sdmmc_cmd_dat0_3_cfg {
-			pins = "pc_4", "pc_5", "pc_6", "pc_7", "pc_10";
-			function = "sdmmc";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		sdmmc_cd_cfg {
-			pins = "pc_8";
-			function = "sdmmc";
-			bias-pull-down;
-			input-enable;
-		};
-
-		sdmmc_pow_cfg {
-			pins = "pc_9";
-			function = "sdmmc";
-			bias-pull-down;
-		};
-	};
-
-	spifi_pins: spifi-pins {
-		spifi_clk_cfg {
-			pins = "p3_3";
-			function = "spifi";
-			slew-rate = <1>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		spifi_mosi_miso_sio2_3_cfg {
-			pins = "p3_7", "p3_6", "p3_5", "p3_4";
-			function = "spifi";
-			slew-rate = <0>;
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		spifi_cs_cfg {
-			pins = "p3_8";
-			function = "spifi";
-			bias-disable;
-		};
-	};
-
-	ssp0_pins: ssp0-pins {
-		ssp0_sck_miso_mosi_cfg {
-			pins = "pf_0", "pf_2", "pf_3";
-			function = "ssp0";
-			slew-rate = <1>;
-			bias-pull-down;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		ssp0_ssel_cfg {
-			pins = "pf_1";
-			function = "ssp0";
-			bias-pull-up;
-		};
-	};
-
-	uart0_pins: uart0-pins {
-		uart0_rx_cfg {
-			pins = "pf_11";
-			function = "uart0";
-			input-schmitt-disable;
-			bias-disable;
-			input-enable;
-		};
-
-		uart0_tx_cfg {
-			pins = "pf_10";
-			function = "uart0";
-			bias-pull-down;
-		};
-	};
-
-	uart3_pins: uart3-pins {
-		uart3_rx_cfg {
-			pins = "p2_4";
-			function = "uart3";
-			input-schmitt-disable;
-			bias-disable;
-			input-enable;
-		};
-
-		uart3_tx_cfg {
-			pins = "p9_3";
-			function = "uart3";
-			bias-pull-down;
-		};
-	};
-
-	usb0_pins: usb0-pins {
-		usb0_pwr_enable_cfg {
-			pins = "p2_3";
-			function = "usb0";
-		};
-
-		usb0_pwr_fault_cfg {
-			pins = "p8_0";
-			function = "usb0";
-			bias-disable;
-			input-enable;
-		};
-	};
-};
-
-&adc0 {
-	status = "okay";
-	vref-supply = <&vcc>;
-};
-
-&i2c0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c0_pins>;
-	clock-frequency = <400000>;
-
-	mma7455@1d {
-		compatible = "fsl,mma7455";
-		reg = <0x1d>;
-	};
-
-	temperature-sensor@48 {
-		compatible = "national,lm75b";
-		reg = <0x48>;
-	};
-
-	eeprom@57 {
-		compatible = "microchip,24c64", "atmel,24c64";
-		reg = <0x57>;
-	};
-};
-
-&dac {
-	status = "okay";
-	vref-supply = <&vcc>;
-};
-
-&emc {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&emc_pins>;
-
-	cs0 {
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges;
-
-		mpmc,cs = <0>;
-		mpmc,memory-width = <16>;
-		mpmc,byte-lane-low;
-		mpmc,write-enable-delay = <0>;
-		mpmc,output-enable-delay = <0>;
-		mpmc,read-access-delay = <70>;
-		mpmc,page-mode-read-delay = <70>;
-
-		flash@0,0 {
-			compatible = "sst,sst39vf320", "cfi-flash";
-			reg = <0 0 0x400000>;
-			bank-width = <2>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			partition@0 {
-				label = "bootloader";
-				reg = <0x000000 0x040000>; /* 256 KiB */
-			};
-
-			partition@1 {
-				label = "kernel";
-				reg = <0x040000 0x2c0000>; /* 2.75 MiB */
-			};
-
-			partition@2 {
-				label = "rootfs";
-				reg = <0x300000 0x100000>; /* 1 MiB */
-			};
-		};
-	};
-
-	cs2 {
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges;
-
-		mpmc,cs = <2>;
-		mpmc,memory-width = <16>;
-
-		mmio_leds: gpio@2,0 {
-			compatible = "ti,7416374";
-			reg = <2 0 0x2>;
-			gpio-controller;
-			#gpio-cells = <2>;
-		};
-
-	};
-};
-
-&enet_tx_clk {
-	clock-frequency = <50000000>;
-};
-
-&mac {
-	status = "okay";
-	phy-mode = "rmii";
-	pinctrl-names = "default";
-	pinctrl-0 = <&enet_rmii_pins>;
-};
-
-&mmcsd {
-	status = "okay";
-	bus-width = <4>;
-	vmmc-supply = <&vmmc>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&sdmmc_pins>;
-};
-
-&spifi {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&spifi_pins>;
-
-	flash@0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-cpol;
-		spi-cpha;
-		spi-rx-bus-width = <4>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-		partition@0 {
-			label = "data";
-			reg = <0 0x200000>;
-		};
-	};
-};
-
-&ssp0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&ssp0_pins>;
-	num-cs = <1>;
-};
-
-&uart0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins>;
-};
-
-&uart3 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart3_pins>;
-};
-
-&usb0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&usb0_pins>;
-};
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts b/arch/arm/boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts
deleted file mode 100644
index d18f2b2caf68..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc4357-myd-lpc4357.dts
+++ /dev/null
@@ -1,621 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
-/*
- * MYIR Tech MYD-LPC4357 Development Board with 800x480 7" TFT panel
- *
- * Copyright (C) 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
- */
-
-/dts-v1/;
-
-#include "lpc18xx.dtsi"
-#include "lpc4357.dtsi"
-
-#include <dt-bindings/gpio/gpio.h>
-
-/ {
-	model = "MYIR Tech LPC4357 Development Board";
-	compatible = "myir,myd-lpc4357", "nxp,lpc4357";
-
-	chosen {
-		stdout-path = "serial3:115200n8";
-	};
-
-	memory@28000000 {
-		device_type = "memory";
-		reg = <0x28000000 0x2000000>;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		pinctrl-names = "default";
-		pinctrl-0 = <&led_pins>;
-
-		led1 {
-			gpios = <&gpio LPC_GPIO(6,15) GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led2 {
-			gpios = <&gpio LPC_GPIO(6,16) GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led3 {
-			gpios = <&gpio LPC_GPIO(6,17) GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led4 {
-			gpios = <&gpio LPC_GPIO(6,10) GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led5 {
-			gpios = <&gpio LPC_GPIO(7,14) GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-
-		led6 {
-			gpios = <&gpio LPC_GPIO(6,14) GPIO_ACTIVE_LOW>;
-			default-state = "off";
-		};
-	};
-
-	panel: panel {
-		compatible = "innolux,at070tn92";
-		power-supply = <&vcc>;
-
-		port {
-			panel_input: endpoint {
-				remote-endpoint = <&lcdc_output>;
-			};
-		};
-	};
-
-	vcc: vcc_fixed {
-		compatible = "regulator-fixed";
-		regulator-name = "vcc-supply";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	vmmc: vmmc_fixed {
-		compatible = "regulator-fixed";
-		regulator-name = "vmmc-supply";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-};
-
-&pinctrl {
-	can0_pins: can0-pins {
-		can_rd_cfg {
-			pins = "p3_1";
-			function = "can0";
-			input-enable;
-		};
-
-		can_td_cfg {
-			pins = "p3_2";
-			function = "can0";
-		};
-	};
-
-	can1_pins: can1-pins {
-		can_rd_cfg {
-			pins = "pe_1";
-			function = "can1";
-			input-enable;
-		};
-
-		can_td_cfg {
-			pins = "pe_0";
-			function = "can1";
-		};
-	};
-
-	emc_pins: emc-pins {
-		emc_addr0_22_cfg {
-			pins = "p2_9",  "p2_10", "p2_11", "p2_12",
-			       "p2_13", "p1_0",  "p1_1",  "p1_2",
-			       "p2_8",  "p2_7",  "p2_6",  "p2_2",
-			       "p2_1",  "p2_0",  "p6_8",  "p6_7",
-			       "pd_16", "pd_15", "pe_0",  "pe_1",
-			       "pe_2",  "pe_3",  "pe_4";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_data0_15_cfg {
-			pins = "p1_7",  "p1_8",  "p1_9",  "p1_10",
-			       "p1_11", "p1_12", "p1_13", "p1_14",
-			       "p5_4",  "p5_5",  "p5_6",  "p5_7",
-			       "p5_0",  "p5_1",  "p5_2",  "p5_3";
-			function = "emc";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_we_oe_cfg {
-			pins = "p1_6", "p1_3";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_cs0_cfg {
-			pins = "p1_5";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_sdram_dqm0_1_cfg {
-			pins = "p6_12", "p6_10";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_sdram_ras_cas_cfg {
-			pins = "p6_5", "p6_4";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_sdram_dycs0_cfg {
-			pins = "p6_9";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_sdram_cke_cfg {
-			pins = "p6_11";
-			function = "emc";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		emc_sdram_clock_cfg {
-			pins = "clk0";
-			function = "emc";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-disable;
-		};
-	};
-
-	enet_rmii_pins: enet-rmii-pins {
-		enet_rmii_rxd_cfg {
-			pins = "p1_15", "p0_0";
-			function = "enet";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		enet_rmii_txd_cfg {
-			pins = "p1_18", "p1_20";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		enet_rmii_rx_dv_cfg {
-			pins = "p1_16";
-			function = "enet";
-			input-enable;
-			input-schmitt-disable;
-			bias-disable;
-		};
-
-		enet_mdio_cfg {
-			pins = "p1_17";
-			function = "enet";
-			input-enable;
-			input-schmitt-disable;
-			bias-disable;
-		};
-
-		enet_mdc_cfg {
-			pins = "pc_1";
-			function = "enet";
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		enet_rmii_tx_en_cfg {
-			pins = "p0_1";
-			function = "enet";
-			bias-disable;
-		};
-
-		enet_ref_clk_cfg {
-			pins = "p1_19";
-			function = "enet";
-			slew-rate = <1>;
-			input-enable;
-			input-schmitt-disable;
-			bias-disable;
-		};
-	};
-
-	i2c0_pins: i2c0-pins {
-		i2c0_pins_cfg {
-			pins = "i2c0_scl", "i2c0_sda";
-			function = "i2c0";
-			input-enable;
-		};
-	};
-
-	i2c1_pins: i2c1-pins {
-		i2c1_pins_cfg {
-			pins = "pe_15", "pe_13";
-			function = "i2c1";
-			input-enable;
-		};
-	};
-
-	lcd_pins: lcd-pins {
-		lcd_vd0_23_cfg {
-			pins = "p4_1", "p4_4", "p4_3",  "p4_2",
-			       "p8_7", "p8_6", "p8_5",  "p8_4",
-			       "p7_5", "p4_8", "p4_10", "p4_9",
-			       "p8_3", "pb_6", "pb_5",  "pb_4",
-			       "p7_4", "p7_3", "p7_2",  "p7_1",
-			       "pb_3", "pb_2", "pb_1",  "pb_0";
-			function = "lcd";
-		};
-
-		lcd_vsync_en_dclk_lp_pwr_cfg {
-			pins = "p4_5", "p4_6", "p4_7", "p7_6", "p7_7";
-			function = "lcd";
-		};
-	};
-
-	led_pins: led-pins {
-		led_1_6_cfg {
-			pins = "pd_1", "pd_2", "pd_3", "pc_11", "pe_14", "pd_0";
-			function = "gpio";
-			bias-pull-down;
-		};
-	};
-
-	sdmmc_pins: sdmmc-pins {
-		sdmmc_clk_cfg {
-			pins = "pc_0";
-			function = "sdmmc";
-			slew-rate = <1>;
-			bias-pull-down;
-		};
-
-		sdmmc_cmd_dat0_3_cfg {
-			pins = "pc_4", "pc_5", "pc_6", "pc_7", "pc_10";
-			function = "sdmmc";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		sdmmc_cd_cfg {
-			pins = "pc_8";
-			function = "sdmmc";
-			input-enable;
-			bias-pull-down;
-		};
-	};
-
-	spifi_pins: spifi-pins {
-		spifi_sck_cfg {
-			pins = "p3_3";
-			function = "spifi";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		spifi_mosi_miso_sio2_sio3_cfg {
-			pins = "p3_7", "p3_6", "p3_5", "p3_4";
-			function = "spifi";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-disable;
-		};
-
-		spifi_cs_cfg {
-			pins = "p3_8";
-			function = "spifi";
-			bias-disable;
-		};
-	};
-
-	ssp1_pins: ssp1-pins {
-		ssp1_sck_cfg {
-			pins = "pf_4";
-			function = "ssp1";
-			slew-rate = <1>;
-			bias-pull-down;
-		};
-
-		ssp1_miso_cfg {
-			pins = "pf_6";
-			function = "ssp1";
-			input-enable;
-			input-schmitt-disable;
-			slew-rate = <1>;
-			bias-pull-down;
-		};
-
-		ssp1_mosi_cfg {
-			pins = "pf_7";
-			function = "ssp1";
-			slew-rate = <1>;
-			bias-pull-down;
-		};
-
-		ssp1_ssel_cfg {
-			pins = "pf_5";
-			function = "gpio";
-			bias-disable;
-		};
-	};
-
-	uart0_pins: uart0-pins {
-		uart0_rxd_cfg {
-			pins = "pf_11";
-			function = "uart0";
-			input-enable;
-			input-schmitt-disable;
-			bias-disable;
-		};
-
-		uart0_clk_dir_txd_cfg {
-			pins = "pf_8", "pf_9", "pf_10";
-			function = "uart0";
-			bias-pull-down;
-		};
-	};
-
-	uart1_pins: uart1-pins {
-		uart1_rxd_cfg {
-			pins = "pc_14";
-			function = "uart1";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		uart1_dtr_txd_cfg {
-			pins = "pc_12", "pc_13";
-			function = "uart1";
-			bias-pull-down;
-		};
-	};
-
-	uart2_pins: uart2-pins {
-		uart2_rxd_cfg {
-			pins = "pa_2";
-			function = "uart2";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		uart2_txd_cfg {
-			pins = "pa_1";
-			function = "uart2";
-			bias-pull-down;
-		};
-	};
-
-	uart3_pins: uart3-pins {
-		uart3_rx_cfg {
-			pins = "p2_4";
-			function = "uart3";
-			bias-disable;
-			input-enable;
-			input-schmitt-disable;
-		};
-
-		uart3_tx_cfg {
-			pins = "p2_3";
-			function = "uart3";
-			bias-pull-down;
-		};
-	};
-
-	usb0_pins: usb0-pins {
-		usb0_pwr_enable_cfg {
-			pins = "p6_3";
-			function = "usb0";
-		};
-
-		usb0_pwr_fault_cfg {
-			pins = "p8_0";
-			function = "usb0";
-			bias-disable;
-			input-enable;
-		};
-	};
-};
-
-&adc1 {
-	status = "okay";
-	vref-supply = <&vcc>;
-};
-
-&can0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&can0_pins>;
-};
-
-/* Pin conflict with EMC, muxed by JP5 and JP6 */
-&can1 {
-	status = "disabled";
-	pinctrl-names = "default";
-	pinctrl-0 = <&can1_pins>;
-};
-
-&emc {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&emc_pins>;
-
-	cs0 {
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges;
-
-		mpmc,cs = <0>;
-		mpmc,memory-width = <16>;
-		mpmc,byte-lane-low;
-		mpmc,write-enable-delay = <0>;
-		mpmc,output-enable-delay = <0>;
-		mpmc,read-access-delay = <70>;
-		mpmc,page-mode-read-delay = <70>;
-
-		/* SST/Microchip SST39VF1601 */
-		flash@0,0 {
-			compatible = "cfi-flash";
-			reg = <0 0 0x400000>;
-			bank-width = <2>;
-		};
-	};
-};
-
-&enet_tx_clk {
-	clock-frequency = <50000000>;
-};
-
-&i2c0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c0_pins>;
-	clock-frequency = <400000>;
-};
-
-&i2c1 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c1_pins>;
-	clock-frequency = <400000>;
-
-	sensor@49 {
-		compatible = "national,lm75";
-		reg = <0x49>;
-	};
-
-	eeprom@50 {
-		compatible = "atmel,24c512";
-		reg = <0x50>;
-	};
-};
-
-&lcdc {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&lcd_pins>;
-
-	max-memory-bandwidth = <92240000>;
-
-	port {
-		lcdc_output: endpoint {
-			remote-endpoint = <&panel_input>;
-			arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
-		};
-	};
-};
-
-&mac {
-	status = "okay";
-	phy-mode = "rmii";
-	pinctrl-names = "default";
-	pinctrl-0 = <&enet_rmii_pins>;
-	phy-handle = <&phy1>;
-
-	mdio {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "snps,dwmac-mdio";
-
-		phy1: ethernet-phy@1 {
-			reg = <1>;
-		};
-	};
-};
-
-&mmcsd {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&sdmmc_pins>;
-	bus-width = <4>;
-	vmmc-supply = <&vmmc>;
-};
-
-/* Pin conflict with SSP0, the latter is routed to J17 pin header */
-&spifi {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&spifi_pins>;
-
-	/* Atmel AT25DF321A */
-	flash@0 {
-		compatible = "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <51000000>;
-		spi-cpol;
-		spi-cpha;
-	};
-};
-
-&ssp1 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&ssp1_pins>;
-	num-cs = <1>;
-	cs-gpios = <&gpio LPC_GPIO(7,19) GPIO_ACTIVE_LOW>;
-};
-
-/* Routed to J17 pin header */
-&uart0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart0_pins>;
-};
-
-/* RS485 */
-&uart1 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart1_pins>;
-};
-
-/* Routed to J17 pin header */
-&uart2 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart2_pins>;
-};
-
-&uart3 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&uart3_pins>;
-};
-
-&usb0 {
-	status = "okay";
-	pinctrl-names = "default";
-	pinctrl-0 = <&usb0_pins>;
-};
diff --git a/arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi b/arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi
deleted file mode 100644
index d138ee7869ff..000000000000
--- a/arch/arm/boot/dts/nxp/lpc/lpc4357.dtsi
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * NXP LPC435x, LPC433x, LPC4327, LPC4325, LPC4317 and LPC4315 SoC
- *
- * Copyright 2015 Joachim Eastwood <manabian@gmail.com>
- *
- * This code is released using a dual license strategy: BSD/GPL
- * You can choose the licence that better fits your requirements.
- *
- * Released under the terms of 3-clause BSD License
- * Released under the terms of GNU General Public License Version 2.0
- *
- */
-
-/ {
-	compatible = "nxp,lpc4357";
-
-	cpus {
-		cpu@0 {
-			compatible = "arm,cortex-m4";
-		};
-	};
-
-	soc {
-		sram0: sram@10000000 {
-			compatible = "mmio-sram";
-			reg = <0x10000000 0x8000>; /* 32 KiB local SRAM */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-		};
-
-		sram1: sram@10080000 {
-			compatible = "mmio-sram";
-			reg = <0x10080000 0xa000>; /* 32 + 8 KiB local SRAM */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-		};
-
-		sram2: sram@20000000 {
-			compatible = "mmio-sram";
-			reg = <0x20000000 0x10000>; /* 4 x 16 KiB AHB SRAM */
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-		};
-	};
-};
-
-&eeprom {
-	status = "okay";
-};
diff --git a/arch/arm/configs/lpc18xx_defconfig b/arch/arm/configs/lpc18xx_defconfig
deleted file mode 100644
index f142a6637ede..000000000000
--- a/arch/arm/configs/lpc18xx_defconfig
+++ /dev/null
@@ -1,158 +0,0 @@
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_RD_BZIP2 is not set
-# CONFIG_RD_LZMA is not set
-# CONFIG_RD_XZ is not set
-# CONFIG_RD_LZO is not set
-# CONFIG_RD_LZ4 is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-# CONFIG_UID16 is not set
-CONFIG_BASE_SMALL=y
-# CONFIG_FUTEX is not set
-# CONFIG_EPOLL is not set
-# CONFIG_SIGNALFD is not set
-# CONFIG_EVENTFD is not set
-# CONFIG_AIO is not set
-CONFIG_EXPERT=y
-# CONFIG_MMU is not set
-CONFIG_ARCH_LPC18XX=y
-CONFIG_SET_MEM_PARAM=y
-CONFIG_DRAM_BASE=0x28000000
-CONFIG_DRAM_SIZE=0x02000000
-CONFIG_FLASH_MEM_BASE=0x1b000000
-CONFIG_FLASH_SIZE=0x00080000
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_BINFMT_FLAT=y
-CONFIG_BINFMT_ZFLAT=y
-# CONFIG_COREDUMP is not set
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=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_INET_DIAG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_WIRELESS is not set
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_FW_LOADER is not set
-CONFIG_MTD=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_OF=y
-CONFIG_MTD_SPI_NOR=y
-# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
-CONFIG_SPI_NXP_SPIFI=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_SRAM=y
-CONFIG_EEPROM_AT24=y
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-# CONFIG_BLK_DEV_BSG is not set
-# CONFIG_SCSI_LOWLEVEL is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NET_VENDOR_ARC is not set
-# CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_CIRRUS is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-# CONFIG_NET_VENDOR_HISILICON is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_MICROCHIP is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_NET_VENDOR_QUALCOMM is not set
-# CONFIG_NET_VENDOR_ROCKER is not set
-# CONFIG_NET_VENDOR_SAMSUNG is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-# CONFIG_NET_VENDOR_SMSC is not set
-CONFIG_STMMAC_ETH=y
-# CONFIG_NET_VENDOR_VIA is not set
-# CONFIG_NET_VENDOR_WIZNET is not set
-CONFIG_SMSC_PHY=y
-# CONFIG_USB_NET_DRIVERS is not set
-# CONFIG_WLAN is not set
-CONFIG_INPUT_EVDEV=y
-# CONFIG_KEYBOARD_ATKBD is not set
-CONFIG_KEYBOARD_GPIO=y
-CONFIG_KEYBOARD_GPIO_POLLED=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-# CONFIG_VT is not set
-# CONFIG_UNIX98_PTYS is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C_LPC2K=y
-CONFIG_SPI=y
-CONFIG_SPI_PL022=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_74XX_MMIO=y
-CONFIG_GPIO_PCF857X=y
-CONFIG_SENSORS_JC42=y
-CONFIG_SENSORS_LM75=y
-CONFIG_WATCHDOG=y
-CONFIG_LPC18XX_WATCHDOG=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_DRM=y
-CONFIG_DRM_PL111=y
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_USB=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_ROOT_HUB_TT=y
-CONFIG_USB_EHCI_HCD_PLATFORM=y
-CONFIG_USB_STORAGE=y
-CONFIG_MMC=y
-CONFIG_MMC_DW=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_PCA9532=y
-CONFIG_LEDS_PCA9532_GPIO=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_LPC24XX=y
-CONFIG_DMADEVICES=y
-CONFIG_AMBA_PL08X=y
-CONFIG_LPC18XX_DMAMUX=y
-CONFIG_MEMORY=y
-CONFIG_ARM_PL172_MPMC=y
-CONFIG_IIO=y
-CONFIG_MMA7455_I2C=y
-CONFIG_LPC18XX_ADC=y
-CONFIG_LPC18XX_DAC=y
-CONFIG_IIO_SYSFS_TRIGGER=y
-CONFIG_PWM=y
-CONFIG_PWM_LPC18XX_SCT=y
-CONFIG_PHY_LPC18XX_USB_OTG=y
-CONFIG_NVMEM_LPC18XX_EEPROM=y
-CONFIG_EXT2_FS=y
-# CONFIG_FILE_LOCKING is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY_USER is not set
-CONFIG_JFFS2_FS=y
-# CONFIG_NETWORK_FILESYSTEMS is not set
-CONFIG_PRINTK_TIME=y
-# CONFIG_ENABLE_MUST_CHECK is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_FS=y
-# CONFIG_SLUB_DEBUG is not set
-# CONFIG_SCHED_DEBUG is not set
-CONFIG_DEBUG_LL=y
-CONFIG_EARLY_PRINTK=y
diff --git a/arch/arm/mach-lpc18xx/Makefile b/arch/arm/mach-lpc18xx/Makefile
deleted file mode 100644
index c80d80c199d3..000000000000
--- a/arch/arm/mach-lpc18xx/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-obj-y += board-dt.o
diff --git a/arch/arm/mach-lpc18xx/board-dt.c b/arch/arm/mach-lpc18xx/board-dt.c
deleted file mode 100644
index 4729eb83401a..000000000000
--- a/arch/arm/mach-lpc18xx/board-dt.c
+++ /dev/null
@@ -1,19 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Device Tree board file for NXP LPC18xx/43xx
- *
- * Copyright (C) 2015 Joachim Eastwood <manabian@gmail.com>
- */
-
-#include <asm/mach/arch.h>
-
-static const char *const lpc18xx_43xx_compat[] __initconst = {
-	"nxp,lpc1850",
-	"nxp,lpc4350",
-	"nxp,lpc4370",
-	NULL
-};
-
-DT_MACHINE_START(LPC18XXDT, "NXP LPC18xx/43xx (Device Tree)")
-	.dt_compat = lpc18xx_43xx_compat,
-MACHINE_END
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 10/13] ARM: stm32: remove stm32f4/f7/h7 MCU support
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (8 preceding siblings ...)
  2026-09-08 15:27 ` [PATCH 09/13] ARM: lpc18xx: remove entire platform Arnd Bergmann
@ 2026-09-08 15:28 ` Arnd Bergmann
  2026-09-08 17:36   ` Linus Walleij
  2026-09-08 15:28 ` [PATCH 11/13] ARM: versatile: remove mps2 support Arnd Bergmann
                   ` (3 subsequent siblings)
  13 siblings, 1 reply; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:28 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Christophe Parant, Benjamin Gaignard, Dario Binacchi

From: Arnd Bergmann <arnd@arndb.de>

The stm32 platform started out as a Cortex-M based microcontoller
platform in 2007, with a few of the older products gaining Linux kernel
support in 2016. These days, the only relevant chips for Linux are the
stm32mp1 (Cortex-A7) and stm32mp2 (Cortex-A35) product lines, with the
microcontrollers running smaller RTOSs on new products.

The microcontrollers were marked as deprecated in the linux-7.3LTS
release, which will remain supported for a few more years and
is expected to be sufficient for any of the remaining original users.

Remove the MCU support now, leaving only the stm32mp SoCs in the platform.

Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Christophe Parant <c.parant@phytec.fr>
Cc: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Cc: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Cc: devicetree@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/arch/arm/index.rst              |   5 -
 Documentation/arch/arm/stm32/overview.rst     |   8 +-
 .../arch/arm/stm32/stm32f429-overview.rst     |  25 -
 .../arch/arm/stm32/stm32f746-overview.rst     |  32 -
 .../arch/arm/stm32/stm32f769-overview.rst     |  34 -
 .../arch/arm/stm32/stm32h743-overview.rst     |  33 -
 .../arch/arm/stm32/stm32h750-overview.rst     |  34 -
 arch/arm/Kconfig.debug                        |  38 -
 arch/arm/boot/dts/st/Makefile                 |  11 -
 arch/arm/boot/dts/st/stm32429i-eval.dts       | 349 --------
 arch/arm/boot/dts/st/stm32746g-eval.dts       | 236 ------
 arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi     | 482 -----------
 arch/arm/boot/dts/st/stm32f429-disco.dts      | 243 ------
 arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi   |  91 --
 arch/arm/boot/dts/st/stm32f429.dtsi           | 800 ------------------
 arch/arm/boot/dts/st/stm32f469-disco.dts      | 260 ------
 arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi   |  92 --
 arch/arm/boot/dts/st/stm32f469.dtsi           |  18 -
 arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi     | 436 ----------
 arch/arm/boot/dts/st/stm32f746-disco.dts      | 234 -----
 arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi   |  55 --
 arch/arm/boot/dts/st/stm32f746.dtsi           | 727 ----------------
 .../dts/st/stm32f769-disco-mb1166-reva09.dts  |  13 -
 arch/arm/boot/dts/st/stm32f769-disco.dts      | 243 ------
 arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi   |  55 --
 arch/arm/boot/dts/st/stm32f769.dtsi           |  37 -
 arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi     | 301 -------
 arch/arm/boot/dts/st/stm32h743.dtsi           | 738 ----------------
 arch/arm/boot/dts/st/stm32h743i-disco.dts     | 145 ----
 arch/arm/boot/dts/st/stm32h743i-eval.dts      | 185 ----
 arch/arm/boot/dts/st/stm32h747i-disco.dts     | 149 ----
 arch/arm/boot/dts/st/stm32h750.dtsi           |   6 -
 arch/arm/boot/dts/st/stm32h750i-art-pi.dts    | 229 -----
 arch/arm/configs/stm32_defconfig              |  80 --
 arch/arm/mach-stm32/Kconfig                   |  38 +-
 arch/arm/mach-stm32/board-dt.c                |   7 -
 36 files changed, 7 insertions(+), 6462 deletions(-)
 delete mode 100644 Documentation/arch/arm/stm32/stm32f429-overview.rst
 delete mode 100644 Documentation/arch/arm/stm32/stm32f746-overview.rst
 delete mode 100644 Documentation/arch/arm/stm32/stm32f769-overview.rst
 delete mode 100644 Documentation/arch/arm/stm32/stm32h743-overview.rst
 delete mode 100644 Documentation/arch/arm/stm32/stm32h750-overview.rst
 delete mode 100644 arch/arm/boot/dts/st/stm32429i-eval.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32746g-eval.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f429-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f429.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f469-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f469.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f746-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f746.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f769-disco-mb1166-reva09.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f769-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32f769.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h743.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h743i-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32h743i-eval.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32h747i-disco.dts
 delete mode 100644 arch/arm/boot/dts/st/stm32h750.dtsi
 delete mode 100644 arch/arm/boot/dts/st/stm32h750i-art-pi.dts
 delete mode 100644 arch/arm/configs/stm32_defconfig

diff --git a/Documentation/arch/arm/index.rst b/Documentation/arch/arm/index.rst
index 17d6a5bbfc26..70bc418fdb38 100644
--- a/Documentation/arch/arm/index.rst
+++ b/Documentation/arch/arm/index.rst
@@ -47,12 +47,7 @@ SoC-specific documents
 
    pxa/mfp
 
-   stm32/stm32f746-overview
    stm32/overview
-   stm32/stm32h743-overview
-   stm32/stm32h750-overview
-   stm32/stm32f769-overview
-   stm32/stm32f429-overview
    stm32/stm32mp13-overview
    stm32/stm32mp151-overview
    stm32/stm32mp157-overview
diff --git a/Documentation/arch/arm/stm32/overview.rst b/Documentation/arch/arm/stm32/overview.rst
index 85cfc8410798..b63aa875cb48 100644
--- a/Documentation/arch/arm/stm32/overview.rst
+++ b/Documentation/arch/arm/stm32/overview.rst
@@ -5,15 +5,13 @@ STM32 ARM Linux Overview
 Introduction
 ------------
 
-The STMicroelectronics STM32 family of Cortex-A microprocessors (MPUs) and
-Cortex-M microcontrollers (MCUs) are supported by the 'STM32' platform of
-ARM Linux.
+The STMicroelectronics STM32 family of Cortex-A microprocessors (MPUs) is
+supported by the 'STM32' platform of ARM Linux, support for the Cortex-M
+based MCUs is has been removed.
 
 Configuration
 -------------
 
-For MCUs, use the provided default configuration:
-        make stm32_defconfig
 For MPUs, use multi_v7 configuration:
         make multi_v7_defconfig
 
diff --git a/Documentation/arch/arm/stm32/stm32f429-overview.rst b/Documentation/arch/arm/stm32/stm32f429-overview.rst
deleted file mode 100644
index a7ebe8ea6697..000000000000
--- a/Documentation/arch/arm/stm32/stm32f429-overview.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-==================
-STM32F429 Overview
-==================
-
-Introduction
-------------
-
-The STM32F429 is a Cortex-M4 MCU aimed at various applications.
-It features:
-
-- ARM Cortex-M4 up to 180MHz with FPU
-- 2MB internal Flash Memory
-- External memory support through FMC controller (PSRAM, SDRAM, NOR, NAND)
-- I2C, SPI, SAI, CAN, USB OTG, Ethernet controllers
-- LCD controller & Camera interface
-- Cryptographic processor
-
-Resources
----------
-
-Datasheet and reference manual are publicly available on ST website (STM32F429_).
-
-.. _STM32F429: http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806?ecmp=stm32f429-439_pron_pr-ces2014_nov2013
-
-:Authors: Maxime Coquelin <mcoquelin.stm32@gmail.com>
diff --git a/Documentation/arch/arm/stm32/stm32f746-overview.rst b/Documentation/arch/arm/stm32/stm32f746-overview.rst
deleted file mode 100644
index 335f0855a858..000000000000
--- a/Documentation/arch/arm/stm32/stm32f746-overview.rst
+++ /dev/null
@@ -1,32 +0,0 @@
-==================
-STM32F746 Overview
-==================
-
-Introduction
-------------
-
-The STM32F746 is a Cortex-M7 MCU aimed at various applications.
-It features:
-
-- Cortex-M7 core running up to @216MHz
-- 1MB internal flash, 320KBytes internal RAM (+4KB of backup SRAM)
-- FMC controller to connect SDRAM, NOR and NAND memories
-- Dual mode QSPI
-- SD/MMC/SDIO support
-- Ethernet controller
-- USB OTFG FS & HS controllers
-- I2C, SPI, CAN buses support
-- Several 16 & 32 bits general purpose timers
-- Serial Audio interface
-- LCD controller
-- HDMI-CEC
-- SPDIFRX
-
-Resources
----------
-
-Datasheet and reference manual are publicly available on ST website (STM32F746_).
-
-.. _STM32F746: http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32f7-series/stm32f7x6/stm32f746ng.html
-
-:Authors: Alexandre Torgue <alexandre.torgue@st.com>
diff --git a/Documentation/arch/arm/stm32/stm32f769-overview.rst b/Documentation/arch/arm/stm32/stm32f769-overview.rst
deleted file mode 100644
index ef31aadee68f..000000000000
--- a/Documentation/arch/arm/stm32/stm32f769-overview.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-==================
-STM32F769 Overview
-==================
-
-Introduction
-------------
-
-The STM32F769 is a Cortex-M7 MCU aimed at various applications.
-It features:
-
-- Cortex-M7 core running up to @216MHz
-- 2MB internal flash, 512KBytes internal RAM (+4KB of backup SRAM)
-- FMC controller to connect SDRAM, NOR and NAND memories
-- Dual mode QSPI
-- SD/MMC/SDIO support*2
-- Ethernet controller
-- USB OTFG FS & HS controllers
-- I2C*4, SPI*6, CAN*3 buses support
-- Several 16 & 32 bits general purpose timers
-- Serial Audio interface*2
-- LCD controller
-- HDMI-CEC
-- DSI
-- SPDIFRX
-- MDIO salave interface
-
-Resources
----------
-
-Datasheet and reference manual are publicly available on ST website (STM32F769_).
-
-.. _STM32F769: http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32-high-performance-mcus/stm32f7-series/stm32f7x9/stm32f769ni.html
-
-:Authors: Alexandre Torgue <alexandre.torgue@st.com>
diff --git a/Documentation/arch/arm/stm32/stm32h743-overview.rst b/Documentation/arch/arm/stm32/stm32h743-overview.rst
deleted file mode 100644
index 7659df24d362..000000000000
--- a/Documentation/arch/arm/stm32/stm32h743-overview.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-==================
-STM32H743 Overview
-==================
-
-Introduction
-------------
-
-The STM32H743 is a Cortex-M7 MCU aimed at various applications.
-It features:
-
-- Cortex-M7 core running up to @400MHz
-- 2MB internal flash, 1MBytes internal RAM
-- FMC controller to connect SDRAM, NOR and NAND memories
-- Dual mode QSPI
-- SD/MMC/SDIO support
-- Ethernet controller
-- USB OTFG FS & HS controllers
-- I2C, SPI, CAN buses support
-- Several 16 & 32 bits general purpose timers
-- Serial Audio interface
-- LCD controller
-- HDMI-CEC
-- SPDIFRX
-- DFSDM
-
-Resources
----------
-
-Datasheet and reference manual are publicly available on ST website (STM32H743_).
-
-.. _STM32H743: http://www.st.com/en/microcontrollers/stm32h7x3.html?querycriteria=productId=LN2033
-
-:Authors: Alexandre Torgue <alexandre.torgue@st.com>
diff --git a/Documentation/arch/arm/stm32/stm32h750-overview.rst b/Documentation/arch/arm/stm32/stm32h750-overview.rst
deleted file mode 100644
index be032b77d1f1..000000000000
--- a/Documentation/arch/arm/stm32/stm32h750-overview.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-==================
-STM32H750 Overview
-==================
-
-Introduction
-------------
-
-The STM32H750 is a Cortex-M7 MCU aimed at various applications.
-It features:
-
-- Cortex-M7 core running up to @480MHz
-- 128K internal flash, 1MBytes internal RAM
-- FMC controller to connect SDRAM, NOR and NAND memories
-- Dual mode QSPI
-- SD/MMC/SDIO support
-- Ethernet controller
-- USB OTFG FS & HS controllers
-- I2C, SPI, CAN buses support
-- Several 16 & 32 bits general purpose timers
-- Serial Audio interface
-- LCD controller
-- HDMI-CEC
-- SPDIFRX
-- DFSDM
-
-Resources
----------
-
-Datasheet and reference manual are publicly available on ST website (STM32H750_).
-
-.. _STM32H750: https://www.st.com/en/microcontrollers-microprocessors/stm32h750-value-line.html
-
-:Authors: Dillon Min <dillon.minfei@gmail.com>
-
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index e4910cf865da..3d5f2e41eef1 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -1128,42 +1128,6 @@ choice
 
 		  If unsure, say N.
 
-	config STM32F4_DEBUG_UART
-		bool "Use STM32F4 UART for low-level debug"
-		depends on MACH_STM32F429 || MACH_STM32F469
-		select DEBUG_STM32_UART
-		help
-		  Say Y here if you want kernel low-level debugging support
-		  on STM32F4 based platforms, which default UART is wired on
-		  USART1, but another UART instance can be selected by modifying
-		  CONFIG_DEBUG_UART_PHYS.
-
-		  If unsure, say N.
-
-	config STM32F7_DEBUG_UART
-		bool "Use STM32F7 UART for low-level debug"
-		depends on MACH_STM32F746 || MACH_STM32F769
-		select DEBUG_STM32_UART
-		help
-		  Say Y here if you want kernel low-level debugging support
-		  on STM32F7 based platforms, which default UART is wired on
-		  USART1, but another UART instance can be selected by modifying
-		  CONFIG_DEBUG_UART_PHYS.
-
-		  If unsure, say N.
-
-	config STM32H7_DEBUG_UART
-		bool "Use STM32H7 UART for low-level debug"
-		depends on MACH_STM32H743
-		select DEBUG_STM32_UART
-		help
-		  Say Y here if you want kernel low-level debugging support
-		  on STM32H7 based platforms, which default UART is wired on
-		  USART1, but another UART instance can be selected by modifying
-		  CONFIG_DEBUG_UART_PHYS.
-
-		  If unsure, say N.
-
 	config STM32MP1_DEBUG_UART
 		bool "Use STM32MP1 UART for low-level debug"
 		depends on MACH_STM32MP157
@@ -1540,8 +1504,6 @@ config DEBUG_UART_PHYS
 	default 0x3e000000 if DEBUG_BCM_KONA_UART
 	default 0x3f201000 if DEBUG_BCM2836
 	default 0x40010000 if STM32MP1_DEBUG_UART
-	default 0x40011000 if STM32F4_DEBUG_UART || STM32F7_DEBUG_UART || \
-				STM32H7_DEBUG_UART
 	default 0x40028000 if DEBUG_AT91_SAMV7_USART1
 	default 0x40090000 if DEBUG_LPC32XX
 	default 0x40100000 if DEBUG_PXA_UART1
diff --git a/arch/arm/boot/dts/st/Makefile b/arch/arm/boot/dts/st/Makefile
index 10c5d75f6169..733ae4cc418b 100644
--- a/arch/arm/boot/dts/st/Makefile
+++ b/arch/arm/boot/dts/st/Makefile
@@ -102,17 +102,6 @@ stm32mp15xx-dhcom-picoitx-overlay-626-100-x2-ch101olhlwh-dtbs := \
 	stm32mp15xx-dhcom-picoitx-overlay-626-100-x2-ch101olhlwh.dtbo \
 
 dtb-$(CONFIG_ARCH_STM32) += \
-	stm32f429-disco.dtb \
-	stm32f469-disco.dtb \
-	stm32f746-disco.dtb \
-	stm32f769-disco.dtb \
-	stm32f769-disco-mb1166-reva09.dtb \
-	stm32429i-eval.dtb \
-	stm32746g-eval.dtb \
-	stm32h743i-eval.dtb \
-	stm32h743i-disco.dtb \
-	stm32h747i-disco.dtb \
-	stm32h750i-art-pi.dtb \
 	stm32mp133c-prihmb.dtb \
 	stm32mp135f-dhcor-dhsbc.dtb \
 	stm32mp13xx-dhcor-dhsbc-overlay-rb-tft32-v2.dtb \
diff --git a/arch/arm/boot/dts/st/stm32429i-eval.dts b/arch/arm/boot/dts/st/stm32429i-eval.dts
deleted file mode 100644
index f4b1c4eb64f2..000000000000
--- a/arch/arm/boot/dts/st/stm32429i-eval.dts
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32f429.dtsi"
-#include "stm32f429-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/media/video-interfaces.h>
-
-/ {
-	model = "STMicroelectronics STM32429i-EVAL board";
-	compatible = "st,stm32429i-eval", "st,stm32f429";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@0 {
-		device_type = "memory";
-		reg = <0x00000000 0x2000000>;
-	};
-
-	aliases {
-		serial0 = &usart1;
-	};
-
-	clocks {
-		clk_ext_camera: clk-ext-camera {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <24000000>;
-		};
-	};
-
-	soc {
-		dma-ranges = <0xc0000000 0x0 0x10000000>;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpiog 6 1>;
-			linux,default-trigger = "heartbeat";
-		};
-		led-orange {
-			color = <LED_COLOR_ID_ORANGE>;
-			gpios = <&gpiog 7 1>;
-		};
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpiog 10 1>;
-		};
-		led-blue {
-			color = <LED_COLOR_ID_BLUE>;
-			gpios = <&gpiog 12 1>;
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "Wake up";
-			linux,code = <KEY_WAKEUP>;
-			gpios = <&gpioa 0 0>;
-		};
-		button-1 {
-			label = "Tamper";
-			linux,code = <KEY_RESTART>;
-			gpios = <&gpioc 13 0>;
-		};
-	};
-
-	mmc_vcard: mmc_vcard {
-		compatible = "regulator-fixed";
-		regulator-name = "mmc_vcard";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-
-	panel_rgb: panel-rgb {
-		compatible = "ampire,am-480272h3tmqw-t01h";
-		power-supply = <&vdd_panel>;
-		status = "okay";
-		port {
-			panel_in_rgb: endpoint {
-				remote-endpoint = <&ltdc_out_rgb>;
-			};
-		};
-	};
-
-	vdda: regulator-vdda {
-		compatible = "regulator-fixed";
-		regulator-name = "vdda";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	vref: regulator-vref {
-		compatible = "regulator-fixed";
-		regulator-name = "vref";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	usbotg_hs_phy: usbphy {
-		#phy-cells = <0>;
-		compatible = "usb-nop-xceiv";
-		clocks = <&rcc 0 STM32F4_AHB1_CLOCK(OTGHSULPI)>;
-		clock-names = "main_clk";
-	};
-
-	vdd_panel: vdd-panel {
-		compatible = "regulator-fixed";
-		regulator-name = "vdd_panel";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-};
-
-&adc {
-	pinctrl-names = "default";
-	pinctrl-0 = <&adc3_in8_pin>;
-	vdda-supply = <&vdda>;
-	vref-supply = <&vref>;
-	status = "okay";
-	adc3: adc@200 {
-		st,adc-channels = <8>;
-		status = "okay";
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&crc {
-	status = "okay";
-};
-
-&dcmi {
-	status = "okay";
-
-	port {
-		dcmi_0: endpoint {
-			remote-endpoint = <&ov2640_0>;
-			bus-type = <MEDIA_BUS_TYPE_PARALLEL>;
-			bus-width = <8>;
-			hsync-active = <0>;
-			vsync-active = <0>;
-			pclk-sample = <1>;
-		};
-	};
-};
-
-&i2c1 {
-	pinctrl-0 = <&i2c1_pins>;
-	pinctrl-names = "default";
-	status = "okay";
-
-	ov2640: camera@30 {
-		compatible = "ovti,ov2640";
-		reg = <0x30>;
-		resetb-gpios = <&stmpegpio 2 GPIO_ACTIVE_HIGH>;
-		pwdn-gpios = <&stmpegpio 0 GPIO_ACTIVE_LOW>;
-		clocks = <&clk_ext_camera>;
-		clock-names = "xvclk";
-		status = "okay";
-
-		port {
-			ov2640_0: endpoint {
-				remote-endpoint = <&dcmi_0>;
-			};
-		};
-	};
-
-	stmpe1600: stmpe1600@42 {
-		compatible = "st,stmpe1600";
-		reg = <0x42>;
-		interrupts = <8 3>;
-		interrupt-parent = <&gpioi>;
-		wakeup-source;
-
-		stmpegpio: stmpe_gpio {
-			compatible = "st,stmpe-gpio";
-			gpio-controller;
-			#gpio-cells = <2>;
-		};
-	};
-};
-
-&iwdg {
-	status = "okay";
-	timeout-sec = <32>;
-};
-
-&ltdc {
-	status = "okay";
-	pinctrl-0 = <&ltdc_pins_a>;
-	pinctrl-names = "default";
-
-	port {
-		ltdc_out_rgb: endpoint {
-			remote-endpoint = <&panel_in_rgb>;
-		};
-	};
-};
-
-&mac {
-	status = "okay";
-	pinctrl-0 = <&ethernet_mii>;
-	pinctrl-names = "default";
-	phy-mode = "mii";
-	phy-handle = <&phy1>;
-	mdio0 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "snps,dwmac-mdio";
-		phy1: ethernet-phy@1 {
-			reg = <1>;
-		};
-	};
-};
-
-&rtc {
-	status = "okay";
-};
-
-&sdio {
-	status = "okay";
-	vmmc-supply = <&mmc_vcard>;
-	cd-gpios = <&stmpegpio 15 GPIO_ACTIVE_LOW>;
-	pinctrl-names = "default", "opendrain";
-	pinctrl-0 = <&sdio_pins>;
-	pinctrl-1 = <&sdio_pins_od>;
-	bus-width = <4>;
-	max-frequency = <12500000>;
-};
-
-&timers1 {
-	status = "okay";
-
-	pwm {
-		pinctrl-0 = <&pwm1_pins>;
-		pinctrl-names = "default";
-		status = "okay";
-	};
-
-	timer@0 {
-		status = "okay";
-	};
-};
-
-&timers3 {
-	status = "okay";
-
-	pwm {
-		pinctrl-0 = <&pwm3_pins>;
-		pinctrl-names = "default";
-		status = "okay";
-	};
-
-	timer@2 {
-		status = "okay";
-	};
-};
-
-&timers5 {
-	/* Override timer5 to act as clockevent */
-	compatible = "st,stm32-timer";
-	interrupts = <50>;
-	status = "okay";
-	/delete-property/#address-cells;
-	/delete-property/#size-cells;
-	/delete-property/clock-names;
-	/delete-node/pwm;
-	/delete-node/timer@4;
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_hs {
-	dr_mode = "host";
-	phys = <&usbotg_hs_phy>;
-	phy-names = "usb2-phy";
-	pinctrl-0 = <&usbotg_hs_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32746g-eval.dts b/arch/arm/boot/dts/st/stm32746g-eval.dts
deleted file mode 100644
index 6772c1f9d03e..000000000000
--- a/arch/arm/boot/dts/st/stm32746g-eval.dts
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32f746.dtsi"
-#include "stm32f746-pinctrl.dtsi"
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32746g-EVAL board";
-	compatible = "st,stm32746g-eval", "st,stm32f746";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@c0000000 {
-		device_type = "memory";
-		reg = <0xc0000000 0x2000000>;
-	};
-
-	aliases {
-		serial0 = &usart1;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpiof 10 1>;
-			linux,default-trigger = "heartbeat";
-		};
-		led-orange {
-			color = <LED_COLOR_ID_ORANGE>;
-			gpios = <&stmfx_pinctrl 17 1>;
-		};
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpiob 7 1>;
-		};
-		led-blue {
-			color = <LED_COLOR_ID_BLUE>;
-			gpios = <&stmfx_pinctrl 19 1>;
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "Wake up";
-			linux,code = <KEY_WAKEUP>;
-			gpios = <&gpioc 13 0>;
-		};
-	};
-
-	joystick {
-		compatible = "gpio-keys";
-		pinctrl-0 = <&joystick_pins>;
-		pinctrl-names = "default";
-		button-0 {
-			label = "JoySel";
-			linux,code = <KEY_ENTER>;
-			interrupt-parent = <&stmfx_pinctrl>;
-			interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
-		};
-		button-1 {
-			label = "JoyDown";
-			linux,code = <KEY_DOWN>;
-			interrupt-parent = <&stmfx_pinctrl>;
-			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
-		};
-		button-2 {
-			label = "JoyLeft";
-			linux,code = <KEY_LEFT>;
-			interrupt-parent = <&stmfx_pinctrl>;
-			interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
-		};
-		button-3 {
-			label = "JoyRight";
-			linux,code = <KEY_RIGHT>;
-			interrupt-parent = <&stmfx_pinctrl>;
-			interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
-		};
-		button-4 {
-			label = "JoyUp";
-			linux,code = <KEY_UP>;
-			interrupt-parent = <&stmfx_pinctrl>;
-			interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-
-	usbotg_hs_phy: usb-phy {
-		#phy-cells = <0>;
-		compatible = "usb-nop-xceiv";
-		clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHSULPI)>;
-		clock-names = "main_clk";
-	};
-
-	mmc_vcard: mmc_vcard {
-		compatible = "regulator-fixed";
-		regulator-name = "mmc_vcard";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&crc {
-	status = "okay";
-};
-
-&i2c1 {
-	pinctrl-0 = <&i2c1_pins_b>;
-	pinctrl-names = "default";
-	i2c-scl-rising-time-ns = <185>;
-	i2c-scl-falling-time-ns = <20>;
-	status = "okay";
-
-	stmfx: stmfx@42 {
-		compatible = "st,stmfx-0300";
-		reg = <0x42>;
-		interrupts = <8 IRQ_TYPE_EDGE_RISING>;
-		interrupt-parent = <&gpioi>;
-
-		stmfx_pinctrl: pinctrl {
-			compatible = "st,stmfx-0300-pinctrl";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			gpio-ranges = <&stmfx_pinctrl 0 0 24>;
-
-			joystick_pins: joystick {
-				pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4";
-				drive-push-pull;
-				bias-pull-up;
-			};
-		};
-	};
-};
-
-&rtc {
-	status = "okay";
-};
-
-&sdio1 {
-	status = "okay";
-	vmmc-supply = <&mmc_vcard>;
-	broken-cd;
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdio_pins_a>;
-	pinctrl-1 = <&sdio_pins_od_a>;
-	pinctrl-2 = <&sdio_pins_sleep_a>;
-	bus-width = <4>;
-};
-
-&timers5 {
-	/* Override timer5 to act as clockevent */
-	compatible = "st,stm32-timer";
-	interrupts = <50>;
-	status = "okay";
-	/delete-property/#address-cells;
-	/delete-property/#size-cells;
-	/delete-property/clock-names;
-	/delete-node/pwm;
-	/delete-node/timer@4;
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_hs {
-	dr_mode = "otg";
-	phys = <&usbotg_hs_phy>;
-	phy-names = "usb2-phy";
-	pinctrl-0 = <&usbotg_hs_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi
deleted file mode 100644
index 3bb812d6399e..000000000000
--- a/arch/arm/boot/dts/st/stm32f4-pinctrl.dtsi
+++ /dev/null
@@ -1,482 +0,0 @@
-/*
- * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <dt-bindings/pinctrl/stm32-pinfunc.h>
-#include <dt-bindings/mfd/stm32f4-rcc.h>
-
-/ {
-	soc {
-		pinctrl: pinctrl@40020000 {
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x40020000 0x3000>;
-			interrupt-parent = <&exti>;
-			st,syscfg = <&syscfg 0x8>;
-
-			gpioa: gpio@40020000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x0 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOA)>;
-				st,bank-name = "GPIOA";
-			};
-
-			gpiob: gpio@40020400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x400 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOB)>;
-				st,bank-name = "GPIOB";
-			};
-
-			gpioc: gpio@40020800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x800 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOC)>;
-				st,bank-name = "GPIOC";
-			};
-
-			gpiod: gpio@40020c00 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0xc00 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOD)>;
-				st,bank-name = "GPIOD";
-			};
-
-			gpioe: gpio@40021000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1000 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOE)>;
-				st,bank-name = "GPIOE";
-			};
-
-			gpiof: gpio@40021400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1400 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOF)>;
-				st,bank-name = "GPIOF";
-			};
-
-			gpiog: gpio@40021800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1800 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOG)>;
-				st,bank-name = "GPIOG";
-			};
-
-			gpioh: gpio@40021c00 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1c00 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOH)>;
-				st,bank-name = "GPIOH";
-			};
-
-			gpioi: gpio@40022000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x2000 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOI)>;
-				st,bank-name = "GPIOI";
-			};
-
-			gpioj: gpio@40022400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x2400 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOJ)>;
-				st,bank-name = "GPIOJ";
-			};
-
-			gpiok: gpio@40022800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x2800 0x400>;
-				clocks = <&rcc 0 STM32F4_AHB1_CLOCK(GPIOK)>;
-				st,bank-name = "GPIOK";
-			};
-
-			usart1_pins_a: usart1-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <0>;
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */
-					bias-disable;
-				};
-			};
-
-			usart3_pins_a: usart3-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 10, AF7)>; /* USART3_TX */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <0>;
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 11, AF7)>; /* USART3_RX */
-					bias-disable;
-				};
-			};
-
-			usbotg_fs_pins_a: usbotg-fs-0 {
-				pins {
-					pinmux = <STM32_PINMUX('A', 10, AF10)>, /* OTG_FS_ID */
-						 <STM32_PINMUX('A', 11, AF10)>, /* OTG_FS_DM */
-						 <STM32_PINMUX('A', 12, AF10)>; /* OTG_FS_DP */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			usbotg_fs_pins_b: usbotg-fs-1 {
-				pins {
-					pinmux = <STM32_PINMUX('B', 12, AF12)>, /* OTG_HS_ID */
-						 <STM32_PINMUX('B', 14, AF12)>, /* OTG_HS_DM */
-						 <STM32_PINMUX('B', 15, AF12)>; /* OTG_HS_DP */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			usbotg_hs_pins_a: usbotg-hs-0 {
-				pins {
-					pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT*/
-						 <STM32_PINMUX('I', 11, AF10)>, /* OTG_HS_ULPI_DIR */
-						 <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
-						 <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
-						 <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
-						 <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
-						 <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
-						 <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
-						 <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
-						 <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
-						 <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
-						 <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			ethernet_mii: mii-0 {
-				pins {
-					pinmux = <STM32_PINMUX('G', 13, AF11)>, /* ETH_MII_TXD0_ETH_RMII_TXD0 */
-						 <STM32_PINMUX('G', 14, AF11)>, /* ETH_MII_TXD1_ETH_RMII_TXD1 */
-						 <STM32_PINMUX('C', 2, AF11)>, /* ETH_MII_TXD2 */
-						 <STM32_PINMUX('B', 8, AF11)>, /* ETH_MII_TXD3 */
-						 <STM32_PINMUX('C', 3, AF11)>, /* ETH_MII_TX_CLK */
-						 <STM32_PINMUX('G', 11,AF11)>, /* ETH_MII_TX_EN_ETH_RMII_TX_EN */
-						 <STM32_PINMUX('A', 2, AF11)>, /* ETH_MDIO */
-						 <STM32_PINMUX('C', 1, AF11)>, /* ETH_MDC */
-						 <STM32_PINMUX('A', 1, AF11)>, /* ETH_MII_RX_CLK_ETH_RMII_REF_CLK */
-						 <STM32_PINMUX('A', 7, AF11)>, /* ETH_MII_RX_DV_ETH_RMII_CRS_DV */
-						 <STM32_PINMUX('C', 4, AF11)>, /* ETH_MII_RXD0_ETH_RMII_RXD0 */
-						 <STM32_PINMUX('C', 5, AF11)>, /* ETH_MII_RXD1_ETH_RMII_RXD1 */
-						 <STM32_PINMUX('H', 6, AF11)>, /* ETH_MII_RXD2 */
-						 <STM32_PINMUX('H', 7, AF11)>; /* ETH_MII_RXD3 */
-					slew-rate = <2>;
-				};
-			};
-
-			adc3_in8_pin: adc-200 {
-				pins {
-					pinmux = <STM32_PINMUX('F', 10, ANALOG)>;
-				};
-			};
-
-			pwm1_pins: pwm1-0 {
-				pins {
-					pinmux = <STM32_PINMUX('A', 8, AF1)>, /* TIM1_CH1 */
-						 <STM32_PINMUX('B', 13, AF1)>, /* TIM1_CH1N */
-						 <STM32_PINMUX('B', 12, AF1)>; /* TIM1_BKIN */
-				};
-			};
-
-			pwm3_pins: pwm3-0 {
-				pins {
-					pinmux = <STM32_PINMUX('B', 4, AF2)>, /* TIM3_CH1 */
-						 <STM32_PINMUX('B', 5, AF2)>; /* TIM3_CH2 */
-				};
-			};
-
-			i2c1_pins: i2c1-0 {
-				pins {
-					pinmux = <STM32_PINMUX('B', 9, AF4)>, /* I2C1_SDA */
-						 <STM32_PINMUX('B', 6, AF4)>; /* I2C1_SCL */
-					bias-disable;
-					drive-open-drain;
-					slew-rate = <3>;
-				};
-			};
-
-			ltdc_pins_a: ltdc-0 {
-				pins {
-					pinmux = <STM32_PINMUX('I', 12, AF14)>, /* LCD_HSYNC */
-						 <STM32_PINMUX('I', 13, AF14)>, /* LCD_VSYNC */
-						 <STM32_PINMUX('I', 14, AF14)>, /* LCD_CLK */
-						 <STM32_PINMUX('I', 15, AF14)>, /* LCD_R0 */
-						 <STM32_PINMUX('J', 0, AF14)>, /* LCD_R1 */
-						 <STM32_PINMUX('J', 1, AF14)>, /* LCD_R2 */
-						 <STM32_PINMUX('J', 2, AF14)>, /* LCD_R3 */
-						 <STM32_PINMUX('J', 3, AF14)>, /* LCD_R4 */
-						 <STM32_PINMUX('J', 4, AF14)>, /* LCD_R5 */
-						 <STM32_PINMUX('J', 5, AF14)>, /* LCD_R6*/
-						 <STM32_PINMUX('J', 6, AF14)>, /* LCD_R7 */
-						 <STM32_PINMUX('J', 7, AF14)>, /* LCD_G0 */
-						 <STM32_PINMUX('J', 8, AF14)>, /* LCD_G1 */
-						 <STM32_PINMUX('J', 9, AF14)>, /* LCD_G2 */
-						 <STM32_PINMUX('J', 10, AF14)>, /* LCD_G3 */
-						 <STM32_PINMUX('J', 11, AF14)>, /* LCD_G4 */
-						 <STM32_PINMUX('J', 12, AF14)>, /* LCD_B0 */
-						 <STM32_PINMUX('J', 13, AF14)>, /* LCD_B1 */
-						 <STM32_PINMUX('J', 14, AF14)>, /* LCD_B2 */
-						 <STM32_PINMUX('J', 15, AF14)>, /* LCD_B3*/
-						 <STM32_PINMUX('K', 0, AF14)>, /* LCD_G5 */
-						 <STM32_PINMUX('K', 1, AF14)>, /* LCD_G6 */
-						 <STM32_PINMUX('K', 2, AF14)>, /* LCD_G7 */
-						 <STM32_PINMUX('K', 3, AF14)>, /* LCD_B4 */
-						 <STM32_PINMUX('K', 4, AF14)>, /* LCD_B5 */
-						 <STM32_PINMUX('K', 5, AF14)>, /* LCD_B6 */
-						 <STM32_PINMUX('K', 6, AF14)>, /* LCD_B7 */
-						 <STM32_PINMUX('K', 7, AF14)>; /* LCD_DE */
-					slew-rate = <2>;
-				};
-			};
-
-			ltdc_pins_b: ltdc-1 {
-				pins {
-					pinmux = <STM32_PINMUX('C', 6,  AF14)>,
-						/* LCD_HSYNC */
-						 <STM32_PINMUX('A', 4,  AF14)>,
-						 /* LCD_VSYNC */
-						 <STM32_PINMUX('G', 7,  AF14)>,
-						 /* LCD_CLK */
-						 <STM32_PINMUX('C', 10, AF14)>,
-						 /* LCD_R2 */
-						 <STM32_PINMUX('B', 0,  AF9)>,
-						 /* LCD_R3 */
-						 <STM32_PINMUX('A', 11, AF14)>,
-						 /* LCD_R4 */
-						 <STM32_PINMUX('A', 12, AF14)>,
-						 /* LCD_R5 */
-						 <STM32_PINMUX('B', 1,  AF9)>,
-						 /* LCD_R6*/
-						 <STM32_PINMUX('G', 6,  AF14)>,
-						 /* LCD_R7 */
-						 <STM32_PINMUX('A', 6,  AF14)>,
-						 /* LCD_G2 */
-						 <STM32_PINMUX('G', 10, AF9)>,
-						 /* LCD_G3 */
-						 <STM32_PINMUX('B', 10, AF14)>,
-						 /* LCD_G4 */
-						 <STM32_PINMUX('D', 6,  AF14)>,
-						 /* LCD_B2 */
-						 <STM32_PINMUX('G', 11, AF14)>,
-						 /* LCD_B3*/
-						 <STM32_PINMUX('B', 11, AF14)>,
-						 /* LCD_G5 */
-						 <STM32_PINMUX('C', 7,  AF14)>,
-						 /* LCD_G6 */
-						 <STM32_PINMUX('D', 3,  AF14)>,
-						 /* LCD_G7 */
-						 <STM32_PINMUX('G', 12, AF9)>,
-						 /* LCD_B4 */
-						 <STM32_PINMUX('A', 3,  AF14)>,
-						 /* LCD_B5 */
-						 <STM32_PINMUX('B', 8,  AF14)>,
-						 /* LCD_B6 */
-						 <STM32_PINMUX('B', 9,  AF14)>,
-						 /* LCD_B7 */
-						 <STM32_PINMUX('F', 10, AF14)>;
-						 /* LCD_DE */
-					slew-rate = <2>;
-				};
-			};
-
-			spi5_pins: spi5-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('F', 7, AF5)>,
-						/* SPI5_CLK */
-						 <STM32_PINMUX('F', 9, AF5)>;
-						/* SPI5_MOSI */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <0>;
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('F', 8, AF5)>;
-						/* SPI5_MISO */
-					bias-disable;
-				};
-			};
-
-			i2c3_pins: i2c3-0 {
-				pins {
-					pinmux = <STM32_PINMUX('C', 9, AF4)>,
-						/* I2C3_SDA */
-						 <STM32_PINMUX('A', 8, AF4)>;
-						/* I2C3_SCL */
-					bias-disable;
-					drive-open-drain;
-					slew-rate = <3>;
-				};
-			};
-
-			dcmi_pins: dcmi-0 {
-				pins {
-					pinmux = <STM32_PINMUX('A', 4, AF13)>, /* DCMI_HSYNC */
-						 <STM32_PINMUX('B', 7, AF13)>, /* DCMI_VSYNC */
-						 <STM32_PINMUX('A', 6, AF13)>, /* DCMI_PIXCLK */
-						 <STM32_PINMUX('C', 6, AF13)>, /* DCMI_D0 */
-						 <STM32_PINMUX('C', 7, AF13)>, /* DCMI_D1 */
-						 <STM32_PINMUX('C', 8, AF13)>, /* DCMI_D2 */
-						 <STM32_PINMUX('C', 9, AF13)>, /* DCMI_D3 */
-						 <STM32_PINMUX('C', 11, AF13)>, /*DCMI_D4 */
-						 <STM32_PINMUX('D', 3, AF13)>, /* DCMI_D5 */
-						 <STM32_PINMUX('B', 8, AF13)>, /* DCMI_D6 */
-						 <STM32_PINMUX('E', 6, AF13)>, /* DCMI_D7 */
-						 <STM32_PINMUX('C', 10, AF13)>, /* DCMI_D8 */
-						 <STM32_PINMUX('C', 12, AF13)>, /* DCMI_D9 */
-						 <STM32_PINMUX('D', 6, AF13)>, /* DCMI_D10 */
-						 <STM32_PINMUX('D', 2, AF13)>; /* DCMI_D11 */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <3>;
-				};
-			};
-
-			sdio_pins: sdio-pins-0 {
-				pins {
-					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDIO_D0 */
-						 <STM32_PINMUX('C', 9, AF12)>, /* SDIO_D1 */
-						 <STM32_PINMUX('C', 10, AF12)>, /* SDIO_D2 */
-						 <STM32_PINMUX('C', 11, AF12)>, /* SDIO_D3 */
-						 <STM32_PINMUX('C', 12, AF12)>, /* SDIO_CK */
-						 <STM32_PINMUX('D', 2, AF12)>; /* SDIO_CMD */
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			sdio_pins_od: sdio-pins-od-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDIO_D0 */
-						 <STM32_PINMUX('C', 9, AF12)>, /* SDIO_D1 */
-						 <STM32_PINMUX('C', 10, AF12)>, /* SDIO_D2 */
-						 <STM32_PINMUX('C', 11, AF12)>, /* SDIO_D3 */
-						 <STM32_PINMUX('C', 12, AF12)>; /* SDIO_CK */
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-
-				pins2 {
-					pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDIO_CMD */
-					drive-open-drain;
-					slew-rate = <2>;
-				};
-			};
-
-			can1_pins_a: can1-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 9, AF9)>; /* CAN1_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 8, AF9)>; /* CAN1_RX */
-					bias-pull-up;
-				};
-			};
-
-			can2_pins_a: can2-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 13, AF9)>; /* CAN2_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 5, AF9)>; /* CAN2_RX */
-					bias-pull-up;
-				};
-			};
-
-			can2_pins_b: can2-1 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 13, AF9)>; /* CAN2_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 12, AF9)>; /* CAN2_RX */
-					bias-pull-up;
-				};
-			};
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f429-disco.dts b/arch/arm/boot/dts/st/stm32f429-disco.dts
deleted file mode 100644
index ded369abee4f..000000000000
--- a/arch/arm/boot/dts/st/stm32f429-disco.dts
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32f429.dtsi"
-#include "stm32f429-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32F429i-DISCO board";
-	compatible = "st,stm32f429i-disco", "st,stm32f429";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@90000000 {
-		device_type = "memory";
-		reg = <0x90000000 0x800000>;
-	};
-
-	aliases {
-		serial0 = &usart1;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpiog 14 0>;
-		};
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpiog 13 0>;
-			linux,default-trigger = "heartbeat";
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "User";
-			linux,code = <KEY_HOME>;
-			gpios = <&gpioa 0 0>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-
-	/* This turns on vbus for otg for host mode (dwc2) */
-	vcc5v_otg: vcc5v-otg-regulator {
-		compatible = "regulator-fixed";
-		gpio = <&gpioc 4 0>;
-		regulator-name = "vcc5_host1";
-		regulator-always-on;
-	};
-};
-
-&clk_hse {
-	clock-frequency = <8000000>;
-};
-
-&crc {
-	status = "okay";
-};
-
-&i2c3 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c3_pins>;
-	clock-frequency = <100000>;
-	status = "okay";
-
-	stmpe811@41 {
-		compatible = "st,stmpe811";
-		reg = <0x41>;
-		interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
-		interrupt-parent = <&gpioa>;
-		/* 3.25 MHz ADC clock speed */
-		st,adc-freq = <1>;
-		/* 12-bit ADC */
-		st,mod-12b = <1>;
-		/* internal ADC reference */
-		st,ref-sel = <0>;
-		/* ADC converstion time: 80 clocks */
-		st,sample-time = <4>;
-
-		stmpe_touchscreen {
-			compatible = "st,stmpe-ts";
-			/* 8 sample average control */
-			st,ave-ctrl = <3>;
-			/* 7 length fractional part in z */
-			st,fraction-z = <7>;
-			/*
-			 * 50 mA typical 80 mA max touchscreen drivers
-			 * current limit value
-			 */
-			st,i-drive = <1>;
-			/* 1 ms panel driver settling time */
-			st,settling = <3>;
-			/* 5 ms touch detect interrupt delay */
-			st,touch-det-delay = <5>;
-		};
-
-		stmpe_adc {
-			compatible = "st,stmpe-adc";
-			/* forbid to use ADC channels 3-0 (touch) */
-			st,norequest-mask = <0x0F>;
-		};
-	};
-};
-
-&ltdc {
-	status = "okay";
-	pinctrl-0 = <&ltdc_pins_b>;
-	pinctrl-names = "default";
-
-	port {
-		ltdc_out_rgb: endpoint {
-			remote-endpoint = <&panel_in_rgb>;
-		};
-	};
-};
-
-&rtc {
-	assigned-clocks = <&rcc 1 CLK_RTC>;
-	assigned-clock-parents = <&rcc 1 CLK_LSI>;
-	status = "okay";
-};
-
-&spi5 {
-	status = "okay";
-	pinctrl-0 = <&spi5_pins>;
-	pinctrl-names = "default";
-	#address-cells = <1>;
-	#size-cells = <0>;
-	cs-gpios = <&gpioc 1 GPIO_ACTIVE_LOW>, <&gpioc 2 GPIO_ACTIVE_LOW>;
-
-	l3gd20: l3gd20@0 {
-		compatible = "st,l3gd20-gyro";
-		spi-max-frequency = <10000000>;
-		st,drdy-int-pin = <2>;
-		interrupt-parent = <&gpioa>;
-		interrupts = <1 IRQ_TYPE_EDGE_RISING>,
-				<2 IRQ_TYPE_EDGE_RISING>;
-		reg = <0>;
-		status = "okay";
-	};
-
-	display: display@1 {
-		/* Connect panel-ilitek-9341 to ltdc */
-		compatible = "st,sf-tc240t-9370-t", "ilitek,ili9341";
-		reg = <1>;
-		spi-3wire;
-		spi-max-frequency = <10000000>;
-		dc-gpios = <&gpiod 13 0>;
-		port {
-			panel_in_rgb: endpoint {
-			remote-endpoint = <&ltdc_out_rgb>;
-			};
-		};
-	};
-};
-
-&timers5 {
-	/* Override timer5 to act as clockevent */
-	compatible = "st,stm32-timer";
-	interrupts = <50>;
-	status = "okay";
-	/delete-property/#address-cells;
-	/delete-property/#size-cells;
-	/delete-property/clock-names;
-	/delete-node/pwm;
-	/delete-node/timer@4;
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_hs {
-	compatible = "st,stm32f4x9-fsotg";
-	dr_mode = "host";
-	pinctrl-0 = <&usbotg_fs_pins_b>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi
deleted file mode 100644
index e10d7a1f3207..000000000000
--- a/arch/arm/boot/dts/st/stm32f429-pinctrl.dtsi
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "stm32f4-pinctrl.dtsi"
-
-&pinctrl {
-	compatible = "st,stm32f429-pinctrl";
-
-	gpioa: gpio@40020000 {
-		gpio-ranges = <&pinctrl 0 0 16>;
-	};
-
-	gpiob: gpio@40020400 {
-		gpio-ranges = <&pinctrl 0 16 16>;
-	};
-
-	gpioc: gpio@40020800 {
-		gpio-ranges = <&pinctrl 0 32 16>;
-	};
-
-	gpiod: gpio@40020c00 {
-		gpio-ranges = <&pinctrl 0 48 16>;
-	};
-
-	gpioe: gpio@40021000 {
-		gpio-ranges = <&pinctrl 0 64 16>;
-	};
-
-	gpiof: gpio@40021400 {
-		gpio-ranges = <&pinctrl 0 80 16>;
-	};
-
-	gpiog: gpio@40021800 {
-		gpio-ranges = <&pinctrl 0 96 16>;
-	};
-
-	gpioh: gpio@40021c00 {
-		gpio-ranges = <&pinctrl 0 112 16>;
-	};
-
-	gpioi: gpio@40022000 {
-		gpio-ranges = <&pinctrl 0 128 16>;
-	};
-
-	gpioj: gpio@40022400 {
-		gpio-ranges = <&pinctrl 0 144 16>;
-	};
-
-	gpiok: gpio@40022800 {
-		gpio-ranges = <&pinctrl 0 160 8>;
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f429.dtsi b/arch/arm/boot/dts/st/stm32f429.dtsi
deleted file mode 100644
index ad91b74ddd0d..000000000000
--- a/arch/arm/boot/dts/st/stm32f429.dtsi
+++ /dev/null
@@ -1,800 +0,0 @@
-/*
- * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "../armv7-m.dtsi"
-#include <dt-bindings/clock/stm32fx-clock.h>
-#include <dt-bindings/mfd/stm32f4-rcc.h>
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	clocks {
-		clk_hse: clk-hse {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <0>;
-		};
-
-		clk_lse: clk-lse {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <32768>;
-		};
-
-		clk_lsi: clk-lsi {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <32000>;
-		};
-
-		clk_i2s_ckin: i2s-ckin {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <0>;
-		};
-	};
-
-	soc {
-		romem: efuse@1fff7800 {
-			compatible = "st,stm32f4-otp";
-			reg = <0x1fff7800 0x400>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ts_cal1: calib@22c {
-				reg = <0x22c 0x2>;
-			};
-			ts_cal2: calib@22e {
-				reg = <0x22e 0x2>;
-			};
-		};
-
-		timers2: timers@40000000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000000 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM2)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@1 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <1>;
-				status = "disabled";
-			};
-		};
-
-		timers3: timers@40000400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000400 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM3)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@2 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <2>;
-				status = "disabled";
-			};
-		};
-
-		timers4: timers@40000800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000800 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM4)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@3 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <3>;
-				status = "disabled";
-			};
-		};
-
-		timers5: timers@40000c00 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000C00 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM5)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@4 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <4>;
-				status = "disabled";
-			};
-		};
-
-		timers6: timers@40001000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40001000 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM6)>;
-			clock-names = "int";
-			status = "disabled";
-
-			timer@5 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <5>;
-				status = "disabled";
-			};
-		};
-
-		timers7: timers@40001400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40001400 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM7)>;
-			clock-names = "int";
-			status = "disabled";
-
-			timer@6 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <6>;
-				status = "disabled";
-			};
-		};
-
-		timers12: timers@40001800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40001800 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM12)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@11 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <11>;
-				status = "disabled";
-			};
-		};
-
-		timers13: timers@40001c00 {
-			compatible = "st,stm32-timers";
-			reg = <0x40001C00 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		timers14: timers@40002000 {
-			compatible = "st,stm32-timers";
-			reg = <0x40002000 0x400>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		rtc: rtc@40002800 {
-			compatible = "st,stm32-rtc";
-			reg = <0x40002800 0x400>;
-			clocks = <&rcc 1 CLK_RTC>;
-			assigned-clocks = <&rcc 1 CLK_RTC>;
-			assigned-clock-parents = <&rcc 1 CLK_LSE>;
-			interrupt-parent = <&exti>;
-			interrupts = <17 1>;
-			st,syscfg = <&pwrcfg 0x00 0x100>;
-			status = "disabled";
-		};
-
-		iwdg: watchdog@40003000 {
-			compatible = "st,stm32-iwdg";
-			reg = <0x40003000 0x400>;
-			clocks = <&clk_lsi>;
-			clock-names = "lsi";
-			status = "disabled";
-		};
-
-		spi2: spi@40003800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f4-spi";
-			reg = <0x40003800 0x400>;
-			interrupts = <36>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(SPI2)>;
-			status = "disabled";
-		};
-
-		spi3: spi@40003c00 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f4-spi";
-			reg = <0x40003c00 0x400>;
-			interrupts = <51>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(SPI3)>;
-			status = "disabled";
-		};
-
-		usart2: serial@40004400 {
-			compatible = "st,stm32-uart";
-			reg = <0x40004400 0x400>;
-			interrupts = <38>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART2)>;
-			status = "disabled";
-		};
-
-		usart3: serial@40004800 {
-			compatible = "st,stm32-uart";
-			reg = <0x40004800 0x400>;
-			interrupts = <39>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART3)>;
-			status = "disabled";
-			dmas = <&dma1 1 4 0x400 0x0>,
-			       <&dma1 3 4 0x400 0x0>;
-			dma-names = "rx", "tx";
-		};
-
-		usart4: serial@40004c00 {
-			compatible = "st,stm32-uart";
-			reg = <0x40004c00 0x400>;
-			interrupts = <52>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART4)>;
-			status = "disabled";
-		};
-
-		usart5: serial@40005000 {
-			compatible = "st,stm32-uart";
-			reg = <0x40005000 0x400>;
-			interrupts = <53>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART5)>;
-			status = "disabled";
-		};
-
-		i2c1: i2c@40005400 {
-			compatible = "st,stm32f4-i2c";
-			reg = <0x40005400 0x400>;
-			interrupts = <31>,
-				     <32>;
-			resets = <&rcc STM32F4_APB1_RESET(I2C1)>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(I2C1)>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c3: i2c@40005c00 {
-			compatible = "st,stm32f4-i2c";
-			reg = <0x40005c00 0x400>;
-			interrupts = <72>,
-				     <73>;
-			resets = <&rcc STM32F4_APB1_RESET(I2C3)>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(I2C3)>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		can1: can@40006400 {
-			compatible = "st,stm32f4-bxcan";
-			reg = <0x40006400 0x200>;
-			interrupts = <19>, <20>, <21>, <22>;
-			interrupt-names = "tx", "rx0", "rx1", "sce";
-			resets = <&rcc STM32F4_APB1_RESET(CAN1)>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN1)>;
-			st,can-primary;
-			st,gcan = <&gcan>;
-			status = "disabled";
-		};
-
-		gcan: gcan@40006600 {
-			compatible = "st,stm32f4-gcan", "syscon";
-			reg = <0x40006600 0x200>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN1)>;
-		};
-
-		can2: can@40006800 {
-			compatible = "st,stm32f4-bxcan";
-			reg = <0x40006800 0x200>;
-			interrupts = <63>, <64>, <65>, <66>;
-			interrupt-names = "tx", "rx0", "rx1", "sce";
-			resets = <&rcc STM32F4_APB1_RESET(CAN2)>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN2)>;
-			st,can-secondary;
-			st,gcan = <&gcan>;
-			status = "disabled";
-		};
-
-		dac: dac@40007400 {
-			compatible = "st,stm32f4-dac-core";
-			reg = <0x40007400 0x400>;
-			resets = <&rcc STM32F4_APB1_RESET(DAC)>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(DAC)>;
-			clock-names = "pclk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-
-			dac1: dac@1 {
-				compatible = "st,stm32-dac";
-				#io-channel-cells = <1>;
-				reg = <1>;
-				status = "disabled";
-			};
-
-			dac2: dac@2 {
-				compatible = "st,stm32-dac";
-				#io-channel-cells = <1>;
-				reg = <2>;
-				status = "disabled";
-			};
-		};
-
-		usart7: serial@40007800 {
-			compatible = "st,stm32-uart";
-			reg = <0x40007800 0x400>;
-			interrupts = <82>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART7)>;
-			status = "disabled";
-		};
-
-		usart8: serial@40007c00 {
-			compatible = "st,stm32-uart";
-			reg = <0x40007c00 0x400>;
-			interrupts = <83>;
-			clocks = <&rcc 0 STM32F4_APB1_CLOCK(UART8)>;
-			status = "disabled";
-		};
-
-		timers1: timers@40010000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40010000 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM1)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@0 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <0>;
-				status = "disabled";
-			};
-		};
-
-		timers8: timers@40010400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40010400 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM8)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@7 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <7>;
-				status = "disabled";
-			};
-		};
-
-		usart1: serial@40011000 {
-			compatible = "st,stm32-uart";
-			reg = <0x40011000 0x400>;
-			interrupts = <37>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(USART1)>;
-			status = "disabled";
-			dmas = <&dma2 2 4 0x400 0x0>,
-			       <&dma2 7 4 0x400 0x0>;
-			dma-names = "rx", "tx";
-		};
-
-		usart6: serial@40011400 {
-			compatible = "st,stm32-uart";
-			reg = <0x40011400 0x400>;
-			interrupts = <71>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(USART6)>;
-			status = "disabled";
-		};
-
-		adc: adc@40012000 {
-			compatible = "st,stm32f4-adc-core";
-			reg = <0x40012000 0x400>;
-			interrupts = <18>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC1)>;
-			clock-names = "adc";
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-
-			adc1: adc@0 {
-				compatible = "st,stm32f4-adc";
-				#io-channel-cells = <1>;
-				reg = <0x0>;
-				clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC1)>;
-				interrupt-parent = <&adc>;
-				interrupts = <0>;
-				dmas = <&dma2 0 0 0x400 0x0>;
-				dma-names = "rx";
-				status = "disabled";
-			};
-
-			adc2: adc@100 {
-				compatible = "st,stm32f4-adc";
-				#io-channel-cells = <1>;
-				reg = <0x100>;
-				clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC2)>;
-				interrupt-parent = <&adc>;
-				interrupts = <1>;
-				dmas = <&dma2 3 1 0x400 0x0>;
-				dma-names = "rx";
-				status = "disabled";
-			};
-
-			adc3: adc@200 {
-				compatible = "st,stm32f4-adc";
-				#io-channel-cells = <1>;
-				reg = <0x200>;
-				clocks = <&rcc 0 STM32F4_APB2_CLOCK(ADC3)>;
-				interrupt-parent = <&adc>;
-				interrupts = <2>;
-				dmas = <&dma2 1 2 0x400 0x0>;
-				dma-names = "rx";
-				status = "disabled";
-			};
-		};
-
-		sdio: mmc@40012c00 {
-			compatible = "arm,pl180", "arm,primecell";
-			arm,primecell-periphid = <0x00880180>;
-			reg = <0x40012c00 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(SDIO)>;
-			clock-names = "apb_pclk";
-			interrupts = <49>;
-			max-frequency = <48000000>;
-			status = "disabled";
-		};
-
-		spi1: spi@40013000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f4-spi";
-			reg = <0x40013000 0x400>;
-			interrupts = <35>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI1)>;
-			status = "disabled";
-		};
-
-		spi4: spi@40013400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f4-spi";
-			reg = <0x40013400 0x400>;
-			interrupts = <84>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI4)>;
-			status = "disabled";
-		};
-
-		syscfg: syscon@40013800 {
-			compatible = "st,stm32-syscfg", "syscon";
-			reg = <0x40013800 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(SYSCFG)>;
-		};
-
-		exti: interrupt-controller@40013c00 {
-			compatible = "st,stm32-exti";
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x40013C00 0x400>;
-			interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
-		};
-
-		timers9: timers@40014000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40014000 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM9)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@8 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <8>;
-				status = "disabled";
-			};
-		};
-
-		timers10: timers@40014400 {
-			compatible = "st,stm32-timers";
-			reg = <0x40014400 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		timers11: timers@40014800 {
-			compatible = "st,stm32-timers";
-			reg = <0x40014800 0x400>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		spi5: spi@40015000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f4-spi";
-			reg = <0x40015000 0x400>;
-			interrupts = <85>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI5)>;
-			dmas = <&dma2 3 2 0x400 0x0>,
-				<&dma2 4 2 0x400 0x0>;
-			dma-names = "rx", "tx";
-			status = "disabled";
-		};
-
-		spi6: spi@40015400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f4-spi";
-			reg = <0x40015400 0x400>;
-			interrupts = <86>;
-			clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI6)>;
-			status = "disabled";
-		};
-
-		pwrcfg: power-config@40007000 {
-			compatible = "st,stm32-power-config", "syscon";
-			reg = <0x40007000 0x400>;
-		};
-
-		ltdc: display-controller@40016800 {
-			compatible = "st,stm32-ltdc";
-			reg = <0x40016800 0x200>;
-			interrupts = <88>, <89>;
-			resets = <&rcc STM32F4_APB2_RESET(LTDC)>;
-			clocks = <&rcc 1 CLK_LCD>;
-			clock-names = "lcd";
-			status = "disabled";
-		};
-
-		crc: crc@40023000 {
-			compatible = "st,stm32f4-crc";
-			reg = <0x40023000 0x400>;
-			clocks = <&rcc 0 STM32F4_AHB1_CLOCK(CRC)>;
-			status = "disabled";
-		};
-
-		rcc: rcc@40023800 {
-			#reset-cells = <1>;
-			#clock-cells = <2>;
-			compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
-			reg = <0x40023800 0x400>;
-			clocks = <&clk_hse>, <&clk_i2s_ckin>;
-			st,syscfg = <&pwrcfg>;
-			assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
-			assigned-clock-rates = <1000000>;
-		};
-
-		dma1: dma-controller@40026000 {
-			compatible = "st,stm32-dma";
-			reg = <0x40026000 0x400>;
-			interrupts = <11>,
-				     <12>,
-				     <13>,
-				     <14>,
-				     <15>,
-				     <16>,
-				     <17>,
-				     <47>;
-			clocks = <&rcc 0 STM32F4_AHB1_CLOCK(DMA1)>;
-			#dma-cells = <4>;
-		};
-
-		dma2: dma-controller@40026400 {
-			compatible = "st,stm32-dma";
-			reg = <0x40026400 0x400>;
-			interrupts = <56>,
-				     <57>,
-				     <58>,
-				     <59>,
-				     <60>,
-				     <68>,
-				     <69>,
-				     <70>;
-			clocks = <&rcc 0 STM32F4_AHB1_CLOCK(DMA2)>;
-			#dma-cells = <4>;
-			st,mem2mem;
-		};
-
-		mac: ethernet@40028000 {
-			compatible = "st,stm32-dwmac", "snps,dwmac-3.50a";
-			reg = <0x40028000 0x8000>;
-			reg-names = "stmmaceth";
-			interrupts = <61>;
-			interrupt-names = "macirq";
-			clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
-			clocks = <&rcc 0 STM32F4_AHB1_CLOCK(ETHMAC)>,
-					<&rcc 0 STM32F4_AHB1_CLOCK(ETHMACTX)>,
-					<&rcc 0 STM32F4_AHB1_CLOCK(ETHMACRX)>;
-			st,syscon = <&syscfg 0x4>;
-			snps,pbl = <8>;
-			snps,mixed-burst;
-			status = "disabled";
-		};
-
-		dma2d: dma2d@4002b000 {
-			compatible = "st,stm32-dma2d";
-			reg = <0x4002b000 0xc00>;
-			interrupts = <90>;
-			resets = <&rcc STM32F4_AHB1_RESET(DMA2D)>;
-			clocks = <&rcc 0 STM32F4_AHB1_CLOCK(DMA2D)>;
-			clock-names = "dma2d";
-			status = "disabled";
-		};
-
-		usbotg_hs: usb@40040000 {
-			compatible = "snps,dwc2";
-			reg = <0x40040000 0x40000>;
-			interrupts = <77>;
-			clocks = <&rcc 0 STM32F4_AHB1_CLOCK(OTGHS)>;
-			clock-names = "otg";
-			status = "disabled";
-		};
-
-		usbotg_fs: usb@50000000 {
-			compatible = "st,stm32f4x9-fsotg";
-			reg = <0x50000000 0x40000>;
-			interrupts = <67>;
-			clocks = <&rcc 0 39>;
-			clock-names = "otg";
-			status = "disabled";
-		};
-
-		dcmi: dcmi@50050000 {
-			compatible = "st,stm32-dcmi";
-			reg = <0x50050000 0x400>;
-			interrupts = <78>;
-			resets = <&rcc STM32F4_AHB2_RESET(DCMI)>;
-			clocks = <&rcc 0 STM32F4_AHB2_CLOCK(DCMI)>;
-			clock-names = "mclk";
-			pinctrl-names = "default";
-			pinctrl-0 = <&dcmi_pins>;
-			dmas = <&dma2 1 1 0x414 0x3>;
-			dma-names = "tx";
-			status = "disabled";
-		};
-
-		rng: rng@50060800 {
-			compatible = "st,stm32-rng";
-			reg = <0x50060800 0x400>;
-			clocks = <&rcc 0 STM32F4_AHB2_CLOCK(RNG)>;
-
-		};
-	};
-};
-
-&systick {
-	clocks = <&rcc 1 SYSTICK>;
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f469-disco.dts b/arch/arm/boot/dts/st/stm32f469-disco.dts
deleted file mode 100644
index 943afba06b5f..000000000000
--- a/arch/arm/boot/dts/st/stm32f469-disco.dts
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright 2016 - Lee Jones <lee.jones@linaro.org>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- *     You should have received a copy of the GNU General Public
- *     License along with this file; if not, write to the Free
- *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
- *     MA 02110-1301 USA
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32f469.dtsi"
-#include "stm32f469-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32F469i-DISCO board";
-	compatible = "st,stm32f469i-disco", "st,stm32f469";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@0 {
-		device_type = "memory";
-		reg = <0x00000000 0x1000000>;
-	};
-
-	aliases {
-		serial0 = &usart3;
-	};
-
-	vcc_3v3: vcc-3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "vcc_3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	soc {
-		dma-ranges = <0xc0000000 0x0 0x10000000>;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpiog 6 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "heartbeat";
-		};
-		led-orange {
-			color = <LED_COLOR_ID_ORANGE>;
-			gpios = <&gpiod 4 GPIO_ACTIVE_LOW>;
-		};
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpiod 5 GPIO_ACTIVE_LOW>;
-		};
-		led-blue {
-			color = <LED_COLOR_ID_BLUE>;
-			gpios = <&gpiok 3 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "User";
-			linux,code = <KEY_WAKEUP>;
-			gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-
-	/* This turns on vbus for otg for host mode (dwc2) */
-	vcc5v_otg: vcc5v-otg-regulator {
-		compatible = "regulator-fixed";
-		enable-active-high;
-		gpio = <&gpiob 2 GPIO_ACTIVE_HIGH>;
-		regulator-name = "vcc5_host1";
-		regulator-always-on;
-	};
-};
-
-&rcc {
-	compatible = "st,stm32f469-rcc", "st,stm32f42xx-rcc", "st,stm32-rcc";
-};
-
-&clk_hse {
-	clock-frequency = <8000000>;
-};
-
-&dma2d {
-	status = "okay";
-};
-
-&dsi {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	status = "okay";
-
-	ports {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		port@0 {
-			reg = <0>;
-			dsi_in: endpoint {
-				remote-endpoint = <&ltdc_out_dsi>;
-			};
-		};
-
-		port@1 {
-			reg = <1>;
-			dsi_out: endpoint {
-				remote-endpoint = <&dsi_panel_in>;
-			};
-		};
-	};
-
-	panel@0 {
-		compatible = "orisetech,otm8009a";
-		reg = <0>; /* dsi virtual channel (0..3) */
-		reset-gpios = <&gpioh 7 GPIO_ACTIVE_LOW>;
-		power-supply = <&vcc_3v3>;
-		status = "okay";
-
-		port {
-			dsi_panel_in: endpoint {
-				remote-endpoint = <&dsi_out>;
-			};
-		};
-	};
-};
-
-&ltdc {
-	status = "okay";
-
-	port {
-		ltdc_out_dsi: endpoint {
-			remote-endpoint = <&dsi_in>;
-		};
-	};
-};
-
-&rtc {
-	status = "okay";
-};
-
-&timers1 {
-	status = "okay";
-
-	pwm {
-		pinctrl-0 = <&pwm1_pins>;
-		pinctrl-names = "default";
-		status = "okay";
-	};
-
-	timer@0 {
-		status = "okay";
-	};
-};
-
-&timers3 {
-	status = "okay";
-
-	pwm {
-		pinctrl-0 = <&pwm3_pins>;
-		pinctrl-names = "default";
-		status = "okay";
-	};
-
-	timer@2 {
-		status = "okay";
-	};
-};
-
-&sdio {
-	status = "okay";
-	vmmc-supply = <&vcc_3v3>;
-	cd-gpios = <&gpiog 2 GPIO_ACTIVE_LOW>;
-	broken-cd;
-	pinctrl-names = "default", "opendrain";
-	pinctrl-0 = <&sdio_pins>;
-	pinctrl-1 = <&sdio_pins_od>;
-	bus-width = <4>;
-};
-
-&timers5 {
-	/* Override timer5 to act as clockevent */
-	compatible = "st,stm32-timer";
-	interrupts = <50>;
-	status = "okay";
-	/delete-property/#address-cells;
-	/delete-property/#size-cells;
-	/delete-property/clock-names;
-	/delete-node/pwm;
-	/delete-node/timer@4;
-};
-
-&usart3 {
-	pinctrl-0 = <&usart3_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_fs {
-	dr_mode = "host";
-	pinctrl-0 = <&usbotg_fs_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi
deleted file mode 100644
index 6bf60263dff8..000000000000
--- a/arch/arm/boot/dts/st/stm32f469-pinctrl.dtsi
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "stm32f4-pinctrl.dtsi"
-
-&pinctrl {
-	compatible = "st,stm32f469-pinctrl";
-
-	gpioa: gpio@40020000 {
-		gpio-ranges = <&pinctrl 0 0 16>;
-	};
-
-	gpiob: gpio@40020400 {
-		gpio-ranges = <&pinctrl 0 16 16>;
-	};
-
-	gpioc: gpio@40020800 {
-		gpio-ranges = <&pinctrl 0 32 16>;
-	};
-
-	gpiod: gpio@40020c00 {
-		gpio-ranges = <&pinctrl 0 48 16>;
-	};
-
-	gpioe: gpio@40021000 {
-		gpio-ranges = <&pinctrl 0 64 16>;
-	};
-
-	gpiof: gpio@40021400 {
-		gpio-ranges = <&pinctrl 0 80 16>;
-	};
-
-	gpiog: gpio@40021800 {
-		gpio-ranges = <&pinctrl 0 96 16>;
-	};
-
-	gpioh: gpio@40021c00 {
-		gpio-ranges = <&pinctrl 0 112 16>;
-	};
-
-	gpioi: gpio@40022000 {
-		gpio-ranges = <&pinctrl 0 128 16>;
-	};
-
-	gpioj: gpio@40022400 {
-		gpio-ranges = <&pinctrl 0 144 6>,
-			      <&pinctrl 12 156 4>;
-	};
-
-	gpiok: gpio@40022800 {
-		gpio-ranges = <&pinctrl 3 163 5>;
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f469.dtsi b/arch/arm/boot/dts/st/stm32f469.dtsi
deleted file mode 100644
index be002e8a78ac..000000000000
--- a/arch/arm/boot/dts/st/stm32f469.dtsi
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
-/* Copyright (C) STMicroelectronics 2017 - All Rights Reserved */
-
-#include "stm32f429.dtsi"
-
-/ {
-	soc {
-		dsi: dsi@40016c00 {
-			compatible = "st,stm32-dsi";
-			reg = <0x40016c00 0x800>;
-			resets = <&rcc STM32F4_APB2_RESET(DSI)>;
-			reset-names = "apb";
-			clocks = <&rcc 1 CLK_F469_DSI>, <&clk_hse>;
-			clock-names = "pclk", "ref";
-			status = "disabled";
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi
deleted file mode 100644
index 97fc3fb5a9ca..000000000000
--- a/arch/arm/boot/dts/st/stm32f7-pinctrl.dtsi
+++ /dev/null
@@ -1,436 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
-/*
- * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
- * Author: Alexandre Torgue  <alexandre.torgue@st.com> for STMicroelectronics.
- */
-
-#include <dt-bindings/pinctrl/stm32-pinfunc.h>
-#include <dt-bindings/mfd/stm32f7-rcc.h>
-
-/ {
-	soc {
-		pinctrl: pinctrl@40020000 {
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x40020000 0x3000>;
-			interrupt-parent = <&exti>;
-			st,syscfg = <&syscfg 0x8>;
-
-			gpioa: gpio@40020000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x0 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>;
-				st,bank-name = "GPIOA";
-			};
-
-			gpiob: gpio@40020400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x400 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>;
-				st,bank-name = "GPIOB";
-			};
-
-			gpioc: gpio@40020800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x800 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>;
-				st,bank-name = "GPIOC";
-			};
-
-			gpiod: gpio@40020c00 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0xc00 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>;
-				st,bank-name = "GPIOD";
-			};
-
-			gpioe: gpio@40021000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1000 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>;
-				st,bank-name = "GPIOE";
-			};
-
-			gpiof: gpio@40021400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1400 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>;
-				st,bank-name = "GPIOF";
-			};
-
-			gpiog: gpio@40021800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1800 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>;
-				st,bank-name = "GPIOG";
-			};
-
-			gpioh: gpio@40021c00 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x1c00 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>;
-				st,bank-name = "GPIOH";
-			};
-
-			gpioi: gpio@40022000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x2000 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>;
-				st,bank-name = "GPIOI";
-			};
-
-			gpioj: gpio@40022400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x2400 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>;
-				st,bank-name = "GPIOJ";
-			};
-
-			gpiok: gpio@40022800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				reg = <0x2800 0x400>;
-				clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>;
-				st,bank-name = "GPIOK";
-			};
-
-			cec_pins_a: cec-0 {
-				pins {
-					pinmux = <STM32_PINMUX('A', 15, AF4)>; /* HDMI CEC */
-					slew-rate = <0>;
-					drive-open-drain;
-					bias-disable;
-				};
-			};
-
-			usart1_pins_a: usart1-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <0>;
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */
-					bias-disable;
-				};
-			};
-
-			usart1_pins_b: usart1-1 {
-				pins1 {
-					pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <0>;
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 7, AF7)>; /* USART1_RX */
-					bias-disable;
-				};
-			};
-
-			i2c1_pins_b: i2c1-0 {
-				pins {
-					pinmux = <STM32_PINMUX('B', 9, AF4)>, /* I2C1 SDA */
-						 <STM32_PINMUX('B', 8, AF4)>; /* I2C1 SCL */
-					bias-disable;
-					drive-open-drain;
-					slew-rate = <0>;
-				};
-			};
-
-			i2c3_pins_a: i2c3-0 {
-				pins {
-					pinmux = <STM32_PINMUX('H', 8, AF4)>, /* I2C3_SDA */
-						 <STM32_PINMUX('H', 7, AF4)>; /* I2C3_SCL */
-					bias-disable;
-					drive-open-drain;
-					slew-rate = <0>;
-				};
-			};
-
-			usbotg_hs_pins_a: usbotg-hs-0 {
-				pins {
-					pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */
-						 <STM32_PINMUX('I', 11, AF10)>, /* OTG_HS_ULPI_DIR */
-						 <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
-						 <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
-						 <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
-						 <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
-						 <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
-						 <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
-						 <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
-						 <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
-						 <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
-						 <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			usbotg_hs_pins_b: usbotg-hs-1 {
-				pins {
-					pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */
-						 <STM32_PINMUX('C', 2, AF10)>, /* OTG_HS_ULPI_DIR */
-						 <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */
-						 <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */
-						 <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */
-						 <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */
-						 <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */
-						 <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */
-						 <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */
-						 <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */
-						 <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */
-						 <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			usbotg_fs_pins_a: usbotg-fs-0 {
-				pins {
-					pinmux = <STM32_PINMUX('A', 10, AF10)>, /* OTG_FS_ID */
-						 <STM32_PINMUX('A', 11, AF10)>, /* OTG_FS_DM */
-						 <STM32_PINMUX('A', 12, AF10)>; /* OTG_FS_DP */
-					bias-disable;
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			sdio_pins_a: sdio-pins-a-0 {
-				pins {
-					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1 D0 */
-						 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1 D1 */
-						 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1 D2 */
-						 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1 D3 */
-						 <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1 CLK */
-						 <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1 CMD */
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			sdio_pins_od_a: sdio-pins-od-a-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1 D0 */
-						 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1 D1 */
-						 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1 D2 */
-						 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1 D3 */
-						 <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1 CLK */
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-
-				pins2 {
-					pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1 CMD */
-					drive-open-drain;
-					slew-rate = <2>;
-				};
-			};
-
-			sdio_pins_sleep_a: sdio-pins-sleep-a-0 {
-				pins {
-					pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1 D0 */
-						 <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1 D1 */
-						 <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1 D2 */
-						 <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1 D3 */
-						 <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1 CLK */
-						 <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1 CMD */
-				};
-			};
-
-			sdio_pins_b: sdio-pins-b-0 {
-				pins {
-					pinmux = <STM32_PINMUX('G', 9, AF11)>, /* SDMMC2 D0 */
-						 <STM32_PINMUX('G', 10, AF11)>, /* SDMMC2 D1 */
-						 <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2 D2 */
-						 <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2 D3 */
-						 <STM32_PINMUX('D', 6, AF11)>, /* SDMMC2 CLK */
-						 <STM32_PINMUX('D', 7, AF11)>; /* SDMMC2 CMD */
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-			};
-
-			sdio_pins_od_b: sdio-pins-od-b-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('G', 9, AF11)>, /* SDMMC2 D0 */
-						 <STM32_PINMUX('G', 10, AF11)>, /* SDMMC2 D1 */
-						 <STM32_PINMUX('B', 3, AF10)>, /* SDMMC2 D2 */
-						 <STM32_PINMUX('B', 4, AF10)>, /* SDMMC2 D3 */
-						 <STM32_PINMUX('D', 6, AF11)>; /* SDMMC2 CLK */
-					drive-push-pull;
-					slew-rate = <2>;
-				};
-
-				pins2 {
-					pinmux = <STM32_PINMUX('D', 7, AF11)>; /* SDMMC2 CMD */
-					drive-open-drain;
-					slew-rate = <2>;
-				};
-			};
-
-			sdio_pins_sleep_b: sdio-pins-sleep-b-0 {
-				pins {
-					pinmux = <STM32_PINMUX('G', 9, ANALOG)>, /* SDMMC2 D0 */
-						 <STM32_PINMUX('G', 10, ANALOG)>, /* SDMMC2 D1 */
-						 <STM32_PINMUX('B', 3, ANALOG)>, /* SDMMC2 D2 */
-						 <STM32_PINMUX('B', 4, ANALOG)>, /* SDMMC2 D3 */
-						 <STM32_PINMUX('D', 6, ANALOG)>, /* SDMMC2 CLK */
-						 <STM32_PINMUX('D', 7, ANALOG)>; /* SDMMC2 CMD */
-				};
-			};
-
-			can1_pins_a: can1-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('A', 12, AF9)>; /* CAN1_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('A', 11, AF9)>; /* CAN1_RX */
-					bias-pull-up;
-				};
-			};
-
-			can1_pins_b: can1-1 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 9, AF9)>; /* CAN1_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 8, AF9)>; /* CAN1_RX */
-					bias-pull-up;
-				};
-			};
-
-			can1_pins_c: can1-2 {
-				pins1 {
-					pinmux = <STM32_PINMUX('D', 1, AF9)>; /* CAN1_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('D', 0, AF9)>; /* CAN1_RX */
-					bias-pull-up;
-
-				};
-			};
-
-			can1_pins_d: can1-3 {
-				pins1 {
-					pinmux = <STM32_PINMUX('H', 13, AF9)>; /* CAN1_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('H', 14, AF9)>; /* CAN1_RX */
-					bias-pull-up;
-
-				};
-			};
-
-			can2_pins_a: can2-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 6, AF9)>; /* CAN2_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 5, AF9)>; /* CAN2_RX */
-					bias-pull-up;
-				};
-			};
-
-			can2_pins_b: can2-1 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 13, AF9)>; /* CAN2_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 12, AF9)>; /* CAN2_RX */
-					bias-pull-up;
-				};
-			};
-
-			can3_pins_a: can3-0 {
-				pins1 {
-					pinmux = <STM32_PINMUX('A', 15, AF11)>; /* CAN3_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('A', 8, AF11)>; /* CAN3_RX */
-					bias-pull-up;
-				};
-			};
-
-			can3_pins_b: can3-1 {
-				pins1 {
-					pinmux = <STM32_PINMUX('B', 4, AF11)>;  /* CAN3_TX */
-				};
-				pins2 {
-					pinmux = <STM32_PINMUX('B', 3, AF11)>; /* CAN3_RX */
-					bias-pull-up;
-				};
-			};
-
-			ltdc_pins_a: ltdc-0 {
-				pins {
-					pinmux = <STM32_PINMUX('E', 4, AF14)>, /* LCD_B0 */
-						 <STM32_PINMUX('G',12, AF9)>,  /* LCD_B4 */
-						 <STM32_PINMUX('I', 9, AF14)>, /* LCD_VSYNC */
-						 <STM32_PINMUX('I',10, AF14)>, /* LCD_HSYNC */
-						 <STM32_PINMUX('I',14, AF14)>, /* LCD_CLK */
-						 <STM32_PINMUX('I',15, AF14)>, /* LCD_R0 */
-						 <STM32_PINMUX('J', 0, AF14)>, /* LCD_R1 */
-						 <STM32_PINMUX('J', 1, AF14)>, /* LCD_R2 */
-						 <STM32_PINMUX('J', 2, AF14)>, /* LCD_R3 */
-						 <STM32_PINMUX('J', 3, AF14)>, /* LCD_R4 */
-						 <STM32_PINMUX('J', 4, AF14)>, /* LCD_R5 */
-						 <STM32_PINMUX('J', 5, AF14)>, /* LCD_R6 */
-						 <STM32_PINMUX('J', 6, AF14)>, /* LCD_R7 */
-						 <STM32_PINMUX('J', 7, AF14)>, /* LCD_G0 */
-						 <STM32_PINMUX('J', 8, AF14)>, /* LCD_G1 */
-						 <STM32_PINMUX('J', 9, AF14)>, /* LCD_G2 */
-						 <STM32_PINMUX('J',10, AF14)>, /* LCD_G3 */
-						 <STM32_PINMUX('J',11, AF14)>, /* LCD_G4 */
-						 <STM32_PINMUX('J',13, AF14)>, /* LCD_B1 */
-						 <STM32_PINMUX('J',14, AF14)>, /* LCD_B2 */
-						 <STM32_PINMUX('J',15, AF14)>, /* LCD_B3 */
-						 <STM32_PINMUX('K', 0, AF14)>, /* LCD_G5 */
-						 <STM32_PINMUX('K', 1, AF14)>, /* LCD_G6 */
-						 <STM32_PINMUX('K', 2, AF14)>, /* LCD_G7 */
-						 <STM32_PINMUX('K', 4, AF14)>, /* LCD_B5 */
-						 <STM32_PINMUX('K', 5, AF14)>, /* LCD_B6 */
-						 <STM32_PINMUX('K', 6, AF14)>, /* LCD_B7 */
-						 <STM32_PINMUX('K', 7, AF14)>; /* LCD_DE */
-					slew-rate = <2>;
-				};
-			};
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f746-disco.dts b/arch/arm/boot/dts/st/stm32f746-disco.dts
deleted file mode 100644
index 61ca41ea523e..000000000000
--- a/arch/arm/boot/dts/st/stm32f746-disco.dts
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright 2017 - Vikas MANOCHA <vikas.manocha@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32f746.dtsi"
-#include "stm32f746-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32F746-DISCO board";
-	compatible = "st,stm32f746-disco", "st,stm32f746";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@c0000000 {
-		device_type = "memory";
-		reg = <0xC0000000 0x800000>;
-	};
-
-	reserved-memory {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		linux,cma {
-			compatible = "shared-dma-pool";
-			no-map;
-			size = <0x80000>;
-			linux,dma-default;
-		};
-	};
-
-	aliases {
-		serial0 = &usart1;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_usr: led-usr {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpioi 1 GPIO_ACTIVE_HIGH>;
-			linux,default-trigger = "heartbeat";
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "User";
-			linux,code = <KEY_HOME>;
-			gpios = <&gpioi 11 GPIO_ACTIVE_HIGH>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_usr>;
-		};
-	};
-
-	usbotg_hs_phy: usb-phy {
-		#phy-cells = <0>;
-		compatible = "usb-nop-xceiv";
-		clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHSULPI)>;
-		clock-names = "main_clk";
-	};
-
-	/* This turns on vbus for otg fs for host mode (dwc2) */
-	vcc5v_otg_fs: vcc5v-otg-fs-regulator {
-		compatible = "regulator-fixed";
-		gpio = <&gpiod 5 0>;
-		regulator-name = "vcc5_host1";
-		regulator-always-on;
-	};
-
-	vcc_3v3: vcc-3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "vcc_3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-
-	backlight: backlight {
-		compatible = "gpio-backlight";
-		gpios = <&gpiok 3 GPIO_ACTIVE_HIGH>;
-		status = "okay";
-	};
-
-	panel_rgb: panel-rgb {
-		compatible = "rocktech,rk043fn48h";
-		power-supply = <&vcc_3v3>;
-		backlight = <&backlight>;
-		enable-gpios = <&gpioi 12 GPIO_ACTIVE_HIGH>;
-		status = "okay";
-		port {
-			panel_in_rgb: endpoint {
-				remote-endpoint = <&ltdc_out_rgb>;
-			};
-		};
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&i2c1 {
-	pinctrl-0 = <&i2c1_pins_b>;
-	pinctrl-names = "default";
-	i2c-scl-rising-time-ns = <185>;
-	i2c-scl-falling-time-ns = <20>;
-	status = "okay";
-};
-
-&i2c3 {
-	pinctrl-0 = <&i2c3_pins_a>;
-	pinctrl-names = "default";
-	clock-frequency = <400000>;
-	status = "okay";
-
-	touchscreen@38 {
-		compatible = "edt,edt-ft5306";
-		reg = <0x38>;
-		interrupt-parent = <&gpioi>;
-		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
-		touchscreen-size-x = <480>;
-		touchscreen-size-y = <272>;
-	};
-};
-
-&ltdc {
-	pinctrl-0 = <&ltdc_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-
-	port {
-		ltdc_out_rgb: endpoint {
-			remote-endpoint = <&panel_in_rgb>;
-		};
-	};
-};
-
-&sdio1 {
-	status = "okay";
-	vmmc-supply = <&vcc_3v3>;
-	cd-gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdio_pins_a>;
-	pinctrl-1 = <&sdio_pins_od_a>;
-	pinctrl-2 = <&sdio_pins_sleep_a>;
-	bus-width = <4>;
-};
-
-&timers5 {
-	/* Override timer5 to act as clockevent */
-	compatible = "st,stm32-timer";
-	interrupts = <50>;
-	status = "okay";
-	/delete-property/#address-cells;
-	/delete-property/#size-cells;
-	/delete-property/clock-names;
-	/delete-node/pwm;
-	/delete-node/timer@4;
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_b>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_fs {
-	dr_mode = "host";
-	pinctrl-0 = <&usbotg_fs_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_hs {
-	dr_mode = "host";
-	phys = <&usbotg_hs_phy>;
-	phy-names = "usb2-phy";
-	pinctrl-0 = <&usbotg_hs_pins_b>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi
deleted file mode 100644
index 139f72b790c0..000000000000
--- a/arch/arm/boot/dts/st/stm32f746-pinctrl.dtsi
+++ /dev/null
@@ -1,55 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
-/*
- * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
- * Author: Alexandre Torgue  <alexandre.torgue@st.com> for STMicroelectronics.
- */
-
-#include "stm32f7-pinctrl.dtsi"
-
-&pinctrl {
-	compatible = "st,stm32f746-pinctrl";
-
-	gpioa: gpio@40020000 {
-		gpio-ranges = <&pinctrl 0 0 16>;
-	};
-
-	gpiob: gpio@40020400 {
-		gpio-ranges = <&pinctrl 0 16 16>;
-	};
-
-	gpioc: gpio@40020800 {
-		gpio-ranges = <&pinctrl 0 32 16>;
-	};
-
-	gpiod: gpio@40020c00 {
-		gpio-ranges = <&pinctrl 0 48 16>;
-	};
-
-	gpioe: gpio@40021000 {
-		gpio-ranges = <&pinctrl 0 64 16>;
-	};
-
-	gpiof: gpio@40021400 {
-		gpio-ranges = <&pinctrl 0 80 16>;
-	};
-
-	gpiog: gpio@40021800 {
-		gpio-ranges = <&pinctrl 0 96 16>;
-	};
-
-	gpioh: gpio@40021c00 {
-		gpio-ranges = <&pinctrl 0 112 16>;
-	};
-
-	gpioi: gpio@40022000 {
-		gpio-ranges = <&pinctrl 0 128 16>;
-	};
-
-	gpioj: gpio@40022400 {
-		gpio-ranges = <&pinctrl 0 144 16>;
-	};
-
-	gpiok: gpio@40022800 {
-		gpio-ranges = <&pinctrl 0 160 8>;
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f746.dtsi b/arch/arm/boot/dts/st/stm32f746.dtsi
deleted file mode 100644
index 208f8c6dfc9d..000000000000
--- a/arch/arm/boot/dts/st/stm32f746.dtsi
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
- * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "../armv7-m.dtsi"
-#include <dt-bindings/clock/stm32fx-clock.h>
-#include <dt-bindings/mfd/stm32f7-rcc.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	clocks {
-		clk_hse: clk-hse {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <0>;
-		};
-
-		clk-lse {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <32768>;
-		};
-
-		clk-lsi {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <32000>;
-		};
-
-		clk_i2s_ckin: clk-i2s-ckin {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <48000000>;
-		};
-	};
-
-	soc {
-		timers2: timers@40000000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000000 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM2)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@1 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <1>;
-				status = "disabled";
-			};
-		};
-
-		timers3: timers@40000400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000400 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM3)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@2 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <2>;
-				status = "disabled";
-			};
-		};
-
-		timers4: timers@40000800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000800 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM4)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@3 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <3>;
-				status = "disabled";
-			};
-		};
-
-		timers5: timers@40000c00 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40000C00 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM5)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@4 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <4>;
-				status = "disabled";
-			};
-		};
-
-		timers6: timers@40001000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40001000 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM6)>;
-			clock-names = "int";
-			status = "disabled";
-
-			timer@5 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <5>;
-				status = "disabled";
-			};
-		};
-
-		timers7: timers@40001400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40001400 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM7)>;
-			clock-names = "int";
-			status = "disabled";
-
-			timer@6 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <6>;
-				status = "disabled";
-			};
-		};
-
-		timers12: timers@40001800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40001800 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM12)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@11 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <11>;
-				status = "disabled";
-			};
-		};
-
-		timers13: timers@40001c00 {
-			compatible = "st,stm32-timers";
-			reg = <0x40001C00 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		timers14: timers@40002000 {
-			compatible = "st,stm32-timers";
-			reg = <0x40002000 0x400>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		lptimer1: timer@40002400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-lptimer";
-			reg = <0x40002400 0x400>;
-			interrupts-extended = <&exti 23 IRQ_TYPE_EDGE_RISING>;
-			clocks = <&rcc 1 CLK_LPTIMER>;
-			clock-names = "mux";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm-lp";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			trigger@0 {
-				compatible = "st,stm32-lptimer-trigger";
-				reg = <0>;
-				status = "disabled";
-			};
-
-			counter {
-				compatible = "st,stm32-lptimer-counter";
-				status = "disabled";
-			};
-
-			timer {
-				compatible = "st,stm32-lptimer-timer";
-				status = "disabled";
-			};
-		};
-
-		rtc: rtc@40002800 {
-			compatible = "st,stm32-rtc";
-			reg = <0x40002800 0x400>;
-			clocks = <&rcc 1 CLK_RTC>;
-			assigned-clocks = <&rcc 1 CLK_RTC>;
-			assigned-clock-parents = <&rcc 1 CLK_LSE>;
-			interrupt-parent = <&exti>;
-			interrupts = <17 1>;
-			st,syscfg = <&pwrcfg 0x00 0x100>;
-			status = "disabled";
-		};
-
-		spi2: spi@40003800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f7-spi";
-			reg = <0x40003800 0x400>;
-			interrupts = <36>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(SPI2)>;
-			status = "disabled";
-		};
-
-		spi3: spi@40003c00 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f7-spi";
-			reg = <0x40003c00 0x400>;
-			interrupts = <51>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(SPI3)>;
-			status = "disabled";
-		};
-
-		usart2: serial@40004400 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40004400 0x400>;
-			interrupts = <38>;
-			clocks = <&rcc 1 CLK_USART2>;
-			status = "disabled";
-		};
-
-		usart3: serial@40004800 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40004800 0x400>;
-			interrupts = <39>;
-			clocks = <&rcc 1 CLK_USART3>;
-			status = "disabled";
-		};
-
-		usart4: serial@40004c00 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40004c00 0x400>;
-			interrupts = <52>;
-			clocks = <&rcc 1 CLK_UART4>;
-			status = "disabled";
-		};
-
-		usart5: serial@40005000 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40005000 0x400>;
-			interrupts = <53>;
-			clocks = <&rcc 1 CLK_UART5>;
-			status = "disabled";
-		};
-
-		i2c1: i2c@40005400 {
-			compatible = "st,stm32f7-i2c";
-			reg = <0x40005400 0x400>;
-			interrupts = <31>,
-				     <32>;
-			resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
-			clocks = <&rcc 1 CLK_I2C1>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c2: i2c@40005800 {
-			compatible = "st,stm32f7-i2c";
-			reg = <0x40005800 0x400>;
-			interrupts = <33>,
-				     <34>;
-			resets = <&rcc STM32F7_APB1_RESET(I2C2)>;
-			clocks = <&rcc 1 CLK_I2C2>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c3: i2c@40005c00 {
-			compatible = "st,stm32f7-i2c";
-			reg = <0x40005c00 0x400>;
-			interrupts = <72>,
-				     <73>;
-			resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
-			clocks = <&rcc 1 CLK_I2C3>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c4: i2c@40006000 {
-			compatible = "st,stm32f7-i2c";
-			reg = <0x40006000 0x400>;
-			interrupts = <95>,
-				     <96>;
-			resets = <&rcc STM32F7_APB1_RESET(I2C4)>;
-			clocks = <&rcc 1 CLK_I2C4>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		can1: can@40006400 {
-			compatible = "st,stm32f4-bxcan";
-			reg = <0x40006400 0x200>;
-			interrupts = <19>, <20>, <21>, <22>;
-			interrupt-names = "tx", "rx0", "rx1", "sce";
-			resets = <&rcc STM32F7_APB1_RESET(CAN1)>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CAN1)>;
-			st,can-primary;
-			st,gcan = <&gcan1>;
-			status = "disabled";
-		};
-
-		gcan1: gcan@40006600 {
-			compatible = "st,stm32f4-gcan", "syscon";
-			reg = <0x40006600 0x200>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CAN1)>;
-		};
-
-		can2: can@40006800 {
-			compatible = "st,stm32f4-bxcan";
-			reg = <0x40006800 0x200>;
-			interrupts = <63>, <64>, <65>, <66>;
-			interrupt-names = "tx", "rx0", "rx1", "sce";
-			resets = <&rcc STM32F7_APB1_RESET(CAN2)>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CAN2)>;
-			st,can-secondary;
-			st,gcan = <&gcan1>;
-			status = "disabled";
-		};
-
-		cec: cec@40006c00 {
-			compatible = "st,stm32-cec";
-			reg = <0x40006C00 0x400>;
-			interrupts = <94>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CEC)>, <&rcc 1 CLK_HDMI_CEC>;
-			clock-names = "cec", "hdmi-cec";
-			status = "disabled";
-		};
-
-		usart7: serial@40007800 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40007800 0x400>;
-			interrupts = <82>;
-			clocks = <&rcc 1 CLK_UART7>;
-			status = "disabled";
-		};
-
-		usart8: serial@40007c00 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40007c00 0x400>;
-			interrupts = <83>;
-			clocks = <&rcc 1 CLK_UART8>;
-			status = "disabled";
-		};
-
-		timers1: timers@40010000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40010000 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM1)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@0 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <0>;
-				status = "disabled";
-			};
-		};
-
-		timers8: timers@40010400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40010400 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM8)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@7 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <7>;
-				status = "disabled";
-			};
-		};
-
-		usart1: serial@40011000 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40011000 0x400>;
-			interrupts = <37>;
-			clocks = <&rcc 1 CLK_USART1>;
-			status = "disabled";
-		};
-
-		usart6: serial@40011400 {
-			compatible = "st,stm32f7-uart";
-			reg = <0x40011400 0x400>;
-			interrupts = <71>;
-			clocks = <&rcc 1 CLK_USART6>;
-			status = "disabled";
-		};
-
-		sdio2: mmc@40011c00 {
-			compatible = "arm,pl180", "arm,primecell";
-			arm,primecell-periphid = <0x00880180>;
-			reg = <0x40011c00 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC2)>;
-			clock-names = "apb_pclk";
-			interrupts = <103>;
-			max-frequency = <48000000>;
-			status = "disabled";
-		};
-
-		sdio1: mmc@40012c00 {
-			compatible = "arm,pl180", "arm,primecell";
-			arm,primecell-periphid = <0x00880180>;
-			reg = <0x40012c00 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SDMMC1)>;
-			clock-names = "apb_pclk";
-			interrupts = <49>;
-			max-frequency = <48000000>;
-			status = "disabled";
-		};
-
-		spi1: spi@40013000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f7-spi";
-			reg = <0x40013000 0x400>;
-			interrupts = <35>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SPI1)>;
-			status = "disabled";
-		};
-
-		spi4: spi@40013400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f7-spi";
-			reg = <0x40013400 0x400>;
-			interrupts = <84>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SPI4)>;
-			status = "disabled";
-		};
-
-		syscfg: syscon@40013800 {
-			compatible = "st,stm32-syscfg", "syscon";
-			reg = <0x40013800 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SYSCFG)>;
-		};
-
-		exti: interrupt-controller@40013c00 {
-			compatible = "st,stm32-exti";
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x40013C00 0x400>;
-			interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <42>, <62>, <76>;
-		};
-
-		timers9: timers@40014000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-timers";
-			reg = <0x40014000 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM9)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			timer@8 {
-				compatible = "st,stm32-timer-trigger";
-				reg = <8>;
-				status = "disabled";
-			};
-		};
-
-		timers10: timers@40014400 {
-			compatible = "st,stm32-timers";
-			reg = <0x40014400 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		timers11: timers@40014800 {
-			compatible = "st,stm32-timers";
-			reg = <0x40014800 0x400>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
-			clock-names = "int";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		spi5: spi@40015000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f7-spi";
-			reg = <0x40015000 0x400>;
-			interrupts = <85>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SPI5)>;
-			status = "disabled";
-		};
-
-		spi6: spi@40015400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32f7-spi";
-			reg = <0x40015400 0x400>;
-			interrupts = <86>;
-			clocks = <&rcc 0 STM32F7_APB2_CLOCK(SPI6)>;
-			status = "disabled";
-		};
-
-		ltdc: display-controller@40016800 {
-			compatible = "st,stm32-ltdc";
-			reg = <0x40016800 0x200>;
-			interrupts = <88>, <89>;
-			resets = <&rcc STM32F7_APB2_RESET(LTDC)>;
-			clocks = <&rcc 1 CLK_LCD>;
-			clock-names = "lcd";
-			status = "disabled";
-		};
-
-		pwrcfg: power-config@40007000 {
-			compatible = "st,stm32-power-config", "syscon";
-			reg = <0x40007000 0x400>;
-		};
-
-		crc: crc@40023000 {
-			compatible = "st,stm32f7-crc";
-			reg = <0x40023000 0x400>;
-			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(CRC)>;
-			status = "disabled";
-		};
-
-		rcc: rcc@40023800 {
-			#reset-cells = <1>;
-			#clock-cells = <2>;
-			compatible = "st,stm32f746-rcc", "st,stm32-rcc";
-			reg = <0x40023800 0x400>;
-			clocks = <&clk_hse>, <&clk_i2s_ckin>;
-			st,syscfg = <&pwrcfg>;
-			assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
-			assigned-clock-rates = <1000000>;
-		};
-
-		dma1: dma-controller@40026000 {
-			compatible = "st,stm32-dma";
-			reg = <0x40026000 0x400>;
-			interrupts = <11>,
-				     <12>,
-				     <13>,
-				     <14>,
-				     <15>,
-				     <16>,
-				     <17>,
-				     <47>;
-			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA1)>;
-			#dma-cells = <4>;
-			status = "disabled";
-		};
-
-		dma2: dma-controller@40026400 {
-			compatible = "st,stm32-dma";
-			reg = <0x40026400 0x400>;
-			interrupts = <56>,
-				     <57>,
-				     <58>,
-				     <59>,
-				     <60>,
-				     <68>,
-				     <69>,
-				     <70>;
-			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(DMA2)>;
-			#dma-cells = <4>;
-			st,mem2mem;
-			status = "disabled";
-		};
-
-		usbotg_hs: usb@40040000 {
-			compatible = "st,stm32f7-hsotg";
-			reg = <0x40040000 0x40000>;
-			interrupts = <77>;
-			clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHS)>;
-			clock-names = "otg";
-			g-rx-fifo-size = <256>;
-			g-np-tx-fifo-size = <32>;
-			g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
-			status = "disabled";
-		};
-
-		usbotg_fs: usb@50000000 {
-			compatible = "st,stm32f4x9-fsotg";
-			reg = <0x50000000 0x40000>;
-			interrupts = <67>;
-			clocks = <&rcc 0 STM32F7_AHB2_CLOCK(OTGFS)>;
-			clock-names = "otg";
-			status = "disabled";
-		};
-	};
-};
-
-&systick {
-	clocks = <&rcc 1 0>;
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f769-disco-mb1166-reva09.dts b/arch/arm/boot/dts/st/stm32f769-disco-mb1166-reva09.dts
deleted file mode 100644
index ff7ff32371d0..000000000000
--- a/arch/arm/boot/dts/st/stm32f769-disco-mb1166-reva09.dts
+++ /dev/null
@@ -1,13 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2023 Dario Binacchi <dario.binacchi@amarulasolutions.com>
- */
-
-#include "stm32f769-disco.dts"
-
-&panel0 {
-	compatible = "frida,frd400b25025", "novatek,nt35510";
-	vddi-supply = <&vcc_3v3>;
-	vdd-supply = <&vcc_3v3>;
-	/delete-property/power-supply;
-};
diff --git a/arch/arm/boot/dts/st/stm32f769-disco.dts b/arch/arm/boot/dts/st/stm32f769-disco.dts
deleted file mode 100644
index e5854fa1071b..000000000000
--- a/arch/arm/boot/dts/st/stm32f769-disco.dts
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright 2017 - Vikas MANOCHA <vikas.manocha@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32f769.dtsi"
-#include "stm32f769-pinctrl.dtsi"
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32F769-DISCO board";
-	compatible = "st,stm32f769-disco", "st,stm32f769";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@c0000000 {
-		device_type = "memory";
-		reg = <0xC0000000 0x1000000>;
-	};
-
-	reserved-memory {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		linux,dma {
-			compatible = "shared-dma-pool";
-			linux,dma-default;
-			no-map;
-			size = <0x100000>;
-		};
-	};
-
-	aliases {
-		serial0 = &usart1;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_usr2: led-usr2 {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpioj 5 GPIO_ACTIVE_HIGH>;
-			linux,default-trigger = "heartbeat";
-		};
-		led-usr1 {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpioj 13 GPIO_ACTIVE_HIGH>;
-		};
-		led-usr3 {
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpioa 12 GPIO_ACTIVE_HIGH>;
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "User";
-			linux,code = <KEY_HOME>;
-			gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_usr2>;
-		};
-	};
-
-	usbotg_hs_phy: usb-phy {
-		#phy-cells = <0>;
-		compatible = "usb-nop-xceiv";
-		clocks = <&rcc 0 STM32F7_AHB1_CLOCK(OTGHSULPI)>;
-		clock-names = "main_clk";
-	};
-
-	vcc_3v3: vcc-3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "vcc_3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-	};
-};
-
-&rcc {
-	compatible = "st,stm32f769-rcc", "st,stm32f746-rcc", "st,stm32-rcc";
-};
-
-&cec {
-	pinctrl-0 = <&cec_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&dsi {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	status = "okay";
-
-	ports {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		port@0 {
-			reg = <0>;
-			dsi_in: endpoint {
-				remote-endpoint = <&ltdc_out_dsi>;
-			};
-		};
-
-		port@1 {
-			reg = <1>;
-			dsi_out: endpoint {
-				remote-endpoint = <&dsi_panel_in>;
-			};
-		};
-	};
-
-	panel0: panel@0 {
-		compatible = "orisetech,otm8009a";
-		reg = <0>; /* dsi virtual channel (0..3) */
-		reset-gpios = <&gpioj 15 GPIO_ACTIVE_LOW>;
-		power-supply = <&vcc_3v3>;
-		status = "okay";
-
-		port {
-			dsi_panel_in: endpoint {
-				remote-endpoint = <&dsi_out>;
-			};
-		};
-	};
-};
-
-&i2c1 {
-	pinctrl-0 = <&i2c1_pins_b>;
-	pinctrl-names = "default";
-	i2c-scl-rising-time-ns = <185>;
-	i2c-scl-falling-time-ns = <20>;
-	status = "okay";
-};
-
-&ltdc {
-	status = "okay";
-
-	port {
-		ltdc_out_dsi: endpoint {
-			remote-endpoint = <&dsi_in>;
-		};
-	};
-};
-
-&rtc {
-	status = "okay";
-};
-
-&sdio2 {
-	status = "okay";
-	vmmc-supply = <&vcc_3v3>;
-	cd-gpios = <&gpioi 15 GPIO_ACTIVE_LOW>;
-	broken-cd;
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdio_pins_b>;
-	pinctrl-1 = <&sdio_pins_od_b>;
-	pinctrl-2 = <&sdio_pins_sleep_b>;
-	bus-width = <4>;
-};
-
-&timers5 {
-	/* Override timer5 to act as clockevent */
-	compatible = "st,stm32-timer";
-	interrupts = <50>;
-	status = "okay";
-	/delete-property/#address-cells;
-	/delete-property/#size-cells;
-	/delete-property/clock-names;
-	/delete-node/pwm;
-	/delete-node/timer@4;
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_hs {
-	dr_mode = "otg";
-	phys = <&usbotg_hs_phy>;
-	phy-names = "usb2-phy";
-	pinctrl-0 = <&usbotg_hs_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi
deleted file mode 100644
index 02c2a8b08468..000000000000
--- a/arch/arm/boot/dts/st/stm32f769-pinctrl.dtsi
+++ /dev/null
@@ -1,55 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
-/*
- * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
- * Author: Alexandre Torgue  <alexandre.torgue@st.com> for STMicroelectronics.
- */
-
-#include "stm32f7-pinctrl.dtsi"
-
-&pinctrl {
-	compatible = "st,stm32f769-pinctrl";
-
-	gpioa: gpio@40020000 {
-		gpio-ranges = <&pinctrl 0 0 16>;
-	};
-
-	gpiob: gpio@40020400 {
-		gpio-ranges = <&pinctrl 0 16 16>;
-	};
-
-	gpioc: gpio@40020800 {
-		gpio-ranges = <&pinctrl 0 32 16>;
-	};
-
-	gpiod: gpio@40020c00 {
-		gpio-ranges = <&pinctrl 0 48 16>;
-	};
-
-	gpioe: gpio@40021000 {
-		gpio-ranges = <&pinctrl 0 64 16>;
-	};
-
-	gpiof: gpio@40021400 {
-		gpio-ranges = <&pinctrl 0 80 16>;
-	};
-
-	gpiog: gpio@40021800 {
-		gpio-ranges = <&pinctrl 0 96 16>;
-	};
-
-	gpioh: gpio@40021c00 {
-		gpio-ranges = <&pinctrl 0 112 16>;
-	};
-
-	gpioi: gpio@40022000 {
-		gpio-ranges = <&pinctrl 0 128 16>;
-	};
-
-	gpioj: gpio@40022400 {
-		gpio-ranges = <&pinctrl 0 144 16>;
-	};
-
-	gpiok: gpio@40022800 {
-		gpio-ranges = <&pinctrl 0 160 8>;
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32f769.dtsi b/arch/arm/boot/dts/st/stm32f769.dtsi
deleted file mode 100644
index e8cbb99e81a6..000000000000
--- a/arch/arm/boot/dts/st/stm32f769.dtsi
+++ /dev/null
@@ -1,37 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2023 Dario Binacchi <dario.binacchi@amarulasolutions.com>
- */
-
-#include "stm32f746.dtsi"
-
-/ {
-	soc {
-		can3: can@40003400 {
-			compatible = "st,stm32f4-bxcan";
-			reg = <0x40003400 0x200>;
-			interrupts = <104>, <105>, <106>, <107>;
-			interrupt-names = "tx", "rx0", "rx1", "sce";
-			resets = <&rcc STM32F7_APB1_RESET(CAN3)>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CAN3)>;
-			st,gcan = <&gcan3>;
-			status = "disabled";
-		};
-
-		gcan3: gcan@40003600 {
-			compatible = "st,stm32f4-gcan", "syscon";
-			reg = <0x40003600 0x200>;
-			clocks = <&rcc 0 STM32F7_APB1_CLOCK(CAN3)>;
-		};
-
-		dsi: dsi@40016c00 {
-			compatible = "st,stm32-dsi";
-			reg = <0x40016c00 0x800>;
-			clocks = <&rcc 1 CLK_F769_DSI>, <&clk_hse>;
-			clock-names = "pclk", "ref";
-			resets = <&rcc STM32F7_APB2_RESET(DSI)>;
-			reset-names = "apb";
-			status = "disabled";
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi b/arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi
deleted file mode 100644
index 8a6db484383d..000000000000
--- a/arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <dt-bindings/pinctrl/stm32-pinfunc.h>
-
-&pinctrl {
-
-	i2c1_pins_a: i2c1-0 {
-		pins {
-			pinmux = <STM32_PINMUX('B', 6, AF4)>, /* I2C1_SCL */
-				 <STM32_PINMUX('B', 7, AF4)>; /* I2C1_SDA */
-			bias-disable;
-			drive-open-drain;
-			slew-rate = <0>;
-		};
-	};
-
-	ethernet_rmii: rmii-0 {
-		pins {
-			pinmux = <STM32_PINMUX('G', 11, AF11)>,
-				 <STM32_PINMUX('G', 13, AF11)>,
-				 <STM32_PINMUX('G', 12, AF11)>,
-				 <STM32_PINMUX('C', 4, AF11)>,
-				 <STM32_PINMUX('C', 5, AF11)>,
-				 <STM32_PINMUX('A', 7, AF11)>,
-				 <STM32_PINMUX('C', 1, AF11)>,
-				 <STM32_PINMUX('A', 2, AF11)>,
-				 <STM32_PINMUX('A', 1, AF11)>;
-			slew-rate = <2>;
-		};
-	};
-
-	sdmmc1_b4_pins_a: sdmmc1-b4-0 {
-		pins {
-			pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
-				 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
-				 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
-				 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
-				 <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1_CK */
-				 <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
-			slew-rate = <3>;
-			drive-push-pull;
-			bias-disable;
-		};
-	};
-
-	sdmmc1_b4_od_pins_a: sdmmc1-b4-od-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
-				 <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
-				 <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
-				 <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
-				 <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
-			slew-rate = <3>;
-			drive-push-pull;
-			bias-disable;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
-			slew-rate = <3>;
-			drive-open-drain;
-			bias-disable;
-		};
-	};
-
-	sdmmc1_b4_sleep_pins_a: sdmmc1-b4-sleep-0 {
-		pins {
-			pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1_D0 */
-				 <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1_D1 */
-				 <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1_D2 */
-				 <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1_D3 */
-				 <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1_CK */
-				 <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1_CMD */
-		};
-	};
-
-	sdmmc1_dir_pins_a: sdmmc1-dir-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('C', 6, AF8)>, /* SDMMC1_D0DIR */
-				 <STM32_PINMUX('C', 7, AF8)>, /* SDMMC1_D123DIR */
-				 <STM32_PINMUX('B', 9, AF7)>; /* SDMMC1_CDIR */
-			slew-rate = <3>;
-			drive-push-pull;
-			bias-pull-up;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('B', 8, AF7)>; /* SDMMC1_CKIN */
-			bias-pull-up;
-		};
-	};
-
-	sdmmc1_dir_sleep_pins_a: sdmmc1-dir-sleep-0 {
-		pins {
-			pinmux = <STM32_PINMUX('C', 6, ANALOG)>, /* SDMMC1_D0DIR */
-				 <STM32_PINMUX('C', 7, ANALOG)>, /* SDMMC1_D123DIR */
-				 <STM32_PINMUX('B', 9, ANALOG)>, /* SDMMC1_CDIR */
-				 <STM32_PINMUX('B', 8, ANALOG)>; /* SDMMC1_CKIN */
-		};
-	};
-
-	sdmmc2_b4_pins_a: sdmmc2-b4-0 {
-		pins {
-			pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC1_D0 */
-				 <STM32_PINMUX('B', 15, AF9)>, /* SDMMC1_D1 */
-				 <STM32_PINMUX('B', 3, AF9)>, /* SDMMC1_D2 */
-				 <STM32_PINMUX('B', 4, AF9)>, /* SDMMC1_D3 */
-				 <STM32_PINMUX('D', 6, AF11)>, /* SDMMC1_CK */
-				 <STM32_PINMUX('D', 7, AF11)>; /* SDMMC1_CMD */
-			slew-rate = <3>;
-			drive-push-pull;
-			bias-disable;
-		};
-	};
-
-	sdmmc2_b4_od_pins_a: sdmmc2-b4-od-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
-				 <STM32_PINMUX('B', 15, AF9)>, /* SDMMC1_D1 */
-				 <STM32_PINMUX('B', 3, AF9)>, /* SDMMC1_D2 */
-				 <STM32_PINMUX('B', 4, AF9)>, /* SDMMC1_D3 */
-				 <STM32_PINMUX('D', 6, AF11)>; /* SDMMC1_CK */
-			slew-rate = <3>;
-			drive-push-pull;
-			bias-disable;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('D', 7, AF11)>; /* SDMMC1_CMD */
-			slew-rate = <3>;
-			drive-open-drain;
-			bias-disable;
-		};
-	};
-
-	sdmmc2_b4_sleep_pins_a: sdmmc2-b4-sleep-0 {
-		pins {
-			pinmux = <STM32_PINMUX('B', 14, ANALOG)>, /* SDMMC1_D0 */
-				 <STM32_PINMUX('B', 15, ANALOG)>, /* SDMMC1_D1 */
-				 <STM32_PINMUX('B', 3, ANALOG)>, /* SDMMC1_D2 */
-				 <STM32_PINMUX('B', 4, ANALOG)>, /* SDMMC1_D3 */
-				 <STM32_PINMUX('D', 6, ANALOG)>, /* SDMMC1_CK */
-				 <STM32_PINMUX('D', 7, ANALOG)>; /* SDMMC1_CMD */
-		};
-	};
-
-	spi1_pins: spi1-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('A', 5, AF5)>,
-				/* SPI1_CLK */
-				 <STM32_PINMUX('B', 5, AF5)>;
-				/* SPI1_MOSI */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <2>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('G', 9, AF5)>;
-				/* SPI1_MISO */
-			bias-disable;
-		};
-	};
-
-	uart4_pins_a: uart4-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('A', 0, AF8)>; /* UART4_TX */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <0>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('I', 9, AF8)>; /* UART4_RX */
-			bias-disable;
-		};
-	};
-
-	uart8_pins_a: uart8-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('J', 8, AF8)>; /* UART8_TX */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <0>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('J', 9, AF8)>; /* UART8_RX */
-			bias-disable;
-		};
-	};
-
-	usart1_pins_a: usart1-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <0>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('B', 15, AF4)>; /* USART1_RX */
-			bias-disable;
-		};
-	};
-
-	usart1_pins_b: usart1-1 {
-		pins1 {
-			pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <0>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */
-			bias-disable;
-		};
-	};
-
-	usart2_pins_a: usart2-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('D', 5, AF7)>; /* USART2_TX */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <0>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('D', 6, AF7)>; /* USART2_RX */
-			bias-disable;
-		};
-	};
-
-	usart3_pins_a: usart3-0 {
-		pins1 {
-			pinmux = <STM32_PINMUX('B', 10, AF7)>, /* USART3_TX */
-				 <STM32_PINMUX('D', 12, AF7)>; /* USART3_RTS_DE */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <0>;
-		};
-		pins2 {
-			pinmux = <STM32_PINMUX('B', 11, AF7)>, /* USART3_RX */
-				 <STM32_PINMUX('D', 11, AF7)>; /* USART3_CTS_NSS */
-			bias-disable;
-		};
-	};
-
-	usbotg_hs_pins_a: usbotg-hs-0 {
-		pins {
-			pinmux = <STM32_PINMUX('H', 4, AF10)>,	/* ULPI_NXT */
-					 <STM32_PINMUX('I', 11, AF10)>, /* ULPI_DIR> */
-					 <STM32_PINMUX('C', 0, AF10)>,	/* ULPI_STP> */
-					 <STM32_PINMUX('A', 5, AF10)>,	/* ULPI_CK> */
-					 <STM32_PINMUX('A', 3, AF10)>,	/* ULPI_D0> */
-					 <STM32_PINMUX('B', 0, AF10)>,	/* ULPI_D1> */
-					 <STM32_PINMUX('B', 1, AF10)>,	/* ULPI_D2> */
-					 <STM32_PINMUX('B', 10, AF10)>, /* ULPI_D3> */
-					 <STM32_PINMUX('B', 11, AF10)>, /* ULPI_D4> */
-					 <STM32_PINMUX('B', 12, AF10)>, /* ULPI_D5> */
-					 <STM32_PINMUX('B', 13, AF10)>, /* ULPI_D6> */
-					 <STM32_PINMUX('B', 5, AF10)>;	/* ULPI_D7> */
-			bias-disable;
-			drive-push-pull;
-			slew-rate = <2>;
-		};
-	};
-};
-
diff --git a/arch/arm/boot/dts/st/stm32h743.dtsi b/arch/arm/boot/dts/st/stm32h743.dtsi
deleted file mode 100644
index 2f19cfbc57ad..000000000000
--- a/arch/arm/boot/dts/st/stm32h743.dtsi
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
- * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "../armv7-m.dtsi"
-#include <dt-bindings/clock/stm32h7-clks.h>
-#include <dt-bindings/mfd/stm32h7-rcc.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	clocks {
-		clk_hse: clk-hse {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <0>;
-		};
-
-		clk_lse: clk-lse {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <32768>;
-		};
-
-		clk_i2s: i2s_ckin {
-			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <0>;
-		};
-	};
-
-	soc {
-		timer5: timer@40000c00 {
-			compatible = "st,stm32-timer";
-			reg = <0x40000c00 0x400>;
-			interrupts = <50>;
-			clocks = <&rcc TIM5_CK>;
-		};
-
-		lptimer1: timer@40002400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-lptimer";
-			reg = <0x40002400 0x400>;
-			clocks = <&rcc LPTIM1_CK>;
-			clock-names = "mux";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm-lp";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			trigger@0 {
-				compatible = "st,stm32-lptimer-trigger";
-				reg = <0>;
-				status = "disabled";
-			};
-
-			counter {
-				compatible = "st,stm32-lptimer-counter";
-				status = "disabled";
-			};
-		};
-
-		spi2: spi@40003800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32h7-spi";
-			reg = <0x40003800 0x400>;
-			interrupts = <36>;
-			resets = <&rcc STM32H7_APB1L_RESET(SPI2)>;
-			clocks = <&rcc SPI2_CK>;
-			status = "disabled";
-
-		};
-
-		spi3: spi@40003c00 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32h7-spi";
-			reg = <0x40003c00 0x400>;
-			interrupts = <51>;
-			resets = <&rcc STM32H7_APB1L_RESET(SPI3)>;
-			clocks = <&rcc SPI3_CK>;
-			status = "disabled";
-		};
-
-		usart2: serial@40004400 {
-			compatible = "st,stm32h7-uart";
-			reg = <0x40004400 0x400>;
-			interrupts = <38>;
-			status = "disabled";
-			clocks = <&rcc USART2_CK>;
-		};
-
-		usart3: serial@40004800 {
-			compatible = "st,stm32h7-uart";
-			reg = <0x40004800 0x400>;
-			interrupts = <39>;
-			status = "disabled";
-			clocks = <&rcc USART3_CK>;
-		};
-
-		uart4: serial@40004c00 {
-			compatible = "st,stm32h7-uart";
-			reg = <0x40004c00 0x400>;
-			interrupts = <52>;
-			status = "disabled";
-			clocks = <&rcc UART4_CK>;
-		};
-
-		i2c1: i2c@40005400 {
-			compatible = "st,stm32f7-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x40005400 0x400>;
-			interrupts = <31>,
-				     <32>;
-			resets = <&rcc STM32H7_APB1L_RESET(I2C1)>;
-			clocks = <&rcc I2C1_CK>;
-			status = "disabled";
-		};
-
-		i2c2: i2c@40005800 {
-			compatible = "st,stm32f7-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x40005800 0x400>;
-			interrupts = <33>,
-				     <34>;
-			resets = <&rcc STM32H7_APB1L_RESET(I2C2)>;
-			clocks = <&rcc I2C2_CK>;
-			status = "disabled";
-		};
-
-		i2c3: i2c@40005c00 {
-			compatible = "st,stm32f7-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x40005C00 0x400>;
-			interrupts = <72>,
-				     <73>;
-			resets = <&rcc STM32H7_APB1L_RESET(I2C3)>;
-			clocks = <&rcc I2C3_CK>;
-			status = "disabled";
-		};
-
-		dac: dac@40007400 {
-			compatible = "st,stm32h7-dac-core";
-			reg = <0x40007400 0x400>;
-			clocks = <&rcc DAC12_CK>;
-			clock-names = "pclk";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-
-			dac1: dac@1 {
-				compatible = "st,stm32-dac";
-				#io-channel-cells = <1>;
-				reg = <1>;
-				status = "disabled";
-			};
-
-			dac2: dac@2 {
-				compatible = "st,stm32-dac";
-				#io-channel-cells = <1>;
-				reg = <2>;
-				status = "disabled";
-			};
-		};
-
-		uart8: serial@40007c00 {
-			compatible = "st,stm32h7-uart";
-			reg = <0x40007c00 0x400>;
-			interrupts = <83>;
-			status = "disabled";
-			clocks = <&rcc UART8_CK>;
-		};
-
-		usart1: serial@40011000 {
-			compatible = "st,stm32h7-uart";
-			reg = <0x40011000 0x400>;
-			interrupts = <37>;
-			status = "disabled";
-			clocks = <&rcc USART1_CK>;
-		};
-
-		spi1: spi@40013000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32h7-spi";
-			reg = <0x40013000 0x400>;
-			interrupts = <35>;
-			resets = <&rcc STM32H7_APB2_RESET(SPI1)>;
-			clocks = <&rcc SPI1_CK>;
-			status = "disabled";
-		};
-
-		spi4: spi@40013400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32h7-spi";
-			reg = <0x40013400 0x400>;
-			interrupts = <84>;
-			resets = <&rcc STM32H7_APB2_RESET(SPI4)>;
-			clocks = <&rcc SPI4_CK>;
-			status = "disabled";
-		};
-
-		spi5: spi@40015000 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32h7-spi";
-			reg = <0x40015000 0x400>;
-			interrupts = <85>;
-			resets = <&rcc STM32H7_APB2_RESET(SPI5)>;
-			clocks = <&rcc SPI5_CK>;
-			status = "disabled";
-		};
-
-		dma1: dma-controller@40020000 {
-			compatible = "st,stm32-dma";
-			reg = <0x40020000 0x400>;
-			interrupts = <11>,
-				     <12>,
-				     <13>,
-				     <14>,
-				     <15>,
-				     <16>,
-				     <17>,
-				     <47>;
-			clocks = <&rcc DMA1_CK>;
-			#dma-cells = <4>;
-			st,mem2mem;
-			dma-requests = <8>;
-			status = "disabled";
-		};
-
-		dma2: dma-controller@40020400 {
-			compatible = "st,stm32-dma";
-			reg = <0x40020400 0x400>;
-			interrupts = <56>,
-				     <57>,
-				     <58>,
-				     <59>,
-				     <60>,
-				     <68>,
-				     <69>,
-				     <70>;
-			clocks = <&rcc DMA2_CK>;
-			#dma-cells = <4>;
-			st,mem2mem;
-			dma-requests = <8>;
-			status = "disabled";
-		};
-
-		dmamux1: dma-router@40020800 {
-			compatible = "st,stm32h7-dmamux";
-			reg = <0x40020800 0x40>;
-			#dma-cells = <3>;
-			dma-channels = <16>;
-			dma-requests = <128>;
-			dma-masters = <&dma1 &dma2>;
-			clocks = <&rcc DMA1_CK>;
-		};
-
-		adc_12: adc@40022000 {
-			compatible = "st,stm32h7-adc-core";
-			reg = <0x40022000 0x400>;
-			interrupts = <18>;
-			clocks = <&rcc ADC12_CK>;
-			clock-names = "bus";
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-
-			adc1: adc@0 {
-				compatible = "st,stm32h7-adc";
-				#io-channel-cells = <1>;
-				reg = <0x0>;
-				interrupt-parent = <&adc_12>;
-				interrupts = <0>;
-				status = "disabled";
-			};
-
-			adc2: adc@100 {
-				compatible = "st,stm32h7-adc";
-				#io-channel-cells = <1>;
-				reg = <0x100>;
-				interrupt-parent = <&adc_12>;
-				interrupts = <1>;
-				status = "disabled";
-			};
-		};
-
-		usbotg_hs: usb@40040000 {
-			compatible = "st,stm32f7-hsotg";
-			reg = <0x40040000 0x40000>;
-			interrupts = <77>;
-			clocks = <&rcc USB1OTG_CK>;
-			clock-names = "otg";
-			g-rx-fifo-size = <256>;
-			g-np-tx-fifo-size = <32>;
-			g-tx-fifo-size = <128 128 64 64 64 64 32 32>;
-			status = "disabled";
-		};
-
-		usbotg_fs: usb@40080000 {
-			compatible = "st,stm32f4x9-fsotg";
-			reg = <0x40080000 0x40000>;
-			interrupts = <101>;
-			clocks = <&rcc USB2OTG_CK>;
-			clock-names = "otg";
-			status = "disabled";
-		};
-
-		ltdc: display-controller@50001000 {
-			compatible = "st,stm32-ltdc";
-			reg = <0x50001000 0x200>;
-			interrupts = <88>, <89>;
-			resets = <&rcc STM32H7_APB3_RESET(LTDC)>;
-			clocks = <&rcc LTDC_CK>;
-			clock-names = "lcd";
-			status = "disabled";
-		};
-
-		mdma1: dma-controller@52000000 {
-			compatible = "st,stm32h7-mdma";
-			reg = <0x52000000 0x1000>;
-			interrupts = <122>;
-			clocks = <&rcc MDMA_CK>;
-			#dma-cells = <5>;
-			dma-channels = <16>;
-			dma-requests = <32>;
-		};
-
-		sdmmc1: mmc@52007000 {
-			compatible = "arm,pl18x", "arm,primecell";
-			arm,primecell-periphid = <0x10153180>;
-			reg = <0x52007000 0x1000>;
-			interrupts = <49>;
-			clocks = <&rcc SDMMC1_CK>;
-			clock-names = "apb_pclk";
-			resets = <&rcc STM32H7_AHB3_RESET(SDMMC1)>;
-			cap-sd-highspeed;
-			cap-mmc-highspeed;
-			max-frequency = <120000000>;
-		};
-
-		sdmmc2: mmc@48022400 {
-			compatible = "arm,pl18x", "arm,primecell";
-			arm,primecell-periphid = <0x10153180>;
-			reg = <0x48022400 0x400>;
-			interrupts = <124>;
-			clocks = <&rcc SDMMC2_CK>;
-			clock-names = "apb_pclk";
-			resets = <&rcc STM32H7_AHB2_RESET(SDMMC2)>;
-			cap-sd-highspeed;
-			cap-mmc-highspeed;
-			max-frequency = <120000000>;
-			status = "disabled";
-		};
-
-		exti: interrupt-controller@58000000 {
-			compatible = "st,stm32h7-exti";
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x58000000 0x400>;
-			interrupts = <1>, <2>, <3>, <6>, <7>, <8>, <9>, <10>, <23>, <40>, <41>, <62>, <76>;
-		};
-
-		syscfg: syscon@58000400 {
-			compatible = "st,stm32-syscfg", "syscon";
-			reg = <0x58000400 0x400>;
-		};
-
-		spi6: spi@58001400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32h7-spi";
-			reg = <0x58001400 0x400>;
-			interrupts = <86>;
-			resets = <&rcc STM32H7_APB4_RESET(SPI6)>;
-			clocks = <&rcc SPI6_CK>;
-			status = "disabled";
-		};
-
-		i2c4: i2c@58001c00 {
-			compatible = "st,stm32f7-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x58001C00 0x400>;
-			interrupts = <95>,
-				     <96>;
-			resets = <&rcc STM32H7_APB4_RESET(I2C4)>;
-			clocks = <&rcc I2C4_CK>;
-			status = "disabled";
-		};
-
-		lptimer2: timer@58002400 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-lptimer";
-			reg = <0x58002400 0x400>;
-			clocks = <&rcc LPTIM2_CK>;
-			clock-names = "mux";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm-lp";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			trigger@1 {
-				compatible = "st,stm32-lptimer-trigger";
-				reg = <1>;
-				status = "disabled";
-			};
-
-			counter {
-				compatible = "st,stm32-lptimer-counter";
-				status = "disabled";
-			};
-		};
-
-		lptimer3: timer@58002800 {
-			#address-cells = <1>;
-			#size-cells = <0>;
-			compatible = "st,stm32-lptimer";
-			reg = <0x58002800 0x400>;
-			clocks = <&rcc LPTIM3_CK>;
-			clock-names = "mux";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm-lp";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-
-			trigger@2 {
-				compatible = "st,stm32-lptimer-trigger";
-				reg = <2>;
-				status = "disabled";
-			};
-		};
-
-		lptimer4: timer@58002c00 {
-			compatible = "st,stm32-lptimer";
-			reg = <0x58002c00 0x400>;
-			clocks = <&rcc LPTIM4_CK>;
-			clock-names = "mux";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm-lp";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		lptimer5: timer@58003000 {
-			compatible = "st,stm32-lptimer";
-			reg = <0x58003000 0x400>;
-			clocks = <&rcc LPTIM5_CK>;
-			clock-names = "mux";
-			status = "disabled";
-
-			pwm {
-				compatible = "st,stm32-pwm-lp";
-				#pwm-cells = <3>;
-				status = "disabled";
-			};
-		};
-
-		vrefbuf: regulator@58003c00 {
-			compatible = "st,stm32-vrefbuf";
-			reg = <0x58003C00 0x8>;
-			clocks = <&rcc VREF_CK>;
-			regulator-min-microvolt = <1500000>;
-			regulator-max-microvolt = <2500000>;
-			status = "disabled";
-		};
-
-		rtc: rtc@58004000 {
-			compatible = "st,stm32h7-rtc";
-			reg = <0x58004000 0x400>;
-			clocks = <&rcc RTCAPB_CK>, <&rcc RTC_CK>;
-			clock-names = "pclk", "rtc_ck";
-			assigned-clocks = <&rcc RTC_CK>;
-			assigned-clock-parents = <&rcc LSE_CK>;
-			interrupt-parent = <&exti>;
-			interrupts = <17 IRQ_TYPE_EDGE_RISING>;
-			st,syscfg = <&pwrcfg 0x00 0x100>;
-			status = "disabled";
-		};
-
-		rcc: reset-clock-controller@58024400 {
-			compatible = "st,stm32h743-rcc", "st,stm32-rcc";
-			reg = <0x58024400 0x400>;
-			#clock-cells = <1>;
-			#reset-cells = <1>;
-			clocks = <&clk_hse>, <&clk_lse>, <&clk_i2s>;
-			st,syscfg = <&pwrcfg>;
-		};
-
-		pwrcfg: power-config@58024800 {
-			compatible = "st,stm32-power-config", "syscon";
-			reg = <0x58024800 0x400>;
-		};
-
-		adc_3: adc@58026000 {
-			compatible = "st,stm32h7-adc-core";
-			reg = <0x58026000 0x400>;
-			interrupts = <127>;
-			clocks = <&rcc ADC3_CK>;
-			clock-names = "bus";
-			interrupt-controller;
-			#interrupt-cells = <1>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-
-			adc3: adc@0 {
-				compatible = "st,stm32h7-adc";
-				#io-channel-cells = <1>;
-				reg = <0x0>;
-				interrupt-parent = <&adc_3>;
-				interrupts = <0>;
-				status = "disabled";
-			};
-		};
-
-		mac: ethernet@40028000 {
-			compatible = "st,stm32-dwmac", "snps,dwmac-4.10a";
-			reg = <0x40028000 0x8000>;
-			reg-names = "stmmaceth";
-			interrupts = <61>;
-			interrupt-names = "macirq";
-			clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
-			clocks = <&rcc ETH1MAC_CK>, <&rcc ETH1TX_CK>, <&rcc ETH1RX_CK>;
-			st,syscon = <&syscfg 0x4>;
-			snps,pbl = <8>;
-			status = "disabled";
-		};
-
-		pinctrl: pinctrl@58020000 {
-			#address-cells = <1>;
-			#size-cells = <1>;
-			compatible = "st,stm32h743-pinctrl";
-			ranges = <0 0x58020000 0x3000>;
-			interrupt-parent = <&exti>;
-			st,syscfg = <&syscfg 0x8>;
-
-			gpioa: gpio@58020000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x0 0x400>;
-				clocks = <&rcc GPIOA_CK>;
-				st,bank-name = "GPIOA";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 0 16>;
-			};
-
-			gpiob: gpio@58020400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x400 0x400>;
-				clocks = <&rcc GPIOB_CK>;
-				st,bank-name = "GPIOB";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 16 16>;
-			};
-
-			gpioc: gpio@58020800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x800 0x400>;
-				clocks = <&rcc GPIOC_CK>;
-				st,bank-name = "GPIOC";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 32 16>;
-			};
-
-			gpiod: gpio@58020c00 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0xc00 0x400>;
-				clocks = <&rcc GPIOD_CK>;
-				st,bank-name = "GPIOD";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 48 16>;
-			};
-
-			gpioe: gpio@58021000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x1000 0x400>;
-				clocks = <&rcc GPIOE_CK>;
-				st,bank-name = "GPIOE";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 64 16>;
-			};
-
-			gpiof: gpio@58021400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x1400 0x400>;
-				clocks = <&rcc GPIOF_CK>;
-				st,bank-name = "GPIOF";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 80 16>;
-			};
-
-			gpiog: gpio@58021800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x1800 0x400>;
-				clocks = <&rcc GPIOG_CK>;
-				st,bank-name = "GPIOG";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 96 16>;
-			};
-
-			gpioh: gpio@58021c00 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x1c00 0x400>;
-				clocks = <&rcc GPIOH_CK>;
-				st,bank-name = "GPIOH";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 112 16>;
-			};
-
-			gpioi: gpio@58022000 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x2000 0x400>;
-				clocks = <&rcc GPIOI_CK>;
-				st,bank-name = "GPIOI";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 128 16>;
-			};
-
-			gpioj: gpio@58022400 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x2400 0x400>;
-				clocks = <&rcc GPIOJ_CK>;
-				st,bank-name = "GPIOJ";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <16>;
-				gpio-ranges = <&pinctrl 0 144 16>;
-			};
-
-			gpiok: gpio@58022800 {
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x2800 0x400>;
-				clocks = <&rcc GPIOK_CK>;
-				st,bank-name = "GPIOK";
-				interrupt-controller;
-				#interrupt-cells = <2>;
-				ngpios = <8>;
-				gpio-ranges = <&pinctrl 0 160 8>;
-			};
-		};
-	};
-};
-
-&systick {
-	clock-frequency = <250000000>;
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32h743i-disco.dts b/arch/arm/boot/dts/st/stm32h743i-disco.dts
deleted file mode 100644
index 78d55b77db7c..000000000000
--- a/arch/arm/boot/dts/st/stm32h743i-disco.dts
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright 2017 - Patrice Chotard <patrice.chotard@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32h743.dtsi"
-#include "stm32h7-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32H743i-Discovery board";
-	compatible = "st,stm32h743i-disco", "st,stm32h743";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@d0000000 {
-		device_type = "memory";
-		reg = <0xd0000000 0x2000000>;
-	};
-
-	aliases {
-		serial0 = &usart2;
-	};
-
-	v3v3: regulator-v3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "v3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-always-on;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpioi 12 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "heartbeat";
-		};
-
-		led-orange {
-			color = <LED_COLOR_ID_ORANGE>;
-			gpios = <&gpioi 13 GPIO_ACTIVE_LOW>;
-		};
-
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpioi 14 GPIO_ACTIVE_LOW>;
-		};
-
-		led-blue {
-			color = <LED_COLOR_ID_BLUE>;
-			gpios = <&gpioi 15 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&mac {
-	status = "disabled";
-	pinctrl-0 = <&ethernet_rmii>;
-	pinctrl-names = "default";
-	phy-mode = "rmii";
-	phy-handle = <&phy0>;
-
-	mdio0 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "snps,dwmac-mdio";
-		phy0: ethernet-phy@0 {
-			reg = <0>;
-		};
-	};
-};
-
-&sdmmc1 {
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdmmc1_b4_pins_a>;
-	pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
-	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
-	broken-cd;
-	st,neg-edge;
-	bus-width = <4>;
-	vmmc-supply = <&v3v3>;
-	status = "okay";
-};
-
-&usart2 {
-	pinctrl-0 = <&usart2_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32h743i-eval.dts b/arch/arm/boot/dts/st/stm32h743i-eval.dts
deleted file mode 100644
index e5e10b0758ee..000000000000
--- a/arch/arm/boot/dts/st/stm32h743i-eval.dts
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright 2017 - Alexandre Torgue <alexandre.torgue@st.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-#include "stm32h743.dtsi"
-#include "stm32h7-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32H743i-EVAL board";
-	compatible = "st,stm32h743i-eval", "st,stm32h743";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@d0000000 {
-		device_type = "memory";
-		reg = <0xd0000000 0x2000000>;
-	};
-
-	aliases {
-		serial0 = &usart1;
-	};
-
-	led {
-		compatible = "gpio-leds";
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpiof 10 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "heartbeat";
-			default-state = "off";
-		};
-
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-
-	vdda: regulator-vdda {
-		compatible = "regulator-fixed";
-		regulator-name = "vdda";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-always-on;
-	};
-
-	v2v9_sd: regulator-v2v9_sd {
-		compatible = "regulator-fixed";
-		regulator-name = "v2v9_sd";
-		regulator-min-microvolt = <2900000>;
-		regulator-max-microvolt = <2900000>;
-		regulator-always-on;
-	};
-
-	usbotg_hs_phy: usb-phy {
-		#phy-cells = <0>;
-		compatible = "usb-nop-xceiv";
-		clocks = <&rcc USB1ULPI_CK>;
-		clock-names = "main_clk";
-	};
-};
-
-&adc_12 {
-	vdda-supply = <&vdda>;
-	vref-supply = <&vdda>;
-	status = "okay";
-	adc1: adc@0 {
-		/* potentiometer */
-		st,adc-channels = <0>;
-		status = "okay";
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&i2c1 {
-	pinctrl-0 = <&i2c1_pins_a>;
-	pinctrl-names = "default";
-	i2c-scl-rising-time-ns = <185>;
-	i2c-scl-falling-time-ns = <20>;
-	status = "okay";
-};
-
-&rtc {
-	status = "okay";
-};
-
-&mac {
-	status = "disabled";
-	pinctrl-0 = <&ethernet_rmii>;
-	pinctrl-names = "default";
-	phy-mode = "rmii";
-	phy-handle = <&phy0>;
-
-	mdio0 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "snps,dwmac-mdio";
-		phy0: ethernet-phy@0 {
-			reg = <0>;
-		};
-	};
-};
-
-&sdmmc1 {
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;
-	pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_a>;
-	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_a>;
-	broken-cd;
-	st,sig-dir;
-	st,neg-edge;
-	st,use-ckin;
-	bus-width = <4>;
-	vmmc-supply = <&v2v9_sd>;
-	status = "okay";
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&usbotg_hs {
-	pinctrl-0 = <&usbotg_hs_pins_a>;
-	pinctrl-names = "default";
-	phys = <&usbotg_hs_phy>;
-	phy-names = "usb2-phy";
-	dr_mode = "otg";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32h747i-disco.dts b/arch/arm/boot/dts/st/stm32h747i-disco.dts
deleted file mode 100644
index c9dcc680e26d..000000000000
--- a/arch/arm/boot/dts/st/stm32h747i-disco.dts
+++ /dev/null
@@ -1,149 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
- */
-
-/dts-v1/;
-#include "stm32h743.dtsi"
-#include "stm32h7-pinctrl.dtsi"
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/leds/common.h>
-
-/ {
-	model = "STMicroelectronics STM32H747i-Discovery board";
-	compatible = "st,stm32h747i-disco", "st,stm32h747";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:115200n8";
-	};
-
-	memory@d0000000 {
-		device_type = "memory";
-		reg = <0xd0000000 0x2000000>;
-	};
-
-	aliases {
-		serial0 = &usart1;
-		serial1 = &uart8;
-	};
-
-	v3v3: regulator-v3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "v3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-always-on;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led_green: led-green {
-			function = LED_FUNCTION_HEARTBEAT;
-			color = <LED_COLOR_ID_GREEN>;
-			gpios = <&gpioi 12 GPIO_ACTIVE_LOW>;
-			linux,default-trigger = "heartbeat";
-		};
-		led-orange {
-			color = <LED_COLOR_ID_ORANGE>;
-			gpios = <&gpioi 13 GPIO_ACTIVE_LOW>;
-		};
-		led-red {
-			color = <LED_COLOR_ID_RED>;
-			gpios = <&gpioi 14 GPIO_ACTIVE_LOW>;
-		};
-		led-blue {
-			color = <LED_COLOR_ID_BLUE>;
-			gpios = <&gpioi 15 GPIO_ACTIVE_LOW>;
-		};
-	};
-
-	gpio-keys {
-		compatible = "gpio-keys";
-		autorepeat;
-		button-0 {
-			label = "User";
-			linux,code = <KEY_WAKEUP>;
-			gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
-		};
-		button-1 {
-			label = "JoySel";
-			linux,code = <KEY_ENTER>;
-			gpios = <&gpiok 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
-		};
-		button-2 {
-			label = "JoyDown";
-			linux,code = <KEY_DOWN>;
-			gpios = <&gpiok 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
-		};
-		button-3 {
-			label = "JoyUp";
-			linux,code = <KEY_UP>;
-			gpios = <&gpiok 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
-		};
-		button-4 {
-			label = "JoyLeft";
-			linux,code = <KEY_LEFT>;
-			gpios = <&gpiok 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
-		};
-		button-5 {
-			label = "JoyRight";
-			linux,code = <KEY_RIGHT>;
-			gpios = <&gpiok 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
-		};
-	};
-
-	options {
-		u-boot {
-			compatible = "u-boot,config";
-			boot-led = <&led_green>;
-		};
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&mac {
-	status = "disabled";
-	pinctrl-0 = <&ethernet_rmii>;
-	pinctrl-names = "default";
-	phy-mode = "rmii";
-	phy-handle = <&phy0>;
-
-	mdio0 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "snps,dwmac-mdio";
-		phy0: ethernet-phy@0 {
-			reg = <0>;
-		};
-	};
-};
-
-&sdmmc1 {
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdmmc1_b4_pins_a>;
-	pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
-	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
-	cd-gpios = <&gpioi 8 GPIO_ACTIVE_LOW>;
-	broken-cd;
-	st,neg-edge;
-	bus-width = <4>;
-	vmmc-supply = <&v3v3>;
-	status = "okay";
-};
-
-&usart1 {
-	pinctrl-0 = <&usart1_pins_b>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-&uart8 {
-	pinctrl-0 = <&uart8_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/st/stm32h750.dtsi b/arch/arm/boot/dts/st/stm32h750.dtsi
deleted file mode 100644
index 41e3b1e3a874..000000000000
--- a/arch/arm/boot/dts/st/stm32h750.dtsi
+++ /dev/null
@@ -1,6 +0,0 @@
-/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
-/* Copyright (C) STMicroelectronics 2021 - All Rights Reserved */
-
-#include "stm32h743.dtsi"
-
-
diff --git a/arch/arm/boot/dts/st/stm32h750i-art-pi.dts b/arch/arm/boot/dts/st/stm32h750i-art-pi.dts
deleted file mode 100644
index 56c53e262da7..000000000000
--- a/arch/arm/boot/dts/st/stm32h750i-art-pi.dts
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright 2021 - Dillon Min <dillon.minfei@gmail.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- *
- * For art-pi board resources, you can refer to link:
- * 	https://art-pi.gitee.io/website/
- */
-
-/dts-v1/;
-#include "stm32h750.dtsi"
-#include "stm32h7-pinctrl.dtsi"
-#include <dt-bindings/interrupt-controller/irq.h>
-#include <dt-bindings/gpio/gpio.h>
-
-/ {
-	model = "RT-Thread STM32H750i-ART-PI board";
-	compatible = "st,stm32h750i-art-pi", "st,stm32h750";
-
-	chosen {
-		bootargs = "root=/dev/ram";
-		stdout-path = "serial0:2000000n8";
-	};
-
-	memory@c0000000 {
-		device_type = "memory";
-		reg = <0xc0000000 0x2000000>;
-	};
-
-	reserved-memory {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges;
-
-		linux,cma {
-			compatible = "shared-dma-pool";
-			no-map;
-			size = <0x100000>;
-			linux,dma-default;
-		};
-	};
-
-	aliases {
-		serial0 = &uart4;
-		serial1 = &usart3;
-	};
-
-	leds {
-		compatible = "gpio-leds";
-		led-red {
-			gpios = <&gpioi 8 0>;
-		};
-		led-green {
-			gpios = <&gpioc 15 0>;
-			linux,default-trigger = "heartbeat";
-		};
-	};
-
-	v3v3: regulator-v3v3 {
-		compatible = "regulator-fixed";
-		regulator-name = "v3v3";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-always-on;
-	};
-
-	wlan_pwr: regulator-wlan {
-		compatible = "regulator-fixed";
-
-		regulator-name = "wl-reg";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-
-		gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
-		enable-active-high;
-	};
-};
-
-&clk_hse {
-	clock-frequency = <25000000>;
-};
-
-&dma1 {
-	status = "okay";
-};
-
-&dma2 {
-	status = "okay";
-};
-
-&mac {
-	status = "disabled";
-	pinctrl-0 = <&ethernet_rmii>;
-	pinctrl-names = "default";
-	phy-mode = "rmii";
-	phy-handle = <&phy0>;
-
-	mdio0 {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		compatible = "snps,dwmac-mdio";
-		phy0: ethernet-phy@0 {
-			reg = <0>;
-		};
-	};
-};
-
-&sdmmc1 {
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdmmc1_b4_pins_a>;
-	pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
-	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
-	broken-cd;
-	st,neg-edge;
-	bus-width = <4>;
-	vmmc-supply = <&v3v3>;
-	status = "okay";
-};
-
-&sdmmc2 {
-	pinctrl-names = "default", "opendrain", "sleep";
-	pinctrl-0 = <&sdmmc2_b4_pins_a>;
-	pinctrl-1 = <&sdmmc2_b4_od_pins_a>;
-	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;
-	broken-cd;
-	non-removable;
-	st,neg-edge;
-	bus-width = <4>;
-	vmmc-supply = <&wlan_pwr>;
-	status = "okay";
-
-	#address-cells = <1>;
-	#size-cells = <0>;
-	brcmf: wifi@1 {
-		reg = <1>;
-		compatible = "brcm,bcm4329-fmac";
-	};
-};
-
-&spi1 {
-	status = "okay";
-	pinctrl-0 = <&spi1_pins>;
-	pinctrl-names = "default";
-	cs-gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
-	dmas = <&dmamux1 37 0x400 0x05>,
-	       <&dmamux1 38 0x400 0x05>;
-	dma-names = "rx", "tx";
-
-	flash@0 {
-		#address-cells = <1>;
-		#size-cells = <1>;
-		compatible = "winbond,w25q128", "jedec,spi-nor";
-		reg = <0>;
-		spi-max-frequency = <80000000>;
-
-		partition@0 {
-			label = "root filesystem";
-			reg = <0 0x1000000>;
-		};
-	};
-};
-
-&usart2 {
-	pinctrl-0 = <&usart2_pins_a>;
-	pinctrl-names = "default";
-	status = "disabled";
-};
-
-&usart3 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&usart3_pins_a>;
-	dmas = <&dmamux1 45 0x400 0x05>,
-	       <&dmamux1 46 0x400 0x05>;
-	dma-names = "rx", "tx";
-	uart-has-rtscts;
-	status = "okay";
-
-	bluetooth {
-		compatible = "brcm,bcm43438-bt";
-		host-wakeup-gpios = <&gpioc 0 GPIO_ACTIVE_HIGH>;
-		device-wakeup-gpios = <&gpioi 10 GPIO_ACTIVE_HIGH>;
-		shutdown-gpios = <&gpioi 11 GPIO_ACTIVE_HIGH>;
-		max-speed = <115200>;
-	};
-};
-
-&uart4 {
-	pinctrl-0 = <&uart4_pins_a>;
-	pinctrl-names = "default";
-	status = "okay";
-};
-
-
diff --git a/arch/arm/configs/stm32_defconfig b/arch/arm/configs/stm32_defconfig
deleted file mode 100644
index 7366aade19ad..000000000000
--- a/arch/arm/configs/stm32_defconfig
+++ /dev/null
@@ -1,80 +0,0 @@
-CONFIG_NO_HZ_IDLE=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_LOG_BUF_SHIFT=16
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EXPERT=y
-# CONFIG_UID16 is not set
-# CONFIG_POSIX_TIMERS is not set
-CONFIG_BASE_SMALL=y
-# CONFIG_FUTEX is not set
-# CONFIG_EPOLL is not set
-# CONFIG_SIGNALFD is not set
-# CONFIG_EVENTFD is not set
-# CONFIG_AIO is not set
-# CONFIG_IO_URING is not set
-# CONFIG_ADVISE_SYSCALLS is not set
-# CONFIG_MMU is not set
-CONFIG_ARCH_STM32=y
-CONFIG_CPU_V7M_NUM_IRQ=240
-CONFIG_SET_MEM_PARAM=y
-CONFIG_DRAM_BASE=0x90000000
-CONFIG_XIP_KERNEL=y
-CONFIG_XIP_PHYS_ADDR=0x08008000
-# CONFIG_SUSPEND is not set
-# CONFIG_GCC_PLUGINS is not set
-CONFIG_BINFMT_FLAT=y
-# CONFIG_COREDUMP is not set
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_FW_LOADER is not set
-# CONFIG_BLK_DEV is not set
-CONFIG_EEPROM_93CX6=y
-CONFIG_KEYBOARD_GPIO=y
-# CONFIG_VT is not set
-# CONFIG_UNIX98_PTYS is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_STM32=y
-CONFIG_SERIAL_STM32_CONSOLE=y
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_STM32F4=y
-CONFIG_I2C_STM32F7=y
-CONFIG_GPIO_STMPE=y
-# CONFIG_HWMON is not set
-CONFIG_WATCHDOG=y
-CONFIG_MFD_STMPE=y
-CONFIG_REGULATOR=y
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-# CONFIG_USB_SUPPORT is not set
-CONFIG_MMC=y
-CONFIG_MMC_ARMMMCI=y
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_GPIO=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_DRV_STM32=y
-CONFIG_DMADEVICES=y
-CONFIG_STM32_DMA=y
-CONFIG_STM32_DMAMUX=y
-CONFIG_STM32_MDMA=y
-# CONFIG_COMMON_CLK_STM32MP is not set
-CONFIG_IIO=y
-CONFIG_STM32_ADC_CORE=y
-CONFIG_STM32_ADC=y
-CONFIG_EXT4_FS=y
-# CONFIG_FILE_LOCKING is not set
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY_USER is not set
-CONFIG_NLS=y
-CONFIG_PRINTK_TIME=y
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_SLUB_DEBUG is not set
diff --git a/arch/arm/mach-stm32/Kconfig b/arch/arm/mach-stm32/Kconfig
index 4ac3384e397a..6ca8507f9451 100644
--- a/arch/arm/mach-stm32/Kconfig
+++ b/arch/arm/mach-stm32/Kconfig
@@ -1,17 +1,15 @@
 # SPDX-License-Identifier: GPL-2.0-only
 menuconfig ARCH_STM32
 	bool "STMicroelectronics STM32 family"
-	depends on ARM_SINGLE_ARMV7M || ARCH_MULTI_V7
-	select ARMV7M_SYSTICK if ARM_SINGLE_ARMV7M
-	select HAVE_ARM_ARCH_TIMER if ARCH_MULTI_V7
-	select ARM_GIC if ARCH_MULTI_V7
-	select ARM_PSCI if ARCH_MULTI_V7
+	depends on ARCH_MULTI_V7
+	select HAVE_ARM_ARCH_TIMER
+	select ARM_GIC
+	select ARM_PSCI
 	select ARM_AMBA
 	select ARCH_HAS_RESET_CONTROLLER
 	select CLKSRC_STM32
 	select PINCTRL
 	select RESET_CONTROLLER
-	select STM32_EXTI if ARM_SINGLE_ARMV7M
 	select STM32_FIREWALL
 	help
 	  Support for STMicroelectronics STM32MP1 processors using Cortex-A7
@@ -20,32 +18,6 @@ menuconfig ARCH_STM32
 
 if ARCH_STM32
 
-if ARM_SINGLE_ARMV7M
-
-config MACH_STM32F429
-	bool "STMicroelectronics STM32F429 (DEPRECATED)"
-	default y
-
-config MACH_STM32F469
-	bool "STMicroelectronics STM32F469 (DEPRECATED)"
-	default y
-
-config MACH_STM32F746
-	bool "STMicroelectronics STM32F746 (DEPRECATED)"
-	default y
-
-config MACH_STM32F769
-	bool "STMicroelectronics STM32F769 (DEPRECATED)"
-	default y
-
-config MACH_STM32H743
-	bool "STMicroelectronics STM32H743 (DEPRECATED)"
-	default y
-
-endif # ARMv7-M
-
-if ARCH_MULTI_V7
-
 config MACH_STM32MP157
 	bool "STMicroelectronics STM32MP157"
 	select ARM_ERRATA_814220
@@ -59,6 +31,4 @@ config MACH_STM32MP13
 	  Support for STM32MP13 SoCs:
 	  STM32MP131, STM32MP133, STM32MP135
 
-endif # ARMv7-A
-
 endif
diff --git a/arch/arm/mach-stm32/board-dt.c b/arch/arm/mach-stm32/board-dt.c
index e6233c8725ae..3d32ce2c1333 100644
--- a/arch/arm/mach-stm32/board-dt.c
+++ b/arch/arm/mach-stm32/board-dt.c
@@ -12,13 +12,6 @@
 #endif
 
 static const char *const stm32_compat[] __initconst = {
-	"st,stm32f429",
-	"st,stm32f469",
-	"st,stm32f746",
-	"st,stm32f769",
-	"st,stm32h743",
-	"st,stm32h747",
-	"st,stm32h750",
 	"st,stm32mp131",
 	"st,stm32mp133",
 	"st,stm32mp135",
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 11/13] ARM: versatile: remove mps2 support
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (9 preceding siblings ...)
  2026-09-08 15:28 ` [PATCH 10/13] ARM: stm32: remove stm32f4/f7/h7 MCU support Arnd Bergmann
@ 2026-09-08 15:28 ` Arnd Bergmann
  2026-09-08 15:41   ` Vladimir Murzin
                     ` (2 more replies)
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
                   ` (2 subsequent siblings)
  13 siblings, 3 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:28 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

From: Arnd Bergmann <arnd@arndb.de>

The Arm mps2 platform is the reference implementation for Arm
microcontrollers and is useful for testing but not expected to be used
as a production device.

With all the Cortex-M based products gone, there is no longer a need
for a reference platform either, so remove it as well.

Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Sudeep Holla <sudeep.holla@kernel.org>
Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
Cc: Linus Walleij <linusw@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Andi Shyti <andi.shyti@kernel.org>
Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Cc: devicetree@vger.kernel.org
Cc: linux-i2c@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig                     |  14 --
 arch/arm/boot/dts/arm/Makefile       |   3 -
 arch/arm/boot/dts/arm/mps2-an385.dts |  92 -----------
 arch/arm/boot/dts/arm/mps2-an399.dts |  92 -----------
 arch/arm/boot/dts/arm/mps2.dtsi      | 220 ---------------------------
 arch/arm/configs/mps2_defconfig      | 102 -------------
 arch/arm/mach-versatile/Makefile     |   3 -
 arch/arm/mach-versatile/v2m-mps2.c   |  17 ---
 drivers/i2c/busses/Kconfig           |   2 +-
 9 files changed, 1 insertion(+), 544 deletions(-)
 delete mode 100644 arch/arm/boot/dts/arm/mps2-an385.dts
 delete mode 100644 arch/arm/boot/dts/arm/mps2-an399.dts
 delete mode 100644 arch/arm/boot/dts/arm/mps2.dtsi
 delete mode 100644 arch/arm/configs/mps2_defconfig
 delete mode 100644 arch/arm/mach-versatile/v2m-mps2.c

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 13b38be3353a..cf380b686867 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -443,20 +443,6 @@ source "arch/arm/mach-zte/Kconfig"
 
 source "arch/arm/mach-zynq/Kconfig"
 
-config ARCH_MPS2
-	bool "ARM MPS2 platform (DEPRECATED)"
-	depends on ARM_SINGLE_ARMV7M
-	select ARM_AMBA
-	select CLKSRC_MPS2
-	help
-	  Support for Cortex-M Prototyping System (or V2M-MPS2) which comes
-	  with a range of available cores like Cortex-M3/M4/M7.
-
-	  Please, note that depends which Application Note is used memory map
-	  for the platform may vary, so adjustment of RAM base might be needed.
-
-	  This platform is scheduled for removal in early 2027
-
 # Definitions to make life easier
 config PLAT_ORION
 	bool
diff --git a/arch/arm/boot/dts/arm/Makefile b/arch/arm/boot/dts/arm/Makefile
index 07ebb64e2cd0..c01593dd197d 100644
--- a/arch/arm/boot/dts/arm/Makefile
+++ b/arch/arm/boot/dts/arm/Makefile
@@ -3,9 +3,6 @@ dtb-$(CONFIG_ARCH_INTEGRATOR) += \
 	integratorap.dtb \
 	integratorap-im-pd1.dtb \
 	integratorcp.dtb
-dtb-$(CONFIG_ARCH_MPS2) += \
-	mps2-an385.dtb \
-	mps2-an399.dtb
 dtb-$(CONFIG_ARCH_REALVIEW) += \
 	arm-realview-pb1176.dtb \
 	arm-realview-pb11mp.dtb \
diff --git a/arch/arm/boot/dts/arm/mps2-an385.dts b/arch/arm/boot/dts/arm/mps2-an385.dts
deleted file mode 100644
index aebbebfc25d1..000000000000
--- a/arch/arm/boot/dts/arm/mps2-an385.dts
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2015 ARM Limited
- *
- * Author: Vladimir Murzin <vladimir.murzin@arm.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-
-#include "mps2.dtsi"
-
-/ {
-	model = "ARM MPS2 Application Note 385/386";
-	compatible = "arm,mps2";
-
-	aliases {
-		serial0 = &uart0;
-	};
-
-	chosen {
-		bootargs = "earlycon";
-		stdout-path = "serial0:9600n8";
-	};
-
-	memory@21000000 {
-		device_type = "memory";
-		reg = <0x21000000 0x1000000>;
-	};
-
-	smb {
-		ethernet@0,0 {
-			compatible = "smsc,lan9220", "smsc,lan9115";
-			reg = <0 0x0 0x10000>;
-			interrupts = <13>;
-			interrupt-parent = <&nvic>;
-			smsc,irq-active-high;
-		};
-	};
-};
-
-&uart0 {
-	status = "okay";
-};
-
-&timer0 {
-	status = "okay";
-};
-
-&timer1 {
-	status = "okay";
-};
-
-&wdt {
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/arm/mps2-an399.dts b/arch/arm/boot/dts/arm/mps2-an399.dts
deleted file mode 100644
index 349abf70b2a5..000000000000
--- a/arch/arm/boot/dts/arm/mps2-an399.dts
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2015 ARM Limited
- *
- * Author: Vladimir Murzin <vladimir.murzin@arm.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/dts-v1/;
-
-#include "mps2.dtsi"
-
-/ {
-	model = "ARM MPS2 Application Note 399/400";
-	compatible = "arm,mps2";
-
-	aliases {
-		serial0 = &uart0;
-	};
-
-	chosen {
-		bootargs = "earlycon";
-		stdout-path = "serial0:9600n8";
-	};
-
-	memory@60000000 {
-		device_type = "memory";
-		reg = <0x60000000 0x1000000>;
-	};
-
-	smb {
-		ethernet@1,0 {
-			compatible = "smsc,lan9220", "smsc,lan9115";
-			reg = <1 0x0 0x10000>;
-			interrupts = <13>;
-			interrupt-parent = <&nvic>;
-			smsc,irq-active-high;
-		};
-	};
-};
-
-&uart0 {
-	status = "okay";
-};
-
-&timer0 {
-	status = "okay";
-};
-
-&timer1 {
-	status = "okay";
-};
-
-&wdt {
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/arm/mps2.dtsi b/arch/arm/boot/dts/arm/mps2.dtsi
deleted file mode 100644
index e240bc8aa605..000000000000
--- a/arch/arm/boot/dts/arm/mps2.dtsi
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2015 ARM Limited
- *
- * Author: Vladimir Murzin <vladimir.murzin@arm.com>
- *
- * This file is dual-licensed: you can use it either under the terms
- * of the GPL or the X11 license, at your option. Note that this dual
- * licensing only applies to this file, and not this project as a
- * whole.
- *
- *  a) This file is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU General Public License as
- *     published by the Free Software Foundation; either version 2 of the
- *     License, or (at your option) any later version.
- *
- *     This file is distributed in the hope that it will be useful,
- *     but WITHOUT ANY WARRANTY; without even the implied warranty of
- *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *     GNU General Public License for more details.
- *
- * Or, alternatively,
- *
- *  b) Permission is hereby granted, free of charge, to any person
- *     obtaining a copy of this software and associated documentation
- *     files (the "Software"), to deal in the Software without
- *     restriction, including without limitation the rights to use,
- *     copy, modify, merge, publish, distribute, sublicense, and/or
- *     sell copies of the Software, and to permit persons to whom the
- *     Software is furnished to do so, subject to the following
- *     conditions:
- *
- *     The above copyright notice and this permission notice shall be
- *     included in all copies or substantial portions of the Software.
- *
- *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- *     OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "../armv7-m.dtsi"
-
-/ {
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-	oscclk0: clock-50000000 {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <50000000>;
-	};
-
-	oscclk1: clock-24576000 {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <24576000>;
-	};
-
-	oscclk2: clock-25000000 {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <25000000>;
-	};
-
-	cfgclk: clock-5000000 {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <5000000>;
-	};
-
-	spicfgclk: clock-75000000 {
-		compatible = "fixed-clock";
-		#clock-cells = <0>;
-		clock-frequency = <75000000>;
-	};
-
-	sysclk: spiclcd: spicon: i2cclcd: i2caud: clock-sys {
-		compatible = "fixed-factor-clock";
-		clocks = <&oscclk0>;
-		#clock-cells = <0>;
-		clock-div = <2>;
-		clock-mult = <1>;
-	};
-
-	audmclk: clk-12388000 {
-		compatible = "fixed-factor-clock";
-		clocks = <&oscclk1>;
-		#clock-cells = <0>;
-		clock-div = <2>;
-		clock-mult = <1>;
-	};
-
-	audsclk: clk-3072000 {
-		compatible = "fixed-factor-clock";
-		clocks = <&oscclk1>;
-		#clock-cells = <0>;
-		clock-div = <8>;
-		clock-mult = <1>;
-	};
-
-	soc {
-		compatible = "simple-bus";
-		ranges;
-
-		apb@40000000 {
-			compatible = "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x40000000 0x10000>;
-
-			timer0: mps2-timer0@0 {
-				compatible = "arm,mps2-timer";
-				reg = <0x0 0x1000>;
-				interrupts = <8>;
-				clocks = <&sysclk>;
-				status = "disabled";
-			};
-
-			timer1: mps2-timer1@1000 {
-				compatible = "arm,mps2-timer";
-				reg = <0x1000 0x1000>;
-				interrupts = <9>;
-				clocks = <&sysclk>;
-				status = "disabled";
-			};
-
-			timer2: dual-timer@2000 {
-				compatible = "arm,sp804", "arm,primecell";
-				reg = <0x2000 0x1000>;
-				clocks = <&sysclk>, <&sysclk>, <&sysclk>;
-				clock-names = "timer0clk", "timer1clk",
-					       "apb_pclk";
-				interrupts = <10>;
-				status = "disabled";
-			};
-
-			uart0: serial@4000 {
-				compatible = "arm,mps2-uart";
-				reg = <0x4000 0x1000>;
-				interrupts = <0>, <1>, <12>;
-				clocks = <&sysclk>;
-				status = "disabled";
-			};
-
-			uart1: serial@5000 {
-				compatible = "arm,mps2-uart";
-				reg = <0x5000 0x1000>;
-				interrupts = <2>, <3>, <12>;
-				clocks = <&sysclk>;
-				status = "disabled";
-			};
-
-			uart2: serial@6000 {
-				compatible = "arm,mps2-uart";
-				reg = <0x6000 0x1000>;
-				interrupts = <4>, <5>, <12>;
-				clocks = <&sysclk>;
-				status = "disabled";
-			};
-
-			wdt: watchdog@8000 {
-				compatible = "arm,sp805", "arm,primecell";
-				arm,primecell-periphid = <0x00141805>;
-				reg = <0x8000 0x1000>;
-				interrupts = <0>;
-				clocks = <&sysclk>, <&sysclk>;
-				clock-names = "wdog_clk", "apb_pclk";
-				status = "disabled";
-			};
-		};
-	};
-
-	fpga@40020000 {
-		compatible = "simple-bus";
-		#address-cells = <1>;
-		#size-cells = <1>;
-		ranges = <0 0x40020000 0x10000>;
-
-		fpgaio@8000 {
-			compatible = "syscon", "simple-mfd";
-			reg = <0x8000 0x10>;
-
-			ranges = <0x0 0x8000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-
-			led@0,0 {
-				compatible = "register-bit-led";
-				reg = <0x00 0x04>;
-				offset = <0x0>;
-				mask = <0x01>;
-				label = "userled:0";
-				linux,default-trigger = "heartbeat";
-				default-state = "on";
-			};
-
-			led@0,1 {
-				compatible = "register-bit-led";
-				reg = <0x00 0x04>;
-				offset = <0x0>;
-				mask = <0x02>;
-				label = "userled:1";
-				linux,default-trigger = "usr";
-				default-state = "off";
-			};
-		};
-	};
-
-	smb {
-		compatible = "simple-bus";
-		#address-cells = <2>;
-		#size-cells = <1>;
-		ranges = <0 0 0x40200000 0x10000>,
-			 <1 0 0xa0000000 0x10000>;
-	};
-};
diff --git a/arch/arm/configs/mps2_defconfig b/arch/arm/configs/mps2_defconfig
deleted file mode 100644
index cacf3876f6e4..000000000000
--- a/arch/arm/configs/mps2_defconfig
+++ /dev/null
@@ -1,102 +0,0 @@
-CONFIG_NO_HZ_IDLE=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT_VOLUNTARY=y
-CONFIG_LOG_BUF_SHIFT=16
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_EXPERT=y
-# CONFIG_UID16 is not set
-CONFIG_BASE_SMALL=y
-# CONFIG_FUTEX is not set
-# CONFIG_EPOLL is not set
-# CONFIG_SIGNALFD is not set
-# CONFIG_EVENTFD is not set
-# CONFIG_AIO is not set
-# CONFIG_MMU is not set
-CONFIG_ARCH_MPS2=y
-CONFIG_SET_MEM_PARAM=y
-CONFIG_DRAM_BASE=0x21000000
-CONFIG_DRAM_SIZE=0x1000000
-# CONFIG_SUSPEND is not set
-# CONFIG_BLOCK is not set
-CONFIG_BINFMT_FLAT=y
-# CONFIG_COREDUMP is not set
-# CONFIG_VM_EVENT_COUNTERS is not set
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=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_INET_DIAG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_WIRELESS is not set
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_FW_LOADER is not set
-CONFIG_NETDEVICES=y
-# CONFIG_NET_CORE is not set
-# CONFIG_NET_VENDOR_ARC is not set
-# CONFIG_NET_CADENCE is not set
-# CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_CIRRUS is not set
-# CONFIG_NET_VENDOR_EZCHIP is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-# CONFIG_NET_VENDOR_HISILICON is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_NET_VENDOR_QUALCOMM is not set
-# CONFIG_NET_VENDOR_RENESAS is not set
-# CONFIG_NET_VENDOR_ROCKER is not set
-# CONFIG_NET_VENDOR_SAMSUNG is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-CONFIG_SMSC911X=y
-# CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_NET_VENDOR_VIA is not set
-# CONFIG_NET_VENDOR_WIZNET is not set
-# CONFIG_WLAN is not set
-# CONFIG_INPUT is not set
-# CONFIG_SERIO is not set
-# CONFIG_VT is not set
-# CONFIG_LEGACY_PTYS is not set
-CONFIG_SERIAL_MPS2_UART_CONSOLE=y
-CONFIG_SERIAL_MPS2_UART=y
-CONFIG_SERIAL_NONSTANDARD=y
-# CONFIG_HW_RANDOM is not set
-# CONFIG_HWMON is not set
-CONFIG_WATCHDOG=y
-CONFIG_ARM_SP805_WATCHDOG=y
-CONFIG_MFD_SYSCON=y
-# CONFIG_USB_SUPPORT is not set
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-CONFIG_LEDS_SYSCON=y
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_ONESHOT=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-CONFIG_LEDS_TRIGGER_BACKLIGHT=y
-CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
-CONFIG_ARM_TIMER_SP804=y
-# CONFIG_DNOTIFY is not set
-# CONFIG_INOTIFY_USER is not set
-# CONFIG_MISC_FILESYSTEMS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFS_V4=y
-CONFIG_NFS_V4_1=y
-CONFIG_NFS_V4_2=y
-CONFIG_ROOT_NFS=y
-CONFIG_NLS=y
-CONFIG_PRINTK_TIME=y
-# CONFIG_ENABLE_MUST_CHECK is not set
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
-CONFIG_DEBUG_FS=y
-# CONFIG_SLUB_DEBUG is not set
-# CONFIG_SCHED_DEBUG is not set
-CONFIG_MEMTEST=y
diff --git a/arch/arm/mach-versatile/Makefile b/arch/arm/mach-versatile/Makefile
index d819fb2fc450..07171ef1d6a7 100644
--- a/arch/arm/mach-versatile/Makefile
+++ b/arch/arm/mach-versatile/Makefile
@@ -22,9 +22,6 @@ obj-$(CONFIG_ARCH_VEXPRESS_TC2_PM)	+= tc2_pm.o
 CFLAGS_tc2_pm.o				+= -march=armv7-a
 CFLAGS_REMOVE_tc2_pm.o			= -pg
 
-# mps2
-obj-$(CONFIG_ARCH_MPS2)			+= v2m-mps2.o
-
 ifdef CONFIG_SMP
 obj-y					+= headsmp.o platsmp.o
 obj-$(CONFIG_ARCH_REALVIEW)		+= platsmp-realview.o
diff --git a/arch/arm/mach-versatile/v2m-mps2.c b/arch/arm/mach-versatile/v2m-mps2.c
deleted file mode 100644
index 5b50d8e95cd7..000000000000
--- a/arch/arm/mach-versatile/v2m-mps2.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2015 ARM Limited
- *
- * Author: Vladimir Murzin <vladimir.murzin@arm.com>
- */
-
-#include <asm/mach/arch.h>
-
-static const char *const mps2_compat[] __initconst = {
-	"arm,mps2",
-	NULL
-};
-
-DT_MACHINE_START(MPS2DT, "MPS2 (Device Tree Support)")
-	.dt_compat = mps2_compat,
-MACHINE_END
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index d7b89508311f..9d60d4b650ec 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -1260,7 +1260,7 @@ config I2C_UNIPHIER_F
 
 config I2C_VERSATILE
 	tristate "ARM Versatile/Realview I2C bus support"
-	depends on ARCH_MPS2 || ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS || COMPILE_TEST
+	depends on ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS || COMPILE_TEST
 	select I2C_ALGOBIT
 	help
 	  Say yes if you want to support the I2C serial bus on ARMs Versatile
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (10 preceding siblings ...)
  2026-09-08 15:28 ` [PATCH 11/13] ARM: versatile: remove mps2 support Arnd Bergmann
@ 2026-09-08 15:28 ` Arnd Bergmann
  2026-09-08 17:39   ` Linus Walleij
                     ` (4 more replies)
  2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
  2026-09-08 16:53 ` [PATCH 00/13] ARM: deprecated platform removal Randy Dunlap
  13 siblings, 5 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:28 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

From: Arnd Bergmann <arnd@arndb.de>

The Atmel at91 line, now known as Microchip SAM contains both
SoCs using ARM926 and Cortex-A CPUs as well as a number of
microcontrollers. Only a single one of those MCUs currently
has Linux support, and has no known users.

The samv7 platform was deprecated in Linux-7.3LTS, which will
remain supported a while longer after it is gone from mainline.

Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig.debug      | 10 ----------
 arch/arm/mach-at91/Kconfig  | 11 +----------
 arch/arm/mach-at91/Makefile |  1 -
 arch/arm/mach-at91/samv7.c  | 17 -----------------
 drivers/soc/atmel/soc.c     | 36 ------------------------------------
 5 files changed, 1 insertion(+), 74 deletions(-)
 delete mode 100644 arch/arm/mach-at91/samv7.c

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 3d5f2e41eef1..b27e581a53d4 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -190,15 +190,6 @@ choice
 		  Say Y here if you want kernel low-level debugging support
 		  on the USART3 port of sama5d4.
 
-	config DEBUG_AT91_SAMV7_USART1
-		bool "Kernel low-level debugging via SAMV7 USART1"
-		select DEBUG_AT91_UART
-		depends on SOC_SAMV7
-		help
-		  Say Y here if you want the debug print routines to direct
-		  their output to the USART1 port on SAMV7 based
-		  machines.
-
 	config DEBUG_AT91_SAMA7G5_FLEXCOM3
 		bool "Kernel low-level debugging on SAMA7G5 FLEXCOM3"
 		select DEBUG_AT91_UART
@@ -1504,7 +1495,6 @@ config DEBUG_UART_PHYS
 	default 0x3e000000 if DEBUG_BCM_KONA_UART
 	default 0x3f201000 if DEBUG_BCM2836
 	default 0x40010000 if STM32MP1_DEBUG_UART
-	default 0x40028000 if DEBUG_AT91_SAMV7_USART1
 	default 0x40090000 if DEBUG_LPC32XX
 	default 0x40100000 if DEBUG_PXA_UART1
 	default 0x42000000 if DEBUG_GEMINI
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index cb0e3ff8e0ca..3df1165d159b 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -5,7 +5,7 @@ config ARCH_MICROCHIP
 menuconfig ARCH_AT91
 	bool "AT91/Microchip SoCs"
 	depends on (CPU_LITTLE_ENDIAN && (ARCH_MULTI_V4T || ARCH_MULTI_V5)) || \
-		ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
+		ARCH_MULTI_V7
 	select ARM_CPU_SUSPEND if PM && ARCH_MULTI_V7
 	select COMMON_CLK_AT91
 	select GPIOLIB
@@ -14,15 +14,6 @@ menuconfig ARCH_AT91
 	select ARCH_MICROCHIP
 
 if ARCH_AT91
-config SOC_SAMV7
-	bool "SAM Cortex-M7 family (DEPRECATED)" if ARM_SINGLE_ARMV7M
-	select COMMON_CLK_AT91
-	select PINCTRL_AT91
-	help
-	  Select this if you are using an SoC from Microchip's SAME7, SAMS7 or SAMV7
-	  families.
-
-	  This platform is scheduled for removal in early 2027
 
 config SOC_SAMA5D2
 	bool "SAMA5D2 family"
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
index 7d8a7bc44e65..8c964e182284 100644
--- a/arch/arm/mach-at91/Makefile
+++ b/arch/arm/mach-at91/Makefile
@@ -10,7 +10,6 @@ obj-$(CONFIG_SOC_SAM9X60)	+= sam9x60.o
 obj-$(CONFIG_SOC_SAM9X7)	+= sam9x7.o
 obj-$(CONFIG_SOC_SAMA5)		+= sama5.o sam_secure.o
 obj-$(CONFIG_SOC_SAMA7)		+= sama7.o
-obj-$(CONFIG_SOC_SAMV7)		+= samv7.o
 
 # Power Management
 obj-$(CONFIG_ATMEL_PM)		+= pm.o pm_suspend.o
diff --git a/arch/arm/mach-at91/samv7.c b/arch/arm/mach-at91/samv7.c
deleted file mode 100644
index 22d00005ec09..000000000000
--- a/arch/arm/mach-at91/samv7.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- *  Setup code for SAMv7x
- *
- *  Copyright (C) 2013 Atmel,
- *                2016 Andras Szemzo <szemzo.andras@gmail.com>
- */
-#include <asm/mach/arch.h>
-
-static const char *const samv7_dt_board_compat[] __initconst = {
-	"atmel,samv7",
-	NULL
-};
-
-DT_MACHINE_START(samv7_dt, "Atmel SAMV7")
-	.dt_compat	= samv7_dt_board_compat,
-MACHINE_END
diff --git a/drivers/soc/atmel/soc.c b/drivers/soc/atmel/soc.c
index d89f9dcade7d..e276f86326ec 100644
--- a/drivers/soc/atmel/soc.c
+++ b/drivers/soc/atmel/soc.c
@@ -210,41 +210,6 @@ static const struct at91_soc socs[] __initconst = {
 		 AT91_CIDR_VERSION_MASK, SAMA5D44_EXID_MATCH,
 		 "sama5d44", "sama5d4"),
 #endif
-#ifdef CONFIG_SOC_SAMV7
-	AT91_SOC(SAME70Q21_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAME70Q21_EXID_MATCH,
-		 "same70q21", "same7"),
-	AT91_SOC(SAME70Q20_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAME70Q20_EXID_MATCH,
-		 "same70q20", "same7"),
-	AT91_SOC(SAME70Q19_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAME70Q19_EXID_MATCH,
-		 "same70q19", "same7"),
-	AT91_SOC(SAMS70Q21_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMS70Q21_EXID_MATCH,
-		 "sams70q21", "sams7"),
-	AT91_SOC(SAMS70Q20_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMS70Q20_EXID_MATCH,
-		 "sams70q20", "sams7"),
-	AT91_SOC(SAMS70Q19_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMS70Q19_EXID_MATCH,
-		 "sams70q19", "sams7"),
-	AT91_SOC(SAMV71Q21_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMV71Q21_EXID_MATCH,
-		 "samv71q21", "samv7"),
-	AT91_SOC(SAMV71Q20_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMV71Q20_EXID_MATCH,
-		 "samv71q20", "samv7"),
-	AT91_SOC(SAMV71Q19_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMV71Q19_EXID_MATCH,
-		 "samv71q19", "samv7"),
-	AT91_SOC(SAMV70Q20_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMV70Q20_EXID_MATCH,
-		 "samv70q20", "samv7"),
-	AT91_SOC(SAMV70Q19_CIDR_MATCH, AT91_CIDR_MATCH_MASK,
-		 AT91_CIDR_VERSION_MASK, SAMV70Q19_EXID_MATCH,
-		 "samv70q19", "samv7"),
-#endif
 #ifdef CONFIG_SOC_SAMA7
 	AT91_SOC(SAMA7D65_CIDR_MATCH, AT91_CIDR_MASK_SAMA7G5,
 		 AT91_CIDR_VERSION_MASK_SAMA7G5, SAMA7D65_EXID_MATCH,
@@ -396,7 +361,6 @@ static const struct of_device_id at91_soc_allowed_list[] __initconst = {
 	{ .compatible = "atmel,at91rm9200", },
 	{ .compatible = "atmel,at91sam9", },
 	{ .compatible = "atmel,sama5", },
-	{ .compatible = "atmel,samv7", },
 	{ .compatible = "microchip,sama7d65", },
 	{ .compatible = "microchip,sama7g5", },
 	{ }
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* [PATCH 13/13] ARM: axxia: remove entire platform
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (11 preceding siblings ...)
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
@ 2026-09-08 15:28 ` Arnd Bergmann
  2026-09-08 17:40   ` Linus Walleij
                     ` (2 more replies)
  2026-09-08 16:53 ` [PATCH 00/13] ARM: deprecated platform removal Randy Dunlap
  13 siblings, 3 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 15:28 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Anders Berg

From: Arnd Bergmann <arnd@arndb.de>

The initial Axxia port was contributed by LSI in 2014, but never completed
after the sale of the business unit to Intel, which kept supporting the
bulk of the drivers in their own downstream BSP.

The downstream work has also ended now, and there is no realistic chance
that anyone would rewrite it all into an upstreamable port.

Remove it now that the 7.3LTS release is out and can be used as the
base for one more downstream rebase of the downstream patches if needed.

Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
Cc: Anders Berg <anders.berg@lsi.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 .../devicetree/bindings/arm/axxia.yaml        |  23 --
 MAINTAINERS                                   |   8 -
 arch/arm/Kconfig                              |   2 -
 arch/arm/Makefile                             |   2 -
 arch/arm/boot/dts/intel/Makefile              |   1 -
 arch/arm/boot/dts/intel/axm/Makefile          |   5 -
 .../boot/dts/intel/axm/axm5516-amarillo.dts   |  47 ----
 arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi | 200 ---------------
 arch/arm/boot/dts/intel/axm/axm55xx.dtsi      | 200 ---------------
 arch/arm/configs/axm55xx_defconfig            | 231 ------------------
 arch/arm/mach-axxia/Kconfig                   |  17 --
 arch/arm/mach-axxia/Makefile                  |   3 -
 arch/arm/mach-axxia/axxia.c                   |  19 --
 arch/arm/mach-axxia/platsmp.c                 |  87 -------
 14 files changed, 845 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/arm/axxia.yaml
 delete mode 100644 arch/arm/boot/dts/intel/axm/Makefile
 delete mode 100644 arch/arm/boot/dts/intel/axm/axm5516-amarillo.dts
 delete mode 100644 arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi
 delete mode 100644 arch/arm/boot/dts/intel/axm/axm55xx.dtsi
 delete mode 100644 arch/arm/configs/axm55xx_defconfig
 delete mode 100644 arch/arm/mach-axxia/Kconfig
 delete mode 100644 arch/arm/mach-axxia/Makefile
 delete mode 100644 arch/arm/mach-axxia/axxia.c
 delete mode 100644 arch/arm/mach-axxia/platsmp.c

diff --git a/Documentation/devicetree/bindings/arm/axxia.yaml b/Documentation/devicetree/bindings/arm/axxia.yaml
deleted file mode 100644
index d60907e43efc..000000000000
--- a/Documentation/devicetree/bindings/arm/axxia.yaml
+++ /dev/null
@@ -1,23 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-%YAML 1.2
----
-$id: http://devicetree.org/schemas/arm/axxia.yaml#
-$schema: http://devicetree.org/meta-schemas/core.yaml#
-
-title: Axxia AXM55xx
-
-maintainers:
-  - Anders Berg <anders.berg@lsi.com>
-
-properties:
-  $nodename:
-    const: "/"
-  compatible:
-    description: LSI AXM5516 Validation board (Amarillo)
-    items:
-      - const: lsi,axm5516-amarillo
-      - const: lsi,axm5516
-
-additionalProperties: true
-
-...
diff --git a/MAINTAINERS b/MAINTAINERS
index 292327185a08..74657b35c577 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2742,14 +2742,6 @@ F:	Documentation/devicetree/bindings/arm/axiado.yaml
 F:	arch/arm64/boot/dts/axiado/
 N:	axiado
 
-ARM/AXM LSI SOC
-M:	Krzysztof Kozlowski <krzk@kernel.org>
-L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
-S:	Odd Fixes
-F:	Documentation/devicetree/bindings/arm/axxia.yaml
-F:	arch/arm/boot/dts/intel/axm/
-F:	arch/arm/mach-axxia/
-
 ARM/BITMAIN ARCHITECTURE
 M:	Manivannan Sadhasivam <mani@kernel.org>
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index cf380b686867..760c4bfcc33a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -353,8 +353,6 @@ source "arch/arm/mach-aspeed/Kconfig"
 
 source "arch/arm/mach-at91/Kconfig"
 
-source "arch/arm/mach-axxia/Kconfig"
-
 source "arch/arm/mach-bcm/Kconfig"
 
 source "arch/arm/mach-berlin/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index d3479e374c6f..f41b3f6ab82e 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -164,7 +164,6 @@ textofs-y	:= 0x00008000
 textofs-$(CONFIG_ARCH_REALTEK)  := 0x00108000
 textofs-$(CONFIG_ARCH_QCOM_RESERVE_SMEM) := 0x00208000
 textofs-$(CONFIG_ARCH_MESON) := 0x00208000
-textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
 
 # Machine directory name.  This list is sorted alphanumerically
 # by CONFIG_* macro name.
@@ -173,7 +172,6 @@ machine-$(CONFIG_ARCH_ALPINE)		+= alpine
 machine-$(CONFIG_ARCH_ARTPEC)		+= artpec
 machine-$(CONFIG_ARCH_ASPEED)           += aspeed
 machine-$(CONFIG_ARCH_AT91)		+= at91
-machine-$(CONFIG_ARCH_AXXIA)		+= axxia
 machine-$(CONFIG_ARCH_BCM)		+= bcm
 machine-$(CONFIG_ARCH_BERLIN)		+= berlin
 machine-$(CONFIG_ARCH_CLPS711X)		+= clps711x
diff --git a/arch/arm/boot/dts/intel/Makefile b/arch/arm/boot/dts/intel/Makefile
index c5fc845deb61..3e871d10b7f5 100644
--- a/arch/arm/boot/dts/intel/Makefile
+++ b/arch/arm/boot/dts/intel/Makefile
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
-subdir-y += axm
 subdir-y += ixp
 subdir-y += pxa
 subdir-y += socfpga
diff --git a/arch/arm/boot/dts/intel/axm/Makefile b/arch/arm/boot/dts/intel/axm/Makefile
deleted file mode 100644
index 7c7dc679964d..000000000000
--- a/arch/arm/boot/dts/intel/axm/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-dtb-$(CONFIG_ARCH_AXXIA) += \
-	axm5516-amarillo.dtb
-dtb-$(CONFIG_ARCH_AXXIA) += \
-	axm5516-amarillo.dtb
diff --git a/arch/arm/boot/dts/intel/axm/axm5516-amarillo.dts b/arch/arm/boot/dts/intel/axm/axm5516-amarillo.dts
deleted file mode 100644
index 2e2ad3c7ee77..000000000000
--- a/arch/arm/boot/dts/intel/axm/axm5516-amarillo.dts
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * arch/arm/boot/dts/axm5516-amarillo.dts
- *
- * Copyright (C) 2013 LSI
- */
-
-/dts-v1/;
-
-/memreserve/ 0x00000000 0x00400000;
-
-#include "axm55xx.dtsi"
-#include "axm5516-cpus.dtsi"
-
-/ {
-	model = "Amarillo AXM5516";
-	compatible = "lsi,axm5516-amarillo", "lsi,axm5516";
-
-	memory {
-		device_type = "memory";
-		reg = <0 0x00000000 0x02 0x00000000>;
-	};
-};
-
-&serial0 {
-	status = "okay";
-};
-
-&serial1 {
-	status = "okay";
-};
-
-&serial2 {
-	status = "okay";
-};
-
-&serial3 {
-	status = "okay";
-};
-
-&gpio0 {
-	status = "okay";
-};
-
-&gpio1 {
-	status = "okay";
-};
diff --git a/arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi b/arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi
deleted file mode 100644
index f13ef80b6637..000000000000
--- a/arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi
+++ /dev/null
@@ -1,200 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * arch/arm/boot/dts/axm5516-cpus.dtsi
- *
- * Copyright (C) 2013 LSI
- */
-
-/ {
-	cpus {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		cpu-map {
-			cluster0 {
-				core0 {
-					cpu = <&CPU0>;
-				};
-				core1 {
-					cpu = <&CPU1>;
-				};
-				core2 {
-					cpu = <&CPU2>;
-				};
-				core3 {
-					cpu = <&CPU3>;
-				};
-			};
-			cluster1 {
-				core0 {
-					cpu = <&CPU4>;
-				};
-				core1 {
-					cpu = <&CPU5>;
-				};
-				core2 {
-					cpu = <&CPU6>;
-				};
-				core3 {
-					cpu = <&CPU7>;
-				};
-			};
-			cluster2 {
-				core0 {
-					cpu = <&CPU8>;
-				};
-				core1 {
-					cpu = <&CPU9>;
-				};
-				core2 {
-					cpu = <&CPU10>;
-				};
-				core3 {
-					cpu = <&CPU11>;
-				};
-			};
-			cluster3 {
-				core0 {
-					cpu = <&CPU12>;
-				};
-				core1 {
-					cpu = <&CPU13>;
-				};
-				core2 {
-					cpu = <&CPU14>;
-				};
-				core3 {
-					cpu = <&CPU15>;
-				};
-			};
-		};
-
-		CPU0: cpu@0 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x00>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU1: cpu@1 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x01>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU2: cpu@2 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x02>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU3: cpu@3 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x03>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU4: cpu@100 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x100>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU5: cpu@101 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x101>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU6: cpu@102 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x102>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU7: cpu@103 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x103>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU8: cpu@200 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x200>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU9: cpu@201 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x201>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU10: cpu@202 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x202>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU11: cpu@203 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x203>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU12: cpu@300 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x300>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU13: cpu@301 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x301>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU14: cpu@302 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x302>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-
-		CPU15: cpu@303 {
-			device_type = "cpu";
-			compatible = "arm,cortex-a15";
-			reg = <0x303>;
-			clock-frequency = <1400000000>;
-			cpu-release-addr = <0>; // Fixed by the boot loader
-		};
-	};
-};
diff --git a/arch/arm/boot/dts/intel/axm/axm55xx.dtsi b/arch/arm/boot/dts/intel/axm/axm55xx.dtsi
deleted file mode 100644
index 5277890cfad2..000000000000
--- a/arch/arm/boot/dts/intel/axm/axm55xx.dtsi
+++ /dev/null
@@ -1,200 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * arch/arm/boot/dts/axm55xx.dtsi
- *
- * Copyright (C) 2013 LSI
- */
-
-#include <dt-bindings/interrupt-controller/arm-gic.h>
-#include <dt-bindings/clock/lsi,axm5516-clks.h>
-
-/ {
-	#address-cells = <2>;
-	#size-cells = <2>;
-	interrupt-parent = <&gic>;
-
-	aliases {
-		serial0	  = &serial0;
-		serial1   = &serial1;
-		serial2	  = &serial2;
-		serial3	  = &serial3;
-		timer	  = &timer0;
-	};
-
-	clocks {
-		compatible = "simple-bus";
-		#address-cells = <2>;
-		#size-cells = <2>;
-		ranges;
-
-		clk_ref0: clk_ref0 {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <125000000>;
-		};
-
-		clk_ref1: clk_ref1 {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <125000000>;
-		};
-
-		clk_ref2: clk_ref2 {
-			compatible = "fixed-clock";
-			#clock-cells = <0>;
-			clock-frequency = <125000000>;
-		};
-
-		clks: clock-controller@2010020000 {
-			compatible = "lsi,axm5516-clks";
-			#clock-cells = <1>;
-			reg = <0x20 0x10020000 0 0x20000>;
-		};
-	};
-
-	gic: interrupt-controller@2001001000 {
-		compatible = "arm,cortex-a15-gic";
-		#interrupt-cells = <3>;
-		#address-cells = <0>;
-		interrupt-controller;
-		reg = <0x20 0x01001000 0 0x1000>,
-		      <0x20 0x01002000 0 0x2000>,
-		      <0x20 0x01004000 0 0x2000>,
-		      <0x20 0x01006000 0 0x2000>;
-		interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
-				IRQ_TYPE_LEVEL_HIGH)>;
-	};
-
-	timer {
-		compatible = "arm,armv7-timer";
-		interrupts =
-			<GIC_PPI 13
-				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-			<GIC_PPI 14
-				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-			<GIC_PPI 11
-				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
-			<GIC_PPI 10
-				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-	};
-
-
-	pmu {
-		compatible = "arm,cortex-a15-pmu";
-		interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
-	};
-
-	soc {
-		compatible = "simple-bus";
-		device_type = "soc";
-		#address-cells = <2>;
-		#size-cells = <2>;
-		interrupt-parent = <&gic>;
-		ranges;
-
-		syscon: syscon@2010030000 {
-			compatible = "lsi,axxia-syscon", "syscon";
-			reg = <0x20 0x10030000 0 0x2000>;
-		};
-
-		reset: reset@2010031000 {
-			compatible = "lsi,axm55xx-reset";
-			syscon = <&syscon>;
-		};
-
-		amba {
-			compatible = "simple-bus";
-			#address-cells = <2>;
-			#size-cells = <2>;
-			ranges;
-
-			serial0: serial@2010080000 {
-				compatible = "arm,pl011", "arm,primecell";
-				reg = <0x20 0x10080000 0 0x1000>;
-				interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "disabled";
-			};
-
-			serial1: serial@2010081000 {
-				compatible = "arm,pl011", "arm,primecell";
-				reg = <0x20 0x10081000 0 0x1000>;
-				interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "disabled";
-			};
-
-			serial2: serial@2010082000 {
-				compatible = "arm,pl011", "arm,primecell";
-				reg = <0x20 0x10082000 0 0x1000>;
-				interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "disabled";
-			};
-
-			serial3: serial@2010083000 {
-				compatible = "arm,pl011", "arm,primecell";
-				reg = <0x20 0x10083000 0 0x1000>;
-				interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "disabled";
-			};
-
-			timer0: timer@2010091000 {
-				compatible = "arm,sp804", "arm,primecell";
-				reg = <0x20 0x10091000 0 0x1000>;
-				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "okay";
-			};
-
-			gpio0: gpio@2010092000 {
-				#gpio-cells = <2>;
-				compatible = "arm,pl061", "arm,primecell";
-				gpio-controller;
-				reg = <0x20 0x10092000 0x00 0x1000>;
-				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "disabled";
-			};
-
-			gpio1: gpio@2010093000 {
-				#gpio-cells = <2>;
-				compatible = "arm,pl061", "arm,primecell";
-				gpio-controller;
-				reg = <0x20 0x10093000 0x00 0x1000>;
-				interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
-				clocks = <&clks AXXIA_CLK_PER>;
-				clock-names = "apb_pclk";
-				status = "disabled";
-			};
-		};
-	};
-};
-
-/*
-  Local Variables:
-  mode: C
-  End:
-*/
diff --git a/arch/arm/configs/axm55xx_defconfig b/arch/arm/configs/axm55xx_defconfig
deleted file mode 100644
index 541e38e2205b..000000000000
--- a/arch/arm/configs/axm55xx_defconfig
+++ /dev/null
@@ -1,231 +0,0 @@
-CONFIG_SYSVIPC=y
-CONFIG_POSIX_MQUEUE=y
-CONFIG_FHANDLE=y
-CONFIG_AUDIT=y
-CONFIG_HIGH_RES_TIMERS=y
-CONFIG_PREEMPT=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_BSD_PROCESS_ACCT_V3=y
-CONFIG_TASKSTATS=y
-CONFIG_TASK_DELAY_ACCT=y
-CONFIG_TASK_XACCT=y
-CONFIG_TASK_IO_ACCOUNTING=y
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=16
-CONFIG_NAMESPACES=y
-# CONFIG_UTS_NS is not set
-# CONFIG_IPC_NS is not set
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-CONFIG_SCHED_AUTOGROUP=y
-CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_EXPERT=y
-CONFIG_PROFILING=y
-CONFIG_ARCH_AXXIA=y
-CONFIG_ARM_LPAE=y
-CONFIG_ARM_THUMBEE=y
-CONFIG_ARM_ERRATA_430973=y
-CONFIG_ARM_ERRATA_643719=y
-CONFIG_ARM_ERRATA_720789=y
-CONFIG_ARM_ERRATA_754322=y
-CONFIG_ARM_ERRATA_754327=y
-CONFIG_ARM_ERRATA_764369=y
-CONFIG_ARM_ERRATA_775420=y
-CONFIG_ARM_ERRATA_798181=y
-CONFIG_PCIE_AXXIA=y
-CONFIG_SMP=y
-CONFIG_NR_CPUS=16
-CONFIG_HOTPLUG_CPU=y
-CONFIG_HIGHMEM=y
-CONFIG_ARM_APPENDED_DTB=y
-CONFIG_ARM_ATAG_DTB_COMPAT=y
-CONFIG_VFP=y
-CONFIG_NEON=y
-# CONFIG_SUSPEND is not set
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
-CONFIG_BINFMT_MISC=y
-# CONFIG_COMPAT_BRK is not set
-CONFIG_KSM=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_XFRM_USER=y
-CONFIG_XFRM_SUB_POLICY=y
-CONFIG_XFRM_MIGRATE=y
-CONFIG_XFRM_STATISTICS=y
-CONFIG_NET_KEY=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_INET_AH=y
-CONFIG_INET_ESP=y
-CONFIG_INET_IPCOMP=y
-# CONFIG_IPV6 is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
-CONFIG_BRIDGE=y
-# CONFIG_WIRELESS is not set
-CONFIG_PCI=y
-CONFIG_PCI_MSI=y
-CONFIG_DEVTMPFS=y
-CONFIG_DEVTMPFS_MOUNT=y
-CONFIG_MTD=y
-CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_AFS_PARTS=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_CFI_AMDSTD=y
-CONFIG_MTD_CFI_STAA=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_MTD_PHYSMAP_OF=y
-CONFIG_MTD_M25P80=y
-CONFIG_PROC_DEVICETREE=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_EEPROM_AT24=y
-CONFIG_EEPROM_AT25=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_SG=y
-CONFIG_ATA=y
-CONFIG_PATA_PLATFORM=y
-CONFIG_PATA_OF_PLATFORM=y
-CONFIG_MD=y
-CONFIG_BLK_DEV_DM=y
-CONFIG_DM_UEVENT=y
-CONFIG_NETDEVICES=y
-CONFIG_TUN=y
-CONFIG_VETH=y
-CONFIG_VIRTIO_NET=y
-# CONFIG_NET_CADENCE is not set
-# CONFIG_NET_VENDOR_BROADCOM is not set
-# CONFIG_NET_VENDOR_CIRRUS is not set
-# CONFIG_NET_VENDOR_FARADAY is not set
-# CONFIG_NET_VENDOR_INTEL is not set
-# CONFIG_NET_VENDOR_MARVELL is not set
-# CONFIG_NET_VENDOR_MICREL is not set
-# CONFIG_NET_VENDOR_NATSEMI is not set
-# CONFIG_NET_VENDOR_SEEQ is not set
-# CONFIG_NET_VENDOR_SMSC is not set
-# CONFIG_NET_VENDOR_STMICRO is not set
-# CONFIG_NET_VENDOR_VIA is not set
-# CONFIG_NET_VENDOR_WIZNET is not set
-CONFIG_BROADCOM_PHY=y
-# CONFIG_WLAN is not set
-# CONFIG_MOUSE_PS2_ALPS is not set
-# CONFIG_MOUSE_PS2_LOGIPS2PP is not set
-# CONFIG_MOUSE_PS2_SYNAPTICS is not set
-# CONFIG_MOUSE_PS2_TRACKPOINT is not set
-# CONFIG_SERIO_SERPORT is not set
-CONFIG_SERIO_AMBAKMI=y
-CONFIG_LEGACY_PTY_COUNT=16
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
-CONFIG_VIRTIO_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_MUX=y
-CONFIG_I2C_AXXIA=y
-CONFIG_SPI=y
-CONFIG_SPI_PL022=y
-CONFIG_DP83640_PHY=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_PL061=y
-CONFIG_GPIO_PCA953X=y
-CONFIG_POWER_RESET=y
-CONFIG_POWER_RESET_AXXIA=y
-CONFIG_POWER_SUPPLY=y
-CONFIG_SENSORS_ADT7475=y
-CONFIG_SENSORS_JC42=y
-CONFIG_SENSORS_LM75=y
-CONFIG_PMBUS=y
-CONFIG_SENSORS_LTC2978=y
-CONFIG_WATCHDOG=y
-CONFIG_ARM_SP805_WATCHDOG=y
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_DRAGONRISE=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_KYE=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_TWINHAN=y
-CONFIG_HID_KENSINGTON=y
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_NTRIG=y
-CONFIG_HID_ORTEK=y
-CONFIG_HID_PANTHERLORD=y
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_HID_GREENASIA=y
-CONFIG_HID_SMARTJOYPLUS=y
-CONFIG_HID_TOPSEED=y
-CONFIG_HID_THRUSTMASTER=y
-CONFIG_HID_ZEROPLUS=y
-CONFIG_USB=y
-CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-CONFIG_USB_EHCI_HCD=y
-# CONFIG_USB_EHCI_TT_NEWSCHED is not set
-CONFIG_USB_EHCI_HCD_AXXIA=y
-CONFIG_USB_STORAGE=y
-CONFIG_MMC=y
-CONFIG_MMC_ARMMMCI=y
-CONFIG_DMADEVICES=y
-CONFIG_PL330_DMA=y
-CONFIG_VIRT_DRIVERS=y
-CONFIG_VIRTIO_MMIO=y
-CONFIG_MAILBOX=y
-CONFIG_PL320_MBOX=y
-# CONFIG_IOMMU_SUPPORT is not set
-CONFIG_EXT2_FS=y
-CONFIG_EXT4_FS=y
-CONFIG_AUTOFS_FS=y
-CONFIG_FUSE_FS=y
-CONFIG_CUSE=y
-CONFIG_FSCACHE=y
-CONFIG_FSCACHE_STATS=y
-CONFIG_FSCACHE_HISTOGRAM=y
-CONFIG_FSCACHE_DEBUG=y
-CONFIG_FSCACHE_OBJECT_LIST=y
-CONFIG_CACHEFILES=y
-CONFIG_CACHEFILES_HISTOGRAM=y
-CONFIG_ISO9660_FS=y
-CONFIG_UDF_FS=y
-CONFIG_MSDOS_FS=y
-CONFIG_VFAT_FS=y
-CONFIG_NTFS_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_CRAMFS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V4=y
-CONFIG_ROOT_NFS=y
-CONFIG_NFS_FSCACHE=y
-CONFIG_SUNRPC_DEBUG=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_CRYPTO_XCBC=y
-CONFIG_PRINTK_TIME=y
-CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
-CONFIG_DEBUG_FS=y
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_SCHED_DEBUG is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=60
-# CONFIG_FTRACE is not set
-CONFIG_DEBUG_USER=y
-CONFIG_CRYPTO_GCM=y
-CONFIG_CRYPTO_SHA256=y
diff --git a/arch/arm/mach-axxia/Kconfig b/arch/arm/mach-axxia/Kconfig
deleted file mode 100644
index f773a66c1402..000000000000
--- a/arch/arm/mach-axxia/Kconfig
+++ /dev/null
@@ -1,17 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-config ARCH_AXXIA
-	bool "LSI Axxia platforms (DEPRECATED)"
-	depends on ARCH_MULTI_V7 && ARM_LPAE
-	select ARM_AMBA
-	select ARM_GIC
-	select ARM_TIMER_SP804
-	select HAVE_ARM_ARCH_TIMER
-	select MFD_SYSCON
-	select ZONE_DMA
-	help
-	  This enables support for the LSI Axxia devices.
-
-	  The LSI Axxia platforms require a Flattened Device Tree to be passed
-	  to the kernel.
-
-	  This platform is scheduled for removal in early 2027
diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile
deleted file mode 100644
index 8df8fe76ad47..000000000000
--- a/arch/arm/mach-axxia/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-obj-y				+= axxia.o
-obj-$(CONFIG_SMP)		+= platsmp.o
diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c
deleted file mode 100644
index e21582a7fa11..000000000000
--- a/arch/arm/mach-axxia/axxia.c
+++ /dev/null
@@ -1,19 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Support for the LSI Axxia SoC devices based on ARM cores.
- *
- * Copyright (C) 2012 LSI
- */
-#include <linux/init.h>
-#include <asm/mach/arch.h>
-
-static const char *const axxia_dt_match[] __initconst = {
-	"lsi,axm5516",
-	"lsi,axm5516-sim",
-	"lsi,axm5516-emu",
-	NULL
-};
-
-DT_MACHINE_START(AXXIA_DT, "LSI Axxia AXM55XX")
-	.dt_compat = axxia_dt_match,
-MACHINE_END
diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
deleted file mode 100644
index 2e203626eda5..000000000000
--- a/arch/arm/mach-axxia/platsmp.c
+++ /dev/null
@@ -1,87 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/mach-axxia/platsmp.c
- *
- * Copyright (C) 2012 LSI Corporation
- */
-
-#include <linux/init.h>
-#include <linux/io.h>
-#include <linux/smp.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-#include <asm/cacheflush.h>
-
-/* Syscon register offsets for releasing cores from reset */
-#define SC_CRIT_WRITE_KEY	0x1000
-#define SC_RST_CPU_HOLD		0x1010
-
-/*
- * Write the kernel entry point for secondary CPUs to the specified address
- */
-static void write_release_addr(u32 release_phys)
-{
-	u32 *virt = (u32 *) phys_to_virt(release_phys);
-	writel_relaxed(__pa_symbol(secondary_startup), virt);
-	/* Make sure this store is visible to other CPUs */
-	smp_wmb();
-	__cpuc_flush_dcache_area(virt, sizeof(u32));
-}
-
-static int axxia_boot_secondary(unsigned int cpu, struct task_struct *idle)
-{
-	struct device_node *syscon_np;
-	void __iomem *syscon;
-	u32 tmp;
-
-	syscon_np = of_find_compatible_node(NULL, NULL, "lsi,axxia-syscon");
-	if (!syscon_np)
-		return -ENOENT;
-
-	syscon = of_iomap(syscon_np, 0);
-	of_node_put(syscon_np);
-	if (!syscon)
-		return -ENOMEM;
-
-	tmp = readl(syscon + SC_RST_CPU_HOLD);
-	writel(0xab, syscon + SC_CRIT_WRITE_KEY);
-	tmp &= ~(1 << cpu);
-	writel(tmp, syscon + SC_RST_CPU_HOLD);
-
-	return 0;
-}
-
-static void __init axxia_smp_prepare_cpus(unsigned int max_cpus)
-{
-	int cpu_count = 0;
-	int cpu;
-
-	/*
-	 * Initialise the present map, which describes the set of CPUs actually
-	 * populated at the present time.
-	 */
-	for_each_possible_cpu(cpu) {
-		struct device_node *np;
-		u32 release_phys;
-
-		np = of_get_cpu_node(cpu, NULL);
-		if (!np)
-			continue;
-		if (of_property_read_u32(np, "cpu-release-addr", &release_phys))
-			continue;
-
-		if (cpu_count < max_cpus) {
-			set_cpu_present(cpu, true);
-			cpu_count++;
-		}
-
-		if (release_phys != 0)
-			write_release_addr(release_phys);
-	}
-}
-
-static const struct smp_operations axxia_smp_ops __initconst = {
-	.smp_prepare_cpus	= axxia_smp_prepare_cpus,
-	.smp_boot_secondary	= axxia_boot_secondary,
-};
-CPU_METHOD_OF_DECLARE(axxia_smp, "lsi,syscon-release", &axxia_smp_ops);
-- 
2.53.0


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  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:12   ` Ulf Hansson
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 70+ messages in thread
From: Mark Brown @ 2026-09-08 15:34 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Niklas Cassel, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Bartosz Golaszewski, Thomas Weissschuh, linux-ide, linux-mmc,
	linux-pci, linux-phy, linux-rtc, linux-pm, linux-watchdog,
	linux-sound, linux-gpio

[-- Attachment #1: Type: text/plain, Size: 388 bytes --]

On Tue, Sep 08, 2026 at 05:27:55PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The 'orion' platform is the predecessor to what linux now calls the
> 'mvebu' line of Marvell SoCs, and originally covered orion5x,
> mv78xx0, kirkwood, dove and a few others that do not have any
> upstream support at the moment.

Acked-by: Mark Brown <broonie@kernel.org>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 11/13] ARM: versatile: remove mps2 support
  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 17:37   ` Linus Walleij
  2026-09-08 19:49   ` Sudeep Holla
  2 siblings, 0 replies; 70+ messages in thread
From: Vladimir Murzin @ 2026-09-08 15:41 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

On 9/8/26 16:28, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Arm mps2 platform is the reference implementation for Arm
> microcontrollers and is useful for testing but not expected to be used
> as a production device.
> 
> With all the Cortex-M based products gone, there is no longer a need
> for a reference platform either, so remove it as well.
> 
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Sudeep Holla <sudeep.holla@kernel.org>
> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Andi Shyti <andi.shyti@kernel.org>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Cc: devicetree@vger.kernel.org
> Cc: linux-i2c@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/Kconfig                     |  14 --
>  arch/arm/boot/dts/arm/Makefile       |   3 -
>  arch/arm/boot/dts/arm/mps2-an385.dts |  92 -----------
>  arch/arm/boot/dts/arm/mps2-an399.dts |  92 -----------
>  arch/arm/boot/dts/arm/mps2.dtsi      | 220 ---------------------------
>  arch/arm/configs/mps2_defconfig      | 102 -------------
>  arch/arm/mach-versatile/Makefile     |   3 -
>  arch/arm/mach-versatile/v2m-mps2.c   |  17 ---
>  drivers/i2c/busses/Kconfig           |   2 +-
>  9 files changed, 1 insertion(+), 544 deletions(-)
>  delete mode 100644 arch/arm/boot/dts/arm/mps2-an385.dts
>  delete mode 100644 arch/arm/boot/dts/arm/mps2-an399.dts
>  delete mode 100644 arch/arm/boot/dts/arm/mps2.dtsi
>  delete mode 100644 arch/arm/configs/mps2_defconfig
>  delete mode 100644 arch/arm/mach-versatile/v2m-mps2.c

Acked-by: Vladimir Murzin <vladimir.murzin@arm.com>


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  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:12   ` Ulf Hansson
  2026-09-08 16:18   ` Andrew Lunn
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 70+ messages in thread
From: Ulf Hansson @ 2026-09-08 16:12 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Niklas Cassel, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Mark Brown, Bartosz Golaszewski, Thomas Weissschuh, linux-ide,
	linux-mmc, linux-pci, linux-phy, linux-rtc, linux-pm,
	linux-watchdog, linux-sound, linux-gpio

On Tue, Sep 8, 2026 at 5:29 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> The 'orion' platform is the predecessor to what linux now calls the
> 'mvebu' line of Marvell SoCs, and originally covered orion5x,
> mv78xx0, kirkwood, dove and a few others that do not have any
> upstream support at the moment.
>
> Only a few board files remain here, these are the ones left
> in 2022 board file purge because they had some level of support
> in Debian or OpenWRT, mostly for commercial NAS or router boxes.
> This distro support is now gone, and nobody has converted the
> board files to devicetree, though the orion5x and dove platforms
> also come with devicetree support for some other machines.
>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> Cc: Gregory Clement <gregory.clement@bootlin.com>
> Cc: Alexander Clouter <alex@digriz.org.uk>
> Cc: Jeremy J. Peper <jeremy@jeremypeper.com>
> Cc: Damien Le Moal <dlemoal@kernel.org>
> Cc: Niklas Cassel <cassel@kernel.org>
> Cc: Ulf Hansson <ulfh@kernel.org>
> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
> Cc: "Krzysztof Wilczyński" <kwilczynski@kernel.org>
> Cc: Manivannan Sadhasivam <mani@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Vinod Koul <vkoul@kernel.org>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Daniel Lezcano <daniel.lezcano@kernel.org>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Mark Brown <broonie@kernel.org>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Bartosz Golaszewski <brgl@kernel.org>
> Cc: Thomas Weissschuh <thomas.weissschuh@linutronix.de>
> Cc: linux-ide@vger.kernel.org
> Cc: linux-mmc@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> Cc: linux-phy@lists.infradead.org
> Cc: linux-rtc@vger.kernel.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-watchdog@vger.kernel.org
> Cc: linux-sound@vger.kernel.org
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Ulf Hansson <ulfh@kernel.org> # For MMC

Kind regards
Uffe

> ---
>  MAINTAINERS                                   |   2 -
>  arch/arm/Kconfig                              |   2 -
>  arch/arm/Kconfig.debug                        |   2 +-
>  arch/arm/Makefile                             |   2 -
>  arch/arm/configs/dove_defconfig               | 134 ---
>  arch/arm/configs/mv78xx0_defconfig            | 120 ---
>  arch/arm/mach-dove/Kconfig                    |  32 -
>  arch/arm/mach-dove/Makefile                   |   7 -
>  arch/arm/mach-dove/bridge-regs.h              |  50 --
>  arch/arm/mach-dove/cm-a510.c                  |  94 --
>  arch/arm/mach-dove/common.c                   | 449 ----------
>  arch/arm/mach-dove/common.h                   |  46 -
>  arch/arm/mach-dove/dove.h                     | 185 ----
>  arch/arm/mach-dove/irq.c                      |  81 --
>  arch/arm/mach-dove/irqs.h                     |  89 --
>  arch/arm/mach-dove/mpp.c                      | 159 ----
>  arch/arm/mach-dove/mpp.h                      | 197 -----
>  arch/arm/mach-dove/pcie.c                     | 226 -----
>  arch/arm/mach-dove/pm.h                       |  58 --
>  arch/arm/mach-mv78xx0/Kconfig                 |  27 -
>  arch/arm/mach-mv78xx0/Makefile                |   5 -
>  arch/arm/mach-mv78xx0/bridge-regs.h           |  31 -
>  arch/arm/mach-mv78xx0/buffalo-wxl-setup.c     | 183 ----
>  arch/arm/mach-mv78xx0/common.c                | 444 ----------
>  arch/arm/mach-mv78xx0/common.h                |  54 --
>  arch/arm/mach-mv78xx0/irq.c                   |  69 --
>  arch/arm/mach-mv78xx0/irqs.h                  |  87 --
>  arch/arm/mach-mv78xx0/mpp.c                   |  34 -
>  arch/arm/mach-mv78xx0/mpp.h                   | 337 -------
>  arch/arm/mach-mv78xx0/mv78xx0.h               | 134 ---
>  arch/arm/mach-mv78xx0/pcie.c                  | 280 ------
>  arch/arm/mach-orion5x/Kconfig                 |  95 --
>  arch/arm/mach-orion5x/Makefile                |   9 -
>  arch/arm/mach-orion5x/board-dt.c              |   3 +-
>  arch/arm/mach-orion5x/common.c                | 238 +----
>  arch/arm/mach-orion5x/common.h                |  15 -
>  arch/arm/mach-orion5x/dns323-setup.c          | 757 ----------------
>  arch/arm/mach-orion5x/kurobox_pro-setup.c     | 407 ---------
>  arch/arm/mach-orion5x/mv2120-setup.c          | 256 ------
>  arch/arm/mach-orion5x/net2big-setup.c         | 444 ----------
>  arch/arm/mach-orion5x/pci.c                   |   1 -
>  .../arm/mach-orion5x/terastation_pro2-setup.c | 366 --------
>  arch/arm/mach-orion5x/ts209-setup.c           | 331 -------
>  arch/arm/mach-orion5x/ts409-setup.c           | 329 -------
>  arch/arm/mach-orion5x/ts78xx-fpga.h           |  42 -
>  arch/arm/mach-orion5x/ts78xx-setup.c          | 574 ------------
>  arch/arm/mach-orion5x/tsx09-common.c          | 129 ---
>  arch/arm/mach-orion5x/tsx09-common.h          |  21 -
>  arch/arm/mm/Kconfig                           |   2 +-
>  arch/arm/plat-orion/Makefile                  |   2 +-
>  arch/arm/plat-orion/common.c                  | 826 ------------------
>  arch/arm/plat-orion/include/plat/addr-map.h   |  54 --
>  arch/arm/plat-orion/include/plat/common.h     | 104 ---
>  arch/arm/plat-orion/include/plat/time.h       |  20 -
>  arch/arm/plat-orion/pcie.c                    |   1 -
>  arch/arm/plat-orion/time.c                    | 238 -----
>  drivers/ata/Kconfig                           |   3 +-
>  drivers/mmc/host/Kconfig                      |   2 +-
>  drivers/pci/controller/Kconfig                |   2 +-
>  drivers/phy/marvell/Kconfig                   |   2 +-
>  drivers/rtc/Kconfig                           |   2 +-
>  drivers/soc/Makefile                          |   1 -
>  drivers/thermal/Kconfig                       |   2 +-
>  drivers/watchdog/Kconfig                      |   2 +-
>  sound/soc/kirkwood/Kconfig                    |   2 +-
>  65 files changed, 14 insertions(+), 8888 deletions(-)
>  delete mode 100644 arch/arm/configs/dove_defconfig
>  delete mode 100644 arch/arm/configs/mv78xx0_defconfig
>  delete mode 100644 arch/arm/mach-dove/Kconfig
>  delete mode 100644 arch/arm/mach-dove/Makefile
>  delete mode 100644 arch/arm/mach-dove/bridge-regs.h
>  delete mode 100644 arch/arm/mach-dove/cm-a510.c
>  delete mode 100644 arch/arm/mach-dove/common.c
>  delete mode 100644 arch/arm/mach-dove/common.h
>  delete mode 100644 arch/arm/mach-dove/dove.h
>  delete mode 100644 arch/arm/mach-dove/irq.c
>  delete mode 100644 arch/arm/mach-dove/irqs.h
>  delete mode 100644 arch/arm/mach-dove/mpp.c
>  delete mode 100644 arch/arm/mach-dove/mpp.h
>  delete mode 100644 arch/arm/mach-dove/pcie.c
>  delete mode 100644 arch/arm/mach-dove/pm.h
>  delete mode 100644 arch/arm/mach-mv78xx0/Kconfig
>  delete mode 100644 arch/arm/mach-mv78xx0/Makefile
>  delete mode 100644 arch/arm/mach-mv78xx0/bridge-regs.h
>  delete mode 100644 arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
>  delete mode 100644 arch/arm/mach-mv78xx0/common.c
>  delete mode 100644 arch/arm/mach-mv78xx0/common.h
>  delete mode 100644 arch/arm/mach-mv78xx0/irq.c
>  delete mode 100644 arch/arm/mach-mv78xx0/irqs.h
>  delete mode 100644 arch/arm/mach-mv78xx0/mpp.c
>  delete mode 100644 arch/arm/mach-mv78xx0/mpp.h
>  delete mode 100644 arch/arm/mach-mv78xx0/mv78xx0.h
>  delete mode 100644 arch/arm/mach-mv78xx0/pcie.c
>  delete mode 100644 arch/arm/mach-orion5x/dns323-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/kurobox_pro-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/mv2120-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/net2big-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/terastation_pro2-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/ts209-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/ts409-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/ts78xx-fpga.h
>  delete mode 100644 arch/arm/mach-orion5x/ts78xx-setup.c
>  delete mode 100644 arch/arm/mach-orion5x/tsx09-common.c
>  delete mode 100644 arch/arm/mach-orion5x/tsx09-common.h
>  delete mode 100644 arch/arm/plat-orion/common.c
>  delete mode 100644 arch/arm/plat-orion/include/plat/addr-map.h
>  delete mode 100644 arch/arm/plat-orion/include/plat/common.h
>  delete mode 100644 arch/arm/plat-orion/include/plat/time.h
>  delete mode 100644 arch/arm/plat-orion/time.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 6e8fe7640064..028db7ad15ad 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -3080,8 +3080,6 @@ F:        Documentation/devicetree/bindings/arm/marvell/marvell,orion5x.yaml
>  F:     Documentation/devicetree/bindings/soc/dove/
>  F:     arch/arm/boot/dts/marvell/dove*
>  F:     arch/arm/boot/dts/marvell/orion5x*
> -F:     arch/arm/mach-dove/
> -F:     arch/arm/mach-mv78xx0/
>  F:     arch/arm/mach-orion5x/
>  F:     arch/arm/plat-orion/
>  F:     drivers/bus/mvebu-mbus.c
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 5770deca136d..da29afce309f 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -393,8 +393,6 @@ source "arch/arm/mach-mmp/Kconfig"
>
>  source "arch/arm/mach-mstar/Kconfig"
>
> -source "arch/arm/mach-mv78xx0/Kconfig"
> -
>  source "arch/arm/mach-mvebu/Kconfig"
>
>  source "arch/arm/mach-mxs/Kconfig"
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index 56c090840c5a..e2fc89055463 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -583,7 +583,7 @@ choice
>
>         config DEBUG_MVEBU_UART0_ALTERNATE
>                 bool "Kernel low-level debugging messages via MVEBU UART0 (new bootloaders)"
> -               depends on ARCH_MVEBU || ARCH_DOVE || ARCH_MV78XX0 || ARCH_ORION5X
> +               depends on ARCH_MVEBU || ARCH_ORION5X
>                 select DEBUG_UART_8250
>                 help
>                   Say Y here if you want kernel low-level debugging support
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index f5bc9ad7f6f5..5421a3ec3825 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -179,7 +179,6 @@ machine-$(CONFIG_ARCH_BERLIN)               += berlin
>  machine-$(CONFIG_ARCH_CLPS711X)                += clps711x
>  machine-$(CONFIG_ARCH_DAVINCI)         += davinci
>  machine-$(CONFIG_ARCH_DIGICOLOR)       += digicolor
> -machine-$(CONFIG_ARCH_DOVE)            += dove
>  machine-$(CONFIG_ARCH_EXYNOS)          += exynos
>  machine-$(CONFIG_ARCH_GEMINI)          += gemini
>  machine-$(CONFIG_ARCH_HIGHBANK)                += highbank
> @@ -190,7 +189,6 @@ machine-$(CONFIG_ARCH_LPC18XX)              += lpc18xx
>  machine-$(CONFIG_ARCH_LPC32XX)         += lpc32xx
>  machine-$(CONFIG_ARCH_MESON)           += meson
>  machine-$(CONFIG_ARCH_MMP)             += mmp
> -machine-$(CONFIG_ARCH_MV78XX0)         += mv78xx0
>  machine-$(CONFIG_ARCH_MVEBU)           += mvebu
>  machine-$(CONFIG_ARCH_MXC)             += imx
>  machine-$(CONFIG_ARCH_MEDIATEK)                += mediatek
> diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig
> deleted file mode 100644
> index 917a864fec74..000000000000
> --- a/arch/arm/configs/dove_defconfig
> +++ /dev/null
> @@ -1,134 +0,0 @@
> -CONFIG_SYSVIPC=y
> -CONFIG_NO_HZ_IDLE=y
> -CONFIG_HIGH_RES_TIMERS=y
> -CONFIG_LOG_BUF_SHIFT=14
> -CONFIG_EXPERT=y
> -# CONFIG_ARCH_MULTI_V6 is not set
> -CONFIG_ARCH_MULTI_V7=y
> -CONFIG_ARCH_DOVE=y
> -CONFIG_MACH_CM_A510=y
> -CONFIG_HIGHMEM=y
> -CONFIG_ATAGS=y
> -CONFIG_ARM_APPENDED_DTB=y
> -CONFIG_ARM_ATAG_DTB_COMPAT=y
> -CONFIG_VFP=y
> -CONFIG_MODULES=y
> -CONFIG_MODULE_UNLOAD=y
> -CONFIG_PARTITION_ADVANCED=y
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -CONFIG_IP_MULTICAST=y
> -CONFIG_IP_PNP=y
> -CONFIG_IP_PNP_DHCP=y
> -CONFIG_IP_PNP_BOOTP=y
> -# CONFIG_IPV6 is not set
> -CONFIG_PCI=y
> -CONFIG_PCI_MSI=y
> -CONFIG_PCI_MVEBU=y
> -CONFIG_DEVTMPFS=y
> -CONFIG_DEVTMPFS_MOUNT=y
> -CONFIG_MTD=y
> -CONFIG_MTD_CMDLINE_PARTS=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_JEDECPROBE=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_GEOMETRY=y
> -# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_CFI_STAA=y
> -CONFIG_MTD_PHYSMAP=y
> -CONFIG_MTD_M25P80=y
> -CONFIG_MTD_SPI_NOR=y
> -CONFIG_BLK_DEV_LOOP=y
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_BLK_DEV_RAM_COUNT=1
> -# CONFIG_SCSI_PROC_FS is not set
> -CONFIG_BLK_DEV_SD=y
> -# CONFIG_BLK_DEV_BSG is not set
> -# CONFIG_SCSI_LOWLEVEL is not set
> -CONFIG_ATA=y
> -CONFIG_SATA_MV=y
> -CONFIG_NETDEVICES=y
> -CONFIG_MV643XX_ETH=y
> -# CONFIG_INPUT_MOUSEDEV is not set
> -CONFIG_INPUT_EVDEV=y
> -# CONFIG_KEYBOARD_ATKBD is not set
> -# CONFIG_MOUSE_PS2 is not set
> -# CONFIG_SERIO is not set
> -CONFIG_LEGACY_PTY_COUNT=16
> -CONFIG_SERIAL_8250=y
> -CONFIG_SERIAL_8250_CONSOLE=y
> -CONFIG_SERIAL_8250_RUNTIME_UARTS=2
> -CONFIG_SERIAL_OF_PLATFORM=y
> -# CONFIG_HW_RANDOM is not set
> -CONFIG_I2C=y
> -CONFIG_I2C_CHARDEV=y
> -CONFIG_I2C_MV64XXX=y
> -CONFIG_SPI=y
> -CONFIG_SPI_ORION=y
> -# CONFIG_HWMON is not set
> -CONFIG_THERMAL=y
> -CONFIG_DOVE_THERMAL=y
> -CONFIG_WATCHDOG=y
> -CONFIG_ORION_WATCHDOG=y
> -CONFIG_USB=y
> -CONFIG_USB_XHCI_HCD=y
> -CONFIG_USB_EHCI_HCD=y
> -CONFIG_USB_EHCI_ROOT_HUB_TT=y
> -CONFIG_USB_STORAGE=y
> -CONFIG_MMC=y
> -CONFIG_MMC_SDHCI=y
> -CONFIG_MMC_SDHCI_PLTFM=y
> -CONFIG_MMC_SDHCI_DOVE=y
> -CONFIG_NEW_LEDS=y
> -CONFIG_LEDS_CLASS=y
> -CONFIG_LEDS_GPIO=y
> -CONFIG_LEDS_TRIGGERS=y
> -CONFIG_LEDS_TRIGGER_TIMER=y
> -CONFIG_LEDS_TRIGGER_HEARTBEAT=y
> -CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
> -CONFIG_RTC_CLASS=y
> -CONFIG_RTC_DRV_MV=y
> -CONFIG_DMADEVICES=y
> -CONFIG_MV_XOR=y
> -CONFIG_EXT2_FS=y
> -CONFIG_EXT4_FS=y
> -# CONFIG_EXT4_FS_XATTR is not set
> -CONFIG_ISO9660_FS=y
> -CONFIG_JOLIET=y
> -CONFIG_UDF_FS=m
> -CONFIG_MSDOS_FS=y
> -CONFIG_VFAT_FS=y
> -CONFIG_TMPFS=y
> -CONFIG_JFFS2_FS=y
> -CONFIG_NFS_FS=y
> -CONFIG_ROOT_NFS=y
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_NLS_CODEPAGE_850=y
> -CONFIG_NLS_ISO8859_1=y
> -CONFIG_NLS_ISO8859_2=y
> -CONFIG_NLS_UTF8=y
> -CONFIG_TIMER_STATS=y
> -CONFIG_CRYPTO_NULL=y
> -CONFIG_CRYPTO_BLOWFISH=y
> -CONFIG_CRYPTO_TEA=y
> -CONFIG_CRYPTO_TWOFISH=y
> -CONFIG_CRYPTO_ECB=m
> -CONFIG_CRYPTO_HMAC=y
> -CONFIG_CRYPTO_MD4=y
> -CONFIG_CRYPTO_SHA1=y
> -CONFIG_CRYPTO_SHA256=y
> -CONFIG_CRYPTO_SHA512=y
> -CONFIG_CRYPTO_DEFLATE=y
> -CONFIG_CRYPTO_LZO=y
> -CONFIG_CRYPTO_DEV_MARVELL_CESA=y
> -CONFIG_PRINTK_TIME=y
> -# CONFIG_DEBUG_BUGVERBOSE is not set
> -CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
> -CONFIG_MAGIC_SYSRQ=y
> -CONFIG_DEBUG_FS=y
> -# CONFIG_SCHED_DEBUG is not set
> -CONFIG_DEBUG_USER=y
> diff --git a/arch/arm/configs/mv78xx0_defconfig b/arch/arm/configs/mv78xx0_defconfig
> deleted file mode 100644
> index e3cc8de7c1c2..000000000000
> --- a/arch/arm/configs/mv78xx0_defconfig
> +++ /dev/null
> @@ -1,120 +0,0 @@
> -CONFIG_SYSVIPC=y
> -CONFIG_NO_HZ_IDLE=y
> -CONFIG_HIGH_RES_TIMERS=y
> -CONFIG_PREEMPT=y
> -CONFIG_LOG_BUF_SHIFT=14
> -CONFIG_EXPERT=y
> -CONFIG_KALLSYMS_ALL=y
> -CONFIG_PROFILING=y
> -CONFIG_ARCH_MULTI_V5=y
> -# CONFIG_ARCH_MULTI_V6 is not set
> -# CONFIG_ARCH_MULTI_V7 is not set
> -CONFIG_ARCH_MV78XX0=y
> -CONFIG_MACH_TERASTATION_WXL=y
> -CONFIG_HIGHMEM=y
> -CONFIG_ATAGS=y
> -CONFIG_VFP=y
> -CONFIG_KPROBES=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_IP_PNP=y
> -CONFIG_IP_PNP_DHCP=y
> -CONFIG_IP_PNP_BOOTP=y
> -# CONFIG_IPV6 is not set
> -CONFIG_NET_PKTGEN=m
> -CONFIG_MTD=y
> -CONFIG_MTD_CMDLINE_PARTS=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_JEDECPROBE=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_GEOMETRY=y
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_CFI_AMDSTD=y
> -CONFIG_MTD_PHYSMAP=y
> -CONFIG_MTD_RAW_NAND=y
> -CONFIG_MTD_NAND_ORION=y
> -CONFIG_BLK_DEV_LOOP=y
> -# CONFIG_SCSI_PROC_FS is not set
> -CONFIG_BLK_DEV_SD=y
> -CONFIG_BLK_DEV_SR=m
> -CONFIG_CHR_DEV_SG=m
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_ATA=y
> -CONFIG_SATA_MV=y
> -CONFIG_NETDEVICES=y
> -CONFIG_MII=y
> -CONFIG_NET_PCI=y
> -CONFIG_MV643XX_ETH=y
> -# CONFIG_INPUT_MOUSEDEV is not set
> -CONFIG_MARVELL_PHY=y
> -CONFIG_INPUT_EVDEV=y
> -# CONFIG_INPUT_KEYBOARD is not set
> -# CONFIG_INPUT_MOUSE is not set
> -# CONFIG_SERIO is not set
> -# CONFIG_VT is not set
> -CONFIG_LEGACY_PTY_COUNT=16
> -CONFIG_SERIAL_8250=y
> -CONFIG_SERIAL_8250_CONSOLE=y
> -# CONFIG_SERIAL_8250_PCI is not set
> -CONFIG_SERIAL_8250_RUNTIME_UARTS=2
> -# CONFIG_HW_RANDOM is not set
> -CONFIG_I2C=y
> -CONFIG_I2C_CHARDEV=y
> -CONFIG_I2C_MV64XXX=y
> -CONFIG_USB=y
> -CONFIG_USB_EHCI_HCD=y
> -CONFIG_USB_EHCI_ROOT_HUB_TT=y
> -CONFIG_USB_EHCI_TT_NEWSCHED=y
> -CONFIG_USB_PRINTER=y
> -CONFIG_USB_STORAGE=y
> -CONFIG_USB_STORAGE_DATAFAB=y
> -CONFIG_USB_STORAGE_FREECOM=y
> -CONFIG_USB_STORAGE_SDDR09=y
> -CONFIG_USB_STORAGE_SDDR55=y
> -CONFIG_USB_STORAGE_JUMPSHOT=y
> -CONFIG_NEW_LEDS=y
> -CONFIG_LEDS_CLASS=y
> -CONFIG_LEDS_TRIGGERS=y
> -CONFIG_LEDS_TRIGGER_TIMER=y
> -CONFIG_LEDS_TRIGGER_HEARTBEAT=y
> -CONFIG_RTC_CLASS=y
> -CONFIG_RTC_DRV_DS1307=y
> -CONFIG_RTC_DRV_RS5C372=y
> -CONFIG_RTC_DRV_M41T80=y
> -CONFIG_EXT2_FS=y
> -CONFIG_EXT4_FS=y
> -# CONFIG_EXT4_FS_XATTR is not set
> -CONFIG_ISO9660_FS=m
> -CONFIG_JOLIET=y
> -CONFIG_UDF_FS=m
> -CONFIG_MSDOS_FS=y
> -CONFIG_VFAT_FS=y
> -CONFIG_TMPFS=y
> -CONFIG_JFFS2_FS=y
> -CONFIG_CRAMFS=y
> -CONFIG_NFS_FS=y
> -CONFIG_NFS_V3=y
> -CONFIG_ROOT_NFS=y
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_NLS_CODEPAGE_850=y
> -CONFIG_NLS_ISO8859_1=y
> -CONFIG_NLS_ISO8859_2=y
> -CONFIG_CRYPTO_CBC=m
> -CONFIG_CRYPTO_ECB=m
> -# CONFIG_DEBUG_BUGVERBOSE is not set
> -CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
> -CONFIG_MAGIC_SYSRQ=y
> -CONFIG_DEBUG_FS=y
> -CONFIG_DEBUG_KERNEL=y
> -# CONFIG_SLUB_DEBUG is not set
> -CONFIG_SCHEDSTATS=y
> -CONFIG_DEBUG_USER=y
> -CONFIG_DEBUG_LL=y
> diff --git a/arch/arm/mach-dove/Kconfig b/arch/arm/mach-dove/Kconfig
> deleted file mode 100644
> index f547120e223e..000000000000
> --- a/arch/arm/mach-dove/Kconfig
> +++ /dev/null
> @@ -1,32 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0
> -menuconfig ARCH_DOVE
> -       bool "Marvell Dove (DEPRECATED)" if ARCH_MULTI_V7
> -       depends on ATAGS
> -       select CPU_PJ4
> -       select GPIOLIB
> -       select MVEBU_MBUS
> -       select PINCTRL
> -       select PINCTRL_DOVE
> -       select PLAT_ORION_LEGACY
> -       select PM_GENERIC_DOMAINS if PM
> -       select PCI_QUIRKS if PCI
> -       help
> -         Support for the Marvell Dove SoC 88AP510 using board files.
> -
> -         Support for this machine will be removed in early 2027, unless
> -         there is a strong reason to keep it. Users should migrate to
> -         the devicetree-enabled version (CONFIG_MACH_DOVE) instead.
> -
> -if ARCH_DOVE
> -
> -config DOVE_LEGACY
> -       bool
> -
> -config MACH_CM_A510
> -       bool "CompuLab CM-A510 Board"
> -       select DOVE_LEGACY
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         CompuLab CM-A510 Board.
> -
> -endif
> diff --git a/arch/arm/mach-dove/Makefile b/arch/arm/mach-dove/Makefile
> deleted file mode 100644
> index 0d31390be069..000000000000
> --- a/arch/arm/mach-dove/Makefile
> +++ /dev/null
> @@ -1,7 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0
> -ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
> -
> -obj-y                          += common.o
> -obj-$(CONFIG_DOVE_LEGACY)      += irq.o mpp.o
> -obj-$(CONFIG_PCI)              += pcie.o
> -obj-$(CONFIG_MACH_CM_A510)     += cm-a510.o
> diff --git a/arch/arm/mach-dove/bridge-regs.h b/arch/arm/mach-dove/bridge-regs.h
> deleted file mode 100644
> index 6fbc152d0950..000000000000
> --- a/arch/arm/mach-dove/bridge-regs.h
> +++ /dev/null
> @@ -1,50 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/* Mbus-L to Mbus Bridge Registers */
> -
> -#ifndef __ASM_ARCH_BRIDGE_REGS_H
> -#define __ASM_ARCH_BRIDGE_REGS_H
> -
> -#include "dove.h"
> -
> -#define CPU_CONFIG             (BRIDGE_VIRT_BASE + 0x0000)
> -
> -#define CPU_CONTROL            (BRIDGE_VIRT_BASE + 0x0104)
> -#define  CPU_CTRL_PCIE0_LINK   0x00000001
> -#define  CPU_RESET             0x00000002
> -#define  CPU_CTRL_PCIE1_LINK   0x00000008
> -
> -#define RSTOUTn_MASK           (BRIDGE_VIRT_BASE + 0x0108)
> -#define RSTOUTn_MASK_PHYS      (BRIDGE_PHYS_BASE + 0x0108)
> -#define  SOFT_RESET_OUT_EN     0x00000004
> -
> -#define SYSTEM_SOFT_RESET      (BRIDGE_VIRT_BASE + 0x010c)
> -#define  SOFT_RESET            0x00000001
> -
> -#define BRIDGE_CAUSE           (BRIDGE_VIRT_BASE + 0x0110)
> -#define  BRIDGE_INT_TIMER1_CLR (~0x0004)
> -
> -#define IRQ_VIRT_BASE          (BRIDGE_VIRT_BASE + 0x0200)
> -#define IRQ_CAUSE_LOW_OFF      0x0000
> -#define IRQ_MASK_LOW_OFF       0x0004
> -#define FIQ_MASK_LOW_OFF       0x0008
> -#define ENDPOINT_MASK_LOW_OFF  0x000c
> -#define IRQ_CAUSE_HIGH_OFF     0x0010
> -#define IRQ_MASK_HIGH_OFF      0x0014
> -#define FIQ_MASK_HIGH_OFF      0x0018
> -#define ENDPOINT_MASK_HIGH_OFF 0x001c
> -#define PCIE_INTERRUPT_MASK_OFF        0x0020
> -
> -#define IRQ_MASK_LOW           (IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF)
> -#define FIQ_MASK_LOW           (IRQ_VIRT_BASE + FIQ_MASK_LOW_OFF)
> -#define ENDPOINT_MASK_LOW      (IRQ_VIRT_BASE + ENDPOINT_MASK_LOW_OFF)
> -#define IRQ_MASK_HIGH          (IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF)
> -#define FIQ_MASK_HIGH          (IRQ_VIRT_BASE + FIQ_MASK_HIGH_OFF)
> -#define ENDPOINT_MASK_HIGH     (IRQ_VIRT_BASE + ENDPOINT_MASK_HIGH_OFF)
> -#define PCIE_INTERRUPT_MASK    (IRQ_VIRT_BASE + PCIE_INTERRUPT_MASK_OFF)
> -
> -#define POWER_MANAGEMENT       (BRIDGE_VIRT_BASE + 0x011c)
> -
> -#define TIMER_VIRT_BASE                (BRIDGE_VIRT_BASE + 0x0300)
> -#define TIMER_PHYS_BASE         (BRIDGE_PHYS_BASE + 0x0300)
> -
> -#endif
> diff --git a/arch/arm/mach-dove/cm-a510.c b/arch/arm/mach-dove/cm-a510.c
> deleted file mode 100644
> index beb532537c22..000000000000
> --- a/arch/arm/mach-dove/cm-a510.c
> +++ /dev/null
> @@ -1,94 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-dove/cm-a510.c
> - *
> - * Copyright (C) 2010 CompuLab, Ltd.
> - * Konstantin Sinyuk <kostyas@compulab.co.il>
> - *
> - * Based on Marvell DB-MV88AP510-BP Development Board Setup
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/ata_platform.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/spi/spi.h>
> -#include <linux/spi/flash.h>
> -
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -
> -#include "dove.h"
> -#include "common.h"
> -
> -static struct mv643xx_eth_platform_data cm_a510_ge00_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR_DEFAULT,
> -};
> -
> -static struct mv_sata_platform_data cm_a510_sata_data = {
> -       .n_ports        = 1,
> -};
> -
> -/*
> - * SPI Devices:
> - * SPI0: 1M Flash Winbond w25q32bv
> - */
> -static const struct flash_platform_data cm_a510_spi_flash_data = {
> -       .type           = "w25q32bv",
> -};
> -
> -static struct spi_board_info __initdata cm_a510_spi_flash_info[] = {
> -       {
> -               .modalias       = "m25p80",
> -               .platform_data  = &cm_a510_spi_flash_data,
> -               .irq            = -1,
> -               .max_speed_hz   = 20000000,
> -               .bus_num        = 0,
> -               .chip_select    = 0,
> -       },
> -};
> -
> -static int __init cm_a510_pci_init(void)
> -{
> -       if (machine_is_cm_a510())
> -               dove_pcie_init(1, 1);
> -
> -       return 0;
> -}
> -
> -subsys_initcall(cm_a510_pci_init);
> -
> -/* Board Init */
> -static void __init cm_a510_init(void)
> -{
> -       /*
> -        * Basic Dove setup. Needs to be called early.
> -        */
> -       dove_init();
> -
> -       dove_ge00_init(&cm_a510_ge00_data);
> -       dove_ehci0_init();
> -       dove_ehci1_init();
> -       dove_sata_init(&cm_a510_sata_data);
> -       dove_sdio0_init();
> -       dove_sdio1_init();
> -       dove_spi0_init();
> -       dove_spi1_init();
> -       dove_uart0_init();
> -       dove_uart1_init();
> -       dove_i2c_init();
> -       spi_register_board_info(cm_a510_spi_flash_info,
> -                               ARRAY_SIZE(cm_a510_spi_flash_info));
> -}
> -
> -MACHINE_START(CM_A510, "Compulab CM-A510 Board")
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = DOVE_NR_IRQS,
> -       .init_machine   = cm_a510_init,
> -       .map_io         = dove_map_io,
> -       .init_early     = dove_init_early,
> -       .init_irq       = dove_init_irq,
> -       .init_time      = dove_timer_init,
> -       .restart        = dove_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-dove/common.c b/arch/arm/mach-dove/common.c
> deleted file mode 100644
> index 35e978514591..000000000000
> --- a/arch/arm/mach-dove/common.c
> +++ /dev/null
> @@ -1,449 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-dove/common.c
> - *
> - * Core functions for Marvell Dove 88AP510 System On Chip
> - */
> -
> -#include <linux/clk-provider.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/init.h>
> -#include <linux/io.h>
> -#include <linux/platform_data/dma-mv_xor.h>
> -#include <linux/platform_data/usb-ehci-orion.h>
> -#include <linux/platform_device.h>
> -#include <linux/soc/dove/pmu.h>
> -#include <asm/hardware/cache-tauros2.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/map.h>
> -#include <asm/mach/time.h>
> -#include <plat/common.h>
> -#include <plat/irq.h>
> -#include <plat/time.h>
> -#include "bridge-regs.h"
> -#include "pm.h"
> -#include "common.h"
> -
> -/* These can go away once Dove uses the mvebu-mbus DT binding */
> -#define DOVE_MBUS_PCIE0_MEM_TARGET    0x4
> -#define DOVE_MBUS_PCIE0_MEM_ATTR      0xe8
> -#define DOVE_MBUS_PCIE0_IO_TARGET     0x4
> -#define DOVE_MBUS_PCIE0_IO_ATTR       0xe0
> -#define DOVE_MBUS_PCIE1_MEM_TARGET    0x8
> -#define DOVE_MBUS_PCIE1_MEM_ATTR      0xe8
> -#define DOVE_MBUS_PCIE1_IO_TARGET     0x8
> -#define DOVE_MBUS_PCIE1_IO_ATTR       0xe0
> -#define DOVE_MBUS_CESA_TARGET         0x3
> -#define DOVE_MBUS_CESA_ATTR           0x1
> -#define DOVE_MBUS_BOOTROM_TARGET      0x1
> -#define DOVE_MBUS_BOOTROM_ATTR        0xfd
> -#define DOVE_MBUS_SCRATCHPAD_TARGET   0xd
> -#define DOVE_MBUS_SCRATCHPAD_ATTR     0x0
> -
> -/*****************************************************************************
> - * I/O Address Mapping
> - ****************************************************************************/
> -static struct map_desc __maybe_unused dove_io_desc[] __initdata = {
> -       {
> -               .virtual        = (unsigned long) DOVE_SB_REGS_VIRT_BASE,
> -               .pfn            = __phys_to_pfn(DOVE_SB_REGS_PHYS_BASE),
> -               .length         = DOVE_SB_REGS_SIZE,
> -               .type           = MT_DEVICE,
> -       }, {
> -               .virtual        = (unsigned long) DOVE_NB_REGS_VIRT_BASE,
> -               .pfn            = __phys_to_pfn(DOVE_NB_REGS_PHYS_BASE),
> -               .length         = DOVE_NB_REGS_SIZE,
> -               .type           = MT_DEVICE,
> -       },
> -};
> -
> -void __init dove_map_io(void)
> -{
> -       iotable_init(dove_io_desc, ARRAY_SIZE(dove_io_desc));
> -}
> -
> -/*****************************************************************************
> - * CLK tree
> - ****************************************************************************/
> -static int dove_tclk;
> -
> -static DEFINE_SPINLOCK(gating_lock);
> -static struct clk *tclk;
> -
> -static struct clk __init *dove_register_gate(const char *name,
> -                                            const char *parent, u8 bit_idx)
> -{
> -       return clk_register_gate(NULL, name, parent, 0,
> -                                (void __iomem *)CLOCK_GATING_CONTROL,
> -                                bit_idx, 0, &gating_lock);
> -}
> -
> -static void __init dove_clk_init(void)
> -{
> -       struct clk *usb0, *usb1, *sata, *pex0, *pex1, *sdio0, *sdio1;
> -       struct clk *nand, *camera, *i2s0, *i2s1, *crypto, *ac97, *pdma;
> -       struct clk *xor0, *xor1, *ge;
> -
> -       tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 0, dove_tclk);
> -
> -       usb0 = dove_register_gate("usb0", "tclk", CLOCK_GATING_BIT_USB0);
> -       usb1 = dove_register_gate("usb1", "tclk", CLOCK_GATING_BIT_USB1);
> -       sata = dove_register_gate("sata", "tclk", CLOCK_GATING_BIT_SATA);
> -       pex0 = dove_register_gate("pex0", "tclk", CLOCK_GATING_BIT_PCIE0);
> -       pex1 = dove_register_gate("pex1", "tclk", CLOCK_GATING_BIT_PCIE1);
> -       sdio0 = dove_register_gate("sdio0", "tclk", CLOCK_GATING_BIT_SDIO0);
> -       sdio1 = dove_register_gate("sdio1", "tclk", CLOCK_GATING_BIT_SDIO1);
> -       nand = dove_register_gate("nand", "tclk", CLOCK_GATING_BIT_NAND);
> -       camera = dove_register_gate("camera", "tclk", CLOCK_GATING_BIT_CAMERA);
> -       i2s0 = dove_register_gate("i2s0", "tclk", CLOCK_GATING_BIT_I2S0);
> -       i2s1 = dove_register_gate("i2s1", "tclk", CLOCK_GATING_BIT_I2S1);
> -       crypto = dove_register_gate("crypto", "tclk", CLOCK_GATING_BIT_CRYPTO);
> -       ac97 = dove_register_gate("ac97", "tclk", CLOCK_GATING_BIT_AC97);
> -       pdma = dove_register_gate("pdma", "tclk", CLOCK_GATING_BIT_PDMA);
> -       xor0 = dove_register_gate("xor0", "tclk", CLOCK_GATING_BIT_XOR0);
> -       xor1 = dove_register_gate("xor1", "tclk", CLOCK_GATING_BIT_XOR1);
> -       dove_register_gate("gephy", "tclk", CLOCK_GATING_BIT_GIGA_PHY);
> -       ge = dove_register_gate("ge", "gephy", CLOCK_GATING_BIT_GBE);
> -
> -       orion_clkdev_add(NULL, "orion_spi.0", tclk);
> -       orion_clkdev_add(NULL, "orion_spi.1", tclk);
> -       orion_clkdev_add(NULL, "orion_wdt", tclk);
> -       orion_clkdev_add(NULL, "mv64xxx_i2c.0", tclk);
> -
> -       orion_clkdev_add(NULL, "orion-ehci.0", usb0);
> -       orion_clkdev_add(NULL, "orion-ehci.1", usb1);
> -       orion_clkdev_add(NULL, "mv643xx_eth_port.0", ge);
> -       orion_clkdev_add(NULL, "sata_mv.0", sata);
> -       orion_clkdev_add("0", "pcie", pex0);
> -       orion_clkdev_add("1", "pcie", pex1);
> -       orion_clkdev_add(NULL, "sdhci-dove.0", sdio0);
> -       orion_clkdev_add(NULL, "sdhci-dove.1", sdio1);
> -       orion_clkdev_add(NULL, "orion_nand", nand);
> -       orion_clkdev_add(NULL, "cafe1000-ccic.0", camera);
> -       orion_clkdev_add(NULL, "mvebu-audio.0", i2s0);
> -       orion_clkdev_add(NULL, "mvebu-audio.1", i2s1);
> -       orion_clkdev_add(NULL, "mv_crypto", crypto);
> -       orion_clkdev_add(NULL, "dove-ac97", ac97);
> -       orion_clkdev_add(NULL, "dove-pdma", pdma);
> -       orion_clkdev_add(NULL, MV_XOR_NAME ".0", xor0);
> -       orion_clkdev_add(NULL, MV_XOR_NAME ".1", xor1);
> -}
> -
> -/*****************************************************************************
> - * EHCI0
> - ****************************************************************************/
> -void __init dove_ehci0_init(void)
> -{
> -       orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0, EHCI_PHY_NA);
> -}
> -
> -/*****************************************************************************
> - * EHCI1
> - ****************************************************************************/
> -void __init dove_ehci1_init(void)
> -{
> -       orion_ehci_1_init(DOVE_USB1_PHYS_BASE, IRQ_DOVE_USB1);
> -}
> -
> -/*****************************************************************************
> - * GE00
> - ****************************************************************************/
> -void __init dove_ge00_init(struct mv643xx_eth_platform_data *eth_data)
> -{
> -       orion_ge00_init(eth_data, DOVE_GE00_PHYS_BASE,
> -                       IRQ_DOVE_GE00_SUM, IRQ_DOVE_GE00_ERR,
> -                       1600);
> -}
> -
> -/*****************************************************************************
> - * SoC RTC
> - ****************************************************************************/
> -static void __init dove_rtc_init(void)
> -{
> -       orion_rtc_init(DOVE_RTC_PHYS_BASE, IRQ_DOVE_RTC);
> -}
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -void __init dove_sata_init(struct mv_sata_platform_data *sata_data)
> -{
> -       orion_sata_init(sata_data, DOVE_SATA_PHYS_BASE, IRQ_DOVE_SATA);
> -
> -}
> -
> -/*****************************************************************************
> - * UART0
> - ****************************************************************************/
> -void __init dove_uart0_init(void)
> -{
> -       orion_uart0_init(DOVE_UART0_VIRT_BASE, DOVE_UART0_PHYS_BASE,
> -                        IRQ_DOVE_UART_0, tclk);
> -}
> -
> -/*****************************************************************************
> - * UART1
> - ****************************************************************************/
> -void __init dove_uart1_init(void)
> -{
> -       orion_uart1_init(DOVE_UART1_VIRT_BASE, DOVE_UART1_PHYS_BASE,
> -                        IRQ_DOVE_UART_1, tclk);
> -}
> -
> -/*****************************************************************************
> - * UART2
> - ****************************************************************************/
> -void __init dove_uart2_init(void)
> -{
> -       orion_uart2_init(DOVE_UART2_VIRT_BASE, DOVE_UART2_PHYS_BASE,
> -                        IRQ_DOVE_UART_2, tclk);
> -}
> -
> -/*****************************************************************************
> - * UART3
> - ****************************************************************************/
> -void __init dove_uart3_init(void)
> -{
> -       orion_uart3_init(DOVE_UART3_VIRT_BASE, DOVE_UART3_PHYS_BASE,
> -                        IRQ_DOVE_UART_3, tclk);
> -}
> -
> -/*****************************************************************************
> - * SPI
> - ****************************************************************************/
> -void __init dove_spi0_init(void)
> -{
> -       orion_spi_init(DOVE_SPI0_PHYS_BASE);
> -}
> -
> -void __init dove_spi1_init(void)
> -{
> -       orion_spi_1_init(DOVE_SPI1_PHYS_BASE);
> -}
> -
> -/*****************************************************************************
> - * I2C
> - ****************************************************************************/
> -void __init dove_i2c_init(void)
> -{
> -       orion_i2c_init(DOVE_I2C_PHYS_BASE, IRQ_DOVE_I2C, 10);
> -}
> -
> -/*****************************************************************************
> - * Time handling
> - ****************************************************************************/
> -void __init dove_init_early(void)
> -{
> -       orion_time_set_base(TIMER_VIRT_BASE);
> -       mvebu_mbus_init("marvell,dove-mbus",
> -                       BRIDGE_WINS_BASE, BRIDGE_WINS_SZ,
> -                       DOVE_MC_WINS_BASE, DOVE_MC_WINS_SZ);
> -}
> -
> -static int __init dove_find_tclk(void)
> -{
> -       return 166666667;
> -}
> -
> -void __init dove_timer_init(void)
> -{
> -       dove_tclk = dove_find_tclk();
> -       orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
> -                       IRQ_DOVE_BRIDGE, dove_tclk);
> -}
> -
> -/*****************************************************************************
> - * XOR 0
> - ****************************************************************************/
> -static void __init dove_xor0_init(void)
> -{
> -       orion_xor0_init(DOVE_XOR0_PHYS_BASE, DOVE_XOR0_HIGH_PHYS_BASE,
> -                       IRQ_DOVE_XOR_00, IRQ_DOVE_XOR_01);
> -}
> -
> -/*****************************************************************************
> - * XOR 1
> - ****************************************************************************/
> -static void __init dove_xor1_init(void)
> -{
> -       orion_xor1_init(DOVE_XOR1_PHYS_BASE, DOVE_XOR1_HIGH_PHYS_BASE,
> -                       IRQ_DOVE_XOR_10, IRQ_DOVE_XOR_11);
> -}
> -
> -/*****************************************************************************
> - * SDIO
> - ****************************************************************************/
> -static u64 sdio_dmamask = DMA_BIT_MASK(32);
> -
> -static struct resource dove_sdio0_resources[] = {
> -       {
> -               .start  = DOVE_SDIO0_PHYS_BASE,
> -               .end    = DOVE_SDIO0_PHYS_BASE + 0xff,
> -               .flags  = IORESOURCE_MEM,
> -       }, {
> -               .start  = IRQ_DOVE_SDIO0,
> -               .end    = IRQ_DOVE_SDIO0,
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct platform_device dove_sdio0 = {
> -       .name           = "sdhci-dove",
> -       .id             = 0,
> -       .dev            = {
> -               .dma_mask               = &sdio_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -       .resource       = dove_sdio0_resources,
> -       .num_resources  = ARRAY_SIZE(dove_sdio0_resources),
> -};
> -
> -void __init dove_sdio0_init(void)
> -{
> -       platform_device_register(&dove_sdio0);
> -}
> -
> -static struct resource dove_sdio1_resources[] = {
> -       {
> -               .start  = DOVE_SDIO1_PHYS_BASE,
> -               .end    = DOVE_SDIO1_PHYS_BASE + 0xff,
> -               .flags  = IORESOURCE_MEM,
> -       }, {
> -               .start  = IRQ_DOVE_SDIO1,
> -               .end    = IRQ_DOVE_SDIO1,
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct platform_device dove_sdio1 = {
> -       .name           = "sdhci-dove",
> -       .id             = 1,
> -       .dev            = {
> -               .dma_mask               = &sdio_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -       .resource       = dove_sdio1_resources,
> -       .num_resources  = ARRAY_SIZE(dove_sdio1_resources),
> -};
> -
> -void __init dove_sdio1_init(void)
> -{
> -       platform_device_register(&dove_sdio1);
> -}
> -
> -void __init dove_setup_cpu_wins(void)
> -{
> -       /*
> -        * The PCIe windows will no longer be statically allocated
> -        * here once Dove is migrated to the pci-mvebu driver. The
> -        * non-PCIe windows will no longer be created here once Dove
> -        * fully moves to DT.
> -        */
> -       mvebu_mbus_add_window_remap_by_id(DOVE_MBUS_PCIE0_IO_TARGET,
> -                                         DOVE_MBUS_PCIE0_IO_ATTR,
> -                                         DOVE_PCIE0_IO_PHYS_BASE,
> -                                         DOVE_PCIE0_IO_SIZE,
> -                                         DOVE_PCIE0_IO_BUS_BASE);
> -       mvebu_mbus_add_window_remap_by_id(DOVE_MBUS_PCIE1_IO_TARGET,
> -                                         DOVE_MBUS_PCIE1_IO_ATTR,
> -                                         DOVE_PCIE1_IO_PHYS_BASE,
> -                                         DOVE_PCIE1_IO_SIZE,
> -                                         DOVE_PCIE1_IO_BUS_BASE);
> -       mvebu_mbus_add_window_by_id(DOVE_MBUS_PCIE0_MEM_TARGET,
> -                                   DOVE_MBUS_PCIE0_MEM_ATTR,
> -                                   DOVE_PCIE0_MEM_PHYS_BASE,
> -                                   DOVE_PCIE0_MEM_SIZE);
> -       mvebu_mbus_add_window_by_id(DOVE_MBUS_PCIE1_MEM_TARGET,
> -                                   DOVE_MBUS_PCIE1_MEM_ATTR,
> -                                   DOVE_PCIE1_MEM_PHYS_BASE,
> -                                   DOVE_PCIE1_MEM_SIZE);
> -       mvebu_mbus_add_window_by_id(DOVE_MBUS_CESA_TARGET,
> -                                   DOVE_MBUS_CESA_ATTR,
> -                                   DOVE_CESA_PHYS_BASE,
> -                                   DOVE_CESA_SIZE);
> -       mvebu_mbus_add_window_by_id(DOVE_MBUS_BOOTROM_TARGET,
> -                                   DOVE_MBUS_BOOTROM_ATTR,
> -                                   DOVE_BOOTROM_PHYS_BASE,
> -                                   DOVE_BOOTROM_SIZE);
> -       mvebu_mbus_add_window_by_id(DOVE_MBUS_SCRATCHPAD_TARGET,
> -                                   DOVE_MBUS_SCRATCHPAD_ATTR,
> -                                   DOVE_SCRATCHPAD_PHYS_BASE,
> -                                   DOVE_SCRATCHPAD_SIZE);
> -}
> -
> -static struct resource orion_wdt_resource[] = {
> -               DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
> -               DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
> -};
> -
> -static struct platform_device orion_wdt_device = {
> -       .name           = "orion_wdt",
> -       .id             = -1,
> -       .num_resources  = ARRAY_SIZE(orion_wdt_resource),
> -       .resource       = orion_wdt_resource,
> -};
> -
> -static void __init __maybe_unused orion_wdt_init(void)
> -{
> -       platform_device_register(&orion_wdt_device);
> -}
> -
> -static const struct dove_pmu_domain_initdata pmu_domains[] __initconst = {
> -       {
> -               .pwr_mask = PMU_PWR_VPU_PWR_DWN_MASK,
> -               .rst_mask = PMU_SW_RST_VIDEO_MASK,
> -               .iso_mask = PMU_ISO_VIDEO_MASK,
> -               .name = "vpu-domain",
> -       }, {
> -               .pwr_mask = PMU_PWR_GPU_PWR_DWN_MASK,
> -               .rst_mask = PMU_SW_RST_GPU_MASK,
> -               .iso_mask = PMU_ISO_GPU_MASK,
> -               .name = "gpu-domain",
> -       }, {
> -               /* sentinel */
> -       },
> -};
> -
> -static const struct dove_pmu_initdata pmu_data __initconst = {
> -       .pmc_base = DOVE_PMU_VIRT_BASE,
> -       .pmu_base = DOVE_PMU_VIRT_BASE + 0x8000,
> -       .irq = IRQ_DOVE_PMU,
> -       .irq_domain_start = IRQ_DOVE_PMU_START,
> -       .domains = pmu_domains,
> -};
> -
> -void __init dove_init(void)
> -{
> -       pr_info("Dove 88AP510 SoC, TCLK = %d MHz.\n",
> -               (dove_tclk + 499999) / 1000000);
> -
> -#ifdef CONFIG_CACHE_TAUROS2
> -       tauros2_init(0);
> -#endif
> -       dove_setup_cpu_wins();
> -
> -       /* Setup root of clk tree */
> -       dove_clk_init();
> -
> -       /* internal devices that every board has */
> -       dove_init_pmu_legacy(&pmu_data);
> -       dove_rtc_init();
> -       dove_xor0_init();
> -       dove_xor1_init();
> -}
> -
> -void dove_restart(enum reboot_mode mode, const char *cmd)
> -{
> -       /*
> -        * Enable soft reset to assert RSTOUTn.
> -        */
> -       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
> -
> -       /*
> -        * Assert soft reset.
> -        */
> -       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
> -
> -       while (1)
> -               ;
> -}
> diff --git a/arch/arm/mach-dove/common.h b/arch/arm/mach-dove/common.h
> deleted file mode 100644
> index 57ebc413d68c..000000000000
> --- a/arch/arm/mach-dove/common.h
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * arch/arm/mach-dove/common.h
> - *
> - * Core functions for Marvell Dove 88AP510 System On Chip
> - */
> -
> -#ifndef __ARCH_DOVE_COMMON_H
> -#define __ARCH_DOVE_COMMON_H
> -
> -#include <linux/reboot.h>
> -
> -struct mv643xx_eth_platform_data;
> -struct mv_sata_platform_data;
> -
> -extern void dove_timer_init(void);
> -
> -/*
> - * Basic Dove init functions used early by machine-setup.
> - */
> -void dove_map_io(void);
> -void dove_init(void);
> -void dove_init_early(void);
> -void dove_init_irq(void);
> -void dove_setup_cpu_wins(void);
> -void dove_ge00_init(struct mv643xx_eth_platform_data *eth_data);
> -void dove_sata_init(struct mv_sata_platform_data *sata_data);
> -#ifdef CONFIG_PCI
> -void dove_pcie_init(int init_port0, int init_port1);
> -#else
> -static inline void dove_pcie_init(int init_port0, int init_port1) { }
> -#endif
> -void dove_ehci0_init(void);
> -void dove_ehci1_init(void);
> -void dove_uart0_init(void);
> -void dove_uart1_init(void);
> -void dove_uart2_init(void);
> -void dove_uart3_init(void);
> -void dove_spi0_init(void);
> -void dove_spi1_init(void);
> -void dove_i2c_init(void);
> -void dove_sdio0_init(void);
> -void dove_sdio1_init(void);
> -void dove_restart(enum reboot_mode, const char *);
> -
> -#endif
> diff --git a/arch/arm/mach-dove/dove.h b/arch/arm/mach-dove/dove.h
> deleted file mode 100644
> index e5054e3b0b78..000000000000
> --- a/arch/arm/mach-dove/dove.h
> +++ /dev/null
> @@ -1,185 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/* Generic definitions for Marvell Dove 88AP510 SoC */
> -
> -#ifndef __ASM_ARCH_DOVE_H
> -#define __ASM_ARCH_DOVE_H
> -
> -#include "irqs.h"
> -
> -/*
> - * Marvell Dove address maps.
> - *
> - * phys                virt            size
> - * c8000000    fdb00000        1M      Cryptographic SRAM
> - * e0000000    @runtime        128M    PCIe-0 Memory space
> - * e8000000    @runtime        128M    PCIe-1 Memory space
> - * f1000000    fec00000        1M      on-chip south-bridge registers
> - * f1800000    fe400000        8M      on-chip north-bridge registers
> - * f2000000    fee00000        1M      PCIe-0 I/O space
> - * f2100000    fef00000        1M      PCIe-1 I/O space
> - */
> -
> -#define DOVE_CESA_PHYS_BASE            0xc8000000
> -#define DOVE_CESA_VIRT_BASE            IOMEM(0xfdb00000)
> -#define DOVE_CESA_SIZE                 SZ_1M
> -
> -#define DOVE_PCIE0_MEM_PHYS_BASE       0xe0000000
> -#define DOVE_PCIE0_MEM_SIZE            SZ_128M
> -
> -#define DOVE_PCIE1_MEM_PHYS_BASE       0xe8000000
> -#define DOVE_PCIE1_MEM_SIZE            SZ_128M
> -
> -#define DOVE_BOOTROM_PHYS_BASE         0xf8000000
> -#define DOVE_BOOTROM_SIZE              SZ_128M
> -
> -#define DOVE_SCRATCHPAD_PHYS_BASE      0xf0000000
> -#define DOVE_SCRATCHPAD_VIRT_BASE      IOMEM(0xfdd00000)
> -#define DOVE_SCRATCHPAD_SIZE           SZ_1M
> -
> -#define DOVE_SB_REGS_PHYS_BASE         0xf1000000
> -#define DOVE_SB_REGS_VIRT_BASE         IOMEM(0xfec00000)
> -#define DOVE_SB_REGS_SIZE              SZ_1M
> -
> -#define DOVE_NB_REGS_PHYS_BASE         0xf1800000
> -#define DOVE_NB_REGS_VIRT_BASE         IOMEM(0xfe400000)
> -#define DOVE_NB_REGS_SIZE              SZ_8M
> -
> -#define DOVE_PCIE0_IO_PHYS_BASE                0xf2000000
> -#define DOVE_PCIE0_IO_BUS_BASE         0x00000000
> -#define DOVE_PCIE0_IO_SIZE             SZ_64K
> -
> -#define DOVE_PCIE1_IO_PHYS_BASE                0xf2100000
> -#define DOVE_PCIE1_IO_BUS_BASE         0x00010000
> -#define DOVE_PCIE1_IO_SIZE             SZ_64K
> -
> -/*
> - * Dove Core Registers Map
> - */
> -
> -/* SPI, I2C, UART */
> -#define DOVE_I2C_PHYS_BASE     (DOVE_SB_REGS_PHYS_BASE + 0x11000)
> -#define DOVE_UART0_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x12000)
> -#define DOVE_UART0_VIRT_BASE   (DOVE_SB_REGS_VIRT_BASE + 0x12000)
> -#define DOVE_UART1_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x12100)
> -#define DOVE_UART1_VIRT_BASE   (DOVE_SB_REGS_VIRT_BASE + 0x12100)
> -#define DOVE_UART2_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x12200)
> -#define DOVE_UART2_VIRT_BASE   (DOVE_SB_REGS_VIRT_BASE + 0x12200)
> -#define DOVE_UART3_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x12300)
> -#define DOVE_UART3_VIRT_BASE   (DOVE_SB_REGS_VIRT_BASE + 0x12300)
> -#define DOVE_SPI0_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x10600)
> -#define DOVE_SPI1_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x14600)
> -
> -/* North-South Bridge */
> -#define BRIDGE_VIRT_BASE       (DOVE_SB_REGS_VIRT_BASE + 0x20000)
> -#define BRIDGE_PHYS_BASE       (DOVE_SB_REGS_PHYS_BASE + 0x20000)
> -#define  BRIDGE_WINS_BASE       (BRIDGE_PHYS_BASE)
> -#define  BRIDGE_WINS_SZ         (0x80)
> -
> -/* Cryptographic Engine */
> -#define DOVE_CRYPT_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x30000)
> -
> -/* PCIe 0 */
> -#define DOVE_PCIE0_VIRT_BASE   (DOVE_SB_REGS_VIRT_BASE + 0x40000)
> -
> -/* USB */
> -#define DOVE_USB0_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x50000)
> -#define DOVE_USB1_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x51000)
> -
> -/* XOR 0 Engine */
> -#define DOVE_XOR0_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x60800)
> -#define DOVE_XOR0_VIRT_BASE    (DOVE_SB_REGS_VIRT_BASE + 0x60800)
> -#define DOVE_XOR0_HIGH_PHYS_BASE       (DOVE_SB_REGS_PHYS_BASE + 0x60A00)
> -#define DOVE_XOR0_HIGH_VIRT_BASE       (DOVE_SB_REGS_VIRT_BASE + 0x60A00)
> -
> -/* XOR 1 Engine */
> -#define DOVE_XOR1_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x60900)
> -#define DOVE_XOR1_VIRT_BASE    (DOVE_SB_REGS_VIRT_BASE + 0x60900)
> -#define DOVE_XOR1_HIGH_PHYS_BASE       (DOVE_SB_REGS_PHYS_BASE + 0x60B00)
> -#define DOVE_XOR1_HIGH_VIRT_BASE       (DOVE_SB_REGS_VIRT_BASE + 0x60B00)
> -
> -/* Gigabit Ethernet */
> -#define DOVE_GE00_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0x70000)
> -
> -/* PCIe 1 */
> -#define DOVE_PCIE1_VIRT_BASE   (DOVE_SB_REGS_VIRT_BASE + 0x80000)
> -
> -/* CAFE */
> -#define DOVE_SDIO0_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x92000)
> -#define DOVE_SDIO1_PHYS_BASE   (DOVE_SB_REGS_PHYS_BASE + 0x90000)
> -#define DOVE_CAM_PHYS_BASE     (DOVE_SB_REGS_PHYS_BASE + 0x94000)
> -#define DOVE_CAFE_WIN_PHYS_BASE        (DOVE_SB_REGS_PHYS_BASE + 0x98000)
> -
> -/* SATA */
> -#define DOVE_SATA_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0xa0000)
> -
> -/* I2S/SPDIF */
> -#define DOVE_AUD0_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0xb0000)
> -#define DOVE_AUD1_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0xb4000)
> -
> -/* NAND Flash Controller */
> -#define DOVE_NFC_PHYS_BASE     (DOVE_SB_REGS_PHYS_BASE + 0xc0000)
> -
> -/* MPP, GPIO, Reset Sampling */
> -#define DOVE_MPP_VIRT_BASE     (DOVE_SB_REGS_VIRT_BASE + 0xd0200)
> -#define DOVE_PMU_MPP_GENERAL_CTRL (DOVE_MPP_VIRT_BASE + 0x10)
> -#define DOVE_RESET_SAMPLE_LO   (DOVE_MPP_VIRT_BASE + 0x014)
> -#define DOVE_RESET_SAMPLE_HI   (DOVE_MPP_VIRT_BASE + 0x018)
> -#define DOVE_GPIO_LO_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE + 0xd0400)
> -#define DOVE_GPIO_HI_VIRT_BASE (DOVE_SB_REGS_VIRT_BASE + 0xd0420)
> -#define DOVE_GPIO2_VIRT_BASE    (DOVE_SB_REGS_VIRT_BASE + 0xe8400)
> -#define DOVE_MPP_GENERAL_VIRT_BASE     (DOVE_SB_REGS_VIRT_BASE + 0xe803c)
> -#define  DOVE_AU1_SPDIFO_GPIO_EN       (1 << 1)
> -#define  DOVE_NAND_GPIO_EN             (1 << 0)
> -#define DOVE_MPP_CTRL4_VIRT_BASE       (DOVE_GPIO_LO_VIRT_BASE + 0x40)
> -#define  DOVE_SPI_GPIO_SEL             (1 << 5)
> -#define  DOVE_UART1_GPIO_SEL           (1 << 4)
> -#define  DOVE_AU1_GPIO_SEL             (1 << 3)
> -#define  DOVE_CAM_GPIO_SEL             (1 << 2)
> -#define  DOVE_SD1_GPIO_SEL             (1 << 1)
> -#define  DOVE_SD0_GPIO_SEL             (1 << 0)
> -
> -/* Power Management */
> -#define DOVE_PMU_VIRT_BASE     (DOVE_SB_REGS_VIRT_BASE + 0xd0000)
> -#define DOVE_PMU_SIG_CTRL      (DOVE_PMU_VIRT_BASE + 0x802c)
> -
> -/* Real Time Clock */
> -#define DOVE_RTC_PHYS_BASE     (DOVE_SB_REGS_PHYS_BASE + 0xd8500)
> -
> -/* AC97 */
> -#define DOVE_AC97_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0xe0000)
> -#define DOVE_AC97_VIRT_BASE    (DOVE_SB_REGS_VIRT_BASE + 0xe0000)
> -
> -/* Peripheral DMA */
> -#define DOVE_PDMA_PHYS_BASE    (DOVE_SB_REGS_PHYS_BASE + 0xe4000)
> -#define DOVE_PDMA_VIRT_BASE    (DOVE_SB_REGS_VIRT_BASE + 0xe4000)
> -
> -#define DOVE_GLOBAL_CONFIG_1   (DOVE_SB_REGS_VIRT_BASE + 0xe802C)
> -#define  DOVE_TWSI_ENABLE_OPTION1      (1 << 7)
> -#define DOVE_GLOBAL_CONFIG_2   (DOVE_SB_REGS_VIRT_BASE + 0xe8030)
> -#define  DOVE_TWSI_ENABLE_OPTION2      (1 << 20)
> -#define  DOVE_TWSI_ENABLE_OPTION3      (1 << 21)
> -#define  DOVE_TWSI_OPTION3_GPIO                (1 << 22)
> -#define DOVE_SSP_PHYS_BASE     (DOVE_SB_REGS_PHYS_BASE + 0xec000)
> -#define DOVE_SSP_CTRL_STATUS_1 (DOVE_SB_REGS_VIRT_BASE + 0xe8034)
> -#define  DOVE_SSP_ON_AU1               (1 << 0)
> -#define  DOVE_SSP_CLOCK_ENABLE         (1 << 1)
> -#define  DOVE_SSP_BPB_CLOCK_SRC_SSP    (1 << 11)
> -/* Memory Controller */
> -#define DOVE_MC_PHYS_BASE       (DOVE_NB_REGS_PHYS_BASE + 0x00000)
> -#define  DOVE_MC_WINS_BASE      (DOVE_MC_PHYS_BASE + 0x100)
> -#define  DOVE_MC_WINS_SZ        (0x8)
> -#define DOVE_MC_VIRT_BASE      (DOVE_NB_REGS_VIRT_BASE + 0x00000)
> -
> -/* LCD Controller */
> -#define DOVE_LCD_PHYS_BASE     (DOVE_NB_REGS_PHYS_BASE + 0x10000)
> -#define DOVE_LCD1_PHYS_BASE    (DOVE_NB_REGS_PHYS_BASE + 0x20000)
> -#define DOVE_LCD2_PHYS_BASE    (DOVE_NB_REGS_PHYS_BASE + 0x10000)
> -#define DOVE_LCD_DCON_PHYS_BASE        (DOVE_NB_REGS_PHYS_BASE + 0x30000)
> -
> -/* Graphic Engine */
> -#define DOVE_GPU_PHYS_BASE     (DOVE_NB_REGS_PHYS_BASE + 0x40000)
> -
> -/* Video Engine */
> -#define DOVE_VPU_PHYS_BASE     (DOVE_NB_REGS_PHYS_BASE + 0x400000)
> -
> -#endif
> diff --git a/arch/arm/mach-dove/irq.c b/arch/arm/mach-dove/irq.c
> deleted file mode 100644
> index 027a8f87bc2e..000000000000
> --- a/arch/arm/mach-dove/irq.c
> +++ /dev/null
> @@ -1,81 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-dove/irq.c
> - *
> - * Dove IRQ handling.
> - */
> -#include <linux/init.h>
> -#include <linux/irq.h>
> -#include <linux/io.h>
> -#include <asm/exception.h>
> -
> -#include <plat/irq.h>
> -#include <plat/orion-gpio.h>
> -
> -#include "pm.h"
> -#include "bridge-regs.h"
> -#include "common.h"
> -
> -static int __initdata gpio0_irqs[4] = {
> -       IRQ_DOVE_GPIO_0_7,
> -       IRQ_DOVE_GPIO_8_15,
> -       IRQ_DOVE_GPIO_16_23,
> -       IRQ_DOVE_GPIO_24_31,
> -};
> -
> -static int __initdata gpio1_irqs[4] = {
> -       IRQ_DOVE_HIGH_GPIO,
> -       0,
> -       0,
> -       0,
> -};
> -
> -static int __initdata gpio2_irqs[4] = {
> -       0,
> -       0,
> -       0,
> -       0,
> -};
> -
> -static void __iomem *dove_irq_base = IRQ_VIRT_BASE;
> -
> -static asmlinkage void
> -__exception_irq_entry dove_legacy_handle_irq(struct pt_regs *regs)
> -{
> -       u32 stat;
> -
> -       stat = readl_relaxed(dove_irq_base + IRQ_CAUSE_LOW_OFF);
> -       stat &= readl_relaxed(dove_irq_base + IRQ_MASK_LOW_OFF);
> -       if (stat) {
> -               unsigned int hwirq = 1 + __fls(stat);
> -               handle_IRQ(hwirq, regs);
> -               return;
> -       }
> -       stat = readl_relaxed(dove_irq_base + IRQ_CAUSE_HIGH_OFF);
> -       stat &= readl_relaxed(dove_irq_base + IRQ_MASK_HIGH_OFF);
> -       if (stat) {
> -               unsigned int hwirq = 33 + __fls(stat);
> -               handle_IRQ(hwirq, regs);
> -               return;
> -       }
> -}
> -
> -void __init dove_init_irq(void)
> -{
> -       orion_irq_init(1, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
> -       orion_irq_init(33, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
> -
> -       set_handle_irq(dove_legacy_handle_irq);
> -
> -       /*
> -        * Initialize gpiolib for GPIOs 0-71.
> -        */
> -       orion_gpio_init(0, 32, DOVE_GPIO_LO_VIRT_BASE, 0,
> -                       IRQ_DOVE_GPIO_START, gpio0_irqs);
> -
> -       orion_gpio_init(32, 32, DOVE_GPIO_HI_VIRT_BASE, 0,
> -                       IRQ_DOVE_GPIO_START + 32, gpio1_irqs);
> -
> -       orion_gpio_init(64, 8, DOVE_GPIO2_VIRT_BASE, 0,
> -                       IRQ_DOVE_GPIO_START + 64, gpio2_irqs);
> -}
> diff --git a/arch/arm/mach-dove/irqs.h b/arch/arm/mach-dove/irqs.h
> deleted file mode 100644
> index 5467098c7042..000000000000
> --- a/arch/arm/mach-dove/irqs.h
> +++ /dev/null
> @@ -1,89 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/* IRQ definitions for Marvell Dove 88AP510 SoC */
> -
> -#ifndef __ASM_ARCH_IRQS_H
> -#define __ASM_ARCH_IRQS_H
> -
> -/*
> - * Dove Low Interrupt Controller
> - */
> -#define IRQ_DOVE_BRIDGE                (1 + 0)
> -#define IRQ_DOVE_H2C           (1 + 1)
> -#define IRQ_DOVE_C2H           (1 + 2)
> -#define IRQ_DOVE_NAND          (1 + 3)
> -#define IRQ_DOVE_PDMA          (1 + 4)
> -#define IRQ_DOVE_SPI1          (1 + 5)
> -#define IRQ_DOVE_SPI0          (1 + 6)
> -#define IRQ_DOVE_UART_0                (1 + 7)
> -#define IRQ_DOVE_UART_1                (1 + 8)
> -#define IRQ_DOVE_UART_2                (1 + 9)
> -#define IRQ_DOVE_UART_3                (1 + 10)
> -#define IRQ_DOVE_I2C           (1 + 11)
> -#define IRQ_DOVE_GPIO_0_7      (1 + 12)
> -#define IRQ_DOVE_GPIO_8_15     (1 + 13)
> -#define IRQ_DOVE_GPIO_16_23    (1 + 14)
> -#define IRQ_DOVE_PCIE0_ERR     (1 + 15)
> -#define IRQ_DOVE_PCIE0         (1 + 16)
> -#define IRQ_DOVE_PCIE1_ERR     (1 + 17)
> -#define IRQ_DOVE_PCIE1         (1 + 18)
> -#define IRQ_DOVE_I2S0          (1 + 19)
> -#define IRQ_DOVE_I2S0_ERR      (1 + 20)
> -#define IRQ_DOVE_I2S1          (1 + 21)
> -#define IRQ_DOVE_I2S1_ERR      (1 + 22)
> -#define IRQ_DOVE_USB_ERR       (1 + 23)
> -#define IRQ_DOVE_USB0          (1 + 24)
> -#define IRQ_DOVE_USB1          (1 + 25)
> -#define IRQ_DOVE_GE00_RX       (1 + 26)
> -#define IRQ_DOVE_GE00_TX       (1 + 27)
> -#define IRQ_DOVE_GE00_MISC     (1 + 28)
> -#define IRQ_DOVE_GE00_SUM      (1 + 29)
> -#define IRQ_DOVE_GE00_ERR      (1 + 30)
> -#define IRQ_DOVE_CRYPTO                (1 + 31)
> -
> -/*
> - * Dove High Interrupt Controller
> - */
> -#define IRQ_DOVE_AC97          (1 + 32)
> -#define IRQ_DOVE_PMU           (1 + 33)
> -#define IRQ_DOVE_CAM           (1 + 34)
> -#define IRQ_DOVE_SDIO0         (1 + 35)
> -#define IRQ_DOVE_SDIO1         (1 + 36)
> -#define IRQ_DOVE_SDIO0_WAKEUP  (1 + 37)
> -#define IRQ_DOVE_SDIO1_WAKEUP  (1 + 38)
> -#define IRQ_DOVE_XOR_00                (1 + 39)
> -#define IRQ_DOVE_XOR_01                (1 + 40)
> -#define IRQ_DOVE_XOR0_ERR      (1 + 41)
> -#define IRQ_DOVE_XOR_10                (1 + 42)
> -#define IRQ_DOVE_XOR_11                (1 + 43)
> -#define IRQ_DOVE_XOR1_ERR      (1 + 44)
> -#define IRQ_DOVE_LCD_DCON      (1 + 45)
> -#define IRQ_DOVE_LCD1          (1 + 46)
> -#define IRQ_DOVE_LCD0          (1 + 47)
> -#define IRQ_DOVE_GPU           (1 + 48)
> -#define IRQ_DOVE_PERFORM_MNTR  (1 + 49)
> -#define IRQ_DOVE_VPRO_DMA1     (1 + 51)
> -#define IRQ_DOVE_SSP_TIMER     (1 + 54)
> -#define IRQ_DOVE_SSP           (1 + 55)
> -#define IRQ_DOVE_MC_L2_ERR     (1 + 56)
> -#define IRQ_DOVE_CRYPTO_ERR    (1 + 59)
> -#define IRQ_DOVE_GPIO_24_31    (1 + 60)
> -#define IRQ_DOVE_HIGH_GPIO     (1 + 61)
> -#define IRQ_DOVE_SATA          (1 + 62)
> -
> -/*
> - * DOVE General Purpose Pins
> - */
> -#define IRQ_DOVE_GPIO_START    65
> -#define NR_GPIO_IRQS           64
> -
> -/*
> - * PMU interrupts
> - */
> -#define IRQ_DOVE_PMU_START     (IRQ_DOVE_GPIO_START + NR_GPIO_IRQS)
> -#define NR_PMU_IRQS            7
> -#define IRQ_DOVE_RTC           (IRQ_DOVE_PMU_START + 5)
> -
> -#define DOVE_NR_IRQS           (IRQ_DOVE_PMU_START + NR_PMU_IRQS)
> -
> -
> -#endif
> diff --git a/arch/arm/mach-dove/mpp.c b/arch/arm/mach-dove/mpp.c
> deleted file mode 100644
> index e41bd473abe9..000000000000
> --- a/arch/arm/mach-dove/mpp.c
> +++ /dev/null
> @@ -1,159 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-dove/mpp.c
> - *
> - * MPP functions for Marvell Dove SoCs
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/gpio/consumer.h>
> -#include <linux/io.h>
> -#include <plat/mpp.h>
> -#include <plat/orion-gpio.h>
> -#include "dove.h"
> -#include "mpp.h"
> -
> -struct dove_mpp_grp {
> -       int start;
> -       int end;
> -};
> -
> -/* Map a group to a range of GPIO pins in that group */
> -static const struct dove_mpp_grp dove_mpp_grp[] = {
> -       [MPP_24_39] = {
> -               .start  = 24,
> -               .end    = 39,
> -       },
> -       [MPP_40_45] = {
> -               .start  = 40,
> -               .end    = 45,
> -       },
> -       [MPP_46_51] = {
> -               .start  = 46,
> -               .end    = 51,
> -       },
> -       [MPP_58_61] = {
> -               .start  = 58,
> -               .end    = 61,
> -       },
> -       [MPP_62_63] = {
> -               .start  = 62,
> -               .end    = 63,
> -       },
> -};
> -
> -/* Enable gpio for a range of pins. mode should be a combination of
> -   GPIO_OUTPUT_OK | GPIO_INPUT_OK */
> -static void __init dove_mpp_gpio_mode(int start, int end, int gpio_mode)
> -{
> -       int i;
> -
> -       for (i = start; i <= end; i++)
> -               orion_gpio_set_valid(i, gpio_mode);
> -}
> -
> -/* Dump all the extra MPP registers. The platform code will dump the
> -   registers for pins 0-23. */
> -static void __init dove_mpp_dump_regs(void)
> -{
> -       pr_debug("PMU_CTRL4_CTRL: %08x\n",
> -                readl(DOVE_MPP_CTRL4_VIRT_BASE));
> -
> -       pr_debug("PMU_MPP_GENERAL_CTRL: %08x\n",
> -                readl(DOVE_PMU_MPP_GENERAL_CTRL));
> -
> -       pr_debug("MPP_GENERAL: %08x\n", readl(DOVE_MPP_GENERAL_VIRT_BASE));
> -}
> -
> -static void __init dove_mpp_cfg_nfc(int sel)
> -{
> -       u32 mpp_gen_cfg = readl(DOVE_MPP_GENERAL_VIRT_BASE);
> -
> -       mpp_gen_cfg &= ~0x1;
> -       mpp_gen_cfg |= sel;
> -       writel(mpp_gen_cfg, DOVE_MPP_GENERAL_VIRT_BASE);
> -
> -       dove_mpp_gpio_mode(64, 71, GPIO_OUTPUT_OK);
> -}
> -
> -static void __init dove_mpp_cfg_au1(int sel)
> -{
> -       u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE);
> -       u32 ssp_ctrl1 = readl(DOVE_SSP_CTRL_STATUS_1);
> -       u32 mpp_gen_ctrl = readl(DOVE_MPP_GENERAL_VIRT_BASE);
> -       u32 global_cfg_2 = readl(DOVE_GLOBAL_CONFIG_2);
> -
> -       mpp_ctrl4 &= ~(DOVE_AU1_GPIO_SEL);
> -       ssp_ctrl1 &= ~(DOVE_SSP_ON_AU1);
> -       mpp_gen_ctrl &= ~(DOVE_AU1_SPDIFO_GPIO_EN);
> -       global_cfg_2 &= ~(DOVE_TWSI_OPTION3_GPIO);
> -
> -       if (!sel || sel == 0x2)
> -               dove_mpp_gpio_mode(52, 57, 0);
> -       else
> -               dove_mpp_gpio_mode(52, 57, GPIO_OUTPUT_OK | GPIO_INPUT_OK);
> -
> -       if (sel & 0x1) {
> -               global_cfg_2 |= DOVE_TWSI_OPTION3_GPIO;
> -               dove_mpp_gpio_mode(56, 57, 0);
> -       }
> -       if (sel & 0x2) {
> -               mpp_gen_ctrl |= DOVE_AU1_SPDIFO_GPIO_EN;
> -               dove_mpp_gpio_mode(57, 57, GPIO_OUTPUT_OK | GPIO_INPUT_OK);
> -       }
> -       if (sel & 0x4) {
> -               ssp_ctrl1 |= DOVE_SSP_ON_AU1;
> -               dove_mpp_gpio_mode(52, 55, 0);
> -       }
> -       if (sel & 0x8)
> -               mpp_ctrl4 |= DOVE_AU1_GPIO_SEL;
> -
> -       writel(mpp_ctrl4, DOVE_MPP_CTRL4_VIRT_BASE);
> -       writel(ssp_ctrl1, DOVE_SSP_CTRL_STATUS_1);
> -       writel(mpp_gen_ctrl, DOVE_MPP_GENERAL_VIRT_BASE);
> -       writel(global_cfg_2, DOVE_GLOBAL_CONFIG_2);
> -}
> -
> -/* Configure the group registers, enabling GPIO if sel indicates the
> -   pin is to be used for GPIO */
> -static void __init dove_mpp_conf_grp(unsigned int *mpp_grp_list)
> -{
> -       u32 mpp_ctrl4 = readl(DOVE_MPP_CTRL4_VIRT_BASE);
> -       int gpio_mode;
> -
> -       for ( ; *mpp_grp_list; mpp_grp_list++) {
> -               unsigned int num = MPP_NUM(*mpp_grp_list);
> -               unsigned int sel = MPP_SEL(*mpp_grp_list);
> -
> -               if (num > MPP_GRP_MAX) {
> -                       pr_err("dove: invalid MPP GRP number (%u)\n", num);
> -                       continue;
> -               }
> -
> -               mpp_ctrl4 &= ~(0x1 << num);
> -               mpp_ctrl4 |= sel << num;
> -
> -               gpio_mode = sel ? GPIO_OUTPUT_OK | GPIO_INPUT_OK : 0;
> -               dove_mpp_gpio_mode(dove_mpp_grp[num].start,
> -                                  dove_mpp_grp[num].end, gpio_mode);
> -       }
> -       writel(mpp_ctrl4, DOVE_MPP_CTRL4_VIRT_BASE);
> -}
> -
> -/* Configure the various MPP pins on Dove */
> -void __init dove_mpp_conf(unsigned int *mpp_list,
> -                         unsigned int *mpp_grp_list,
> -                         unsigned int grp_au1_52_57,
> -                         unsigned int grp_nfc_64_71)
> -{
> -       dove_mpp_dump_regs();
> -
> -       /* Use platform code for pins 0-23 */
> -       orion_mpp_conf(mpp_list, 0, MPP_MAX, DOVE_MPP_VIRT_BASE);
> -
> -       dove_mpp_conf_grp(mpp_grp_list);
> -       dove_mpp_cfg_au1(grp_au1_52_57);
> -       dove_mpp_cfg_nfc(grp_nfc_64_71);
> -
> -       dove_mpp_dump_regs();
> -}
> diff --git a/arch/arm/mach-dove/mpp.h b/arch/arm/mach-dove/mpp.h
> deleted file mode 100644
> index 2e4b89c86ca8..000000000000
> --- a/arch/arm/mach-dove/mpp.h
> +++ /dev/null
> @@ -1,197 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef __ARCH_DOVE_MPP_CODED_H
> -#define __ARCH_DOVE_MPP_CODED_H
> -
> -#define MPP(_num, _sel, _in, _out) ( \
> -       /* MPP number */                ((_num) & 0xff) | \
> -       /* MPP select value */          (((_sel) & 0xf) << 8) | \
> -       /* may be input signal */       ((!!(_in)) << 12) | \
> -       /* may be output signal */      ((!!(_out)) << 13))
> -
> -#define MPP0_GPIO0             MPP(0, 0x0, 1, 1)
> -#define MPP0_UA2_RTSn          MPP(0, 0x2, 0, 0)
> -#define MPP0_SDIO0_CD          MPP(0, 0x3, 0, 0)
> -#define MPP0_LCD0_PWM          MPP(0, 0xf, 0, 0)
> -
> -#define MPP1_GPIO1             MPP(1, 0x0, 1, 1)
> -#define MPP1_UA2_CTSn          MPP(1, 0x2, 0, 0)
> -#define MPP1_SDIO0_WP          MPP(1, 0x3, 0, 0)
> -#define MPP1_LCD1_PWM          MPP(1, 0xf, 0, 0)
> -
> -#define MPP2_GPIO2             MPP(2, 0x0, 1, 1)
> -#define MPP2_SATA_PRESENT      MPP(2, 0x1, 0, 0)
> -#define MPP2_UA2_TXD           MPP(2, 0x2, 0, 0)
> -#define MPP2_SDIO0_BUS_POWER   MPP(2, 0x3, 0, 0)
> -#define MPP2_UA_RTSn1          MPP(2, 0x4, 0, 0)
> -
> -#define MPP3_GPIO3             MPP(3, 0x0, 1, 1)
> -#define MPP3_SATA_ACT          MPP(3, 0x1, 0, 0)
> -#define MPP3_UA2_RXD           MPP(3, 0x2, 0, 0)
> -#define MPP3_SDIO0_LED_CTRL    MPP(3, 0x3, 0, 0)
> -#define MPP3_UA_CTSn1          MPP(3, 0x4, 0, 0)
> -#define MPP3_SPI_LCD_CS1       MPP(3, 0xf, 0, 0)
> -
> -#define MPP4_GPIO4             MPP(4, 0x0, 1, 1)
> -#define MPP4_UA3_RTSn          MPP(4, 0x2, 0, 0)
> -#define MPP4_SDIO1_CD          MPP(4, 0x3, 0, 0)
> -#define MPP4_SPI_1_MISO                MPP(4, 0x4, 0, 0)
> -
> -#define MPP5_GPIO5             MPP(5, 0x0, 1, 1)
> -#define MPP5_UA3_CTSn          MPP(5, 0x2, 0, 0)
> -#define MPP5_SDIO1_WP          MPP(5, 0x3, 0, 0)
> -#define MPP5_SPI_1_CS          MPP(5, 0x4, 0, 0)
> -
> -#define MPP6_GPIO6             MPP(6, 0x0, 1, 1)
> -#define MPP6_UA3_TXD           MPP(6, 0x2, 0, 0)
> -#define MPP6_SDIO1_BUS_POWER   MPP(6, 0x3, 0, 0)
> -#define MPP6_SPI_1_MOSI                MPP(6, 0x4, 0, 0)
> -
> -#define MPP7_GPIO7             MPP(7, 0x0, 1, 1)
> -#define MPP7_UA3_RXD           MPP(7, 0x2, 0, 0)
> -#define MPP7_SDIO1_LED_CTRL    MPP(7, 0x3, 0, 0)
> -#define MPP7_SPI_1_SCK         MPP(7, 0x4, 0, 0)
> -
> -#define MPP8_GPIO8             MPP(8, 0x0, 1, 1)
> -#define MPP8_WD_RST_OUT                MPP(8, 0x1, 0, 0)
> -
> -#define MPP9_GPIO9             MPP(9, 0x0, 1, 1)
> -#define MPP9_PEX1_CLKREQn      MPP(9, 0x5, 0, 0)
> -
> -#define MPP10_GPIO10           MPP(10, 0x0, 1, 1)
> -#define MPP10_SSP_SCLK         MPP(10, 0x5, 0, 0)
> -
> -#define MPP11_GPIO11           MPP(11, 0x0, 1, 1)
> -#define MPP11_SATA_PRESENT     MPP(11, 0x1, 0, 0)
> -#define MPP11_SATA_ACT         MPP(11, 0x2, 0, 0)
> -#define MPP11_SDIO0_LED_CTRL   MPP(11, 0x3, 0, 0)
> -#define MPP11_SDIO1_LED_CTRL   MPP(11, 0x4, 0, 0)
> -#define MPP11_PEX0_CLKREQn     MPP(11, 0x5, 0, 0)
> -
> -#define MPP12_GPIO12           MPP(12, 0x0, 1, 1)
> -#define MPP12_SATA_ACT         MPP(12, 0x1, 0, 0)
> -#define MPP12_UA2_RTSn         MPP(12, 0x2, 0, 0)
> -#define MPP12_AD0_I2S_EXT_MCLK MPP(12, 0x3, 0, 0)
> -#define MPP12_SDIO1_CD         MPP(12, 0x4, 0, 0)
> -
> -#define MPP13_GPIO13           MPP(13, 0x0, 1, 1)
> -#define MPP13_UA2_CTSn         MPP(13, 0x2, 0, 0)
> -#define MPP13_AD1_I2S_EXT_MCLK MPP(13, 0x3, 0, 0)
> -#define MPP13_SDIO1WP          MPP(13, 0x4, 0, 0)
> -#define MPP13_SSP_EXTCLK       MPP(13, 0x5, 0, 0)
> -
> -#define MPP14_GPIO14           MPP(14, 0x0, 1, 1)
> -#define MPP14_UA2_TXD          MPP(14, 0x2, 0, 0)
> -#define MPP14_SDIO1_BUS_POWER  MPP(14, 0x4, 0, 0)
> -#define MPP14_SSP_RXD          MPP(14, 0x5, 0, 0)
> -
> -#define MPP15_GPIO15           MPP(15, 0x0, 1, 1)
> -#define MPP15_UA2_RXD          MPP(15, 0x2, 0, 0)
> -#define MPP15_SDIO1_LED_CTRL   MPP(15, 0x4, 0, 0)
> -#define MPP15_SSP_SFRM         MPP(15, 0x5, 0, 0)
> -
> -#define MPP16_GPIO16           MPP(16, 0x0, 1, 1)
> -#define MPP16_UA3_RTSn         MPP(16, 0x2, 0, 0)
> -#define MPP16_SDIO0_CD         MPP(16, 0x3, 0, 0)
> -#define MPP16_SPI_LCD_CS1      MPP(16, 0x4, 0, 0)
> -#define MPP16_AC97_SDATA_IN1   MPP(16, 0x5, 0, 0)
> -
> -#define MPP17_GPIO17           MPP(17, 0x0, 1, 1)
> -#define MPP17_AC97_SYSCLK_OUT  MPP(17, 0x1, 0, 0)
> -#define MPP17_UA3_CTSn         MPP(17, 0x2, 0, 0)
> -#define MPP17_SDIO0_WP         MPP(17, 0x3, 0, 0)
> -#define MPP17_TW_SDA2          MPP(17, 0x4, 0, 0)
> -#define MPP17_AC97_SDATA_IN2   MPP(17, 0x5, 0, 0)
> -
> -#define MPP18_GPIO18           MPP(18, 0x0, 1, 1)
> -#define MPP18_UA3_TXD          MPP(18, 0x2, 0, 0)
> -#define MPP18_SDIO0_BUS_POWER  MPP(18, 0x3, 0, 0)
> -#define MPP18_LCD0_PWM         MPP(18, 0x4, 0, 0)
> -#define MPP18_AC_SDATA_IN3     MPP(18, 0x5, 0, 0)
> -
> -#define MPP19_GPIO19           MPP(19, 0x0, 1, 1)
> -#define MPP19_UA3_RXD          MPP(19, 0x2, 0, 0)
> -#define MPP19_SDIO0_LED_CTRL   MPP(19, 0x3, 0, 0)
> -#define MPP19_TW_SCK2          MPP(19, 0x4, 0, 0)
> -
> -#define MPP20_GPIO20           MPP(20, 0x0, 1, 1)
> -#define MPP20_AC97_SYSCLK_OUT  MPP(20, 0x1, 0, 0)
> -#define MPP20_SPI_LCD_MISO     MPP(20, 0x2, 0, 0)
> -#define MPP20_SDIO1_CD         MPP(20, 0x3, 0, 0)
> -#define MPP20_SDIO0_CD         MPP(20, 0x5, 0, 0)
> -#define MPP20_SPI_1_MISO       MPP(20, 0x6, 0, 0)
> -
> -#define MPP21_GPIO21           MPP(21, 0x0, 1, 1)
> -#define MPP21_UA1_RTSn         MPP(21, 0x1, 0, 0)
> -#define MPP21_SPI_LCD_CS0      MPP(21, 0x2, 0, 0)
> -#define MPP21_SDIO1_WP         MPP(21, 0x3, 0, 0)
> -#define MPP21_SSP_SFRM         MPP(21, 0x4, 0, 0)
> -#define MPP21_SDIO0_WP         MPP(21, 0x5, 0, 0)
> -#define MPP21_SPI_1_CS         MPP(21, 0x6, 0, 0)
> -
> -#define MPP22_GPIO22           MPP(22, 0x0, 1, 1)
> -#define MPP22_UA1_CTSn         MPP(22, 0x1, 0, 0)
> -#define MPP22_SPI_LCD_MOSI     MPP(22, 0x2, 0, 0)
> -#define MPP22_SDIO1_BUS_POWER  MPP(22, 0x3, 0, 0)
> -#define MPP22_SSP_TXD          MPP(22, 0x4, 0, 0)
> -#define MPP22_SDIO0_BUS_POWER  MPP(22, 0x5, 0, 0)
> -#define MPP22_SPI_1_MOSI       MPP(22, 0x6, 0, 0)
> -
> -#define MPP23_GPIO23           MPP(23, 0x0, 1, 1)
> -#define MPP23_SPI_LCD_SCK      MPP(23, 0x2, 0, 0)
> -#define MPP23_SDIO1_LED_CTRL   MPP(23, 0x3, 0, 0)
> -#define MPP23_SSP_SCLK         MPP(23, 0x4, 0, 0)
> -#define MPP23_SDIO0_LED_CTRL   MPP(23, 0x5, 0, 0)
> -#define MPP23_SPI_1_SCK                MPP(23, 0x6, 0, 0)
> -
> -#define MPP_MAX                        23
> -
> -#define MPP_GRP(_grp, _mode)   MPP((_grp), (_mode), 0, 0)
> -
> -/* for MPP groups _num is a group index */
> -enum dove_mpp_grp_idx {
> -       MPP_24_39 = 2,
> -       MPP_40_45 = 0,
> -       MPP_46_51 = 1,
> -       MPP_58_61 = 5,
> -       MPP_62_63 = 4,
> -       MPP_GRP_MAX = 5,
> -};
> -
> -#define MPP_GRP_24_39_GPIO             MPP_GRP(MPP_24_39, 0x1)
> -#define MPP_GRP_24_39_CAM              MPP_GRP(MPP_24_39, 0x0)
> -
> -#define MPP_GRP_40_45_GPIO             MPP_GRP(MPP_40_45, 0x1)
> -#define MPP_GRP_40_45_SD0              MPP_GRP(MPP_40_45, 0x0)
> -
> -#define MPP_GRP_46_51_GPIO             MPP_GRP(MPP_46_51, 0x1)
> -#define MPP_GRP_46_51_SD1              MPP_GRP(MPP_46_51, 0x0)
> -
> -#define MPP_GRP_58_61_GPIO             MPP_GRP(MPP_58_61, 0x1)
> -#define MPP_GRP_58_61_SPI              MPP_GRP(MPP_58_61, 0x0)
> -
> -#define MPP_GRP_62_63_GPIO             MPP_GRP(MPP_62_63, 0x1)
> -#define MPP_GRP_62_63_UA1              MPP_GRP(MPP_62_63, 0x0)
> -
> -/* The MPP[64:71] control differs from other groups */
> -#define MPP_GRP_NFC_64_71_GPO          0x1
> -#define MPP_GRP_NFC_64_71_NFC          0x0
> -
> -/*
> - * The MPP[52:57] functionality is encoded by 4 bits in different
> - * registers. The _num field in this case encodes those bits in
> - * correspodence with Table 135 of 88AP510 Functional specification
> - */
> -#define MPP_GRP_AU1_52_57_AU1          0x0
> -#define MPP_GRP_AU1_52_57_AU1_GPIO57   0x2
> -#define MPP_GRP_AU1_52_57_GPIO         0xa
> -#define MPP_GRP_AU1_52_57_TW_GPIO      0xb
> -#define MPP_GRP_AU1_52_57_AU1_SSP      0xc
> -#define MPP_GRP_AU1_52_57_SSP_GPIO     0xe
> -#define MPP_GRP_AU1_52_57_SSP_TW       0xf
> -
> -void dove_mpp_conf(unsigned int *mpp_list,
> -                  unsigned int *mpp_grp_list,
> -                  unsigned int grp_au1_52_57,
> -                  unsigned int grp_nfc_64_71);
> -
> -#endif /* __ARCH_DOVE_MPP_CODED_H */
> diff --git a/arch/arm/mach-dove/pcie.c b/arch/arm/mach-dove/pcie.c
> deleted file mode 100644
> index 3044b7e03890..000000000000
> --- a/arch/arm/mach-dove/pcie.c
> +++ /dev/null
> @@ -1,226 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-dove/pcie.c
> - *
> - * PCIe functions for Marvell Dove 88AP510 SoC
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/pci.h>
> -#include <linux/clk.h>
> -#include <video/vga.h>
> -#include <asm/mach/pci.h>
> -#include <asm/mach/arch.h>
> -#include <asm/setup.h>
> -#include <asm/delay.h>
> -#include <plat/pcie.h>
> -#include <plat/addr-map.h>
> -#include "irqs.h"
> -#include "bridge-regs.h"
> -#include "common.h"
> -
> -struct pcie_port {
> -       u8                      index;
> -       u8                      root_bus_nr;
> -       void __iomem            *base;
> -       spinlock_t              conf_lock;
> -       char                    mem_space_name[16];
> -       struct resource         res;
> -};
> -
> -static struct pcie_port pcie_port[2];
> -static int num_pcie_ports;
> -
> -
> -static int __init dove_pcie_setup(int nr, struct pci_sys_data *sys)
> -{
> -       struct pcie_port *pp;
> -       struct resource realio;
> -
> -       if (nr >= num_pcie_ports)
> -               return 0;
> -
> -       pp = &pcie_port[nr];
> -       sys->private_data = pp;
> -       pp->root_bus_nr = sys->busnr;
> -
> -       /*
> -        * Generic PCIe unit setup.
> -        */
> -       orion_pcie_set_local_bus_nr(pp->base, sys->busnr);
> -
> -       orion_pcie_setup(pp->base);
> -
> -       realio.start = sys->busnr * SZ_64K;
> -       realio.end = realio.start + SZ_64K - 1;
> -       pci_remap_iospace(&realio, pp->index == 0 ? DOVE_PCIE0_IO_PHYS_BASE :
> -                                                   DOVE_PCIE1_IO_PHYS_BASE);
> -
> -       /*
> -        * IORESOURCE_MEM
> -        */
> -       snprintf(pp->mem_space_name, sizeof(pp->mem_space_name),
> -                "PCIe %d MEM", pp->index);
> -       pp->mem_space_name[sizeof(pp->mem_space_name) - 1] = 0;
> -       pp->res.name = pp->mem_space_name;
> -       if (pp->index == 0) {
> -               pp->res.start = DOVE_PCIE0_MEM_PHYS_BASE;
> -               pp->res.end = pp->res.start + DOVE_PCIE0_MEM_SIZE - 1;
> -       } else {
> -               pp->res.start = DOVE_PCIE1_MEM_PHYS_BASE;
> -               pp->res.end = pp->res.start + DOVE_PCIE1_MEM_SIZE - 1;
> -       }
> -       pp->res.flags = IORESOURCE_MEM;
> -       if (request_resource(&iomem_resource, &pp->res))
> -               panic("Request PCIe Memory resource failed\n");
> -       pci_add_resource_offset(&sys->resources, &pp->res, sys->mem_offset);
> -
> -       return 1;
> -}
> -
> -static int pcie_valid_config(struct pcie_port *pp, int bus, int dev)
> -{
> -       /*
> -        * Don't go out when trying to access nonexisting devices
> -        * on the local bus.
> -        */
> -       if (bus == pp->root_bus_nr && dev > 1)
> -               return 0;
> -
> -       return 1;
> -}
> -
> -static int pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
> -                       int size, u32 *val)
> -{
> -       struct pci_sys_data *sys = bus->sysdata;
> -       struct pcie_port *pp = sys->private_data;
> -       unsigned long flags;
> -       int ret;
> -
> -       if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0) {
> -               *val = 0xffffffff;
> -               return PCIBIOS_DEVICE_NOT_FOUND;
> -       }
> -
> -       spin_lock_irqsave(&pp->conf_lock, flags);
> -       ret = orion_pcie_rd_conf(pp->base, bus, devfn, where, size, val);
> -       spin_unlock_irqrestore(&pp->conf_lock, flags);
> -
> -       return ret;
> -}
> -
> -static int pcie_wr_conf(struct pci_bus *bus, u32 devfn,
> -                       int where, int size, u32 val)
> -{
> -       struct pci_sys_data *sys = bus->sysdata;
> -       struct pcie_port *pp = sys->private_data;
> -       unsigned long flags;
> -       int ret;
> -
> -       if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0)
> -               return PCIBIOS_DEVICE_NOT_FOUND;
> -
> -       spin_lock_irqsave(&pp->conf_lock, flags);
> -       ret = orion_pcie_wr_conf(pp->base, bus, devfn, where, size, val);
> -       spin_unlock_irqrestore(&pp->conf_lock, flags);
> -
> -       return ret;
> -}
> -
> -static struct pci_ops pcie_ops = {
> -       .read = pcie_rd_conf,
> -       .write = pcie_wr_conf,
> -};
> -
> -/*
> - * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
> - * is operating as a root complex this needs to be switched to
> - * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
> - * the device. Decoding setup is handled by the orion code.
> - */
> -static void rc_pci_fixup(struct pci_dev *dev)
> -{
> -       if (dev->bus->parent == NULL && dev->devfn == 0) {
> -               struct resource *r;
> -
> -               dev->class &= 0xff;
> -               dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
> -               pci_dev_for_each_resource(dev, r) {
> -                       r->start = 0;
> -                       r->end   = 0;
> -                       r->flags = 0;
> -               }
> -       }
> -}
> -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
> -
> -static int __init
> -dove_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
> -{
> -       struct pci_sys_data *sys = pci_host_bridge_priv(bridge);
> -
> -       if (nr >= num_pcie_ports) {
> -               BUG();
> -               return -EINVAL;
> -       }
> -
> -       list_splice_init(&sys->resources, &bridge->windows);
> -       bridge->dev.parent = NULL;
> -       bridge->sysdata = sys;
> -       bridge->busnr = sys->busnr;
> -       bridge->ops = &pcie_ops;
> -
> -       return pci_scan_root_bus_bridge(bridge);
> -}
> -
> -static int __init dove_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
> -{
> -       struct pci_sys_data *sys = dev->sysdata;
> -       struct pcie_port *pp = sys->private_data;
> -
> -       return pp->index ? IRQ_DOVE_PCIE1 : IRQ_DOVE_PCIE0;
> -}
> -
> -static struct hw_pci dove_pci __initdata = {
> -       .nr_controllers = 2,
> -       .setup          = dove_pcie_setup,
> -       .scan           = dove_pcie_scan_bus,
> -       .map_irq        = dove_pcie_map_irq,
> -};
> -
> -static void __init add_pcie_port(int index, void __iomem *base)
> -{
> -       printk(KERN_INFO "Dove PCIe port %d: ", index);
> -
> -       if (orion_pcie_link_up(base)) {
> -               struct pcie_port *pp = &pcie_port[num_pcie_ports++];
> -               struct clk *clk = clk_get_sys("pcie", (index ? "1" : "0"));
> -
> -               if (!IS_ERR(clk))
> -                       clk_prepare_enable(clk);
> -
> -               printk(KERN_INFO "link up\n");
> -
> -               pp->index = index;
> -               pp->root_bus_nr = -1;
> -               pp->base = base;
> -               spin_lock_init(&pp->conf_lock);
> -               memset(&pp->res, 0, sizeof(pp->res));
> -       } else {
> -               printk(KERN_INFO "link down, ignoring\n");
> -       }
> -}
> -
> -void __init dove_pcie_init(int init_port0, int init_port1)
> -{
> -       vga_base = DOVE_PCIE0_MEM_PHYS_BASE;
> -
> -       if (init_port0)
> -               add_pcie_port(0, DOVE_PCIE0_VIRT_BASE);
> -
> -       if (init_port1)
> -               add_pcie_port(1, DOVE_PCIE1_VIRT_BASE);
> -
> -       pci_common_init(&dove_pci);
> -}
> diff --git a/arch/arm/mach-dove/pm.h b/arch/arm/mach-dove/pm.h
> deleted file mode 100644
> index a4c3aba1e2d0..000000000000
> --- a/arch/arm/mach-dove/pm.h
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -
> -#ifndef __ASM_ARCH_PM_H
> -#define __ASM_ARCH_PM_H
> -
> -#include <asm/errno.h>
> -#include "irqs.h"
> -
> -#define CLOCK_GATING_CONTROL   (DOVE_PMU_VIRT_BASE + 0x38)
> -#define  CLOCK_GATING_BIT_USB0         0
> -#define  CLOCK_GATING_BIT_USB1         1
> -#define  CLOCK_GATING_BIT_GBE          2
> -#define  CLOCK_GATING_BIT_SATA         3
> -#define  CLOCK_GATING_BIT_PCIE0                4
> -#define  CLOCK_GATING_BIT_PCIE1                5
> -#define  CLOCK_GATING_BIT_SDIO0                8
> -#define  CLOCK_GATING_BIT_SDIO1                9
> -#define  CLOCK_GATING_BIT_NAND         10
> -#define  CLOCK_GATING_BIT_CAMERA       11
> -#define  CLOCK_GATING_BIT_I2S0         12
> -#define  CLOCK_GATING_BIT_I2S1         13
> -#define  CLOCK_GATING_BIT_CRYPTO       15
> -#define  CLOCK_GATING_BIT_AC97         21
> -#define  CLOCK_GATING_BIT_PDMA         22
> -#define  CLOCK_GATING_BIT_XOR0         23
> -#define  CLOCK_GATING_BIT_XOR1         24
> -#define  CLOCK_GATING_BIT_GIGA_PHY     30
> -#define  CLOCK_GATING_USB0_MASK                (1 << CLOCK_GATING_BIT_USB0)
> -#define  CLOCK_GATING_USB1_MASK                (1 << CLOCK_GATING_BIT_USB1)
> -#define  CLOCK_GATING_GBE_MASK         (1 << CLOCK_GATING_BIT_GBE)
> -#define  CLOCK_GATING_SATA_MASK                (1 << CLOCK_GATING_BIT_SATA)
> -#define  CLOCK_GATING_PCIE0_MASK       (1 << CLOCK_GATING_BIT_PCIE0)
> -#define  CLOCK_GATING_PCIE1_MASK       (1 << CLOCK_GATING_BIT_PCIE1)
> -#define  CLOCK_GATING_SDIO0_MASK       (1 << CLOCK_GATING_BIT_SDIO0)
> -#define  CLOCK_GATING_SDIO1_MASK       (1 << CLOCK_GATING_BIT_SDIO1)
> -#define  CLOCK_GATING_NAND_MASK                (1 << CLOCK_GATING_BIT_NAND)
> -#define  CLOCK_GATING_CAMERA_MASK      (1 << CLOCK_GATING_BIT_CAMERA)
> -#define  CLOCK_GATING_I2S0_MASK                (1 << CLOCK_GATING_BIT_I2S0)
> -#define  CLOCK_GATING_I2S1_MASK                (1 << CLOCK_GATING_BIT_I2S1)
> -#define  CLOCK_GATING_CRYPTO_MASK      (1 << CLOCK_GATING_BIT_CRYPTO)
> -#define  CLOCK_GATING_AC97_MASK                (1 << CLOCK_GATING_BIT_AC97)
> -#define  CLOCK_GATING_PDMA_MASK                (1 << CLOCK_GATING_BIT_PDMA)
> -#define  CLOCK_GATING_XOR0_MASK                (1 << CLOCK_GATING_BIT_XOR0)
> -#define  CLOCK_GATING_XOR1_MASK                (1 << CLOCK_GATING_BIT_XOR1)
> -#define  CLOCK_GATING_GIGA_PHY_MASK    (1 << CLOCK_GATING_BIT_GIGA_PHY)
> -
> -#define PMU_INTERRUPT_CAUSE    (DOVE_PMU_VIRT_BASE + 0x50)
> -
> -#define  PMU_SW_RST_VIDEO_MASK         BIT(16)
> -#define  PMU_SW_RST_GPU_MASK           BIT(18)
> -
> -#define  PMU_PWR_GPU_PWR_DWN_MASK      BIT(2)
> -#define  PMU_PWR_VPU_PWR_DWN_MASK      BIT(3)
> -
> -#define  PMU_ISO_VIDEO_MASK            BIT(0)
> -#define  PMU_ISO_GPU_MASK              BIT(1)
> -
> -#endif
> diff --git a/arch/arm/mach-mv78xx0/Kconfig b/arch/arm/mach-mv78xx0/Kconfig
> deleted file mode 100644
> index 98b35f5d05ba..000000000000
> --- a/arch/arm/mach-mv78xx0/Kconfig
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-only
> -menuconfig ARCH_MV78XX0
> -       bool "Marvell MV78xx0 (DEPRECATED)"
> -       depends on ARCH_MULTI_V5
> -       depends on CPU_LITTLE_ENDIAN
> -       depends on ATAGS
> -       select CPU_FEROCEON
> -       select GPIOLIB
> -       select GPIOLIB_LEGACY
> -       select MVEBU_MBUS
> -       select FORCE_PCI
> -       select PLAT_ORION_LEGACY
> -       help
> -         Support for the following Marvell MV78xx0 series SoCs:
> -         MV781x0, MV782x0.
> -
> -         This platform is scheduled for removal in early 2027.
> -
> -if ARCH_MV78XX0
> -
> -config MACH_TERASTATION_WXL
> -       bool "Buffalo WLX (Terastation Duo) NAS"
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         Buffalo WXL Nas.
> -
> -endif
> diff --git a/arch/arm/mach-mv78xx0/Makefile b/arch/arm/mach-mv78xx0/Makefile
> deleted file mode 100644
> index ddee6ae501bb..000000000000
> --- a/arch/arm/mach-mv78xx0/Makefile
> +++ /dev/null
> @@ -1,5 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0
> -ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
> -
> -obj-y                          += common.o mpp.o irq.o pcie.o
> -obj-$(CONFIG_MACH_TERASTATION_WXL) += buffalo-wxl-setup.o
> diff --git a/arch/arm/mach-mv78xx0/bridge-regs.h b/arch/arm/mach-mv78xx0/bridge-regs.h
> deleted file mode 100644
> index d57ac967c4b3..000000000000
> --- a/arch/arm/mach-mv78xx0/bridge-regs.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -
> -#ifndef __ASM_ARCH_BRIDGE_REGS_H
> -#define __ASM_ARCH_BRIDGE_REGS_H
> -
> -#include "mv78xx0.h"
> -
> -#define CPU_CONTROL            (BRIDGE_VIRT_BASE + 0x0104)
> -#define L2_WRITETHROUGH                0x00020000
> -
> -#define RSTOUTn_MASK           (BRIDGE_VIRT_BASE + 0x0108)
> -#define RSTOUTn_MASK_PHYS      (BRIDGE_PHYS_BASE + 0x0108)
> -#define SOFT_RESET_OUT_EN      0x00000004
> -
> -#define SYSTEM_SOFT_RESET      (BRIDGE_VIRT_BASE + 0x010c)
> -#define SOFT_RESET             0x00000001
> -
> -#define BRIDGE_INT_TIMER1_CLR  (~0x0004)
> -
> -#define IRQ_VIRT_BASE          (BRIDGE_VIRT_BASE + 0x0200)
> -#define IRQ_CAUSE_ERR_OFF      0x0000
> -#define IRQ_CAUSE_LOW_OFF      0x0004
> -#define IRQ_CAUSE_HIGH_OFF     0x0008
> -#define IRQ_MASK_ERR_OFF       0x000c
> -#define IRQ_MASK_LOW_OFF       0x0010
> -#define IRQ_MASK_HIGH_OFF      0x0014
> -
> -#define TIMER_VIRT_BASE                (BRIDGE_VIRT_BASE + 0x0300)
> -#define TIMER_PHYS_BASE                (BRIDGE_PHYS_BASE + 0x0300)
> -
> -#endif
> diff --git a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c b/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
> deleted file mode 100644
> index 3b2e381b7383..000000000000
> --- a/arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
> +++ /dev/null
> @@ -1,183 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-mv78xx0/buffalo-wxl-setup.c
> - *
> - * Buffalo WXL (Terastation Duo) Setup routines
> - *
> - * sebastien requiem <sebastien@requiem.fr>
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/ata_platform.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/ethtool.h>
> -#include <linux/i2c.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/input.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include "mv78xx0.h"
> -#include "common.h"
> -#include "mpp.h"
> -
> -
> -#define TSWXL_AUTO_SWITCH      15
> -#define TSWXL_USB_POWER1       30
> -#define TSWXL_USB_POWER2       31
> -
> -
> -/* This arch has 2 Giga Ethernet */
> -
> -static struct mv643xx_eth_platform_data db78x00_ge00_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(0),
> -};
> -
> -static struct mv643xx_eth_platform_data db78x00_ge01_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
> -};
> -
> -
> -/* 2 SATA controller supporting HotPlug */
> -
> -static struct mv_sata_platform_data db78x00_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -static struct i2c_board_info __initdata db78x00_i2c_rtc = {
> -       I2C_BOARD_INFO("rs5c372a", 0x32),
> -};
> -
> -
> -static unsigned int wxl_mpp_config[] __initdata = {
> -       MPP0_GE1_TXCLK,
> -       MPP1_GE1_TXCTL,
> -       MPP2_GE1_RXCTL,
> -       MPP3_GE1_RXCLK,
> -       MPP4_GE1_TXD0,
> -       MPP5_GE1_TXD1,
> -       MPP6_GE1_TXD2,
> -       MPP7_GE1_TXD3,
> -       MPP8_GE1_RXD0,
> -       MPP9_GE1_RXD1,
> -       MPP10_GE1_RXD2,
> -       MPP11_GE1_RXD3,
> -       MPP12_GPIO,
> -       MPP13_GPIO,
> -       MPP14_GPIO,
> -       MPP15_GPIO,
> -       MPP16_GPIO,
> -       MPP17_GPIO,
> -       MPP18_GPIO,
> -       MPP19_GPIO,
> -       MPP20_GPIO,
> -       MPP21_GPIO,
> -       MPP22_GPIO,
> -       MPP23_GPIO,
> -       MPP24_UA2_TXD,
> -       MPP25_UA2_RXD,
> -       MPP26_UA2_CTSn,
> -       MPP27_UA2_RTSn,
> -       MPP28_GPIO,
> -       MPP29_GPIO,
> -       MPP30_GPIO,
> -       MPP31_GPIO,
> -       MPP32_GPIO,
> -       MPP33_GPIO,
> -       MPP34_GPIO,
> -       MPP35_GPIO,
> -       MPP36_GPIO,
> -       MPP37_GPIO,
> -       MPP38_GPIO,
> -       MPP39_GPIO,
> -       MPP40_GPIO,
> -       MPP41_GPIO,
> -       MPP42_GPIO,
> -       MPP43_GPIO,
> -       MPP44_GPIO,
> -       MPP45_GPIO,
> -       MPP46_GPIO,
> -       MPP47_GPIO,
> -       MPP48_GPIO,
> -       MPP49_GPIO,
> -       0
> -};
> -
> -static struct gpio_keys_button tswxl_buttons[] = {
> -       {
> -               .code      = KEY_OPTION,
> -               .gpio      = TSWXL_AUTO_SWITCH,
> -               .desc      = "Power-auto Switch",
> -               .active_low     = 1,
> -       }
> -};
> -
> -static struct gpio_keys_platform_data tswxl_button_data = {
> -       .buttons        = tswxl_buttons,
> -       .nbuttons       = ARRAY_SIZE(tswxl_buttons),
> -};
> -
> -static struct platform_device tswxl_button_device = {
> -       .name      = "gpio-keys",
> -       .id          = -1,
> -       .num_resources  = 0,
> -       .dev        = {
> -               .platform_data  = &tswxl_button_data,
> -       },
> -};
> -
> -static void __init wxl_init(void)
> -{
> -       /*
> -        * Basic MV78xx0 setup. Needs to be called early.
> -        */
> -       mv78xx0_init();
> -       mv78xx0_mpp_conf(wxl_mpp_config);
> -
> -       /*
> -        * Partition on-chip peripherals between the two CPU cores.
> -        */
> -       mv78xx0_ehci0_init();
> -       mv78xx0_ehci1_init();
> -       mv78xx0_ge00_init(&db78x00_ge00_data);
> -       mv78xx0_ge01_init(&db78x00_ge01_data);
> -       mv78xx0_sata_init(&db78x00_sata_data);
> -       mv78xx0_uart0_init();
> -       mv78xx0_uart1_init();
> -       mv78xx0_uart2_init();
> -       mv78xx0_uart3_init();
> -       mv78xx0_xor_init();
> -       mv78xx0_crypto_init();
> -       mv78xx0_i2c_init();
> -       i2c_register_board_info(0, &db78x00_i2c_rtc, 1);
> -
> -       //enable both usb ports
> -       gpio_direction_output(TSWXL_USB_POWER1, 1);
> -       gpio_direction_output(TSWXL_USB_POWER2, 1);
> -
> -       //enable rear switch
> -       platform_device_register(&tswxl_button_device);
> -}
> -
> -static int __init wxl_pci_init(void)
> -{
> -       if (machine_is_terastation_wxl() && mv78xx0_core_index() == 0)
> -                mv78xx0_pcie_init(1, 1);
> -
> -       return 0;
> -}
> -subsys_initcall(wxl_pci_init);
> -
> -MACHINE_START(TERASTATION_WXL, "Buffalo Nas WXL")
> -       /* Maintainer: Sebastien Requiem <sebastien@requiem.fr> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = MV78XX0_NR_IRQS,
> -       .init_machine   = wxl_init,
> -       .map_io         = mv78xx0_map_io,
> -       .init_early     = mv78xx0_init_early,
> -       .init_irq       = mv78xx0_init_irq,
> -       .init_time      = mv78xx0_timer_init,
> -       .restart        = mv78xx0_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-mv78xx0/common.c b/arch/arm/mach-mv78xx0/common.c
> deleted file mode 100644
> index 679753fcc0ef..000000000000
> --- a/arch/arm/mach-mv78xx0/common.c
> +++ /dev/null
> @@ -1,444 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-mv78xx0/common.c
> - *
> - * Core functions for Marvell MV78xx0 SoCs
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/io.h>
> -#include <linux/platform_device.h>
> -#include <linux/serial_8250.h>
> -#include <linux/ata_platform.h>
> -#include <linux/clk-provider.h>
> -#include <linux/ethtool.h>
> -#include <asm/hardware/cache-feroceon-l2.h>
> -#include <asm/mach/map.h>
> -#include <asm/mach/time.h>
> -#include <linux/platform_data/usb-ehci-orion.h>
> -#include <linux/platform_data/mtd-orion_nand.h>
> -#include <plat/time.h>
> -#include <plat/common.h>
> -#include <plat/addr-map.h>
> -#include "mv78xx0.h"
> -#include "bridge-regs.h"
> -#include "common.h"
> -
> -static int get_tclk(void);
> -
> -/*****************************************************************************
> - * Common bits
> - ****************************************************************************/
> -int mv78xx0_core_index(void)
> -{
> -       u32 extra;
> -
> -       /*
> -        * Read Extra Features register.
> -        */
> -       __asm__("mrc p15, 1, %0, c15, c1, 0" : "=r" (extra));
> -
> -       return !!(extra & 0x00004000);
> -}
> -
> -static int get_hclk(void)
> -{
> -       int hclk;
> -
> -       /*
> -        * HCLK tick rate is configured by DEV_D[7:5] pins.
> -        */
> -       switch ((readl(SAMPLE_AT_RESET_LOW) >> 5) & 7) {
> -       case 0:
> -               hclk = 166666667;
> -               break;
> -       case 1:
> -               hclk = 200000000;
> -               break;
> -       case 2:
> -               hclk = 266666667;
> -               break;
> -       case 3:
> -               hclk = 333333333;
> -               break;
> -       case 4:
> -               hclk = 400000000;
> -               break;
> -       default:
> -               panic("unknown HCLK PLL setting: %.8x\n",
> -                       readl(SAMPLE_AT_RESET_LOW));
> -       }
> -
> -       return hclk;
> -}
> -
> -static void get_pclk_l2clk(int hclk, int core_index, int *pclk, int *l2clk)
> -{
> -       u32 cfg;
> -
> -       /*
> -        * Core #0 PCLK/L2CLK is configured by bits [13:8], core #1
> -        * PCLK/L2CLK by bits [19:14].
> -        */
> -       if (core_index == 0) {
> -               cfg = (readl(SAMPLE_AT_RESET_LOW) >> 8) & 0x3f;
> -       } else {
> -               cfg = (readl(SAMPLE_AT_RESET_LOW) >> 14) & 0x3f;
> -       }
> -
> -       /*
> -        * Bits [11:8] ([17:14] for core #1) configure the PCLK:HCLK
> -        * ratio (1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6).
> -        */
> -       *pclk = ((u64)hclk * (2 + (cfg & 0xf))) >> 1;
> -
> -       /*
> -        * Bits [13:12] ([19:18] for core #1) configure the PCLK:L2CLK
> -        * ratio (1, 2, 3).
> -        */
> -       *l2clk = *pclk / (((cfg >> 4) & 3) + 1);
> -}
> -
> -static int get_tclk(void)
> -{
> -       int tclk_freq;
> -
> -       /*
> -        * TCLK tick rate is configured by DEV_A[2:0] strap pins.
> -        */
> -       switch ((readl(SAMPLE_AT_RESET_HIGH) >> 6) & 7) {
> -       case 1:
> -               tclk_freq = 166666667;
> -               break;
> -       case 3:
> -               tclk_freq = 200000000;
> -               break;
> -       default:
> -               panic("unknown TCLK PLL setting: %.8x\n",
> -                       readl(SAMPLE_AT_RESET_HIGH));
> -       }
> -
> -       return tclk_freq;
> -}
> -
> -
> -/*****************************************************************************
> - * I/O Address Mapping
> - ****************************************************************************/
> -static struct map_desc mv78xx0_io_desc[] __initdata = {
> -       {
> -               .virtual        = (unsigned long) MV78XX0_CORE_REGS_VIRT_BASE,
> -               .pfn            = 0,
> -               .length         = MV78XX0_CORE_REGS_SIZE,
> -               .type           = MT_DEVICE,
> -       }, {
> -               .virtual        = (unsigned long) MV78XX0_REGS_VIRT_BASE,
> -               .pfn            = __phys_to_pfn(MV78XX0_REGS_PHYS_BASE),
> -               .length         = MV78XX0_REGS_SIZE,
> -               .type           = MT_DEVICE,
> -       },
> -};
> -
> -void __init mv78xx0_map_io(void)
> -{
> -       unsigned long phys;
> -
> -       /*
> -        * Map the right set of per-core registers depending on
> -        * which core we are running on.
> -        */
> -       if (mv78xx0_core_index() == 0) {
> -               phys = MV78XX0_CORE0_REGS_PHYS_BASE;
> -       } else {
> -               phys = MV78XX0_CORE1_REGS_PHYS_BASE;
> -       }
> -       mv78xx0_io_desc[0].pfn = __phys_to_pfn(phys);
> -
> -       iotable_init(mv78xx0_io_desc, ARRAY_SIZE(mv78xx0_io_desc));
> -}
> -
> -
> -/*****************************************************************************
> - * CLK tree
> - ****************************************************************************/
> -static struct clk *tclk;
> -
> -static void __init clk_init(void)
> -{
> -       tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 0, get_tclk());
> -
> -       orion_clkdev_init(tclk);
> -}
> -
> -/*****************************************************************************
> - * EHCI
> - ****************************************************************************/
> -void __init mv78xx0_ehci0_init(void)
> -{
> -       orion_ehci_init(USB0_PHYS_BASE, IRQ_MV78XX0_USB_0, EHCI_PHY_NA);
> -}
> -
> -
> -/*****************************************************************************
> - * EHCI1
> - ****************************************************************************/
> -void __init mv78xx0_ehci1_init(void)
> -{
> -       orion_ehci_1_init(USB1_PHYS_BASE, IRQ_MV78XX0_USB_1);
> -}
> -
> -
> -/*****************************************************************************
> - * EHCI2
> - ****************************************************************************/
> -void __init mv78xx0_ehci2_init(void)
> -{
> -       orion_ehci_2_init(USB2_PHYS_BASE, IRQ_MV78XX0_USB_2);
> -}
> -
> -
> -/*****************************************************************************
> - * GE00
> - ****************************************************************************/
> -void __init mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data)
> -{
> -       orion_ge00_init(eth_data,
> -                       GE00_PHYS_BASE, IRQ_MV78XX0_GE00_SUM,
> -                       IRQ_MV78XX0_GE_ERR,
> -                       MV643XX_TX_CSUM_DEFAULT_LIMIT);
> -}
> -
> -
> -/*****************************************************************************
> - * GE01
> - ****************************************************************************/
> -void __init mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data)
> -{
> -       orion_ge01_init(eth_data,
> -                       GE01_PHYS_BASE, IRQ_MV78XX0_GE01_SUM,
> -                       MV643XX_TX_CSUM_DEFAULT_LIMIT);
> -}
> -
> -
> -/*****************************************************************************
> - * GE10
> - ****************************************************************************/
> -void __init mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data)
> -{
> -       u32 dev, rev;
> -
> -       /*
> -        * On the Z0, ge10 and ge11 are internally connected back
> -        * to back, and not brought out.
> -        */
> -       mv78xx0_pcie_id(&dev, &rev);
> -       if (dev == MV78X00_Z0_DEV_ID) {
> -               eth_data->phy_addr = MV643XX_ETH_PHY_NONE;
> -               eth_data->speed = SPEED_1000;
> -               eth_data->duplex = DUPLEX_FULL;
> -       }
> -
> -       orion_ge10_init(eth_data, GE10_PHYS_BASE, IRQ_MV78XX0_GE10_SUM);
> -}
> -
> -
> -/*****************************************************************************
> - * GE11
> - ****************************************************************************/
> -void __init mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data)
> -{
> -       u32 dev, rev;
> -
> -       /*
> -        * On the Z0, ge10 and ge11 are internally connected back
> -        * to back, and not brought out.
> -        */
> -       mv78xx0_pcie_id(&dev, &rev);
> -       if (dev == MV78X00_Z0_DEV_ID) {
> -               eth_data->phy_addr = MV643XX_ETH_PHY_NONE;
> -               eth_data->speed = SPEED_1000;
> -               eth_data->duplex = DUPLEX_FULL;
> -       }
> -
> -       orion_ge11_init(eth_data, GE11_PHYS_BASE, IRQ_MV78XX0_GE11_SUM);
> -}
> -
> -/*****************************************************************************
> - * I2C
> - ****************************************************************************/
> -void __init mv78xx0_i2c_init(void)
> -{
> -       orion_i2c_init(I2C_0_PHYS_BASE, IRQ_MV78XX0_I2C_0, 8);
> -       orion_i2c_1_init(I2C_1_PHYS_BASE, IRQ_MV78XX0_I2C_1, 8);
> -}
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -void __init mv78xx0_sata_init(struct mv_sata_platform_data *sata_data)
> -{
> -       orion_sata_init(sata_data, SATA_PHYS_BASE, IRQ_MV78XX0_SATA);
> -}
> -
> -
> -/*****************************************************************************
> - * UART0
> - ****************************************************************************/
> -void __init mv78xx0_uart0_init(void)
> -{
> -       orion_uart0_init(UART0_VIRT_BASE, UART0_PHYS_BASE,
> -                        IRQ_MV78XX0_UART_0, tclk);
> -}
> -
> -
> -/*****************************************************************************
> - * UART1
> - ****************************************************************************/
> -void __init mv78xx0_uart1_init(void)
> -{
> -       orion_uart1_init(UART1_VIRT_BASE, UART1_PHYS_BASE,
> -                        IRQ_MV78XX0_UART_1, tclk);
> -}
> -
> -
> -/*****************************************************************************
> - * UART2
> - ****************************************************************************/
> -void __init mv78xx0_uart2_init(void)
> -{
> -       orion_uart2_init(UART2_VIRT_BASE, UART2_PHYS_BASE,
> -                        IRQ_MV78XX0_UART_2, tclk);
> -}
> -
> -/*****************************************************************************
> - * UART3
> - ****************************************************************************/
> -void __init mv78xx0_uart3_init(void)
> -{
> -       orion_uart3_init(UART3_VIRT_BASE, UART3_PHYS_BASE,
> -                        IRQ_MV78XX0_UART_3, tclk);
> -}
> -
> -/*****************************************************************************
> - * Time handling
> - ****************************************************************************/
> -void __init mv78xx0_init_early(void)
> -{
> -       orion_time_set_base(TIMER_VIRT_BASE);
> -       if (mv78xx0_core_index() == 0)
> -               mvebu_mbus_init("marvell,mv78xx0-mbus",
> -                               BRIDGE_WINS_CPU0_BASE, BRIDGE_WINS_SZ,
> -                               DDR_WINDOW_CPU0_BASE, DDR_WINDOW_CPU_SZ);
> -       else
> -               mvebu_mbus_init("marvell,mv78xx0-mbus",
> -                               BRIDGE_WINS_CPU1_BASE, BRIDGE_WINS_SZ,
> -                               DDR_WINDOW_CPU1_BASE, DDR_WINDOW_CPU_SZ);
> -}
> -
> -void __ref mv78xx0_timer_init(void)
> -{
> -       orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
> -                       IRQ_MV78XX0_TIMER_1, get_tclk());
> -}
> -
> -/****************************************************************************
> -* XOR engine
> -****************************************************************************/
> -void __init mv78xx0_xor_init(void)
> -{
> -       orion_xor0_init(XOR_PHYS_BASE,
> -               XOR_PHYS_BASE + 0x200,
> -               IRQ_MV78XX0_XOR_0, IRQ_MV78XX0_XOR_1);
> -}
> -
> -/****************************************************************************
> - * Cryptographic Engines and Security Accelerator (CESA)
> -****************************************************************************/
> -void __init mv78xx0_crypto_init(void)
> -{
> -       mvebu_mbus_add_window_by_id(MV78XX0_MBUS_SRAM_TARGET,
> -                               MV78XX0_MBUS_SRAM_ATTR,
> -                               MV78XX0_SRAM_PHYS_BASE,
> -                       MV78XX0_SRAM_SIZE);
> -       orion_crypto_init(CRYPTO_PHYS_BASE, MV78XX0_SRAM_PHYS_BASE,
> -               SZ_8K, IRQ_MV78XX0_CRYPTO);
> -}
> -
> -
> -/*****************************************************************************
> - * General
> - ****************************************************************************/
> -static char * __init mv78xx0_id(void)
> -{
> -       u32 dev, rev;
> -
> -       mv78xx0_pcie_id(&dev, &rev);
> -
> -       if (dev == MV78X00_Z0_DEV_ID) {
> -               if (rev == MV78X00_REV_Z0)
> -                       return "MV78X00-Z0";
> -               else
> -                       return "MV78X00-Rev-Unsupported";
> -       } else if (dev == MV78100_DEV_ID) {
> -               if (rev == MV78100_REV_A0)
> -                       return "MV78100-A0";
> -               else if (rev == MV78100_REV_A1)
> -                       return "MV78100-A1";
> -               else
> -                       return "MV78100-Rev-Unsupported";
> -       } else if (dev == MV78200_DEV_ID) {
> -               if (rev == MV78100_REV_A0)
> -                       return "MV78200-A0";
> -               else
> -                       return "MV78200-Rev-Unsupported";
> -       } else {
> -               return "Device-Unknown";
> -       }
> -}
> -
> -static int __init is_l2_writethrough(void)
> -{
> -       return !!(readl(CPU_CONTROL) & L2_WRITETHROUGH);
> -}
> -
> -void __init mv78xx0_init(void)
> -{
> -       int core_index;
> -       int hclk;
> -       int pclk;
> -       int l2clk;
> -
> -       core_index = mv78xx0_core_index();
> -       hclk = get_hclk();
> -       get_pclk_l2clk(hclk, core_index, &pclk, &l2clk);
> -
> -       printk(KERN_INFO "%s ", mv78xx0_id());
> -       printk("core #%d, ", core_index);
> -       printk("PCLK = %dMHz, ", (pclk + 499999) / 1000000);
> -       printk("L2 = %dMHz, ", (l2clk + 499999) / 1000000);
> -       printk("HCLK = %dMHz, ", (hclk + 499999) / 1000000);
> -       printk("TCLK = %dMHz\n", (get_tclk() + 499999) / 1000000);
> -
> -       if (IS_ENABLED(CONFIG_CACHE_FEROCEON_L2))
> -               feroceon_l2_init(is_l2_writethrough());
> -
> -       /* Setup root of clk tree */
> -       clk_init();
> -}
> -
> -void mv78xx0_restart(enum reboot_mode mode, const char *cmd)
> -{
> -       /*
> -        * Enable soft reset to assert RSTOUTn.
> -        */
> -       writel(SOFT_RESET_OUT_EN, RSTOUTn_MASK);
> -
> -       /*
> -        * Assert soft reset.
> -        */
> -       writel(SOFT_RESET, SYSTEM_SOFT_RESET);
> -
> -       while (1)
> -               ;
> -}
> diff --git a/arch/arm/mach-mv78xx0/common.h b/arch/arm/mach-mv78xx0/common.h
> deleted file mode 100644
> index 9f1dfd595003..000000000000
> --- a/arch/arm/mach-mv78xx0/common.h
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * arch/arm/mach-mv78xx0/common.h
> - *
> - * Core functions for Marvell MV78xx0 SoCs
> - */
> -
> -#ifndef __ARCH_MV78XX0_COMMON_H
> -#define __ARCH_MV78XX0_COMMON_H
> -
> -#include <linux/reboot.h>
> -
> -struct mv643xx_eth_platform_data;
> -struct mv_sata_platform_data;
> -
> -/*
> - * Basic MV78xx0 init functions used early by machine-setup.
> - */
> -int mv78xx0_core_index(void);
> -void mv78xx0_map_io(void);
> -void mv78xx0_init(void);
> -void mv78xx0_init_early(void);
> -void mv78xx0_init_irq(void);
> -
> -void mv78xx0_setup_cpu_mbus(void);
> -void mv78xx0_setup_pcie_io_win(int window, u32 base, u32 size,
> -                              int maj, int min);
> -void mv78xx0_setup_pcie_mem_win(int window, u32 base, u32 size,
> -                               int maj, int min);
> -
> -void mv78xx0_pcie_id(u32 *dev, u32 *rev);
> -
> -void mv78xx0_ehci0_init(void);
> -void mv78xx0_ehci1_init(void);
> -void mv78xx0_ehci2_init(void);
> -void mv78xx0_ge00_init(struct mv643xx_eth_platform_data *eth_data);
> -void mv78xx0_ge01_init(struct mv643xx_eth_platform_data *eth_data);
> -void mv78xx0_ge10_init(struct mv643xx_eth_platform_data *eth_data);
> -void mv78xx0_ge11_init(struct mv643xx_eth_platform_data *eth_data);
> -void mv78xx0_pcie_init(int init_port0, int init_port1);
> -void mv78xx0_sata_init(struct mv_sata_platform_data *sata_data);
> -void mv78xx0_uart0_init(void);
> -void mv78xx0_uart1_init(void);
> -void mv78xx0_uart2_init(void);
> -void mv78xx0_uart3_init(void);
> -void mv78xx0_xor_init(void);
> -void mv78xx0_crypto_init(void);
> -void mv78xx0_i2c_init(void);
> -void mv78xx0_restart(enum reboot_mode, const char *);
> -
> -extern void mv78xx0_timer_init(void);
> -
> -
> -#endif
> diff --git a/arch/arm/mach-mv78xx0/irq.c b/arch/arm/mach-mv78xx0/irq.c
> deleted file mode 100644
> index 6e42f6446637..000000000000
> --- a/arch/arm/mach-mv78xx0/irq.c
> +++ /dev/null
> @@ -1,69 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-mv78xx0/irq.c
> - *
> - * MV78xx0 IRQ handling.
> - */
> -#include <linux/gpio/consumer.h>
> -#include <linux/kernel.h>
> -#include <linux/irq.h>
> -#include <linux/io.h>
> -#include <asm/exception.h>
> -#include <plat/orion-gpio.h>
> -#include <plat/irq.h>
> -#include "bridge-regs.h"
> -#include "common.h"
> -
> -static int __initdata gpio0_irqs[4] = {
> -       IRQ_MV78XX0_GPIO_0_7,
> -       IRQ_MV78XX0_GPIO_8_15,
> -       IRQ_MV78XX0_GPIO_16_23,
> -       IRQ_MV78XX0_GPIO_24_31,
> -};
> -
> -static void __iomem *mv78xx0_irq_base = IRQ_VIRT_BASE;
> -
> -static asmlinkage void
> -__exception_irq_entry mv78xx0_legacy_handle_irq(struct pt_regs *regs)
> -{
> -       u32 stat;
> -
> -       stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_LOW_OFF);
> -       stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_LOW_OFF);
> -       if (stat) {
> -               unsigned int hwirq = __fls(stat);
> -               handle_IRQ(hwirq, regs);
> -               return;
> -       }
> -       stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_HIGH_OFF);
> -       stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_HIGH_OFF);
> -       if (stat) {
> -               unsigned int hwirq = 32 + __fls(stat);
> -               handle_IRQ(hwirq, regs);
> -               return;
> -       }
> -       stat = readl_relaxed(mv78xx0_irq_base + IRQ_CAUSE_ERR_OFF);
> -       stat &= readl_relaxed(mv78xx0_irq_base + IRQ_MASK_ERR_OFF);
> -       if (stat) {
> -               unsigned int hwirq = 64 + __fls(stat);
> -               handle_IRQ(hwirq, regs);
> -               return;
> -       }
> -}
> -
> -void __init mv78xx0_init_irq(void)
> -{
> -       orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
> -       orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
> -       orion_irq_init(64, IRQ_VIRT_BASE + IRQ_MASK_ERR_OFF);
> -
> -       set_handle_irq(mv78xx0_legacy_handle_irq);
> -
> -       /*
> -        * Initialize gpiolib for GPIOs 0-31.  (The GPIO interrupt mask
> -        * registers for core #1 are at an offset of 0x18 from those of
> -        * core #0.)
> -        */
> -       orion_gpio_init(0, 32, GPIO_VIRT_BASE, mv78xx0_core_index() ? 0x18 : 0,
> -                       IRQ_MV78XX0_GPIO_START, gpio0_irqs);
> -}
> diff --git a/arch/arm/mach-mv78xx0/irqs.h b/arch/arm/mach-mv78xx0/irqs.h
> deleted file mode 100644
> index 12b357d383d8..000000000000
> --- a/arch/arm/mach-mv78xx0/irqs.h
> +++ /dev/null
> @@ -1,87 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/* IRQ definitions for Marvell MV78xx0 SoCs */
> -
> -#ifndef __ASM_ARCH_IRQS_H
> -#define __ASM_ARCH_IRQS_H
> -
> -/*
> - * MV78xx0 Low Interrupt Controller
> - */
> -#define IRQ_MV78XX0_ERR                0
> -#define IRQ_MV78XX0_SPI                1
> -#define IRQ_MV78XX0_I2C_0      2
> -#define IRQ_MV78XX0_I2C_1      3
> -#define IRQ_MV78XX0_IDMA_0     4
> -#define IRQ_MV78XX0_IDMA_1     5
> -#define IRQ_MV78XX0_IDMA_2     6
> -#define IRQ_MV78XX0_IDMA_3     7
> -#define IRQ_MV78XX0_TIMER_0    8
> -#define IRQ_MV78XX0_TIMER_1    9
> -#define IRQ_MV78XX0_TIMER_2    10
> -#define IRQ_MV78XX0_TIMER_3    11
> -#define IRQ_MV78XX0_UART_0     12
> -#define IRQ_MV78XX0_UART_1     13
> -#define IRQ_MV78XX0_UART_2     14
> -#define IRQ_MV78XX0_UART_3     15
> -#define IRQ_MV78XX0_USB_0      16
> -#define IRQ_MV78XX0_USB_1      17
> -#define IRQ_MV78XX0_USB_2      18
> -#define IRQ_MV78XX0_CRYPTO     19
> -#define IRQ_MV78XX0_SDIO_0     20
> -#define IRQ_MV78XX0_SDIO_1     21
> -#define IRQ_MV78XX0_XOR_0      22
> -#define IRQ_MV78XX0_XOR_1      23
> -#define IRQ_MV78XX0_I2S_0      24
> -#define IRQ_MV78XX0_I2S_1      25
> -#define IRQ_MV78XX0_SATA       26
> -#define IRQ_MV78XX0_TDMI       27
> -
> -/*
> - * MV78xx0 High Interrupt Controller
> - */
> -#define IRQ_MV78XX0_PCIE_00    32
> -#define IRQ_MV78XX0_PCIE_01    33
> -#define IRQ_MV78XX0_PCIE_02    34
> -#define IRQ_MV78XX0_PCIE_03    35
> -#define IRQ_MV78XX0_PCIE_10    36
> -#define IRQ_MV78XX0_PCIE_11    37
> -#define IRQ_MV78XX0_PCIE_12    38
> -#define IRQ_MV78XX0_PCIE_13    39
> -#define IRQ_MV78XX0_GE00_SUM   40
> -#define IRQ_MV78XX0_GE00_RX    41
> -#define IRQ_MV78XX0_GE00_TX    42
> -#define IRQ_MV78XX0_GE00_MISC  43
> -#define IRQ_MV78XX0_GE01_SUM   44
> -#define IRQ_MV78XX0_GE01_RX    45
> -#define IRQ_MV78XX0_GE01_TX    46
> -#define IRQ_MV78XX0_GE01_MISC  47
> -#define IRQ_MV78XX0_GE10_SUM   48
> -#define IRQ_MV78XX0_GE10_RX    49
> -#define IRQ_MV78XX0_GE10_TX    50
> -#define IRQ_MV78XX0_GE10_MISC  51
> -#define IRQ_MV78XX0_GE11_SUM   52
> -#define IRQ_MV78XX0_GE11_RX    53
> -#define IRQ_MV78XX0_GE11_TX    54
> -#define IRQ_MV78XX0_GE11_MISC  55
> -#define IRQ_MV78XX0_GPIO_0_7   56
> -#define IRQ_MV78XX0_GPIO_8_15  57
> -#define IRQ_MV78XX0_GPIO_16_23 58
> -#define IRQ_MV78XX0_GPIO_24_31 59
> -#define IRQ_MV78XX0_DB_IN      60
> -#define IRQ_MV78XX0_DB_OUT     61
> -
> -/*
> - * MV78xx0 Error Interrupt Controller
> - */
> -#define IRQ_MV78XX0_GE_ERR     70
> -
> -/*
> - * MV78XX0 General Purpose Pins
> - */
> -#define IRQ_MV78XX0_GPIO_START 96
> -#define NR_GPIO_IRQS           32
> -
> -#define MV78XX0_NR_IRQS                (IRQ_MV78XX0_GPIO_START + NR_GPIO_IRQS)
> -
> -
> -#endif
> diff --git a/arch/arm/mach-mv78xx0/mpp.c b/arch/arm/mach-mv78xx0/mpp.c
> deleted file mode 100644
> index 32bf590d79fe..000000000000
> --- a/arch/arm/mach-mv78xx0/mpp.c
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-mv78x00/mpp.c
> - *
> - * MPP functions for Marvell MV78x00 SoCs
> - */
> -#include <linux/gpio/consumer.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/io.h>
> -#include <plat/mpp.h>
> -#include "mv78xx0.h"
> -#include "common.h"
> -#include "mpp.h"
> -
> -static unsigned int __init mv78xx0_variant(void)
> -{
> -       u32 dev, rev;
> -
> -       mv78xx0_pcie_id(&dev, &rev);
> -
> -       if (dev == MV78100_DEV_ID && rev >= MV78100_REV_A0)
> -               return MPP_78100_A0_MASK;
> -
> -       printk(KERN_ERR "MPP setup: unknown mv78x00 variant "
> -                       "(dev %#x rev %#x)\n", dev, rev);
> -       return 0;
> -}
> -
> -void __init mv78xx0_mpp_conf(unsigned int *mpp_list)
> -{
> -       orion_mpp_conf(mpp_list, mv78xx0_variant(),
> -                      MPP_MAX, DEV_BUS_VIRT_BASE);
> -}
> diff --git a/arch/arm/mach-mv78xx0/mpp.h b/arch/arm/mach-mv78xx0/mpp.h
> deleted file mode 100644
> index 47db52f45546..000000000000
> --- a/arch/arm/mach-mv78xx0/mpp.h
> +++ /dev/null
> @@ -1,337 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * linux/arch/arm/mach-mv78xx0/mpp.h -- Multi Purpose Pins
> - *
> - * sebastien requiem <sebastien@requiem.fr>
> - */
> -
> -#ifndef __MV78X00_MPP_H
> -#define __MV78X00_MPP_H
> -
> -#define MPP(_num, _sel, _in, _out, _78100_A0) (\
> -    /* MPP number */        ((_num) & 0xff) | \
> -    /* MPP select value */        (((_sel) & 0xf) << 8) | \
> -    /* may be input signal */    ((!!(_in)) << 12) | \
> -    /* may be output signal */    ((!!(_out)) << 13) | \
> -    /* available on A0 */    ((!!(_78100_A0)) << 14))
> -
> -                /*   num sel  i  o  78100_A0  */
> -
> -#define MPP_78100_A0_MASK    MPP(0, 0x0, 0, 0, 1)
> -
> -#define MPP0_GPIO        MPP(0, 0x0, 1, 1, 1)
> -#define MPP0_GE0_COL        MPP(0, 0x1, 0, 0, 1)
> -#define MPP0_GE1_TXCLK        MPP(0, 0x2, 0, 0, 1)
> -#define MPP0_UNUSED        MPP(0, 0x3, 0, 0, 1)
> -
> -#define MPP1_GPIO        MPP(1, 0x0, 1, 1, 1)
> -#define MPP1_GE0_RXERR        MPP(1, 0x1, 0, 0, 1)
> -#define MPP1_GE1_TXCTL        MPP(1, 0x2, 0, 0, 1)
> -#define MPP1_UNUSED        MPP(1, 0x3, 0, 0, 1)
> -
> -#define MPP2_GPIO        MPP(2, 0x0, 1, 1, 1)
> -#define MPP2_GE0_CRS        MPP(2, 0x1, 0, 0, 1)
> -#define MPP2_GE1_RXCTL        MPP(2, 0x2, 0, 0, 1)
> -#define MPP2_UNUSED        MPP(2, 0x3, 0, 0, 1)
> -
> -#define MPP3_GPIO        MPP(3, 0x0, 1, 1, 1)
> -#define MPP3_GE0_TXERR        MPP(3, 0x1, 0, 0, 1)
> -#define MPP3_GE1_RXCLK        MPP(3, 0x2, 0, 0, 1)
> -#define MPP3_UNUSED        MPP(3, 0x3, 0, 0, 1)
> -
> -#define MPP4_GPIO        MPP(4, 0x0, 1, 1, 1)
> -#define MPP4_GE0_TXD4        MPP(4, 0x1, 0, 0, 1)
> -#define MPP4_GE1_TXD0        MPP(4, 0x2, 0, 0, 1)
> -#define MPP4_UNUSED        MPP(4, 0x3, 0, 0, 1)
> -
> -#define MPP5_GPIO        MPP(5, 0x0, 1, 1, 1)
> -#define MPP5_GE0_TXD5        MPP(5, 0x1, 0, 0, 1)
> -#define MPP5_GE1_TXD1        MPP(5, 0x2, 0, 0, 1)
> -#define MPP5_UNUSED        MPP(5, 0x3, 0, 0, 1)
> -
> -#define MPP6_GPIO        MPP(6, 0x0, 1, 1, 1)
> -#define MPP6_GE0_TXD6        MPP(6, 0x1, 0, 0, 1)
> -#define MPP6_GE1_TXD2        MPP(6, 0x2, 0, 0, 1)
> -#define MPP6_UNUSED        MPP(6, 0x3, 0, 0, 1)
> -
> -#define MPP7_GPIO        MPP(7, 0x0, 1, 1, 1)
> -#define MPP7_GE0_TXD7        MPP(7, 0x1, 0, 0, 1)
> -#define MPP7_GE1_TXD3        MPP(7, 0x2, 0, 0, 1)
> -#define MPP7_UNUSED        MPP(7, 0x3, 0, 0, 1)
> -
> -#define MPP8_GPIO        MPP(8, 0x0, 1, 1, 1)
> -#define MPP8_GE0_RXD4        MPP(8, 0x1, 0, 0, 1)
> -#define MPP8_GE1_RXD0        MPP(8, 0x2, 0, 0, 1)
> -#define MPP8_UNUSED        MPP(8, 0x3, 0, 0, 1)
> -
> -#define MPP9_GPIO        MPP(9, 0x0, 1, 1, 1)
> -#define MPP9_GE0_RXD5        MPP(9, 0x1, 0, 0, 1)
> -#define MPP9_GE1_RXD1        MPP(9, 0x2, 0, 0, 1)
> -#define MPP9_UNUSED        MPP(9, 0x3, 0, 0, 1)
> -
> -#define MPP10_GPIO        MPP(10, 0x0, 1, 1, 1)
> -#define MPP10_GE0_RXD6        MPP(10, 0x1, 0, 0, 1)
> -#define MPP10_GE1_RXD2        MPP(10, 0x2, 0, 0, 1)
> -#define MPP10_UNUSED        MPP(10, 0x3, 0, 0, 1)
> -
> -#define MPP11_GPIO        MPP(11, 0x0, 1, 1, 1)
> -#define MPP11_GE0_RXD7        MPP(11, 0x1, 0, 0, 1)
> -#define MPP11_GE1_RXD3        MPP(11, 0x2, 0, 0, 1)
> -#define MPP11_UNUSED        MPP(11, 0x3, 0, 0, 1)
> -
> -#define MPP12_GPIO        MPP(12, 0x0, 1, 1, 1)
> -#define MPP12_M_BB        MPP(12, 0x3, 0, 0, 1)
> -#define MPP12_UA0_CTSn        MPP(12, 0x4, 0, 0, 1)
> -#define MPP12_NAND_FLASH_REn0    MPP(12, 0x5, 0, 0, 1)
> -#define MPP12_TDM0_SCSn        MPP(12, 0X6, 0, 0, 1)
> -#define MPP12_UNUSED        MPP(12, 0x1, 0, 0, 1)
> -
> -#define MPP13_GPIO        MPP(13, 0x0, 1, 1, 1)
> -#define MPP13_SYSRST_OUTn    MPP(13, 0x3, 0, 0, 1)
> -#define MPP13_UA0_RTSn        MPP(13, 0x4, 0, 0, 1)
> -#define MPP13_NAN_FLASH_WEn0    MPP(13, 0x5, 0, 0, 1)
> -#define MPP13_TDM_SCLK        MPP(13, 0x6, 0, 0, 1)
> -#define MPP13_UNUSED        MPP(13, 0x1, 0, 0, 1)
> -
> -#define MPP14_GPIO        MPP(14, 0x0, 1, 1, 1)
> -#define MPP14_SATA1_ACTn    MPP(14, 0x3, 0, 0, 1)
> -#define MPP14_UA1_CTSn        MPP(14, 0x4, 0, 0, 1)
> -#define MPP14_NAND_FLASH_REn1    MPP(14, 0x5, 0, 0, 1)
> -#define MPP14_TDM_SMOSI        MPP(14, 0x6, 0, 0, 1)
> -#define MPP14_UNUSED        MPP(14, 0x1, 0, 0, 1)
> -
> -#define MPP15_GPIO        MPP(15, 0x0, 1, 1, 1)
> -#define MPP15_SATA0_ACTn    MPP(15, 0x3, 0, 0, 1)
> -#define MPP15_UA1_RTSn        MPP(15, 0x4, 0, 0, 1)
> -#define MPP15_NAND_FLASH_WEn1    MPP(15, 0x5, 0, 0, 1)
> -#define MPP15_TDM_SMISO        MPP(15, 0x6, 0, 0, 1)
> -#define MPP15_UNUSED        MPP(15, 0x1, 0, 0, 1)
> -
> -#define MPP16_GPIO        MPP(16, 0x0, 1, 1, 1)
> -#define MPP16_SATA1_PRESENTn    MPP(16, 0x3, 0, 0, 1)
> -#define MPP16_UA2_TXD        MPP(16, 0x4, 0, 0, 1)
> -#define MPP16_NAND_FLASH_REn3    MPP(16, 0x5, 0, 0, 1)
> -#define MPP16_TDM_INTn        MPP(16, 0x6, 0, 0, 1)
> -#define MPP16_UNUSED        MPP(16, 0x1, 0, 0, 1)
> -
> -
> -#define MPP17_GPIO        MPP(17, 0x0, 1, 1, 1)
> -#define MPP17_SATA0_PRESENTn    MPP(17, 0x3, 0, 0, 1)
> -#define MPP17_UA2_RXD        MPP(17, 0x4, 0, 0, 1)
> -#define MPP17_NAND_FLASH_WEn3    MPP(17, 0x5, 0, 0, 1)
> -#define MPP17_TDM_RSTn        MPP(17, 0x6, 0, 0, 1)
> -#define MPP17_UNUSED        MPP(17, 0x1, 0, 0, 1)
> -
> -
> -#define MPP18_GPIO        MPP(18, 0x0, 1, 1, 1)
> -#define MPP18_UA0_CTSn        MPP(18, 0x4, 0, 0, 1)
> -#define MPP18_BOOT_FLASH_REn    MPP(18, 0x5, 0, 0, 1)
> -#define MPP18_UNUSED        MPP(18, 0x1, 0, 0, 1)
> -
> -
> -
> -#define MPP19_GPIO        MPP(19, 0x0, 1, 1, 1)
> -#define MPP19_UA0_CTSn        MPP(19, 0x4, 0, 0, 1)
> -#define MPP19_BOOT_FLASH_WEn    MPP(19, 0x5, 0, 0, 1)
> -#define MPP19_UNUSED        MPP(19, 0x1, 0, 0, 1)
> -
> -
> -#define MPP20_GPIO        MPP(20, 0x0, 1, 1, 1)
> -#define MPP20_UA1_CTSs        MPP(20, 0x4, 0, 0, 1)
> -#define MPP20_TDM_PCLK        MPP(20, 0x6, 0, 0, 0)
> -#define MPP20_UNUSED        MPP(20, 0x1, 0, 0, 1)
> -
> -
> -
> -#define MPP21_GPIO        MPP(21, 0x0, 1, 1, 1)
> -#define MPP21_UA1_CTSs        MPP(21, 0x4, 0, 0, 1)
> -#define MPP21_TDM_FSYNC        MPP(21, 0x6, 0, 0, 0)
> -#define MPP21_UNUSED        MPP(21, 0x1, 0, 0, 1)
> -
> -
> -
> -#define MPP22_GPIO        MPP(22, 0x0, 1, 1, 1)
> -#define MPP22_UA3_TDX        MPP(22, 0x4, 0, 0, 1)
> -#define MPP22_NAND_FLASH_REn2    MPP(22, 0x5, 0, 0, 1)
> -#define MPP22_TDM_DRX        MPP(22, 0x6, 0, 0, 1)
> -#define MPP22_UNUSED        MPP(22, 0x1, 0, 0, 1)
> -
> -
> -
> -#define MPP23_GPIO        MPP(23, 0x0, 1, 1, 1)
> -#define MPP23_UA3_RDX        MPP(23, 0x4, 0, 0, 1)
> -#define MPP23_NAND_FLASH_WEn2    MPP(23, 0x5, 0, 0, 1)
> -#define MPP23_TDM_DTX        MPP(23, 0x6, 0, 0, 1)
> -#define MPP23_UNUSED        MPP(23, 0x1, 0, 0, 1)
> -
> -
> -#define MPP24_GPIO        MPP(24, 0x0, 1, 1, 1)
> -#define MPP24_UA2_TXD        MPP(24, 0x4, 0, 0, 1)
> -#define MPP24_TDM_INTn        MPP(24, 0x6, 0, 0, 1)
> -#define MPP24_UNUSED        MPP(24, 0x1, 0, 0, 1)
> -
> -
> -#define MPP25_GPIO        MPP(25, 0x0, 1, 1, 1)
> -#define MPP25_UA2_RXD        MPP(25, 0x4, 0, 0, 1)
> -#define MPP25_TDM_RSTn        MPP(25, 0x6, 0, 0, 1)
> -#define MPP25_UNUSED        MPP(25, 0x1, 0, 0, 1)
> -
> -
> -#define MPP26_GPIO        MPP(26, 0x0, 1, 1, 1)
> -#define MPP26_UA2_CTSn        MPP(26, 0x4, 0, 0, 1)
> -#define MPP26_TDM_PCLK        MPP(26, 0x6, 0, 0, 1)
> -#define MPP26_UNUSED        MPP(26, 0x1, 0, 0, 1)
> -
> -
> -#define MPP27_GPIO        MPP(27, 0x0, 1, 1, 1)
> -#define MPP27_UA2_RTSn        MPP(27, 0x4, 0, 0, 1)
> -#define MPP27_TDM_FSYNC        MPP(27, 0x6, 0, 0, 1)
> -#define MPP27_UNUSED        MPP(27, 0x1, 0, 0, 1)
> -
> -
> -#define MPP28_GPIO        MPP(28, 0x0, 1, 1, 1)
> -#define MPP28_UA3_TXD        MPP(28, 0x4, 0, 0, 1)
> -#define MPP28_TDM_DRX        MPP(28, 0x6, 0, 0, 1)
> -#define MPP28_UNUSED        MPP(28, 0x1, 0, 0, 1)
> -
> -#define MPP29_GPIO        MPP(29, 0x0, 1, 1, 1)
> -#define MPP29_UA3_RXD        MPP(29, 0x4, 0, 0, 1)
> -#define MPP29_SYSRST_OUTn    MPP(29, 0x5, 0, 0, 1)
> -#define MPP29_TDM_DTX        MPP(29, 0x6, 0, 0, 1)
> -#define MPP29_UNUSED        MPP(29, 0x1, 0, 0, 1)
> -
> -#define MPP30_GPIO        MPP(30, 0x0, 1, 1, 1)
> -#define MPP30_UA3_CTSn        MPP(30, 0x4, 0, 0, 1)
> -#define MPP30_UNUSED        MPP(30, 0x1, 0, 0, 1)
> -
> -#define MPP31_GPIO        MPP(31, 0x0, 1, 1, 1)
> -#define MPP31_UA3_RTSn        MPP(31, 0x4, 0, 0, 1)
> -#define MPP31_TDM1_SCSn        MPP(31, 0x6, 0, 0, 1)
> -#define MPP31_UNUSED        MPP(31, 0x1, 0, 0, 1)
> -
> -
> -#define MPP32_GPIO        MPP(32, 0x1, 1, 1, 1)
> -#define MPP32_UA3_TDX        MPP(32, 0x4, 0, 0, 1)
> -#define MPP32_SYSRST_OUTn    MPP(32, 0x5, 0, 0, 1)
> -#define MPP32_TDM0_RXQ        MPP(32, 0x6, 0, 0, 1)
> -#define MPP32_UNUSED        MPP(32, 0x3, 0, 0, 1)
> -
> -
> -#define MPP33_GPIO        MPP(33, 0x1, 1, 1, 1)
> -#define MPP33_UA3_RDX        MPP(33, 0x4, 0, 0, 1)
> -#define MPP33_TDM0_TXQ        MPP(33, 0x6, 0, 0, 1)
> -#define MPP33_UNUSED        MPP(33, 0x3, 0, 0, 1)
> -
> -
> -
> -#define MPP34_GPIO        MPP(34, 0x1, 1, 1, 1)
> -#define MPP34_UA2_TDX        MPP(34, 0x4, 0, 0, 1)
> -#define MPP34_TDM1_RXQ        MPP(34, 0x6, 0, 0, 1)
> -#define MPP34_UNUSED        MPP(34, 0x3, 0, 0, 1)
> -
> -
> -
> -#define MPP35_GPIO        MPP(35, 0x1, 1, 1, 1)
> -#define MPP35_UA2_RDX        MPP(35, 0x4, 0, 0, 1)
> -#define MPP35_TDM1_TXQ        MPP(35, 0x6, 0, 0, 1)
> -#define MPP35_UNUSED        MPP(35, 0x3, 0, 0, 1)
> -
> -#define MPP36_GPIO        MPP(36, 0x1, 1, 1, 1)
> -#define MPP36_UA0_CTSn        MPP(36, 0x2, 0, 0, 1)
> -#define MPP36_UA2_TDX        MPP(36, 0x4, 0, 0, 1)
> -#define MPP36_TDM0_SCSn        MPP(36, 0x6, 0, 0, 1)
> -#define MPP36_UNUSED        MPP(36, 0x3, 0, 0, 1)
> -
> -
> -#define MPP37_GPIO        MPP(37, 0x1, 1, 1, 1)
> -#define MPP37_UA0_RTSn        MPP(37, 0x2, 0, 0, 1)
> -#define MPP37_UA2_RXD        MPP(37, 0x4, 0, 0, 1)
> -#define MPP37_SYSRST_OUTn    MPP(37, 0x5, 0, 0, 1)
> -#define MPP37_TDM_SCLK        MPP(37, 0x6, 0, 0, 1)
> -#define MPP37_UNUSED        MPP(37, 0x3, 0, 0, 1)
> -
> -
> -
> -
> -#define MPP38_GPIO        MPP(38, 0x1, 1, 1, 1)
> -#define MPP38_UA1_CTSn        MPP(38, 0x2, 0, 0, 1)
> -#define MPP38_UA3_TXD        MPP(38, 0x4, 0, 0, 1)
> -#define MPP38_SYSRST_OUTn    MPP(38, 0x5, 0, 0, 1)
> -#define MPP38_TDM_SMOSI        MPP(38, 0x6, 0, 0, 1)
> -#define MPP38_UNUSED        MPP(38, 0x3, 0, 0, 1)
> -
> -
> -
> -
> -#define MPP39_GPIO        MPP(39, 0x1, 1, 1, 1)
> -#define MPP39_UA1_RTSn        MPP(39, 0x2, 0, 0, 1)
> -#define MPP39_UA3_RXD        MPP(39, 0x4, 0, 0, 1)
> -#define MPP39_SYSRST_OUTn    MPP(39, 0x5, 0, 0, 1)
> -#define MPP39_TDM_SMISO        MPP(39, 0x6, 0, 0, 1)
> -#define MPP39_UNUSED        MPP(39, 0x3, 0, 0, 1)
> -
> -
> -
> -#define MPP40_GPIO        MPP(40, 0x1, 1, 1, 1)
> -#define MPP40_TDM_INTn        MPP(40, 0x6, 0, 0, 1)
> -#define MPP40_UNUSED        MPP(40, 0x0, 0, 0, 1)
> -
> -
> -
> -#define MPP41_GPIO        MPP(41, 0x1, 1, 1, 1)
> -#define MPP41_TDM_RSTn        MPP(41, 0x6, 0, 0, 1)
> -#define MPP41_UNUSED        MPP(41, 0x0, 0, 0, 1)
> -
> -
> -
> -#define MPP42_GPIO        MPP(42, 0x1, 1, 1, 1)
> -#define MPP42_TDM_PCLK        MPP(42, 0x6, 0, 0, 1)
> -#define MPP42_UNUSED        MPP(42, 0x0, 0, 0, 1)
> -
> -
> -
> -#define MPP43_GPIO        MPP(43, 0x1, 1, 1, 1)
> -#define MPP43_TDM_FSYNC        MPP(43, 0x6, 0, 0, 1)
> -#define MPP43_UNUSED        MPP(43, 0x0, 0, 0, 1)
> -
> -
> -
> -#define MPP44_GPIO        MPP(44, 0x1, 1, 1, 1)
> -#define MPP44_TDM_DRX        MPP(44, 0x6, 0, 0, 1)
> -#define MPP44_UNUSED        MPP(44, 0x0, 0, 0, 1)
> -
> -
> -
> -#define MPP45_GPIO        MPP(45, 0x1, 1, 1, 1)
> -#define MPP45_SATA0_ACTn    MPP(45, 0x3, 0, 0, 1)
> -#define MPP45_TDM_DRX        MPP(45, 0x6, 0, 0, 1)
> -#define MPP45_UNUSED        MPP(45, 0x0, 0, 0, 1)
> -
> -
> -#define MPP46_GPIO        MPP(46, 0x1, 1, 1, 1)
> -#define MPP46_TDM_SCSn        MPP(46, 0x6, 0, 0, 1)
> -#define MPP46_UNUSED        MPP(46, 0x0, 0, 0, 1)
> -
> -
> -#define MPP47_GPIO        MPP(47, 0x1, 1, 1, 1)
> -#define MPP47_UNUSED        MPP(47, 0x0, 0, 0, 1)
> -
> -
> -
> -#define MPP48_GPIO        MPP(48, 0x1, 1, 1, 1)
> -#define MPP48_SATA1_ACTn    MPP(48, 0x3, 0, 0, 1)
> -#define MPP48_UNUSED        MPP(48, 0x2, 0, 0, 1)
> -
> -
> -
> -#define MPP49_GPIO        MPP(49, 0x1, 1, 1, 1)
> -#define MPP49_SATA0_ACTn    MPP(49, 0x3, 0, 0, 1)
> -#define MPP49_M_BB        MPP(49, 0x4, 0, 0, 1)
> -#define MPP49_UNUSED        MPP(49, 0x2, 0, 0, 1)
> -
> -
> -#define MPP_MAX            49
> -
> -void mv78xx0_mpp_conf(unsigned int *mpp_list);
> -
> -#endif
> diff --git a/arch/arm/mach-mv78xx0/mv78xx0.h b/arch/arm/mach-mv78xx0/mv78xx0.h
> deleted file mode 100644
> index 88efb1e44142..000000000000
> --- a/arch/arm/mach-mv78xx0/mv78xx0.h
> +++ /dev/null
> @@ -1,134 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Generic definitions for Marvell MV78xx0 SoC flavors:
> - *  MV781x0 and MV782x0.
> - */
> -
> -#ifndef __ASM_ARCH_MV78XX0_H
> -#define __ASM_ARCH_MV78XX0_H
> -
> -#include "irqs.h"
> -
> -/*
> - * Marvell MV78xx0 address maps.
> - *
> - * phys
> - * c0000000    PCIe Memory space
> - * f0800000    PCIe #0 I/O space
> - * f0900000    PCIe #1 I/O space
> - * f0a00000    PCIe #2 I/O space
> - * f0b00000    PCIe #3 I/O space
> - * f0c00000    PCIe #4 I/O space
> - * f0d00000    PCIe #5 I/O space
> - * f0e00000    PCIe #6 I/O space
> - * f0f00000    PCIe #7 I/O space
> - * f1000000    on-chip peripheral registers
> - *
> - * virt                phys            size
> - * fe400000    f102x000        16K     core-specific peripheral registers
> - * fee00000    f0800000        64K     PCIe #0 I/O space
> - * fee10000    f0900000        64K     PCIe #1 I/O space
> - * fee20000    f0a00000        64K     PCIe #2 I/O space
> - * fee30000    f0b00000        64K     PCIe #3 I/O space
> - * fee40000    f0c00000        64K     PCIe #4 I/O space
> - * fee50000    f0d00000        64K     PCIe #5 I/O space
> - * fee60000    f0e00000        64K     PCIe #6 I/O space
> - * fee70000    f0f00000        64K     PCIe #7 I/O space
> - * fec00000    f1000000        1M      on-chip peripheral registers
> - */
> -#define MV78XX0_CORE0_REGS_PHYS_BASE   0xf1020000
> -#define MV78XX0_CORE1_REGS_PHYS_BASE   0xf1024000
> -#define MV78XX0_CORE_REGS_VIRT_BASE    IOMEM(0xfe400000)
> -#define MV78XX0_CORE_REGS_PHYS_BASE    0xfe400000
> -#define MV78XX0_CORE_REGS_SIZE         SZ_16K
> -
> -#define MV78XX0_PCIE_IO_PHYS_BASE(i)   (0xf0800000 + ((i) << 20))
> -#define MV78XX0_PCIE_IO_SIZE           SZ_1M
> -
> -#define MV78XX0_REGS_PHYS_BASE         0xf1000000
> -#define MV78XX0_REGS_VIRT_BASE         IOMEM(0xfec00000)
> -#define MV78XX0_REGS_SIZE              SZ_1M
> -
> -#define MV78XX0_SRAM_PHYS_BASE          (0xf2200000)
> -#define MV78XX0_SRAM_SIZE               SZ_8K
> -
> -#define MV78XX0_PCIE_MEM_PHYS_BASE     0xc0000000
> -#define MV78XX0_PCIE_MEM_SIZE          0x30000000
> -
> -#define MV78XX0_MBUS_SRAM_TARGET       0x09
> -#define MV78XX0_MBUS_SRAM_ATTR         0x00
> -
> -/*
> - * Core-specific peripheral registers.
> - */
> -#define BRIDGE_VIRT_BASE       (MV78XX0_CORE_REGS_VIRT_BASE)
> -#define BRIDGE_PHYS_BASE       (MV78XX0_CORE_REGS_PHYS_BASE)
> -#define  BRIDGE_WINS_CPU0_BASE  (MV78XX0_CORE0_REGS_PHYS_BASE)
> -#define  BRIDGE_WINS_CPU1_BASE  (MV78XX0_CORE1_REGS_PHYS_BASE)
> -#define  BRIDGE_WINS_SZ         (0xA000)
> -
> -/*
> - * Register Map
> - */
> -#define DDR_VIRT_BASE          (MV78XX0_REGS_VIRT_BASE + 0x00000)
> -#define DDR_PHYS_BASE           (MV78XX0_REGS_PHYS_BASE + 0x00000)
> -#define  DDR_WINDOW_CPU0_BASE  (DDR_PHYS_BASE + 0x1500)
> -#define  DDR_WINDOW_CPU1_BASE  (DDR_PHYS_BASE + 0x1570)
> -#define  DDR_WINDOW_CPU_SZ      (0x20)
> -
> -#define DEV_BUS_PHYS_BASE      (MV78XX0_REGS_PHYS_BASE + 0x10000)
> -#define DEV_BUS_VIRT_BASE      (MV78XX0_REGS_VIRT_BASE + 0x10000)
> -#define  SAMPLE_AT_RESET_LOW   (DEV_BUS_VIRT_BASE + 0x0030)
> -#define  SAMPLE_AT_RESET_HIGH  (DEV_BUS_VIRT_BASE + 0x0034)
> -#define  GPIO_VIRT_BASE                (DEV_BUS_VIRT_BASE + 0x0100)
> -#define  I2C_0_PHYS_BASE       (DEV_BUS_PHYS_BASE + 0x1000)
> -#define  I2C_1_PHYS_BASE       (DEV_BUS_PHYS_BASE + 0x1100)
> -#define  UART0_PHYS_BASE       (DEV_BUS_PHYS_BASE + 0x2000)
> -#define  UART0_VIRT_BASE       (DEV_BUS_VIRT_BASE + 0x2000)
> -#define  UART1_PHYS_BASE       (DEV_BUS_PHYS_BASE + 0x2100)
> -#define  UART1_VIRT_BASE       (DEV_BUS_VIRT_BASE + 0x2100)
> -#define  UART2_PHYS_BASE       (DEV_BUS_PHYS_BASE + 0x2200)
> -#define  UART2_VIRT_BASE       (DEV_BUS_VIRT_BASE + 0x2200)
> -#define  UART3_PHYS_BASE       (DEV_BUS_PHYS_BASE + 0x2300)
> -#define  UART3_VIRT_BASE       (DEV_BUS_VIRT_BASE + 0x2300)
> -
> -#define GE10_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x30000)
> -#define GE11_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x34000)
> -
> -#define PCIE00_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x40000)
> -#define PCIE01_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x44000)
> -#define PCIE02_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x48000)
> -#define PCIE03_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x4c000)
> -
> -#define USB0_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x50000)
> -#define USB1_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x51000)
> -#define USB2_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x52000)
> -
> -#define XOR_PHYS_BASE          (MV78XX0_REGS_PHYS_BASE + 0x60900)
> -
> -#define GE00_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x70000)
> -#define GE01_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0x74000)
> -
> -#define PCIE10_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x80000)
> -#define PCIE11_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x84000)
> -#define PCIE12_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x88000)
> -#define PCIE13_VIRT_BASE       (MV78XX0_REGS_VIRT_BASE + 0x8c000)
> -
> -#define CRYPTO_PHYS_BASE       (MV78XX0_REGS_PHYS_BASE + 0x90000)
> -
> -#define SATA_PHYS_BASE         (MV78XX0_REGS_PHYS_BASE + 0xa0000)
> -
> -/*
> - * Supported devices and revisions.
> - */
> -#define MV78X00_Z0_DEV_ID      0x6381
> -#define MV78X00_REV_Z0         1
> -
> -#define MV78100_DEV_ID         0x7810
> -#define MV78100_REV_A0         1
> -#define MV78100_REV_A1         2
> -
> -#define MV78200_DEV_ID         0x7820
> -#define MV78200_REV_A0         1
> -
> -#endif
> diff --git a/arch/arm/mach-mv78xx0/pcie.c b/arch/arm/mach-mv78xx0/pcie.c
> deleted file mode 100644
> index 533cb7856943..000000000000
> --- a/arch/arm/mach-mv78xx0/pcie.c
> +++ /dev/null
> @@ -1,280 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-mv78xx0/pcie.c
> - *
> - * PCIe functions for Marvell MV78xx0 SoCs
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/pci.h>
> -#include <linux/mbus.h>
> -#include <video/vga.h>
> -#include <asm/irq.h>
> -#include <asm/mach/pci.h>
> -#include <plat/pcie.h>
> -#include "mv78xx0.h"
> -#include "common.h"
> -
> -#define MV78XX0_MBUS_PCIE_MEM_TARGET(port, lane) ((port) ? 8 : 4)
> -#define MV78XX0_MBUS_PCIE_MEM_ATTR(port, lane)   (0xf8 & ~(0x10 << (lane)))
> -#define MV78XX0_MBUS_PCIE_IO_TARGET(port, lane)  ((port) ? 8 : 4)
> -#define MV78XX0_MBUS_PCIE_IO_ATTR(port, lane)    (0xf0 & ~(0x10 << (lane)))
> -
> -struct pcie_port {
> -       u8                      maj;
> -       u8                      min;
> -       u8                      root_bus_nr;
> -       void __iomem            *base;
> -       spinlock_t              conf_lock;
> -       char                    mem_space_name[20];
> -       struct resource         res;
> -};
> -
> -static struct pcie_port pcie_port[8];
> -static int num_pcie_ports;
> -static struct resource pcie_io_space;
> -
> -void __init mv78xx0_pcie_id(u32 *dev, u32 *rev)
> -{
> -       *dev = orion_pcie_dev_id(PCIE00_VIRT_BASE);
> -       *rev = orion_pcie_rev(PCIE00_VIRT_BASE);
> -}
> -
> -u32 pcie_port_size[8] = {
> -       0,
> -       0x20000000,
> -       0x10000000,
> -       0x10000000,
> -       0x08000000,
> -       0x08000000,
> -       0x08000000,
> -       0x04000000,
> -};
> -
> -static void __init mv78xx0_pcie_preinit(void)
> -{
> -       int i;
> -       u32 size_each;
> -       u32 start;
> -
> -       pcie_io_space.name = "PCIe I/O Space";
> -       pcie_io_space.start = MV78XX0_PCIE_IO_PHYS_BASE(0);
> -       pcie_io_space.end =
> -               MV78XX0_PCIE_IO_PHYS_BASE(0) + MV78XX0_PCIE_IO_SIZE * 8 - 1;
> -       pcie_io_space.flags = IORESOURCE_MEM;
> -       if (request_resource(&iomem_resource, &pcie_io_space))
> -               panic("can't allocate PCIe I/O space");
> -
> -       if (num_pcie_ports > 7)
> -               panic("invalid number of PCIe ports");
> -
> -       size_each = pcie_port_size[num_pcie_ports];
> -
> -       start = MV78XX0_PCIE_MEM_PHYS_BASE;
> -       for (i = 0; i < num_pcie_ports; i++) {
> -               struct pcie_port *pp = pcie_port + i;
> -
> -               snprintf(pp->mem_space_name, sizeof(pp->mem_space_name),
> -                       "PCIe %d.%d MEM", pp->maj, pp->min);
> -               pp->mem_space_name[sizeof(pp->mem_space_name) - 1] = 0;
> -               pp->res.name = pp->mem_space_name;
> -               pp->res.flags = IORESOURCE_MEM;
> -               pp->res.start = start;
> -               pp->res.end = start + size_each - 1;
> -               start += size_each;
> -
> -               if (request_resource(&iomem_resource, &pp->res))
> -                       panic("can't allocate PCIe MEM sub-space");
> -
> -               mvebu_mbus_add_window_by_id(MV78XX0_MBUS_PCIE_MEM_TARGET(pp->maj, pp->min),
> -                                           MV78XX0_MBUS_PCIE_MEM_ATTR(pp->maj, pp->min),
> -                                           pp->res.start, resource_size(&pp->res));
> -               mvebu_mbus_add_window_remap_by_id(MV78XX0_MBUS_PCIE_IO_TARGET(pp->maj, pp->min),
> -                                                 MV78XX0_MBUS_PCIE_IO_ATTR(pp->maj, pp->min),
> -                                                 i * SZ_64K, SZ_64K, 0);
> -       }
> -}
> -
> -static int __init mv78xx0_pcie_setup(int nr, struct pci_sys_data *sys)
> -{
> -       struct pcie_port *pp;
> -       struct resource realio;
> -
> -       if (nr >= num_pcie_ports)
> -               return 0;
> -
> -       pp = &pcie_port[nr];
> -       sys->private_data = pp;
> -       pp->root_bus_nr = sys->busnr;
> -
> -       /*
> -        * Generic PCIe unit setup.
> -        */
> -       orion_pcie_set_local_bus_nr(pp->base, sys->busnr);
> -       orion_pcie_setup(pp->base);
> -
> -       realio.start = nr * SZ_64K;
> -       realio.end = realio.start + SZ_64K - 1;
> -       pci_remap_iospace(&realio, MV78XX0_PCIE_IO_PHYS_BASE(nr));
> -
> -       pci_add_resource_offset(&sys->resources, &pp->res, sys->mem_offset);
> -
> -       return 1;
> -}
> -
> -static int pcie_valid_config(struct pcie_port *pp, int bus, int dev)
> -{
> -       /*
> -        * Don't go out when trying to access nonexisting devices
> -        * on the local bus.
> -        */
> -       if (bus == pp->root_bus_nr && dev > 1)
> -               return 0;
> -
> -       return 1;
> -}
> -
> -static int pcie_rd_conf(struct pci_bus *bus, u32 devfn, int where,
> -                       int size, u32 *val)
> -{
> -       struct pci_sys_data *sys = bus->sysdata;
> -       struct pcie_port *pp = sys->private_data;
> -       unsigned long flags;
> -       int ret;
> -
> -       if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0) {
> -               *val = 0xffffffff;
> -               return PCIBIOS_DEVICE_NOT_FOUND;
> -       }
> -
> -       spin_lock_irqsave(&pp->conf_lock, flags);
> -       ret = orion_pcie_rd_conf(pp->base, bus, devfn, where, size, val);
> -       spin_unlock_irqrestore(&pp->conf_lock, flags);
> -
> -       return ret;
> -}
> -
> -static int pcie_wr_conf(struct pci_bus *bus, u32 devfn,
> -                       int where, int size, u32 val)
> -{
> -       struct pci_sys_data *sys = bus->sysdata;
> -       struct pcie_port *pp = sys->private_data;
> -       unsigned long flags;
> -       int ret;
> -
> -       if (pcie_valid_config(pp, bus->number, PCI_SLOT(devfn)) == 0)
> -               return PCIBIOS_DEVICE_NOT_FOUND;
> -
> -       spin_lock_irqsave(&pp->conf_lock, flags);
> -       ret = orion_pcie_wr_conf(pp->base, bus, devfn, where, size, val);
> -       spin_unlock_irqrestore(&pp->conf_lock, flags);
> -
> -       return ret;
> -}
> -
> -static struct pci_ops pcie_ops = {
> -       .read = pcie_rd_conf,
> -       .write = pcie_wr_conf,
> -};
> -
> -/*
> - * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it
> - * is operating as a root complex this needs to be switched to
> - * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on
> - * the device. Decoding setup is handled by the orion code.
> - */
> -static void rc_pci_fixup(struct pci_dev *dev)
> -{
> -       if (dev->bus->parent == NULL && dev->devfn == 0) {
> -               struct resource *r;
> -
> -               dev->class &= 0xff;
> -               dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
> -               pci_dev_for_each_resource(dev, r) {
> -                       r->start = 0;
> -                       r->end   = 0;
> -                       r->flags = 0;
> -               }
> -       }
> -}
> -DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL, PCI_ANY_ID, rc_pci_fixup);
> -
> -static int __init mv78xx0_pcie_scan_bus(int nr, struct pci_host_bridge *bridge)
> -{
> -       struct pci_sys_data *sys = pci_host_bridge_priv(bridge);
> -
> -       if (nr >= num_pcie_ports) {
> -               BUG();
> -               return -EINVAL;
> -       }
> -
> -       list_splice_init(&sys->resources, &bridge->windows);
> -       bridge->dev.parent = NULL;
> -       bridge->sysdata = sys;
> -       bridge->busnr = sys->busnr;
> -       bridge->ops = &pcie_ops;
> -
> -       return pci_scan_root_bus_bridge(bridge);
> -}
> -
> -static int __init mv78xx0_pcie_map_irq(const struct pci_dev *dev, u8 slot,
> -       u8 pin)
> -{
> -       struct pci_sys_data *sys = dev->bus->sysdata;
> -       struct pcie_port *pp = sys->private_data;
> -
> -       return IRQ_MV78XX0_PCIE_00 + (pp->maj << 2) + pp->min;
> -}
> -
> -static struct hw_pci mv78xx0_pci __initdata = {
> -       .nr_controllers = 8,
> -       .preinit        = mv78xx0_pcie_preinit,
> -       .setup          = mv78xx0_pcie_setup,
> -       .scan           = mv78xx0_pcie_scan_bus,
> -       .map_irq        = mv78xx0_pcie_map_irq,
> -};
> -
> -static void __init add_pcie_port(int maj, int min, void __iomem *base)
> -{
> -       printk(KERN_INFO "MV78xx0 PCIe port %d.%d: ", maj, min);
> -
> -       if (orion_pcie_link_up(base)) {
> -               struct pcie_port *pp = &pcie_port[num_pcie_ports++];
> -
> -               printk("link up\n");
> -
> -               pp->maj = maj;
> -               pp->min = min;
> -               pp->root_bus_nr = -1;
> -               pp->base = base;
> -               spin_lock_init(&pp->conf_lock);
> -               memset(&pp->res, 0, sizeof(pp->res));
> -       } else {
> -               printk("link down, ignoring\n");
> -       }
> -}
> -
> -void __init mv78xx0_pcie_init(int init_port0, int init_port1)
> -{
> -       vga_base = MV78XX0_PCIE_MEM_PHYS_BASE;
> -
> -       if (init_port0) {
> -               add_pcie_port(0, 0, PCIE00_VIRT_BASE);
> -               if (!orion_pcie_x4_mode(PCIE00_VIRT_BASE)) {
> -                       add_pcie_port(0, 1, PCIE01_VIRT_BASE);
> -                       add_pcie_port(0, 2, PCIE02_VIRT_BASE);
> -                       add_pcie_port(0, 3, PCIE03_VIRT_BASE);
> -               }
> -       }
> -
> -       if (init_port1) {
> -               add_pcie_port(1, 0, PCIE10_VIRT_BASE);
> -               if (!orion_pcie_x4_mode((void __iomem *)PCIE10_VIRT_BASE)) {
> -                       add_pcie_port(1, 1, PCIE11_VIRT_BASE);
> -                       add_pcie_port(1, 2, PCIE12_VIRT_BASE);
> -                       add_pcie_port(1, 3, PCIE13_VIRT_BASE);
> -               }
> -       }
> -
> -       pci_common_init(&mv78xx0_pci);
> -}
> diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig
> index c61999d01c80..78b8d59d7cc1 100644
> --- a/arch/arm/mach-orion5x/Kconfig
> +++ b/arch/arm/mach-orion5x/Kconfig
> @@ -37,60 +37,6 @@ config MACH_RD88F5182_DT
>           Say 'Y' here if you want your kernel to support the Marvell
>           Orion-NAS (88F5182) RD2, Flattened Device Tree.
>
> -config MACH_KUROBOX_PRO
> -       bool "KuroBox Pro (DEPRECATED)"
> -       select I2C_BOARDINFO if I2C
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         KuroBox Pro platform.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
> -config MACH_DNS323
> -       bool "D-Link DNS-323 (DEPRECATED)"
> -       select I2C_BOARDINFO if I2C
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         D-Link DNS-323 platform.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
> -config MACH_TS209
> -       bool "QNAP TS-109/TS-209 (DEPRECATED)"
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         QNAP TS-109/TS-209 platform.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
> -config MACH_TERASTATION_PRO2
> -       bool "Buffalo Terastation Pro II/Live (DEPRECATED)"
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         Buffalo Terastation Pro II/Live platform.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
> -config MACH_LINKSTATION_PRO
> -       bool "Buffalo Linkstation Pro/Live (DEPRECATED)"
> -       depends on ATAGS
> -       select I2C_BOARDINFO if I2C
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         Buffalo Linkstation Pro/Live platform. Both v1 and
> -         v2 devices are supported.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
>  config MACH_LINKSTATION_MINI
>         bool "Buffalo Linkstation Mini (Flattened Device Tree)"
>         select ARCH_ORION5X_DT
> @@ -98,36 +44,6 @@ config MACH_LINKSTATION_MINI
>           Say 'Y' here if you want your kernel to support the
>           Buffalo Linkstation Mini (LS-WSGL) platform.
>
> -config MACH_TS409
> -       bool "QNAP TS-409 (DEPRECATED)"
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         QNAP TS-409 platform.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
> -config MACH_TS78XX
> -       bool "Technologic Systems TS-78xx (DEPRECATED)"
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         Technologic Systems TS-78xx platform.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
> -config MACH_MV2120
> -       bool "HP Media Vault mv2120 (DEPRECATED)"
> -       depends on ATAGS
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         HP Media Vault mv2120 or mv5100.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
>  config MACH_D2NET_DT
>         bool "LaCie d2 Network / Big Disk Network (Flattened Device Tree)"
>         select ARCH_ORION5X_DT
> @@ -135,17 +51,6 @@ config MACH_D2NET_DT
>           Say 'Y' here if you want your kernel to support the
>           LaCie d2 Network NAS.
>
> -config MACH_NET2BIG
> -       bool "LaCie 2Big Network (DEPRECATED)"
> -       depends on ATAGS
> -       select I2C_BOARDINFO if I2C
> -       help
> -         Say 'Y' here if you want your kernel to support the
> -         LaCie 2Big Network NAS.
> -
> -         Support for this machine will go away in early 2027,
> -         unless it gets converted to device tree.
> -
>  config MACH_MSS2_DT
>         bool "Maxtor Shared Storage II (Flattened Device Tree)"
>         select ARCH_ORION5X_DT
> diff --git a/arch/arm/mach-orion5x/Makefile b/arch/arm/mach-orion5x/Makefile
> index 6f54d7fef27a..7e9634e04318 100644
> --- a/arch/arm/mach-orion5x/Makefile
> +++ b/arch/arm/mach-orion5x/Makefile
> @@ -2,15 +2,6 @@
>  ccflags-y := -I$(srctree)/arch/arm/plat-orion/include
>
>  obj-y                          += common.o pci.o irq.o mpp.o
> -obj-$(CONFIG_MACH_KUROBOX_PRO) += kurobox_pro-setup.o
> -obj-$(CONFIG_MACH_TERASTATION_PRO2)    += terastation_pro2-setup.o
> -obj-$(CONFIG_MACH_LINKSTATION_PRO) += kurobox_pro-setup.o
> -obj-$(CONFIG_MACH_DNS323)      += dns323-setup.o
> -obj-$(CONFIG_MACH_TS209)       += ts209-setup.o tsx09-common.o
> -obj-$(CONFIG_MACH_TS409)       += ts409-setup.o tsx09-common.o
> -obj-$(CONFIG_MACH_TS78XX)      += ts78xx-setup.o
> -obj-$(CONFIG_MACH_MV2120)      += mv2120-setup.o
> -obj-$(CONFIG_MACH_NET2BIG)     += net2big-setup.o
>
>  obj-$(CONFIG_ARCH_ORION5X_DT)          += board-dt.o
>  obj-$(CONFIG_MACH_D2NET_DT)    += board-d2net.o
> diff --git a/arch/arm/mach-orion5x/board-dt.c b/arch/arm/mach-orion5x/board-dt.c
> index be47492c6640..2614213e2cbc 100644
> --- a/arch/arm/mach-orion5x/board-dt.c
> +++ b/arch/arm/mach-orion5x/board-dt.c
> @@ -18,7 +18,6 @@
>  #include <asm/mach/arch.h>
>  #include <asm/mach/map.h>
>  #include <plat/irq.h>
> -#include <plat/time.h>
>  #include "orion5x.h"
>  #include "bridge-regs.h"
>  #include "common.h"
> @@ -39,7 +38,7 @@ static void __init orion5x_dt_init(void)
>         u32 dev, rev;
>
>         orion5x_id(&dev, &rev, &dev_name);
> -       printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk);
> +       printk(KERN_INFO "Orion ID: %s.\n", dev_name);
>
>         BUG_ON(mvebu_mbus_dt_init(false));
>
> diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
> index df056d60b675..050a95af2bbf 100644
> --- a/arch/arm/mach-orion5x/common.c
> +++ b/arch/arm/mach-orion5x/common.c
> @@ -7,27 +7,16 @@
>   * Maintainer: Tzachi Perelstein <tzachi@marvell.com>
>   */
>
> +#include <linux/delay.h>
>  #include <linux/kernel.h>
>  #include <linux/init.h>
>  #include <linux/io.h>
> -#include <linux/platform_device.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/serial_8250.h>
> -#include <linux/mv643xx_i2c.h>
> -#include <linux/ata_platform.h>
> -#include <linux/delay.h>
> -#include <linux/clk-provider.h>
> -#include <linux/cpu.h>
> +#include <linux/mbus.h>
>  #include <asm/page.h>
>  #include <asm/setup.h>
> -#include <asm/system_misc.h>
>  #include <asm/mach/arch.h>
>  #include <asm/mach/map.h>
>  #include <asm/mach/time.h>
> -#include <linux/platform_data/mtd-orion_nand.h>
> -#include <linux/platform_data/usb-ehci-orion.h>
> -#include <plat/time.h>
> -#include <plat/common.h>
>
>  #include "bridge-regs.h"
>  #include "common.h"
> @@ -55,167 +44,6 @@ void __init orion5x_map_io(void)
>         iotable_init(orion5x_io_desc, ARRAY_SIZE(orion5x_io_desc));
>  }
>
> -
> -/*****************************************************************************
> - * CLK tree
> - ****************************************************************************/
> -static struct clk *tclk;
> -
> -void __init clk_init(void)
> -{
> -       tclk = clk_register_fixed_rate(NULL, "tclk", NULL, 0, orion5x_tclk);
> -
> -       orion_clkdev_init(tclk);
> -}
> -
> -/*****************************************************************************
> - * EHCI0
> - ****************************************************************************/
> -void __init orion5x_ehci0_init(void)
> -{
> -       orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
> -                       EHCI_PHY_ORION);
> -}
> -
> -
> -/*****************************************************************************
> - * EHCI1
> - ****************************************************************************/
> -void __init orion5x_ehci1_init(void)
> -{
> -       orion_ehci_1_init(ORION5X_USB1_PHYS_BASE, IRQ_ORION5X_USB1_CTRL);
> -}
> -
> -
> -/*****************************************************************************
> - * GE00
> - ****************************************************************************/
> -void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
> -{
> -       orion_ge00_init(eth_data,
> -                       ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
> -                       IRQ_ORION5X_ETH_ERR,
> -                       MV643XX_TX_CSUM_DEFAULT_LIMIT);
> -}
> -
> -
> -/*****************************************************************************
> - * I2C
> - ****************************************************************************/
> -void __init orion5x_i2c_init(void)
> -{
> -       orion_i2c_init(I2C_PHYS_BASE, IRQ_ORION5X_I2C, 8);
> -
> -}
> -
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
> -{
> -       orion_sata_init(sata_data, ORION5X_SATA_PHYS_BASE, IRQ_ORION5X_SATA);
> -}
> -
> -
> -/*****************************************************************************
> - * SPI
> - ****************************************************************************/
> -void __init orion5x_spi_init(void)
> -{
> -       orion_spi_init(SPI_PHYS_BASE);
> -}
> -
> -
> -/*****************************************************************************
> - * UART0
> - ****************************************************************************/
> -void __init orion5x_uart0_init(void)
> -{
> -       orion_uart0_init(UART0_VIRT_BASE, UART0_PHYS_BASE,
> -                        IRQ_ORION5X_UART0, tclk);
> -}
> -
> -/*****************************************************************************
> - * UART1
> - ****************************************************************************/
> -void __init orion5x_uart1_init(void)
> -{
> -       orion_uart1_init(UART1_VIRT_BASE, UART1_PHYS_BASE,
> -                        IRQ_ORION5X_UART1, tclk);
> -}
> -
> -/*****************************************************************************
> - * XOR engine
> - ****************************************************************************/
> -void __init orion5x_xor_init(void)
> -{
> -       orion_xor0_init(ORION5X_XOR_PHYS_BASE,
> -                       ORION5X_XOR_PHYS_BASE + 0x200,
> -                       IRQ_ORION5X_XOR0, IRQ_ORION5X_XOR1);
> -}
> -
> -/*****************************************************************************
> - * Cryptographic Engines and Security Accelerator (CESA)
> - ****************************************************************************/
> -static void __init orion5x_crypto_init(void)
> -{
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_SRAM_TARGET,
> -                                   ORION_MBUS_SRAM_ATTR,
> -                                   ORION5X_SRAM_PHYS_BASE,
> -                                   ORION5X_SRAM_SIZE);
> -       orion_crypto_init(ORION5X_CRYPTO_PHYS_BASE, ORION5X_SRAM_PHYS_BASE,
> -                         SZ_8K, IRQ_ORION5X_CESA);
> -}
> -
> -/*****************************************************************************
> - * Watchdog
> - ****************************************************************************/
> -static struct resource orion_wdt_resource[] = {
> -               DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x04),
> -               DEFINE_RES_MEM(RSTOUTn_MASK_PHYS, 0x04),
> -};
> -
> -static struct platform_device orion_wdt_device = {
> -       .name           = "orion_wdt",
> -       .id             = -1,
> -       .num_resources  = ARRAY_SIZE(orion_wdt_resource),
> -       .resource       = orion_wdt_resource,
> -};
> -
> -static void __init orion5x_wdt_init(void)
> -{
> -       platform_device_register(&orion_wdt_device);
> -}
> -
> -
> -/*****************************************************************************
> - * Time handling
> - ****************************************************************************/
> -void __init orion5x_init_early(void)
> -{
> -       u32 rev, dev;
> -       const char *mbus_soc_name;
> -
> -       orion_time_set_base(TIMER_VIRT_BASE);
> -
> -       /* Initialize the MBUS driver */
> -       orion5x_pcie_id(&dev, &rev);
> -       if (dev == MV88F5281_DEV_ID)
> -               mbus_soc_name = "marvell,orion5x-88f5281-mbus";
> -       else if (dev == MV88F5182_DEV_ID)
> -               mbus_soc_name = "marvell,orion5x-88f5182-mbus";
> -       else if (dev == MV88F5181_DEV_ID)
> -               mbus_soc_name = "marvell,orion5x-88f5181-mbus";
> -       else if (dev == MV88F6183_DEV_ID)
> -               mbus_soc_name = "marvell,orion5x-88f6183-mbus";
> -       else
> -               mbus_soc_name = NULL;
> -       mvebu_mbus_init(mbus_soc_name, ORION5X_BRIDGE_WINS_BASE,
> -                       ORION5X_BRIDGE_WINS_SZ,
> -                       ORION5X_DDR_WINS_BASE, ORION5X_DDR_WINS_SZ);
> -}
> -
>  void orion5x_setup_wins(void)
>  {
>         /*
> @@ -242,29 +70,6 @@ void orion5x_setup_wins(void)
>                                     ORION5X_PCI_MEM_SIZE);
>  }
>
> -int orion5x_tclk;
> -
> -static int __init orion5x_find_tclk(void)
> -{
> -       u32 dev, rev;
> -
> -       orion5x_pcie_id(&dev, &rev);
> -       if (dev == MV88F6183_DEV_ID &&
> -           (readl(MPP_RESET_SAMPLE) & 0x00000200) == 0)
> -               return 133333333;
> -
> -       return 166666667;
> -}
> -
> -void __init orion5x_timer_init(void)
> -{
> -       orion5x_tclk = orion5x_find_tclk();
> -
> -       orion_time_init(ORION5X_BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
> -                       IRQ_ORION5X_BRIDGE, orion5x_tclk);
> -}
> -
> -
>  /*****************************************************************************
>   * General
>   ****************************************************************************/
> @@ -310,45 +115,6 @@ void __init orion5x_id(u32 *dev, u32 *rev, char **dev_name)
>         }
>  }
>
> -void __init orion5x_init(void)
> -{
> -       char *dev_name;
> -       u32 dev, rev;
> -
> -       orion5x_id(&dev, &rev, &dev_name);
> -       printk(KERN_INFO "Orion ID: %s. TCLK=%d.\n", dev_name, orion5x_tclk);
> -
> -       /*
> -        * Setup Orion address map
> -        */
> -       orion5x_setup_wins();
> -
> -       /* Setup root of clk tree */
> -       clk_init();
> -
> -       /*
> -        * Don't issue "Wait for Interrupt" instruction if we are
> -        * running on D0 5281 silicon.
> -        */
> -       if (dev == MV88F5281_DEV_ID && rev == MV88F5281_REV_D0) {
> -               printk(KERN_INFO "Orion: Applying 5281 D0 WFI workaround.\n");
> -               cpu_idle_poll_ctrl(true);
> -       }
> -
> -       /*
> -        * The 5082/5181l/5182/6082/6082l/6183 have crypto
> -        * while 5180n/5181/5281 don't have crypto.
> -        */
> -       if ((dev == MV88F5181_DEV_ID && rev >= MV88F5181L_REV_A0) ||
> -           dev == MV88F5182_DEV_ID || dev == MV88F6183_DEV_ID)
> -               orion5x_crypto_init();
> -
> -       /*
> -        * Register watchdog driver
> -        */
> -       orion5x_wdt_init();
> -}
> -
>  void orion5x_restart(enum reboot_mode mode, const char *cmd)
>  {
>         /*
> diff --git a/arch/arm/mach-orion5x/common.h b/arch/arm/mach-orion5x/common.h
> index 8df70e23aa82..4dc6c59bde99 100644
> --- a/arch/arm/mach-orion5x/common.h
> +++ b/arch/arm/mach-orion5x/common.h
> @@ -4,9 +4,6 @@
>
>  #include <linux/reboot.h>
>
> -struct mv643xx_eth_platform_data;
> -struct mv_sata_platform_data;
> -
>  #define ORION_MBUS_PCIE_MEM_TARGET    0x04
>  #define ORION_MBUS_PCIE_MEM_ATTR      0x59
>  #define ORION_MBUS_PCIE_IO_TARGET     0x04
> @@ -32,21 +29,9 @@ void orion5x_init_early(void);
>  void orion5x_init_irq(void);
>  void orion5x_init(void);
>  void orion5x_id(u32 *dev, u32 *rev, char **dev_name);
> -void clk_init(void);
> -extern int orion5x_tclk;
> -extern void orion5x_timer_init(void);
>
>  void orion5x_setup_wins(void);
>
> -void orion5x_ehci0_init(void);
> -void orion5x_ehci1_init(void);
> -void orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data);
> -void orion5x_i2c_init(void);
> -void orion5x_sata_init(struct mv_sata_platform_data *sata_data);
> -void orion5x_spi_init(void);
> -void orion5x_uart0_init(void);
> -void orion5x_uart1_init(void);
> -void orion5x_xor_init(void);
>  void orion5x_restart(enum reboot_mode, const char *);
>
>  /*
> diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c
> deleted file mode 100644
> index 7b81b08b0dda..000000000000
> --- a/arch/arm/mach-orion5x/dns323-setup.c
> +++ /dev/null
> @@ -1,757 +0,0 @@
> -/*
> - * arch/arm/mach-orion5x/dns323-setup.c
> - *
> - * Copyright (C) 2007 Herbert Valerio Riedel <hvr@gnu.org>
> - *
> - * Support for HW Rev C1:
> - *
> - * Copyright (C) 2010 Benjamin Herrenschmidt <benh@kernel.crashing.org>
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU Lesser General Public License as
> - * published by the Free Software Foundation; either version 2 of the
> - * License, or (at your option) any later version.
> - *
> - */
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/delay.h>
> -#include <linux/platform_device.h>
> -#include <linux/pci.h>
> -#include <linux/irq.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/leds.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/input.h>
> -#include <linux/i2c.h>
> -#include <linux/ata_platform.h>
> -#include <linux/phy.h>
> -#include <linux/marvell_phy.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/pci.h>
> -#include <asm/system_info.h>
> -#include <plat/orion-gpio.h>
> -#include "orion5x.h"
> -#include "common.h"
> -#include "mpp.h"
> -
> -/* Rev A1 and B1 */
> -#define DNS323_GPIO_LED_RIGHT_AMBER    1
> -#define DNS323_GPIO_LED_LEFT_AMBER     2
> -#define DNS323_GPIO_SYSTEM_UP          3
> -#define DNS323_GPIO_LED_POWER1         4
> -#define DNS323_GPIO_LED_POWER2         5
> -#define DNS323_GPIO_OVERTEMP           6
> -#define DNS323_GPIO_RTC                        7
> -#define DNS323_GPIO_POWER_OFF          8
> -#define DNS323_GPIO_KEY_POWER          9
> -#define DNS323_GPIO_KEY_RESET          10
> -
> -/* Rev C1 */
> -#define DNS323C_GPIO_KEY_POWER         1
> -#define DNS323C_GPIO_POWER_OFF         2
> -#define DNS323C_GPIO_LED_RIGHT_AMBER   8
> -#define DNS323C_GPIO_LED_LEFT_AMBER    9
> -#define DNS323C_GPIO_LED_POWER         17
> -#define DNS323C_GPIO_FAN_BIT1          18
> -#define DNS323C_GPIO_FAN_BIT0          19
> -
> -/* Exposed to userspace, do not change */
> -enum {
> -       DNS323_REV_A1,  /* 0 */
> -       DNS323_REV_B1,  /* 1 */
> -       DNS323_REV_C1,  /* 2 */
> -};
> -
> -
> -/****************************************************************************
> - * PCI setup
> - */
> -
> -static int __init dns323_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
> -{
> -       int irq;
> -
> -       /*
> -        * Check for devices with hard-wired IRQs.
> -        */
> -       irq = orion5x_pci_map_irq(dev, slot, pin);
> -       if (irq != -1)
> -               return irq;
> -
> -       return -1;
> -}
> -
> -static struct hw_pci dns323_pci __initdata = {
> -       .nr_controllers = 2,
> -       .setup          = orion5x_pci_sys_setup,
> -       .scan           = orion5x_pci_sys_scan_bus,
> -       .map_irq        = dns323_pci_map_irq,
> -};
> -
> -static int __init dns323_pci_init(void)
> -{
> -       /* Rev B1 and C1 doesn't really use its PCI bus, and initialising PCI
> -        * gets in the way of initialising the SATA controller.
> -        */
> -       if (machine_is_dns323() && system_rev == DNS323_REV_A1)
> -               pci_common_init(&dns323_pci);
> -
> -       return 0;
> -}
> -
> -subsys_initcall(dns323_pci_init);
> -
> -/****************************************************************************
> - * 8MiB NOR flash (Spansion S29GL064M90TFIR4)
> - *
> - * Layout as used by D-Link:
> - *  0x00000000-0x00010000 : "MTD1"
> - *  0x00010000-0x00020000 : "MTD2"
> - *  0x00020000-0x001a0000 : "Linux Kernel"
> - *  0x001a0000-0x007d0000 : "File System"
> - *  0x007d0000-0x00800000 : "u-boot"
> - */
> -
> -#define DNS323_NOR_BOOT_BASE 0xf4000000
> -#define DNS323_NOR_BOOT_SIZE SZ_8M
> -
> -static struct mtd_partition dns323_partitions[] = {
> -       {
> -               .name   = "MTD1",
> -               .size   = 0x00010000,
> -               .offset = 0,
> -       }, {
> -               .name   = "MTD2",
> -               .size   = 0x00010000,
> -               .offset = 0x00010000,
> -       }, {
> -               .name   = "Linux Kernel",
> -               .size   = 0x00180000,
> -               .offset = 0x00020000,
> -       }, {
> -               .name   = "File System",
> -               .size   = 0x00630000,
> -               .offset = 0x001A0000,
> -       }, {
> -               .name   = "u-boot",
> -               .size   = 0x00030000,
> -               .offset = 0x007d0000,
> -       },
> -};
> -
> -static struct physmap_flash_data dns323_nor_flash_data = {
> -       .width          = 1,
> -       .parts          = dns323_partitions,
> -       .nr_parts       = ARRAY_SIZE(dns323_partitions)
> -};
> -
> -static struct resource dns323_nor_flash_resource = {
> -       .flags          = IORESOURCE_MEM,
> -       .start          = DNS323_NOR_BOOT_BASE,
> -       .end            = DNS323_NOR_BOOT_BASE + DNS323_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device dns323_nor_flash = {
> -       .name           = "physmap-flash",
> -       .id             = 0,
> -       .dev            = {
> -               .platform_data  = &dns323_nor_flash_data,
> -       },
> -       .resource       = &dns323_nor_flash_resource,
> -       .num_resources  = 1,
> -};
> -
> -/****************************************************************************
> - * Ethernet
> - */
> -
> -static struct mv643xx_eth_platform_data dns323_eth_data = {
> -       .phy_addr = MV643XX_ETH_PHY_ADDR(8),
> -};
> -
> -/* dns323_parse_hex_*() taken from tsx09-common.c; should a common copy of these
> - * functions be kept somewhere?
> - */
> -static int __init dns323_parse_hex_nibble(char n)
> -{
> -       if (n >= '0' && n <= '9')
> -               return n - '0';
> -
> -       if (n >= 'A' && n <= 'F')
> -               return n - 'A' + 10;
> -
> -       if (n >= 'a' && n <= 'f')
> -               return n - 'a' + 10;
> -
> -       return -1;
> -}
> -
> -static int __init dns323_parse_hex_byte(const char *b)
> -{
> -       int hi;
> -       int lo;
> -
> -       hi = dns323_parse_hex_nibble(b[0]);
> -       lo = dns323_parse_hex_nibble(b[1]);
> -
> -       if (hi < 0 || lo < 0)
> -               return -1;
> -
> -       return (hi << 4) | lo;
> -}
> -
> -static int __init dns323_read_mac_addr(void)
> -{
> -       u_int8_t addr[6];
> -       int i;
> -       char *mac_page;
> -
> -       /* MAC address is stored as a regular ol' string in /dev/mtdblock4
> -        * (0x007d0000-0x00800000) starting at offset 196480 (0x2ff80).
> -        */
> -       mac_page = ioremap(DNS323_NOR_BOOT_BASE + 0x7d0000 + 196480, 1024);
> -       if (!mac_page)
> -               return -ENOMEM;
> -
> -       /* Sanity check the string we're looking at */
> -       for (i = 0; i < 5; i++) {
> -               if (*(mac_page + (i * 3) + 2) != ':') {
> -                       goto error_fail;
> -               }
> -       }
> -
> -       for (i = 0; i < 6; i++) {
> -               int byte;
> -
> -               byte = dns323_parse_hex_byte(mac_page + (i * 3));
> -               if (byte < 0) {
> -                       goto error_fail;
> -               }
> -
> -               addr[i] = byte;
> -       }
> -
> -       iounmap(mac_page);
> -       printk("DNS-323: Found ethernet MAC address: %pM\n", addr);
> -
> -       memcpy(dns323_eth_data.mac_addr, addr, 6);
> -
> -       return 0;
> -
> -error_fail:
> -       iounmap(mac_page);
> -       return -EINVAL;
> -}
> -
> -/****************************************************************************
> - * GPIO LEDs (simple - doesn't use hardware blinking support)
> - */
> -
> -static struct gpio_led dns323ab_leds[] = {
> -       {
> -               .name = "power:blue",
> -               .default_trigger = "default-on",
> -       }, {
> -               .name = "right:amber",
> -       }, {
> -               .name = "left:amber",
> -       },
> -};
> -
> -static struct gpiod_lookup_table dns323a1_leds_gpio_table = {
> -       .dev_id = "leds-gpio",
> -       .table = {
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_POWER2, NULL,
> -                               0, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_RIGHT_AMBER, NULL,
> -                               1, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_LEFT_AMBER, NULL,
> -                               2, GPIO_ACTIVE_LOW),
> -               { },
> -       },
> -};
> -
> -/* B1 is the same but power LED is active high */
> -static struct gpiod_lookup_table dns323b1_leds_gpio_table = {
> -       .dev_id = "leds-gpio",
> -       .table = {
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_POWER2, NULL,
> -                               0, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_RIGHT_AMBER, NULL,
> -                               1, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323_GPIO_LED_LEFT_AMBER, NULL,
> -                               2, GPIO_ACTIVE_LOW),
> -               { },
> -       },
> -};
> -
> -static struct gpio_led dns323c_leds[] = {
> -       {
> -               .name = "power:blue",
> -               .default_trigger = "timer",
> -       }, {
> -               .name = "right:amber",
> -       }, {
> -               .name = "left:amber",
> -       },
> -};
> -
> -static struct gpiod_lookup_table dns323c_leds_gpio_table = {
> -       .dev_id = "leds-gpio",
> -       .table = {
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323C_GPIO_LED_POWER, NULL,
> -                               0, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323C_GPIO_LED_RIGHT_AMBER, NULL,
> -                               1, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", DNS323C_GPIO_LED_LEFT_AMBER, NULL,
> -                               2, GPIO_ACTIVE_LOW),
> -               { },
> -       },
> -};
> -
> -static struct gpio_led_platform_data dns323ab_led_data = {
> -       .num_leds       = ARRAY_SIZE(dns323ab_leds),
> -       .leds           = dns323ab_leds,
> -       .gpio_blink_set = orion_gpio_led_blink_set,
> -};
> -
> -static struct gpio_led_platform_data dns323c_led_data = {
> -       .num_leds       = ARRAY_SIZE(dns323c_leds),
> -       .leds           = dns323c_leds,
> -       .gpio_blink_set = orion_gpio_led_blink_set,
> -};
> -
> -static struct platform_device dns323_gpio_leds = {
> -       .name           = "leds-gpio",
> -       .id             = -1,
> -       .dev            = {
> -               .platform_data  = &dns323ab_led_data,
> -       },
> -};
> -
> -/****************************************************************************
> - * GPIO Attached Keys
> - */
> -
> -static struct gpio_keys_button dns323ab_buttons[] = {
> -       {
> -               .code           = KEY_RESTART,
> -               .gpio           = DNS323_GPIO_KEY_RESET,
> -               .desc           = "Reset Button",
> -               .active_low     = 1,
> -       }, {
> -               .code           = KEY_POWER,
> -               .gpio           = DNS323_GPIO_KEY_POWER,
> -               .desc           = "Power Button",
> -               .active_low     = 1,
> -       },
> -};
> -
> -static struct gpio_keys_platform_data dns323ab_button_data = {
> -       .buttons        = dns323ab_buttons,
> -       .nbuttons       = ARRAY_SIZE(dns323ab_buttons),
> -};
> -
> -static struct gpio_keys_button dns323c_buttons[] = {
> -       {
> -               .code           = KEY_POWER,
> -               .gpio           = DNS323C_GPIO_KEY_POWER,
> -               .desc           = "Power Button",
> -               .active_low     = 1,
> -       },
> -};
> -
> -static struct gpio_keys_platform_data dns323c_button_data = {
> -       .buttons        = dns323c_buttons,
> -       .nbuttons       = ARRAY_SIZE(dns323c_buttons),
> -};
> -
> -static struct platform_device dns323_button_device = {
> -       .name           = "gpio-keys",
> -       .id             = -1,
> -       .num_resources  = 0,
> -       .dev            = {
> -               .platform_data  = &dns323ab_button_data,
> -       },
> -};
> -
> -/*****************************************************************************
> - * SATA
> - */
> -static struct mv_sata_platform_data dns323_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -/****************************************************************************
> - * General Setup
> - */
> -static unsigned int dns323a_mpp_modes[] __initdata = {
> -       MPP0_PCIE_RST_OUTn,
> -       MPP1_GPIO,              /* right amber LED (sata ch0) */
> -       MPP2_GPIO,              /* left amber LED (sata ch1) */
> -       MPP3_UNUSED,
> -       MPP4_GPIO,              /* power button LED */
> -       MPP5_GPIO,              /* power button LED */
> -       MPP6_GPIO,              /* GMT G751-2f overtemp */
> -       MPP7_GPIO,              /* M41T80 nIRQ/OUT/SQW */
> -       MPP8_GPIO,              /* triggers power off */
> -       MPP9_GPIO,              /* power button switch */
> -       MPP10_GPIO,             /* reset button switch */
> -       MPP11_UNUSED,
> -       MPP12_UNUSED,
> -       MPP13_UNUSED,
> -       MPP14_UNUSED,
> -       MPP15_UNUSED,
> -       MPP16_UNUSED,
> -       MPP17_UNUSED,
> -       MPP18_UNUSED,
> -       MPP19_UNUSED,
> -       0,
> -};
> -
> -static unsigned int dns323b_mpp_modes[] __initdata = {
> -       MPP0_UNUSED,
> -       MPP1_GPIO,              /* right amber LED (sata ch0) */
> -       MPP2_GPIO,              /* left amber LED (sata ch1) */
> -       MPP3_GPIO,              /* system up flag */
> -       MPP4_GPIO,              /* power button LED */
> -       MPP5_GPIO,              /* power button LED */
> -       MPP6_GPIO,              /* GMT G751-2f overtemp */
> -       MPP7_GPIO,              /* M41T80 nIRQ/OUT/SQW */
> -       MPP8_GPIO,              /* triggers power off */
> -       MPP9_GPIO,              /* power button switch */
> -       MPP10_GPIO,             /* reset button switch */
> -       MPP11_UNUSED,
> -       MPP12_SATA_LED,
> -       MPP13_SATA_LED,
> -       MPP14_SATA_LED,
> -       MPP15_SATA_LED,
> -       MPP16_UNUSED,
> -       MPP17_UNUSED,
> -       MPP18_UNUSED,
> -       MPP19_UNUSED,
> -       0,
> -};
> -
> -static unsigned int dns323c_mpp_modes[] __initdata = {
> -       MPP0_GPIO,              /* ? input */
> -       MPP1_GPIO,              /* input power switch (0 = pressed) */
> -       MPP2_GPIO,              /* output power off */
> -       MPP3_UNUSED,            /* ? output */
> -       MPP4_UNUSED,            /* ? output */
> -       MPP5_UNUSED,            /* ? output */
> -       MPP6_UNUSED,            /* ? output */
> -       MPP7_UNUSED,            /* ? output */
> -       MPP8_GPIO,              /* i/o right amber LED */
> -       MPP9_GPIO,              /* i/o left amber LED */
> -       MPP10_GPIO,             /* input */
> -       MPP11_UNUSED,
> -       MPP12_SATA_LED,
> -       MPP13_SATA_LED,
> -       MPP14_SATA_LED,
> -       MPP15_SATA_LED,
> -       MPP16_UNUSED,
> -       MPP17_GPIO,             /* power button LED */
> -       MPP18_GPIO,             /* fan speed bit 0 */
> -       MPP19_GPIO,             /* fan speed bit 1 */
> -       0,
> -};
> -
> -/* Rev C1 Fan speed notes:
> - *
> - * The fan is controlled by 2 GPIOs on this board. The settings
> - * of the bits is as follow:
> - *
> - *  GPIO 18    GPIO 19    Fan
> - *
> - *    0          0        stopped
> - *    0          1        low speed
> - *    1          0        high speed
> - *    1          1        don't do that (*)
> - *
> - * (*) I think the two bits control two feed-in resistors into a fixed
> - *     PWN circuit, setting both bits will basically go a 'bit' faster
> - *     than high speed, but d-link doesn't do it and you may get out of
> - *     HW spec so don't do it.
> - */
> -
> -/*
> - * On the DNS-323 A1 and B1 the following devices are attached via I2C:
> - *
> - *  i2c addr | chip        | description
> - *  0x3e     | GMT G760Af  | fan speed PWM controller
> - *  0x48     | GMT G751-2f | temp. sensor and therm. watchdog (LM75 compatible)
> - *  0x68     | ST M41T80   | RTC w/ alarm
> - */
> -static struct i2c_board_info __initdata dns323ab_i2c_devices[] = {
> -       {
> -               I2C_BOARD_INFO("g760a", 0x3e),
> -       }, {
> -               I2C_BOARD_INFO("lm75", 0x48),
> -       }, {
> -               I2C_BOARD_INFO("m41t80", 0x68),
> -       },
> -};
> -
> -/*
> - * On the DNS-323 C1 the following devices are attached via I2C:
> - *
> - *  i2c addr | chip        | description
> - *  0x48     | GMT G751-2f | temp. sensor and therm. watchdog (LM75 compatible)
> - *  0x68     | ST M41T80   | RTC w/ alarm
> - */
> -static struct i2c_board_info __initdata dns323c_i2c_devices[] = {
> -       {
> -               I2C_BOARD_INFO("lm75", 0x48),
> -       }, {
> -               I2C_BOARD_INFO("m41t80", 0x68),
> -       },
> -};
> -
> -/* DNS-323 rev. A specific power off method */
> -static void dns323a_power_off(void)
> -{
> -       pr_info("DNS-323: Triggering power-off...\n");
> -       gpio_set_value(DNS323_GPIO_POWER_OFF, 1);
> -}
> -
> -/* DNS-323 rev B specific power off method */
> -static void dns323b_power_off(void)
> -{
> -       pr_info("DNS-323: Triggering power-off...\n");
> -       /* Pin has to be changed to 1 and back to 0 to do actual power off. */
> -       gpio_set_value(DNS323_GPIO_POWER_OFF, 1);
> -       mdelay(100);
> -       gpio_set_value(DNS323_GPIO_POWER_OFF, 0);
> -}
> -
> -/* DNS-323 rev. C specific power off method */
> -static void dns323c_power_off(void)
> -{
> -       pr_info("DNS-323: Triggering power-off...\n");
> -       gpio_set_value(DNS323C_GPIO_POWER_OFF, 1);
> -}
> -
> -static int dns323c_phy_fixup(struct phy_device *phy)
> -{
> -       phy->dev_flags |= MARVELL_PHY_M1118_DNS323_LEDS;
> -
> -       return 0;
> -}
> -
> -static int __init dns323_identify_rev(void)
> -{
> -       u32 dev, rev, i, reg;
> -
> -       pr_debug("DNS-323: Identifying board ... \n");
> -
> -       /* Rev A1 has a 5181 */
> -       orion5x_pcie_id(&dev, &rev);
> -       if (dev == MV88F5181_DEV_ID) {
> -               pr_debug("DNS-323: 5181 found, board is A1\n");
> -               return DNS323_REV_A1;
> -       }
> -       pr_debug("DNS-323: 5182 found, board is B1 or C1, checking PHY...\n");
> -
> -       /* Rev B1 and C1 both have 5182, let's poke at the eth PHY. This is
> -        * a bit gross but we want to do that without links into the eth
> -        * driver so let's poke at it directly. We default to rev B1 in
> -        * case the accesses fail
> -        */
> -
> -#define ETH_SMI_REG            (ORION5X_ETH_VIRT_BASE + 0x2000 + 0x004)
> -#define  SMI_BUSY              0x10000000
> -#define  SMI_READ_VALID                0x08000000
> -#define  SMI_OPCODE_READ       0x04000000
> -#define  SMI_OPCODE_WRITE      0x00000000
> -
> -       for (i = 0; i < 1000; i++) {
> -               reg = readl(ETH_SMI_REG);
> -               if (!(reg & SMI_BUSY))
> -                       break;
> -       }
> -       if (i >= 1000) {
> -               pr_warn("DNS-323: Timeout accessing PHY, assuming rev B1\n");
> -               return DNS323_REV_B1;
> -       }
> -       writel((3 << 21)        /* phy ID reg */ |
> -              (8 << 16)        /* phy addr */ |
> -              SMI_OPCODE_READ, ETH_SMI_REG);
> -       for (i = 0; i < 1000; i++) {
> -               reg = readl(ETH_SMI_REG);
> -               if (reg & SMI_READ_VALID)
> -                       break;
> -       }
> -       if (i >= 1000) {
> -               pr_warn("DNS-323: Timeout reading PHY, assuming rev B1\n");
> -               return DNS323_REV_B1;
> -       }
> -       pr_debug("DNS-323: Ethernet PHY ID 0x%x\n", reg & 0xffff);
> -
> -       /* Note: the Marvell tools mask the ID with 0x3f0 before comparison
> -        * but I don't see that making a difference here, at least with
> -        * any known Marvell PHY ID
> -        */
> -       switch(reg & 0xfff0) {
> -       case 0x0cc0: /* MV88E1111 */
> -               return DNS323_REV_B1;
> -       case 0x0e10: /* MV88E1118 */
> -               return DNS323_REV_C1;
> -       default:
> -               pr_warn("DNS-323: Unknown PHY ID 0x%04x, assuming rev B1\n",
> -                       reg & 0xffff);
> -       }
> -       return DNS323_REV_B1;
> -}
> -
> -static void __init dns323_init(void)
> -{
> -       /* Setup basic Orion functions. Need to be called early. */
> -       orion5x_init();
> -
> -       /* Identify revision */
> -       system_rev = dns323_identify_rev();
> -       pr_info("DNS-323: Identified HW revision %c1\n", 'A' + system_rev);
> -
> -       /* Just to be tricky, the 5182 has a completely different
> -        * set of MPP modes to the 5181.
> -        */
> -       switch(system_rev) {
> -       case DNS323_REV_A1:
> -               orion5x_mpp_conf(dns323a_mpp_modes);
> -               writel(0, MPP_DEV_CTRL);                /* DEV_D[31:16] */
> -               break;
> -       case DNS323_REV_B1:
> -               orion5x_mpp_conf(dns323b_mpp_modes);
> -               break;
> -       case DNS323_REV_C1:
> -               orion5x_mpp_conf(dns323c_mpp_modes);
> -               break;
> -       }
> -
> -       /* setup flash mapping
> -        * CS3 holds a 8 MB Spansion S29GL064M90TFIR4
> -        */
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   DNS323_NOR_BOOT_BASE,
> -                                   DNS323_NOR_BOOT_SIZE);
> -       platform_device_register(&dns323_nor_flash);
> -
> -       /* Sort out LEDs, Buttons and i2c devices */
> -       switch(system_rev) {
> -       case DNS323_REV_A1:
> -               /* The 5181 power LED is active low and requires
> -                * DNS323_GPIO_LED_POWER1 to also be low.
> -                */
> -               gpiod_add_lookup_table(&dns323a1_leds_gpio_table);
> -               gpio_request(DNS323_GPIO_LED_POWER1, "Power Led Enable");
> -               gpio_direction_output(DNS323_GPIO_LED_POWER1, 0);
> -               i2c_register_board_info(0, dns323ab_i2c_devices,
> -                                       ARRAY_SIZE(dns323ab_i2c_devices));
> -
> -               break;
> -       case DNS323_REV_B1:
> -               gpiod_add_lookup_table(&dns323b1_leds_gpio_table);
> -               i2c_register_board_info(0, dns323ab_i2c_devices,
> -                               ARRAY_SIZE(dns323ab_i2c_devices));
> -               break;
> -       case DNS323_REV_C1:
> -               /* Hookup LEDs & Buttons */
> -               gpiod_add_lookup_table(&dns323c_leds_gpio_table);
> -               dns323_gpio_leds.dev.platform_data = &dns323c_led_data;
> -               dns323_button_device.dev.platform_data = &dns323c_button_data;
> -
> -               /* Hookup i2c devices and fan driver */
> -               i2c_register_board_info(0, dns323c_i2c_devices,
> -                               ARRAY_SIZE(dns323c_i2c_devices));
> -               platform_device_register_simple("dns323c-fan", 0, NULL, 0);
> -
> -               /* Register fixup for the PHY LEDs */
> -               if (!IS_BUILTIN(CONFIG_PHYLIB))
> -                       break;
> -               phy_register_fixup_for_uid(MARVELL_PHY_ID_88E1118,
> -                                          MARVELL_PHY_ID_MASK,
> -                                          dns323c_phy_fixup);
> -       }
> -
> -       platform_device_register(&dns323_gpio_leds);
> -       platform_device_register(&dns323_button_device);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       if (dns323_read_mac_addr() < 0)
> -               printk("DNS-323: Failed to read MAC address\n");
> -       orion5x_ehci0_init();
> -       orion5x_eth_init(&dns323_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_uart0_init();
> -
> -       /* Remaining GPIOs */
> -       switch(system_rev) {
> -       case DNS323_REV_A1:
> -               /* Poweroff GPIO */
> -               if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 ||
> -                   gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0)
> -                       pr_err("DNS-323: failed to setup power-off GPIO\n");
> -               register_platform_power_off(dns323a_power_off);
> -               break;
> -       case DNS323_REV_B1:
> -               /* 5182 built-in SATA init */
> -               orion5x_sata_init(&dns323_sata_data);
> -
> -               /* The DNS323 rev B1 has flag to indicate the system is up.
> -                * Without this flag set, power LED will flash and cannot be
> -                * controlled via leds-gpio.
> -                */
> -               if (gpio_request(DNS323_GPIO_SYSTEM_UP, "SYS_READY") == 0)
> -                       gpio_direction_output(DNS323_GPIO_SYSTEM_UP, 1);
> -
> -               /* Poweroff GPIO */
> -               if (gpio_request(DNS323_GPIO_POWER_OFF, "POWEROFF") != 0 ||
> -                   gpio_direction_output(DNS323_GPIO_POWER_OFF, 0) != 0)
> -                       pr_err("DNS-323: failed to setup power-off GPIO\n");
> -               register_platform_power_off(dns323b_power_off);
> -               break;
> -       case DNS323_REV_C1:
> -               /* 5182 built-in SATA init */
> -               orion5x_sata_init(&dns323_sata_data);
> -
> -               /* Poweroff GPIO */
> -               if (gpio_request(DNS323C_GPIO_POWER_OFF, "POWEROFF") != 0 ||
> -                   gpio_direction_output(DNS323C_GPIO_POWER_OFF, 0) != 0)
> -                       pr_err("DNS-323: failed to setup power-off GPIO\n");
> -               register_platform_power_off(dns323c_power_off);
> -
> -               /* Now, -this- should theoretically be done by the sata_mv driver
> -                * once I figure out what's going on there. Maybe the behaviour
> -                * of the LEDs should be somewhat passed via the platform_data.
> -                * for now, just whack the register and make the LEDs happy
> -                *
> -                * Note: AFAIK, rev B1 needs the same treatment but I'll let
> -                * somebody else test it.
> -                */
> -               writel(0x5, ORION5X_SATA_VIRT_BASE + 0x2c);
> -               break;
> -       }
> -}
> -
> -/* Warning: D-Link uses a wrong mach-type (=526) in their bootloader */
> -MACHINE_START(DNS323, "D-Link DNS-323")
> -       /* Maintainer: Herbert Valerio Riedel <hvr@gnu.org> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = dns323_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c
> deleted file mode 100644
> index e61b9ab06943..000000000000
> --- a/arch/arm/mach-orion5x/kurobox_pro-setup.c
> +++ /dev/null
> @@ -1,407 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-orion5x/kurobox_pro-setup.c
> - *
> - * Maintainer: Ronen Shitrit <rshitrit@marvell.com>
> - */
> -#include <linux/gpio/consumer.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/pci.h>
> -#include <linux/irq.h>
> -#include <linux/delay.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mtd/rawnand.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/i2c.h>
> -#include <linux/serial_reg.h>
> -#include <linux/ata_platform.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/pci.h>
> -#include <linux/platform_data/mtd-orion_nand.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -
> -/*****************************************************************************
> - * KUROBOX-PRO Info
> - ****************************************************************************/
> -
> -/*
> - * 256K NOR flash Device bus boot chip select
> - */
> -
> -#define KUROBOX_PRO_NOR_BOOT_BASE      0xf4000000
> -#define KUROBOX_PRO_NOR_BOOT_SIZE      SZ_256K
> -
> -/*
> - * 256M NAND flash on Device bus chip select 1
> - */
> -
> -#define KUROBOX_PRO_NAND_BASE          0xfc000000
> -#define KUROBOX_PRO_NAND_SIZE          SZ_2M
> -
> -/*****************************************************************************
> - * 256MB NAND Flash on Device bus CS0
> - ****************************************************************************/
> -
> -static struct mtd_partition kurobox_pro_nand_parts[] = {
> -       {
> -               .name   = "uImage",
> -               .offset = 0,
> -               .size   = SZ_4M,
> -       }, {
> -               .name   = "rootfs",
> -               .offset = SZ_4M,
> -               .size   = SZ_64M,
> -       }, {
> -               .name   = "extra",
> -               .offset = SZ_4M + SZ_64M,
> -               .size   = SZ_256M - (SZ_4M + SZ_64M),
> -       },
> -};
> -
> -static struct resource kurobox_pro_nand_resource = {
> -       .flags          = IORESOURCE_MEM,
> -       .start          = KUROBOX_PRO_NAND_BASE,
> -       .end            = KUROBOX_PRO_NAND_BASE + KUROBOX_PRO_NAND_SIZE - 1,
> -};
> -
> -static struct orion_nand_data kurobox_pro_nand_data = {
> -       .parts          = kurobox_pro_nand_parts,
> -       .nr_parts       = ARRAY_SIZE(kurobox_pro_nand_parts),
> -       .cle            = 0,
> -       .ale            = 1,
> -       .width          = 8,
> -};
> -
> -static struct platform_device kurobox_pro_nand_flash = {
> -       .name           = "orion_nand",
> -       .id             = -1,
> -       .dev            = {
> -               .platform_data  = &kurobox_pro_nand_data,
> -       },
> -       .resource       = &kurobox_pro_nand_resource,
> -       .num_resources  = 1,
> -};
> -
> -/*****************************************************************************
> - * 256KB NOR Flash on BOOT Device
> - ****************************************************************************/
> -
> -static struct physmap_flash_data kurobox_pro_nor_flash_data = {
> -       .width          = 1,
> -};
> -
> -static struct resource kurobox_pro_nor_flash_resource = {
> -       .flags                  = IORESOURCE_MEM,
> -       .start                  = KUROBOX_PRO_NOR_BOOT_BASE,
> -       .end                    = KUROBOX_PRO_NOR_BOOT_BASE + KUROBOX_PRO_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device kurobox_pro_nor_flash = {
> -       .name                   = "physmap-flash",
> -       .id                     = 0,
> -       .dev            = {
> -               .platform_data  = &kurobox_pro_nor_flash_data,
> -       },
> -       .num_resources          = 1,
> -       .resource               = &kurobox_pro_nor_flash_resource,
> -};
> -
> -/*****************************************************************************
> - * PCI
> - ****************************************************************************/
> -
> -static int __init kurobox_pro_pci_map_irq(const struct pci_dev *dev, u8 slot,
> -       u8 pin)
> -{
> -       int irq;
> -
> -       /*
> -        * Check for devices with hard-wired IRQs.
> -        */
> -       irq = orion5x_pci_map_irq(dev, slot, pin);
> -       if (irq != -1)
> -               return irq;
> -
> -       /*
> -        * PCI isn't used on the Kuro
> -        */
> -       return -1;
> -}
> -
> -static struct hw_pci kurobox_pro_pci __initdata = {
> -       .nr_controllers = 2,
> -       .setup          = orion5x_pci_sys_setup,
> -       .scan           = orion5x_pci_sys_scan_bus,
> -       .map_irq        = kurobox_pro_pci_map_irq,
> -};
> -
> -static int __init kurobox_pro_pci_init(void)
> -{
> -       if (machine_is_kurobox_pro()) {
> -               orion5x_pci_disable();
> -               pci_common_init(&kurobox_pro_pci);
> -       }
> -
> -       return 0;
> -}
> -
> -subsys_initcall(kurobox_pro_pci_init);
> -
> -/*****************************************************************************
> - * Ethernet
> - ****************************************************************************/
> -
> -static struct mv643xx_eth_platform_data kurobox_pro_eth_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
> -};
> -
> -/*****************************************************************************
> - * RTC 5C372a on I2C bus
> - ****************************************************************************/
> -static struct i2c_board_info __initdata kurobox_pro_i2c_rtc = {
> -       I2C_BOARD_INFO("rs5c372a", 0x32),
> -};
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -static struct mv_sata_platform_data kurobox_pro_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -/*****************************************************************************
> - * Kurobox Pro specific power off method via UART1-attached microcontroller
> - ****************************************************************************/
> -
> -#define UART1_REG(x)   (UART1_VIRT_BASE + ((UART_##x) << 2))
> -
> -static int kurobox_pro_miconread(unsigned char *buf, int count)
> -{
> -       int i;
> -       int timeout;
> -
> -       for (i = 0; i < count; i++) {
> -               timeout = 10;
> -
> -               while (!(readl(UART1_REG(LSR)) & UART_LSR_DR)) {
> -                       if (--timeout == 0)
> -                               break;
> -                       udelay(1000);
> -               }
> -
> -               if (timeout == 0)
> -                       break;
> -               buf[i] = readl(UART1_REG(RX));
> -       }
> -
> -       /* return read bytes */
> -       return i;
> -}
> -
> -static int kurobox_pro_miconwrite(const unsigned char *buf, int count)
> -{
> -       int i = 0;
> -
> -       while (count--) {
> -               while (!(readl(UART1_REG(LSR)) & UART_LSR_THRE))
> -                       barrier();
> -               writel(buf[i++], UART1_REG(TX));
> -       }
> -
> -       return 0;
> -}
> -
> -static int kurobox_pro_miconsend(const unsigned char *data, int count)
> -{
> -       int i;
> -       unsigned char checksum = 0;
> -       unsigned char recv_buf[40];
> -       unsigned char send_buf[40];
> -       unsigned char correct_ack[3];
> -       int retry = 2;
> -
> -       /* Generate checksum */
> -       for (i = 0; i < count; i++)
> -               checksum -=  data[i];
> -
> -       do {
> -               /* Send data */
> -               kurobox_pro_miconwrite(data, count);
> -
> -               /* send checksum */
> -               kurobox_pro_miconwrite(&checksum, 1);
> -
> -               if (kurobox_pro_miconread(recv_buf, sizeof(recv_buf)) <= 3) {
> -                       printk(KERN_ERR ">%s: receive failed.\n", __func__);
> -
> -                       /* send preamble to clear the receive buffer */
> -                       memset(&send_buf, 0xff, sizeof(send_buf));
> -                       kurobox_pro_miconwrite(send_buf, sizeof(send_buf));
> -
> -                       /* make dummy reads */
> -                       mdelay(100);
> -                       kurobox_pro_miconread(recv_buf, sizeof(recv_buf));
> -               } else {
> -                       /* Generate expected ack */
> -                       correct_ack[0] = 0x01;
> -                       correct_ack[1] = data[1];
> -                       correct_ack[2] = 0x00;
> -
> -                       /* checksum Check */
> -                       if ((recv_buf[0] + recv_buf[1] + recv_buf[2] +
> -                            recv_buf[3]) & 0xFF) {
> -                               printk(KERN_ERR ">%s: Checksum Error : "
> -                                       "Received data[%02x, %02x, %02x, %02x]"
> -                                       "\n", __func__, recv_buf[0],
> -                                       recv_buf[1], recv_buf[2], recv_buf[3]);
> -                       } else {
> -                               /* Check Received Data */
> -                               if (correct_ack[0] == recv_buf[0] &&
> -                                   correct_ack[1] == recv_buf[1] &&
> -                                   correct_ack[2] == recv_buf[2]) {
> -                                       /* Interval for next command */
> -                                       mdelay(10);
> -
> -                                       /* Receive ACK */
> -                                       return 0;
> -                               }
> -                       }
> -                       /* Received NAK or illegal Data */
> -                       printk(KERN_ERR ">%s: Error : NAK or Illegal Data "
> -                                       "Received\n", __func__);
> -               }
> -       } while (retry--);
> -
> -       /* Interval for next command */
> -       mdelay(10);
> -
> -       return -1;
> -}
> -
> -static void kurobox_pro_power_off(void)
> -{
> -       const unsigned char watchdogkill[]      = {0x01, 0x35, 0x00};
> -       const unsigned char shutdownwait[]      = {0x00, 0x0c};
> -       const unsigned char poweroff[]          = {0x00, 0x06};
> -       /* 38400 baud divisor */
> -       const unsigned divisor = ((orion5x_tclk + (8 * 38400)) / (16 * 38400));
> -
> -       pr_info("%s: triggering power-off...\n", __func__);
> -
> -       /* hijack uart1 and reset into sane state (38400,8n1,even parity) */
> -       writel(0x83, UART1_REG(LCR));
> -       writel(divisor & 0xff, UART1_REG(DLL));
> -       writel((divisor >> 8) & 0xff, UART1_REG(DLM));
> -       writel(0x1b, UART1_REG(LCR));
> -       writel(0x00, UART1_REG(IER));
> -       writel(0x07, UART1_REG(FCR));
> -       writel(0x00, UART1_REG(MCR));
> -
> -       /* Send the commands to shutdown the Kurobox Pro */
> -       kurobox_pro_miconsend(watchdogkill, sizeof(watchdogkill)) ;
> -       kurobox_pro_miconsend(shutdownwait, sizeof(shutdownwait)) ;
> -       kurobox_pro_miconsend(poweroff, sizeof(poweroff));
> -}
> -
> -/*****************************************************************************
> - * General Setup
> - ****************************************************************************/
> -static unsigned int kurobox_pro_mpp_modes[] __initdata = {
> -       MPP0_UNUSED,
> -       MPP1_UNUSED,
> -       MPP2_GPIO,              /* GPIO Micon */
> -       MPP3_GPIO,              /* GPIO Rtc */
> -       MPP4_UNUSED,
> -       MPP5_UNUSED,
> -       MPP6_NAND,              /* NAND Flash REn */
> -       MPP7_NAND,              /* NAND Flash WEn */
> -       MPP8_UNUSED,
> -       MPP9_UNUSED,
> -       MPP10_UNUSED,
> -       MPP11_UNUSED,
> -       MPP12_SATA_LED,         /* SATA 0 presence */
> -       MPP13_SATA_LED,         /* SATA 1 presence */
> -       MPP14_SATA_LED,         /* SATA 0 active */
> -       MPP15_SATA_LED,         /* SATA 1 active */
> -       MPP16_UART,             /* UART1 RXD */
> -       MPP17_UART,             /* UART1 TXD */
> -       MPP18_UART,             /* UART1 CTSn */
> -       MPP19_UART,             /* UART1 RTSn */
> -       0,
> -};
> -
> -static void __init kurobox_pro_init(void)
> -{
> -       /*
> -        * Setup basic Orion functions. Need to be called early.
> -        */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(kurobox_pro_mpp_modes);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       orion5x_ehci0_init();
> -       orion5x_ehci1_init();
> -       orion5x_eth_init(&kurobox_pro_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_sata_init(&kurobox_pro_sata_data);
> -       orion5x_uart0_init();
> -       orion5x_uart1_init();
> -       orion5x_xor_init();
> -
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   KUROBOX_PRO_NOR_BOOT_BASE,
> -                                   KUROBOX_PRO_NOR_BOOT_SIZE);
> -       platform_device_register(&kurobox_pro_nor_flash);
> -
> -       if (machine_is_kurobox_pro()) {
> -               mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_TARGET(0),
> -                                           ORION_MBUS_DEVBUS_ATTR(0),
> -                                           KUROBOX_PRO_NAND_BASE,
> -                                           KUROBOX_PRO_NAND_SIZE);
> -               platform_device_register(&kurobox_pro_nand_flash);
> -       }
> -
> -       i2c_register_board_info(0, &kurobox_pro_i2c_rtc, 1);
> -
> -       /* register Kurobox Pro specific power-off method */
> -       register_platform_power_off(kurobox_pro_power_off);
> -}
> -
> -#ifdef CONFIG_MACH_KUROBOX_PRO
> -MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
> -       /* Maintainer: Ronen Shitrit <rshitrit@marvell.com> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = kurobox_pro_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> -#endif
> -
> -#ifdef CONFIG_MACH_LINKSTATION_PRO
> -MACHINE_START(LINKSTATION_PRO, "Buffalo Linkstation Pro/Live")
> -       /* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = kurobox_pro_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> -#endif
> diff --git a/arch/arm/mach-orion5x/mv2120-setup.c b/arch/arm/mach-orion5x/mv2120-setup.c
> deleted file mode 100644
> index b15fe5b7a0f9..000000000000
> --- a/arch/arm/mach-orion5x/mv2120-setup.c
> +++ /dev/null
> @@ -1,256 +0,0 @@
> -/*
> - * Copyright (C) 2007 Herbert Valerio Riedel <hvr@gnu.org>
> - * Copyright (C) 2008 Martin Michlmayr <tbm@cyrius.com>
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU Lesser General Public License as
> - * published by the Free Software Foundation; either version 2 of the
> - * License, or (at your option) any later version.
> - */
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/irq.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/leds.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/input.h>
> -#include <linux/i2c.h>
> -#include <linux/ata_platform.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -
> -#define MV2120_NOR_BOOT_BASE   0xf4000000
> -#define MV2120_NOR_BOOT_SIZE   SZ_512K
> -
> -#define MV2120_GPIO_RTC_IRQ    3
> -#define MV2120_GPIO_KEY_RESET  17
> -#define MV2120_GPIO_KEY_POWER  18
> -#define MV2120_GPIO_POWER_OFF  19
> -
> -
> -/*****************************************************************************
> - * Ethernet
> - ****************************************************************************/
> -static struct mv643xx_eth_platform_data mv2120_eth_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
> -};
> -
> -static struct mv_sata_platform_data mv2120_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -static struct mtd_partition mv2120_partitions[] = {
> -       {
> -               .name   = "firmware",
> -               .size   = 0x00080000,
> -               .offset = 0,
> -       },
> -};
> -
> -static struct physmap_flash_data mv2120_nor_flash_data = {
> -       .width          = 1,
> -       .parts          = mv2120_partitions,
> -       .nr_parts       = ARRAY_SIZE(mv2120_partitions)
> -};
> -
> -static struct resource mv2120_nor_flash_resource = {
> -       .flags          = IORESOURCE_MEM,
> -       .start          = MV2120_NOR_BOOT_BASE,
> -       .end            = MV2120_NOR_BOOT_BASE + MV2120_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device mv2120_nor_flash = {
> -       .name           = "physmap-flash",
> -       .id             = 0,
> -       .dev            = {
> -               .platform_data  = &mv2120_nor_flash_data,
> -       },
> -       .resource       = &mv2120_nor_flash_resource,
> -       .num_resources  = 1,
> -};
> -
> -static struct gpio_keys_button mv2120_buttons[] = {
> -       {
> -               .code           = KEY_RESTART,
> -               .gpio           = MV2120_GPIO_KEY_RESET,
> -               .desc           = "reset",
> -               .active_low     = 1,
> -       }, {
> -               .code           = KEY_POWER,
> -               .gpio           = MV2120_GPIO_KEY_POWER,
> -               .desc           = "power",
> -               .active_low     = 1,
> -       },
> -};
> -
> -static struct gpio_keys_platform_data mv2120_button_data = {
> -       .buttons        = mv2120_buttons,
> -       .nbuttons       = ARRAY_SIZE(mv2120_buttons),
> -};
> -
> -static struct platform_device mv2120_button_device = {
> -       .name           = "gpio-keys",
> -       .id             = -1,
> -       .num_resources  = 0,
> -       .dev            = {
> -               .platform_data  = &mv2120_button_data,
> -       },
> -};
> -
> -
> -/****************************************************************************
> - * General Setup
> - ****************************************************************************/
> -static unsigned int mv2120_mpp_modes[] __initdata = {
> -       MPP0_GPIO,              /* Sys status LED */
> -       MPP1_GPIO,              /* Sys error LED */
> -       MPP2_GPIO,              /* OverTemp interrupt */
> -       MPP3_GPIO,              /* RTC interrupt */
> -       MPP4_GPIO,              /* V_LED 5V */
> -       MPP5_GPIO,              /* V_LED 3.3V */
> -       MPP6_UNUSED,
> -       MPP7_UNUSED,
> -       MPP8_GPIO,              /* SATA 0 fail LED */
> -       MPP9_GPIO,              /* SATA 1 fail LED */
> -       MPP10_UNUSED,
> -       MPP11_UNUSED,
> -       MPP12_SATA_LED,         /* SATA 0 presence */
> -       MPP13_SATA_LED,         /* SATA 1 presence */
> -       MPP14_SATA_LED,         /* SATA 0 active */
> -       MPP15_SATA_LED,         /* SATA 1 active */
> -       MPP16_UNUSED,
> -       MPP17_GPIO,             /* Reset button */
> -       MPP18_GPIO,             /* Power button */
> -       MPP19_GPIO,             /* Power off */
> -       0,
> -};
> -
> -static struct i2c_board_info __initdata mv2120_i2c_rtc = {
> -       I2C_BOARD_INFO("pcf8563", 0x51),
> -       .irq    = 0,
> -};
> -
> -static struct gpio_led mv2120_led_pins[] = {
> -       {
> -               .name                   = "mv2120:blue:health",
> -       },
> -       {
> -               .name                   = "mv2120:red:health",
> -       },
> -       {
> -               .name                   = "mv2120:led:bright",
> -               .default_trigger        = "default-on",
> -       },
> -       {
> -               .name                   = "mv2120:led:dimmed",
> -       },
> -       {
> -               .name                   = "mv2120:red:sata0",
> -       },
> -       {
> -               .name                   = "mv2120:red:sata1",
> -       },
> -
> -};
> -
> -static struct gpiod_lookup_table mv2120_leds_gpio_table = {
> -       .dev_id = "leds-gpio",
> -       .table = {
> -               GPIO_LOOKUP_IDX("orion_gpio0", 0, NULL,
> -                               0, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 1, NULL,
> -                               1, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 4, NULL,
> -                               2, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 5, NULL,
> -                               3, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 8, NULL,
> -                               4, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 9, NULL,
> -                               5, GPIO_ACTIVE_LOW),
> -               { },
> -       },
> -};
> -
> -static struct gpio_led_platform_data mv2120_led_data = {
> -       .leds           = mv2120_led_pins,
> -       .num_leds       = ARRAY_SIZE(mv2120_led_pins),
> -};
> -
> -static struct platform_device mv2120_leds = {
> -       .name   = "leds-gpio",
> -       .id     = -1,
> -       .dev    = {
> -               .platform_data  = &mv2120_led_data,
> -       }
> -};
> -
> -static void mv2120_power_off(void)
> -{
> -       pr_info("%s: triggering power-off...\n", __func__);
> -       gpio_set_value(MV2120_GPIO_POWER_OFF, 0);
> -}
> -
> -static void __init mv2120_init(void)
> -{
> -       /* Setup basic Orion functions. Need to be called early. */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(mv2120_mpp_modes);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       orion5x_ehci0_init();
> -       orion5x_ehci1_init();
> -       orion5x_eth_init(&mv2120_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_sata_init(&mv2120_sata_data);
> -       orion5x_uart0_init();
> -       orion5x_xor_init();
> -
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   MV2120_NOR_BOOT_BASE,
> -                                   MV2120_NOR_BOOT_SIZE);
> -       platform_device_register(&mv2120_nor_flash);
> -
> -       platform_device_register(&mv2120_button_device);
> -
> -       if (gpio_request(MV2120_GPIO_RTC_IRQ, "rtc") == 0) {
> -               if (gpio_direction_input(MV2120_GPIO_RTC_IRQ) == 0)
> -                       mv2120_i2c_rtc.irq = gpio_to_irq(MV2120_GPIO_RTC_IRQ);
> -               else
> -                       gpio_free(MV2120_GPIO_RTC_IRQ);
> -       }
> -       i2c_register_board_info(0, &mv2120_i2c_rtc, 1);
> -       gpiod_add_lookup_table(&mv2120_leds_gpio_table);
> -       platform_device_register(&mv2120_leds);
> -
> -       /* register mv2120 specific power-off method */
> -       if (gpio_request(MV2120_GPIO_POWER_OFF, "POWEROFF") != 0 ||
> -           gpio_direction_output(MV2120_GPIO_POWER_OFF, 1) != 0)
> -               pr_err("mv2120: failed to setup power-off GPIO\n");
> -       register_platform_power_off(mv2120_power_off);
> -}
> -
> -/* Warning: HP uses a wrong mach-type (=526) in their bootloader */
> -MACHINE_START(MV2120, "HP Media Vault mv2120")
> -       /* Maintainer: Martin Michlmayr <tbm@cyrius.com> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = mv2120_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/net2big-setup.c b/arch/arm/mach-orion5x/net2big-setup.c
> deleted file mode 100644
> index f04571e79805..000000000000
> --- a/arch/arm/mach-orion5x/net2big-setup.c
> +++ /dev/null
> @@ -1,444 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-orion5x/net2big-setup.c
> - *
> - * LaCie 2Big Network NAS setup
> - *
> - * Copyright (C) 2009 Simon Guinot <sguinot@lacie.com>
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/leds.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/input.h>
> -#include <linux/i2c.h>
> -#include <linux/ata_platform.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/delay.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <plat/orion-gpio.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -
> -/*****************************************************************************
> - * LaCie 2Big Network Info
> - ****************************************************************************/
> -
> -/*
> - * 512KB NOR flash Device bus boot chip select
> - */
> -
> -#define NET2BIG_NOR_BOOT_BASE          0xfff80000
> -#define NET2BIG_NOR_BOOT_SIZE          SZ_512K
> -
> -/*****************************************************************************
> - * 512KB NOR Flash on Boot Device
> - ****************************************************************************/
> -
> -/*
> - * TODO: Check write support on flash MX29LV400CBTC-70G
> - */
> -
> -static struct mtd_partition net2big_partitions[] = {
> -       {
> -               .name           = "Full512kb",
> -               .size           = MTDPART_SIZ_FULL,
> -               .offset         = 0x00000000,
> -               .mask_flags     = MTD_WRITEABLE,
> -       },
> -};
> -
> -static struct physmap_flash_data net2big_nor_flash_data = {
> -       .width          = 1,
> -       .parts          = net2big_partitions,
> -       .nr_parts       = ARRAY_SIZE(net2big_partitions),
> -};
> -
> -static struct resource net2big_nor_flash_resource = {
> -       .flags                  = IORESOURCE_MEM,
> -       .start                  = NET2BIG_NOR_BOOT_BASE,
> -       .end                    = NET2BIG_NOR_BOOT_BASE
> -                                       + NET2BIG_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device net2big_nor_flash = {
> -       .name                   = "physmap-flash",
> -       .id                     = 0,
> -       .dev            = {
> -               .platform_data  = &net2big_nor_flash_data,
> -       },
> -       .num_resources          = 1,
> -       .resource               = &net2big_nor_flash_resource,
> -};
> -
> -/*****************************************************************************
> - * Ethernet
> - ****************************************************************************/
> -
> -static struct mv643xx_eth_platform_data net2big_eth_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
> -};
> -
> -/*****************************************************************************
> - * I2C devices
> - ****************************************************************************/
> -
> -/*
> - * i2c addr | chip         | description
> - * 0x32     | Ricoh 5C372b | RTC
> - * 0x50     | HT24LC08     | eeprom (1kB)
> - */
> -static struct i2c_board_info __initdata net2big_i2c_devices[] = {
> -       {
> -               I2C_BOARD_INFO("rs5c372b", 0x32),
> -       }, {
> -               I2C_BOARD_INFO("24c08", 0x50),
> -       },
> -};
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -
> -static struct mv_sata_platform_data net2big_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -#define NET2BIG_GPIO_SATA_POWER_REQ    19
> -#define NET2BIG_GPIO_SATA0_POWER       23
> -#define NET2BIG_GPIO_SATA1_POWER       25
> -
> -static void __init net2big_sata_power_init(void)
> -{
> -       int err;
> -
> -       /* Configure GPIOs over MPP max number. */
> -       orion_gpio_set_valid(NET2BIG_GPIO_SATA0_POWER, 1);
> -       orion_gpio_set_valid(NET2BIG_GPIO_SATA1_POWER, 1);
> -
> -       err = gpio_request(NET2BIG_GPIO_SATA0_POWER, "SATA0 power status");
> -       if (err == 0) {
> -               err = gpio_direction_input(NET2BIG_GPIO_SATA0_POWER);
> -               if (err)
> -                       gpio_free(NET2BIG_GPIO_SATA0_POWER);
> -       }
> -       if (err) {
> -               pr_err("net2big: failed to setup SATA0 power GPIO\n");
> -               return;
> -       }
> -
> -       err = gpio_request(NET2BIG_GPIO_SATA1_POWER, "SATA1 power status");
> -       if (err == 0) {
> -               err = gpio_direction_input(NET2BIG_GPIO_SATA1_POWER);
> -               if (err)
> -                       gpio_free(NET2BIG_GPIO_SATA1_POWER);
> -       }
> -       if (err) {
> -               pr_err("net2big: failed to setup SATA1 power GPIO\n");
> -               goto err_free_1;
> -       }
> -
> -       err = gpio_request(NET2BIG_GPIO_SATA_POWER_REQ, "SATA power request");
> -       if (err == 0) {
> -               err = gpio_direction_output(NET2BIG_GPIO_SATA_POWER_REQ, 0);
> -               if (err)
> -                       gpio_free(NET2BIG_GPIO_SATA_POWER_REQ);
> -       }
> -       if (err) {
> -               pr_err("net2big: failed to setup SATA power request GPIO\n");
> -               goto err_free_2;
> -       }
> -
> -       if (gpio_get_value(NET2BIG_GPIO_SATA0_POWER) &&
> -               gpio_get_value(NET2BIG_GPIO_SATA1_POWER)) {
> -               return;
> -       }
> -
> -       /*
> -        * SATA power up on both disk is done by pulling high the CPLD power
> -        * request line. The 300ms delay is related to the CPLD clock and is
> -        * needed to be sure that the CPLD has take into account the low line
> -        * status.
> -        */
> -       msleep(300);
> -       gpio_set_value(NET2BIG_GPIO_SATA_POWER_REQ, 1);
> -       pr_info("net2big: power up SATA hard disks\n");
> -
> -       return;
> -
> -err_free_2:
> -       gpio_free(NET2BIG_GPIO_SATA1_POWER);
> -err_free_1:
> -       gpio_free(NET2BIG_GPIO_SATA0_POWER);
> -
> -       return;
> -}
> -
> -/*****************************************************************************
> - * GPIO LEDs
> - ****************************************************************************/
> -
> -/*
> - * The power front LEDs (blue and red) and SATA red LEDs are controlled via a
> - * single GPIO line and are compatible with the leds-gpio driver.
> - *
> - * The SATA blue LEDs have some hardware blink capabilities which are detailed
> - * in the following array:
> - *
> - * SATAx blue LED | SATAx activity | LED state
> - *                |                |
> - *       0        |       0        |  blink (rate 300ms)
> - *       1        |       0        |  off
> - *       ?        |       1        |  on
> - *
> - * Notes: The blue and the red front LED's can't be on at the same time.
> - *        Blue LED have priority.
> - */
> -
> -#define NET2BIG_GPIO_PWR_RED_LED       6
> -#define NET2BIG_GPIO_PWR_BLUE_LED      16
> -#define NET2BIG_GPIO_PWR_LED_BLINK_STOP        7
> -
> -#define NET2BIG_GPIO_SATA0_RED_LED     11
> -#define NET2BIG_GPIO_SATA1_RED_LED     10
> -
> -#define NET2BIG_GPIO_SATA0_BLUE_LED    17
> -#define NET2BIG_GPIO_SATA1_BLUE_LED    13
> -
> -static struct gpio_led net2big_leds[] = {
> -       {
> -               .name = "net2big:red:power",
> -       },
> -       {
> -               .name = "net2big:blue:power",
> -       },
> -       {
> -               .name = "net2big:red:sata0",
> -       },
> -       {
> -               .name = "net2big:red:sata1",
> -       },
> -};
> -
> -static struct gpiod_lookup_table net2big_leds_gpio_table = {
> -       .dev_id = "leds-gpio",
> -       .table = {
> -               GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_PWR_RED_LED, NULL,
> -                               0, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_PWR_BLUE_LED, NULL,
> -                               1, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_SATA0_RED_LED, NULL,
> -                               2, GPIO_ACTIVE_HIGH),
> -               GPIO_LOOKUP_IDX("orion_gpio0", NET2BIG_GPIO_SATA1_RED_LED, NULL,
> -                               3, GPIO_ACTIVE_HIGH),
> -               { },
> -       },
> -};
> -
> -static struct gpio_led_platform_data net2big_led_data = {
> -       .num_leds = ARRAY_SIZE(net2big_leds),
> -       .leds = net2big_leds,
> -};
> -
> -static struct platform_device net2big_gpio_leds = {
> -       .name           = "leds-gpio",
> -       .id             = -1,
> -       .dev            = {
> -               .platform_data  = &net2big_led_data,
> -       },
> -};
> -
> -static void __init net2big_gpio_leds_init(void)
> -{
> -       int err;
> -
> -       /* Stop initial CPLD slow red/blue blinking on power LED. */
> -       err = gpio_request(NET2BIG_GPIO_PWR_LED_BLINK_STOP,
> -                          "Power LED blink stop");
> -       if (err == 0) {
> -               err = gpio_direction_output(NET2BIG_GPIO_PWR_LED_BLINK_STOP, 1);
> -               if (err)
> -                       gpio_free(NET2BIG_GPIO_PWR_LED_BLINK_STOP);
> -       }
> -       if (err)
> -               pr_err("net2big: failed to setup power LED blink GPIO\n");
> -
> -       /*
> -        * Configure SATA0 and SATA1 blue LEDs to blink in relation with the
> -        * hard disk activity.
> -        */
> -       err = gpio_request(NET2BIG_GPIO_SATA0_BLUE_LED,
> -                          "SATA0 blue LED control");
> -       if (err == 0) {
> -               err = gpio_direction_output(NET2BIG_GPIO_SATA0_BLUE_LED, 1);
> -               if (err)
> -                       gpio_free(NET2BIG_GPIO_SATA0_BLUE_LED);
> -       }
> -       if (err)
> -               pr_err("net2big: failed to setup SATA0 blue LED GPIO\n");
> -
> -       err = gpio_request(NET2BIG_GPIO_SATA1_BLUE_LED,
> -                          "SATA1 blue LED control");
> -       if (err == 0) {
> -               err = gpio_direction_output(NET2BIG_GPIO_SATA1_BLUE_LED, 1);
> -               if (err)
> -                       gpio_free(NET2BIG_GPIO_SATA1_BLUE_LED);
> -       }
> -       if (err)
> -               pr_err("net2big: failed to setup SATA1 blue LED GPIO\n");
> -
> -       gpiod_add_lookup_table(&net2big_leds_gpio_table);
> -       platform_device_register(&net2big_gpio_leds);
> -}
> -
> -/****************************************************************************
> - * GPIO keys
> - ****************************************************************************/
> -
> -#define NET2BIG_GPIO_PUSH_BUTTON       18
> -#define NET2BIG_GPIO_POWER_SWITCH_ON   8
> -#define NET2BIG_GPIO_POWER_SWITCH_OFF  9
> -
> -#define NET2BIG_SWITCH_POWER_ON                0x1
> -#define NET2BIG_SWITCH_POWER_OFF       0x2
> -
> -static struct gpio_keys_button net2big_buttons[] = {
> -       {
> -               .type           = EV_SW,
> -               .code           = NET2BIG_SWITCH_POWER_OFF,
> -               .gpio           = NET2BIG_GPIO_POWER_SWITCH_OFF,
> -               .desc           = "Power rocker switch (auto|off)",
> -               .active_low     = 0,
> -       },
> -       {
> -               .type           = EV_SW,
> -               .code           = NET2BIG_SWITCH_POWER_ON,
> -               .gpio           = NET2BIG_GPIO_POWER_SWITCH_ON,
> -               .desc           = "Power rocker switch (on|auto)",
> -               .active_low     = 0,
> -       },
> -       {
> -               .type           = EV_KEY,
> -               .code           = KEY_POWER,
> -               .gpio           = NET2BIG_GPIO_PUSH_BUTTON,
> -               .desc           = "Front Push Button",
> -               .active_low     = 0,
> -       },
> -};
> -
> -static struct gpio_keys_platform_data net2big_button_data = {
> -       .buttons        = net2big_buttons,
> -       .nbuttons       = ARRAY_SIZE(net2big_buttons),
> -};
> -
> -static struct platform_device net2big_gpio_buttons = {
> -       .name           = "gpio-keys",
> -       .id             = -1,
> -       .dev            = {
> -               .platform_data  = &net2big_button_data,
> -       },
> -};
> -
> -/*****************************************************************************
> - * General Setup
> - ****************************************************************************/
> -
> -static unsigned int net2big_mpp_modes[] __initdata = {
> -       MPP0_GPIO,      /* Raid mode (bit 0) */
> -       MPP1_GPIO,      /* USB port 2 fuse (0 = Fail, 1 = Ok) */
> -       MPP2_GPIO,      /* Raid mode (bit 1) */
> -       MPP3_GPIO,      /* Board ID (bit 0) */
> -       MPP4_GPIO,      /* Fan activity (0 = Off, 1 = On) */
> -       MPP5_GPIO,      /* Fan fail detection */
> -       MPP6_GPIO,      /* Red front LED (0 = Off, 1 = On) */
> -       MPP7_GPIO,      /* Disable initial blinking on front LED */
> -       MPP8_GPIO,      /* Rear power switch (on|auto) */
> -       MPP9_GPIO,      /* Rear power switch (auto|off) */
> -       MPP10_GPIO,     /* SATA 1 red LED (0 = Off, 1 = On) */
> -       MPP11_GPIO,     /* SATA 0 red LED (0 = Off, 1 = On) */
> -       MPP12_GPIO,     /* Board ID (bit 1) */
> -       MPP13_GPIO,     /* SATA 1 blue LED blink control */
> -       MPP14_SATA_LED,
> -       MPP15_SATA_LED,
> -       MPP16_GPIO,     /* Blue front LED control */
> -       MPP17_GPIO,     /* SATA 0 blue LED blink control */
> -       MPP18_GPIO,     /* Front button (0 = Released, 1 = Pushed ) */
> -       MPP19_GPIO,     /* SATA{0,1} power On/Off request */
> -       0,
> -       /* 22: USB port 1 fuse (0 = Fail, 1 = Ok) */
> -       /* 23: SATA 0 power status */
> -       /* 24: Board power off */
> -       /* 25: SATA 1 power status */
> -};
> -
> -#define NET2BIG_GPIO_POWER_OFF         24
> -
> -static void net2big_power_off(void)
> -{
> -       gpio_set_value(NET2BIG_GPIO_POWER_OFF, 1);
> -}
> -
> -static void __init net2big_init(void)
> -{
> -       /*
> -        * Setup basic Orion functions. Need to be called early.
> -        */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(net2big_mpp_modes);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       orion5x_ehci0_init();
> -       orion5x_ehci1_init();
> -       orion5x_eth_init(&net2big_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_uart0_init();
> -       orion5x_xor_init();
> -
> -       net2big_sata_power_init();
> -       orion5x_sata_init(&net2big_sata_data);
> -
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   NET2BIG_NOR_BOOT_BASE,
> -                                   NET2BIG_NOR_BOOT_SIZE);
> -       platform_device_register(&net2big_nor_flash);
> -
> -       platform_device_register(&net2big_gpio_buttons);
> -       net2big_gpio_leds_init();
> -
> -       i2c_register_board_info(0, net2big_i2c_devices,
> -                               ARRAY_SIZE(net2big_i2c_devices));
> -
> -       orion_gpio_set_valid(NET2BIG_GPIO_POWER_OFF, 1);
> -
> -       if (gpio_request(NET2BIG_GPIO_POWER_OFF, "power-off") == 0 &&
> -           gpio_direction_output(NET2BIG_GPIO_POWER_OFF, 0) == 0)
> -               register_platform_power_off(net2big_power_off);
> -       else
> -               pr_err("net2big: failed to configure power-off GPIO\n");
> -
> -       pr_notice("net2big: Flash writing is not yet supported.\n");
> -}
> -
> -/* Warning: LaCie use a wrong mach-type (0x20e=526) in their bootloader. */
> -MACHINE_START(NET2BIG, "LaCie 2Big Network")
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = net2big_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/pci.c b/arch/arm/mach-orion5x/pci.c
> index 06f5320036b1..3d1e6ad0e14b 100644
> --- a/arch/arm/mach-orion5x/pci.c
> +++ b/arch/arm/mach-orion5x/pci.c
> @@ -15,7 +15,6 @@
>  #include <asm/irq.h>
>  #include <asm/mach/pci.h>
>  #include <plat/pcie.h>
> -#include <plat/addr-map.h>
>  #include "common.h"
>  #include "orion5x.h"
>
> diff --git a/arch/arm/mach-orion5x/terastation_pro2-setup.c b/arch/arm/mach-orion5x/terastation_pro2-setup.c
> deleted file mode 100644
> index c3db3376950a..000000000000
> --- a/arch/arm/mach-orion5x/terastation_pro2-setup.c
> +++ /dev/null
> @@ -1,366 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * Buffalo Terastation Pro II/Live Board Setup
> - *
> - * Maintainer: Sylver Bruneau <sylver.bruneau@googlemail.com>
> - */
> -#include <linux/gpio/legacy.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/pci.h>
> -#include <linux/irq.h>
> -#include <linux/delay.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/i2c.h>
> -#include <linux/serial_reg.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/pci.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -
> -/*****************************************************************************
> - * Terastation Pro 2/Live Info
> - ****************************************************************************/
> -
> -/*
> - * Terastation Pro 2 hardware :
> - * - Marvell 88F5281-D0
> - * - Marvell 88SX6042 SATA controller (PCI)
> - * - Marvell 88E1118 Gigabit Ethernet PHY
> - * - 256KB NOR flash
> - * - 128MB of DDR RAM
> - * - PCIe port (not equipped)
> - */
> -
> -/*
> - * 256K NOR flash Device bus boot chip select
> - */
> -
> -#define TSP2_NOR_BOOT_BASE     0xf4000000
> -#define TSP2_NOR_BOOT_SIZE     SZ_256K
> -
> -/*****************************************************************************
> - * 256KB NOR Flash on BOOT Device
> - ****************************************************************************/
> -
> -static struct physmap_flash_data tsp2_nor_flash_data = {
> -       .width    = 1,
> -};
> -
> -static struct resource tsp2_nor_flash_resource = {
> -       .flags = IORESOURCE_MEM,
> -       .start = TSP2_NOR_BOOT_BASE,
> -       .end   = TSP2_NOR_BOOT_BASE + TSP2_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device tsp2_nor_flash = {
> -       .name          = "physmap-flash",
> -       .id            = 0,
> -       .dev           = {
> -               .platform_data  = &tsp2_nor_flash_data,
> -       },
> -       .num_resources = 1,
> -       .resource      = &tsp2_nor_flash_resource,
> -};
> -
> -/*****************************************************************************
> - * PCI
> - ****************************************************************************/
> -#define TSP2_PCI_SLOT0_OFFS            7
> -#define TSP2_PCI_SLOT0_IRQ_PIN         11
> -
> -static void __init tsp2_pci_preinit(void)
> -{
> -       int pin;
> -
> -       /*
> -        * Configure PCI GPIO IRQ pins
> -        */
> -       pin = TSP2_PCI_SLOT0_IRQ_PIN;
> -       if (gpio_request(pin, "PCI Int1") == 0) {
> -               if (gpio_direction_input(pin) == 0) {
> -                       irq_set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
> -               } else {
> -                       printk(KERN_ERR "tsp2_pci_preinit failed "
> -                                       "to set_irq_type pin %d\n", pin);
> -                       gpio_free(pin);
> -               }
> -       } else {
> -               printk(KERN_ERR "tsp2_pci_preinit failed to "
> -                               "gpio_request %d\n", pin);
> -       }
> -}
> -
> -static int __init tsp2_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
> -{
> -       int irq;
> -
> -       /*
> -        * Check for devices with hard-wired IRQs.
> -        */
> -       irq = orion5x_pci_map_irq(dev, slot, pin);
> -       if (irq != -1)
> -               return irq;
> -
> -       /*
> -        * PCI IRQs are connected via GPIOs.
> -        */
> -       if (slot == TSP2_PCI_SLOT0_OFFS)
> -               return gpio_to_irq(TSP2_PCI_SLOT0_IRQ_PIN);
> -
> -       return -1;
> -}
> -
> -static struct hw_pci tsp2_pci __initdata = {
> -       .nr_controllers = 2,
> -       .preinit        = tsp2_pci_preinit,
> -       .setup          = orion5x_pci_sys_setup,
> -       .scan           = orion5x_pci_sys_scan_bus,
> -       .map_irq        = tsp2_pci_map_irq,
> -};
> -
> -static int __init tsp2_pci_init(void)
> -{
> -       if (machine_is_terastation_pro2())
> -               pci_common_init(&tsp2_pci);
> -
> -       return 0;
> -}
> -
> -subsys_initcall(tsp2_pci_init);
> -
> -/*****************************************************************************
> - * Ethernet
> - ****************************************************************************/
> -
> -static struct mv643xx_eth_platform_data tsp2_eth_data = {
> -       .phy_addr       = 0,
> -};
> -
> -/*****************************************************************************
> - * RTC 5C372a on I2C bus
> - ****************************************************************************/
> -
> -#define TSP2_RTC_GPIO  9
> -
> -static struct i2c_board_info __initdata tsp2_i2c_rtc = {
> -       I2C_BOARD_INFO("rs5c372a", 0x32),
> -};
> -
> -/*****************************************************************************
> - * Terastation Pro II specific power off method via UART1-attached
> - * microcontroller
> - ****************************************************************************/
> -
> -#define UART1_REG(x)   (UART1_VIRT_BASE + ((UART_##x) << 2))
> -
> -static int tsp2_miconread(unsigned char *buf, int count)
> -{
> -       int i;
> -       int timeout;
> -
> -       for (i = 0; i < count; i++) {
> -               timeout = 10;
> -
> -               while (!(readl(UART1_REG(LSR)) & UART_LSR_DR)) {
> -                       if (--timeout == 0)
> -                               break;
> -                       udelay(1000);
> -               }
> -
> -               if (timeout == 0)
> -                       break;
> -               buf[i] = readl(UART1_REG(RX));
> -       }
> -
> -       /* return read bytes */
> -       return i;
> -}
> -
> -static int tsp2_miconwrite(const unsigned char *buf, int count)
> -{
> -       int i = 0;
> -
> -       while (count--) {
> -               while (!(readl(UART1_REG(LSR)) & UART_LSR_THRE))
> -                       barrier();
> -               writel(buf[i++], UART1_REG(TX));
> -       }
> -
> -       return 0;
> -}
> -
> -static int tsp2_miconsend(const unsigned char *data, int count)
> -{
> -       int i;
> -       unsigned char checksum = 0;
> -       unsigned char recv_buf[40];
> -       unsigned char send_buf[40];
> -       unsigned char correct_ack[3];
> -       int retry = 2;
> -
> -       /* Generate checksum */
> -       for (i = 0; i < count; i++)
> -               checksum -=  data[i];
> -
> -       do {
> -               /* Send data */
> -               tsp2_miconwrite(data, count);
> -
> -               /* send checksum */
> -               tsp2_miconwrite(&checksum, 1);
> -
> -               if (tsp2_miconread(recv_buf, sizeof(recv_buf)) <= 3) {
> -                       printk(KERN_ERR ">%s: receive failed.\n", __func__);
> -
> -                       /* send preamble to clear the receive buffer */
> -                       memset(&send_buf, 0xff, sizeof(send_buf));
> -                       tsp2_miconwrite(send_buf, sizeof(send_buf));
> -
> -                       /* make dummy reads */
> -                       mdelay(100);
> -                       tsp2_miconread(recv_buf, sizeof(recv_buf));
> -               } else {
> -                       /* Generate expected ack */
> -                       correct_ack[0] = 0x01;
> -                       correct_ack[1] = data[1];
> -                       correct_ack[2] = 0x00;
> -
> -                       /* checksum Check */
> -                       if ((recv_buf[0] + recv_buf[1] + recv_buf[2] +
> -                            recv_buf[3]) & 0xFF) {
> -                               printk(KERN_ERR ">%s: Checksum Error : "
> -                                       "Received data[%02x, %02x, %02x, %02x]"
> -                                       "\n", __func__, recv_buf[0],
> -                                       recv_buf[1], recv_buf[2], recv_buf[3]);
> -                       } else {
> -                               /* Check Received Data */
> -                               if (correct_ack[0] == recv_buf[0] &&
> -                                   correct_ack[1] == recv_buf[1] &&
> -                                   correct_ack[2] == recv_buf[2]) {
> -                                       /* Interval for next command */
> -                                       mdelay(10);
> -
> -                                       /* Receive ACK */
> -                                       return 0;
> -                               }
> -                       }
> -                       /* Received NAK or illegal Data */
> -                       printk(KERN_ERR ">%s: Error : NAK or Illegal Data "
> -                                       "Received\n", __func__);
> -               }
> -       } while (retry--);
> -
> -       /* Interval for next command */
> -       mdelay(10);
> -
> -       return -1;
> -}
> -
> -static void tsp2_power_off(void)
> -{
> -       const unsigned char watchdogkill[]      = {0x01, 0x35, 0x00};
> -       const unsigned char shutdownwait[]      = {0x00, 0x0c};
> -       const unsigned char poweroff[]          = {0x00, 0x06};
> -       /* 38400 baud divisor */
> -       const unsigned divisor = ((orion5x_tclk + (8 * 38400)) / (16 * 38400));
> -
> -       pr_info("%s: triggering power-off...\n", __func__);
> -
> -       /* hijack uart1 and reset into sane state (38400,8n1,even parity) */
> -       writel(0x83, UART1_REG(LCR));
> -       writel(divisor & 0xff, UART1_REG(DLL));
> -       writel((divisor >> 8) & 0xff, UART1_REG(DLM));
> -       writel(0x1b, UART1_REG(LCR));
> -       writel(0x00, UART1_REG(IER));
> -       writel(0x07, UART1_REG(FCR));
> -       writel(0x00, UART1_REG(MCR));
> -
> -       /* Send the commands to shutdown the Terastation Pro II */
> -       tsp2_miconsend(watchdogkill, sizeof(watchdogkill)) ;
> -       tsp2_miconsend(shutdownwait, sizeof(shutdownwait)) ;
> -       tsp2_miconsend(poweroff, sizeof(poweroff));
> -}
> -
> -/*****************************************************************************
> - * General Setup
> - ****************************************************************************/
> -static unsigned int tsp2_mpp_modes[] __initdata = {
> -       MPP0_PCIE_RST_OUTn,
> -       MPP1_UNUSED,
> -       MPP2_UNUSED,
> -       MPP3_UNUSED,
> -       MPP4_NAND,              /* BOOT NAND Flash REn */
> -       MPP5_NAND,              /* BOOT NAND Flash WEn */
> -       MPP6_NAND,              /* BOOT NAND Flash HREn[0] */
> -       MPP7_NAND,              /* BOOT NAND Flash WEn[0] */
> -       MPP8_GPIO,              /* MICON int */
> -       MPP9_GPIO,              /* RTC int */
> -       MPP10_UNUSED,
> -       MPP11_GPIO,             /* PCI Int A */
> -       MPP12_UNUSED,
> -       MPP13_GPIO,             /* UPS on UART0 enable */
> -       MPP14_GPIO,             /* UPS low battery detection */
> -       MPP15_UNUSED,
> -       MPP16_UART,             /* UART1 RXD */
> -       MPP17_UART,             /* UART1 TXD */
> -       MPP18_UART,             /* UART1 CTSn */
> -       MPP19_UART,             /* UART1 RTSn */
> -       0,
> -};
> -
> -static void __init tsp2_init(void)
> -{
> -       /*
> -        * Setup basic Orion functions. Need to be called early.
> -        */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(tsp2_mpp_modes);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   TSP2_NOR_BOOT_BASE,
> -                                   TSP2_NOR_BOOT_SIZE);
> -       platform_device_register(&tsp2_nor_flash);
> -
> -       orion5x_ehci0_init();
> -       orion5x_eth_init(&tsp2_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_uart0_init();
> -       orion5x_uart1_init();
> -
> -       /* Get RTC IRQ and register the chip */
> -       if (gpio_request(TSP2_RTC_GPIO, "rtc") == 0) {
> -               if (gpio_direction_input(TSP2_RTC_GPIO) == 0)
> -                       tsp2_i2c_rtc.irq = gpio_to_irq(TSP2_RTC_GPIO);
> -               else
> -                       gpio_free(TSP2_RTC_GPIO);
> -       }
> -       if (tsp2_i2c_rtc.irq == 0)
> -               pr_warn("tsp2_init: failed to get RTC IRQ\n");
> -       i2c_register_board_info(0, &tsp2_i2c_rtc, 1);
> -
> -       /* register Terastation Pro II specific power-off method */
> -       register_platform_power_off(tsp2_power_off);
> -}
> -
> -MACHINE_START(TERASTATION_PRO2, "Buffalo Terastation Pro II/Live")
> -       /* Maintainer:  Sylver Bruneau <sylver.bruneau@googlemail.com> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = tsp2_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/ts209-setup.c b/arch/arm/mach-orion5x/ts209-setup.c
> deleted file mode 100644
> index 25cd50306c65..000000000000
> --- a/arch/arm/mach-orion5x/ts209-setup.c
> +++ /dev/null
> @@ -1,331 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * QNAP TS-109/TS-209 Board Setup
> - *
> - * Maintainer: Byron Bradley <byron.bbradley@gmail.com>
> - */
> -#include <linux/gpio/legacy.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/pci.h>
> -#include <linux/irq.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mtd/rawnand.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/input.h>
> -#include <linux/i2c.h>
> -#include <linux/serial_reg.h>
> -#include <linux/ata_platform.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/pci.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -#include "tsx09-common.h"
> -
> -#define QNAP_TS209_NOR_BOOT_BASE 0xf4000000
> -#define QNAP_TS209_NOR_BOOT_SIZE SZ_8M
> -
> -/****************************************************************************
> - * 8MiB NOR flash. The struct mtd_partition is not in the same order as the
> - *     partitions on the device because we want to keep compatibility with
> - *     existing QNAP firmware.
> - *
> - * Layout as used by QNAP:
> - *  [2] 0x00000000-0x00200000 : "Kernel"
> - *  [3] 0x00200000-0x00600000 : "RootFS1"
> - *  [4] 0x00600000-0x00700000 : "RootFS2"
> - *  [6] 0x00700000-0x00760000 : "NAS Config" (read-only)
> - *  [5] 0x00760000-0x00780000 : "U-Boot Config"
> - *  [1] 0x00780000-0x00800000 : "U-Boot" (read-only)
> - ***************************************************************************/
> -static struct mtd_partition qnap_ts209_partitions[] = {
> -       {
> -               .name           = "U-Boot",
> -               .size           = 0x00080000,
> -               .offset         = 0x00780000,
> -               .mask_flags     = MTD_WRITEABLE,
> -       }, {
> -               .name           = "Kernel",
> -               .size           = 0x00200000,
> -               .offset         = 0,
> -       }, {
> -               .name           = "RootFS1",
> -               .size           = 0x00400000,
> -               .offset         = 0x00200000,
> -       }, {
> -               .name           = "RootFS2",
> -               .size           = 0x00100000,
> -               .offset         = 0x00600000,
> -       }, {
> -               .name           = "U-Boot Config",
> -               .size           = 0x00020000,
> -               .offset         = 0x00760000,
> -       }, {
> -               .name           = "NAS Config",
> -               .size           = 0x00060000,
> -               .offset         = 0x00700000,
> -               .mask_flags     = MTD_WRITEABLE,
> -       },
> -};
> -
> -static struct physmap_flash_data qnap_ts209_nor_flash_data = {
> -       .width          = 1,
> -       .parts          = qnap_ts209_partitions,
> -       .nr_parts       = ARRAY_SIZE(qnap_ts209_partitions)
> -};
> -
> -static struct resource qnap_ts209_nor_flash_resource = {
> -       .flags  = IORESOURCE_MEM,
> -       .start  = QNAP_TS209_NOR_BOOT_BASE,
> -       .end    = QNAP_TS209_NOR_BOOT_BASE + QNAP_TS209_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device qnap_ts209_nor_flash = {
> -       .name           = "physmap-flash",
> -       .id             = 0,
> -       .dev            = {
> -               .platform_data  = &qnap_ts209_nor_flash_data,
> -       },
> -       .resource       = &qnap_ts209_nor_flash_resource,
> -       .num_resources  = 1,
> -};
> -
> -/*****************************************************************************
> - * PCI
> - ****************************************************************************/
> -
> -#define QNAP_TS209_PCI_SLOT0_OFFS      7
> -#define QNAP_TS209_PCI_SLOT0_IRQ_PIN   6
> -#define QNAP_TS209_PCI_SLOT1_IRQ_PIN   7
> -
> -static void __init qnap_ts209_pci_preinit(void)
> -{
> -       int pin;
> -
> -       /*
> -        * Configure PCI GPIO IRQ pins
> -        */
> -       pin = QNAP_TS209_PCI_SLOT0_IRQ_PIN;
> -       if (gpio_request(pin, "PCI Int1") == 0) {
> -               if (gpio_direction_input(pin) == 0) {
> -                       irq_set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
> -               } else {
> -                       printk(KERN_ERR "qnap_ts209_pci_preinit failed to "
> -                                       "set_irq_type pin %d\n", pin);
> -                       gpio_free(pin);
> -               }
> -       } else {
> -               printk(KERN_ERR "qnap_ts209_pci_preinit failed to gpio_request "
> -                               "%d\n", pin);
> -       }
> -
> -       pin = QNAP_TS209_PCI_SLOT1_IRQ_PIN;
> -       if (gpio_request(pin, "PCI Int2") == 0) {
> -               if (gpio_direction_input(pin) == 0) {
> -                       irq_set_irq_type(gpio_to_irq(pin), IRQ_TYPE_LEVEL_LOW);
> -               } else {
> -                       printk(KERN_ERR "qnap_ts209_pci_preinit failed "
> -                                       "to set_irq_type pin %d\n", pin);
> -                       gpio_free(pin);
> -               }
> -       } else {
> -               printk(KERN_ERR "qnap_ts209_pci_preinit failed to gpio_request "
> -                               "%d\n", pin);
> -       }
> -}
> -
> -static int __init qnap_ts209_pci_map_irq(const struct pci_dev *dev, u8 slot,
> -       u8 pin)
> -{
> -       int irq;
> -
> -       /*
> -        * Check for devices with hard-wired IRQs.
> -        */
> -       irq = orion5x_pci_map_irq(dev, slot, pin);
> -       if (irq != -1)
> -               return irq;
> -
> -       /*
> -        * PCI IRQs are connected via GPIOs.
> -        */
> -       switch (slot - QNAP_TS209_PCI_SLOT0_OFFS) {
> -       case 0:
> -               return gpio_to_irq(QNAP_TS209_PCI_SLOT0_IRQ_PIN);
> -       case 1:
> -               return gpio_to_irq(QNAP_TS209_PCI_SLOT1_IRQ_PIN);
> -       default:
> -               return -1;
> -       }
> -}
> -
> -static struct hw_pci qnap_ts209_pci __initdata = {
> -       .nr_controllers = 2,
> -       .preinit        = qnap_ts209_pci_preinit,
> -       .setup          = orion5x_pci_sys_setup,
> -       .scan           = orion5x_pci_sys_scan_bus,
> -       .map_irq        = qnap_ts209_pci_map_irq,
> -};
> -
> -static int __init qnap_ts209_pci_init(void)
> -{
> -       if (machine_is_ts209())
> -               pci_common_init(&qnap_ts209_pci);
> -
> -       return 0;
> -}
> -
> -subsys_initcall(qnap_ts209_pci_init);
> -
> -/*****************************************************************************
> - * RTC S35390A on I2C bus
> - ****************************************************************************/
> -
> -#define TS209_RTC_GPIO 3
> -
> -static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = {
> -       I2C_BOARD_INFO("s35390a", 0x30),
> -       .irq    = 0,
> -};
> -
> -/****************************************************************************
> - * GPIO Attached Keys
> - *     Power button is attached to the PIC microcontroller
> - ****************************************************************************/
> -
> -#define QNAP_TS209_GPIO_KEY_MEDIA      1
> -#define QNAP_TS209_GPIO_KEY_RESET      2
> -
> -static struct gpio_keys_button qnap_ts209_buttons[] = {
> -       {
> -               .code           = KEY_COPY,
> -               .gpio           = QNAP_TS209_GPIO_KEY_MEDIA,
> -               .desc           = "USB Copy Button",
> -               .active_low     = 1,
> -       }, {
> -               .code           = KEY_RESTART,
> -               .gpio           = QNAP_TS209_GPIO_KEY_RESET,
> -               .desc           = "Reset Button",
> -               .active_low     = 1,
> -       },
> -};
> -
> -static struct gpio_keys_platform_data qnap_ts209_button_data = {
> -       .buttons        = qnap_ts209_buttons,
> -       .nbuttons       = ARRAY_SIZE(qnap_ts209_buttons),
> -};
> -
> -static struct platform_device qnap_ts209_button_device = {
> -       .name           = "gpio-keys",
> -       .id             = -1,
> -       .num_resources  = 0,
> -       .dev            = {
> -               .platform_data  = &qnap_ts209_button_data,
> -       },
> -};
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -static struct mv_sata_platform_data qnap_ts209_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -/*****************************************************************************
> -
> - * General Setup
> - ****************************************************************************/
> -static unsigned int ts209_mpp_modes[] __initdata = {
> -       MPP0_UNUSED,
> -       MPP1_GPIO,              /* USB copy button */
> -       MPP2_GPIO,              /* Load defaults button */
> -       MPP3_GPIO,              /* GPIO RTC */
> -       MPP4_UNUSED,
> -       MPP5_UNUSED,
> -       MPP6_GPIO,              /* PCI Int A */
> -       MPP7_GPIO,              /* PCI Int B */
> -       MPP8_UNUSED,
> -       MPP9_UNUSED,
> -       MPP10_UNUSED,
> -       MPP11_UNUSED,
> -       MPP12_SATA_LED,         /* SATA 0 presence */
> -       MPP13_SATA_LED,         /* SATA 1 presence */
> -       MPP14_SATA_LED,         /* SATA 0 active */
> -       MPP15_SATA_LED,         /* SATA 1 active */
> -       MPP16_UART,             /* UART1 RXD */
> -       MPP17_UART,             /* UART1 TXD */
> -       MPP18_GPIO,             /* SW_RST */
> -       MPP19_UNUSED,
> -       0,
> -};
> -
> -static void __init qnap_ts209_init(void)
> -{
> -       /*
> -        * Setup basic Orion functions. Need to be called early.
> -        */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(ts209_mpp_modes);
> -
> -       /*
> -        * MPP[20] PCI clock 0
> -        * MPP[21] PCI clock 1
> -        * MPP[22] USB 0 over current
> -        * MPP[23-25] Reserved
> -        */
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   QNAP_TS209_NOR_BOOT_BASE,
> -                                   QNAP_TS209_NOR_BOOT_SIZE);
> -       platform_device_register(&qnap_ts209_nor_flash);
> -
> -       orion5x_ehci0_init();
> -       orion5x_ehci1_init();
> -       qnap_tsx09_find_mac_addr(QNAP_TS209_NOR_BOOT_BASE +
> -                                qnap_ts209_partitions[5].offset,
> -                                qnap_ts209_partitions[5].size);
> -       orion5x_eth_init(&qnap_tsx09_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_sata_init(&qnap_ts209_sata_data);
> -       orion5x_uart0_init();
> -       orion5x_uart1_init();
> -       orion5x_xor_init();
> -
> -       platform_device_register(&qnap_ts209_button_device);
> -
> -       /* Get RTC IRQ and register the chip */
> -       if (gpio_request(TS209_RTC_GPIO, "rtc") == 0) {
> -               if (gpio_direction_input(TS209_RTC_GPIO) == 0)
> -                       qnap_ts209_i2c_rtc.irq = gpio_to_irq(TS209_RTC_GPIO);
> -               else
> -                       gpio_free(TS209_RTC_GPIO);
> -       }
> -       if (qnap_ts209_i2c_rtc.irq == 0)
> -               pr_warn("qnap_ts209_init: failed to get RTC IRQ\n");
> -       i2c_register_board_info(0, &qnap_ts209_i2c_rtc, 1);
> -
> -       /* register tsx09 specific power-off method */
> -       register_platform_power_off(qnap_tsx09_power_off);
> -}
> -
> -MACHINE_START(TS209, "QNAP TS-109/TS-209")
> -       /* Maintainer: Byron Bradley <byron.bbradley@gmail.com> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = qnap_ts209_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/ts409-setup.c b/arch/arm/mach-orion5x/ts409-setup.c
> deleted file mode 100644
> index f92acef0b45f..000000000000
> --- a/arch/arm/mach-orion5x/ts409-setup.c
> +++ /dev/null
> @@ -1,329 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * QNAP TS-409 Board Setup
> - *
> - * Maintainer: Sylver Bruneau <sylver.bruneau@gmail.com>
> - *
> - * Copyright (C) 2008  Sylver Bruneau <sylver.bruneau@gmail.com>
> - * Copyright (C) 2008  Martin Michlmayr <tbm@cyrius.com>
> - */
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/pci.h>
> -#include <linux/irq.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/leds.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/input.h>
> -#include <linux/i2c.h>
> -#include <linux/serial_reg.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/pci.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -#include "tsx09-common.h"
> -
> -/*****************************************************************************
> - * QNAP TS-409 Info
> - ****************************************************************************/
> -
> -/*
> - * QNAP TS-409 hardware :
> - * - Marvell 88F5281-D0
> - * - Marvell 88SX7042 SATA controller (PCIe)
> - * - Marvell 88E1118 Gigabit Ethernet PHY
> - * - RTC S35390A (@0x30) on I2C bus
> - * - 8MB NOR flash
> - * - 256MB of DDR-2 RAM
> - */
> -
> -/*
> - * 8MB NOR flash Device bus boot chip select
> - */
> -
> -#define QNAP_TS409_NOR_BOOT_BASE 0xff800000
> -#define QNAP_TS409_NOR_BOOT_SIZE SZ_8M
> -
> -/****************************************************************************
> - * 8MiB NOR flash. The struct mtd_partition is not in the same order as the
> - *     partitions on the device because we want to keep compatibility with
> - *     existing QNAP firmware.
> - *
> - * Layout as used by QNAP:
> - *  [2] 0x00000000-0x00200000 : "Kernel"
> - *  [3] 0x00200000-0x00600000 : "RootFS1"
> - *  [4] 0x00600000-0x00700000 : "RootFS2"
> - *  [6] 0x00700000-0x00760000 : "NAS Config" (read-only)
> - *  [5] 0x00760000-0x00780000 : "U-Boot Config"
> - *  [1] 0x00780000-0x00800000 : "U-Boot" (read-only)
> - ***************************************************************************/
> -static struct mtd_partition qnap_ts409_partitions[] = {
> -       {
> -               .name           = "U-Boot",
> -               .size           = 0x00080000,
> -               .offset         = 0x00780000,
> -               .mask_flags     = MTD_WRITEABLE,
> -       }, {
> -               .name           = "Kernel",
> -               .size           = 0x00200000,
> -               .offset         = 0,
> -       }, {
> -               .name           = "RootFS1",
> -               .size           = 0x00400000,
> -               .offset         = 0x00200000,
> -       }, {
> -               .name           = "RootFS2",
> -               .size           = 0x00100000,
> -               .offset         = 0x00600000,
> -       }, {
> -               .name           = "U-Boot Config",
> -               .size           = 0x00020000,
> -               .offset         = 0x00760000,
> -       }, {
> -               .name           = "NAS Config",
> -               .size           = 0x00060000,
> -               .offset         = 0x00700000,
> -               .mask_flags     = MTD_WRITEABLE,
> -       },
> -};
> -
> -static struct physmap_flash_data qnap_ts409_nor_flash_data = {
> -       .width          = 1,
> -       .parts          = qnap_ts409_partitions,
> -       .nr_parts       = ARRAY_SIZE(qnap_ts409_partitions)
> -};
> -
> -static struct resource qnap_ts409_nor_flash_resource = {
> -       .flags  = IORESOURCE_MEM,
> -       .start  = QNAP_TS409_NOR_BOOT_BASE,
> -       .end    = QNAP_TS409_NOR_BOOT_BASE + QNAP_TS409_NOR_BOOT_SIZE - 1,
> -};
> -
> -static struct platform_device qnap_ts409_nor_flash = {
> -       .name           = "physmap-flash",
> -       .id             = 0,
> -       .dev            = { .platform_data = &qnap_ts409_nor_flash_data, },
> -       .num_resources  = 1,
> -       .resource       = &qnap_ts409_nor_flash_resource,
> -};
> -
> -/*****************************************************************************
> - * PCI
> - ****************************************************************************/
> -
> -static int __init qnap_ts409_pci_map_irq(const struct pci_dev *dev, u8 slot,
> -       u8 pin)
> -{
> -       int irq;
> -
> -       /*
> -        * Check for devices with hard-wired IRQs.
> -        */
> -       irq = orion5x_pci_map_irq(dev, slot, pin);
> -       if (irq != -1)
> -               return irq;
> -
> -       /*
> -        * PCI isn't used on the TS-409
> -        */
> -       return -1;
> -}
> -
> -static struct hw_pci qnap_ts409_pci __initdata = {
> -       .nr_controllers = 2,
> -       .setup          = orion5x_pci_sys_setup,
> -       .scan           = orion5x_pci_sys_scan_bus,
> -       .map_irq        = qnap_ts409_pci_map_irq,
> -};
> -
> -static int __init qnap_ts409_pci_init(void)
> -{
> -       if (machine_is_ts409())
> -               pci_common_init(&qnap_ts409_pci);
> -
> -       return 0;
> -}
> -
> -subsys_initcall(qnap_ts409_pci_init);
> -
> -/*****************************************************************************
> - * RTC S35390A on I2C bus
> - ****************************************************************************/
> -
> -#define TS409_RTC_GPIO 10
> -
> -static struct i2c_board_info __initdata qnap_ts409_i2c_rtc = {
> -       I2C_BOARD_INFO("s35390a", 0x30),
> -};
> -
> -/*****************************************************************************
> - * LEDs attached to GPIO
> - ****************************************************************************/
> -
> -static struct gpio_led ts409_led_pins[] = {
> -       {
> -               .name           = "ts409:red:sata1",
> -       }, {
> -               .name           = "ts409:red:sata2",
> -       }, {
> -               .name           = "ts409:red:sata3",
> -       }, {
> -               .name           = "ts409:red:sata4",
> -       },
> -};
> -
> -static struct gpiod_lookup_table ts409_leds_gpio_table = {
> -       .dev_id = "leds-gpio",
> -       .table = {
> -               GPIO_LOOKUP_IDX("orion_gpio0", 4, NULL,
> -                               0, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 5, NULL,
> -                               1, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 6, NULL,
> -                               2, GPIO_ACTIVE_LOW),
> -               GPIO_LOOKUP_IDX("orion_gpio0", 7, NULL,
> -                               3, GPIO_ACTIVE_LOW),
> -               { },
> -       },
> -};
> -
> -static struct gpio_led_platform_data ts409_led_data = {
> -       .leds           = ts409_led_pins,
> -       .num_leds       = ARRAY_SIZE(ts409_led_pins),
> -};
> -
> -static struct platform_device ts409_leds = {
> -       .name   = "leds-gpio",
> -       .id     = -1,
> -       .dev    = {
> -               .platform_data  = &ts409_led_data,
> -       },
> -};
> -
> -/****************************************************************************
> - * GPIO Attached Keys
> - *     Power button is attached to the PIC microcontroller
> - ****************************************************************************/
> -
> -#define QNAP_TS409_GPIO_KEY_RESET      14
> -#define QNAP_TS409_GPIO_KEY_MEDIA      15
> -
> -static struct gpio_keys_button qnap_ts409_buttons[] = {
> -       {
> -               .code           = KEY_RESTART,
> -               .gpio           = QNAP_TS409_GPIO_KEY_RESET,
> -               .desc           = "Reset Button",
> -               .active_low     = 1,
> -       }, {
> -               .code           = KEY_COPY,
> -               .gpio           = QNAP_TS409_GPIO_KEY_MEDIA,
> -               .desc           = "USB Copy Button",
> -               .active_low     = 1,
> -       },
> -};
> -
> -static struct gpio_keys_platform_data qnap_ts409_button_data = {
> -       .buttons        = qnap_ts409_buttons,
> -       .nbuttons       = ARRAY_SIZE(qnap_ts409_buttons),
> -};
> -
> -static struct platform_device qnap_ts409_button_device = {
> -       .name           = "gpio-keys",
> -       .id             = -1,
> -       .num_resources  = 0,
> -       .dev            = {
> -               .platform_data  = &qnap_ts409_button_data,
> -       },
> -};
> -
> -/*****************************************************************************
> - * General Setup
> - ****************************************************************************/
> -static unsigned int ts409_mpp_modes[] __initdata = {
> -       MPP0_UNUSED,
> -       MPP1_UNUSED,
> -       MPP2_UNUSED,
> -       MPP3_UNUSED,
> -       MPP4_GPIO,              /* HDD 1 status */
> -       MPP5_GPIO,              /* HDD 2 status */
> -       MPP6_GPIO,              /* HDD 3 status */
> -       MPP7_GPIO,              /* HDD 4 status */
> -       MPP8_UNUSED,
> -       MPP9_UNUSED,
> -       MPP10_GPIO,             /* RTC int */
> -       MPP11_UNUSED,
> -       MPP12_UNUSED,
> -       MPP13_UNUSED,
> -       MPP14_GPIO,             /* SW_RST */
> -       MPP15_GPIO,             /* USB copy button */
> -       MPP16_UART,             /* UART1 RXD */
> -       MPP17_UART,             /* UART1 TXD */
> -       MPP18_UNUSED,
> -       MPP19_UNUSED,
> -       0,
> -};
> -
> -static void __init qnap_ts409_init(void)
> -{
> -       /*
> -        * Setup basic Orion functions. Need to be called early.
> -        */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(ts409_mpp_modes);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
> -                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
> -                                   QNAP_TS409_NOR_BOOT_BASE,
> -                                   QNAP_TS409_NOR_BOOT_SIZE);
> -       platform_device_register(&qnap_ts409_nor_flash);
> -
> -       orion5x_ehci0_init();
> -       qnap_tsx09_find_mac_addr(QNAP_TS409_NOR_BOOT_BASE +
> -                                qnap_ts409_partitions[5].offset,
> -                                qnap_ts409_partitions[5].size);
> -       orion5x_eth_init(&qnap_tsx09_eth_data);
> -       orion5x_i2c_init();
> -       orion5x_uart0_init();
> -       orion5x_uart1_init();
> -
> -       platform_device_register(&qnap_ts409_button_device);
> -
> -       /* Get RTC IRQ and register the chip */
> -       if (gpio_request(TS409_RTC_GPIO, "rtc") == 0) {
> -               if (gpio_direction_input(TS409_RTC_GPIO) == 0)
> -                       qnap_ts409_i2c_rtc.irq = gpio_to_irq(TS409_RTC_GPIO);
> -               else
> -                       gpio_free(TS409_RTC_GPIO);
> -       }
> -       if (qnap_ts409_i2c_rtc.irq == 0)
> -               pr_warn("qnap_ts409_init: failed to get RTC IRQ\n");
> -       i2c_register_board_info(0, &qnap_ts409_i2c_rtc, 1);
> -       gpiod_add_lookup_table(&ts409_leds_gpio_table);
> -       platform_device_register(&ts409_leds);
> -
> -       /* register tsx09 specific power-off method */
> -       register_platform_power_off(qnap_tsx09_power_off);
> -}
> -
> -MACHINE_START(TS409, "QNAP TS-409")
> -       /* Maintainer:  Sylver Bruneau <sylver.bruneau@gmail.com> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = qnap_ts409_init,
> -       .map_io         = orion5x_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .fixup          = tag_fixup_mem32,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/ts78xx-fpga.h b/arch/arm/mach-orion5x/ts78xx-fpga.h
> deleted file mode 100644
> index 2f4fe3ca5c1a..000000000000
> --- a/arch/arm/mach-orion5x/ts78xx-fpga.h
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#define TS7800_FPGA_MAGIC 0x00b480
> -#define FPGAID(_magic, _rev) ((_magic << 8) + _rev)
> -
> -/*
> - * get yer id's from http://ts78xx.digriz.org.uk/
> - * do *not* make up your own or 'borrow' any!
> - */
> -enum fpga_ids {
> -       /* Technologic Systems */
> -       TS7800_REV_1    = FPGAID(TS7800_FPGA_MAGIC, 0x01),
> -       TS7800_REV_2    = FPGAID(TS7800_FPGA_MAGIC, 0x02),
> -       TS7800_REV_3    = FPGAID(TS7800_FPGA_MAGIC, 0x03),
> -       TS7800_REV_4    = FPGAID(TS7800_FPGA_MAGIC, 0x04),
> -       TS7800_REV_5    = FPGAID(TS7800_FPGA_MAGIC, 0x05),
> -       TS7800_REV_6    = FPGAID(TS7800_FPGA_MAGIC, 0x06),
> -       TS7800_REV_7    = FPGAID(TS7800_FPGA_MAGIC, 0x07),
> -       TS7800_REV_8    = FPGAID(TS7800_FPGA_MAGIC, 0x08),
> -       TS7800_REV_9    = FPGAID(TS7800_FPGA_MAGIC, 0x09),
> -
> -       /* Unaffordable & Expensive */
> -       UAE_DUMMY       = FPGAID(0xffffff, 0x01),
> -};
> -
> -struct fpga_device {
> -       unsigned                present:1;
> -       unsigned                init:1;
> -};
> -
> -struct fpga_devices {
> -       /* Technologic Systems */
> -       struct fpga_device      ts_rtc;
> -       struct fpga_device      ts_nand;
> -       struct fpga_device      ts_rng;
> -};
> -
> -struct ts78xx_fpga_data {
> -       unsigned int            id;
> -       int                     state;
> -
> -       struct fpga_devices     supports;
> -};
> diff --git a/arch/arm/mach-orion5x/ts78xx-setup.c b/arch/arm/mach-orion5x/ts78xx-setup.c
> deleted file mode 100644
> index af810e7ccd79..000000000000
> --- a/arch/arm/mach-orion5x/ts78xx-setup.c
> +++ /dev/null
> @@ -1,574 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * arch/arm/mach-orion5x/ts78xx-setup.c
> - *
> - * Maintainer: Alexander Clouter <alex@digriz.org.uk>
> - */
> -
> -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/sysfs.h>
> -#include <linux/platform_device.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/ata_platform.h>
> -#include <linux/mtd/platnand.h>
> -#include <linux/timeriomem-rng.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/map.h>
> -#include "common.h"
> -#include "mpp.h"
> -#include "orion5x.h"
> -#include "ts78xx-fpga.h"
> -
> -/*****************************************************************************
> - * TS-78xx Info
> - ****************************************************************************/
> -
> -/*
> - * FPGA - lives where the PCI bus would be at ORION5X_PCI_MEM_PHYS_BASE
> - */
> -#define TS78XX_FPGA_REGS_PHYS_BASE     0xe8000000
> -#define TS78XX_FPGA_REGS_VIRT_BASE     IOMEM(0xff900000)
> -#define TS78XX_FPGA_REGS_SIZE          SZ_1M
> -
> -static struct ts78xx_fpga_data ts78xx_fpga = {
> -       .id             = 0,
> -       .state          = 1,
> -/*     .supports       = ... - populated by ts78xx_fpga_supports() */
> -};
> -
> -/*****************************************************************************
> - * I/O Address Mapping
> - ****************************************************************************/
> -static struct map_desc ts78xx_io_desc[] __initdata = {
> -       {
> -               .virtual        = (unsigned long)TS78XX_FPGA_REGS_VIRT_BASE,
> -               .pfn            = __phys_to_pfn(TS78XX_FPGA_REGS_PHYS_BASE),
> -               .length         = TS78XX_FPGA_REGS_SIZE,
> -               .type           = MT_DEVICE,
> -       },
> -};
> -
> -static void __init ts78xx_map_io(void)
> -{
> -       orion5x_map_io();
> -       iotable_init(ts78xx_io_desc, ARRAY_SIZE(ts78xx_io_desc));
> -}
> -
> -/*****************************************************************************
> - * Ethernet
> - ****************************************************************************/
> -static struct mv643xx_eth_platform_data ts78xx_eth_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(0),
> -};
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -static struct mv_sata_platform_data ts78xx_sata_data = {
> -       .n_ports        = 2,
> -};
> -
> -/*****************************************************************************
> - * RTC M48T86 - nicked^Wborrowed from arch/arm/mach-ep93xx/ts72xx.c
> - ****************************************************************************/
> -#define TS_RTC_CTRL    (TS78XX_FPGA_REGS_PHYS_BASE + 0x808)
> -#define TS_RTC_DATA    (TS78XX_FPGA_REGS_PHYS_BASE + 0x80c)
> -
> -static struct resource ts78xx_ts_rtc_resources[] = {
> -       DEFINE_RES_MEM(TS_RTC_CTRL, 0x01),
> -       DEFINE_RES_MEM(TS_RTC_DATA, 0x01),
> -};
> -
> -static struct platform_device ts78xx_ts_rtc_device = {
> -       .name           = "rtc-m48t86",
> -       .id             = -1,
> -       .resource       = ts78xx_ts_rtc_resources,
> -       .num_resources  = ARRAY_SIZE(ts78xx_ts_rtc_resources),
> -};
> -
> -static int ts78xx_ts_rtc_load(void)
> -{
> -       int rc;
> -
> -       if (ts78xx_fpga.supports.ts_rtc.init == 0) {
> -               rc = platform_device_register(&ts78xx_ts_rtc_device);
> -               if (!rc)
> -                       ts78xx_fpga.supports.ts_rtc.init = 1;
> -       } else {
> -               rc = platform_device_add(&ts78xx_ts_rtc_device);
> -       }
> -
> -       if (rc)
> -               pr_info("RTC could not be registered: %d\n", rc);
> -
> -       return rc;
> -}
> -
> -static void ts78xx_ts_rtc_unload(void)
> -{
> -       platform_device_del(&ts78xx_ts_rtc_device);
> -}
> -
> -/*****************************************************************************
> - * NAND Flash
> - ****************************************************************************/
> -#define TS_NAND_CTRL   (TS78XX_FPGA_REGS_VIRT_BASE + 0x800)    /* VIRT */
> -#define TS_NAND_DATA   (TS78XX_FPGA_REGS_PHYS_BASE + 0x804)    /* PHYS */
> -
> -/*
> - * hardware specific access to control-lines
> - *
> - * ctrl:
> - * NAND_NCE: bit 0 -> bit 2
> - * NAND_CLE: bit 1 -> bit 1
> - * NAND_ALE: bit 2 -> bit 0
> - */
> -static void ts78xx_ts_nand_cmd_ctrl(struct nand_chip *this, int cmd,
> -                                   unsigned int ctrl)
> -{
> -       if (ctrl & NAND_CTRL_CHANGE) {
> -               unsigned char bits;
> -
> -               bits = (ctrl & NAND_NCE) << 2;
> -               bits |= ctrl & NAND_CLE;
> -               bits |= (ctrl & NAND_ALE) >> 2;
> -
> -               writeb((readb(TS_NAND_CTRL) & ~0x7) | bits, TS_NAND_CTRL);
> -       }
> -
> -       if (cmd != NAND_CMD_NONE)
> -               writeb(cmd, this->legacy.IO_ADDR_W);
> -}
> -
> -static int ts78xx_ts_nand_dev_ready(struct nand_chip *chip)
> -{
> -       return readb(TS_NAND_CTRL) & 0x20;
> -}
> -
> -static void ts78xx_ts_nand_write_buf(struct nand_chip *chip,
> -                                    const uint8_t *buf, int len)
> -{
> -       void __iomem *io_base = chip->legacy.IO_ADDR_W;
> -       unsigned long off = ((unsigned long)buf & 3);
> -       int sz;
> -
> -       if (off) {
> -               sz = min_t(int, 4 - off, len);
> -               writesb(io_base, buf, sz);
> -               buf += sz;
> -               len -= sz;
> -       }
> -
> -       sz = len >> 2;
> -       if (sz) {
> -               u32 *buf32 = (u32 *)buf;
> -               writesl(io_base, buf32, sz);
> -               buf += sz << 2;
> -               len -= sz << 2;
> -       }
> -
> -       if (len)
> -               writesb(io_base, buf, len);
> -}
> -
> -static void ts78xx_ts_nand_read_buf(struct nand_chip *chip,
> -                                   uint8_t *buf, int len)
> -{
> -       void __iomem *io_base = chip->legacy.IO_ADDR_R;
> -       unsigned long off = ((unsigned long)buf & 3);
> -       int sz;
> -
> -       if (off) {
> -               sz = min_t(int, 4 - off, len);
> -               readsb(io_base, buf, sz);
> -               buf += sz;
> -               len -= sz;
> -       }
> -
> -       sz = len >> 2;
> -       if (sz) {
> -               u32 *buf32 = (u32 *)buf;
> -               readsl(io_base, buf32, sz);
> -               buf += sz << 2;
> -               len -= sz << 2;
> -       }
> -
> -       if (len)
> -               readsb(io_base, buf, len);
> -}
> -
> -static struct mtd_partition ts78xx_ts_nand_parts[] = {
> -       {
> -               .name           = "mbr",
> -               .offset         = 0,
> -               .size           = SZ_128K,
> -               .mask_flags     = MTD_WRITEABLE,
> -       }, {
> -               .name           = "kernel",
> -               .offset         = MTDPART_OFS_APPEND,
> -               .size           = SZ_4M,
> -       }, {
> -               .name           = "initrd",
> -               .offset         = MTDPART_OFS_APPEND,
> -               .size           = SZ_4M,
> -       }, {
> -               .name           = "rootfs",
> -               .offset         = MTDPART_OFS_APPEND,
> -               .size           = MTDPART_SIZ_FULL,
> -       }
> -};
> -
> -static struct platform_nand_data ts78xx_ts_nand_data = {
> -       .chip   = {
> -               .nr_chips               = 1,
> -               .partitions             = ts78xx_ts_nand_parts,
> -               .nr_partitions          = ARRAY_SIZE(ts78xx_ts_nand_parts),
> -               .chip_delay             = 15,
> -               .bbt_options            = NAND_BBT_USE_FLASH,
> -       },
> -       .ctrl   = {
> -               /*
> -                * The HW ECC offloading functions, used to give about a 9%
> -                * performance increase for 'dd if=/dev/mtdblockX' and 5% for
> -                * nanddump.  This all however was changed by git commit
> -                * e6cf5df1838c28bb060ac45b5585e48e71bbc740 so now there is
> -                * no performance advantage to be had so we no longer bother
> -                */
> -               .cmd_ctrl               = ts78xx_ts_nand_cmd_ctrl,
> -               .dev_ready              = ts78xx_ts_nand_dev_ready,
> -               .write_buf              = ts78xx_ts_nand_write_buf,
> -               .read_buf               = ts78xx_ts_nand_read_buf,
> -       },
> -};
> -
> -static struct resource ts78xx_ts_nand_resources
> -                       = DEFINE_RES_MEM(TS_NAND_DATA, 4);
> -
> -static struct platform_device ts78xx_ts_nand_device = {
> -       .name           = "gen_nand",
> -       .id             = -1,
> -       .dev            = {
> -               .platform_data  = &ts78xx_ts_nand_data,
> -       },
> -       .resource       = &ts78xx_ts_nand_resources,
> -       .num_resources  = 1,
> -};
> -
> -static int ts78xx_ts_nand_load(void)
> -{
> -       int rc;
> -
> -       if (ts78xx_fpga.supports.ts_nand.init == 0) {
> -               rc = platform_device_register(&ts78xx_ts_nand_device);
> -               if (!rc)
> -                       ts78xx_fpga.supports.ts_nand.init = 1;
> -       } else
> -               rc = platform_device_add(&ts78xx_ts_nand_device);
> -
> -       if (rc)
> -               pr_info("NAND could not be registered: %d\n", rc);
> -       return rc;
> -};
> -
> -static void ts78xx_ts_nand_unload(void)
> -{
> -       platform_device_del(&ts78xx_ts_nand_device);
> -}
> -
> -/*****************************************************************************
> - * HW RNG
> - ****************************************************************************/
> -#define TS_RNG_DATA    (TS78XX_FPGA_REGS_PHYS_BASE | 0x044)
> -
> -static struct resource ts78xx_ts_rng_resource
> -                       = DEFINE_RES_MEM(TS_RNG_DATA, 4);
> -
> -static struct timeriomem_rng_data ts78xx_ts_rng_data = {
> -       .period         = 1000000, /* one second */
> -};
> -
> -static struct platform_device ts78xx_ts_rng_device = {
> -       .name           = "timeriomem_rng",
> -       .id             = -1,
> -       .dev            = {
> -               .platform_data  = &ts78xx_ts_rng_data,
> -       },
> -       .resource       = &ts78xx_ts_rng_resource,
> -       .num_resources  = 1,
> -};
> -
> -static int ts78xx_ts_rng_load(void)
> -{
> -       int rc;
> -
> -       if (ts78xx_fpga.supports.ts_rng.init == 0) {
> -               rc = platform_device_register(&ts78xx_ts_rng_device);
> -               if (!rc)
> -                       ts78xx_fpga.supports.ts_rng.init = 1;
> -       } else
> -               rc = platform_device_add(&ts78xx_ts_rng_device);
> -
> -       if (rc)
> -               pr_info("RNG could not be registered: %d\n", rc);
> -       return rc;
> -};
> -
> -static void ts78xx_ts_rng_unload(void)
> -{
> -       platform_device_del(&ts78xx_ts_rng_device);
> -}
> -
> -/*****************************************************************************
> - * FPGA 'hotplug' support code
> - ****************************************************************************/
> -static void ts78xx_fpga_devices_zero_init(void)
> -{
> -       ts78xx_fpga.supports.ts_rtc.init = 0;
> -       ts78xx_fpga.supports.ts_nand.init = 0;
> -       ts78xx_fpga.supports.ts_rng.init = 0;
> -}
> -
> -static void ts78xx_fpga_supports(void)
> -{
> -       /* TODO: put this 'table' into ts78xx-fpga.h */
> -       switch (ts78xx_fpga.id) {
> -       case TS7800_REV_1:
> -       case TS7800_REV_2:
> -       case TS7800_REV_3:
> -       case TS7800_REV_4:
> -       case TS7800_REV_5:
> -       case TS7800_REV_6:
> -       case TS7800_REV_7:
> -       case TS7800_REV_8:
> -       case TS7800_REV_9:
> -               ts78xx_fpga.supports.ts_rtc.present = 1;
> -               ts78xx_fpga.supports.ts_nand.present = 1;
> -               ts78xx_fpga.supports.ts_rng.present = 1;
> -               break;
> -       default:
> -               /* enable devices if magic matches */
> -               switch ((ts78xx_fpga.id >> 8) & 0xffffff) {
> -               case TS7800_FPGA_MAGIC:
> -                       pr_warn("unrecognised FPGA revision 0x%.2x\n",
> -                               ts78xx_fpga.id & 0xff);
> -                       ts78xx_fpga.supports.ts_rtc.present = 1;
> -                       ts78xx_fpga.supports.ts_nand.present = 1;
> -                       ts78xx_fpga.supports.ts_rng.present = 1;
> -                       break;
> -               default:
> -                       ts78xx_fpga.supports.ts_rtc.present = 0;
> -                       ts78xx_fpga.supports.ts_nand.present = 0;
> -                       ts78xx_fpga.supports.ts_rng.present = 0;
> -               }
> -       }
> -}
> -
> -static int ts78xx_fpga_load_devices(void)
> -{
> -       int tmp, ret = 0;
> -
> -       if (ts78xx_fpga.supports.ts_rtc.present == 1) {
> -               tmp = ts78xx_ts_rtc_load();
> -               if (tmp)
> -                       ts78xx_fpga.supports.ts_rtc.present = 0;
> -               ret |= tmp;
> -       }
> -       if (ts78xx_fpga.supports.ts_nand.present == 1) {
> -               tmp = ts78xx_ts_nand_load();
> -               if (tmp)
> -                       ts78xx_fpga.supports.ts_nand.present = 0;
> -               ret |= tmp;
> -       }
> -       if (ts78xx_fpga.supports.ts_rng.present == 1) {
> -               tmp = ts78xx_ts_rng_load();
> -               if (tmp)
> -                       ts78xx_fpga.supports.ts_rng.present = 0;
> -               ret |= tmp;
> -       }
> -
> -       return ret;
> -}
> -
> -static int ts78xx_fpga_unload_devices(void)
> -{
> -
> -       if (ts78xx_fpga.supports.ts_rtc.present == 1)
> -               ts78xx_ts_rtc_unload();
> -       if (ts78xx_fpga.supports.ts_nand.present == 1)
> -               ts78xx_ts_nand_unload();
> -       if (ts78xx_fpga.supports.ts_rng.present == 1)
> -               ts78xx_ts_rng_unload();
> -
> -       return 0;
> -}
> -
> -static int ts78xx_fpga_load(void)
> -{
> -       ts78xx_fpga.id = readl(TS78XX_FPGA_REGS_VIRT_BASE);
> -
> -       pr_info("FPGA magic=0x%.6x, rev=0x%.2x\n",
> -                       (ts78xx_fpga.id >> 8) & 0xffffff,
> -                       ts78xx_fpga.id & 0xff);
> -
> -       ts78xx_fpga_supports();
> -
> -       if (ts78xx_fpga_load_devices()) {
> -               ts78xx_fpga.state = -1;
> -               return -EBUSY;
> -       }
> -
> -       return 0;
> -};
> -
> -static int ts78xx_fpga_unload(void)
> -{
> -       unsigned int fpga_id;
> -
> -       fpga_id = readl(TS78XX_FPGA_REGS_VIRT_BASE);
> -
> -       /*
> -        * There does not seem to be a feasible way to block access to the GPIO
> -        * pins from userspace (/dev/mem).  This if clause should hopefully warn
> -        * those foolish enough not to follow 'policy' :)
> -        *
> -        * UrJTAG SVN since r1381 can be used to reprogram the FPGA
> -        */
> -       if (ts78xx_fpga.id != fpga_id) {
> -               pr_err("FPGA magic/rev mismatch\n"
> -                       "TS-78xx FPGA: was 0x%.6x/%.2x but now 0x%.6x/%.2x\n",
> -                       (ts78xx_fpga.id >> 8) & 0xffffff, ts78xx_fpga.id & 0xff,
> -                       (fpga_id >> 8) & 0xffffff, fpga_id & 0xff);
> -               ts78xx_fpga.state = -1;
> -               return -EBUSY;
> -       }
> -
> -       if (ts78xx_fpga_unload_devices()) {
> -               ts78xx_fpga.state = -1;
> -               return -EBUSY;
> -       }
> -
> -       return 0;
> -};
> -
> -static ssize_t ts78xx_fpga_show(struct kobject *kobj,
> -                       struct kobj_attribute *attr, char *buf)
> -{
> -       if (ts78xx_fpga.state < 0)
> -               return sprintf(buf, "borked\n");
> -
> -       return sprintf(buf, "%s\n", (ts78xx_fpga.state) ? "online" : "offline");
> -}
> -
> -static ssize_t ts78xx_fpga_store(struct kobject *kobj,
> -                       struct kobj_attribute *attr, const char *buf, size_t n)
> -{
> -       int value, ret;
> -
> -       if (ts78xx_fpga.state < 0) {
> -               pr_err("FPGA borked, you must powercycle ASAP\n");
> -               return -EBUSY;
> -       }
> -
> -       if (strncmp(buf, "online", sizeof("online") - 1) == 0)
> -               value = 1;
> -       else if (strncmp(buf, "offline", sizeof("offline") - 1) == 0)
> -               value = 0;
> -       else
> -               return -EINVAL;
> -
> -       if (ts78xx_fpga.state == value)
> -               return n;
> -
> -       ret = (ts78xx_fpga.state == 0)
> -               ? ts78xx_fpga_load()
> -               : ts78xx_fpga_unload();
> -
> -       if (!(ret < 0))
> -               ts78xx_fpga.state = value;
> -
> -       return n;
> -}
> -
> -static struct kobj_attribute ts78xx_fpga_attr =
> -       __ATTR(ts78xx_fpga, 0644, ts78xx_fpga_show, ts78xx_fpga_store);
> -
> -/*****************************************************************************
> - * General Setup
> - ****************************************************************************/
> -static unsigned int ts78xx_mpp_modes[] __initdata = {
> -       MPP0_UNUSED,
> -       MPP1_GPIO,              /* JTAG Clock */
> -       MPP2_GPIO,              /* JTAG Data In */
> -       MPP3_GPIO,              /* Lat ECP2 256 FPGA - PB2B */
> -       MPP4_GPIO,              /* JTAG Data Out */
> -       MPP5_GPIO,              /* JTAG TMS */
> -       MPP6_GPIO,              /* Lat ECP2 256 FPGA - PB31A_CLK4+ */
> -       MPP7_GPIO,              /* Lat ECP2 256 FPGA - PB22B */
> -       MPP8_UNUSED,
> -       MPP9_UNUSED,
> -       MPP10_UNUSED,
> -       MPP11_UNUSED,
> -       MPP12_UNUSED,
> -       MPP13_UNUSED,
> -       MPP14_UNUSED,
> -       MPP15_UNUSED,
> -       MPP16_UART,
> -       MPP17_UART,
> -       MPP18_UART,
> -       MPP19_UART,
> -       /*
> -        * MPP[20] PCI Clock Out 1
> -        * MPP[21] PCI Clock Out 0
> -        * MPP[22] Unused
> -        * MPP[23] Unused
> -        * MPP[24] Unused
> -        * MPP[25] Unused
> -        */
> -       0,
> -};
> -
> -static void __init ts78xx_init(void)
> -{
> -       int ret;
> -
> -       /*
> -        * Setup basic Orion functions. Need to be called early.
> -        */
> -       orion5x_init();
> -
> -       orion5x_mpp_conf(ts78xx_mpp_modes);
> -
> -       /*
> -        * Configure peripherals.
> -        */
> -       orion5x_ehci0_init();
> -       orion5x_ehci1_init();
> -       orion5x_eth_init(&ts78xx_eth_data);
> -       orion5x_sata_init(&ts78xx_sata_data);
> -       orion5x_uart0_init();
> -       orion5x_uart1_init();
> -       orion5x_xor_init();
> -
> -       /* FPGA init */
> -       ts78xx_fpga_devices_zero_init();
> -       ret = ts78xx_fpga_load();
> -       ret = sysfs_create_file(firmware_kobj, &ts78xx_fpga_attr.attr);
> -       if (ret)
> -               pr_err("sysfs_create_file failed: %d\n", ret);
> -}
> -
> -MACHINE_START(TS78XX, "Technologic Systems TS-78xx SBC")
> -       /* Maintainer: Alexander Clouter <alex@digriz.org.uk> */
> -       .atag_offset    = 0x100,
> -       .nr_irqs        = ORION5X_NR_IRQS,
> -       .init_machine   = ts78xx_init,
> -       .map_io         = ts78xx_map_io,
> -       .init_early     = orion5x_init_early,
> -       .init_irq       = orion5x_init_irq,
> -       .init_time      = orion5x_timer_init,
> -       .restart        = orion5x_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c
> deleted file mode 100644
> index 099e6fdfa8e6..000000000000
> --- a/arch/arm/mach-orion5x/tsx09-common.c
> +++ /dev/null
> @@ -1,129 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * QNAP TS-x09 Boards common functions
> - *
> - * Maintainers: Lennert Buytenhek <buytenh@marvell.com>
> - *             Byron Bradley <byron.bbradley@gmail.com>
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/pci.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/timex.h>
> -#include <linux/serial_reg.h>
> -#include "orion5x.h"
> -#include "tsx09-common.h"
> -#include "common.h"
> -
> -/*****************************************************************************
> - * QNAP TS-x09 specific power off method via UART1-attached PIC
> - ****************************************************************************/
> -
> -#define UART1_REG(x)   (UART1_VIRT_BASE + ((UART_##x) << 2))
> -
> -void qnap_tsx09_power_off(void)
> -{
> -       /* 19200 baud divisor */
> -       const unsigned divisor = ((orion5x_tclk + (8 * 19200)) / (16 * 19200));
> -
> -       pr_info("%s: triggering power-off...\n", __func__);
> -
> -       /* hijack uart1 and reset into sane state (19200,8n1) */
> -       writel(0x83, UART1_REG(LCR));
> -       writel(divisor & 0xff, UART1_REG(DLL));
> -       writel((divisor >> 8) & 0xff, UART1_REG(DLM));
> -       writel(0x03, UART1_REG(LCR));
> -       writel(0x00, UART1_REG(IER));
> -       writel(0x00, UART1_REG(FCR));
> -       writel(0x00, UART1_REG(MCR));
> -
> -       /* send the power-off command 'A' to PIC */
> -       writel('A', UART1_REG(TX));
> -}
> -
> -/*****************************************************************************
> - * Ethernet
> - ****************************************************************************/
> -
> -struct mv643xx_eth_platform_data qnap_tsx09_eth_data = {
> -       .phy_addr       = MV643XX_ETH_PHY_ADDR(8),
> -};
> -
> -static int __init qnap_tsx09_parse_hex_nibble(char n)
> -{
> -       if (n >= '0' && n <= '9')
> -               return n - '0';
> -
> -       if (n >= 'A' && n <= 'F')
> -               return n - 'A' + 10;
> -
> -       if (n >= 'a' && n <= 'f')
> -               return n - 'a' + 10;
> -
> -       return -1;
> -}
> -
> -static int __init qnap_tsx09_parse_hex_byte(const char *b)
> -{
> -       int hi;
> -       int lo;
> -
> -       hi = qnap_tsx09_parse_hex_nibble(b[0]);
> -       lo = qnap_tsx09_parse_hex_nibble(b[1]);
> -
> -       if (hi < 0 || lo < 0)
> -               return -1;
> -
> -       return (hi << 4) | lo;
> -}
> -
> -static int __init qnap_tsx09_check_mac_addr(const char *addr_str)
> -{
> -       u_int8_t addr[6];
> -       int i;
> -
> -       for (i = 0; i < 6; i++) {
> -               int byte;
> -
> -               /*
> -                * Enforce "xx:xx:xx:xx:xx:xx\n" format.
> -                */
> -               if (addr_str[(i * 3) + 2] != ((i < 5) ? ':' : '\n'))
> -                       return -1;
> -
> -               byte = qnap_tsx09_parse_hex_byte(addr_str + (i * 3));
> -               if (byte < 0)
> -                       return -1;
> -               addr[i] = byte;
> -       }
> -
> -       printk(KERN_INFO "tsx09: found ethernet mac address %pM\n", addr);
> -
> -       memcpy(qnap_tsx09_eth_data.mac_addr, addr, 6);
> -
> -       return 0;
> -}
> -
> -/*
> - * The 'NAS Config' flash partition has an ext2 filesystem which
> - * contains a file that has the ethernet MAC address in plain text
> - * (format "xx:xx:xx:xx:xx:xx\n").
> - */
> -void __init qnap_tsx09_find_mac_addr(u32 mem_base, u32 size)
> -{
> -       unsigned long addr;
> -
> -       for (addr = mem_base; addr < (mem_base + size); addr += 1024) {
> -               char *nor_page;
> -               int ret = 0;
> -
> -               nor_page = ioremap(addr, 1024);
> -               if (nor_page != NULL) {
> -                       ret = qnap_tsx09_check_mac_addr(nor_page);
> -                       iounmap(nor_page);
> -               }
> -
> -               if (ret == 0)
> -                       break;
> -       }
> -}
> diff --git a/arch/arm/mach-orion5x/tsx09-common.h b/arch/arm/mach-orion5x/tsx09-common.h
> deleted file mode 100644
> index 72bedc6b82fb..000000000000
> --- a/arch/arm/mach-orion5x/tsx09-common.h
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef __ARCH_ORION5X_TSX09_COMMON_H
> -#define __ARCH_ORION5X_TSX09_COMMON_H
> -
> -/*
> - * QNAP TS-x09 Boards power-off function
> - */
> -extern void qnap_tsx09_power_off(void);
> -
> -/*
> - * QNAP TS-x09 Boards function to find Ethernet MAC address in flash memory
> - */
> -extern void __init qnap_tsx09_find_mac_addr(u32 mem_base, u32 size);
> -
> -/*
> - * QNAP TS-x09 Boards ethernet declaration
> - */
> -extern struct mv643xx_eth_platform_data qnap_tsx09_eth_data;
> -
> -
> -#endif
> diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
> index 6574659dfb61..c40cdb2274ea 100644
> --- a/arch/arm/mm/Kconfig
> +++ b/arch/arm/mm/Kconfig
> @@ -980,7 +980,7 @@ config CACHE_B15_RAC
>
>  config CACHE_FEROCEON_L2
>         bool "Enable the Feroceon L2 cache controller"
> -       depends on ARCH_MV78XX0 || ARCH_MVEBU
> +       depends on ARCH_MVEBU
>         default y
>         select OUTER_CACHE
>         help
> diff --git a/arch/arm/plat-orion/Makefile b/arch/arm/plat-orion/Makefile
> index e8c7580df8ca..dfde39cdd992 100644
> --- a/arch/arm/plat-orion/Makefile
> +++ b/arch/arm/plat-orion/Makefile
> @@ -5,5 +5,5 @@
>  ccflags-y := -I$(src)/include
>
>  orion-gpio-$(CONFIG_GPIOLIB)      += gpio.o
> -obj-$(CONFIG_PLAT_ORION_LEGACY)   += irq.o pcie.o time.o common.o mpp.o
> +obj-$(CONFIG_PLAT_ORION_LEGACY)   += irq.o pcie.o mpp.o
>  obj-$(CONFIG_PLAT_ORION_LEGACY)   += $(orion-gpio-y)
> diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
> deleted file mode 100644
> index cabe98386245..000000000000
> --- a/arch/arm/plat-orion/common.c
> +++ /dev/null
> @@ -1,826 +0,0 @@
> -/*
> - * arch/arm/plat-orion/common.c
> - *
> - * Marvell Orion SoC common setup code used by multiple mach-/common.c
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/serial_8250.h>
> -#include <linux/ata_platform.h>
> -#include <linux/clk.h>
> -#include <linux/clkdev.h>
> -#include <linux/mv643xx_eth.h>
> -#include <linux/mv643xx_i2c.h>
> -#include <linux/platform_data/dma-mv_xor.h>
> -#include <linux/platform_data/usb-ehci-orion.h>
> -#include <plat/common.h>
> -#include <linux/phy.h>
> -
> -/* Create a clkdev entry for a given device/clk */
> -void __init orion_clkdev_add(const char *con_id, const char *dev_id,
> -                            struct clk *clk)
> -{
> -       clkdev_create(clk, con_id, "%s", dev_id);
> -}
> -
> -/* Create clkdev entries for all orion platforms except kirkwood.
> -   Kirkwood has gated clocks for some of its peripherals, so creates
> -   its own clkdev entries. For all the other orion devices, create
> -   clkdev entries to the tclk. */
> -void __init orion_clkdev_init(struct clk *tclk)
> -{
> -       orion_clkdev_add(NULL, "orion_spi.0", tclk);
> -       orion_clkdev_add(NULL, "orion_spi.1", tclk);
> -       orion_clkdev_add(NULL, MV643XX_ETH_NAME ".0", tclk);
> -       orion_clkdev_add(NULL, MV643XX_ETH_NAME ".1", tclk);
> -       orion_clkdev_add(NULL, MV643XX_ETH_NAME ".2", tclk);
> -       orion_clkdev_add(NULL, MV643XX_ETH_NAME ".3", tclk);
> -       orion_clkdev_add(NULL, "orion_wdt", tclk);
> -       orion_clkdev_add(NULL, MV64XXX_I2C_CTLR_NAME ".0", tclk);
> -}
> -
> -/* Fill in the resources structure and link it into the platform
> -   device structure. There is always a memory region, and nearly
> -   always an interrupt.*/
> -static void fill_resources(struct platform_device *device,
> -                          struct resource *resources,
> -                          resource_size_t mapbase,
> -                          resource_size_t size)
> -{
> -       device->resource = resources;
> -       device->num_resources = 1;
> -       resources[0].flags = IORESOURCE_MEM;
> -       resources[0].start = mapbase;
> -       resources[0].end = mapbase + size;
> -}
> -
> -static void fill_resources_irq(struct platform_device *device,
> -                              struct resource *resources,
> -                              resource_size_t mapbase,
> -                              resource_size_t size,
> -                              unsigned int irq)
> -{
> -       fill_resources(device, resources, mapbase, size);
> -
> -       device->num_resources++;
> -       resources[1].flags = IORESOURCE_IRQ;
> -       resources[1].start = irq;
> -       resources[1].end = irq;
> -}
> -
> -/*****************************************************************************
> - * UART
> - ****************************************************************************/
> -static unsigned long __init uart_get_clk_rate(struct clk *clk)
> -{
> -       clk_prepare_enable(clk);
> -       return clk_get_rate(clk);
> -}
> -
> -static void __init uart_complete(
> -       struct platform_device *orion_uart,
> -       struct plat_serial8250_port *data,
> -       struct resource *resources,
> -       void __iomem *membase,
> -       resource_size_t mapbase,
> -       unsigned int irq,
> -       struct clk *clk)
> -{
> -       data->mapbase = mapbase;
> -       data->membase = membase;
> -       data->irq = irq;
> -       data->uartclk = uart_get_clk_rate(clk);
> -       orion_uart->dev.platform_data = data;
> -
> -       fill_resources_irq(orion_uart, resources, mapbase, 0xff, irq);
> -       platform_device_register(orion_uart);
> -}
> -
> -/*****************************************************************************
> - * UART0
> - ****************************************************************************/
> -static struct plat_serial8250_port orion_uart0_data[] = {
> -       {
> -               .flags          = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
> -               .iotype         = UPIO_MEM,
> -               .regshift       = 2,
> -       }, {
> -       },
> -};
> -
> -static struct resource orion_uart0_resources[2];
> -
> -static struct platform_device orion_uart0 = {
> -       .name                   = "serial8250",
> -       .id                     = PLAT8250_DEV_PLATFORM,
> -};
> -
> -void __init orion_uart0_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk)
> -{
> -       uart_complete(&orion_uart0, orion_uart0_data, orion_uart0_resources,
> -                     membase, mapbase, irq, clk);
> -}
> -
> -/*****************************************************************************
> - * UART1
> - ****************************************************************************/
> -static struct plat_serial8250_port orion_uart1_data[] = {
> -       {
> -               .flags          = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
> -               .iotype         = UPIO_MEM,
> -               .regshift       = 2,
> -       }, {
> -       },
> -};
> -
> -static struct resource orion_uart1_resources[2];
> -
> -static struct platform_device orion_uart1 = {
> -       .name                   = "serial8250",
> -       .id                     = PLAT8250_DEV_PLATFORM1,
> -};
> -
> -void __init orion_uart1_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk)
> -{
> -       uart_complete(&orion_uart1, orion_uart1_data, orion_uart1_resources,
> -                     membase, mapbase, irq, clk);
> -}
> -
> -/*****************************************************************************
> - * UART2
> - ****************************************************************************/
> -static struct plat_serial8250_port orion_uart2_data[] = {
> -       {
> -               .flags          = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
> -               .iotype         = UPIO_MEM,
> -               .regshift       = 2,
> -       }, {
> -       },
> -};
> -
> -static struct resource orion_uart2_resources[2];
> -
> -static struct platform_device orion_uart2 = {
> -       .name                   = "serial8250",
> -       .id                     = PLAT8250_DEV_PLATFORM2,
> -};
> -
> -void __init orion_uart2_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk)
> -{
> -       uart_complete(&orion_uart2, orion_uart2_data, orion_uart2_resources,
> -                     membase, mapbase, irq, clk);
> -}
> -
> -/*****************************************************************************
> - * UART3
> - ****************************************************************************/
> -static struct plat_serial8250_port orion_uart3_data[] = {
> -       {
> -               .flags          = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF,
> -               .iotype         = UPIO_MEM,
> -               .regshift       = 2,
> -       }, {
> -       },
> -};
> -
> -static struct resource orion_uart3_resources[2];
> -
> -static struct platform_device orion_uart3 = {
> -       .name                   = "serial8250",
> -       .id                     = 3,
> -};
> -
> -void __init orion_uart3_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk)
> -{
> -       uart_complete(&orion_uart3, orion_uart3_data, orion_uart3_resources,
> -                     membase, mapbase, irq, clk);
> -}
> -
> -/*****************************************************************************
> - * SoC RTC
> - ****************************************************************************/
> -static struct resource orion_rtc_resource[2];
> -
> -void __init orion_rtc_init(unsigned long mapbase,
> -                          unsigned long irq)
> -{
> -       orion_rtc_resource[0].start = mapbase;
> -       orion_rtc_resource[0].end = mapbase + SZ_32 - 1;
> -       orion_rtc_resource[0].flags = IORESOURCE_MEM;
> -       orion_rtc_resource[1].start = irq;
> -       orion_rtc_resource[1].end = irq;
> -       orion_rtc_resource[1].flags = IORESOURCE_IRQ;
> -
> -       platform_device_register_simple("rtc-mv", -1, orion_rtc_resource, 2);
> -}
> -
> -/*****************************************************************************
> - * GE
> - ****************************************************************************/
> -static __init void ge_complete(
> -       struct mv643xx_eth_shared_platform_data *orion_ge_shared_data,
> -       struct resource *orion_ge_resource, unsigned long irq,
> -       struct platform_device *orion_ge_shared,
> -       struct platform_device *orion_ge_mvmdio,
> -       struct mv643xx_eth_platform_data *eth_data,
> -       struct platform_device *orion_ge)
> -{
> -       orion_ge_resource->start = irq;
> -       orion_ge_resource->end = irq;
> -       eth_data->shared = orion_ge_shared;
> -       orion_ge->dev.platform_data = eth_data;
> -
> -       platform_device_register(orion_ge_shared);
> -       if (orion_ge_mvmdio)
> -               platform_device_register(orion_ge_mvmdio);
> -       platform_device_register(orion_ge);
> -}
> -
> -/*****************************************************************************
> - * GE00
> - ****************************************************************************/
> -static struct mv643xx_eth_shared_platform_data orion_ge00_shared_data;
> -
> -static struct resource orion_ge00_shared_resources[] = {
> -       {
> -               .name   = "ge00 base",
> -       },
> -};
> -
> -static struct platform_device orion_ge00_shared = {
> -       .name           = MV643XX_ETH_SHARED_NAME,
> -       .id             = 0,
> -       .dev            = {
> -               .platform_data  = &orion_ge00_shared_data,
> -       },
> -};
> -
> -static struct resource orion_ge_mvmdio_resources[] = {
> -       {
> -               .name   = "ge00 mvmdio base",
> -       }, {
> -               .name   = "ge00 mvmdio err irq",
> -       },
> -};
> -
> -static struct platform_device orion_ge_mvmdio = {
> -       .name           = "orion-mdio",
> -       .id             = -1,
> -};
> -
> -static struct resource orion_ge00_resources[] = {
> -       {
> -               .name   = "ge00 irq",
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct platform_device orion_ge00 = {
> -       .name           = MV643XX_ETH_NAME,
> -       .id             = 0,
> -       .num_resources  = 1,
> -       .resource       = orion_ge00_resources,
> -       .dev            = {
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -};
> -
> -void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq,
> -                           unsigned long irq_err,
> -                           unsigned int tx_csum_limit)
> -{
> -       fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,
> -                      mapbase + 0x2000, SZ_16K - 1);
> -       fill_resources_irq(&orion_ge_mvmdio, orion_ge_mvmdio_resources,
> -                       mapbase + 0x2004, 0x84 - 1, irq_err);
> -       orion_ge00_shared_data.tx_csum_limit = tx_csum_limit;
> -       ge_complete(&orion_ge00_shared_data,
> -                   orion_ge00_resources, irq, &orion_ge00_shared,
> -                   &orion_ge_mvmdio,
> -                   eth_data, &orion_ge00);
> -}
> -
> -/*****************************************************************************
> - * GE01
> - ****************************************************************************/
> -static struct mv643xx_eth_shared_platform_data orion_ge01_shared_data;
> -
> -static struct resource orion_ge01_shared_resources[] = {
> -       {
> -               .name   = "ge01 base",
> -       }
> -};
> -
> -static struct platform_device orion_ge01_shared = {
> -       .name           = MV643XX_ETH_SHARED_NAME,
> -       .id             = 1,
> -       .dev            = {
> -               .platform_data  = &orion_ge01_shared_data,
> -       },
> -};
> -
> -static struct resource orion_ge01_resources[] = {
> -       {
> -               .name   = "ge01 irq",
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct platform_device orion_ge01 = {
> -       .name           = MV643XX_ETH_NAME,
> -       .id             = 1,
> -       .num_resources  = 1,
> -       .resource       = orion_ge01_resources,
> -       .dev            = {
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -};
> -
> -void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq,
> -                           unsigned int tx_csum_limit)
> -{
> -       fill_resources(&orion_ge01_shared, orion_ge01_shared_resources,
> -                      mapbase + 0x2000, SZ_16K - 1);
> -       orion_ge01_shared_data.tx_csum_limit = tx_csum_limit;
> -       ge_complete(&orion_ge01_shared_data,
> -                   orion_ge01_resources, irq, &orion_ge01_shared,
> -                   NULL,
> -                   eth_data, &orion_ge01);
> -}
> -
> -/*****************************************************************************
> - * GE10
> - ****************************************************************************/
> -static struct mv643xx_eth_shared_platform_data orion_ge10_shared_data;
> -
> -static struct resource orion_ge10_shared_resources[] = {
> -       {
> -               .name   = "ge10 base",
> -       }
> -};
> -
> -static struct platform_device orion_ge10_shared = {
> -       .name           = MV643XX_ETH_SHARED_NAME,
> -       .id             = 2,
> -       .dev            = {
> -               .platform_data  = &orion_ge10_shared_data,
> -       },
> -};
> -
> -static struct resource orion_ge10_resources[] = {
> -       {
> -               .name   = "ge10 irq",
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct platform_device orion_ge10 = {
> -       .name           = MV643XX_ETH_NAME,
> -       .id             = 2,
> -       .num_resources  = 1,
> -       .resource       = orion_ge10_resources,
> -       .dev            = {
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -};
> -
> -void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq)
> -{
> -       fill_resources(&orion_ge10_shared, orion_ge10_shared_resources,
> -                      mapbase + 0x2000, SZ_16K - 1);
> -       ge_complete(&orion_ge10_shared_data,
> -                   orion_ge10_resources, irq, &orion_ge10_shared,
> -                   NULL,
> -                   eth_data, &orion_ge10);
> -}
> -
> -/*****************************************************************************
> - * GE11
> - ****************************************************************************/
> -static struct mv643xx_eth_shared_platform_data orion_ge11_shared_data;
> -
> -static struct resource orion_ge11_shared_resources[] = {
> -       {
> -               .name   = "ge11 base",
> -       },
> -};
> -
> -static struct platform_device orion_ge11_shared = {
> -       .name           = MV643XX_ETH_SHARED_NAME,
> -       .id             = 3,
> -       .dev            = {
> -               .platform_data  = &orion_ge11_shared_data,
> -       },
> -};
> -
> -static struct resource orion_ge11_resources[] = {
> -       {
> -               .name   = "ge11 irq",
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct platform_device orion_ge11 = {
> -       .name           = MV643XX_ETH_NAME,
> -       .id             = 3,
> -       .num_resources  = 1,
> -       .resource       = orion_ge11_resources,
> -       .dev            = {
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -};
> -
> -void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq)
> -{
> -       fill_resources(&orion_ge11_shared, orion_ge11_shared_resources,
> -                      mapbase + 0x2000, SZ_16K - 1);
> -       ge_complete(&orion_ge11_shared_data,
> -                   orion_ge11_resources, irq, &orion_ge11_shared,
> -                   NULL,
> -                   eth_data, &orion_ge11);
> -}
> -
> -/*****************************************************************************
> - * I2C
> - ****************************************************************************/
> -static struct mv64xxx_i2c_pdata orion_i2c_pdata = {
> -       .freq_n         = 3,
> -       .timeout        = 1000, /* Default timeout of 1 second */
> -};
> -
> -static struct resource orion_i2c_resources[2];
> -
> -static struct platform_device orion_i2c = {
> -       .name           = MV64XXX_I2C_CTLR_NAME,
> -       .id             = 0,
> -       .dev            = {
> -               .platform_data  = &orion_i2c_pdata,
> -       },
> -};
> -
> -static struct mv64xxx_i2c_pdata orion_i2c_1_pdata = {
> -       .freq_n         = 3,
> -       .timeout        = 1000, /* Default timeout of 1 second */
> -};
> -
> -static struct resource orion_i2c_1_resources[2];
> -
> -static struct platform_device orion_i2c_1 = {
> -       .name           = MV64XXX_I2C_CTLR_NAME,
> -       .id             = 1,
> -       .dev            = {
> -               .platform_data  = &orion_i2c_1_pdata,
> -       },
> -};
> -
> -void __init orion_i2c_init(unsigned long mapbase,
> -                          unsigned long irq,
> -                          unsigned long freq_m)
> -{
> -       orion_i2c_pdata.freq_m = freq_m;
> -       fill_resources_irq(&orion_i2c, orion_i2c_resources, mapbase,
> -                      SZ_32 - 1, irq);
> -       platform_device_register(&orion_i2c);
> -}
> -
> -void __init orion_i2c_1_init(unsigned long mapbase,
> -                            unsigned long irq,
> -                            unsigned long freq_m)
> -{
> -       orion_i2c_1_pdata.freq_m = freq_m;
> -       fill_resources_irq(&orion_i2c_1, orion_i2c_1_resources, mapbase,
> -                      SZ_32 - 1, irq);
> -       platform_device_register(&orion_i2c_1);
> -}
> -
> -/*****************************************************************************
> - * SPI
> - ****************************************************************************/
> -static struct resource orion_spi_resources;
> -
> -static struct platform_device orion_spi = {
> -       .name           = "orion_spi",
> -       .id             = 0,
> -};
> -
> -static struct resource orion_spi_1_resources;
> -
> -static struct platform_device orion_spi_1 = {
> -       .name           = "orion_spi",
> -       .id             = 1,
> -};
> -
> -/* Note: The SPI silicon core does have interrupts. However the
> - * current Linux software driver does not use interrupts. */
> -
> -void __init orion_spi_init(unsigned long mapbase)
> -{
> -       fill_resources(&orion_spi, &orion_spi_resources,
> -                      mapbase, SZ_512 - 1);
> -       platform_device_register(&orion_spi);
> -}
> -
> -void __init orion_spi_1_init(unsigned long mapbase)
> -{
> -       fill_resources(&orion_spi_1, &orion_spi_1_resources,
> -                      mapbase, SZ_512 - 1);
> -       platform_device_register(&orion_spi_1);
> -}
> -
> -/*****************************************************************************
> - * XOR
> - ****************************************************************************/
> -static u64 orion_xor_dmamask = DMA_BIT_MASK(32);
> -
> -/*****************************************************************************
> - * XOR0
> - ****************************************************************************/
> -static struct resource orion_xor0_shared_resources[] = {
> -       {
> -               .name   = "xor 0 low",
> -               .flags  = IORESOURCE_MEM,
> -       }, {
> -               .name   = "xor 0 high",
> -               .flags  = IORESOURCE_MEM,
> -       }, {
> -               .name   = "irq channel 0",
> -               .flags  = IORESOURCE_IRQ,
> -       }, {
> -               .name   = "irq channel 1",
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct mv_xor_channel_data orion_xor0_channels_data[2];
> -
> -static struct mv_xor_platform_data orion_xor0_pdata = {
> -       .channels = orion_xor0_channels_data,
> -};
> -
> -static struct platform_device orion_xor0_shared = {
> -       .name           = MV_XOR_NAME,
> -       .id             = 0,
> -       .num_resources  = ARRAY_SIZE(orion_xor0_shared_resources),
> -       .resource       = orion_xor0_shared_resources,
> -       .dev            = {
> -               .dma_mask               = &orion_xor_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -               .platform_data          = &orion_xor0_pdata,
> -       },
> -};
> -
> -void __init orion_xor0_init(unsigned long mapbase_low,
> -                           unsigned long mapbase_high,
> -                           unsigned long irq_0,
> -                           unsigned long irq_1)
> -{
> -       orion_xor0_shared_resources[0].start = mapbase_low;
> -       orion_xor0_shared_resources[0].end = mapbase_low + 0xff;
> -       orion_xor0_shared_resources[1].start = mapbase_high;
> -       orion_xor0_shared_resources[1].end = mapbase_high + 0xff;
> -
> -       orion_xor0_shared_resources[2].start = irq_0;
> -       orion_xor0_shared_resources[2].end = irq_0;
> -       orion_xor0_shared_resources[3].start = irq_1;
> -       orion_xor0_shared_resources[3].end = irq_1;
> -
> -       dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[0].cap_mask);
> -       dma_cap_set(DMA_XOR, orion_xor0_channels_data[0].cap_mask);
> -
> -       dma_cap_set(DMA_MEMCPY, orion_xor0_channels_data[1].cap_mask);
> -       dma_cap_set(DMA_XOR, orion_xor0_channels_data[1].cap_mask);
> -
> -       platform_device_register(&orion_xor0_shared);
> -}
> -
> -/*****************************************************************************
> - * XOR1
> - ****************************************************************************/
> -static struct resource orion_xor1_shared_resources[] = {
> -       {
> -               .name   = "xor 1 low",
> -               .flags  = IORESOURCE_MEM,
> -       }, {
> -               .name   = "xor 1 high",
> -               .flags  = IORESOURCE_MEM,
> -       }, {
> -               .name   = "irq channel 0",
> -               .flags  = IORESOURCE_IRQ,
> -       }, {
> -               .name   = "irq channel 1",
> -               .flags  = IORESOURCE_IRQ,
> -       },
> -};
> -
> -static struct mv_xor_channel_data orion_xor1_channels_data[2];
> -
> -static struct mv_xor_platform_data orion_xor1_pdata = {
> -       .channels = orion_xor1_channels_data,
> -};
> -
> -static struct platform_device orion_xor1_shared = {
> -       .name           = MV_XOR_NAME,
> -       .id             = 1,
> -       .num_resources  = ARRAY_SIZE(orion_xor1_shared_resources),
> -       .resource       = orion_xor1_shared_resources,
> -       .dev            = {
> -               .dma_mask               = &orion_xor_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -               .platform_data          = &orion_xor1_pdata,
> -       },
> -};
> -
> -void __init orion_xor1_init(unsigned long mapbase_low,
> -                           unsigned long mapbase_high,
> -                           unsigned long irq_0,
> -                           unsigned long irq_1)
> -{
> -       orion_xor1_shared_resources[0].start = mapbase_low;
> -       orion_xor1_shared_resources[0].end = mapbase_low + 0xff;
> -       orion_xor1_shared_resources[1].start = mapbase_high;
> -       orion_xor1_shared_resources[1].end = mapbase_high + 0xff;
> -
> -       orion_xor1_shared_resources[2].start = irq_0;
> -       orion_xor1_shared_resources[2].end = irq_0;
> -       orion_xor1_shared_resources[3].start = irq_1;
> -       orion_xor1_shared_resources[3].end = irq_1;
> -
> -       dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[0].cap_mask);
> -       dma_cap_set(DMA_XOR, orion_xor1_channels_data[0].cap_mask);
> -
> -       dma_cap_set(DMA_MEMCPY, orion_xor1_channels_data[1].cap_mask);
> -       dma_cap_set(DMA_XOR, orion_xor1_channels_data[1].cap_mask);
> -
> -       platform_device_register(&orion_xor1_shared);
> -}
> -
> -/*****************************************************************************
> - * EHCI
> - ****************************************************************************/
> -static struct orion_ehci_data orion_ehci_data;
> -static u64 ehci_dmamask = DMA_BIT_MASK(32);
> -
> -
> -/*****************************************************************************
> - * EHCI0
> - ****************************************************************************/
> -static struct resource orion_ehci_resources[2];
> -
> -static struct platform_device orion_ehci = {
> -       .name           = "orion-ehci",
> -       .id             = 0,
> -       .dev            = {
> -               .dma_mask               = &ehci_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -               .platform_data          = &orion_ehci_data,
> -       },
> -};
> -
> -void __init orion_ehci_init(unsigned long mapbase,
> -                           unsigned long irq,
> -                           enum orion_ehci_phy_ver phy_version)
> -{
> -       orion_ehci_data.phy_version = phy_version;
> -       fill_resources_irq(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,
> -                      irq);
> -
> -       platform_device_register(&orion_ehci);
> -}
> -
> -/*****************************************************************************
> - * EHCI1
> - ****************************************************************************/
> -static struct resource orion_ehci_1_resources[2];
> -
> -static struct platform_device orion_ehci_1 = {
> -       .name           = "orion-ehci",
> -       .id             = 1,
> -       .dev            = {
> -               .dma_mask               = &ehci_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -               .platform_data          = &orion_ehci_data,
> -       },
> -};
> -
> -void __init orion_ehci_1_init(unsigned long mapbase,
> -                             unsigned long irq)
> -{
> -       fill_resources_irq(&orion_ehci_1, orion_ehci_1_resources,
> -                      mapbase, SZ_4K - 1, irq);
> -
> -       platform_device_register(&orion_ehci_1);
> -}
> -
> -/*****************************************************************************
> - * EHCI2
> - ****************************************************************************/
> -static struct resource orion_ehci_2_resources[2];
> -
> -static struct platform_device orion_ehci_2 = {
> -       .name           = "orion-ehci",
> -       .id             = 2,
> -       .dev            = {
> -               .dma_mask               = &ehci_dmamask,
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -               .platform_data          = &orion_ehci_data,
> -       },
> -};
> -
> -void __init orion_ehci_2_init(unsigned long mapbase,
> -                             unsigned long irq)
> -{
> -       fill_resources_irq(&orion_ehci_2, orion_ehci_2_resources,
> -                      mapbase, SZ_4K - 1, irq);
> -
> -       platform_device_register(&orion_ehci_2);
> -}
> -
> -/*****************************************************************************
> - * SATA
> - ****************************************************************************/
> -static struct resource orion_sata_resources[2] = {
> -       {
> -               .name   = "sata base",
> -       }, {
> -               .name   = "sata irq",
> -       },
> -};
> -
> -static struct platform_device orion_sata = {
> -       .name           = "sata_mv",
> -       .id             = 0,
> -       .dev            = {
> -               .coherent_dma_mask      = DMA_BIT_MASK(32),
> -       },
> -};
> -
> -void __init orion_sata_init(struct mv_sata_platform_data *sata_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq)
> -{
> -       orion_sata.dev.platform_data = sata_data;
> -       fill_resources_irq(&orion_sata, orion_sata_resources,
> -                      mapbase, 0x5000 - 1, irq);
> -
> -       platform_device_register(&orion_sata);
> -}
> -
> -/*****************************************************************************
> - * Cryptographic Engines and Security Accelerator (CESA)
> - ****************************************************************************/
> -static struct resource orion_crypto_resources[] = {
> -       {
> -               .name   = "regs",
> -       }, {
> -               .name   = "crypto interrupt",
> -       }, {
> -               .name   = "sram",
> -               .flags  = IORESOURCE_MEM,
> -       },
> -};
> -
> -static struct platform_device orion_crypto = {
> -       .name           = "mv_crypto",
> -       .id             = -1,
> -};
> -
> -void __init orion_crypto_init(unsigned long mapbase,
> -                             unsigned long srambase,
> -                             unsigned long sram_size,
> -                             unsigned long irq)
> -{
> -       fill_resources_irq(&orion_crypto, orion_crypto_resources,
> -                      mapbase, 0xffff, irq);
> -       orion_crypto.num_resources = 3;
> -       orion_crypto_resources[2].start = srambase;
> -       orion_crypto_resources[2].end = srambase + sram_size - 1;
> -
> -       platform_device_register(&orion_crypto);
> -}
> diff --git a/arch/arm/plat-orion/include/plat/addr-map.h b/arch/arm/plat-orion/include/plat/addr-map.h
> deleted file mode 100644
> index b76c06569fe5..000000000000
> --- a/arch/arm/plat-orion/include/plat/addr-map.h
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -/*
> - * arch/arm/plat-orion/include/plat/addr-map.h
> - *
> - * Marvell Orion SoC address map handling.
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#ifndef __PLAT_ADDR_MAP_H
> -#define __PLAT_ADDR_MAP_H
> -
> -extern struct mbus_dram_target_info orion_mbus_dram_info;
> -
> -struct orion_addr_map_cfg {
> -       const int num_wins;     /* Total number of windows */
> -       const int remappable_wins;
> -       void __iomem *bridge_virt_base;
> -       int hw_io_coherency;
> -
> -       /* If NULL, the default cpu_win_can_remap will be used, using
> -          the value in remappable_wins */
> -       int (*cpu_win_can_remap) (const struct orion_addr_map_cfg *cfg,
> -                                 const int win);
> -       /* If NULL, the default win_cfg_base will be used, using the
> -          value in bridge_virt_base */
> -       void __iomem *(*win_cfg_base) (const struct orion_addr_map_cfg *cfg,
> -                                const int win);
> -};
> -
> -/*
> - * Information needed to setup one address mapping.
> - */
> -struct orion_addr_map_info {
> -       const int win;
> -       const u32 base;
> -       const u32 size;
> -       const u8 target;
> -       const u8 attr;
> -       const int remap;
> -};
> -
> -void __init orion_config_wins(struct orion_addr_map_cfg *cfg,
> -                             const struct orion_addr_map_info *info);
> -
> -void __init orion_setup_cpu_win(const struct orion_addr_map_cfg *cfg,
> -                               const int win, const u32 base,
> -                               const u32 size, const u8 target,
> -                               const u8 attr, const int remap);
> -
> -void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg,
> -                                       const void __iomem *ddr_window_cpu_base);
> -#endif
> diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h
> deleted file mode 100644
> index d2aad95d20cb..000000000000
> --- a/arch/arm/plat-orion/include/plat/common.h
> +++ /dev/null
> @@ -1,104 +0,0 @@
> -/*
> - * arch/arm/plat-orion/include/plat/common.h
> - *
> - * Marvell Orion SoC common setup code used by different mach-/common.c
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#ifndef __PLAT_COMMON_H
> -#include <linux/mv643xx_eth.h>
> -#include <linux/platform_data/usb-ehci-orion.h>
> -
> -struct mv_sata_platform_data;
> -
> -void __init orion_uart0_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk);
> -
> -void __init orion_uart1_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk);
> -
> -void __init orion_uart2_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk);
> -
> -void __init orion_uart3_init(void __iomem *membase,
> -                            resource_size_t mapbase,
> -                            unsigned int irq,
> -                            struct clk *clk);
> -
> -void __init orion_rtc_init(unsigned long mapbase,
> -                          unsigned long irq);
> -
> -void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq,
> -                           unsigned long irq_err,
> -                           unsigned int tx_csum_limit);
> -
> -void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq,
> -                           unsigned int tx_csum_limit);
> -
> -void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq);
> -
> -void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq);
> -
> -void __init orion_i2c_init(unsigned long mapbase,
> -                          unsigned long irq,
> -                          unsigned long freq_m);
> -
> -void __init orion_i2c_1_init(unsigned long mapbase,
> -                            unsigned long irq,
> -                            unsigned long freq_m);
> -
> -void __init orion_spi_init(unsigned long mapbase);
> -
> -void __init orion_spi_1_init(unsigned long mapbase);
> -
> -void __init orion_xor0_init(unsigned long mapbase_low,
> -                           unsigned long mapbase_high,
> -                           unsigned long irq_0,
> -                           unsigned long irq_1);
> -
> -void __init orion_xor1_init(unsigned long mapbase_low,
> -                           unsigned long mapbase_high,
> -                           unsigned long irq_0,
> -                           unsigned long irq_1);
> -
> -void __init orion_ehci_init(unsigned long mapbase,
> -                           unsigned long irq,
> -                           enum orion_ehci_phy_ver phy_version);
> -
> -void __init orion_ehci_1_init(unsigned long mapbase,
> -                             unsigned long irq);
> -
> -void __init orion_ehci_2_init(unsigned long mapbase,
> -                             unsigned long irq);
> -
> -void __init orion_sata_init(struct mv_sata_platform_data *sata_data,
> -                           unsigned long mapbase,
> -                           unsigned long irq);
> -
> -void __init orion_crypto_init(unsigned long mapbase,
> -                             unsigned long srambase,
> -                             unsigned long sram_size,
> -                             unsigned long irq);
> -
> -void __init orion_clkdev_add(const char *con_id, const char *dev_id,
> -                            struct clk *clk);
> -
> -void __init orion_clkdev_init(struct clk *tclk);
> -#endif
> diff --git a/arch/arm/plat-orion/include/plat/time.h b/arch/arm/plat-orion/include/plat/time.h
> deleted file mode 100644
> index 07527e417c62..000000000000
> --- a/arch/arm/plat-orion/include/plat/time.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/*
> - * arch/arm/plat-orion/include/plat/time.h
> - *
> - * Marvell Orion SoC time handling.
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - */
> -
> -#ifndef __PLAT_TIME_H
> -#define __PLAT_TIME_H
> -
> -void orion_time_set_base(void __iomem *timer_base);
> -
> -void orion_time_init(void __iomem *bridge_base, u32 bridge_timer1_clr_mask,
> -                    unsigned int irq, unsigned int tclk);
> -
> -
> -#endif
> diff --git a/arch/arm/plat-orion/pcie.c b/arch/arm/plat-orion/pcie.c
> index 8b8c06d2e9c4..e817f20409c4 100644
> --- a/arch/arm/plat-orion/pcie.c
> +++ b/arch/arm/plat-orion/pcie.c
> @@ -13,7 +13,6 @@
>  #include <linux/mbus.h>
>  #include <asm/mach/pci.h>
>  #include <plat/pcie.h>
> -#include <plat/addr-map.h>
>  #include <linux/delay.h>
>
>  /*
> diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c
> deleted file mode 100644
> index 509d4824dc1c..000000000000
> --- a/arch/arm/plat-orion/time.c
> +++ /dev/null
> @@ -1,238 +0,0 @@
> -/*
> - * arch/arm/plat-orion/time.c
> - *
> - * Marvell Orion SoC timer handling.
> - *
> - * This file is licensed under the terms of the GNU General Public
> - * License version 2.  This program is licensed "as is" without any
> - * warranty of any kind, whether express or implied.
> - *
> - * Timer 0 is used as free-running clocksource, while timer 1 is
> - * used as clock_event_device.
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/timer.h>
> -#include <linux/clockchips.h>
> -#include <linux/interrupt.h>
> -#include <linux/irq.h>
> -#include <linux/sched_clock.h>
> -#include <plat/time.h>
> -#include <asm/delay.h>
> -
> -/*
> - * MBus bridge block registers.
> - */
> -#define BRIDGE_CAUSE_OFF       0x0110
> -#define BRIDGE_MASK_OFF                0x0114
> -#define  BRIDGE_INT_TIMER0      0x0002
> -#define  BRIDGE_INT_TIMER1      0x0004
> -
> -
> -/*
> - * Timer block registers.
> - */
> -#define TIMER_CTRL_OFF         0x0000
> -#define  TIMER0_EN              0x0001
> -#define  TIMER0_RELOAD_EN       0x0002
> -#define  TIMER1_EN              0x0004
> -#define  TIMER1_RELOAD_EN       0x0008
> -#define TIMER0_RELOAD_OFF      0x0010
> -#define TIMER0_VAL_OFF         0x0014
> -#define TIMER1_RELOAD_OFF      0x0018
> -#define TIMER1_VAL_OFF         0x001c
> -
> -
> -/*
> - * SoC-specific data.
> - */
> -static void __iomem *bridge_base;
> -static u32 bridge_timer1_clr_mask;
> -static void __iomem *timer_base;
> -
> -
> -/*
> - * Number of timer ticks per jiffy.
> - */
> -static u32 ticks_per_jiffy;
> -
> -
> -/*
> - * Orion's sched_clock implementation. It has a resolution of
> - * at least 7.5ns (133MHz TCLK).
> - */
> -
> -static u64 notrace orion_read_sched_clock(void)
> -{
> -       return ~readl(timer_base + TIMER0_VAL_OFF);
> -}
> -
> -/*
> - * Clockevent handling.
> - */
> -static int
> -orion_clkevt_next_event(unsigned long delta, struct clock_event_device *dev)
> -{
> -       unsigned long flags;
> -       u32 u;
> -
> -       if (delta == 0)
> -               return -ETIME;
> -
> -       local_irq_save(flags);
> -
> -       /*
> -        * Clear and enable clockevent timer interrupt.
> -        */
> -       writel(bridge_timer1_clr_mask, bridge_base + BRIDGE_CAUSE_OFF);
> -
> -       u = readl(bridge_base + BRIDGE_MASK_OFF);
> -       u |= BRIDGE_INT_TIMER1;
> -       writel(u, bridge_base + BRIDGE_MASK_OFF);
> -
> -       /*
> -        * Setup new clockevent timer value.
> -        */
> -       writel(delta, timer_base + TIMER1_VAL_OFF);
> -
> -       /*
> -        * Enable the timer.
> -        */
> -       u = readl(timer_base + TIMER_CTRL_OFF);
> -       u = (u & ~TIMER1_RELOAD_EN) | TIMER1_EN;
> -       writel(u, timer_base + TIMER_CTRL_OFF);
> -
> -       local_irq_restore(flags);
> -
> -       return 0;
> -}
> -
> -static int orion_clkevt_shutdown(struct clock_event_device *evt)
> -{
> -       unsigned long flags;
> -       u32 u;
> -
> -       local_irq_save(flags);
> -
> -       /* Disable timer */
> -       u = readl(timer_base + TIMER_CTRL_OFF);
> -       writel(u & ~TIMER1_EN, timer_base + TIMER_CTRL_OFF);
> -
> -       /* Disable timer interrupt */
> -       u = readl(bridge_base + BRIDGE_MASK_OFF);
> -       writel(u & ~BRIDGE_INT_TIMER1, bridge_base + BRIDGE_MASK_OFF);
> -
> -       /* ACK pending timer interrupt */
> -       writel(bridge_timer1_clr_mask, bridge_base + BRIDGE_CAUSE_OFF);
> -
> -       local_irq_restore(flags);
> -
> -       return 0;
> -}
> -
> -static int orion_clkevt_set_periodic(struct clock_event_device *evt)
> -{
> -       unsigned long flags;
> -       u32 u;
> -
> -       local_irq_save(flags);
> -
> -       /* Setup timer to fire at 1/HZ intervals */
> -       writel(ticks_per_jiffy - 1, timer_base + TIMER1_RELOAD_OFF);
> -       writel(ticks_per_jiffy - 1, timer_base + TIMER1_VAL_OFF);
> -
> -       /* Enable timer interrupt */
> -       u = readl(bridge_base + BRIDGE_MASK_OFF);
> -       writel(u | BRIDGE_INT_TIMER1, bridge_base + BRIDGE_MASK_OFF);
> -
> -       /* Enable timer */
> -       u = readl(timer_base + TIMER_CTRL_OFF);
> -       writel(u | TIMER1_EN | TIMER1_RELOAD_EN, timer_base + TIMER_CTRL_OFF);
> -
> -       local_irq_restore(flags);
> -
> -       return 0;
> -}
> -
> -static struct clock_event_device orion_clkevt = {
> -       .name                   = "orion_tick",
> -       .features               = CLOCK_EVT_FEAT_ONESHOT |
> -                                 CLOCK_EVT_FEAT_PERIODIC,
> -       .rating                 = 300,
> -       .set_next_event         = orion_clkevt_next_event,
> -       .set_state_shutdown     = orion_clkevt_shutdown,
> -       .set_state_periodic     = orion_clkevt_set_periodic,
> -       .set_state_oneshot      = orion_clkevt_shutdown,
> -       .tick_resume            = orion_clkevt_shutdown,
> -};
> -
> -static irqreturn_t orion_timer_interrupt(int irq, void *dev_id)
> -{
> -       /*
> -        * ACK timer interrupt and call event handler.
> -        */
> -       writel(bridge_timer1_clr_mask, bridge_base + BRIDGE_CAUSE_OFF);
> -       orion_clkevt.event_handler(&orion_clkevt);
> -
> -       return IRQ_HANDLED;
> -}
> -
> -void __init
> -orion_time_set_base(void __iomem *_timer_base)
> -{
> -       timer_base = _timer_base;
> -}
> -
> -static unsigned long orion_delay_timer_read(void)
> -{
> -       return ~readl(timer_base + TIMER0_VAL_OFF);
> -}
> -
> -static struct delay_timer orion_delay_timer = {
> -       .read_current_timer = orion_delay_timer_read,
> -};
> -
> -void __init
> -orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
> -               unsigned int irq, unsigned int tclk)
> -{
> -       u32 u;
> -
> -       /*
> -        * Set SoC-specific data.
> -        */
> -       bridge_base = _bridge_base;
> -       bridge_timer1_clr_mask = _bridge_timer1_clr_mask;
> -
> -       ticks_per_jiffy = (tclk + HZ/2) / HZ;
> -
> -       orion_delay_timer.freq = tclk;
> -       register_current_timer_delay(&orion_delay_timer);
> -
> -       /*
> -        * Set scale and timer for sched_clock.
> -        */
> -       sched_clock_register(orion_read_sched_clock, 32, tclk);
> -
> -       /*
> -        * Setup free-running clocksource timer (interrupts
> -        * disabled).
> -        */
> -       writel(0xffffffff, timer_base + TIMER0_VAL_OFF);
> -       writel(0xffffffff, timer_base + TIMER0_RELOAD_OFF);
> -       u = readl(bridge_base + BRIDGE_MASK_OFF);
> -       writel(u & ~BRIDGE_INT_TIMER0, bridge_base + BRIDGE_MASK_OFF);
> -       u = readl(timer_base + TIMER_CTRL_OFF);
> -       writel(u | TIMER0_EN | TIMER0_RELOAD_EN, timer_base + TIMER_CTRL_OFF);
> -       clocksource_mmio_init(timer_base + TIMER0_VAL_OFF, "orion_clocksource",
> -               tclk, 300, 32, clocksource_mmio_readl_down);
> -
> -       /*
> -        * Setup clockevent timer (interrupt-driven).
> -        */
> -       if (request_irq(irq, orion_timer_interrupt, IRQF_TIMER, "orion_tick",
> -                       NULL))
> -               pr_err("Failed to request irq %u (orion_tick)\n", irq);
> -       orion_clkevt.cpumask = cpumask_of(0);
> -       clockevents_config_and_register(&orion_clkevt, tclk, 1, 0xfffffffe);
> -}
> diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
> index 28ca856ecc75..434cce3efd96 100644
> --- a/drivers/ata/Kconfig
> +++ b/drivers/ata/Kconfig
> @@ -471,8 +471,7 @@ config SATA_HIGHBANK
>
>  config SATA_MV
>         tristate "Marvell SATA support"
> -       depends on PCI || ARCH_DOVE || ARCH_MV78XX0 || \
> -                  ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST
> +       depends on PCI || ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST
>         select GENERIC_PHY
>         select SATA_HOST
>         help
> diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
> index 4f060d3e5636..d06903635335 100644
> --- a/drivers/mmc/host/Kconfig
> +++ b/drivers/mmc/host/Kconfig
> @@ -330,7 +330,7 @@ config MMC_SDHCI_ESDHC_IMX
>
>  config MMC_SDHCI_DOVE
>         tristate "SDHCI support on Marvell's Dove SoC"
> -       depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST
> +       depends on MACH_DOVE || COMPILE_TEST
>         depends on MMC_SDHCI_PLTFM
>         select MMC_SDHCI_IO_ACCESSORS
>         help
> diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
> index d246bbe37948..7e550c474b7a 100644
> --- a/drivers/pci/controller/Kconfig
> +++ b/drivers/pci/controller/Kconfig
> @@ -197,7 +197,7 @@ config PCI_LOONGSON
>
>  config PCI_MVEBU
>         tristate "Marvell EBU PCIe controller"
> -       depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
> +       depends on ARCH_MVEBU || COMPILE_TEST
>         depends on MVEBU_MBUS
>         depends on ARM
>         depends on OF
> diff --git a/drivers/phy/marvell/Kconfig b/drivers/phy/marvell/Kconfig
> index bccd72dccb77..c29d2d28ae55 100644
> --- a/drivers/phy/marvell/Kconfig
> +++ b/drivers/phy/marvell/Kconfig
> @@ -77,7 +77,7 @@ config PHY_MVEBU_CP110_UTMI
>
>  config PHY_MVEBU_SATA
>         def_bool y
> -       depends on ARCH_DOVE || MACH_DOVE || MACH_KIRKWOOD
> +       depends on MACH_DOVE || MACH_KIRKWOOD
>         depends on OF
>         select GENERIC_PHY
>
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 55ffee3d75ce..5cb6cdfe6015 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -1703,7 +1703,7 @@ config RTC_DRV_STARFIRE
>
>  config RTC_DRV_MV
>         tristate "Marvell SoC RTC"
> -       depends on ARCH_DOVE || ARCH_MVEBU || COMPILE_TEST
> +       depends on ARCH_MVEBU || COMPILE_TEST
>         help
>           If you say yes here you will get support for the in-chip RTC
>           that can be found in some of Marvell's SoC devices, such as
> diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
> index c9e689080ceb..6411b96d584c 100644
> --- a/drivers/soc/Makefile
> +++ b/drivers/soc/Makefile
> @@ -9,7 +9,6 @@ obj-$(CONFIG_ARCH_AT91)         += atmel/
>  obj-y                          += bcm/
>  obj-$(CONFIG_ARCH_CANAAN)      += canaan/
>  obj-$(CONFIG_EP93XX_SOC)        += cirrus/
> -obj-$(CONFIG_ARCH_DOVE)                += dove/
>  obj-$(CONFIG_MACH_DOVE)                += dove/
>  obj-y                          += fsl/
>  obj-y                          += fujitsu/
> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> index 810eeccedfba..8cef9b658191 100644
> --- a/drivers/thermal/Kconfig
> +++ b/drivers/thermal/Kconfig
> @@ -391,7 +391,7 @@ config KIRKWOOD_THERMAL
>
>  config DOVE_THERMAL
>         tristate "Temperature sensor on Marvell Dove SoCs"
> -       depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST
> +       depends on MACH_DOVE || COMPILE_TEST
>         depends on HAS_IOMEM
>         depends on OF
>         help
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index 0ab0dcc6d27d..d83bfb189705 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -690,7 +690,7 @@ config K3_RTI_WATCHDOG
>
>  config ORION_WATCHDOG
>         tristate "Orion watchdog"
> -       depends on ARCH_ORION5X || ARCH_DOVE || MACH_DOVE || ARCH_MVEBU || COMPILE_TEST
> +       depends on ARCH_ORION5X || MACH_DOVE || ARCH_MVEBU || COMPILE_TEST
>         depends on ARM
>         select WATCHDOG_CORE
>         help
> diff --git a/sound/soc/kirkwood/Kconfig b/sound/soc/kirkwood/Kconfig
> index 924072e402c8..d59c5bb0b391 100644
> --- a/sound/soc/kirkwood/Kconfig
> +++ b/sound/soc/kirkwood/Kconfig
> @@ -3,7 +3,7 @@ menu "Kirkwood"
>
>  config SND_KIRKWOOD_SOC
>         tristate "SoC Audio for the Marvell Kirkwood and Dove chips"
> -       depends on ARCH_DOVE || ARCH_MVEBU || COMPILE_TEST
> +       depends on ARCH_MVEBU || COMPILE_TEST
>         help
>           Say Y or M if you want to add support for codecs attached to
>           the Kirkwood I2S interface. You will also need to select the

> --
> 2.53.0
>

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  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:12   ` Ulf Hansson
@ 2026-09-08 16:18   ` Andrew Lunn
  2026-09-08 17:33   ` Linus Walleij
                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 70+ messages in thread
From: Andrew Lunn @ 2026-09-08 16:18 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Niklas Cassel, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Mark Brown, Bartosz Golaszewski, Thomas Weissschuh, linux-ide,
	linux-mmc, linux-pci, linux-phy, linux-rtc, linux-pm,
	linux-watchdog, linux-sound, linux-gpio

On Tue, Sep 08, 2026 at 05:27:55PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The 'orion' platform is the predecessor to what linux now calls the
> 'mvebu' line of Marvell SoCs, and originally covered orion5x,
> mv78xx0, kirkwood, dove and a few others that do not have any
> upstream support at the moment.
> 
> Only a few board files remain here, these are the ones left
> in 2022 board file purge because they had some level of support
> in Debian or OpenWRT, mostly for commercial NAS or router boxes.
> This distro support is now gone, and nobody has converted the
> board files to devicetree, though the orion5x and dove platforms
> also come with devicetree support for some other machines.
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  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
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 70+ messages in thread
From: Guenter Roeck @ 2026-09-08 16:26 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Arnd Bergmann, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

On 9/8/26 08:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> Most sa1100 platforms were removed a few years, with the remaining
> ones left as a starting point for a conversion to devicetree.
> 
> Nothing ever happened on that front, so remove the rest now,
> including the sa1111 and locomo drivers that were once shared
> with pxa but are already sa1100-exclusive now.
> 
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
Acked-by: Guenter Roeck <linux@roeck-us.net>


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 00/13] ARM: deprecated platform removal
  2026-09-08 15:27 [PATCH 00/13] ARM: deprecated platform removal Arnd Bergmann
                   ` (12 preceding siblings ...)
  2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
@ 2026-09-08 16:53 ` Randy Dunlap
  2026-09-08 16:56   ` Randy Dunlap
  2026-09-08 18:33   ` Arnd Bergmann
  13 siblings, 2 replies; 70+ messages in thread
From: Randy Dunlap @ 2026-09-08 16:53 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap



On 9/8/26 8:27 AM, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> In the 7.3 kernel, I marked a number of platforms and features as
> deprecated, with the plan to keep these around for the LTS kernel, but
> remove them in 7.4, see [1].
> 
> Cleaning out the deprecated platform code has turned into a larger effort
> than I expected, currently standing at 300 patches, with a lot of them
> still in need of being split up into smaller ones, see [2] for a current
> snapshot.
> 
> The first series here removes just the bits in arch/arm/mach-*/, plus
> the portions that directly depend on the removed Kconfig symbols where
> these are trivial to remove.
> 
> The parts that are not included are those that remove architectural
> features and device drivers that become unused after this part. Some of
> those may also make their way into 7.4, but at this point I would target
> 7.5 for most of them, to keep the dependencies simple.
> 
> This also gives everyone a chance to voice their objections in case
> that some of the removed platform code does have active users after all,
> before all the corresponding drivers are gone.
> 
>      Arnd
> 
> Links:
> [1] https://lore.kernel.org/all/20260701212353.2196041-1-arnd@kernel.org/
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/log/?h=board-remove-7.3
> 
> Arnd Bergmann (13):
>   ARM: remove sa1100 platform
>   ARM: remove footbridge
>   ARM: remove riscpc
>   ARM: remove legacy pxa board files
>   ARM: orion/dove/mv78xx0: remove all board files
>   ARM: omap2: remove omap24xx support
>   ARM: imx: remove i.MX31 SoC support
>   ARM: imx: remove nommu support
>   ARM: lpc18xx: remove entire platform
>   ARM: stm32: remove stm32f4/f7/h7 MCU support
>   ARM: versatile: remove mps2 support
>   ARM: at91: remove samv7 support
>   ARM: axxia: remove entire platform
> 
>  Documentation/arch/arm/index.rst              |    1 -
>  Documentation/arch/arm/netwinder.rst          |   85 -

I don't see netwinder.rst in any of the single patches.
Should it be in one of them?


[snip]

>  arch/arm/configs/netwinder_defconfig          |   88 -

Same for netwinder_defconfig.

If netwinder is going away, can all of
Documentation/arch/arm/nwfpe/ also go away?

Or do all of these come later (in phase 2 or 3)?

thanks.
-- 
~Randy


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 00/13] ARM: deprecated platform removal
  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
  1 sibling, 0 replies; 70+ messages in thread
From: Randy Dunlap @ 2026-09-08 16:56 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap



On 9/8/26 9:53 AM, Randy Dunlap wrote:
> 
> 
> On 9/8/26 8:27 AM, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> In the 7.3 kernel, I marked a number of platforms and features as
>> deprecated, with the plan to keep these around for the LTS kernel, but
>> remove them in 7.4, see [1].
>>
>> Cleaning out the deprecated platform code has turned into a larger effort
>> than I expected, currently standing at 300 patches, with a lot of them
>> still in need of being split up into smaller ones, see [2] for a current
>> snapshot.
>>
>> The first series here removes just the bits in arch/arm/mach-*/, plus
>> the portions that directly depend on the removed Kconfig symbols where
>> these are trivial to remove.
>>
>> The parts that are not included are those that remove architectural
>> features and device drivers that become unused after this part. Some of
>> those may also make their way into 7.4, but at this point I would target
>> 7.5 for most of them, to keep the dependencies simple.
>>
>> This also gives everyone a chance to voice their objections in case
>> that some of the removed platform code does have active users after all,
>> before all the corresponding drivers are gone.
>>
>>      Arnd
>>
>> Links:
>> [1] https://lore.kernel.org/all/20260701212353.2196041-1-arnd@kernel.org/
>> [2] https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/log/?h=board-remove-7.3
>>
>> Arnd Bergmann (13):
>>   ARM: remove sa1100 platform
>>   ARM: remove footbridge
>>   ARM: remove riscpc
>>   ARM: remove legacy pxa board files
>>   ARM: orion/dove/mv78xx0: remove all board files
>>   ARM: omap2: remove omap24xx support
>>   ARM: imx: remove i.MX31 SoC support
>>   ARM: imx: remove nommu support
>>   ARM: lpc18xx: remove entire platform
>>   ARM: stm32: remove stm32f4/f7/h7 MCU support
>>   ARM: versatile: remove mps2 support
>>   ARM: at91: remove samv7 support
>>   ARM: axxia: remove entire platform
>>
>>  Documentation/arch/arm/index.rst              |    1 -
>>  Documentation/arch/arm/netwinder.rst          |   85 -
> 
> I don't see netwinder.rst in any of the single patches.
> Should it be in one of them?
> 
> 
> [snip]
> 
>>  arch/arm/configs/netwinder_defconfig          |   88 -
> 
> Same for netwinder_defconfig.
> 
> If netwinder is going away, can all of
> Documentation/arch/arm/nwfpe/ also go away?
> 
> Or do all of these come later (in phase 2 or 3)?

gag. I hadn't received patch 02/13 yet. Didn't realize that. :(

Only the nwfpe/ question remains.

-- 
~Randy


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 06/13] ARM: omap2: remove omap24xx support
  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
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 70+ messages in thread
From: Aaro Koskinen @ 2026-09-08 17:18 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Andreas Kemnade, Kevin Hilman, Roger Quadros,
	Tony Lindgren, Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Paul Walmsley,
	Herbert Xu, David S. Miller, Mauro Carvalho Chehab,
	Kyungmin Park, Helge Deller, Tero Kristo, Stephen Boyd,
	Thomas Zimmermann, linux-media, linux-mtd, linux-fbdev,
	dri-devel, linux-clk

Hi,

On Tue, Sep 08, 2026 at 05:27:56PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The omap24xx SoC platform was used in the Nokia N800 and N810 tablets
> released on 2007 and was among the first ARMv6 CPUs in products that
> made it into products.
> 
> Unfortunately the early ARM1136r0 CPU cores had a number of quirks that
> caused a disproportionate amount of work to keep them compatible with
> later ARMv6K/v7/v8 implementations.
> 
> Drop the support for this SoC in order to allow removing ARM1136r0.
> 
> Cc: Aaro Koskinen <aaro.koskinen@iki.fi>

Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi>

A.

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  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:36   ` Nicolas Pitre
  3 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:23 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Guenter Roeck

On Tue, Sep 8, 2026 at 5:28 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> Most sa1100 platforms were removed a few years, with the remaining
> ones left as a starting point for a conversion to devicetree.
>
> Nothing ever happened on that front, so remove the rest now,
> including the sa1111 and locomo drivers that were once shared
> with pxa but are already sa1100-exclusive now.
>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

If some user really want to keep this platform around and it
willing to invest time in testing, I do not think it is hard to
convert it to device tree using an LLM.

But if there are no users, away it goes.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 02/13] ARM: remove footbridge
  2026-09-08 15:27 ` [PATCH 02/13] ARM: remove footbridge Arnd Bergmann
@ 2026-09-08 17:27   ` Linus Walleij
  2026-09-09 15:09     ` Ralph Siemsen
  0 siblings, 1 reply; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:27 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Ralph Siemsen,
	Helge Deller, dri-devel

On Tue, Sep 8, 2026 at 5:28 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> Footbridge was deprecated in 7.3 to be removed along with the other
> StrongARM platforms and most remaining board files.
>
> The main machine here is the NetWinder, which was a popular Arm based
> desktop PC in the late 1990s and contributed to Arm's later success as
> an embedded Linux platform, but was discontinued over 25 years ago and
> is no longer all that useful.
>
> I previously tried to convert this to devicetree in a sensible way but
> gave up due to the platform being too different from modern SoC based
> targets.
>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Ralph Siemsen <ralphs@netwinder.org>
> Cc: Helge Deller <deller@gmx.de>
> Cc: dri-devel@lists.freedesktop.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

I have one of those machines and it boot mainline but I
certainly consider it a paperweight at this point, I can't use
it for anything useful.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 04/13] ARM: remove legacy pxa board files
  2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files Arnd Bergmann
@ 2026-09-08 17:30   ` Linus Walleij
  2026-09-08 18:32   ` Daniel Mack
  1 sibling, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:30 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Daniel Mack,
	Haojian Zhuang, Bartosz Golaszewski

On Tue, Sep 8, 2026 at 5:29 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The PXA platform supports devicetree based booting, but still has a
> few traditional board files, which were left as a starting point for a
> possible conversion to devicetree during the last mass purge of board
> files in 2022.
>
> None of these boards were actually converted, so drop support for these
> now, along with the 'scoop' support chip that was used on some PDAs that
> are no longer usable now.
>
> The only remaining board support is for the "Raumfeld" speaker system
> based on PXA300 SoC, though basic support for PXA250 and PXA270 is still
> there and may work with external dts files.
>
> Cc: Daniel Mack <daniel@zonque.org>
> Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
> Cc: Robert Jarzmik <robert.jarzmik@free.fr>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Bartosz Golaszewski <brgl@kernel.org>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

I ACK this based on the number of refactorings I did on this
to remove the static GPIO assignments, I'm really tired of
doing them if no-one benefits.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  2026-09-08 15:27 ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all " Arnd Bergmann
                     ` (2 preceding siblings ...)
  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
  5 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:33 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Niklas Cassel, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Mark Brown, Bartosz Golaszewski, Thomas Weissschuh, linux-ide,
	linux-mmc, linux-pci, linux-phy, linux-rtc, linux-pm,
	linux-watchdog, linux-sound, linux-gpio

On Tue, Sep 8, 2026 at 5:29 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The 'orion' platform is the predecessor to what linux now calls the
> 'mvebu' line of Marvell SoCs, and originally covered orion5x,
> mv78xx0, kirkwood, dove and a few others that do not have any
> upstream support at the moment.
>
> Only a few board files remain here, these are the ones left
> in 2022 board file purge because they had some level of support
> in Debian or OpenWRT, mostly for commercial NAS or router boxes.
> This distro support is now gone, and nobody has converted the
> board files to devicetree, though the orion5x and dove platforms
> also come with devicetree support for some other machines.
>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> Cc: Gregory Clement <gregory.clement@bootlin.com>
> Cc: Alexander Clouter <alex@digriz.org.uk>
> Cc: Jeremy J. Peper <jeremy@jeremypeper.com>
> Cc: Damien Le Moal <dlemoal@kernel.org>
> Cc: Niklas Cassel <cassel@kernel.org>
> Cc: Ulf Hansson <ulfh@kernel.org>
> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
> Cc: "Krzysztof Wilczyński" <kwilczynski@kernel.org>
> Cc: Manivannan Sadhasivam <mani@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Vinod Koul <vkoul@kernel.org>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Daniel Lezcano <daniel.lezcano@kernel.org>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Mark Brown <broonie@kernel.org>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Bartosz Golaszewski <brgl@kernel.org>
> Cc: Thomas Weissschuh <thomas.weissschuh@linutronix.de>
> Cc: linux-ide@vger.kernel.org
> Cc: linux-mmc@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> Cc: linux-phy@lists.infradead.org
> Cc: linux-rtc@vger.kernel.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-watchdog@vger.kernel.org
> Cc: linux-sound@vger.kernel.org
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 06/13] ARM: omap2: remove omap24xx support
  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-09  8:06   ` Thomas Zimmermann
  3 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:35 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Paul Walmsley,
	Herbert Xu, David S. Miller, Mauro Carvalho Chehab,
	Kyungmin Park, Helge Deller, Tero Kristo, Stephen Boyd,
	Thomas Zimmermann, linux-media, linux-mtd, linux-fbdev,
	dri-devel, linux-clk

On Tue, Sep 8, 2026 at 5:29 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The omap24xx SoC platform was used in the Nokia N800 and N810 tablets
> released on 2007 and was among the first ARMv6 CPUs in products that
> made it into products.
>
> Unfortunately the early ARM1136r0 CPU cores had a number of quirks that
> caused a disproportionate amount of work to keep them compatible with
> later ARMv6K/v7/v8 implementations.
>
> Drop the support for this SoC in order to allow removing ARM1136r0.
>
> Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
> Cc: Andreas Kemnade <andreas@kemnade.info>
> Cc: Kevin Hilman <khilman@baylibre.com>
> Cc: Roger Quadros <rogerq@kernel.org>
> Cc: Tony Lindgren <tony@atomide.com>
> Cc: Paul Walmsley <paul@pwsan.com>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Helge Deller <deller@gmx.de>
> Cc: Tero Kristo <kristo@kernel.org>
> Cc: Stephen Boyd <sboyd@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-omap@vger.kernel.org
> Cc: devicetree@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-mtd@lists.infradead.org
> Cc: linux-fbdev@vger.kernel.org
> Cc: dri-devel@lists.freedesktop.org
> Cc: linux-clk@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Since Aaro says it can go, it can go.

If the n800 had a PostmarketOS port things would be different,
but it does not.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 09/13] ARM: lpc18xx: remove entire platform
  2026-09-08 15:27 ` [PATCH 09/13] ARM: lpc18xx: remove entire platform Arnd Bergmann
@ 2026-09-08 17:36   ` Linus Walleij
  2026-09-09  8:28   ` Vladimir Zapolskiy
  1 sibling, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:36 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On Tue, Sep 8, 2026 at 5:30 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The NXP LPC18xx and LPC43xx microcontrollers are the more modern
> version of the classic LPC32xx line, but they lack memory management
> units.
>
> These microcontrollers all remain in production as of 2026, but
> there are no known users running Linux on them.
>
> The platform was marked deprecated in the 7.3-LTS release, which
> will remain supported for a few more years.
>
> Remove support for both LPC18xx and LPC43xx.

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 10/13] ARM: stm32: remove stm32f4/f7/h7 MCU support
  2026-09-08 15:28 ` [PATCH 10/13] ARM: stm32: remove stm32f4/f7/h7 MCU support Arnd Bergmann
@ 2026-09-08 17:36   ` Linus Walleij
  0 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:36 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Christophe Parant, Benjamin Gaignard, Dario Binacchi

On Tue, Sep 8, 2026 at 5:30 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The stm32 platform started out as a Cortex-M based microcontoller
> platform in 2007, with a few of the older products gaining Linux kernel
> support in 2016. These days, the only relevant chips for Linux are the
> stm32mp1 (Cortex-A7) and stm32mp2 (Cortex-A35) product lines, with the
> microcontrollers running smaller RTOSs on new products.
>
> The microcontrollers were marked as deprecated in the linux-7.3LTS
> release, which will remain supported for a few more years and
> is expected to be sufficient for any of the remaining original users.
>
> Remove the MCU support now, leaving only the stm32mp SoCs in the platform.
>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
> Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Christophe Parant <c.parant@phytec.fr>
> Cc: Benjamin Gaignard <benjamin.gaignard@collabora.com>
> Cc: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> Cc: devicetree@vger.kernel.org
> Cc: linux-stm32@st-md-mailman.stormreply.com
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 11/13] ARM: versatile: remove mps2 support
  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 17:37   ` Linus Walleij
  2026-09-08 19:49   ` Sudeep Holla
  2 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:37 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

On Tue, Sep 8, 2026 at 5:30 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The Arm mps2 platform is the reference implementation for Arm
> microcontrollers and is useful for testing but not expected to be used
> as a production device.
>
> With all the Cortex-M based products gone, there is no longer a need
> for a reference platform either, so remove it as well.
>
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Sudeep Holla <sudeep.holla@kernel.org>
> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Andi Shyti <andi.shyti@kernel.org>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Cc: devicetree@vger.kernel.org
> Cc: linux-i2c@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
@ 2026-09-08 17:39   ` Linus Walleij
  2026-09-08 19:58   ` Sverdlin, Alexander
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:39 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

On Tue, Sep 8, 2026 at 5:30 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The Atmel at91 line, now known as Microchip SAM contains both
> SoCs using ARM926 and Cortex-A CPUs as well as a number of
> microcontrollers. Only a single one of those MCUs currently
> has Linux support, and has no known users.
>
> The samv7 platform was deprecated in Linux-7.3LTS, which will
> remain supported a while longer after it is gone from mainline.
>
> Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 13/13] ARM: axxia: remove entire platform
  2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
@ 2026-09-08 17:40   ` Linus Walleij
  2026-09-08 18:23   ` Krzysztof Kozlowski
  2026-09-08 20:02   ` Sverdlin, Alexander
  2 siblings, 0 replies; 70+ messages in thread
From: Linus Walleij @ 2026-09-08 17:40 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Russell King,
	Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Anders Berg

On Tue, Sep 8, 2026 at 5:30 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The initial Axxia port was contributed by LSI in 2014, but never completed
> after the sale of the business unit to Intel, which kept supporting the
> bulk of the drivers in their own downstream BSP.
>
> The downstream work has also ended now, and there is no realistic chance
> that anyone would rewrite it all into an upstreamable port.
>
> Remove it now that the 7.3LTS release is out and can be used as the
> base for one more downstream rebase of the downstream patches if needed.
>
> Cc: Krzysztof Kozlowski <krzk@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Cc: Anders Berg <anders.berg@lsi.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linusw@kernel.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 13/13] ARM: axxia: remove entire platform
  2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
  2026-09-08 17:40   ` Linus Walleij
@ 2026-09-08 18:23   ` Krzysztof Kozlowski
  2026-09-08 20:02   ` Sverdlin, Alexander
  2 siblings, 0 replies; 70+ messages in thread
From: Krzysztof Kozlowski @ 2026-09-08 18:23 UTC (permalink / raw)
  To: Arnd Bergmann, Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Anders Berg

On 08/09/2026 17:28, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The initial Axxia port was contributed by LSI in 2014, but never completed
> after the sale of the business unit to Intel, which kept supporting the
> bulk of the drivers in their own downstream BSP.
> 
> The downstream work has also ended now, and there is no realistic chance
> that anyone would rewrite it all into an upstreamable port.
> 
> Remove it now that the 7.3LTS release is out and can be used as the
> base for one more downstream rebase of the downstream patches if needed.
> 
> Cc: Krzysztof Kozlowski <krzk@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Cc: Anders Berg <anders.berg@lsi.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>


Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 04/13] ARM: remove legacy pxa board files
  2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files Arnd Bergmann
  2026-09-08 17:30   ` Linus Walleij
@ 2026-09-08 18:32   ` Daniel Mack
  1 sibling, 0 replies; 70+ messages in thread
From: Daniel Mack @ 2026-09-08 18:32 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Daniel Mack,
	Haojian Zhuang, Bartosz Golaszewski

On 9/8/26 17:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The PXA platform supports devicetree based booting, but still has a
> few traditional board files, which were left as a starting point for a
> possible conversion to devicetree during the last mass purge of board
> files in 2022.
> 
> None of these boards were actually converted, so drop support for these
> now, along with the 'scoop' support chip that was used on some PDAs that
> are no longer usable now.
> 
> The only remaining board support is for the "Raumfeld" speaker system
> based on PXA300 SoC, though basic support for PXA250 and PXA270 is still
> there and may work with external dts files.
> 
> Cc: Daniel Mack <daniel@zonque.org>
> Cc: Haojian Zhuang <haojian.zhuang@gmail.com>
> Cc: Robert Jarzmik <robert.jarzmik@free.fr>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Bartosz Golaszewski <brgl@kernel.org>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Daniel Mack <daniel@zonque.org>



> ---
>  arch/arm/boot/compressed/Makefile         |    4 -
>  arch/arm/boot/compressed/head-sharpsl.S   |  151 ---
>  arch/arm/common/Kconfig                   |    6 -
>  arch/arm/common/Makefile                  |    2 -
>  arch/arm/common/scoop.c                   |  269 -----
>  arch/arm/common/sharpsl_param.c           |   63 --
>  arch/arm/configs/am200epdkit_defconfig    |   91 --
>  arch/arm/configs/spitz_defconfig          |  237 -----
>  arch/arm/include/asm/hardware/scoop.h     |   67 --
>  arch/arm/include/asm/mach/sharpsl_param.h |   33 -
>  arch/arm/mach-pxa/Kconfig                 |   89 --
>  arch/arm/mach-pxa/Makefile                |    8 -
>  arch/arm/mach-pxa/am200epd.c              |  395 -------
>  arch/arm/mach-pxa/am300epd.c              |  296 ------
>  arch/arm/mach-pxa/devices.c               |  705 -------------
>  arch/arm/mach-pxa/devices.h               |   68 --
>  arch/arm/mach-pxa/generic.h               |    5 -
>  arch/arm/mach-pxa/gumstix.c               |  237 -----
>  arch/arm/mach-pxa/gumstix.h               |   89 --
>  arch/arm/mach-pxa/pxa25x.c                |   59 --
>  arch/arm/mach-pxa/pxa27x.c                |   77 --
>  arch/arm/mach-pxa/pxa300.c                |    1 -
>  arch/arm/mach-pxa/pxa320.c                |    1 -
>  arch/arm/mach-pxa/pxa3xx.c                |    6 -
>  arch/arm/mach-pxa/sharpsl_pm.c            |  941 -----------------
>  arch/arm/mach-pxa/sharpsl_pm.h            |  108 --
>  arch/arm/mach-pxa/spitz.c                 | 1174 ---------------------
>  arch/arm/mach-pxa/spitz.h                 |  185 ----
>  arch/arm/mach-pxa/spitz_pm.c              |  257 -----
>  29 files changed, 5624 deletions(-)
>  delete mode 100644 arch/arm/boot/compressed/head-sharpsl.S
>  delete mode 100644 arch/arm/common/scoop.c
>  delete mode 100644 arch/arm/common/sharpsl_param.c
>  delete mode 100644 arch/arm/configs/am200epdkit_defconfig
>  delete mode 100644 arch/arm/configs/spitz_defconfig
>  delete mode 100644 arch/arm/include/asm/hardware/scoop.h
>  delete mode 100644 arch/arm/include/asm/mach/sharpsl_param.h
>  delete mode 100644 arch/arm/mach-pxa/am200epd.c
>  delete mode 100644 arch/arm/mach-pxa/am300epd.c
>  delete mode 100644 arch/arm/mach-pxa/devices.h
>  delete mode 100644 arch/arm/mach-pxa/gumstix.c
>  delete mode 100644 arch/arm/mach-pxa/gumstix.h
>  delete mode 100644 arch/arm/mach-pxa/sharpsl_pm.c
>  delete mode 100644 arch/arm/mach-pxa/sharpsl_pm.h
>  delete mode 100644 arch/arm/mach-pxa/spitz.c
>  delete mode 100644 arch/arm/mach-pxa/spitz.h
>  delete mode 100644 arch/arm/mach-pxa/spitz_pm.c
> 
> diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
> index 32def10f5e03..232b646bfd26 100644
> --- a/arch/arm/boot/compressed/Makefile
> +++ b/arch/arm/boot/compressed/Makefile
> @@ -29,10 +29,6 @@ ifeq ($(CONFIG_CPU_XSCALE),y)
>  OBJS		+= head-xscale.o
>  endif
>  
> -ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y)
> -OBJS		+= head-sharpsl.o
> -endif
> -
>  ifeq ($(CONFIG_CPU_ENDIAN_BE32),y)
>  ifeq ($(CONFIG_CPU_CP15),y)
>  OBJS		+= big-endian.o
> diff --git a/arch/arm/boot/compressed/head-sharpsl.S b/arch/arm/boot/compressed/head-sharpsl.S
> deleted file mode 100644
> index 992e784500fa..000000000000
> --- a/arch/arm/boot/compressed/head-sharpsl.S
> +++ /dev/null
> @@ -1,151 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * linux/arch/arm/boot/compressed/head-sharpsl.S
> - *
> - * Copyright (C) 2004-2005 Richard Purdie <rpurdie@rpsys.net>
> - *
> - * Sharp's bootloader doesn't pass any kind of machine ID
> - * so we have to figure out the machine for ourselves...
> - *
> - * Support for Poodle, Corgi (SL-C700), Shepherd (SL-C750)
> - * Husky (SL-C760), Tosa (SL-C6000), Spitz (SL-C3000),
> - * Akita (SL-C1000) and Borzoi (SL-C3100).
> - *
> - */
> -
> -#include <linux/linkage.h>
> -#include <asm/mach-types.h>
> -
> -#ifndef CONFIG_PXA_SHARPSL
> -#error What am I doing here...
> -#endif
> -
> -		.section        ".start", "ax"
> -
> -__SharpSL_start:
> -
> -/* Check for TC6393 - if found we have a Tosa */
> -	ldr	r7, .TOSAID
> -	mov	r1, #0x10000000		@ Base address of TC6393 chip
> -	mov 	r6, #0x03
> -	ldrh	r3, [r1, #8]		@ Load TC6393XB Revison: This is 0x0003
> -	cmp	r6, r3
> -	beq	.SHARPEND		@ Success -> tosa
> -
> -/* Check for pxa270 - if found, branch */
> -	mrc p15, 0, r4, c0, c0		@ Get Processor ID
> -	and	r4, r4, #0xffffff00
> -	ldr	r3, .PXA270ID
> -	cmp	r4, r3
> -	beq	.PXA270
> -
> -/* Check for w100 - if not found we have a Poodle */
> -	ldr	r1, .W100ADDR		@ Base address of w100 chip + regs offset
> -
> -	mov r6, #0x31			@ Load Magic Init value
> -	str	r6, [r1, #0x280]	@ to SCRATCH_UMSK
> -	mov r5, #0x3000
> -.W100LOOP:
> -	subs r5, r5, #1
> -	bne .W100LOOP
> -	mov r6, #0x30			@ Load 2nd Magic Init value
> -	str	r6, [r1, #0x280]	@ to SCRATCH_UMSK
> -
> -	ldr	r6, [r1, #0]		@ Load Chip ID
> -	ldr	r3, .W100ID
> -	ldr	r7, .POODLEID
> -	cmp	r6, r3
> -	bne	.SHARPEND			@ We have no w100 - Poodle
> -
> -/* Check for pxa250 - if found we have a Corgi */
> -	ldr	r7, .CORGIID
> -	ldr	r3, .PXA255ID
> -	cmp	r4, r3
> -	blo	.SHARPEND			@ We have a PXA250 - Corgi
> -
> -/* Check for 64MiB flash - if found we have a Shepherd */
> -	bl	get_flash_ids
> -	ldr	r7, .SHEPHERDID
> -	cmp	r3, #0x76			@ 64MiB flash
> -	beq	.SHARPEND			@ We have Shepherd
> -
> -/* Must be a Husky */
> -	ldr	r7, .HUSKYID		@ Must be Husky
> -	b .SHARPEND
> -
> -.PXA270:
> -/* Check for 16MiB flash - if found we have Spitz */
> -	bl	get_flash_ids
> -	ldr	r7, .SPITZID
> -	cmp	r3, #0x73			@ 16MiB flash
> -	beq	.SHARPEND			@ We have Spitz
> -
> -/* Check for a second SCOOP chip - if found we have Borzoi */
> -	ldr	r1, .SCOOP2ADDR
> -	ldr	r7, .BORZOIID
> -	mov 	r6, #0x0140
> -	strh	r6, [r1]
> -	ldrh	r6, [r1]
> -	cmp	r6, #0x0140
> -	beq	.SHARPEND			@ We have Borzoi
> -
> -/* Must be Akita */
> -	ldr	r7, .AKITAID
> -	b	.SHARPEND			@ We have Borzoi
> -
> -.PXA255ID:
> -	.word	0x69052d00		@ PXA255 Processor ID
> -.PXA270ID:
> -	.word	0x69054100		@ PXA270 Processor ID
> -.W100ID:
> -	.word	0x57411002		@ w100 Chip ID
> -.W100ADDR:
> -	.word 	0x08010000		@ w100 Chip ID Reg Address
> -.SCOOP2ADDR:
> -	.word	0x08800040
> -.POODLEID:
> -	.word	MACH_TYPE_POODLE
> -.CORGIID:
> -	.word	MACH_TYPE_CORGI
> -.SHEPHERDID:
> -	.word	MACH_TYPE_SHEPHERD
> -.HUSKYID:
> -	.word	MACH_TYPE_HUSKY
> -.TOSAID:
> -	.word	MACH_TYPE_TOSA
> -.SPITZID:
> -	.word	MACH_TYPE_SPITZ
> -.AKITAID:
> -	.word	MACH_TYPE_AKITA
> -.BORZOIID:
> -	.word	MACH_TYPE_BORZOI
> -
> -/*
> - * Return: r2 - NAND Manufacturer ID
> - *         r3 - NAND Chip ID
> - * Corrupts: r1
> - */
> -get_flash_ids:
> -	mov	r1, #0x0c000000		@ Base address of NAND chip
> -	ldrb	r3, [r1, #24]		@ Load FLASHCTL
> -	bic	r3, r3, #0x11		@ SET NCE
> -	orr	r3, r3, #0x0a		@ SET CLR + FLWP
> -	strb	r3, [r1, #24]		@ Save to FLASHCTL
> -	mov 	r2, #0x90		@ Command "readid"
> -	strb	r2, [r1, #20]		@ Save to FLASHIO
> -	bic	r3, r3, #2		@ CLR CLE
> -	orr	r3, r3, #4		@ SET ALE
> -	strb	r3, [r1, #24]		@ Save to FLASHCTL
> -	mov	r2, #0			@ Address 0x00
> -	strb	r2, [r1, #20]		@ Save to FLASHIO
> -	bic	r3, r3, #4		@ CLR ALE
> -	strb	r3, [r1, #24]		@ Save to FLASHCTL
> -.fids1:
> -	ldrb	r3, [r1, #24]		@ Load FLASHCTL
> -	tst	r3, #32			@ Is chip ready?
> -	beq	.fids1
> -	ldrb	r2, [r1, #20]		@ NAND Manufacturer ID
> -	ldrb	r3, [r1, #20]		@ NAND Chip ID
> -	mov	pc, lr
> -
> -.SHARPEND:
> diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
> index d72dccf6f3c2..cf75be68d05c 100644
> --- a/arch/arm/common/Kconfig
> +++ b/arch/arm/common/Kconfig
> @@ -1,9 +1,3 @@
>  # SPDX-License-Identifier: GPL-2.0
>  config KRAIT_L2_ACCESSORS
>  	bool
> -
> -config SHARP_PARAM
> -	bool
> -
> -config SHARP_SCOOP
> -	bool
> diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
> index e1bcc250874f..1935b23700b0 100644
> --- a/arch/arm/common/Makefile
> +++ b/arch/arm/common/Makefile
> @@ -6,8 +6,6 @@
>  obj-y				+= firmware.o
>  
>  obj-$(CONFIG_KRAIT_L2_ACCESSORS) += krait-l2-accessors.o
> -obj-$(CONFIG_SHARP_PARAM)	+= sharpsl_param.o
> -obj-$(CONFIG_SHARP_SCOOP)	+= scoop.o
>  obj-$(CONFIG_CPU_V7)		+= secure_cntvoff.o
>  obj-$(CONFIG_MCPM)		+= mcpm_head.o mcpm_entry.o mcpm_platsmp.o vlock.o
>  CFLAGS_REMOVE_mcpm_entry.o	= -pg
> diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c
> deleted file mode 100644
> index 90474994757c..000000000000
> --- a/arch/arm/common/scoop.c
> +++ /dev/null
> @@ -1,269 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Support code for the SCOOP interface found on various Sharp PDAs
> - *
> - * Copyright (c) 2004 Richard Purdie
> - *
> - *	Based on code written by Sharp/Lineo for 2.4 kernels
> - */
> -
> -#include <linux/device.h>
> -#include <linux/gpio/driver.h>
> -#include <linux/string.h>
> -#include <linux/slab.h>
> -#include <linux/platform_device.h>
> -#include <linux/export.h>
> -#include <linux/io.h>
> -#include <asm/hardware/scoop.h>
> -
> -/* PCMCIA to Scoop linkage
> -
> -   There is no easy way to link multiple scoop devices into one
> -   single entity for the pxa2xx_pcmcia device so this structure
> -   is used which is setup by the platform code.
> -
> -   This file is never modular so this symbol is always
> -   accessile to the board support files.
> -*/
> -struct scoop_pcmcia_config *platform_scoop_config;
> -EXPORT_SYMBOL(platform_scoop_config);
> -
> -struct  scoop_dev {
> -	void __iomem *base;
> -	struct gpio_chip gpio;
> -	spinlock_t scoop_lock;
> -	unsigned short suspend_clr;
> -	unsigned short suspend_set;
> -	u32 scoop_gpwr;
> -};
> -
> -void reset_scoop(struct device *dev)
> -{
> -	struct scoop_dev *sdev = dev_get_drvdata(dev);
> -
> -	iowrite16(0x0100, sdev->base + SCOOP_MCR);  /* 00 */
> -	iowrite16(0x0000, sdev->base + SCOOP_CDR);  /* 04 */
> -	iowrite16(0x0000, sdev->base + SCOOP_CCR);  /* 10 */
> -	iowrite16(0x0000, sdev->base + SCOOP_IMR);  /* 18 */
> -	iowrite16(0x00FF, sdev->base + SCOOP_IRM);  /* 14 */
> -	iowrite16(0x0000, sdev->base + SCOOP_ISR);  /* 1C */
> -	iowrite16(0x0000, sdev->base + SCOOP_IRM);
> -}
> -
> -static void __scoop_gpio_set(struct scoop_dev *sdev,
> -			unsigned offset, int value)
> -{
> -	unsigned short gpwr;
> -
> -	gpwr = ioread16(sdev->base + SCOOP_GPWR);
> -	if (value)
> -		gpwr |= 1 << (offset + 1);
> -	else
> -		gpwr &= ~(1 << (offset + 1));
> -	iowrite16(gpwr, sdev->base + SCOOP_GPWR);
> -}
> -
> -static int scoop_gpio_set(struct gpio_chip *chip, unsigned int offset,
> -			  int value)
> -{
> -	struct scoop_dev *sdev = gpiochip_get_data(chip);
> -	unsigned long flags;
> -
> -	spin_lock_irqsave(&sdev->scoop_lock, flags);
> -
> -	__scoop_gpio_set(sdev, offset, value);
> -
> -	spin_unlock_irqrestore(&sdev->scoop_lock, flags);
> -
> -	return 0;
> -}
> -
> -static int scoop_gpio_get(struct gpio_chip *chip, unsigned offset)
> -{
> -	struct scoop_dev *sdev = gpiochip_get_data(chip);
> -
> -	/* XXX: I'm unsure, but it seems so */
> -	return !!(ioread16(sdev->base + SCOOP_GPRR) & (1 << (offset + 1)));
> -}
> -
> -static int scoop_gpio_direction_input(struct gpio_chip *chip,
> -			unsigned offset)
> -{
> -	struct scoop_dev *sdev = gpiochip_get_data(chip);
> -	unsigned long flags;
> -	unsigned short gpcr;
> -
> -	spin_lock_irqsave(&sdev->scoop_lock, flags);
> -
> -	gpcr = ioread16(sdev->base + SCOOP_GPCR);
> -	gpcr &= ~(1 << (offset + 1));
> -	iowrite16(gpcr, sdev->base + SCOOP_GPCR);
> -
> -	spin_unlock_irqrestore(&sdev->scoop_lock, flags);
> -
> -	return 0;
> -}
> -
> -static int scoop_gpio_direction_output(struct gpio_chip *chip,
> -			unsigned offset, int value)
> -{
> -	struct scoop_dev *sdev = gpiochip_get_data(chip);
> -	unsigned long flags;
> -	unsigned short gpcr;
> -
> -	spin_lock_irqsave(&sdev->scoop_lock, flags);
> -
> -	__scoop_gpio_set(sdev, offset, value);
> -
> -	gpcr = ioread16(sdev->base + SCOOP_GPCR);
> -	gpcr |= 1 << (offset + 1);
> -	iowrite16(gpcr, sdev->base + SCOOP_GPCR);
> -
> -	spin_unlock_irqrestore(&sdev->scoop_lock, flags);
> -
> -	return 0;
> -}
> -
> -unsigned short read_scoop_reg(struct device *dev, unsigned short reg)
> -{
> -	struct scoop_dev *sdev = dev_get_drvdata(dev);
> -	return ioread16(sdev->base + reg);
> -}
> -
> -void write_scoop_reg(struct device *dev, unsigned short reg, unsigned short data)
> -{
> -	struct scoop_dev *sdev = dev_get_drvdata(dev);
> -	iowrite16(data, sdev->base + reg);
> -}
> -
> -EXPORT_SYMBOL(reset_scoop);
> -EXPORT_SYMBOL(read_scoop_reg);
> -EXPORT_SYMBOL(write_scoop_reg);
> -
> -#ifdef CONFIG_PM
> -static void check_scoop_reg(struct scoop_dev *sdev)
> -{
> -	unsigned short mcr;
> -
> -	mcr = ioread16(sdev->base + SCOOP_MCR);
> -	if ((mcr & 0x100) == 0)
> -		iowrite16(0x0101, sdev->base + SCOOP_MCR);
> -}
> -
> -static int scoop_suspend(struct platform_device *dev, pm_message_t state)
> -{
> -	struct scoop_dev *sdev = platform_get_drvdata(dev);
> -
> -	check_scoop_reg(sdev);
> -	sdev->scoop_gpwr = ioread16(sdev->base + SCOOP_GPWR);
> -	iowrite16((sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set, sdev->base + SCOOP_GPWR);
> -
> -	return 0;
> -}
> -
> -static int scoop_resume(struct platform_device *dev)
> -{
> -	struct scoop_dev *sdev = platform_get_drvdata(dev);
> -
> -	check_scoop_reg(sdev);
> -	iowrite16(sdev->scoop_gpwr, sdev->base + SCOOP_GPWR);
> -
> -	return 0;
> -}
> -#else
> -#define scoop_suspend	NULL
> -#define scoop_resume	NULL
> -#endif
> -
> -static int scoop_probe(struct platform_device *pdev)
> -{
> -	struct scoop_dev *devptr;
> -	struct scoop_config *inf;
> -	struct resource *mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	int ret;
> -
> -	if (!mem)
> -		return -EINVAL;
> -
> -	devptr = kzalloc_obj(struct scoop_dev);
> -	if (!devptr)
> -		return -ENOMEM;
> -
> -	spin_lock_init(&devptr->scoop_lock);
> -
> -	inf = pdev->dev.platform_data;
> -	devptr->base = ioremap(mem->start, resource_size(mem));
> -
> -	if (!devptr->base) {
> -		ret = -ENOMEM;
> -		goto err_ioremap;
> -	}
> -
> -	platform_set_drvdata(pdev, devptr);
> -
> -	printk("Sharp Scoop Device found at 0x%08x -> 0x%8p\n",(unsigned int)mem->start, devptr->base);
> -
> -	iowrite16(0x0140, devptr->base + SCOOP_MCR);
> -	reset_scoop(&pdev->dev);
> -	iowrite16(0x0000, devptr->base + SCOOP_CPR);
> -	iowrite16(inf->io_dir & 0xffff, devptr->base + SCOOP_GPCR);
> -	iowrite16(inf->io_out & 0xffff, devptr->base + SCOOP_GPWR);
> -
> -	devptr->suspend_clr = inf->suspend_clr;
> -	devptr->suspend_set = inf->suspend_set;
> -
> -	devptr->gpio.base = -1;
> -
> -	if (inf->gpio_base != 0) {
> -		devptr->gpio.label = dev_name(&pdev->dev);
> -		devptr->gpio.base = inf->gpio_base;
> -		devptr->gpio.ngpio = 12; /* PA11 = 0, PA12 = 1, etc. up to PA22 = 11 */
> -		devptr->gpio.set = scoop_gpio_set;
> -		devptr->gpio.get = scoop_gpio_get;
> -		devptr->gpio.direction_input = scoop_gpio_direction_input;
> -		devptr->gpio.direction_output = scoop_gpio_direction_output;
> -
> -		ret = gpiochip_add_data(&devptr->gpio, devptr);
> -		if (ret)
> -			goto err_gpio;
> -	}
> -
> -	return 0;
> -
> -err_gpio:
> -	platform_set_drvdata(pdev, NULL);
> -err_ioremap:
> -	iounmap(devptr->base);
> -	kfree(devptr);
> -
> -	return ret;
> -}
> -
> -static void scoop_remove(struct platform_device *pdev)
> -{
> -	struct scoop_dev *sdev = platform_get_drvdata(pdev);
> -
> -	if (sdev->gpio.base != -1)
> -		gpiochip_remove(&sdev->gpio);
> -
> -	platform_set_drvdata(pdev, NULL);
> -	iounmap(sdev->base);
> -	kfree(sdev);
> -}
> -
> -static struct platform_driver scoop_driver = {
> -	.probe		= scoop_probe,
> -	.remove		= scoop_remove,
> -	.suspend	= scoop_suspend,
> -	.resume		= scoop_resume,
> -	.driver		= {
> -		.name	= "sharp-scoop",
> -	},
> -};
> -
> -static int __init scoop_init(void)
> -{
> -	return platform_driver_register(&scoop_driver);
> -}
> -
> -subsys_initcall(scoop_init);
> diff --git a/arch/arm/common/sharpsl_param.c b/arch/arm/common/sharpsl_param.c
> deleted file mode 100644
> index 1ca26c063f80..000000000000
> --- a/arch/arm/common/sharpsl_param.c
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Hardware parameter area specific to Sharp SL series devices
> - *
> - * Copyright (c) 2005 Richard Purdie
> - *
> - * Based on Sharp's 2.4 kernel patches
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/string.h>
> -#include <asm/mach/sharpsl_param.h>
> -#include <asm/page.h>
> -
> -/*
> - * Certain hardware parameters determined at the time of device manufacture,
> - * typically including LCD parameters are loaded by the bootloader at the
> - * address PARAM_BASE. As the kernel will overwrite them, we need to store
> - * them early in the boot process, then pass them to the appropriate drivers.
> - * Not all devices use all parameters but the format is common to all.
> - */
> -#ifdef CONFIG_ARCH_SA1100
> -#define PARAM_BASE	0xe8ffc000
> -#define param_start(x)	(void *)(x)
> -#else
> -#define PARAM_BASE	0xa0000a00
> -#define param_start(x)	__va(x)
> -#endif
> -#define MAGIC_CHG(a,b,c,d) ( ( d << 24 ) | ( c << 16 )  | ( b << 8 ) | a )
> -
> -#define COMADJ_MAGIC	MAGIC_CHG('C','M','A','D')
> -#define UUID_MAGIC	MAGIC_CHG('U','U','I','D')
> -#define TOUCH_MAGIC	MAGIC_CHG('T','U','C','H')
> -#define AD_MAGIC	MAGIC_CHG('B','V','A','D')
> -#define PHAD_MAGIC	MAGIC_CHG('P','H','A','D')
> -
> -struct sharpsl_param_info sharpsl_param;
> -EXPORT_SYMBOL(sharpsl_param);
> -
> -void sharpsl_save_param(void)
> -{
> -	struct sharpsl_param_info *params = param_start(PARAM_BASE);
> -
> -	memcpy(&sharpsl_param, params, sizeof(*params));
> -
> -	if (sharpsl_param.comadj_keyword != COMADJ_MAGIC)
> -		sharpsl_param.comadj=-1;
> -
> -	if (sharpsl_param.phad_keyword != PHAD_MAGIC)
> -		sharpsl_param.phadadj=-1;
> -
> -	if (sharpsl_param.uuid_keyword != UUID_MAGIC)
> -		sharpsl_param.uuid[0]=-1;
> -
> -	if (sharpsl_param.touch_keyword != TOUCH_MAGIC)
> -		sharpsl_param.touch_xp=-1;
> -
> -	if (sharpsl_param.adadj_keyword != AD_MAGIC)
> -		sharpsl_param.adadj=-1;
> -}
> -
> -
> diff --git a/arch/arm/configs/am200epdkit_defconfig b/arch/arm/configs/am200epdkit_defconfig
> deleted file mode 100644
> index 61beac88e863..000000000000
> --- a/arch/arm/configs/am200epdkit_defconfig
> +++ /dev/null
> @@ -1,91 +0,0 @@
> -CONFIG_LOCALVERSION="gum"
> -CONFIG_SYSVIPC=y
> -CONFIG_PREEMPT=y
> -CONFIG_EXPERT=y
> -# CONFIG_EPOLL is not set
> -# CONFIG_SHMEM is not set
> -# CONFIG_ARCH_MULTI_V7 is not set
> -CONFIG_ARCH_PXA=y
> -CONFIG_ARCH_GUMSTIX=y
> -CONFIG_ATAGS=y
> -CONFIG_CMDLINE="console=ttyS0,115200n8 root=1f01 rootfstype=jffs2"
> -CONFIG_MODULES=y
> -CONFIG_MODULE_UNLOAD=y
> -CONFIG_PARTITION_ADVANCED=y
> -# CONFIG_SWAP is not set
> -# CONFIG_VM_EVENT_COUNTERS is not set
> -CONFIG_NET=y
> -CONFIG_PACKET=m
> -CONFIG_UNIX=y
> -CONFIG_INET=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_INET_DIAG is not set
> -# CONFIG_IPV6 is not set
> -CONFIG_BT=m
> -CONFIG_BT_RFCOMM=m
> -CONFIG_BT_RFCOMM_TTY=y
> -CONFIG_BT_BNEP=m
> -CONFIG_BT_HCIUART=m
> -CONFIG_BT_HCIUART_H4=y
> -CONFIG_PCCARD=y
> -CONFIG_MTD=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_GEOMETRY=y
> -# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
> -# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
> -# CONFIG_MTD_CFI_I2 is not set
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_COMPLEX_MAPPINGS=y
> -CONFIG_MTD_PXA2XX=y
> -CONFIG_BLK_DEV_LOOP=m
> -CONFIG_BLK_DEV_SD=m
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_ATA=m
> -CONFIG_PATA_PCMCIA=m
> -CONFIG_NETDEVICES=y
> -CONFIG_SMC91X=m
> -# CONFIG_LEGACY_PTYS is not set
> -CONFIG_SERIAL_PXA=y
> -CONFIG_SERIAL_PXA_CONSOLE=y
> -# CONFIG_HW_RANDOM is not set
> -# CONFIG_HWMON is not set
> -CONFIG_WATCHDOG=y
> -CONFIG_SA1100_WATCHDOG=m
> -CONFIG_FB=y
> -CONFIG_FB_MODE_HELPERS=y
> -CONFIG_FB_TILEBLITTING=y
> -CONFIG_FB_PXA=y
> -CONFIG_FB_PXA_PARAMETERS=y
> -CONFIG_FB_MBX=m
> -CONFIG_FB_VIRTUAL=m
> -# CONFIG_VGA_CONSOLE is not set
> -CONFIG_SOUND=m
> -CONFIG_SND=m
> -CONFIG_SND_MIXER_OSS=m
> -CONFIG_SND_PCM_OSS=m
> -# CONFIG_SND_VERBOSE_PROCFS is not set
> -CONFIG_SND_PXA2XX_AC97=m
> -CONFIG_USB_GADGET=y
> -CONFIG_USB_ETH=m
> -CONFIG_MMC=y
> -CONFIG_MMC_PXA=y
> -# CONFIG_DNOTIFY is not set
> -CONFIG_VFAT_FS=y
> -CONFIG_JFFS2_FS=y
> -CONFIG_JFFS2_COMPRESSION_OPTIONS=y
> -CONFIG_JFFS2_RUBIN=y
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_NLS_ISO8859_1=y
> -CONFIG_DEBUG_KERNEL=y
> -# CONFIG_DETECT_SOFTLOCKUP is not set
> -CONFIG_CRYPTO=y
> -CONFIG_CRYPTO_CBC=m
> -CONFIG_CRYPTO_ECB=m
> -CONFIG_CRYPTO_ARC4=m
> -# CONFIG_DEBUG_BUGVERBOSE is not set
> -# CONFIG_DEBUG_PREEMPT is not set
> -CONFIG_DEBUG_USER=y
> diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig
> deleted file mode 100644
> index c7cf089001bf..000000000000
> --- a/arch/arm/configs/spitz_defconfig
> +++ /dev/null
> @@ -1,237 +0,0 @@
> -CONFIG_SYSVIPC=y
> -CONFIG_PREEMPT=y
> -CONFIG_BSD_PROCESS_ACCT=y
> -CONFIG_LOG_BUF_SHIFT=14
> -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
> -CONFIG_EXPERT=y
> -CONFIG_PROFILING=y
> -# CONFIG_ARCH_MULTI_V7 is not set
> -CONFIG_ARCH_PXA=y
> -CONFIG_PXA_SHARPSL=y
> -CONFIG_MACH_AKITA=y
> -CONFIG_MACH_BORZOI=y
> -CONFIG_ATAGS=y
> -CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2   debug"
> -CONFIG_MODULES=y
> -CONFIG_MODULE_UNLOAD=y
> -CONFIG_MODULE_FORCE_UNLOAD=y
> -CONFIG_PARTITION_ADVANCED=y
> -CONFIG_BINFMT_MISC=m
> -CONFIG_PM=y
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -CONFIG_SYN_COOKIES=y
> -CONFIG_INET6_AH=m
> -CONFIG_INET6_ESP=m
> -CONFIG_INET6_IPCOMP=m
> -CONFIG_IPV6_TUNNEL=m
> -CONFIG_NETFILTER=y
> -CONFIG_IP_NF_IPTABLES=m
> -CONFIG_IP_NF_MATCH_ADDRTYPE=m
> -CONFIG_IP_NF_MATCH_ECN=m
> -CONFIG_IP_NF_MATCH_TTL=m
> -CONFIG_IP_NF_FILTER=m
> -CONFIG_IP_NF_TARGET_LOG=m
> -CONFIG_IP_NF_MANGLE=m
> -CONFIG_IP_NF_RAW=m
> -CONFIG_IP_NF_ARPTABLES=m
> -CONFIG_IP_NF_ARPFILTER=m
> -CONFIG_IP_NF_ARP_MANGLE=m
> -CONFIG_IP6_NF_IPTABLES=m
> -CONFIG_IP6_NF_MATCH_EUI64=m
> -CONFIG_IP6_NF_MATCH_FRAG=m
> -CONFIG_IP6_NF_MATCH_OPTS=m
> -CONFIG_IP6_NF_MATCH_HL=m
> -CONFIG_IP6_NF_MATCH_IPV6HEADER=m
> -CONFIG_IP6_NF_MATCH_RT=m
> -CONFIG_IP6_NF_FILTER=m
> -CONFIG_IP6_NF_MANGLE=m
> -CONFIG_IP6_NF_RAW=m
> -CONFIG_BT=m
> -CONFIG_BT_RFCOMM=m
> -CONFIG_BT_RFCOMM_TTY=y
> -CONFIG_BT_BNEP=m
> -CONFIG_BT_BNEP_MC_FILTER=y
> -CONFIG_BT_BNEP_PROTO_FILTER=y
> -CONFIG_BT_HIDP=m
> -CONFIG_BT_HCIUART=m
> -CONFIG_BT_HCIUART_H4=y
> -CONFIG_BT_HCIUART_BCSP=y
> -CONFIG_BT_HCIBCM203X=m
> -CONFIG_BT_HCIBPA10X=m
> -CONFIG_BT_HCIBFUSB=m
> -CONFIG_BT_HCIBTUART=m
> -CONFIG_BT_HCIVHCI=m
> -CONFIG_PCCARD=y
> -CONFIG_PCMCIA_PXA2XX=y
> -CONFIG_MTD=y
> -CONFIG_MTD_CMDLINE_PARTS=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_ROM=y
> -CONFIG_MTD_COMPLEX_MAPPINGS=y
> -CONFIG_MTD_RAW_NAND=y
> -CONFIG_MTD_NAND_SHARPSL=y
> -CONFIG_BLK_DEV_LOOP=y
> -CONFIG_BLK_DEV_SD=y
> -CONFIG_CHR_DEV_ST=m
> -CONFIG_CHR_DEV_OSST=m
> -CONFIG_BLK_DEV_SR=m
> -CONFIG_CHR_DEV_SG=m
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_ATA=y
> -CONFIG_PATA_PCMCIA=y
> -CONFIG_NETDEVICES=y
> -CONFIG_PCMCIA_PCNET=m
> -CONFIG_PPP=m
> -CONFIG_PPP_BSDCOMP=m
> -CONFIG_PPP_ASYNC=m
> -CONFIG_USB_CATC=m
> -CONFIG_USB_KAWETH=m
> -CONFIG_USB_PEGASUS=m
> -CONFIG_USB_RTL8150=m
> -CONFIG_USB_USBNET=m
> -# CONFIG_USB_NET_CDC_SUBSET is not set
> -CONFIG_NET_PCMCIA=y
> -CONFIG_INPUT_FF_MEMLESS=m
> -# CONFIG_INPUT_MOUSEDEV is not set
> -CONFIG_INPUT_EVDEV=y
> -# CONFIG_KEYBOARD_ATKBD is not set
> -# CONFIG_INPUT_MOUSE is not set
> -CONFIG_INPUT_TOUCHSCREEN=y
> -CONFIG_TOUCHSCREEN_ADS7846=y
> -CONFIG_INPUT_MISC=y
> -CONFIG_INPUT_UINPUT=m
> -# CONFIG_SERIO is not set
> -# CONFIG_LEGACY_PTYS is not set
> -CONFIG_SERIAL_8250=m
> -CONFIG_SERIAL_8250_CS=m
> -CONFIG_SERIAL_PXA=y
> -CONFIG_SERIAL_PXA_CONSOLE=y
> -CONFIG_SPI=y
> -CONFIG_SPI_PXA2XX=y
> -CONFIG_FB=y
> -CONFIG_FB_PXA=y
> -CONFIG_LCD_CLASS_DEVICE=y
> -CONFIG_LCD_CORGI=y
> -CONFIG_BACKLIGHT_CLASS_DEVICE=y
> -# CONFIG_VGA_CONSOLE is not set
> -CONFIG_FRAMEBUFFER_CONSOLE=y
> -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
> -CONFIG_HID_A4TECH=m
> -CONFIG_HID_APPLE=m
> -CONFIG_HID_BELKIN=m
> -CONFIG_HID_CHERRY=m
> -CONFIG_HID_CHICONY=m
> -CONFIG_HID_CYPRESS=m
> -CONFIG_HID_EZKEY=m
> -CONFIG_HID_GYRATION=m
> -CONFIG_HID_LOGITECH=m
> -CONFIG_HID_MICROSOFT=m
> -CONFIG_HID_MONTEREY=m
> -CONFIG_HID_PANTHERLORD=m
> -CONFIG_HID_PETALYNX=m
> -CONFIG_HID_SAMSUNG=m
> -CONFIG_HID_SONY=m
> -CONFIG_HID_SUNPLUS=m
> -CONFIG_USB_KBD=m
> -CONFIG_USB_MOUSE=m
> -CONFIG_USB=m
> -CONFIG_USB_MON=m
> -CONFIG_USB_OHCI_HCD=m
> -CONFIG_USB_SL811_HCD=m
> -CONFIG_USB_SL811_CS=m
> -CONFIG_USB_ACM=m
> -CONFIG_USB_PRINTER=m
> -CONFIG_USB_STORAGE=m
> -CONFIG_USB_MDC800=m
> -CONFIG_USB_MICROTEK=m
> -CONFIG_USB_SERIAL=m
> -CONFIG_USB_SERIAL_GENERIC=y
> -CONFIG_USB_SERIAL_BELKIN=m
> -CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
> -CONFIG_USB_SERIAL_CYPRESS_M8=m
> -CONFIG_USB_SERIAL_EMPEG=m
> -CONFIG_USB_SERIAL_FTDI_SIO=m
> -CONFIG_USB_SERIAL_VISOR=m
> -CONFIG_USB_SERIAL_IPAQ=m
> -CONFIG_USB_SERIAL_IR=m
> -CONFIG_USB_SERIAL_EDGEPORT=m
> -CONFIG_USB_SERIAL_EDGEPORT_TI=m
> -CONFIG_USB_SERIAL_GARMIN=m
> -CONFIG_USB_SERIAL_IPW=m
> -CONFIG_USB_SERIAL_KEYSPAN_PDA=m
> -CONFIG_USB_SERIAL_KEYSPAN=m
> -CONFIG_USB_SERIAL_KLSI=m
> -CONFIG_USB_SERIAL_KOBIL_SCT=m
> -CONFIG_USB_SERIAL_MCT_U232=m
> -CONFIG_USB_SERIAL_PL2303=m
> -CONFIG_USB_SERIAL_SAFE=m
> -CONFIG_USB_SERIAL_TI=m
> -CONFIG_USB_SERIAL_CYBERJACK=m
> -CONFIG_USB_SERIAL_OMNINET=m
> -CONFIG_USB_EMI62=m
> -CONFIG_USB_EMI26=m
> -CONFIG_USB_LEGOTOWER=m
> -CONFIG_USB_LCD=m
> -CONFIG_USB_CYTHERM=m
> -CONFIG_USB_IDMOUSE=m
> -CONFIG_USB_GADGET=m
> -CONFIG_USB_GADGET_DUMMY_HCD=y
> -CONFIG_USB_ZERO=m
> -CONFIG_USB_ETH=m
> -CONFIG_USB_GADGETFS=m
> -CONFIG_USB_MASS_STORAGE=m
> -CONFIG_USB_G_SERIAL=m
> -CONFIG_MMC=y
> -CONFIG_MMC_PXA=y
> -CONFIG_EXT2_FS=y
> -CONFIG_EXT2_FS_XATTR=y
> -CONFIG_EXT2_FS_POSIX_ACL=y
> -CONFIG_EXT2_FS_SECURITY=y
> -CONFIG_EXT4_FS=y
> -# CONFIG_EXT4_FS_XATTR is not set
> -CONFIG_MSDOS_FS=y
> -CONFIG_VFAT_FS=y
> -CONFIG_TMPFS=y
> -CONFIG_JFFS2_FS=y
> -CONFIG_JFFS2_SUMMARY=y
> -CONFIG_JFFS2_COMPRESSION_OPTIONS=y
> -CONFIG_JFFS2_RUBIN=y
> -CONFIG_CRAMFS=m
> -CONFIG_NFS_FS=m
> -CONFIG_NFS_V3=y
> -CONFIG_NFS_V4=y
> -CONFIG_SMB_FS=m
> -CONFIG_SMB_NLS_DEFAULT=y
> -CONFIG_NFS_V4=m
> -CONFIG_NLS_DEFAULT="cp437"
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_NLS_ISO8859_1=y
> -CONFIG_NLS_UTF8=y
> -CONFIG_DEBUG_KERNEL=y
> -CONFIG_CRYPTO_NULL=m
> -CONFIG_CRYPTO_BENCHMARK=m
> -CONFIG_CRYPTO_ECB=m
> -CONFIG_CRYPTO_SHA256=m
> -CONFIG_CRYPTO_AES=m
> -CONFIG_CRYPTO_ANUBIS=m
> -CONFIG_CRYPTO_ARC4=m
> -CONFIG_CRYPTO_BLOWFISH=m
> -CONFIG_CRYPTO_CAST5=m
> -CONFIG_CRYPTO_CAST6=m
> -CONFIG_CRYPTO_KHAZAD=m
> -CONFIG_CRYPTO_SERPENT=m
> -CONFIG_CRYPTO_TEA=m
> -CONFIG_CRYPTO_TWOFISH=m
> -CONFIG_CRYPTO_HMAC=y
> -CONFIG_CRYPTO_MD4=m
> -CONFIG_CRYPTO_SHA512=m
> -CONFIG_CRYPTO_WP512=m
> -CONFIG_FONTS=y
> -CONFIG_FONT_8x8=y
> -CONFIG_FONT_8x16=y
> -CONFIG_MAGIC_SYSRQ=y
> -# CONFIG_DEBUG_PREEMPT is not set
> -# CONFIG_FTRACE is not set
> diff --git a/arch/arm/include/asm/hardware/scoop.h b/arch/arm/include/asm/hardware/scoop.h
> deleted file mode 100644
> index 505453315287..000000000000
> --- a/arch/arm/include/asm/hardware/scoop.h
> +++ /dev/null
> @@ -1,67 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  Definitions for the SCOOP interface found on various Sharp PDAs
> - *
> - *  Copyright (c) 2004 Richard Purdie
> - */
> -
> -#define SCOOP_MCR  0x00
> -#define SCOOP_CDR  0x04
> -#define SCOOP_CSR  0x08
> -#define SCOOP_CPR  0x0C
> -#define SCOOP_CCR  0x10
> -#define SCOOP_IRR  0x14
> -#define SCOOP_IRM  0x14
> -#define SCOOP_IMR  0x18
> -#define SCOOP_ISR  0x1C
> -#define SCOOP_GPCR 0x20
> -#define SCOOP_GPWR 0x24
> -#define SCOOP_GPRR 0x28
> -
> -#define SCOOP_CPR_OUT	(1 << 7)
> -#define SCOOP_CPR_SD_3V	(1 << 2)
> -#define SCOOP_CPR_CF_XV	(1 << 1)
> -#define SCOOP_CPR_CF_3V	(1 << 0)
> -
> -#define SCOOP_GPCR_PA22	(1 << 12)
> -#define SCOOP_GPCR_PA21	(1 << 11)
> -#define SCOOP_GPCR_PA20	(1 << 10)
> -#define SCOOP_GPCR_PA19	(1 << 9)
> -#define SCOOP_GPCR_PA18	(1 << 8)
> -#define SCOOP_GPCR_PA17	(1 << 7)
> -#define SCOOP_GPCR_PA16	(1 << 6)
> -#define SCOOP_GPCR_PA15	(1 << 5)
> -#define SCOOP_GPCR_PA14	(1 << 4)
> -#define SCOOP_GPCR_PA13	(1 << 3)
> -#define SCOOP_GPCR_PA12	(1 << 2)
> -#define SCOOP_GPCR_PA11	(1 << 1)
> -
> -struct scoop_config {
> -	unsigned short io_out;
> -	unsigned short io_dir;
> -	unsigned short suspend_clr;
> -	unsigned short suspend_set;
> -	int gpio_base;
> -};
> -
> -/* Structure for linking scoop devices to PCMCIA sockets */
> -struct scoop_pcmcia_dev {
> -	struct device *dev;     /* Pointer to this socket's scoop device */
> -	int	irq;                /* irq for socket */
> -	int cd_irq;
> -	const char *cd_irq_str;
> -	unsigned char keep_vs;
> -	unsigned char keep_rd;
> -};
> -
> -struct scoop_pcmcia_config {
> -	struct scoop_pcmcia_dev *devs;
> -	int num_devs;
> -	void (*power_ctrl)(struct device *scoop, unsigned short cpr, int nr);
> -};
> -
> -extern struct scoop_pcmcia_config *platform_scoop_config;
> -
> -void reset_scoop(struct device *dev);
> -unsigned short read_scoop_reg(struct device *dev, unsigned short reg);
> -void write_scoop_reg(struct device *dev, unsigned short reg, unsigned short data);
> diff --git a/arch/arm/include/asm/mach/sharpsl_param.h b/arch/arm/include/asm/mach/sharpsl_param.h
> deleted file mode 100644
> index 700a377c20bf..000000000000
> --- a/arch/arm/include/asm/mach/sharpsl_param.h
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Hardware parameter area specific to Sharp SL series devices
> - *
> - * Copyright (c) 2005 Richard Purdie
> - *
> - * Based on Sharp's 2.4 kernel patches
> - */
> -
> -struct sharpsl_param_info {
> -  unsigned int comadj_keyword;
> -  unsigned int comadj;
> -
> -  unsigned int uuid_keyword;
> -  unsigned char uuid[16];
> -
> -  unsigned int touch_keyword;
> -  unsigned int touch_xp;
> -  unsigned int touch_yp;
> -  unsigned int touch_xd;
> -  unsigned int touch_yd;
> -
> -  unsigned int adadj_keyword;
> -  unsigned int adadj;
> -
> -  unsigned int phad_keyword;
> -  unsigned int phadadj;
> -} __attribute__((packed));
> -
> -
> -extern struct sharpsl_param_info sharpsl_param;
> -extern void sharpsl_save_param(void);
> -
> diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
> index 2fb29b9ef744..354e3dc17776 100644
> --- a/arch/arm/mach-pxa/Kconfig
> +++ b/arch/arm/mach-pxa/Kconfig
> @@ -50,77 +50,6 @@ config MACH_PXA3XX_DT
>  	  the device tree. Needn't select any other machine while
>  	  MACH_PXA3XX_DT is enabled.
>  
> -if ATAGS
> -
> -comment "Legacy board files"
> -
> -config ARCH_GUMSTIX
> -	bool "Gumstix XScale 255 boards (DEPRECATED)"
> -	select PXA25x
> -	help
> -	  Say Y here if you intend to run this kernel on
> -	  Basix, Connex, ws-200ax, ws-400ax systems
> -
> -	  Support for this machine will go away in early 2027,
> -	  unless it gets converted to device tree.
> -
> -choice
> -	prompt "Gumstix Carrier/Expansion Board"
> -	depends on ARCH_GUMSTIX
> -
> -config GUMSTIX_AM200EPD
> -	bool "Enable AM200EPD board support"
> -
> -config GUMSTIX_AM300EPD
> -	bool "Enable AM300EPD board support"
> -
> -endchoice
> -
> -config PXA_SHARPSL
> -	bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models (DEPRECATED)"
> -	select SHARP_PARAM
> -	select SHARP_SCOOP
> -	help
> -	  Say Y here if you intend to run this kernel on a
> -	  Sharp Zaurus SL-5600 (Poodle), SL-C700 (Corgi),
> -	  SL-C750 (Shepherd), SL-C760 (Husky), SL-C1000 (Akita),
> -	  SL-C3000 (Spitz), SL-C3100 (Borzoi) or SL-C6000x (Tosa)
> -	  handheld computer.
> -
> -	  Support for these machines will go away in early 2027,
> -	  unless they get converted to device tree.
> -
> -config PXA_SHARPSL_DETECT_MACH_ID
> -	bool "Detect machine ID at run-time in the decompressor"
> -	depends on PXA_SHARPSL
> -	help
> -	  Say Y here if you want the zImage decompressor to detect
> -	  the Zaurus machine ID at run-time. For latest kexec-based
> -	  boot loader, this is not necessary.
> -
> -config MACH_AKITA
> -	bool "Enable Sharp SL-1000 (Akita) Support"
> -	depends on PXA_SHARPSL
> -	select I2C
> -	select I2C_PXA
> -	select MACH_SPITZ
> -	select PXA27x
> -	select PXA_SHARP_Cxx00
> -
> -config MACH_SPITZ
> -	bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
> -	depends on PXA_SHARPSL
> -	select PXA27x
> -	select PXA_SHARP_Cxx00
> -
> -config MACH_BORZOI
> -	bool "Enable Sharp Zaurus SL-3100 (Borzoi) Support"
> -	depends on PXA_SHARPSL
> -	select PXA27x
> -	select PXA_SHARP_Cxx00
> -
> -endif # ATAGS
> -
>  config PXA25x
>  	bool
>  	select CPU_XSCALE
> @@ -157,22 +86,4 @@ config CPU_PXA320
>  	help
>  	  PXA320 (codename Monahans-P)
>  
> -config PXA_SHARP_Cxx00
> -	bool
> -	select SHARPSL_PM
> -	help
> -	  Enable common support for Sharp Cxx00 models
> -
> -config SHARPSL_PM
> -	bool
> -	select APM_EMULATION
> -	select SHARPSL_PM_MAX1111
> -
> -config SHARPSL_PM_MAX1111
> -	bool
> -	select HWMON
> -	select SENSORS_MAX1111
> -	select SPI
> -	select SPI_MASTER
> -
>  endif
> diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
> index faccdd356482..3bc3b2e56afe 100644
> --- a/arch/arm/mach-pxa/Makefile
> +++ b/arch/arm/mach-pxa/Makefile
> @@ -22,11 +22,3 @@ obj-$(CONFIG_CPU_PXA320)	+= pxa320.o
>  obj-$(CONFIG_MACH_PXA25X_DT)	+= pxa-dt.o
>  obj-$(CONFIG_MACH_PXA27X_DT)	+= pxa-dt.o
>  obj-$(CONFIG_MACH_PXA3XX_DT)	+= pxa-dt.o
> -
> -# 3rd Party Dev Platforms
> -obj-$(CONFIG_ARCH_GUMSTIX)	+= gumstix.o
> -obj-$(CONFIG_GUMSTIX_AM200EPD)	+= am200epd.o
> -obj-$(CONFIG_GUMSTIX_AM300EPD)	+= am300epd.o
> -
> -# End-user Products
> -obj-$(CONFIG_PXA_SHARP_Cxx00)	+= spitz.o sharpsl_pm.o spitz_pm.o
> diff --git a/arch/arm/mach-pxa/am200epd.c b/arch/arm/mach-pxa/am200epd.c
> deleted file mode 100644
> index 4814f3cfe775..000000000000
> --- a/arch/arm/mach-pxa/am200epd.c
> +++ /dev/null
> @@ -1,395 +0,0 @@
> -/*
> - * am200epd.c -- Platform device for AM200 EPD kit
> - *
> - * Copyright (C) 2008, Jaya Kumar
> - *
> - * This file is subject to the terms and conditions of the GNU General Public
> - * License. See the file COPYING in the main directory of this archive for
> - * more details.
> - *
> - * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven.
> - *
> - * This work was made possible by help and equipment support from E-Ink
> - * Corporation. http://support.eink.com/community
> - *
> - * This driver is written to be used with the Metronome display controller.
> - * on the AM200 EPD prototype kit/development kit with an E-Ink 800x600
> - * Vizplex EPD on a Gumstix board using the Lyre interface board.
> - *
> - */
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/string.h>
> -#include <linux/delay.h>
> -#include <linux/interrupt.h>
> -#include <linux/fb.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/irq.h>
> -#include <linux/gpio/legacy.h>
> -
> -#include "pxa25x.h"
> -#include "gumstix.h"
> -#include <linux/platform_data/video-pxafb.h>
> -
> -#include "generic.h"
> -
> -#include <video/metronomefb.h>
> -
> -static unsigned int panel_type = 6;
> -static struct platform_device *am200_device;
> -static struct metronome_board am200_board;
> -
> -static struct pxafb_mode_info am200_fb_mode_9inch7 = {
> -	.pixclock	= 40000,
> -	.xres		= 1200,
> -	.yres		= 842,
> -	.bpp		= 16,
> -	.hsync_len	= 2,
> -	.left_margin	= 2,
> -	.right_margin	= 2,
> -	.vsync_len	= 1,
> -	.upper_margin	= 2,
> -	.lower_margin	= 25,
> -	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
> -};
> -
> -static struct pxafb_mode_info am200_fb_mode_8inch = {
> -	.pixclock	= 40000,
> -	.xres		= 1088,
> -	.yres		= 791,
> -	.bpp		= 16,
> -	.hsync_len	= 28,
> -	.left_margin	= 8,
> -	.right_margin	= 30,
> -	.vsync_len	= 8,
> -	.upper_margin	= 10,
> -	.lower_margin	= 8,
> -	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
> -};
> -
> -static struct pxafb_mode_info am200_fb_mode_6inch = {
> -	.pixclock	= 40189,
> -	.xres		= 832,
> -	.yres		= 622,
> -	.bpp		= 16,
> -	.hsync_len	= 28,
> -	.left_margin	= 34,
> -	.right_margin	= 34,
> -	.vsync_len	= 25,
> -	.upper_margin	= 0,
> -	.lower_margin	= 2,
> -	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
> -};
> -
> -static struct pxafb_mach_info am200_fb_info = {
> -	.modes		= &am200_fb_mode_6inch,
> -	.num_modes	= 1,
> -	.lcd_conn	= LCD_TYPE_COLOR_TFT | LCD_PCLK_EDGE_FALL |
> -			  LCD_AC_BIAS_FREQ(24),
> -};
> -
> -/* register offsets for gpio control */
> -#define LED_GPIO_PIN 51
> -#define STDBY_GPIO_PIN 48
> -#define RST_GPIO_PIN 49
> -#define RDY_GPIO_PIN 32
> -#define ERR_GPIO_PIN 17
> -#define PCBPWR_GPIO_PIN 16
> -static int gpios[] = { LED_GPIO_PIN , STDBY_GPIO_PIN , RST_GPIO_PIN,
> -			RDY_GPIO_PIN, ERR_GPIO_PIN, PCBPWR_GPIO_PIN };
> -static char *gpio_names[] = { "LED" , "STDBY" , "RST", "RDY", "ERR", "PCBPWR" };
> -
> -static int am200_init_gpio_regs(struct metronomefb_par *par)
> -{
> -	int i;
> -	int err;
> -
> -	for (i = 0; i < ARRAY_SIZE(gpios); i++) {
> -		err = gpio_request(gpios[i], gpio_names[i]);
> -		if (err) {
> -			dev_err(&am200_device->dev, "failed requesting "
> -				"gpio %s, err=%d\n", gpio_names[i], err);
> -			goto err_req_gpio;
> -		}
> -	}
> -
> -	gpio_direction_output(LED_GPIO_PIN, 0);
> -	gpio_direction_output(STDBY_GPIO_PIN, 0);
> -	gpio_direction_output(RST_GPIO_PIN, 0);
> -
> -	gpio_direction_input(RDY_GPIO_PIN);
> -	gpio_direction_input(ERR_GPIO_PIN);
> -
> -	gpio_direction_output(PCBPWR_GPIO_PIN, 0);
> -
> -	return 0;
> -
> -err_req_gpio:
> -	while (--i >= 0)
> -		gpio_free(gpios[i]);
> -
> -	return err;
> -}
> -
> -static void am200_cleanup(struct metronomefb_par *par)
> -{
> -	int i;
> -
> -	free_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), par);
> -
> -	for (i = 0; i < ARRAY_SIZE(gpios); i++)
> -		gpio_free(gpios[i]);
> -}
> -
> -static int am200_share_video_mem(struct fb_info *info)
> -{
> -	/* rough check if this is our desired fb and not something else */
> -	if ((info->var.xres != am200_fb_info.modes->xres)
> -		|| (info->var.yres != am200_fb_info.modes->yres))
> -		return 0;
> -
> -	/* we've now been notified that we have our new fb */
> -	am200_board.metromem = info->screen_base;
> -	am200_board.host_fbinfo = info;
> -
> -	/* try to refcount host drv since we are the consumer after this */
> -	if (!try_module_get(info->fbops->owner))
> -		return -ENODEV;
> -
> -	return 0;
> -}
> -
> -static int am200_unshare_video_mem(struct fb_info *info)
> -{
> -	dev_dbg(&am200_device->dev, "ENTER %s\n", __func__);
> -
> -	if (info != am200_board.host_fbinfo)
> -		return 0;
> -
> -	module_put(am200_board.host_fbinfo->fbops->owner);
> -	return 0;
> -}
> -
> -static int am200_fb_notifier_callback(struct notifier_block *self,
> -				 unsigned long event, void *data)
> -{
> -	struct fb_event *evdata = data;
> -	struct fb_info *info = evdata->info;
> -
> -	dev_dbg(&am200_device->dev, "ENTER %s\n", __func__);
> -
> -	if (event == FB_EVENT_FB_REGISTERED)
> -		return am200_share_video_mem(info);
> -	else if (event == FB_EVENT_FB_UNREGISTERED)
> -		return am200_unshare_video_mem(info);
> -
> -	return 0;
> -}
> -
> -static struct notifier_block am200_fb_notif = {
> -	.notifier_call = am200_fb_notifier_callback,
> -};
> -
> -/* this gets called as part of our init. these steps must be done now so
> - * that we can use pxa_set_fb_info */
> -static void __init am200_presetup_fb(void)
> -{
> -	int fw;
> -	int fh;
> -	int padding_size;
> -	int totalsize;
> -
> -	switch (panel_type) {
> -	case 6:
> -		am200_fb_info.modes = &am200_fb_mode_6inch;
> -		break;
> -	case 8:
> -		am200_fb_info.modes = &am200_fb_mode_8inch;
> -		break;
> -	case 97:
> -		am200_fb_info.modes = &am200_fb_mode_9inch7;
> -		break;
> -	default:
> -		dev_err(&am200_device->dev, "invalid panel_type selection,"
> -						" setting to 6\n");
> -		am200_fb_info.modes = &am200_fb_mode_6inch;
> -		break;
> -	}
> -
> -	/* the frame buffer is divided as follows:
> -	command | CRC | padding
> -	16kb waveform data | CRC | padding
> -	image data | CRC
> -	*/
> -
> -	fw = am200_fb_info.modes->xres;
> -	fh = am200_fb_info.modes->yres;
> -
> -	/* waveform must be 16k + 2 for checksum */
> -	am200_board.wfm_size = roundup(16*1024 + 2, fw);
> -
> -	padding_size = PAGE_SIZE + (4 * fw);
> -
> -	/* total is 1 cmd , 1 wfm, padding and image */
> -	totalsize = fw + am200_board.wfm_size + padding_size + (fw*fh);
> -
> -	/* save this off because we're manipulating fw after this and
> -	 * we'll need it when we're ready to setup the framebuffer */
> -	am200_board.fw = fw;
> -	am200_board.fh = fh;
> -
> -	/* the reason we do this adjustment is because we want to acquire
> -	 * more framebuffer memory without imposing custom awareness on the
> -	 * underlying pxafb driver */
> -	am200_fb_info.modes->yres = DIV_ROUND_UP(totalsize, fw);
> -
> -	/* we divide since we told the LCD controller we're 16bpp */
> -	am200_fb_info.modes->xres /= 2;
> -
> -	pxa_set_fb_info(NULL, &am200_fb_info);
> -
> -}
> -
> -/* this gets called by metronomefb as part of its init, in our case, we
> - * have already completed initial framebuffer init in presetup_fb so we
> - * can just setup the fb access pointers */
> -static int am200_setup_fb(struct metronomefb_par *par)
> -{
> -	int fw;
> -	int fh;
> -
> -	fw = am200_board.fw;
> -	fh = am200_board.fh;
> -
> -	/* metromem was set up by the notifier in share_video_mem so now
> -	 * we can use its value to calculate the other entries */
> -	par->metromem_cmd = (struct metromem_cmd *) am200_board.metromem;
> -	par->metromem_wfm = am200_board.metromem + fw;
> -	par->metromem_img = par->metromem_wfm + am200_board.wfm_size;
> -	par->metromem_img_csum = (u16 *) (par->metromem_img + (fw * fh));
> -	par->metromem_dma = am200_board.host_fbinfo->fix.smem_start;
> -
> -	return 0;
> -}
> -
> -static int am200_get_panel_type(void)
> -{
> -	return panel_type;
> -}
> -
> -static irqreturn_t am200_handle_irq(int irq, void *dev_id)
> -{
> -	struct metronomefb_par *par = dev_id;
> -
> -	wake_up_interruptible(&par->waitq);
> -	return IRQ_HANDLED;
> -}
> -
> -static int am200_setup_irq(struct fb_info *info)
> -{
> -	int ret;
> -
> -	ret = request_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), am200_handle_irq,
> -				IRQF_TRIGGER_FALLING, "AM200", info->par);
> -	if (ret)
> -		dev_err(&am200_device->dev, "request_irq failed: %d\n", ret);
> -
> -	return ret;
> -}
> -
> -static void am200_set_rst(struct metronomefb_par *par, int state)
> -{
> -	gpio_set_value(RST_GPIO_PIN, state);
> -}
> -
> -static void am200_set_stdby(struct metronomefb_par *par, int state)
> -{
> -	gpio_set_value(STDBY_GPIO_PIN, state);
> -}
> -
> -static int am200_wait_event(struct metronomefb_par *par)
> -{
> -	return wait_event_timeout(par->waitq, gpio_get_value(RDY_GPIO_PIN), HZ);
> -}
> -
> -static int am200_wait_event_intr(struct metronomefb_par *par)
> -{
> -	return wait_event_interruptible_timeout(par->waitq,
> -					gpio_get_value(RDY_GPIO_PIN), HZ);
> -}
> -
> -static struct metronome_board am200_board = {
> -	.owner			= THIS_MODULE,
> -	.setup_irq		= am200_setup_irq,
> -	.setup_io		= am200_init_gpio_regs,
> -	.setup_fb		= am200_setup_fb,
> -	.set_rst		= am200_set_rst,
> -	.set_stdby		= am200_set_stdby,
> -	.met_wait_event		= am200_wait_event,
> -	.met_wait_event_intr	= am200_wait_event_intr,
> -	.get_panel_type		= am200_get_panel_type,
> -	.cleanup		= am200_cleanup,
> -};
> -
> -static unsigned long am200_pin_config[] __initdata = {
> -	GPIO51_GPIO,
> -	GPIO49_GPIO,
> -	GPIO48_GPIO,
> -	GPIO32_GPIO,
> -	GPIO17_GPIO,
> -	GPIO16_GPIO,
> -};
> -
> -int __init am200_init(void)
> -{
> -	int ret;
> -
> -	/*
> -	 * Before anything else, we request notification for any fb
> -	 * creation events.
> -	 *
> -	 * FIXME: This is terrible and needs to be nuked. The notifier is used
> -	 * to get at the fb base address from the boot splash fb driver, which
> -	 * is then passed to metronomefb. Instaed of metronomfb or this board
> -	 * support file here figuring this out on their own.
> -	 *
> -	 * See also the #ifdef in fbmem.c.
> -	 */
> -	fb_register_client(&am200_fb_notif);
> -
> -	pxa2xx_mfp_config(ARRAY_AND_SIZE(am200_pin_config));
> -
> -	/* request our platform independent driver */
> -	request_module("metronomefb");
> -
> -	am200_device = platform_device_alloc("metronomefb", -1);
> -	if (!am200_device)
> -		return -ENOMEM;
> -
> -	/* the am200_board that will be seen by metronomefb is a copy */
> -	platform_device_add_data(am200_device, &am200_board,
> -					sizeof(am200_board));
> -
> -	/* this _add binds metronomefb to am200. metronomefb refcounts am200 */
> -	ret = platform_device_add(am200_device);
> -
> -	if (ret) {
> -		platform_device_put(am200_device);
> -		fb_unregister_client(&am200_fb_notif);
> -		return ret;
> -	}
> -
> -	am200_presetup_fb();
> -
> -	return 0;
> -}
> -
> -module_param(panel_type, uint, 0);
> -MODULE_PARM_DESC(panel_type, "Select the panel type: 6, 8, 97");
> -
> -MODULE_DESCRIPTION("board driver for am200 metronome epd kit");
> -MODULE_AUTHOR("Jaya Kumar");
> -MODULE_LICENSE("GPL");
> diff --git a/arch/arm/mach-pxa/am300epd.c b/arch/arm/mach-pxa/am300epd.c
> deleted file mode 100644
> index 435fb72da7de..000000000000
> --- a/arch/arm/mach-pxa/am300epd.c
> +++ /dev/null
> @@ -1,296 +0,0 @@
> -/*
> - * am300epd.c -- Platform device for AM300 EPD kit
> - *
> - * Copyright (C) 2008, Jaya Kumar
> - *
> - * This file is subject to the terms and conditions of the GNU General Public
> - * License. See the file COPYING in the main directory of this archive for
> - * more details.
> - *
> - * This work was made possible by help and equipment support from E-Ink
> - * Corporation. http://support.eink.com/community
> - *
> - * This driver is written to be used with the Broadsheet display controller.
> - * on the AM300 EPD prototype kit/development kit with an E-Ink 800x600
> - * Vizplex EPD on a Gumstix board using the Broadsheet interface board.
> - *
> - */
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/string.h>
> -#include <linux/delay.h>
> -#include <linux/interrupt.h>
> -#include <linux/fb.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/irq.h>
> -#include <linux/gpio/legacy.h>
> -
> -#include "gumstix.h"
> -#include "mfp-pxa25x.h"
> -#include "irqs.h"
> -#include <linux/platform_data/video-pxafb.h>
> -
> -#include "generic.h"
> -
> -#include <video/broadsheetfb.h>
> -
> -static unsigned int panel_type = 6;
> -static struct platform_device *am300_device;
> -static struct broadsheet_board am300_board;
> -
> -static unsigned long am300_pin_config[] __initdata = {
> -	GPIO16_GPIO,
> -	GPIO17_GPIO,
> -	GPIO32_GPIO,
> -	GPIO48_GPIO,
> -	GPIO49_GPIO,
> -	GPIO51_GPIO,
> -	GPIO74_GPIO,
> -	GPIO75_GPIO,
> -	GPIO76_GPIO,
> -	GPIO77_GPIO,
> -
> -	/* this is the 16-bit hdb bus 58-73 */
> -	GPIO58_GPIO,
> -	GPIO59_GPIO,
> -	GPIO60_GPIO,
> -	GPIO61_GPIO,
> -
> -	GPIO62_GPIO,
> -	GPIO63_GPIO,
> -	GPIO64_GPIO,
> -	GPIO65_GPIO,
> -
> -	GPIO66_GPIO,
> -	GPIO67_GPIO,
> -	GPIO68_GPIO,
> -	GPIO69_GPIO,
> -
> -	GPIO70_GPIO,
> -	GPIO71_GPIO,
> -	GPIO72_GPIO,
> -	GPIO73_GPIO,
> -};
> -
> -/* register offsets for gpio control */
> -#define PWR_GPIO_PIN	16
> -#define CFG_GPIO_PIN	17
> -#define RDY_GPIO_PIN	32
> -#define DC_GPIO_PIN	48
> -#define RST_GPIO_PIN	49
> -#define LED_GPIO_PIN	51
> -#define RD_GPIO_PIN	74
> -#define WR_GPIO_PIN	75
> -#define CS_GPIO_PIN	76
> -#define IRQ_GPIO_PIN	77
> -
> -/* hdb bus */
> -#define DB0_GPIO_PIN	58
> -#define DB15_GPIO_PIN	73
> -
> -static int gpios[] = { PWR_GPIO_PIN, CFG_GPIO_PIN, RDY_GPIO_PIN, DC_GPIO_PIN,
> -			RST_GPIO_PIN, RD_GPIO_PIN, WR_GPIO_PIN, CS_GPIO_PIN,
> -			IRQ_GPIO_PIN, LED_GPIO_PIN };
> -static char *gpio_names[] = { "PWR", "CFG", "RDY", "DC", "RST", "RD", "WR",
> -				"CS", "IRQ", "LED" };
> -
> -static int am300_wait_event(struct broadsheetfb_par *par)
> -{
> -	/* todo: improve err recovery */
> -	wait_event(par->waitq, gpio_get_value(RDY_GPIO_PIN));
> -	return 0;
> -}
> -
> -static int am300_init_gpio_regs(struct broadsheetfb_par *par)
> -{
> -	int i;
> -	int err;
> -	char dbname[8];
> -
> -	for (i = 0; i < ARRAY_SIZE(gpios); i++) {
> -		err = gpio_request(gpios[i], gpio_names[i]);
> -		if (err) {
> -			dev_err(&am300_device->dev, "failed requesting "
> -				"gpio %s, err=%d\n", gpio_names[i], err);
> -			goto err_req_gpio;
> -		}
> -	}
> -
> -	/* we also need to take care of the hdb bus */
> -	for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++) {
> -		sprintf(dbname, "DB%d", i);
> -		err = gpio_request(i, dbname);
> -		if (err) {
> -			dev_err(&am300_device->dev, "failed requesting "
> -				"gpio %d, err=%d\n", i, err);
> -			goto err_req_gpio2;
> -		}
> -	}
> -
> -	/* setup the outputs and init values */
> -	gpio_direction_output(PWR_GPIO_PIN, 0);
> -	gpio_direction_output(CFG_GPIO_PIN, 1);
> -	gpio_direction_output(DC_GPIO_PIN, 0);
> -	gpio_direction_output(RD_GPIO_PIN, 1);
> -	gpio_direction_output(WR_GPIO_PIN, 1);
> -	gpio_direction_output(CS_GPIO_PIN, 1);
> -	gpio_direction_output(RST_GPIO_PIN, 0);
> -
> -	/* setup the inputs */
> -	gpio_direction_input(RDY_GPIO_PIN);
> -	gpio_direction_input(IRQ_GPIO_PIN);
> -
> -	/* start the hdb bus as an input */
> -	for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++)
> -		gpio_direction_output(i, 0);
> -
> -	/* go into command mode */
> -	gpio_set_value(CFG_GPIO_PIN, 1);
> -	gpio_set_value(RST_GPIO_PIN, 0);
> -	msleep(10);
> -	gpio_set_value(RST_GPIO_PIN, 1);
> -	msleep(10);
> -	am300_wait_event(par);
> -
> -	return 0;
> -
> -err_req_gpio2:
> -	while (--i >= DB0_GPIO_PIN)
> -		gpio_free(i);
> -	i = ARRAY_SIZE(gpios);
> -err_req_gpio:
> -	while (--i >= 0)
> -		gpio_free(gpios[i]);
> -
> -	return err;
> -}
> -
> -static int am300_init_board(struct broadsheetfb_par *par)
> -{
> -	return am300_init_gpio_regs(par);
> -}
> -
> -static void am300_cleanup(struct broadsheetfb_par *par)
> -{
> -	int i;
> -
> -	free_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), par);
> -
> -	for (i = 0; i < ARRAY_SIZE(gpios); i++)
> -		gpio_free(gpios[i]);
> -
> -	for (i = DB0_GPIO_PIN; i <= DB15_GPIO_PIN; i++)
> -		gpio_free(i);
> -
> -}
> -
> -static u16 am300_get_hdb(struct broadsheetfb_par *par)
> -{
> -	u16 res = 0;
> -	int i;
> -
> -	for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++)
> -		res |= (gpio_get_value(DB0_GPIO_PIN + i)) ? (1 << i) : 0;
> -
> -	return res;
> -}
> -
> -static void am300_set_hdb(struct broadsheetfb_par *par, u16 data)
> -{
> -	int i;
> -
> -	for (i = 0; i <= (DB15_GPIO_PIN - DB0_GPIO_PIN) ; i++)
> -		gpio_set_value(DB0_GPIO_PIN + i, (data >> i) & 0x01);
> -}
> -
> -
> -static void am300_set_ctl(struct broadsheetfb_par *par, unsigned char bit,
> -				u8 state)
> -{
> -	switch (bit) {
> -	case BS_CS:
> -		gpio_set_value(CS_GPIO_PIN, state);
> -		break;
> -	case BS_DC:
> -		gpio_set_value(DC_GPIO_PIN, state);
> -		break;
> -	case BS_WR:
> -		gpio_set_value(WR_GPIO_PIN, state);
> -		break;
> -	}
> -}
> -
> -static int am300_get_panel_type(void)
> -{
> -	return panel_type;
> -}
> -
> -static irqreturn_t am300_handle_irq(int irq, void *dev_id)
> -{
> -	struct broadsheetfb_par *par = dev_id;
> -
> -	wake_up(&par->waitq);
> -	return IRQ_HANDLED;
> -}
> -
> -static int am300_setup_irq(struct fb_info *info)
> -{
> -	int ret;
> -	struct broadsheetfb_par *par = info->par;
> -
> -	ret = request_irq(PXA_GPIO_TO_IRQ(RDY_GPIO_PIN), am300_handle_irq,
> -				IRQF_TRIGGER_RISING, "AM300", par);
> -	if (ret)
> -		dev_err(&am300_device->dev, "request_irq failed: %d\n", ret);
> -
> -	return ret;
> -}
> -
> -static struct broadsheet_board am300_board = {
> -	.owner			= THIS_MODULE,
> -	.init			= am300_init_board,
> -	.cleanup		= am300_cleanup,
> -	.set_hdb		= am300_set_hdb,
> -	.get_hdb		= am300_get_hdb,
> -	.set_ctl		= am300_set_ctl,
> -	.wait_for_rdy		= am300_wait_event,
> -	.get_panel_type		= am300_get_panel_type,
> -	.setup_irq		= am300_setup_irq,
> -};
> -
> -int __init am300_init(void)
> -{
> -	int ret;
> -
> -	pxa2xx_mfp_config(ARRAY_AND_SIZE(am300_pin_config));
> -
> -	/* request our platform independent driver */
> -	request_module("broadsheetfb");
> -
> -	am300_device = platform_device_alloc("broadsheetfb", -1);
> -	if (!am300_device)
> -		return -ENOMEM;
> -
> -	/* the am300_board that will be seen by broadsheetfb is a copy */
> -	platform_device_add_data(am300_device, &am300_board,
> -					sizeof(am300_board));
> -
> -	ret = platform_device_add(am300_device);
> -
> -	if (ret) {
> -		platform_device_put(am300_device);
> -		return ret;
> -	}
> -
> -	return 0;
> -}
> -
> -module_param(panel_type, uint, 0);
> -MODULE_PARM_DESC(panel_type, "Select the panel type: 37, 6, 97");
> -
> -MODULE_DESCRIPTION("board driver for am300 epd kit");
> -MODULE_AUTHOR("Jaya Kumar");
> -MODULE_LICENSE("GPL");
> diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
> index edad956a1483..c2a2469a003a 100644
> --- a/arch/arm/mach-pxa/devices.c
> +++ b/arch/arm/mach-pxa/devices.c
> @@ -1,715 +1,10 @@
>  // SPDX-License-Identifier: GPL-2.0
> -#include <linux/module.h>
> -#include <linux/kernel.h>
>  #include <linux/init.h>
>  #include <linux/platform_device.h>
> -#include <linux/clkdev.h>
> -#include <linux/clk-provider.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/dmaengine.h>
> -#include <linux/gpio-pxa.h>
> -#include <linux/platform_data/i2c-pxa.h>
> -#include <linux/soc/pxa/cpu.h>
>  
> -#include <linux/platform_data/video-pxafb.h>
> -#include <linux/platform_data/mmc-pxamci.h>
>  #include "irqs.h"
> -#include <linux/platform_data/usb-ohci-pxa27x.h>
> -#include <linux/platform_data/mmp_dma.h>
> -
> -#include "mfp-pxa2xx.h"
>  #include "regs-ost.h"
>  #include "reset.h"
> -#include "devices.h"
> -#include "generic.h"
> -
> -void __init pxa_register_device(struct platform_device *dev, void *data)
> -{
> -	int ret;
> -
> -	dev->dev.platform_data = data;
> -
> -	ret = platform_device_register(dev);
> -	if (ret)
> -		dev_err(&dev->dev, "unable to register device: %d\n", ret);
> -}
> -
> -static struct resource pxa_resource_pmu = {
> -	.start	= IRQ_PMU,
> -	.end	= IRQ_PMU,
> -	.flags	= IORESOURCE_IRQ,
> -};
> -
> -struct platform_device pxa_device_pmu = {
> -	.name		= "xscale-pmu",
> -	.id		= -1,
> -	.resource	= &pxa_resource_pmu,
> -	.num_resources	= 1,
> -};
> -
> -static const struct resource pxamci_resources[] = {
> -	[0] = {
> -		.start	= 0x41100000,
> -		.end	= 0x41100fff,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_MMC,
> -		.end	= IRQ_MMC,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -void __init pxa_set_mci_info(const struct pxamci_platform_data *info,
> -			     const struct property_entry *props)
> -{
> -	const struct platform_device_info mci_info = {
> -		.name		= "pxa2xx-mci",
> -		.id		= 0,
> -		.res		= pxamci_resources,
> -		.num_res	= ARRAY_SIZE(pxamci_resources),
> -		.data		= info,
> -		.size_data	= sizeof(*info),
> -		.dma_mask	= 0xffffffffUL,
> -		.properties	= props,
> -	};
> -	struct platform_device *mci_dev;
> -	int err;
> -
> -	mci_dev = platform_device_register_full(&mci_info);
> -	err = PTR_ERR_OR_ZERO(mci_dev);
> -	if (err)
> -		pr_err("Unable to create mci device: %d\n", err);
> -}
> -
> -static struct resource pxa2xx_udc_resources[] = {
> -	[0] = {
> -		.start	= 0x40600000,
> -		.end	= 0x4060ffff,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_USB,
> -		.end	= IRQ_USB,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -static u64 udc_dma_mask = ~(u32)0;
> -
> -struct platform_device pxa25x_device_udc = {
> -	.name		= "pxa25x-udc",
> -	.id		= -1,
> -	.resource	= pxa2xx_udc_resources,
> -	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),
> -	.dev		=  {
> -		.dma_mask	= &udc_dma_mask,
> -	}
> -};
> -
> -struct platform_device pxa27x_device_udc = {
> -	.name		= "pxa27x-udc",
> -	.id		= -1,
> -	.resource	= pxa2xx_udc_resources,
> -	.num_resources	= ARRAY_SIZE(pxa2xx_udc_resources),
> -	.dev		=  {
> -		.dma_mask	= &udc_dma_mask,
> -	}
> -};
> -
> -static struct resource pxafb_resources[] = {
> -	[0] = {
> -		.start	= 0x44000000,
> -		.end	= 0x4400ffff,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_LCD,
> -		.end	= IRQ_LCD,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -static u64 fb_dma_mask = ~(u64)0;
> -
> -struct platform_device pxa_device_fb = {
> -	.name		= "pxa2xx-fb",
> -	.id		= -1,
> -	.dev		= {
> -		.dma_mask	= &fb_dma_mask,
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(pxafb_resources),
> -	.resource	= pxafb_resources,
> -};
> -
> -void __init pxa_set_fb_info(struct device *parent, struct pxafb_mach_info *info)
> -{
> -	pxa_device_fb.dev.parent = parent;
> -	pxa_register_device(&pxa_device_fb, info);
> -}
> -
> -static struct resource pxa_resource_ffuart[] = {
> -	{
> -		.start	= 0x40100000,
> -		.end	= 0x40100023,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_FFUART,
> -		.end	= IRQ_FFUART,
> -		.flags	= IORESOURCE_IRQ,
> -	}
> -};
> -
> -struct platform_device pxa_device_ffuart = {
> -	.name		= "pxa2xx-uart",
> -	.id		= 0,
> -	.resource	= pxa_resource_ffuart,
> -	.num_resources	= ARRAY_SIZE(pxa_resource_ffuart),
> -};
> -
> -void __init pxa_set_ffuart_info(void *info)
> -{
> -	pxa_register_device(&pxa_device_ffuart, info);
> -}
> -
> -static struct resource pxa_resource_btuart[] = {
> -	{
> -		.start	= 0x40200000,
> -		.end	= 0x40200023,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_BTUART,
> -		.end	= IRQ_BTUART,
> -		.flags	= IORESOURCE_IRQ,
> -	}
> -};
> -
> -struct platform_device pxa_device_btuart = {
> -	.name		= "pxa2xx-uart",
> -	.id		= 1,
> -	.resource	= pxa_resource_btuart,
> -	.num_resources	= ARRAY_SIZE(pxa_resource_btuart),
> -};
> -
> -void __init pxa_set_btuart_info(void *info)
> -{
> -	pxa_register_device(&pxa_device_btuart, info);
> -}
> -
> -static struct resource pxa_resource_stuart[] = {
> -	{
> -		.start	= 0x40700000,
> -		.end	= 0x40700023,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_STUART,
> -		.end	= IRQ_STUART,
> -		.flags	= IORESOURCE_IRQ,
> -	}
> -};
> -
> -struct platform_device pxa_device_stuart = {
> -	.name		= "pxa2xx-uart",
> -	.id		= 2,
> -	.resource	= pxa_resource_stuart,
> -	.num_resources	= ARRAY_SIZE(pxa_resource_stuart),
> -};
> -
> -void __init pxa_set_stuart_info(void *info)
> -{
> -	pxa_register_device(&pxa_device_stuart, info);
> -}
> -
> -static struct resource pxa_resource_hwuart[] = {
> -	{
> -		.start	= 0x41600000,
> -		.end	= 0x4160002F,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_HWUART,
> -		.end	= IRQ_HWUART,
> -		.flags	= IORESOURCE_IRQ,
> -	}
> -};
> -
> -struct platform_device pxa_device_hwuart = {
> -	.name		= "pxa2xx-uart",
> -	.id		= 3,
> -	.resource	= pxa_resource_hwuart,
> -	.num_resources	= ARRAY_SIZE(pxa_resource_hwuart),
> -};
> -
> -void __init pxa_set_hwuart_info(void *info)
> -{
> -	if (cpu_is_pxa255())
> -		pxa_register_device(&pxa_device_hwuart, info);
> -	else
> -		pr_info("UART: Ignoring attempt to register HWUART on non-PXA255 hardware");
> -}
> -
> -static struct resource pxai2c_resources[] = {
> -	{
> -		.start	= 0x40301680,
> -		.end	= 0x403016a3,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_I2C,
> -		.end	= IRQ_I2C,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa_device_i2c = {
> -	.name		= "pxa2xx-i2c",
> -	.id		= 0,
> -	.resource	= pxai2c_resources,
> -	.num_resources	= ARRAY_SIZE(pxai2c_resources),
> -};
> -
> -void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
> -{
> -	pxa_register_device(&pxa_device_i2c, info);
> -}
> -
> -#ifdef CONFIG_PXA27x
> -static struct resource pxa27x_resources_i2c_power[] = {
> -	{
> -		.start	= 0x40f00180,
> -		.end	= 0x40f001a3,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_PWRI2C,
> -		.end	= IRQ_PWRI2C,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_i2c_power = {
> -	.name		= "pxa2xx-i2c",
> -	.id		= 1,
> -	.resource	= pxa27x_resources_i2c_power,
> -	.num_resources	= ARRAY_SIZE(pxa27x_resources_i2c_power),
> -};
> -#endif
> -
> -static struct resource pxai2s_resources[] = {
> -	{
> -		.start	= 0x40400000,
> -		.end	= 0x40400083,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_I2S,
> -		.end	= IRQ_I2S,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa_device_i2s = {
> -	.name		= "pxa2xx-i2s",
> -	.id		= -1,
> -	.resource	= pxai2s_resources,
> -	.num_resources	= ARRAY_SIZE(pxai2s_resources),
> -};
> -
> -struct platform_device pxa_device_asoc_ssp1 = {
> -	.name		= "pxa-ssp-dai",
> -	.id		= 0,
> -};
> -
> -struct platform_device pxa_device_asoc_ssp2= {
> -	.name		= "pxa-ssp-dai",
> -	.id		= 1,
> -};
> -
> -struct platform_device pxa_device_asoc_ssp3 = {
> -	.name		= "pxa-ssp-dai",
> -	.id		= 2,
> -};
> -
> -struct platform_device pxa_device_asoc_ssp4 = {
> -	.name		= "pxa-ssp-dai",
> -	.id		= 3,
> -};
> -
> -struct platform_device pxa_device_asoc_platform = {
> -	.name		= "pxa-pcm-audio",
> -	.id		= -1,
> -};
> -
> -static struct resource pxa_rtc_resources[] = {
> -	[0] = {
> -		.start  = 0x40900000,
> -		.end	= 0x40900000 + 0x3b,
> -		.flags  = IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start  = IRQ_RTC1Hz,
> -		.end    = IRQ_RTC1Hz,
> -		.name	= "rtc 1Hz",
> -		.flags  = IORESOURCE_IRQ,
> -	},
> -	[2] = {
> -		.start  = IRQ_RTCAlrm,
> -		.end    = IRQ_RTCAlrm,
> -		.name	= "rtc alarm",
> -		.flags  = IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa_device_rtc = {
> -	.name		= "pxa-rtc",
> -	.id		= -1,
> -	.num_resources  = ARRAY_SIZE(pxa_rtc_resources),
> -	.resource       = pxa_rtc_resources,
> -};
> -
> -struct platform_device sa1100_device_rtc = {
> -	.name		= "sa1100-rtc",
> -	.id		= -1,
> -	.num_resources  = ARRAY_SIZE(pxa_rtc_resources),
> -	.resource       = pxa_rtc_resources,
> -};
> -
> -#ifdef CONFIG_PXA25x
> -
> -static struct resource pxa25x_resource_pwm0[] = {
> -	[0] = {
> -		.start	= 0x40b00000,
> -		.end	= 0x40b0000f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -struct platform_device pxa25x_device_pwm0 = {
> -	.name		= "pxa25x-pwm",
> -	.id		= 0,
> -	.resource	= pxa25x_resource_pwm0,
> -	.num_resources	= ARRAY_SIZE(pxa25x_resource_pwm0),
> -};
> -
> -static struct resource pxa25x_resource_pwm1[] = {
> -	[0] = {
> -		.start	= 0x40c00000,
> -		.end	= 0x40c0000f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -struct platform_device pxa25x_device_pwm1 = {
> -	.name		= "pxa25x-pwm",
> -	.id		= 1,
> -	.resource	= pxa25x_resource_pwm1,
> -	.num_resources	= ARRAY_SIZE(pxa25x_resource_pwm1),
> -};
> -
> -static u64 pxa25x_ssp_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa25x_resource_ssp[] = {
> -	[0] = {
> -		.start	= 0x41000000,
> -		.end	= 0x4100001f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_SSP,
> -		.end	= IRQ_SSP,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa25x_device_ssp = {
> -	.name		= "pxa25x-ssp",
> -	.id		= 0,
> -	.dev		= {
> -		.dma_mask = &pxa25x_ssp_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.resource	= pxa25x_resource_ssp,
> -	.num_resources	= ARRAY_SIZE(pxa25x_resource_ssp),
> -};
> -
> -static u64 pxa25x_nssp_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa25x_resource_nssp[] = {
> -	[0] = {
> -		.start	= 0x41400000,
> -		.end	= 0x4140002f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_NSSP,
> -		.end	= IRQ_NSSP,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa25x_device_nssp = {
> -	.name		= "pxa25x-nssp",
> -	.id		= 1,
> -	.dev		= {
> -		.dma_mask = &pxa25x_nssp_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.resource	= pxa25x_resource_nssp,
> -	.num_resources	= ARRAY_SIZE(pxa25x_resource_nssp),
> -};
> -
> -static u64 pxa25x_assp_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa25x_resource_assp[] = {
> -	[0] = {
> -		.start	= 0x41500000,
> -		.end	= 0x4150002f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_ASSP,
> -		.end	= IRQ_ASSP,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa25x_device_assp = {
> -	/* ASSP is basically equivalent to NSSP */
> -	.name		= "pxa25x-nssp",
> -	.id		= 2,
> -	.dev		= {
> -		.dma_mask = &pxa25x_assp_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.resource	= pxa25x_resource_assp,
> -	.num_resources	= ARRAY_SIZE(pxa25x_resource_assp),
> -};
> -#endif /* CONFIG_PXA25x */
> -
> -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
> -static u64 pxa27x_ohci_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa27x_resource_ohci[] = {
> -	[0] = {
> -		.start  = 0x4C000000,
> -		.end    = 0x4C00ff6f,
> -		.flags  = IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start  = IRQ_USBH1,
> -		.end    = IRQ_USBH1,
> -		.flags  = IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_ohci = {
> -	.name		= "pxa27x-ohci",
> -	.id		= -1,
> -	.dev		= {
> -		.dma_mask = &pxa27x_ohci_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.num_resources  = ARRAY_SIZE(pxa27x_resource_ohci),
> -	.resource       = pxa27x_resource_ohci,
> -};
> -
> -void __init pxa_set_ohci_info(struct pxaohci_platform_data *info)
> -{
> -	pxa_register_device(&pxa27x_device_ohci, info);
> -}
> -#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
> -
> -#if defined(CONFIG_PXA27x) || defined(CONFIG_PXA3xx)
> -static u64 pxa27x_ssp1_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa27x_resource_ssp1[] = {
> -	[0] = {
> -		.start	= 0x41000000,
> -		.end	= 0x4100003f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_SSP,
> -		.end	= IRQ_SSP,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_ssp1 = {
> -	.name		= "pxa27x-ssp",
> -	.id		= 0,
> -	.dev		= {
> -		.dma_mask = &pxa27x_ssp1_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.resource	= pxa27x_resource_ssp1,
> -	.num_resources	= ARRAY_SIZE(pxa27x_resource_ssp1),
> -};
> -
> -static u64 pxa27x_ssp2_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa27x_resource_ssp2[] = {
> -	[0] = {
> -		.start	= 0x41700000,
> -		.end	= 0x4170003f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_SSP2,
> -		.end	= IRQ_SSP2,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_ssp2 = {
> -	.name		= "pxa27x-ssp",
> -	.id		= 1,
> -	.dev		= {
> -		.dma_mask = &pxa27x_ssp2_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.resource	= pxa27x_resource_ssp2,
> -	.num_resources	= ARRAY_SIZE(pxa27x_resource_ssp2),
> -};
> -
> -static u64 pxa27x_ssp3_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct resource pxa27x_resource_ssp3[] = {
> -	[0] = {
> -		.start	= 0x41900000,
> -		.end	= 0x4190003f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_SSP3,
> -		.end	= IRQ_SSP3,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_ssp3 = {
> -	.name		= "pxa27x-ssp",
> -	.id		= 2,
> -	.dev		= {
> -		.dma_mask = &pxa27x_ssp3_dma_mask,
> -		.coherent_dma_mask = DMA_BIT_MASK(32),
> -	},
> -	.resource	= pxa27x_resource_ssp3,
> -	.num_resources	= ARRAY_SIZE(pxa27x_resource_ssp3),
> -};
> -
> -static struct resource pxa27x_resource_pwm0[] = {
> -	[0] = {
> -		.start	= 0x40b00000,
> -		.end	= 0x40b0001f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_pwm0 = {
> -	.name		= "pxa27x-pwm",
> -	.id		= 0,
> -	.resource	= pxa27x_resource_pwm0,
> -	.num_resources	= ARRAY_SIZE(pxa27x_resource_pwm0),
> -};
> -
> -static struct resource pxa27x_resource_pwm1[] = {
> -	[0] = {
> -		.start	= 0x40c00000,
> -		.end	= 0x40c0001f,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_pwm1 = {
> -	.name		= "pxa27x-pwm",
> -	.id		= 1,
> -	.resource	= pxa27x_resource_pwm1,
> -	.num_resources	= ARRAY_SIZE(pxa27x_resource_pwm1),
> -};
> -#endif /* CONFIG_PXA27x || CONFIG_PXA3xx */
> -
> -#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
> -const struct software_node pxa2xx_gpiochip_node = {
> -	.name	= "gpio-pxa",
> -};
> -
> -struct resource pxa_resource_gpio[] = {
> -	{
> -		.start	= 0x40e00000,
> -		.end	= 0x40e0ffff,
> -		.flags	= IORESOURCE_MEM,
> -	}, {
> -		.start	= IRQ_GPIO0,
> -		.end	= IRQ_GPIO0,
> -		.name	= "gpio0",
> -		.flags	= IORESOURCE_IRQ,
> -	}, {
> -		.start	= IRQ_GPIO1,
> -		.end	= IRQ_GPIO1,
> -		.name	= "gpio1",
> -		.flags	= IORESOURCE_IRQ,
> -	}, {
> -		.start	= IRQ_GPIO_2_x,
> -		.end	= IRQ_GPIO_2_x,
> -		.name	= "gpio_mux",
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -static struct pxa_gpio_platform_data pxa2xx_gpio_info = {
> -	.irq_base	= PXA_GPIO_TO_IRQ(0),
> -	.gpio_set_wake	= gpio_set_wake,
> -};
> -
> -struct platform_device pxa25x_device_gpio = {
> -	.name		= "pxa25x-gpio",
> -	.id		= -1,
> -	.num_resources	= ARRAY_SIZE(pxa_resource_gpio),
> -	.resource	= pxa_resource_gpio,
> -	.dev		= {
> -		.platform_data	= &pxa2xx_gpio_info,
> -	},
> -};
> -
> -struct platform_device pxa27x_device_gpio = {
> -	.name		= "pxa27x-gpio",
> -	.id		= -1,
> -	.num_resources	= ARRAY_SIZE(pxa_resource_gpio),
> -	.resource	= pxa_resource_gpio,
> -	.dev		= {
> -		.platform_data	= &pxa2xx_gpio_info,
> -	},
> -};
> -#endif /* CONFIG_PXA25x || CONFIG_PXA27x */
> -
> -static struct resource pxa_dma_resource[] = {
> -	[0] = {
> -		.start	= 0x40000000,
> -		.end	= 0x4000ffff,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	[1] = {
> -		.start	= IRQ_DMA,
> -		.end	= IRQ_DMA,
> -		.flags	= IORESOURCE_IRQ,
> -	},
> -};
> -
> -static u64 pxadma_dmamask = 0xffffffffUL;
> -
> -static struct platform_device pxa2xx_pxa_dma = {
> -	.name		= "pxa-dma",
> -	.id		= 0,
> -	.dev		= {
> -		.dma_mask = &pxadma_dmamask,
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(pxa_dma_resource),
> -	.resource	= pxa_dma_resource,
> -};
> -
> -void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata)
> -{
> -	pxa_register_device(&pxa2xx_pxa_dma, dma_pdata);
> -}
>  
>  void __init pxa_register_wdt(unsigned int reset_status)
>  {
> diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
> deleted file mode 100644
> index 72c556ff67db..000000000000
> --- a/arch/arm/mach-pxa/devices.h
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#define PDMA_FILTER_PARAM(_prio, _requestor) (&(struct pxad_param) { \
> -	.prio = PXAD_PRIO_##_prio, .drcmr = _requestor })
> -struct mmp_dma_platdata;
> -
> -extern struct platform_device pxa_device_pmu;
> -extern struct platform_device pxa3xx_device_mci2;
> -extern struct platform_device pxa3xx_device_mci3;
> -extern struct platform_device pxa25x_device_udc;
> -extern struct platform_device pxa27x_device_udc;
> -extern struct platform_device pxa_device_fb;
> -extern struct platform_device pxa_device_ffuart;
> -extern struct platform_device pxa_device_btuart;
> -extern struct platform_device pxa_device_stuart;
> -extern struct platform_device pxa_device_hwuart;
> -extern struct platform_device pxa_device_i2c;
> -extern struct platform_device pxa_device_i2s;
> -extern struct platform_device sa1100_device_rtc;
> -extern struct platform_device pxa_device_rtc;
> -extern struct platform_device pxa_device_ac97;
> -
> -extern struct platform_device pxa27x_device_i2c_power;
> -extern struct platform_device pxa27x_device_ohci;
> -extern struct platform_device pxa27x_device_keypad;
> -
> -extern struct platform_device pxa25x_device_ssp;
> -extern struct platform_device pxa25x_device_nssp;
> -extern struct platform_device pxa25x_device_assp;
> -extern struct platform_device pxa27x_device_ssp1;
> -extern struct platform_device pxa27x_device_ssp2;
> -extern struct platform_device pxa27x_device_ssp3;
> -extern struct platform_device pxa3xx_device_ssp1;
> -extern struct platform_device pxa3xx_device_ssp2;
> -extern struct platform_device pxa3xx_device_ssp3;
> -extern struct platform_device pxa3xx_device_ssp4;
> -
> -extern struct platform_device pxa25x_device_pwm0;
> -extern struct platform_device pxa25x_device_pwm1;
> -extern struct platform_device pxa27x_device_pwm0;
> -extern struct platform_device pxa27x_device_pwm1;
> -
> -extern struct platform_device pxa3xx_device_nand;
> -extern struct platform_device pxa3xx_device_i2c_power;
> -
> -extern struct platform_device pxa3xx_device_gcu;
> -
> -extern struct platform_device pxa_device_asoc_platform;
> -extern struct platform_device pxa_device_asoc_ssp1;
> -extern struct platform_device pxa_device_asoc_ssp2;
> -extern struct platform_device pxa_device_asoc_ssp3;
> -extern struct platform_device pxa_device_asoc_ssp4;
> -
> -extern struct platform_device pxa25x_device_gpio;
> -extern struct platform_device pxa27x_device_gpio;
> -
> -extern const struct software_node pxa2xx_gpiochip_node;
> -
> -void __init pxa_register_device(struct platform_device *dev, void *data);
> -void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata);
> -
> -struct i2c_pxa_platform_data;
> -extern void pxa_set_i2c_info(struct i2c_pxa_platform_data *info);
> -#ifdef CONFIG_PXA27x
> -extern void pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info);
> -#endif
> -#ifdef CONFIG_PXA3xx
> -extern void pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info);
> -#endif
> diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
> index caad4fca8de3..239d1b4119cc 100644
> --- a/arch/arm/mach-pxa/generic.h
> +++ b/arch/arm/mach-pxa/generic.h
> @@ -38,11 +38,6 @@ extern struct syscore pxa_irq_syscore;
>  extern struct syscore pxa2xx_mfp_syscore;
>  extern struct syscore pxa3xx_mfp_syscore;
>  
> -void __init pxa_set_ffuart_info(void *info);
> -void __init pxa_set_btuart_info(void *info);
> -void __init pxa_set_stuart_info(void *info);
> -void __init pxa_set_hwuart_info(void *info);
> -
>  void pxa_restart(enum reboot_mode, const char *);
>  
>  #if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
> diff --git a/arch/arm/mach-pxa/gumstix.c b/arch/arm/mach-pxa/gumstix.c
> deleted file mode 100644
> index 7ab0cb015d1b..000000000000
> --- a/arch/arm/mach-pxa/gumstix.c
> +++ /dev/null
> @@ -1,237 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  linux/arch/arm/mach-pxa/gumstix.c
> - *
> - *  Support for the Gumstix motherboards.
> - *
> - *  Original Author:	Craig Hughes
> - *  Created:	Feb 14, 2008
> - *  Copyright:	Craig Hughes
> - *
> - *  Implemented based on lubbock.c by Nicolas Pitre and code from Craig
> - *  Hughes
> - */
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/interrupt.h>
> -#include <linux/delay.h>
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/partitions.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/gpio/property.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/err.h>
> -#include <linux/clk.h>
> -
> -#include <asm/setup.h>
> -#include <asm/page.h>
> -#include <asm/mach-types.h>
> -#include <asm/irq.h>
> -#include <linux/sizes.h>
> -
> -#include <asm/mach/arch.h>
> -#include <asm/mach/map.h>
> -#include <asm/mach/irq.h>
> -#include <asm/mach/flash.h>
> -
> -#include "pxa25x.h"
> -#include <linux/platform_data/mmc-pxamci.h>
> -#include "gumstix.h"
> -#include "devices.h"
> -
> -#include "generic.h"
> -
> -static struct resource flash_resource = {
> -	.start	= 0x00000000,
> -	.end	= SZ_64M - 1,
> -	.flags	= IORESOURCE_MEM,
> -};
> -
> -static struct mtd_partition gumstix_partitions[] = {
> -	{
> -		.name =		"Bootloader",
> -		.size =		0x00040000,
> -		.offset =	0,
> -		.mask_flags =	MTD_WRITEABLE  /* force read-only */
> -	} , {
> -		.name =		"rootfs",
> -		.size =		MTDPART_SIZ_FULL,
> -		.offset =	MTDPART_OFS_APPEND
> -	}
> -};
> -
> -static struct flash_platform_data gumstix_flash_data = {
> -	.map_name	= "cfi_probe",
> -	.parts		= gumstix_partitions,
> -	.nr_parts	= ARRAY_SIZE(gumstix_partitions),
> -	.width		= 2,
> -};
> -
> -static struct platform_device gumstix_flash_device = {
> -	.name		= "pxa2xx-flash",
> -	.id		= 0,
> -	.dev = {
> -		.platform_data = &gumstix_flash_data,
> -	},
> -	.resource = &flash_resource,
> -	.num_resources = 1,
> -};
> -
> -static struct platform_device *devices[] __initdata = {
> -	&gumstix_flash_device,
> -};
> -
> -#ifdef CONFIG_MMC_PXA
> -static struct pxamci_platform_data gumstix_mci_platform_data = {
> -	.ocr_mask		= MMC_VDD_32_33|MMC_VDD_33_34,
> -};
> -
> -static void __init gumstix_mmc_init(void)
> -{
> -	pxa_set_mci_info(&gumstix_mci_platform_data, NULL);
> -}
> -#else
> -static void __init gumstix_mmc_init(void)
> -{
> -	pr_debug("Gumstix mmc disabled\n");
> -}
> -#endif
> -
> -#if IS_ENABLED(CONFIG_USB_PXA25X)
> -static const struct property_entry gumstix_vbus_props[] __initconst = {
> -	PROPERTY_ENTRY_GPIO("vbus-gpios", &pxa2xx_gpiochip_node,
> -			    GPIO_GUMSTIX_USB_GPIOn, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_GPIO("pullup-gpios", &pxa2xx_gpiochip_node,
> -			    GPIO_GUMSTIX_USB_GPIOx, GPIO_ACTIVE_HIGH),
> -	{ }
> -};
> -
> -static const struct platform_device_info gumstix_gpio_vbus_info __initconst = {
> -	.name		= "gpio-vbus",
> -	.id		= PLATFORM_DEVID_NONE,
> -	.properties	= gumstix_vbus_props,
> -};
> -
> -static void __init gumstix_udc_init(void)
> -{
> -	platform_device_register_full(&gumstix_gpio_vbus_info);
> -}
> -#else
> -static void gumstix_udc_init(void)
> -{
> -	pr_debug("Gumstix udc is disabled\n");
> -}
> -#endif
> -
> -#ifdef CONFIG_BT
> -/* Normally, the bootloader would have enabled this 32kHz clock but many
> -** boards still have u-boot 1.1.4 so we check if it has been turned on and
> -** if not, we turn it on with a warning message. */
> -static void gumstix_setup_bt_clock(void)
> -{
> -	int timeout = 500;
> -
> -	if (!(readl(OSCC) & OSCC_OOK))
> -		pr_warn("32kHz clock was not on. Bootloader may need to be updated\n");
> -	else
> -		return;
> -
> -	writel(readl(OSCC) | OSCC_OON, OSCC);
> -	do {
> -		if (readl(OSCC) & OSCC_OOK)
> -			break;
> -		udelay(1);
> -	} while (--timeout);
> -	if (!timeout)
> -		pr_err("Failed to start 32kHz clock\n");
> -}
> -
> -static void __init gumstix_bluetooth_init(void)
> -{
> -	int err;
> -
> -	gumstix_setup_bt_clock();
> -
> -	err = gpio_request(GPIO_GUMSTIX_BTRESET, "BTRST");
> -	if (err) {
> -		pr_err("gumstix: failed request gpio for bluetooth reset\n");
> -		return;
> -	}
> -
> -	err = gpio_direction_output(GPIO_GUMSTIX_BTRESET, 1);
> -	if (err) {
> -		pr_err("gumstix: can't reset bluetooth\n");
> -		return;
> -	}
> -	gpio_set_value(GPIO_GUMSTIX_BTRESET, 0);
> -	udelay(100);
> -	gpio_set_value(GPIO_GUMSTIX_BTRESET, 1);
> -}
> -#else
> -static void gumstix_bluetooth_init(void)
> -{
> -	pr_debug("Gumstix Bluetooth is disabled\n");
> -}
> -#endif
> -
> -static unsigned long gumstix_pin_config[] __initdata = {
> -	GPIO12_32KHz,
> -	/* BTUART */
> -	GPIO42_HWUART_RXD,
> -	GPIO43_HWUART_TXD,
> -	GPIO44_HWUART_CTS,
> -	GPIO45_HWUART_RTS,
> -	/* MMC */
> -	GPIO6_MMC_CLK,
> -	GPIO53_MMC_CLK,
> -	GPIO8_MMC_CS0,
> -};
> -
> -int __attribute__((weak)) am200_init(void)
> -{
> -	return 0;
> -}
> -
> -int __attribute__((weak)) am300_init(void)
> -{
> -	return 0;
> -}
> -
> -static void __init carrier_board_init(void)
> -{
> -	/*
> -	 * put carrier/expansion board init here if
> -	 * they cannot be detected programatically
> -	 */
> -	am200_init();
> -	am300_init();
> -}
> -
> -static void __init gumstix_init(void)
> -{
> -	pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config));
> -
> -	pxa_set_ffuart_info(NULL);
> -	pxa_set_btuart_info(NULL);
> -	pxa_set_stuart_info(NULL);
> -	pxa_set_hwuart_info(NULL);
> -
> -	gumstix_bluetooth_init();
> -	gumstix_udc_init();
> -	gumstix_mmc_init();
> -	(void) platform_add_devices(devices, ARRAY_SIZE(devices));
> -	carrier_board_init();
> -}
> -
> -MACHINE_START(GUMSTIX, "Gumstix")
> -	.atag_offset	= 0x100, /* match u-boot bi_boot_params */
> -	.map_io		= pxa25x_map_io,
> -	.nr_irqs	= PXA_NR_IRQS,
> -	.init_irq	= pxa25x_init_irq,
> -	.init_time	= pxa_timer_init,
> -	.init_machine	= gumstix_init,
> -	.restart	= pxa_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-pxa/gumstix.h b/arch/arm/mach-pxa/gumstix.h
> deleted file mode 100644
> index 9005b3c0aabd..000000000000
> --- a/arch/arm/mach-pxa/gumstix.h
> +++ /dev/null
> @@ -1,89 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  arch/arm/mach-pxa/include/mach/gumstix.h
> - */
> -
> -#include "irqs.h" /* PXA_GPIO_TO_IRQ */
> -
> -/* BTRESET - Reset line to Bluetooth module, active low signal. */
> -#define GPIO_GUMSTIX_BTRESET          7
> -#define GPIO_GUMSTIX_BTRESET_MD		(GPIO_GUMSTIX_BTRESET | GPIO_OUT)
> -
> -
> -/*
> -GPIOn - Input from MAX823 (or equiv), normalizing USB +5V into a clean
> -interrupt signal for determining cable presence. On the gumstix F,
> -this moves to GPIO17 and GPIO37. */
> -
> -/* GPIOx - Connects to USB D+ and used as a pull-up after GPIOn
> -has detected a cable insertion; driven low otherwise. */
> -
> -#define GPIO_GUMSTIX_USB_GPIOn		35
> -#define GPIO_GUMSTIX_USB_GPIOx		41
> -
> -/* usb state change */
> -#define GUMSTIX_USB_INTR_IRQ		PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_USB_GPIOn)
> -
> -#define GPIO_GUMSTIX_USB_GPIOn_MD	(GPIO_GUMSTIX_USB_GPIOn | GPIO_IN)
> -#define GPIO_GUMSTIX_USB_GPIOx_CON_MD	(GPIO_GUMSTIX_USB_GPIOx | GPIO_OUT)
> -#define GPIO_GUMSTIX_USB_GPIOx_DIS_MD	(GPIO_GUMSTIX_USB_GPIOx | GPIO_IN)
> -
> -/*
> - * SD/MMC definitions
> - */
> -#define GUMSTIX_GPIO_nSD_WP		22 /* SD Write Protect */
> -#define GUMSTIX_GPIO_nSD_DETECT		11 /* MMC/SD Card Detect */
> -#define GUMSTIX_IRQ_GPIO_nSD_DETECT	PXA_GPIO_TO_IRQ(GUMSTIX_GPIO_nSD_DETECT)
> -
> -/*
> - * SMC Ethernet definitions
> - * ETH_RST provides a hardware reset line to the ethernet chip
> - * ETH is the IRQ line in from the ethernet chip to the PXA
> - */
> -#define GPIO_GUMSTIX_ETH0_RST		80
> -#define GPIO_GUMSTIX_ETH0_RST_MD	(GPIO_GUMSTIX_ETH0_RST | GPIO_OUT)
> -#define GPIO_GUMSTIX_ETH1_RST		52
> -#define GPIO_GUMSTIX_ETH1_RST_MD	(GPIO_GUMSTIX_ETH1_RST | GPIO_OUT)
> -
> -#define GPIO_GUMSTIX_ETH0		36
> -#define GPIO_GUMSTIX_ETH0_MD		(GPIO_GUMSTIX_ETH0 | GPIO_IN)
> -#define GUMSTIX_ETH0_IRQ		PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH0)
> -#define GPIO_GUMSTIX_ETH1		27
> -#define GPIO_GUMSTIX_ETH1_MD		(GPIO_GUMSTIX_ETH1 | GPIO_IN)
> -#define GUMSTIX_ETH1_IRQ		PXA_GPIO_TO_IRQ(GPIO_GUMSTIX_ETH1)
> -
> -
> -/* CF reset line */
> -#define GPIO8_RESET			8
> -
> -/* CF slot 0 */
> -#define GPIO4_nBVD1			4
> -#define GPIO4_nSTSCHG			GPIO4_nBVD1
> -#define GPIO11_nCD			11
> -#define GPIO26_PRDY_nBSY		26
> -#define GUMSTIX_S0_nSTSCHG_IRQ		PXA_GPIO_TO_IRQ(GPIO4_nSTSCHG)
> -#define GUMSTIX_S0_nCD_IRQ		PXA_GPIO_TO_IRQ(GPIO11_nCD)
> -#define GUMSTIX_S0_PRDY_nBSY_IRQ	PXA_GPIO_TO_IRQ(GPIO26_PRDY_nBSY)
> -
> -/* CF slot 1 */
> -#define GPIO18_nBVD1			18
> -#define GPIO18_nSTSCHG			GPIO18_nBVD1
> -#define GPIO36_nCD			36
> -#define GPIO27_PRDY_nBSY		27
> -#define GUMSTIX_S1_nSTSCHG_IRQ		PXA_GPIO_TO_IRQ(GPIO18_nSTSCHG)
> -#define GUMSTIX_S1_nCD_IRQ		PXA_GPIO_TO_IRQ(GPIO36_nCD)
> -#define GUMSTIX_S1_PRDY_nBSY_IRQ	PXA_GPIO_TO_IRQ(GPIO27_PRDY_nBSY)
> -
> -/* CF GPIO line modes */
> -#define GPIO4_nSTSCHG_MD		(GPIO4_nSTSCHG | GPIO_IN)
> -#define GPIO8_RESET_MD			(GPIO8_RESET | GPIO_OUT)
> -#define GPIO11_nCD_MD			(GPIO11_nCD | GPIO_IN)
> -#define GPIO18_nSTSCHG_MD		(GPIO18_nSTSCHG | GPIO_IN)
> -#define GPIO26_PRDY_nBSY_MD		(GPIO26_PRDY_nBSY | GPIO_IN)
> -#define GPIO27_PRDY_nBSY_MD		(GPIO27_PRDY_nBSY | GPIO_IN)
> -#define GPIO36_nCD_MD			(GPIO36_nCD | GPIO_IN)
> -
> -/* for expansion boards that can't be programatically detected */
> -extern int am200_init(void);
> -extern int am300_init(void);
> -
> diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c
> index a273f0af095e..de6a306cf0e2 100644
> --- a/arch/arm/mach-pxa/pxa25x.c
> +++ b/arch/arm/mach-pxa/pxa25x.c
> @@ -25,7 +25,6 @@
>  #include <linux/syscore_ops.h>
>  #include <linux/irq.h>
>  #include <linux/irqchip.h>
> -#include <linux/platform_data/mmp_dma.h>
>  #include <linux/soc/pxa/cpu.h>
>  #include <linux/soc/pxa/smemc.h>
>  
> @@ -39,7 +38,6 @@
>  #include "smemc.h"
>  
>  #include "generic.h"
> -#include "devices.h"
>  
>  /*
>   * Various clock factors driven by the CCCR register.
> @@ -178,53 +176,6 @@ void __init pxa25x_map_io(void)
>  	pxa25x_get_clk_frequency_khz(1);
>  }
>  
> -static struct platform_device *pxa25x_devices[] __initdata = {
> -	&pxa25x_device_gpio,
> -	&pxa25x_device_udc,
> -	&pxa_device_pmu,
> -	&pxa_device_i2s,
> -	&sa1100_device_rtc,
> -	&pxa25x_device_ssp,
> -	&pxa25x_device_nssp,
> -	&pxa25x_device_assp,
> -	&pxa25x_device_pwm0,
> -	&pxa25x_device_pwm1,
> -	&pxa_device_asoc_platform,
> -};
> -
> -static const struct dma_slave_map pxa25x_slave_map[] = {
> -	/* PXA25x, PXA27x and PXA3xx common entries */
> -	{ "pxa2xx-ac97", "pcm_pcm_mic_mono", PDMA_FILTER_PARAM(LOWEST, 8) },
> -	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_in", PDMA_FILTER_PARAM(LOWEST, 9) },
> -	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_out",
> -	  PDMA_FILTER_PARAM(LOWEST, 10) },
> -	{ "pxa2xx-ac97", "pcm_pcm_stereo_in", PDMA_FILTER_PARAM(LOWEST, 11) },
> -	{ "pxa2xx-ac97", "pcm_pcm_stereo_out", PDMA_FILTER_PARAM(LOWEST, 12) },
> -	{ "pxa-ssp-dai.1", "rx", PDMA_FILTER_PARAM(LOWEST, 13) },
> -	{ "pxa-ssp-dai.1", "tx", PDMA_FILTER_PARAM(LOWEST, 14) },
> -	{ "pxa-ssp-dai.2", "rx", PDMA_FILTER_PARAM(LOWEST, 15) },
> -	{ "pxa-ssp-dai.2", "tx", PDMA_FILTER_PARAM(LOWEST, 16) },
> -	{ "pxa2xx-ir", "rx", PDMA_FILTER_PARAM(LOWEST, 17) },
> -	{ "pxa2xx-ir", "tx", PDMA_FILTER_PARAM(LOWEST, 18) },
> -	{ "pxa2xx-mci.0", "rx", PDMA_FILTER_PARAM(LOWEST, 21) },
> -	{ "pxa2xx-mci.0", "tx", PDMA_FILTER_PARAM(LOWEST, 22) },
> -
> -	/* PXA25x specific map */
> -	{ "pxa25x-ssp.0", "rx", PDMA_FILTER_PARAM(LOWEST, 13) },
> -	{ "pxa25x-ssp.0", "tx", PDMA_FILTER_PARAM(LOWEST, 14) },
> -	{ "pxa25x-nssp.1", "rx", PDMA_FILTER_PARAM(LOWEST, 15) },
> -	{ "pxa25x-nssp.1", "tx", PDMA_FILTER_PARAM(LOWEST, 16) },
> -	{ "pxa25x-nssp.2", "rx", PDMA_FILTER_PARAM(LOWEST, 23) },
> -	{ "pxa25x-nssp.2", "tx", PDMA_FILTER_PARAM(LOWEST, 24) },
> -};
> -
> -static struct mmp_dma_platdata pxa25x_dma_pdata = {
> -	.dma_channels	= 16,
> -	.nb_requestors	= 40,
> -	.slave_map	= pxa25x_slave_map,
> -	.slave_map_cnt	= ARRAY_SIZE(pxa25x_slave_map),
> -};
> -
>  static int __init pxa25x_init(void)
>  {
>  	int ret = 0;
> @@ -237,16 +188,6 @@ static int __init pxa25x_init(void)
>  
>  		register_syscore(&pxa_irq_syscore);
>  		register_syscore(&pxa2xx_mfp_syscore);
> -
> -		if (!of_have_populated_dt()) {
> -			software_node_register(&pxa2xx_gpiochip_node);
> -			pxa25x_device_gpio.dev.fwnode = software_node_fwnode(
> -								&pxa2xx_gpiochip_node);
> -
> -			pxa2xx_set_dmac_info(&pxa25x_dma_pdata);
> -			ret = platform_add_devices(pxa25x_devices,
> -						   ARRAY_SIZE(pxa25x_devices));
> -		}
>  	}
>  
>  	return ret;
> diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
> index 814e0a12f38a..617af225628b 100644
> --- a/arch/arm/mach-pxa/pxa27x.c
> +++ b/arch/arm/mach-pxa/pxa27x.c
> @@ -21,8 +21,6 @@
>  #include <linux/syscore_ops.h>
>  #include <linux/io.h>
>  #include <linux/irq.h>
> -#include <linux/platform_data/i2c-pxa.h>
> -#include <linux/platform_data/mmp_dma.h>
>  #include <linux/soc/pxa/cpu.h>
>  #include <linux/soc/pxa/smemc.h>
>  
> @@ -33,14 +31,12 @@
>  #include "pxa27x.h"
>  #include "reset.h"
>  #include <linux/platform_data/pxa2xx_udc.h>
> -#include <linux/platform_data/usb-ohci-pxa27x.h>
>  #include <linux/platform_data/asoc-pxa.h>
>  #include "pm.h"
>  #include "addr-map.h"
>  #include "smemc.h"
>  
>  #include "generic.h"
> -#include "devices.h"
>  #include <linux/clk-provider.h>
>  #include <linux/clkdev.h>
>  
> @@ -272,90 +268,17 @@ void __init pxa27x_map_io(void)
>  	pxa27x_get_clk_frequency_khz(1);
>  }
>  
> -/*
> - * device registration specific to PXA27x.
> - */
> -void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
> -{
> -	local_irq_disable();
> -	PCFR |= PCFR_PI2CEN;
> -	local_irq_enable();
> -	pxa_register_device(&pxa27x_device_i2c_power, info);
> -}
> -
> -static struct platform_device *devices[] __initdata = {
> -	&pxa27x_device_gpio,
> -	&pxa27x_device_udc,
> -	&pxa_device_pmu,
> -	&pxa_device_i2s,
> -	&pxa_device_asoc_ssp1,
> -	&pxa_device_asoc_ssp2,
> -	&pxa_device_asoc_ssp3,
> -	&pxa_device_asoc_platform,
> -	&pxa_device_rtc,
> -	&pxa27x_device_ssp1,
> -	&pxa27x_device_ssp2,
> -	&pxa27x_device_ssp3,
> -	&pxa27x_device_pwm0,
> -	&pxa27x_device_pwm1,
> -};
> -
> -static const struct dma_slave_map pxa27x_slave_map[] = {
> -	/* PXA25x, PXA27x and PXA3xx common entries */
> -	{ "pxa2xx-ac97", "pcm_pcm_mic_mono", PDMA_FILTER_PARAM(LOWEST, 8) },
> -	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_in", PDMA_FILTER_PARAM(LOWEST, 9) },
> -	{ "pxa2xx-ac97", "pcm_pcm_aux_mono_out",
> -	  PDMA_FILTER_PARAM(LOWEST, 10) },
> -	{ "pxa2xx-ac97", "pcm_pcm_stereo_in", PDMA_FILTER_PARAM(LOWEST, 11) },
> -	{ "pxa2xx-ac97", "pcm_pcm_stereo_out", PDMA_FILTER_PARAM(LOWEST, 12) },
> -	{ "pxa-ssp-dai.0", "rx", PDMA_FILTER_PARAM(LOWEST, 13) },
> -	{ "pxa-ssp-dai.0", "tx", PDMA_FILTER_PARAM(LOWEST, 14) },
> -	{ "pxa-ssp-dai.1", "rx", PDMA_FILTER_PARAM(LOWEST, 15) },
> -	{ "pxa-ssp-dai.1", "tx", PDMA_FILTER_PARAM(LOWEST, 16) },
> -	{ "pxa2xx-ir", "rx", PDMA_FILTER_PARAM(LOWEST, 17) },
> -	{ "pxa2xx-ir", "tx", PDMA_FILTER_PARAM(LOWEST, 18) },
> -	{ "pxa2xx-mci.0", "rx", PDMA_FILTER_PARAM(LOWEST, 21) },
> -	{ "pxa2xx-mci.0", "tx", PDMA_FILTER_PARAM(LOWEST, 22) },
> -	{ "pxa-ssp-dai.2", "rx", PDMA_FILTER_PARAM(LOWEST, 66) },
> -	{ "pxa-ssp-dai.2", "tx", PDMA_FILTER_PARAM(LOWEST, 67) },
> -
> -	/* PXA27x specific map */
> -	{ "pxa2xx-i2s", "rx", PDMA_FILTER_PARAM(LOWEST, 2) },
> -	{ "pxa2xx-i2s", "tx", PDMA_FILTER_PARAM(LOWEST, 3) },
> -	{ "pxa27x-camera.0", "CI_Y", PDMA_FILTER_PARAM(HIGHEST, 68) },
> -	{ "pxa27x-camera.0", "CI_U", PDMA_FILTER_PARAM(HIGHEST, 69) },
> -	{ "pxa27x-camera.0", "CI_V", PDMA_FILTER_PARAM(HIGHEST, 70) },
> -};
> -
> -static struct mmp_dma_platdata pxa27x_dma_pdata = {
> -	.dma_channels	= 32,
> -	.nb_requestors	= 75,
> -	.slave_map	= pxa27x_slave_map,
> -	.slave_map_cnt	= ARRAY_SIZE(pxa27x_slave_map),
> -};
> -
>  static int __init pxa27x_init(void)
>  {
>  	int ret = 0;
>  
>  	if (cpu_is_pxa27x()) {
> -
>  		pxa_register_wdt(RCSR);
>  
>  		pxa27x_init_pm();
>  
>  		register_syscore(&pxa_irq_syscore);
>  		register_syscore(&pxa2xx_mfp_syscore);
> -
> -		if (!of_have_populated_dt()) {
> -			software_node_register(&pxa2xx_gpiochip_node);
> -			pxa27x_device_gpio.dev.fwnode = software_node_fwnode(
> -								&pxa2xx_gpiochip_node);
> -
> -			pxa2xx_set_dmac_info(&pxa27x_dma_pdata);
> -			ret = platform_add_devices(devices,
> -						   ARRAY_SIZE(devices));
> -		}
>  	}
>  
>  	return ret;
> diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
> index f77ec118d5b9..0022bf235114 100644
> --- a/arch/arm/mach-pxa/pxa300.c
> +++ b/arch/arm/mach-pxa/pxa300.c
> @@ -19,7 +19,6 @@
>  #include "pxa300.h"
>  
>  #include "generic.h"
> -#include "devices.h"
>  
>  static struct mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
>  
> diff --git a/arch/arm/mach-pxa/pxa320.c b/arch/arm/mach-pxa/pxa320.c
> index e372e6c118de..2e84afd94467 100644
> --- a/arch/arm/mach-pxa/pxa320.c
> +++ b/arch/arm/mach-pxa/pxa320.c
> @@ -19,7 +19,6 @@
>  #include "pxa320.h"
>  
>  #include "generic.h"
> -#include "devices.h"
>  
>  static struct mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
>  
> diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
> index 06c578ea658e..46f4efdfb514 100644
> --- a/arch/arm/mach-pxa/pxa3xx.c
> +++ b/arch/arm/mach-pxa/pxa3xx.c
> @@ -10,11 +10,9 @@
>   *             initial version
>   */
>  #include <linux/dmaengine.h>
> -#include <linux/dma/pxa-dma.h>
>  #include <linux/module.h>
>  #include <linux/kernel.h>
>  #include <linux/init.h>
> -#include <linux/gpio-pxa.h>
>  #include <linux/pm.h>
>  #include <linux/platform_device.h>
>  #include <linux/irq.h>
> @@ -22,8 +20,6 @@
>  #include <linux/io.h>
>  #include <linux/of.h>
>  #include <linux/syscore_ops.h>
> -#include <linux/platform_data/i2c-pxa.h>
> -#include <linux/platform_data/mmp_dma.h>
>  #include <linux/soc/pxa/cpu.h>
>  #include <linux/clk/pxa.h>
>  
> @@ -31,14 +27,12 @@
>  #include <asm/suspend.h>
>  #include "pxa3xx-regs.h"
>  #include "reset.h"
> -#include <linux/platform_data/usb-ohci-pxa27x.h>
>  #include "pm.h"
>  #include "addr-map.h"
>  #include "smemc.h"
>  #include "irqs.h"
>  
>  #include "generic.h"
> -#include "devices.h"
>  
>  #define PECR_IE(n)	((1 << ((n) * 2)) << 28)
>  #define PECR_IS(n)	((1 << ((n) * 2)) << 29)
> diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
> deleted file mode 100644
> index a611eea70e5a..000000000000
> --- a/arch/arm/mach-pxa/sharpsl_pm.c
> +++ /dev/null
> @@ -1,941 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Battery and Power Management code for the Sharp SL-C7xx and SL-Cxx00
> - * series of PDAs
> - *
> - * Copyright (c) 2004-2005 Richard Purdie
> - *
> - * Based on code written by Sharp for 2.4 kernels
> - */
> -
> -#undef DEBUG
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/interrupt.h>
> -#include <linux/platform_device.h>
> -#include <linux/apm-emulation.h>
> -#include <linux/timer.h>
> -#include <linux/delay.h>
> -#include <linux/leds.h>
> -#include <linux/suspend.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/io.h>
> -
> -#include <asm/mach-types.h>
> -#include "pm.h"
> -#include "pxa2xx-regs.h"
> -#include "regs-rtc.h"
> -#include "sharpsl_pm.h"
> -
> -/*
> - * Constants
> - */
> -#define SHARPSL_CHARGE_ON_TIME_INTERVAL        (secs_to_jiffies(60))
> -#define SHARPSL_CHARGE_FINISH_TIME             (secs_to_jiffies(10*60))
> -#define SHARPSL_BATCHK_TIME                    (secs_to_jiffies(15))
> -#define SHARPSL_BATCHK_TIME_SUSPEND            (60*10) /* 10 min */
> -
> -#define SHARPSL_WAIT_CO_TIME                   15  /* 15 sec */
> -#define SHARPSL_WAIT_DISCHARGE_ON              100 /* 100 msec */
> -#define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP   10  /* 10 msec */
> -#define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT   10  /* 10 msec */
> -#define SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN   10  /* 10 msec */
> -#define SHARPSL_CHARGE_WAIT_TIME               15  /* 15 msec */
> -#define SHARPSL_CHARGE_CO_CHECK_TIME           5   /* 5 msec */
> -#define SHARPSL_CHARGE_RETRY_CNT               1   /* eqv. 10 min */
> -
> -/*
> - * Prototypes
> - */
> -#ifdef CONFIG_PM
> -static int sharpsl_off_charge_battery(void);
> -static int sharpsl_check_battery_voltage(void);
> -#endif
> -static int sharpsl_check_battery_temp(void);
> -static int sharpsl_ac_check(void);
> -static int sharpsl_average_value(int ad);
> -static void sharpsl_average_clear(void);
> -static void sharpsl_charge_toggle(struct work_struct *private_);
> -static void sharpsl_battery_thread(struct work_struct *private_);
> -
> -
> -/*
> - * Variables
> - */
> -struct sharpsl_pm_status sharpsl_pm;
> -static DECLARE_DELAYED_WORK(toggle_charger, sharpsl_charge_toggle);
> -static DECLARE_DELAYED_WORK(sharpsl_bat, sharpsl_battery_thread);
> -DEFINE_LED_TRIGGER(sharpsl_charge_led_trigger);
> -
> -
> -
> -struct battery_thresh sharpsl_battery_levels_acin[] = {
> -	{ 213, 100},
> -	{ 212,  98},
> -	{ 211,  95},
> -	{ 210,  93},
> -	{ 209,  90},
> -	{ 208,  88},
> -	{ 207,  85},
> -	{ 206,  83},
> -	{ 205,  80},
> -	{ 204,  78},
> -	{ 203,  75},
> -	{ 202,  73},
> -	{ 201,  70},
> -	{ 200,  68},
> -	{ 199,  65},
> -	{ 198,  63},
> -	{ 197,  60},
> -	{ 196,  58},
> -	{ 195,  55},
> -	{ 194,  53},
> -	{ 193,  50},
> -	{ 192,  48},
> -	{ 192,  45},
> -	{ 191,  43},
> -	{ 191,  40},
> -	{ 190,  38},
> -	{ 190,  35},
> -	{ 189,  33},
> -	{ 188,  30},
> -	{ 187,  28},
> -	{ 186,  25},
> -	{ 185,  23},
> -	{ 184,  20},
> -	{ 183,  18},
> -	{ 182,  15},
> -	{ 181,  13},
> -	{ 180,  10},
> -	{ 179,   8},
> -	{ 178,   5},
> -	{   0,   0},
> -};
> -
> -struct battery_thresh sharpsl_battery_levels_noac[] = {
> -	{ 213, 100},
> -	{ 212,  98},
> -	{ 211,  95},
> -	{ 210,  93},
> -	{ 209,  90},
> -	{ 208,  88},
> -	{ 207,  85},
> -	{ 206,  83},
> -	{ 205,  80},
> -	{ 204,  78},
> -	{ 203,  75},
> -	{ 202,  73},
> -	{ 201,  70},
> -	{ 200,  68},
> -	{ 199,  65},
> -	{ 198,  63},
> -	{ 197,  60},
> -	{ 196,  58},
> -	{ 195,  55},
> -	{ 194,  53},
> -	{ 193,  50},
> -	{ 192,  48},
> -	{ 191,  45},
> -	{ 190,  43},
> -	{ 189,  40},
> -	{ 188,  38},
> -	{ 187,  35},
> -	{ 186,  33},
> -	{ 185,  30},
> -	{ 184,  28},
> -	{ 183,  25},
> -	{ 182,  23},
> -	{ 181,  20},
> -	{ 180,  18},
> -	{ 179,  15},
> -	{ 178,  13},
> -	{ 177,  10},
> -	{ 176,   8},
> -	{ 175,   5},
> -	{   0,   0},
> -};
> -
> -/* MAX1111 Commands */
> -#define MAXCTRL_PD0      (1u << 0)
> -#define MAXCTRL_PD1      (1u << 1)
> -#define MAXCTRL_SGL      (1u << 2)
> -#define MAXCTRL_UNI      (1u << 3)
> -#define MAXCTRL_SEL_SH   4
> -#define MAXCTRL_STR      (1u << 7)
> -
> -extern int max1111_read_channel(int);
> -/*
> - * Read MAX1111 ADC
> - */
> -int sharpsl_pm_pxa_read_max1111(int channel)
> -{
> -	/* max1111 accepts channels from 0-3, however,
> -	 * it is encoded from 0-7 here in the code.
> -	 */
> -	return max1111_read_channel(channel >> 1);
> -}
> -
> -static int get_percentage(int voltage)
> -{
> -	int i = sharpsl_pm.machinfo->bat_levels - 1;
> -	int bl_status = sharpsl_pm.machinfo->backlight_get_status ? sharpsl_pm.machinfo->backlight_get_status() : 0;
> -	struct battery_thresh *thresh;
> -
> -	if (sharpsl_pm.charge_mode == CHRG_ON)
> -		thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_acin_bl : sharpsl_pm.machinfo->bat_levels_acin;
> -	else
> -		thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_noac_bl : sharpsl_pm.machinfo->bat_levels_noac;
> -
> -	while (i > 0 && (voltage > thresh[i].voltage))
> -		i--;
> -
> -	return thresh[i].percentage;
> -}
> -
> -static int get_apm_status(int voltage)
> -{
> -	int low_thresh, high_thresh;
> -
> -	if (sharpsl_pm.charge_mode == CHRG_ON) {
> -		high_thresh = sharpsl_pm.machinfo->status_high_acin;
> -		low_thresh = sharpsl_pm.machinfo->status_low_acin;
> -	} else {
> -		high_thresh = sharpsl_pm.machinfo->status_high_noac;
> -		low_thresh = sharpsl_pm.machinfo->status_low_noac;
> -	}
> -
> -	if (voltage >= high_thresh)
> -		return APM_BATTERY_STATUS_HIGH;
> -	if (voltage >= low_thresh)
> -		return APM_BATTERY_STATUS_LOW;
> -	return APM_BATTERY_STATUS_CRITICAL;
> -}
> -
> -void sharpsl_battery_kick(void)
> -{
> -	schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(125));
> -}
> -
> -static void sharpsl_battery_thread(struct work_struct *private_)
> -{
> -	int voltage, percent, apm_status, i;
> -
> -	if (!sharpsl_pm.machinfo)
> -		return;
> -
> -	sharpsl_pm.battstat.ac_status = (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN) ? APM_AC_ONLINE : APM_AC_OFFLINE);
> -
> -	/* Corgi cannot confirm when battery fully charged so periodically kick! */
> -	if (!sharpsl_pm.machinfo->batfull_irq && (sharpsl_pm.charge_mode == CHRG_ON)
> -			&& time_after(jiffies, sharpsl_pm.charge_start_time +  SHARPSL_CHARGE_ON_TIME_INTERVAL))
> -		schedule_delayed_work(&toggle_charger, 0);
> -
> -	for (i = 0; i < 5; i++) {
> -		voltage = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
> -		if (voltage > 0)
> -			break;
> -	}
> -	if (voltage <= 0) {
> -		voltage = sharpsl_pm.machinfo->bat_levels_noac[0].voltage;
> -		dev_warn(sharpsl_pm.dev, "Warning: Cannot read main battery!\n");
> -	}
> -
> -	voltage = sharpsl_average_value(voltage);
> -	apm_status = get_apm_status(voltage);
> -	percent = get_percentage(voltage);
> -
> -	/* At low battery voltages, the voltage has a tendency to start
> -	   creeping back up so we try to avoid this here */
> -	if ((sharpsl_pm.battstat.ac_status == APM_AC_ONLINE)
> -	    || (apm_status == APM_BATTERY_STATUS_HIGH)
> -	    || percent <= sharpsl_pm.battstat.mainbat_percent) {
> -		sharpsl_pm.battstat.mainbat_voltage = voltage;
> -		sharpsl_pm.battstat.mainbat_status = apm_status;
> -		sharpsl_pm.battstat.mainbat_percent = percent;
> -	}
> -
> -	dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %ld\n", voltage,
> -			sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies);
> -
> -	/* Suspend if critical battery level */
> -	if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE)
> -	     && (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL)
> -	     && !(sharpsl_pm.flags & SHARPSL_APM_QUEUED)) {
> -		sharpsl_pm.flags |= SHARPSL_APM_QUEUED;
> -		dev_err(sharpsl_pm.dev, "Fatal Off\n");
> -		apm_queue_event(APM_CRITICAL_SUSPEND);
> -	}
> -
> -	schedule_delayed_work(&sharpsl_bat, SHARPSL_BATCHK_TIME);
> -}
> -
> -void sharpsl_pm_led(int val)
> -{
> -	if (val == SHARPSL_LED_ERROR) {
> -		dev_err(sharpsl_pm.dev, "Charging Error!\n");
> -	} else if (val == SHARPSL_LED_ON) {
> -		dev_dbg(sharpsl_pm.dev, "Charge LED On\n");
> -		led_trigger_event(sharpsl_charge_led_trigger, LED_FULL);
> -	} else {
> -		dev_dbg(sharpsl_pm.dev, "Charge LED Off\n");
> -		led_trigger_event(sharpsl_charge_led_trigger, LED_OFF);
> -	}
> -}
> -
> -static void sharpsl_charge_on(void)
> -{
> -	dev_dbg(sharpsl_pm.dev, "Turning Charger On\n");
> -
> -	sharpsl_pm.full_count = 0;
> -	sharpsl_pm.charge_mode = CHRG_ON;
> -	schedule_delayed_work(&toggle_charger, msecs_to_jiffies(250));
> -	schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(500));
> -}
> -
> -static void sharpsl_charge_off(void)
> -{
> -	dev_dbg(sharpsl_pm.dev, "Turning Charger Off\n");
> -
> -	sharpsl_pm.machinfo->charge(0);
> -	sharpsl_pm_led(SHARPSL_LED_OFF);
> -	sharpsl_pm.charge_mode = CHRG_OFF;
> -
> -	schedule_delayed_work(&sharpsl_bat, 0);
> -}
> -
> -static void sharpsl_charge_error(void)
> -{
> -	sharpsl_pm_led(SHARPSL_LED_ERROR);
> -	sharpsl_pm.machinfo->charge(0);
> -	sharpsl_pm.charge_mode = CHRG_ERROR;
> -}
> -
> -static void sharpsl_charge_toggle(struct work_struct *private_)
> -{
> -	dev_dbg(sharpsl_pm.dev, "Toggling Charger at time: %lx\n", jiffies);
> -
> -	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
> -		sharpsl_charge_off();
> -		return;
> -	} else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) {
> -		sharpsl_charge_error();
> -		return;
> -	}
> -
> -	sharpsl_pm_led(SHARPSL_LED_ON);
> -	sharpsl_pm.machinfo->charge(0);
> -	mdelay(SHARPSL_CHARGE_WAIT_TIME);
> -	sharpsl_pm.machinfo->charge(1);
> -
> -	sharpsl_pm.charge_start_time = jiffies;
> -}
> -
> -static void sharpsl_ac_timer(struct timer_list *unused)
> -{
> -	int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
> -
> -	dev_dbg(sharpsl_pm.dev, "AC Status: %d\n", acin);
> -
> -	sharpsl_average_clear();
> -	if (acin && (sharpsl_pm.charge_mode != CHRG_ON))
> -		sharpsl_charge_on();
> -	else if (sharpsl_pm.charge_mode == CHRG_ON)
> -		sharpsl_charge_off();
> -
> -	schedule_delayed_work(&sharpsl_bat, 0);
> -}
> -
> -
> -static irqreturn_t sharpsl_ac_isr(int irq, void *dev_id)
> -{
> -	/* Delay the event slightly to debounce */
> -	/* Must be a smaller delay than the chrg_full_isr below */
> -	mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250));
> -
> -	return IRQ_HANDLED;
> -}
> -
> -static void sharpsl_chrg_full_timer(struct timer_list *unused)
> -{
> -	dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies);
> -
> -	sharpsl_pm.full_count++;
> -
> -	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
> -		dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n");
> -		if (sharpsl_pm.charge_mode == CHRG_ON)
> -			sharpsl_charge_off();
> -	} else if (sharpsl_pm.full_count < 2) {
> -		dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n");
> -		schedule_delayed_work(&toggle_charger, 0);
> -	} else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) {
> -		dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n");
> -		schedule_delayed_work(&toggle_charger, 0);
> -	} else {
> -		sharpsl_charge_off();
> -		sharpsl_pm.charge_mode = CHRG_DONE;
> -		dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n");
> -	}
> -}
> -
> -/* Charging Finished Interrupt (Not present on Corgi) */
> -/* Can trigger at the same time as an AC status change so
> -   delay until after that has been processed */
> -static irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id)
> -{
> -	if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
> -		return IRQ_HANDLED;
> -
> -	/* delay until after any ac interrupt */
> -	mod_timer(&sharpsl_pm.chrg_full_timer, jiffies + msecs_to_jiffies(500));
> -
> -	return IRQ_HANDLED;
> -}
> -
> -static irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id)
> -{
> -	int is_fatal = 0;
> -
> -	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) {
> -		dev_err(sharpsl_pm.dev, "Battery now Unlocked! Suspending.\n");
> -		is_fatal = 1;
> -	}
> -
> -	if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)) {
> -		dev_err(sharpsl_pm.dev, "Fatal Batt Error! Suspending.\n");
> -		is_fatal = 1;
> -	}
> -
> -	if (!(sharpsl_pm.flags & SHARPSL_APM_QUEUED) && is_fatal) {
> -		sharpsl_pm.flags |= SHARPSL_APM_QUEUED;
> -		apm_queue_event(APM_CRITICAL_SUSPEND);
> -	}
> -
> -	return IRQ_HANDLED;
> -}
> -
> -/*
> - * Maintain an average of the last 10 readings
> - */
> -#define SHARPSL_CNV_VALUE_NUM    10
> -static int sharpsl_ad_index;
> -
> -static void sharpsl_average_clear(void)
> -{
> -	sharpsl_ad_index = 0;
> -}
> -
> -static int sharpsl_average_value(int ad)
> -{
> -	int i, ad_val = 0;
> -	static int sharpsl_ad[SHARPSL_CNV_VALUE_NUM+1];
> -
> -	if (sharpsl_pm.battstat.mainbat_status != APM_BATTERY_STATUS_HIGH) {
> -		sharpsl_ad_index = 0;
> -		return ad;
> -	}
> -
> -	sharpsl_ad[sharpsl_ad_index] = ad;
> -	sharpsl_ad_index++;
> -	if (sharpsl_ad_index >= SHARPSL_CNV_VALUE_NUM) {
> -		for (i = 0; i < (SHARPSL_CNV_VALUE_NUM-1); i++)
> -			sharpsl_ad[i] = sharpsl_ad[i+1];
> -		sharpsl_ad_index = SHARPSL_CNV_VALUE_NUM - 1;
> -	}
> -	for (i = 0; i < sharpsl_ad_index; i++)
> -		ad_val += sharpsl_ad[i];
> -
> -	return ad_val / sharpsl_ad_index;
> -}
> -
> -/*
> - * Take an array of 5 integers, remove the maximum and minimum values
> - * and return the average.
> - */
> -static int get_select_val(int *val)
> -{
> -	int i, j, k, temp, sum = 0;
> -
> -	/* Find MAX val */
> -	temp = val[0];
> -	j = 0;
> -	for (i = 1; i < 5; i++) {
> -		if (temp < val[i]) {
> -			temp = val[i];
> -			j = i;
> -		}
> -	}
> -
> -	/* Find MIN val */
> -	temp = val[4];
> -	k = 4;
> -	for (i = 3; i >= 0; i--) {
> -		if (temp > val[i]) {
> -			temp = val[i];
> -			k = i;
> -		}
> -	}
> -
> -	for (i = 0; i < 5; i++)
> -		if (i != j && i != k)
> -			sum += val[i];
> -
> -	dev_dbg(sharpsl_pm.dev, "Average: %d from values: %d, %d, %d, %d, %d\n", sum/3, val[0], val[1], val[2], val[3], val[4]);
> -
> -	return sum/3;
> -}
> -
> -static int sharpsl_check_battery_temp(void)
> -{
> -	int val, i, buff[5];
> -
> -	/* Check battery temperature */
> -	for (i = 0; i < 5; i++) {
> -		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP);
> -		sharpsl_pm.machinfo->measure_temp(1);
> -		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP);
> -		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_TEMP);
> -		sharpsl_pm.machinfo->measure_temp(0);
> -	}
> -
> -	val = get_select_val(buff);
> -
> -	dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val);
> -	if (val > sharpsl_pm.machinfo->charge_on_temp) {
> -		printk(KERN_WARNING "Not charging: temperature out of limits.\n");
> -		return -1;
> -	}
> -
> -	return 0;
> -}
> -
> -#ifdef CONFIG_PM
> -static int sharpsl_check_battery_voltage(void)
> -{
> -	int val, i, buff[5];
> -
> -	/* disable charge, enable discharge */
> -	sharpsl_pm.machinfo->charge(0);
> -	sharpsl_pm.machinfo->discharge(1);
> -	mdelay(SHARPSL_WAIT_DISCHARGE_ON);
> -
> -	if (sharpsl_pm.machinfo->discharge1)
> -		sharpsl_pm.machinfo->discharge1(1);
> -
> -	/* Check battery voltage */
> -	for (i = 0; i < 5; i++) {
> -		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
> -		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT);
> -	}
> -
> -	if (sharpsl_pm.machinfo->discharge1)
> -		sharpsl_pm.machinfo->discharge1(0);
> -
> -	sharpsl_pm.machinfo->discharge(0);
> -
> -	val = get_select_val(buff);
> -	dev_dbg(sharpsl_pm.dev, "Battery Voltage: %d\n", val);
> -
> -	if (val < sharpsl_pm.machinfo->charge_on_volt)
> -		return -1;
> -
> -	return 0;
> -}
> -#endif
> -
> -static int sharpsl_ac_check(void)
> -{
> -	int temp, i, buff[5];
> -
> -	for (i = 0; i < 5; i++) {
> -		buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_ACIN_VOLT);
> -		mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN);
> -	}
> -
> -	temp = get_select_val(buff);
> -	dev_dbg(sharpsl_pm.dev, "AC Voltage: %d\n", temp);
> -
> -	if ((temp > sharpsl_pm.machinfo->charge_acin_high) || (temp < sharpsl_pm.machinfo->charge_acin_low)) {
> -		dev_err(sharpsl_pm.dev, "Error: AC check failed: voltage %d.\n", temp);
> -		return -1;
> -	}
> -
> -	return 0;
> -}
> -
> -#ifdef CONFIG_PM
> -static int sharpsl_pm_suspend(struct platform_device *pdev, pm_message_t state)
> -{
> -	sharpsl_pm.flags |= SHARPSL_SUSPENDED;
> -	flush_delayed_work(&toggle_charger);
> -	flush_delayed_work(&sharpsl_bat);
> -
> -	if (sharpsl_pm.charge_mode == CHRG_ON)
> -		sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG;
> -	else
> -		sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG;
> -
> -	return 0;
> -}
> -
> -static int sharpsl_pm_resume(struct platform_device *pdev)
> -{
> -	/* Clear the reset source indicators as they break the bootloader upon reboot */
> -	RCSR = 0x0f;
> -	sharpsl_average_clear();
> -	sharpsl_pm.flags &= ~SHARPSL_APM_QUEUED;
> -	sharpsl_pm.flags &= ~SHARPSL_SUSPENDED;
> -
> -	return 0;
> -}
> -
> -static void corgi_goto_sleep(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state)
> -{
> -	dev_dbg(sharpsl_pm.dev, "Time is: %08x\n", RCNR);
> -
> -	dev_dbg(sharpsl_pm.dev, "Offline Charge Activate = %d\n", sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG);
> -	/* not charging and AC-IN! */
> -
> -	if ((sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG) && (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN))) {
> -		dev_dbg(sharpsl_pm.dev, "Activating Offline Charger...\n");
> -		sharpsl_pm.charge_mode = CHRG_OFF;
> -		sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG;
> -		sharpsl_off_charge_battery();
> -	}
> -
> -	sharpsl_pm.machinfo->presuspend();
> -
> -	PEDR = 0xffffffff; /* clear it */
> -
> -	sharpsl_pm.flags &= ~SHARPSL_ALARM_ACTIVE;
> -	if ((sharpsl_pm.charge_mode == CHRG_ON) && ((alarm_enable && ((alarm_time - RCNR) > (SHARPSL_BATCHK_TIME_SUSPEND + 30))) || !alarm_enable)) {
> -		RTSR &= RTSR_ALE;
> -		RTAR = RCNR + SHARPSL_BATCHK_TIME_SUSPEND;
> -		dev_dbg(sharpsl_pm.dev, "Charging alarm at: %08x\n", RTAR);
> -		sharpsl_pm.flags |= SHARPSL_ALARM_ACTIVE;
> -	} else if (alarm_enable) {
> -		RTSR &= RTSR_ALE;
> -		RTAR = alarm_time;
> -		dev_dbg(sharpsl_pm.dev, "User alarm at: %08x\n", RTAR);
> -	} else {
> -		dev_dbg(sharpsl_pm.dev, "No alarms set.\n");
> -	}
> -
> -	pxa_pm_enter(state);
> -
> -	sharpsl_pm.machinfo->postsuspend();
> -
> -	dev_dbg(sharpsl_pm.dev, "Corgi woken up from suspend: %08x\n", PEDR);
> -}
> -
> -static int corgi_enter_suspend(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state)
> -{
> -	if (!sharpsl_pm.machinfo->should_wakeup(!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE) && alarm_enable)) {
> -		if (!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE)) {
> -			dev_dbg(sharpsl_pm.dev, "No user triggered wakeup events and not charging. Strange. Suspend.\n");
> -			corgi_goto_sleep(alarm_time, alarm_enable, state);
> -			return 1;
> -		}
> -		if (sharpsl_off_charge_battery()) {
> -			dev_dbg(sharpsl_pm.dev, "Charging. Suspend...\n");
> -			corgi_goto_sleep(alarm_time, alarm_enable, state);
> -			return 1;
> -		}
> -		dev_dbg(sharpsl_pm.dev, "User triggered wakeup in offline charger.\n");
> -	}
> -
> -	if ((!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) ||
> -	    (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)))	{
> -		dev_err(sharpsl_pm.dev, "Fatal condition. Suspend.\n");
> -		corgi_goto_sleep(alarm_time, alarm_enable, state);
> -		return 1;
> -	}
> -
> -	return 0;
> -}
> -
> -static int corgi_pxa_pm_enter(suspend_state_t state)
> -{
> -	unsigned long alarm_time = RTAR;
> -	unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0);
> -
> -	dev_dbg(sharpsl_pm.dev, "SharpSL suspending for first time.\n");
> -
> -	corgi_goto_sleep(alarm_time, alarm_status, state);
> -
> -	while (corgi_enter_suspend(alarm_time, alarm_status, state))
> -		{}
> -
> -	if (sharpsl_pm.machinfo->earlyresume)
> -		sharpsl_pm.machinfo->earlyresume();
> -
> -	dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n");
> -
> -	return 0;
> -}
> -
> -static int sharpsl_off_charge_error(void)
> -{
> -	dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n");
> -	sharpsl_pm.machinfo->charge(0);
> -	sharpsl_pm_led(SHARPSL_LED_ERROR);
> -	sharpsl_pm.charge_mode = CHRG_ERROR;
> -	return 1;
> -}
> -
> -/*
> - * Charging Control while suspended
> - * Return 1 - go straight to sleep
> - * Return 0 - sleep or wakeup depending on other factors
> - */
> -static int sharpsl_off_charge_battery(void)
> -{
> -	int time;
> -
> -	dev_dbg(sharpsl_pm.dev, "Charge Mode: %d\n", sharpsl_pm.charge_mode);
> -
> -	if (sharpsl_pm.charge_mode == CHRG_OFF) {
> -		dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n");
> -
> -		/* AC Check */
> -		if ((sharpsl_ac_check() < 0) || (sharpsl_check_battery_temp() < 0))
> -			return sharpsl_off_charge_error();
> -
> -		/* Start Charging */
> -		sharpsl_pm_led(SHARPSL_LED_ON);
> -		sharpsl_pm.machinfo->charge(0);
> -		mdelay(SHARPSL_CHARGE_WAIT_TIME);
> -		sharpsl_pm.machinfo->charge(1);
> -
> -		sharpsl_pm.charge_mode = CHRG_ON;
> -		sharpsl_pm.full_count = 0;
> -
> -		return 1;
> -	} else if (sharpsl_pm.charge_mode != CHRG_ON) {
> -		return 1;
> -	}
> -
> -	if (sharpsl_pm.full_count == 0) {
> -		int time;
> -
> -		dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n");
> -
> -		if ((sharpsl_check_battery_temp() < 0) || (sharpsl_check_battery_voltage() < 0))
> -			return sharpsl_off_charge_error();
> -
> -		sharpsl_pm.machinfo->charge(0);
> -		mdelay(SHARPSL_CHARGE_WAIT_TIME);
> -		sharpsl_pm.machinfo->charge(1);
> -		sharpsl_pm.charge_mode = CHRG_ON;
> -
> -		mdelay(SHARPSL_CHARGE_CO_CHECK_TIME);
> -
> -		time = RCNR;
> -		while (1) {
> -			/* Check if any wakeup event had occurred */
> -			if (sharpsl_pm.machinfo->charger_wakeup())
> -				return 0;
> -			/* Check for timeout */
> -			if ((RCNR - time) > SHARPSL_WAIT_CO_TIME)
> -				return 1;
> -			if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) {
> -				dev_dbg(sharpsl_pm.dev, "Offline Charger: Charge full occurred. Retrying to check\n");
> -				sharpsl_pm.full_count++;
> -				sharpsl_pm.machinfo->charge(0);
> -				mdelay(SHARPSL_CHARGE_WAIT_TIME);
> -				sharpsl_pm.machinfo->charge(1);
> -				return 1;
> -			}
> -		}
> -	}
> -
> -	dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 3\n");
> -
> -	mdelay(SHARPSL_CHARGE_CO_CHECK_TIME);
> -
> -	time = RCNR;
> -	while (1) {
> -		/* Check if any wakeup event had occurred */
> -		if (sharpsl_pm.machinfo->charger_wakeup())
> -			return 0;
> -		/* Check for timeout */
> -		if ((RCNR-time) > SHARPSL_WAIT_CO_TIME) {
> -			if (sharpsl_pm.full_count > SHARPSL_CHARGE_RETRY_CNT) {
> -				dev_dbg(sharpsl_pm.dev, "Offline Charger: Not charged sufficiently. Retrying.\n");
> -				sharpsl_pm.full_count = 0;
> -			}
> -			sharpsl_pm.full_count++;
> -			return 1;
> -		}
> -		if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) {
> -			dev_dbg(sharpsl_pm.dev, "Offline Charger: Charging complete.\n");
> -			sharpsl_pm_led(SHARPSL_LED_OFF);
> -			sharpsl_pm.machinfo->charge(0);
> -			sharpsl_pm.charge_mode = CHRG_DONE;
> -			return 1;
> -		}
> -	}
> -}
> -#else
> -#define sharpsl_pm_suspend	NULL
> -#define sharpsl_pm_resume	NULL
> -#endif
> -
> -static ssize_t battery_percentage_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_percent);
> -}
> -
> -static ssize_t battery_voltage_show(struct device *dev, struct device_attribute *attr, char *buf)
> -{
> -	return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_voltage);
> -}
> -
> -static DEVICE_ATTR_RO(battery_percentage);
> -static DEVICE_ATTR_RO(battery_voltage);
> -
> -extern void (*apm_get_power_status)(struct apm_power_info *);
> -
> -static void sharpsl_apm_get_power_status(struct apm_power_info *info)
> -{
> -	info->ac_line_status = sharpsl_pm.battstat.ac_status;
> -
> -	if (sharpsl_pm.charge_mode == CHRG_ON)
> -		info->battery_status = APM_BATTERY_STATUS_CHARGING;
> -	else
> -		info->battery_status = sharpsl_pm.battstat.mainbat_status;
> -
> -	info->battery_flag = (1 << info->battery_status);
> -	info->battery_life = sharpsl_pm.battstat.mainbat_percent;
> -}
> -
> -#ifdef CONFIG_PM
> -static const struct platform_suspend_ops sharpsl_pm_ops = {
> -	.prepare	= pxa_pm_prepare,
> -	.finish		= pxa_pm_finish,
> -	.enter		= corgi_pxa_pm_enter,
> -	.valid		= suspend_valid_only_mem,
> -};
> -#endif
> -
> -static int sharpsl_pm_probe(struct platform_device *pdev)
> -{
> -	int ret, irq;
> -
> -	if (!pdev->dev.platform_data)
> -		return -EINVAL;
> -
> -	sharpsl_pm.dev = &pdev->dev;
> -	sharpsl_pm.machinfo = pdev->dev.platform_data;
> -	sharpsl_pm.charge_mode = CHRG_OFF;
> -	sharpsl_pm.flags = 0;
> -
> -	timer_setup(&sharpsl_pm.ac_timer, sharpsl_ac_timer, 0);
> -
> -	timer_setup(&sharpsl_pm.chrg_full_timer, sharpsl_chrg_full_timer, 0);
> -
> -	led_trigger_register_simple("sharpsl-charge", &sharpsl_charge_led_trigger);
> -
> -	sharpsl_pm.machinfo->init();
> -
> -	gpio_request(sharpsl_pm.machinfo->gpio_acin, "AC IN");
> -	gpio_direction_input(sharpsl_pm.machinfo->gpio_acin);
> -	gpio_request(sharpsl_pm.machinfo->gpio_batfull, "Battery Full");
> -	gpio_direction_input(sharpsl_pm.machinfo->gpio_batfull);
> -	gpio_request(sharpsl_pm.machinfo->gpio_batlock, "Battery Lock");
> -	gpio_direction_input(sharpsl_pm.machinfo->gpio_batlock);
> -
> -	/* Register interrupt handlers */
> -	irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_acin);
> -	if (request_irq(irq, sharpsl_ac_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, "AC Input Detect", sharpsl_ac_isr)) {
> -		dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
> -	}
> -
> -	irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_batlock);
> -	if (request_irq(irq, sharpsl_fatal_isr, IRQF_TRIGGER_FALLING, "Battery Cover", sharpsl_fatal_isr)) {
> -		dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
> -	}
> -
> -	if (sharpsl_pm.machinfo->gpio_fatal) {
> -		irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_fatal);
> -		if (request_irq(irq, sharpsl_fatal_isr, IRQF_TRIGGER_FALLING, "Fatal Battery", sharpsl_fatal_isr)) {
> -			dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
> -		}
> -	}
> -
> -	if (sharpsl_pm.machinfo->batfull_irq) {
> -		/* Register interrupt handler. */
> -		irq = gpio_to_irq(sharpsl_pm.machinfo->gpio_batfull);
> -		if (request_irq(irq, sharpsl_chrg_full_isr, IRQF_TRIGGER_RISING, "CO", sharpsl_chrg_full_isr)) {
> -			dev_err(sharpsl_pm.dev, "Could not get irq %d.\n", irq);
> -		}
> -	}
> -
> -	ret = device_create_file(&pdev->dev, &dev_attr_battery_percentage);
> -	ret |= device_create_file(&pdev->dev, &dev_attr_battery_voltage);
> -	if (ret != 0)
> -		dev_warn(&pdev->dev, "Failed to register attributes (%d)\n", ret);
> -
> -	apm_get_power_status = sharpsl_apm_get_power_status;
> -
> -#ifdef CONFIG_PM
> -	suspend_set_ops(&sharpsl_pm_ops);
> -#endif
> -
> -	mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250));
> -
> -	return 0;
> -}
> -
> -static void sharpsl_pm_remove(struct platform_device *pdev)
> -{
> -	suspend_set_ops(NULL);
> -
> -	device_remove_file(&pdev->dev, &dev_attr_battery_percentage);
> -	device_remove_file(&pdev->dev, &dev_attr_battery_voltage);
> -
> -	led_trigger_unregister_simple(sharpsl_charge_led_trigger);
> -
> -	free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_acin), sharpsl_ac_isr);
> -	free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_batlock), sharpsl_fatal_isr);
> -
> -	if (sharpsl_pm.machinfo->gpio_fatal)
> -		free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_fatal), sharpsl_fatal_isr);
> -
> -	if (sharpsl_pm.machinfo->batfull_irq)
> -		free_irq(gpio_to_irq(sharpsl_pm.machinfo->gpio_batfull), sharpsl_chrg_full_isr);
> -
> -	gpio_free(sharpsl_pm.machinfo->gpio_batlock);
> -	gpio_free(sharpsl_pm.machinfo->gpio_batfull);
> -	gpio_free(sharpsl_pm.machinfo->gpio_acin);
> -
> -	if (sharpsl_pm.machinfo->exit)
> -		sharpsl_pm.machinfo->exit();
> -
> -	timer_delete_sync(&sharpsl_pm.chrg_full_timer);
> -	timer_delete_sync(&sharpsl_pm.ac_timer);
> -}
> -
> -static struct platform_driver sharpsl_pm_driver = {
> -	.probe		= sharpsl_pm_probe,
> -	.remove		= sharpsl_pm_remove,
> -	.suspend	= sharpsl_pm_suspend,
> -	.resume		= sharpsl_pm_resume,
> -	.driver		= {
> -		.name		= "sharpsl-pm",
> -	},
> -};
> -
> -static int sharpsl_pm_init(void)
> -{
> -	return platform_driver_register(&sharpsl_pm_driver);
> -}
> -
> -static void sharpsl_pm_exit(void)
> -{
> -	platform_driver_unregister(&sharpsl_pm_driver);
> -}
> -
> -late_initcall(sharpsl_pm_init);
> -module_exit(sharpsl_pm_exit);
> diff --git a/arch/arm/mach-pxa/sharpsl_pm.h b/arch/arm/mach-pxa/sharpsl_pm.h
> deleted file mode 100644
> index 623167f30ec2..000000000000
> --- a/arch/arm/mach-pxa/sharpsl_pm.h
> +++ /dev/null
> @@ -1,108 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * SharpSL Battery/PM Driver
> - *
> - * Copyright (c) 2004-2005 Richard Purdie
> - */
> -#ifndef _MACH_SHARPSL_PM
> -#define _MACH_SHARPSL_PM
> -
> -struct sharpsl_charger_machinfo {
> -	void (*init)(void);
> -	void (*exit)(void);
> -	int gpio_acin;
> -	int gpio_batfull;
> -	int batfull_irq;
> -	int gpio_batlock;
> -	int gpio_fatal;
> -	void (*discharge)(int);
> -	void (*discharge1)(int);
> -	void (*charge)(int);
> -	void (*measure_temp)(int);
> -	void (*presuspend)(void);
> -	void (*postsuspend)(void);
> -	void (*earlyresume)(void);
> -	unsigned long (*read_devdata)(int);
> -#define SHARPSL_BATT_VOLT       1
> -#define SHARPSL_BATT_TEMP       2
> -#define SHARPSL_ACIN_VOLT       3
> -#define SHARPSL_STATUS_ACIN     4
> -#define SHARPSL_STATUS_LOCK     5
> -#define SHARPSL_STATUS_CHRGFULL 6
> -#define SHARPSL_STATUS_FATAL    7
> -	bool (*charger_wakeup)(void);
> -	int (*should_wakeup)(unsigned int resume_on_alarm);
> -	void (*backlight_limit)(int);
> -	int (*backlight_get_status) (void);
> -	int charge_on_volt;
> -	int charge_on_temp;
> -	int charge_acin_high;
> -	int charge_acin_low;
> -	int fatal_acin_volt;
> -	int fatal_noacin_volt;
> -	int bat_levels;
> -	struct battery_thresh *bat_levels_noac;
> -	struct battery_thresh *bat_levels_acin;
> -	struct battery_thresh *bat_levels_noac_bl;
> -	struct battery_thresh *bat_levels_acin_bl;
> -	int status_high_acin;
> -	int status_low_acin;
> -	int status_high_noac;
> -	int status_low_noac;
> -};
> -
> -struct battery_thresh {
> -	int voltage;
> -	int percentage;
> -};
> -
> -struct battery_stat {
> -	int ac_status;         /* APM AC Present/Not Present */
> -	int mainbat_status;    /* APM Main Battery Status */
> -	int mainbat_percent;   /* Main Battery Percentage Charge */
> -	int mainbat_voltage;   /* Main Battery Voltage */
> -};
> -
> -struct sharpsl_pm_status {
> -	struct device *dev;
> -	struct timer_list ac_timer;
> -	struct timer_list chrg_full_timer;
> -
> -	int charge_mode;
> -#define CHRG_ERROR    (-1)
> -#define CHRG_OFF      (0)
> -#define CHRG_ON       (1)
> -#define CHRG_DONE     (2)
> -
> -	unsigned int flags;
> -#define SHARPSL_SUSPENDED       (1 << 0)  /* Device is Suspended */
> -#define SHARPSL_ALARM_ACTIVE    (1 << 1)  /* Alarm is for charging event (not user) */
> -#define SHARPSL_BL_LIMIT        (1 << 2)  /* Backlight Intensity Limited */
> -#define SHARPSL_APM_QUEUED      (1 << 3)  /* APM Event Queued */
> -#define SHARPSL_DO_OFFLINE_CHRG (1 << 4)  /* Trigger the offline charger */
> -
> -	int full_count;
> -	unsigned long charge_start_time;
> -	struct sharpsl_charger_machinfo *machinfo;
> -	struct battery_stat battstat;
> -};
> -
> -extern struct sharpsl_pm_status sharpsl_pm;
> -
> -extern struct battery_thresh sharpsl_battery_levels_acin[];
> -extern struct battery_thresh sharpsl_battery_levels_noac[];
> -
> -#define SHARPSL_LED_ERROR  2
> -#define SHARPSL_LED_ON     1
> -#define SHARPSL_LED_OFF    0
> -
> -void sharpsl_battery_kick(void);
> -void sharpsl_pm_led(int val);
> -
> -/* MAX1111 Channel Definitions */
> -#define MAX1111_BATT_VOLT   4u
> -#define MAX1111_BATT_TEMP   2u
> -#define MAX1111_ACIN_VOLT   6u
> -int sharpsl_pm_pxa_read_max1111(int channel);
> -
> -#endif
> diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
> deleted file mode 100644
> index 5eaf38243b9e..000000000000
> --- a/arch/arm/mach-pxa/spitz.c
> +++ /dev/null
> @@ -1,1174 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Support for Sharp SL-Cxx00 Series of PDAs
> - * Models: SL-C3000 (Spitz), SL-C1000 (Akita) and SL-C3100 (Borzoi)
> - *
> - * Copyright (c) 2005 Richard Purdie
> - *
> - * Based on Sharp's 2.4 kernel patches/lubbock.c
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/platform_device.h>
> -#include <linux/delay.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/gpio/property.h>
> -#include <linux/leds.h>
> -#include <linux/i2c.h>
> -#include <linux/platform_data/i2c-pxa.h>
> -#include <linux/platform_data/pca953x.h>
> -#include <linux/property.h>
> -#include <linux/spi/spi.h>
> -#include <linux/spi/ads7846.h>
> -#include <linux/spi/corgi_lcd.h>
> -#include <linux/mtd/sharpsl.h>
> -#include <linux/mtd/physmap.h>
> -#include <linux/input-event-codes.h>
> -#include <linux/input/matrix_keypad.h>
> -#include <linux/regulator/machine.h>
> -#include <linux/io.h>
> -#include <linux/property.h>
> -#include <linux/reboot.h>
> -#include <linux/memblock.h>
> -
> -#include <asm/setup.h>
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/sharpsl_param.h>
> -#include <asm/hardware/scoop.h>
> -
> -#include "pxa27x.h"
> -#include "pxa27x-udc.h"
> -#include "reset.h"
> -#include <linux/platform_data/mmc-pxamci.h>
> -#include <linux/platform_data/usb-ohci-pxa27x.h>
> -#include <linux/platform_data/video-pxafb.h>
> -#include "spitz.h"
> -#include "sharpsl_pm.h"
> -#include "smemc.h"
> -
> -#include "generic.h"
> -#include "devices.h"
> -
> -/******************************************************************************
> - * Pin configuration
> - ******************************************************************************/
> -static unsigned long spitz_pin_config[] __initdata = {
> -	/* Chip Selects */
> -	GPIO78_nCS_2,	/* SCOOP #2 */
> -	GPIO79_nCS_3,	/* NAND */
> -	GPIO80_nCS_4,	/* SCOOP #1 */
> -
> -	/* LCD - 16bpp Active TFT */
> -	GPIOxx_LCD_TFT_16BPP,
> -
> -	/* PC Card */
> -	GPIO48_nPOE,
> -	GPIO49_nPWE,
> -	GPIO50_nPIOR,
> -	GPIO51_nPIOW,
> -	GPIO85_nPCE_1,
> -	GPIO54_nPCE_2,
> -	GPIO55_nPREG,
> -	GPIO56_nPWAIT,
> -	GPIO57_nIOIS16,
> -	GPIO104_PSKTSEL,
> -
> -	/* I2S */
> -	GPIO28_I2S_BITCLK_OUT,
> -	GPIO29_I2S_SDATA_IN,
> -	GPIO30_I2S_SDATA_OUT,
> -	GPIO31_I2S_SYNC,
> -
> -	/* MMC */
> -	GPIO32_MMC_CLK,
> -	GPIO112_MMC_CMD,
> -	GPIO92_MMC_DAT_0,
> -	GPIO109_MMC_DAT_1,
> -	GPIO110_MMC_DAT_2,
> -	GPIO111_MMC_DAT_3,
> -
> -	/* GPIOs */
> -	GPIO9_GPIO,	/* SPITZ_GPIO_nSD_DETECT */
> -	GPIO16_GPIO,	/* SPITZ_GPIO_SYNC */
> -	GPIO81_GPIO,	/* SPITZ_GPIO_nSD_WP */
> -	GPIO41_GPIO,	/* SPITZ_GPIO_USB_CONNECT */
> -	GPIO37_GPIO,	/* SPITZ_GPIO_USB_HOST */
> -	GPIO35_GPIO,	/* SPITZ_GPIO_USB_DEVICE */
> -	GPIO22_GPIO,	/* SPITZ_GPIO_HSYNC */
> -	GPIO94_GPIO,	/* SPITZ_GPIO_CF_CD */
> -	GPIO105_GPIO,	/* SPITZ_GPIO_CF_IRQ */
> -	GPIO106_GPIO,	/* SPITZ_GPIO_CF2_IRQ */
> -
> -	/* GPIO matrix keypad */
> -	GPIO88_GPIO,	/* column 0 */
> -	GPIO23_GPIO,	/* column 1 */
> -	GPIO24_GPIO,	/* column 2 */
> -	GPIO25_GPIO,	/* column 3 */
> -	GPIO26_GPIO,	/* column 4 */
> -	GPIO27_GPIO,	/* column 5 */
> -	GPIO52_GPIO,	/* column 6 */
> -	GPIO103_GPIO,	/* column 7 */
> -	GPIO107_GPIO,	/* column 8 */
> -	GPIO108_GPIO,	/* column 9 */
> -	GPIO114_GPIO,	/* column 10 */
> -	GPIO12_GPIO,	/* row 0 */
> -	GPIO17_GPIO,	/* row 1 */
> -	GPIO91_GPIO,	/* row 2 */
> -	GPIO34_GPIO,	/* row 3 */
> -	GPIO36_GPIO,	/* row 4 */
> -	GPIO38_GPIO,	/* row 5 */
> -	GPIO39_GPIO,	/* row 6 */
> -
> -	/* I2C */
> -	GPIO117_I2C_SCL,
> -	GPIO118_I2C_SDA,
> -
> -	GPIO0_GPIO | WAKEUP_ON_EDGE_RISE,	/* SPITZ_GPIO_KEY_INT */
> -	GPIO1_GPIO | WAKEUP_ON_EDGE_FALL,	/* SPITZ_GPIO_RESET */
> -};
> -
> -static const struct software_node spitz_scoop_1_gpiochip_node = {
> -	.name = "sharp-scoop.0",
> -};
> -
> -/* Only on Spitz */
> -static const struct software_node spitz_scoop_2_gpiochip_node = {
> -	.name = "sharp-scoop.1",
> -};
> -
> -/* Only on Akita */
> -static const struct software_node akita_max7310_gpiochip_node = {
> -	.name = "i2c-max7310",
> -};
> -
> -/******************************************************************************
> - * Scoop GPIO expander
> - ******************************************************************************/
> -#if defined(CONFIG_SHARP_SCOOP) || defined(CONFIG_SHARP_SCOOP_MODULE)
> -/* SCOOP Device #1 */
> -static struct resource spitz_scoop_1_resources[] = {
> -	[0] = {
> -		.start		= 0x10800000,
> -		.end		= 0x10800fff,
> -		.flags		= IORESOURCE_MEM,
> -	},
> -};
> -
> -static struct scoop_config spitz_scoop_1_setup = {
> -	.io_dir		= SPITZ_SCP_IO_DIR,
> -	.io_out		= SPITZ_SCP_IO_OUT,
> -	.suspend_clr	= SPITZ_SCP_SUS_CLR,
> -	.suspend_set	= SPITZ_SCP_SUS_SET,
> -	.gpio_base	= SPITZ_SCP_GPIO_BASE,
> -};
> -
> -static struct platform_device spitz_scoop_1_device = {
> -	.name		= "sharp-scoop",
> -	.id		= 0,
> -	.dev		= {
> -		.platform_data	= &spitz_scoop_1_setup,
> -	},
> -	.num_resources	= ARRAY_SIZE(spitz_scoop_1_resources),
> -	.resource	= spitz_scoop_1_resources,
> -};
> -
> -/* SCOOP Device #2 */
> -static struct resource spitz_scoop_2_resources[] = {
> -	[0] = {
> -		.start		= 0x08800040,
> -		.end		= 0x08800fff,
> -		.flags		= IORESOURCE_MEM,
> -	},
> -};
> -
> -static struct scoop_config spitz_scoop_2_setup = {
> -	.io_dir		= SPITZ_SCP2_IO_DIR,
> -	.io_out		= SPITZ_SCP2_IO_OUT,
> -	.suspend_clr	= SPITZ_SCP2_SUS_CLR,
> -	.suspend_set	= SPITZ_SCP2_SUS_SET,
> -	.gpio_base	= SPITZ_SCP2_GPIO_BASE,
> -};
> -
> -static struct platform_device spitz_scoop_2_device = {
> -	.name		= "sharp-scoop",
> -	.id		= 1,
> -	.dev		= {
> -		.platform_data	= &spitz_scoop_2_setup,
> -	},
> -	.num_resources	= ARRAY_SIZE(spitz_scoop_2_resources),
> -	.resource	= spitz_scoop_2_resources,
> -};
> -
> -static void __init spitz_scoop_init(void)
> -{
> -	spitz_scoop_1_device.dev.fwnode = software_node_fwnode(&spitz_scoop_1_gpiochip_node);
> -	platform_device_register(&spitz_scoop_1_device);
> -
> -	/* Akita doesn't have the second SCOOP chip */
> -	if (!machine_is_akita()) {
> -		spitz_scoop_2_device.dev.fwnode = software_node_fwnode(
> -							&spitz_scoop_2_gpiochip_node);
> -		platform_device_register(&spitz_scoop_2_device);
> -	}
> -}
> -
> -/* Power control is shared with between one of the CF slots and SD */
> -static void __maybe_unused spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr)
> -{
> -	unsigned short cpr;
> -	unsigned long flags;
> -
> -	if (new_cpr & 0x7) {
> -		gpio_set_value(SPITZ_GPIO_CF_POWER, 1);
> -		mdelay(5);
> -	}
> -
> -	local_irq_save(flags);
> -
> -	cpr = read_scoop_reg(&spitz_scoop_1_device.dev, SCOOP_CPR);
> -
> -	if (enable & new_cpr)
> -		cpr |= new_cpr;
> -	else
> -		cpr &= ~enable;
> -
> -	write_scoop_reg(&spitz_scoop_1_device.dev, SCOOP_CPR, cpr);
> -
> -	local_irq_restore(flags);
> -
> -	if (!(cpr & 0x7)) {
> -		mdelay(1);
> -		gpio_set_value(SPITZ_GPIO_CF_POWER, 0);
> -	}
> -}
> -
> -#else
> -static inline void spitz_scoop_init(void) {}
> -static inline void spitz_card_pwr_ctrl(uint8_t enable, uint8_t new_cpr) {}
> -#endif
> -
> -/******************************************************************************
> - * PCMCIA
> - ******************************************************************************/
> -#if defined(CONFIG_PCMCIA_PXA2XX) || defined(CONFIG_PCMCIA_PXA2XX_MODULE)
> -static void spitz_pcmcia_pwr(struct device *scoop, uint16_t cpr, int nr)
> -{
> -	/* Only need to override behaviour for slot 0 */
> -	if (nr == 0)
> -		spitz_card_pwr_ctrl(
> -			cpr & (SCOOP_CPR_CF_3V | SCOOP_CPR_CF_XV), cpr);
> -	else
> -		write_scoop_reg(scoop, SCOOP_CPR, cpr);
> -}
> -
> -static struct scoop_pcmcia_dev spitz_pcmcia_scoop[] = {
> -	{
> -		.dev		= &spitz_scoop_1_device.dev,
> -		.irq		= SPITZ_IRQ_GPIO_CF_IRQ,
> -		.cd_irq		= SPITZ_IRQ_GPIO_CF_CD,
> -		.cd_irq_str	= "PCMCIA0 CD",
> -	}, {
> -		.dev		= &spitz_scoop_2_device.dev,
> -		.irq		= SPITZ_IRQ_GPIO_CF2_IRQ,
> -		.cd_irq		= -1,
> -	},
> -};
> -
> -static struct scoop_pcmcia_config spitz_pcmcia_config = {
> -	.devs		= &spitz_pcmcia_scoop[0],
> -	.num_devs	= 2,
> -	.power_ctrl	= spitz_pcmcia_pwr,
> -};
> -
> -static void __init spitz_pcmcia_init(void)
> -{
> -	/* Akita has only one PCMCIA slot used */
> -	if (machine_is_akita())
> -		spitz_pcmcia_config.num_devs = 1;
> -
> -	platform_scoop_config = &spitz_pcmcia_config;
> -}
> -#else
> -static inline void spitz_pcmcia_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * GPIO keyboard
> - ******************************************************************************/
> -#if defined(CONFIG_KEYBOARD_MATRIX) || defined(CONFIG_KEYBOARD_MATRIX_MODULE)
> -
> -#define SPITZ_KEY_CALENDAR	KEY_F1
> -#define SPITZ_KEY_ADDRESS	KEY_F2
> -#define SPITZ_KEY_FN		KEY_F3
> -#define SPITZ_KEY_CANCEL	KEY_F4
> -#define SPITZ_KEY_EXOK		KEY_F5
> -#define SPITZ_KEY_EXCANCEL	KEY_F6
> -#define SPITZ_KEY_EXJOGDOWN	KEY_F7
> -#define SPITZ_KEY_EXJOGUP	KEY_F8
> -#define SPITZ_KEY_JAP1		KEY_LEFTALT
> -#define SPITZ_KEY_JAP2		KEY_RIGHTCTRL
> -#define SPITZ_KEY_SYNC		KEY_F9
> -#define SPITZ_KEY_MAIL		KEY_F10
> -#define SPITZ_KEY_OK		KEY_F11
> -#define SPITZ_KEY_MENU		KEY_F12
> -
> -static const uint32_t spitz_keymap[] = {
> -	KEY(0, 0, KEY_LEFTCTRL),
> -	KEY(0, 1, KEY_1),
> -	KEY(0, 2, KEY_3),
> -	KEY(0, 3, KEY_5),
> -	KEY(0, 4, KEY_6),
> -	KEY(0, 5, KEY_7),
> -	KEY(0, 6, KEY_9),
> -	KEY(0, 7, KEY_0),
> -	KEY(0, 8, KEY_BACKSPACE),
> -	KEY(0, 9, SPITZ_KEY_EXOK),	/* EXOK */
> -	KEY(0, 10, SPITZ_KEY_EXCANCEL),	/* EXCANCEL */
> -	KEY(1, 1, KEY_2),
> -	KEY(1, 2, KEY_4),
> -	KEY(1, 3, KEY_R),
> -	KEY(1, 4, KEY_Y),
> -	KEY(1, 5, KEY_8),
> -	KEY(1, 6, KEY_I),
> -	KEY(1, 7, KEY_O),
> -	KEY(1, 8, KEY_P),
> -	KEY(1, 9, SPITZ_KEY_EXJOGDOWN),	/* EXJOGDOWN */
> -	KEY(1, 10, SPITZ_KEY_EXJOGUP),	/* EXJOGUP */
> -	KEY(2, 0, KEY_TAB),
> -	KEY(2, 1, KEY_Q),
> -	KEY(2, 2, KEY_E),
> -	KEY(2, 3, KEY_T),
> -	KEY(2, 4, KEY_G),
> -	KEY(2, 5, KEY_U),
> -	KEY(2, 6, KEY_J),
> -	KEY(2, 7, KEY_K),
> -	KEY(3, 0, SPITZ_KEY_ADDRESS),	/* ADDRESS */
> -	KEY(3, 1, KEY_W),
> -	KEY(3, 2, KEY_S),
> -	KEY(3, 3, KEY_F),
> -	KEY(3, 4, KEY_V),
> -	KEY(3, 5, KEY_H),
> -	KEY(3, 6, KEY_M),
> -	KEY(3, 7, KEY_L),
> -	KEY(3, 9, KEY_RIGHTSHIFT),
> -	KEY(4, 0, SPITZ_KEY_CALENDAR),	/* CALENDAR */
> -	KEY(4, 1, KEY_A),
> -	KEY(4, 2, KEY_D),
> -	KEY(4, 3, KEY_C),
> -	KEY(4, 4, KEY_B),
> -	KEY(4, 5, KEY_N),
> -	KEY(4, 6, KEY_DOT),
> -	KEY(4, 8, KEY_ENTER),
> -	KEY(4, 9, KEY_LEFTSHIFT),
> -	KEY(5, 0, SPITZ_KEY_MAIL),	/* MAIL */
> -	KEY(5, 1, KEY_Z),
> -	KEY(5, 2, KEY_X),
> -	KEY(5, 3, KEY_MINUS),
> -	KEY(5, 4, KEY_SPACE),
> -	KEY(5, 5, KEY_COMMA),
> -	KEY(5, 7, KEY_UP),
> -	KEY(5, 10, SPITZ_KEY_FN),	/* FN */
> -	KEY(6, 0, KEY_SYSRQ),
> -	KEY(6, 1, SPITZ_KEY_JAP1),	/* JAP1 */
> -	KEY(6, 2, SPITZ_KEY_JAP2),	/* JAP2 */
> -	KEY(6, 3, SPITZ_KEY_CANCEL),	/* CANCEL */
> -	KEY(6, 4, SPITZ_KEY_OK),	/* OK */
> -	KEY(6, 5, SPITZ_KEY_MENU),	/* MENU */
> -	KEY(6, 6, KEY_LEFT),
> -	KEY(6, 7, KEY_DOWN),
> -	KEY(6, 8, KEY_RIGHT),
> -};
> -
> -static const struct software_node_ref_args spitz_mkp_row_gpios[] = {
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 12, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 17, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 91, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 34, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 36, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 38, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 39, GPIO_ACTIVE_HIGH),
> -};
> -
> -static const struct software_node_ref_args spitz_mkp_col_gpios[] = {
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 88, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 23, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 24, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 25, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 26, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 27, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 52, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 103, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 107, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 108, GPIO_ACTIVE_HIGH),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, 114, GPIO_ACTIVE_HIGH),
> -};
> -
> -static const struct property_entry spitz_mkp_properties[] = {
> -	PROPERTY_ENTRY_U32_ARRAY("linux,keymap", spitz_keymap),
> -	PROPERTY_ENTRY_REF_ARRAY("row-gpios", spitz_mkp_row_gpios),
> -	PROPERTY_ENTRY_REF_ARRAY("col-gpios", spitz_mkp_col_gpios),
> -	PROPERTY_ENTRY_U32("col-scan-delay-us", 10),
> -	PROPERTY_ENTRY_U32("debounce-delay-ms", 10),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	{ }
> -};
> -
> -static const struct platform_device_info spitz_mkp_info __initconst = {
> -	.name		= "matrix-keypad",
> -	.id		= PLATFORM_DEVID_NONE,
> -	.properties	= spitz_mkp_properties,
> -};
> -
> -
> -static void __init spitz_mkp_init(void)
> -{
> -	struct platform_device *pd;
> -	int err;
> -
> -	pd = platform_device_register_full(&spitz_mkp_info);
> -	err = PTR_ERR_OR_ZERO(pd);
> -	if (err)
> -		pr_err("failed to create keypad device: %d\n", err);
> -}
> -#else
> -static inline void spitz_mkp_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * GPIO keys
> - ******************************************************************************/
> -#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
> -static const struct software_node spitz_gpio_keys_node = {
> -	.name = "spitz-gpio-keys",
> -};
> -
> -static const struct property_entry spitz_suspend_key_props[] = {
> -	PROPERTY_ENTRY_U32("linux,input-type", EV_PWR),
> -	PROPERTY_ENTRY_U32("linux,code", KEY_SUSPEND),
> -	PROPERTY_ENTRY_GPIO("gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_ON_KEY, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_STRING("label", "On Off"),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	{ }
> -};
> -
> -static const struct software_node spitz_suspend_key_node = {
> -	.parent = &spitz_gpio_keys_node,
> -	.properties = spitz_suspend_key_props,
> -};
> -
> -static const struct property_entry spitz_sw1_props[] = {
> -	PROPERTY_ENTRY_U32("linux,input-type", EV_SW),
> -	PROPERTY_ENTRY_U32("linux,code", 0),
> -	PROPERTY_ENTRY_GPIO("gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_SWA, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_STRING("label", "Display Down"),
> -	{ }
> -};
> -
> -static const struct software_node spitz_sw1_node = {
> -	.parent = &spitz_gpio_keys_node,
> -	.properties = spitz_sw1_props,
> -};
> -
> -static const struct property_entry spitz_sw2_props[] = {
> -	PROPERTY_ENTRY_U32("linux,input-type", EV_SW),
> -	PROPERTY_ENTRY_U32("linux,code", 1),
> -	PROPERTY_ENTRY_GPIO("gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_SWB, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_STRING("label", "Lid Closed"),
> -	{ }
> -};
> -
> -static const struct software_node spitz_sw2_node = {
> -	.parent = &spitz_gpio_keys_node,
> -	.properties = spitz_sw2_props,
> -};
> -
> -static const struct software_node *spitz_gpio_keys_swnodes[] = {
> -	&spitz_gpio_keys_node,
> -	&spitz_suspend_key_node,
> -	&spitz_sw1_node,
> -	&spitz_sw2_node,
> -	NULL
> -};
> -
> -static void __init spitz_keys_init(void)
> -{
> -	struct platform_device_info keys_info = {
> -		.name	= "gpio-keys",
> -		.id	= PLATFORM_DEVID_NONE,
> -	};
> -	struct platform_device *pd;
> -	int err;
> -
> -	err = software_node_register_node_group(spitz_gpio_keys_swnodes);
> -	if (err) {
> -		pr_err("failed to register gpio-keys software nodes: %d\n", err);
> -		return;
> -	}
> -
> -	keys_info.fwnode = software_node_fwnode(&spitz_gpio_keys_node);
> -
> -	pd = platform_device_register_full(&keys_info);
> -	err = PTR_ERR_OR_ZERO(pd);
> -	if (err)
> -		pr_err("failed to create gpio-keys device: %d\n", err);
> -}
> -#else
> -static inline void spitz_keys_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * LEDs
> - ******************************************************************************/
> -#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
> -static const struct software_node spitz_gpio_leds_node = {
> -	.name = "spitz-leds",
> -};
> -
> -static const struct property_entry spitz_orange_led_props[] = {
> -	PROPERTY_ENTRY_STRING("linux,default-trigger", "sharpsl-charge"),
> -	PROPERTY_ENTRY_GPIO("gpios",
> -			    &spitz_scoop_1_gpiochip_node, 6, GPIO_ACTIVE_HIGH),
> -	{ }
> -};
> -
> -static const struct software_node spitz_orange_led_node = {
> -	.name = "spitz:amber:charge",
> -	.parent = &spitz_gpio_leds_node,
> -	.properties = spitz_orange_led_props,
> -};
> -
> -static const struct property_entry spitz_green_led_props[] = {
> -	PROPERTY_ENTRY_STRING("linux,default-trigger", "disk-activity"),
> -	PROPERTY_ENTRY_GPIO("gpios",
> -			    &spitz_scoop_1_gpiochip_node, 0, GPIO_ACTIVE_HIGH),
> -	{ }
> -};
> -
> -static const struct software_node spitz_green_led_node = {
> -	.name = "spitz:green:hddactivity",
> -	.parent = &spitz_gpio_leds_node,
> -	.properties = spitz_green_led_props,
> -};
> -
> -static const struct software_node *spitz_gpio_leds_swnodes[] = {
> -	&spitz_gpio_leds_node,
> -	&spitz_orange_led_node,
> -	&spitz_green_led_node,
> -	NULL
> -};
> -
> -static void __init spitz_leds_init(void)
> -{
> -	struct platform_device_info led_info = {
> -		.name	= "leds-gpio",
> -		.id	= PLATFORM_DEVID_NONE,
> -	};
> -	struct platform_device *led_dev;
> -	int err;
> -
> -	err = software_node_register_node_group(spitz_gpio_leds_swnodes);
> -	if (err) {
> -		pr_err("failed to register LED software nodes: %d\n", err);
> -		return;
> -	}
> -
> -	led_info.fwnode = software_node_fwnode(&spitz_gpio_leds_node);
> -
> -	led_dev = platform_device_register_full(&led_info);
> -	err = PTR_ERR_OR_ZERO(led_dev);
> -	if (err)
> -		pr_err("failed to create LED device: %d\n", err);
> -}
> -#else
> -static inline void spitz_leds_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * SSP Devices
> - ******************************************************************************/
> -#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
> -
> -static const struct property_entry spitz_ads7846_props[] = {
> -	PROPERTY_ENTRY_STRING("compatible", "ti,ads7846"),
> -	PROPERTY_ENTRY_U32("touchscreen-max-pressure", 1024),
> -	PROPERTY_ENTRY_U16("ti,x-plate-ohms", 419),
> -	PROPERTY_ENTRY_U16("ti,y-plate-ohms", 486),
> -	PROPERTY_ENTRY_U16("ti,vref-delay-usecs", 100),
> -	PROPERTY_ENTRY_GPIO("pendown-gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_TP_INT, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_GPIO("ti,hsync-gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_HSYNC, GPIO_ACTIVE_LOW),
> -	{ }
> -};
> -
> -static const struct software_node spitz_ads7846_swnode = {
> -	.name = "ads7846",
> -	.properties = spitz_ads7846_props,
> -};
> -
> -static const struct property_entry spitz_lcdcon_props[] = {
> -	PROPERTY_ENTRY_GPIO("BL_CONT-gpios",
> -			    &spitz_scoop_2_gpiochip_node, 6, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_GPIO("BL_ON-gpios",
> -			    &spitz_scoop_2_gpiochip_node, 7, GPIO_ACTIVE_HIGH),
> -	{ }
> -};
> -
> -static const struct property_entry akita_lcdcon_props[] = {
> -	PROPERTY_ENTRY_GPIO("BL_ON-gpios",
> -			    &akita_max7310_gpiochip_node, 3, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_GPIO("BL_CONT-gpios",
> -			    &akita_max7310_gpiochip_node, 4, GPIO_ACTIVE_LOW),
> -	{ }
> -};
> -
> -static struct software_node spitz_lcdcon_node = {
> -	.name = "spitz-lcdcon",
> -};
> -
> -static struct corgi_lcd_platform_data spitz_lcdcon_info = {
> -	.init_mode		= CORGI_LCD_MODE_VGA,
> -	.max_intensity		= 0x2f,
> -	.default_intensity	= 0x1f,
> -	.limit_mask		= 0x0b,
> -	.kick_battery		= sharpsl_battery_kick,
> -};
> -
> -static struct spi_board_info spitz_spi_devices[] = {
> -	{
> -		.modalias		= "ads7846",
> -		.max_speed_hz		= 1200000,
> -		.bus_num		= 2,
> -		.chip_select		= 0,
> -		.swnode			= &spitz_ads7846_swnode,
> -		.irq			= PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT),
> -	}, {
> -		.modalias		= "corgi-lcd",
> -		.max_speed_hz		= 50000,
> -		.bus_num		= 2,
> -		.chip_select		= 1,
> -		.platform_data		= &spitz_lcdcon_info,
> -		.swnode			= &spitz_lcdcon_node,
> -	}, {
> -		.modalias		= "max1111",
> -		.max_speed_hz		= 450000,
> -		.bus_num		= 2,
> -		.chip_select		= 2,
> -	},
> -};
> -
> -static const struct software_node_ref_args spitz_spi_gpio_refs[] = {
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, SPITZ_GPIO_ADS7846_CS,
> -				GPIO_ACTIVE_LOW),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, SPITZ_GPIO_LCDCON_CS,
> -				GPIO_ACTIVE_LOW),
> -	SOFTWARE_NODE_REFERENCE(&pxa2xx_gpiochip_node, SPITZ_GPIO_MAX1111_CS,
> -				GPIO_ACTIVE_LOW),
> -};
> -
> -static const struct property_entry spitz_spi_properties[] = {
> -	PROPERTY_ENTRY_REF_ARRAY("gpios", spitz_spi_gpio_refs),
> -	{ }
> -};
> -
> -static const struct platform_device_info spitz_spi_device_info = {
> -	.name = "pxa2xx-spi",
> -	/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1 */
> -	.id = 2,
> -	.properties = spitz_spi_properties,
> -};
> -
> -static void __init spitz_spi_init(void)
> -{
> -	struct platform_device *pd;
> -	int err;
> -
> -	pd = platform_device_register_full(&spitz_spi_device_info);
> -	err = PTR_ERR_OR_ZERO(pd);
> -	if (err)
> -		pr_err("pxa2xx-spi: failed to instantiate SPI controller: %d\n",
> -		       err);
> -
> -	spitz_lcdcon_node.properties = machine_is_akita() ?
> -					akita_lcdcon_props : spitz_lcdcon_props;
> -	spi_register_board_info(ARRAY_AND_SIZE(spitz_spi_devices));
> -}
> -#else
> -static inline void spitz_spi_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * SD/MMC card controller
> - ******************************************************************************/
> -#if defined(CONFIG_MMC_PXA) || defined(CONFIG_MMC_PXA_MODULE)
> -/*
> - * NOTE: The card detect interrupt isn't debounced so we delay it by 250ms to
> - * give the card a chance to fully insert/eject.
> - */
> -static int spitz_mci_setpower(struct device *dev, unsigned int vdd)
> -{
> -	struct pxamci_platform_data* p_d = dev->platform_data;
> -
> -	if ((1 << vdd) & p_d->ocr_mask)
> -		spitz_card_pwr_ctrl(SCOOP_CPR_SD_3V, SCOOP_CPR_SD_3V);
> -	else
> -		spitz_card_pwr_ctrl(SCOOP_CPR_SD_3V, 0x0);
> -
> -	return 0;
> -}
> -
> -static struct pxamci_platform_data spitz_mci_platform_data = {
> -	.detect_delay_ms	= 250,
> -	.ocr_mask		= MMC_VDD_32_33|MMC_VDD_33_34,
> -	.setpower		= spitz_mci_setpower,
> -};
> -
> -static const struct property_entry spitz_mci_props[] __initconst = {
> -	PROPERTY_ENTRY_GPIO("cd-gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_nSD_DETECT, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_GPIO("wp-gpios", &pxa2xx_gpiochip_node,
> -			    SPITZ_GPIO_nSD_WP, GPIO_ACTIVE_LOW),
> -	{ }
> -};
> -
> -static void __init spitz_mmc_init(void)
> -{
> -	pxa_set_mci_info(&spitz_mci_platform_data, spitz_mci_props);
> -}
> -#else
> -static inline void spitz_mmc_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * USB Host
> - ******************************************************************************/
> -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
> -static int spitz_ohci_init(struct device *dev)
> -{
> -	int err;
> -
> -	err = gpio_request(SPITZ_GPIO_USB_HOST, "USB_HOST");
> -	if (err)
> -		return err;
> -
> -	/* Only Port 2 is connected, setup USB Port 2 Output Control Register */
> -	UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
> -
> -	return gpio_direction_output(SPITZ_GPIO_USB_HOST, 1);
> -}
> -
> -static void spitz_ohci_exit(struct device *dev)
> -{
> -	gpio_free(SPITZ_GPIO_USB_HOST);
> -}
> -
> -static struct pxaohci_platform_data spitz_ohci_platform_data = {
> -	.port_mode	= PMM_NPS_MODE,
> -	.init		= spitz_ohci_init,
> -	.exit		= spitz_ohci_exit,
> -	.flags		= ENABLE_PORT_ALL | NO_OC_PROTECTION,
> -	.power_budget	= 150,
> -};
> -
> -static void __init spitz_uhc_init(void)
> -{
> -	pxa_set_ohci_info(&spitz_ohci_platform_data);
> -}
> -#else
> -static inline void spitz_uhc_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * Framebuffer
> - ******************************************************************************/
> -#if defined(CONFIG_FB_PXA) || defined(CONFIG_FB_PXA_MODULE)
> -static struct pxafb_mode_info spitz_pxafb_modes[] = {
> -	{
> -		.pixclock       = 19231,
> -		.xres           = 480,
> -		.yres           = 640,
> -		.bpp            = 16,
> -		.hsync_len      = 40,
> -		.left_margin    = 46,
> -		.right_margin   = 125,
> -		.vsync_len      = 3,
> -		.upper_margin   = 1,
> -		.lower_margin   = 0,
> -		.sync           = 0,
> -	}, {
> -		.pixclock       = 134617,
> -		.xres           = 240,
> -		.yres           = 320,
> -		.bpp            = 16,
> -		.hsync_len      = 20,
> -		.left_margin    = 20,
> -		.right_margin   = 46,
> -		.vsync_len      = 2,
> -		.upper_margin   = 1,
> -		.lower_margin   = 0,
> -		.sync           = 0,
> -	},
> -};
> -
> -static struct pxafb_mach_info spitz_pxafb_info = {
> -	.modes          = spitz_pxafb_modes,
> -	.num_modes      = ARRAY_SIZE(spitz_pxafb_modes),
> -	.fixed_modes    = 1,
> -	.lcd_conn	= LCD_COLOR_TFT_16BPP | LCD_ALTERNATE_MAPPING,
> -};
> -
> -static void __init spitz_lcd_init(void)
> -{
> -	pxa_set_fb_info(NULL, &spitz_pxafb_info);
> -}
> -#else
> -static inline void spitz_lcd_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * NAND Flash
> - ******************************************************************************/
> -#if defined(CONFIG_MTD_NAND_SHARPSL) || defined(CONFIG_MTD_NAND_SHARPSL_MODULE)
> -static uint8_t scan_ff_pattern[] = { 0xff, 0xff };
> -
> -static struct nand_bbt_descr spitz_nand_bbt = {
> -	.options	= 0,
> -	.offs		= 4,
> -	.len		= 2,
> -	.pattern	= scan_ff_pattern
> -};
> -
> -static int akita_ooblayout_ecc(struct mtd_info *mtd, int section,
> -			       struct mtd_oob_region *oobregion)
> -{
> -	if (section > 12)
> -		return -ERANGE;
> -
> -	switch (section % 3) {
> -	case 0:
> -		oobregion->offset = 5;
> -		oobregion->length = 1;
> -		break;
> -
> -	case 1:
> -		oobregion->offset = 1;
> -		oobregion->length = 3;
> -		break;
> -
> -	case 2:
> -		oobregion->offset = 6;
> -		oobregion->length = 2;
> -		break;
> -	}
> -
> -	oobregion->offset += (section / 3) * 0x10;
> -
> -	return 0;
> -}
> -
> -static int akita_ooblayout_free(struct mtd_info *mtd, int section,
> -				struct mtd_oob_region *oobregion)
> -{
> -	if (section)
> -		return -ERANGE;
> -
> -	oobregion->offset = 8;
> -	oobregion->length = 9;
> -
> -	return 0;
> -}
> -
> -static const struct mtd_ooblayout_ops akita_ooblayout_ops = {
> -	.ecc = akita_ooblayout_ecc,
> -	.free = akita_ooblayout_free,
> -};
> -
> -static const char * const probes[] = {
> -	"cmdlinepart",
> -	"ofpart",
> -	"sharpslpart",
> -	NULL,
> -};
> -
> -static struct sharpsl_nand_platform_data spitz_nand_pdata = {
> -	.badblock_pattern	= &spitz_nand_bbt,
> -	.part_parsers		= probes,
> -};
> -
> -static struct resource spitz_nand_resources[] = {
> -	{
> -		.start	= PXA_CS3_PHYS,
> -		.end	= PXA_CS3_PHYS + SZ_4K - 1,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -static struct platform_device spitz_nand_device = {
> -	.name		= "sharpsl-nand",
> -	.id		= -1,
> -	.resource	= spitz_nand_resources,
> -	.num_resources	= ARRAY_SIZE(spitz_nand_resources),
> -	.dev		= {
> -		.platform_data	= &spitz_nand_pdata,
> -	}
> -};
> -
> -static void __init spitz_nand_init(void)
> -{
> -	if (machine_is_akita() || machine_is_borzoi()) {
> -		spitz_nand_bbt.len = 1;
> -		spitz_nand_pdata.ecc_layout = &akita_ooblayout_ops;
> -	}
> -
> -	platform_device_register(&spitz_nand_device);
> -}
> -#else
> -static inline void spitz_nand_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * NOR Flash
> - ******************************************************************************/
> -#if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
> -static struct mtd_partition spitz_rom_parts[] = {
> -	{
> -		.name	="Boot PROM Filesystem",
> -		.offset	= 0x00140000,
> -		.size	= MTDPART_SIZ_FULL,
> -	},
> -};
> -
> -static struct physmap_flash_data spitz_rom_data = {
> -	.width		= 2,
> -	.nr_parts	= ARRAY_SIZE(spitz_rom_parts),
> -	.parts		= spitz_rom_parts,
> -};
> -
> -static struct resource spitz_rom_resources[] = {
> -	{
> -		.start	= PXA_CS0_PHYS,
> -		.end	= PXA_CS0_PHYS + SZ_8M - 1,
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -static struct platform_device spitz_rom_device = {
> -	.name		= "physmap-flash",
> -	.id		= -1,
> -	.resource	= spitz_rom_resources,
> -	.num_resources	= ARRAY_SIZE(spitz_rom_resources),
> -	.dev		= {
> -		.platform_data	= &spitz_rom_data,
> -	},
> -};
> -
> -static void __init spitz_nor_init(void)
> -{
> -	platform_device_register(&spitz_rom_device);
> -}
> -#else
> -static inline void spitz_nor_init(void) {}
> -#endif
> -
> -/******************************************************************************
> - * I2C devices
> - ******************************************************************************/
> -#if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE)
> -static struct pca953x_platform_data akita_pca953x_pdata = {
> -	.gpio_base		= AKITA_IOEXP_GPIO_BASE,
> -};
> -
> -static struct i2c_board_info spitz_i2c_devs[] = {
> -	{
> -		.type		= "wm8750",
> -		.addr		= 0x1b,
> -	}, {
> -		.type		= "max7310",
> -		.addr		= 0x18,
> -		.platform_data	= &akita_pca953x_pdata,
> -		.swnode		= &akita_max7310_gpiochip_node,
> -	},
> -};
> -
> -static struct regulator_consumer_supply isl6271a_consumers[] = {
> -	REGULATOR_SUPPLY("vcc_core", NULL),
> -};
> -
> -static struct regulator_init_data isl6271a_info[] = {
> -	{
> -		.constraints = {
> -			.name		= "vcc_core range",
> -			.min_uV		= 850000,
> -			.max_uV		= 1600000,
> -			.always_on	= 1,
> -			.valid_ops_mask	= REGULATOR_CHANGE_VOLTAGE,
> -		},
> -	.consumer_supplies	= isl6271a_consumers,
> -	.num_consumer_supplies	= ARRAY_SIZE(isl6271a_consumers),
> -	}
> -};
> -
> -static struct i2c_board_info spitz_pi2c_devs[] = {
> -	{
> -		.type		= "isl6271a",
> -		.addr		= 0x0c,
> -		.platform_data	= &isl6271a_info,
> -	},
> -};
> -
> -static void __init spitz_i2c_init(void)
> -{
> -	int size = ARRAY_SIZE(spitz_i2c_devs);
> -
> -	/* Only Akita has the max7310 chip */
> -	if (!machine_is_akita())
> -		size--;
> -
> -	pxa_set_i2c_info(NULL);
> -	pxa27x_set_i2c_power_info(NULL);
> -	i2c_register_board_info(0, spitz_i2c_devs, size);
> -	i2c_register_board_info(1, ARRAY_AND_SIZE(spitz_pi2c_devs));
> -}
> -#else
> -static inline void spitz_i2c_init(void) {}
> -#endif
> -
> -static const struct property_entry spitz_audio_props[] = {
> -	PROPERTY_ENTRY_GPIO("mute-l-gpios", &spitz_scoop_1_gpiochip_node, 3,
> -			    GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_GPIO("mute-r-gpios", &spitz_scoop_1_gpiochip_node, 4,
> -			    GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_GPIO("mic-gpios", &spitz_scoop_2_gpiochip_node, 8,
> -			    GPIO_ACTIVE_HIGH),
> -	{ }
> -};
> -
> -static const struct property_entry akita_audio_props[] = {
> -	PROPERTY_ENTRY_GPIO("mute-l-gpios", &spitz_scoop_1_gpiochip_node, 3,
> -			    GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_GPIO("mute-r-gpios", &spitz_scoop_1_gpiochip_node, 4,
> -			    GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_GPIO("mic-gpios", &akita_max7310_gpiochip_node, 2,
> -			    GPIO_ACTIVE_HIGH),
> -	{ }
> -};
> -
> -/******************************************************************************
> - * Audio devices
> - ******************************************************************************/
> -static inline void spitz_audio_init(void)
> -{
> -	struct platform_device_info audio_info = {
> -		.name = "spitz-audio",
> -		.id = PLATFORM_DEVID_NONE,
> -		.properties = machine_is_akita() ?
> -				akita_audio_props : spitz_audio_props,
> -	};
> -
> -	platform_device_register_full(&audio_info);
> -}
> -
> -/******************************************************************************
> - * Machine init
> - ******************************************************************************/
> -static void spitz_poweroff(void)
> -{
> -	pxa_restart(REBOOT_GPIO, NULL);
> -}
> -
> -static void spitz_restart(enum reboot_mode mode, const char *cmd)
> -{
> -	uint32_t msc0 = __raw_readl(MSC0);
> -	/* Bootloader magic for a reboot */
> -	if ((msc0 & 0xffff0000) == 0x7ff00000)
> -		__raw_writel((msc0 & 0xffff) | 0x7ee00000, MSC0);
> -
> -	spitz_poweroff();
> -}
> -
> -static void __init spitz_init(void)
> -{
> -	software_node_register(&spitz_scoop_1_gpiochip_node);
> -	if (machine_is_akita())
> -		software_node_register(&akita_max7310_gpiochip_node);
> -	else
> -		software_node_register(&spitz_scoop_2_gpiochip_node);
> -
> -	init_gpio_reset(SPITZ_GPIO_ON_RESET, 1, 0);
> -	register_platform_power_off(spitz_poweroff);
> -
> -	PMCR = 0x00;
> -
> -	/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
> -	PCFR |= PCFR_OPDE;
> -
> -	pxa2xx_mfp_config(ARRAY_AND_SIZE(spitz_pin_config));
> -
> -	pxa_set_ffuart_info(NULL);
> -	pxa_set_btuart_info(NULL);
> -	pxa_set_stuart_info(NULL);
> -
> -	spitz_spi_init();
> -	spitz_scoop_init();
> -	spitz_mkp_init();
> -	spitz_keys_init();
> -	spitz_leds_init();
> -	spitz_mmc_init();
> -	spitz_pcmcia_init();
> -	spitz_uhc_init();
> -	spitz_lcd_init();
> -	spitz_nor_init();
> -	spitz_nand_init();
> -	spitz_i2c_init();
> -	spitz_audio_init();
> -
> -	regulator_has_full_constraints();
> -}
> -
> -static void __init spitz_fixup(struct tag *tags, char **cmdline)
> -{
> -	sharpsl_save_param();
> -	memblock_add(0xa0000000, SZ_64M);
> -}
> -
> -#ifdef CONFIG_MACH_SPITZ
> -MACHINE_START(SPITZ, "SHARP Spitz")
> -	.fixup		= spitz_fixup,
> -	.map_io		= pxa27x_map_io,
> -	.nr_irqs	= PXA_NR_IRQS,
> -	.init_irq	= pxa27x_init_irq,
> -	.init_machine	= spitz_init,
> -	.init_time	= pxa_timer_init,
> -	.restart	= spitz_restart,
> -MACHINE_END
> -#endif
> -
> -#ifdef CONFIG_MACH_BORZOI
> -MACHINE_START(BORZOI, "SHARP Borzoi")
> -	.fixup		= spitz_fixup,
> -	.map_io		= pxa27x_map_io,
> -	.nr_irqs	= PXA_NR_IRQS,
> -	.init_irq	= pxa27x_init_irq,
> -	.init_machine	= spitz_init,
> -	.init_time	= pxa_timer_init,
> -	.restart	= spitz_restart,
> -MACHINE_END
> -#endif
> -
> -#ifdef CONFIG_MACH_AKITA
> -MACHINE_START(AKITA, "SHARP Akita")
> -	.fixup		= spitz_fixup,
> -	.map_io		= pxa27x_map_io,
> -	.nr_irqs	= PXA_NR_IRQS,
> -	.init_irq	= pxa27x_init_irq,
> -	.init_machine	= spitz_init,
> -	.init_time	= pxa_timer_init,
> -	.restart	= spitz_restart,
> -MACHINE_END
> -#endif
> diff --git a/arch/arm/mach-pxa/spitz.h b/arch/arm/mach-pxa/spitz.h
> deleted file mode 100644
> index 04828d8918aa..000000000000
> --- a/arch/arm/mach-pxa/spitz.h
> +++ /dev/null
> @@ -1,185 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Hardware specific definitions for SL-Cx000 series of PDAs
> - *
> - * Copyright (c) 2005 Alexander Wykes
> - * Copyright (c) 2005 Richard Purdie
> - *
> - * Based on Sharp's 2.4 kernel patches
> - */
> -#ifndef __ASM_ARCH_SPITZ_H
> -#define __ASM_ARCH_SPITZ_H  1
> -#endif
> -
> -#include "irqs.h" /* PXA_NR_BUILTIN_GPIO, PXA_GPIO_TO_IRQ */
> -#include <linux/fb.h>
> -
> -/* Spitz/Akita GPIOs */
> -
> -#define SPITZ_GPIO_KEY_INT         (0) /* Key Interrupt */
> -#define SPITZ_GPIO_RESET           (1)
> -#define SPITZ_GPIO_nSD_DETECT      (9)
> -#define SPITZ_GPIO_TP_INT          (11) /* Touch Panel interrupt */
> -#define SPITZ_GPIO_AK_INT          (13) /* Remote Control */
> -#define SPITZ_GPIO_ADS7846_CS      (14)
> -#define SPITZ_GPIO_SYNC            (16)
> -#define SPITZ_GPIO_MAX1111_CS      (20)
> -#define SPITZ_GPIO_FATAL_BAT       (21)
> -#define SPITZ_GPIO_HSYNC           (22)
> -#define SPITZ_GPIO_nSD_CLK         (32)
> -#define SPITZ_GPIO_USB_DEVICE      (35)
> -#define SPITZ_GPIO_USB_HOST        (37)
> -#define SPITZ_GPIO_USB_CONNECT     (41)
> -#define SPITZ_GPIO_LCDCON_CS       (53)
> -#define SPITZ_GPIO_nPCE            (54)
> -#define SPITZ_GPIO_nSD_WP          (81)
> -#define SPITZ_GPIO_ON_RESET        (89)
> -#define SPITZ_GPIO_BAT_COVER       (90)
> -#define SPITZ_GPIO_CF_CD           (94)
> -#define SPITZ_GPIO_ON_KEY          (95)
> -#define SPITZ_GPIO_SWA             (97)
> -#define SPITZ_GPIO_SWB             (96)
> -#define SPITZ_GPIO_CHRG_FULL       (101)
> -#define SPITZ_GPIO_CO              (101)
> -#define SPITZ_GPIO_CF_IRQ          (105)
> -#define SPITZ_GPIO_AC_IN           (115)
> -#define SPITZ_GPIO_HP_IN           (116)
> -
> -/* Spitz Only GPIOs */
> -
> -#define SPITZ_GPIO_CF2_IRQ         (106) /* CF slot1 Ready */
> -#define SPITZ_GPIO_CF2_CD          (93)
> -
> -
> -/* Spitz/Akita Keyboard Definitions */
> -
> -#define SPITZ_KEY_STROBE_NUM         (11)
> -#define SPITZ_KEY_SENSE_NUM          (7)
> -#define SPITZ_GPIO_G0_STROBE_BIT     0x0f800000
> -#define SPITZ_GPIO_G1_STROBE_BIT     0x00100000
> -#define SPITZ_GPIO_G2_STROBE_BIT     0x01000000
> -#define SPITZ_GPIO_G3_STROBE_BIT     0x00041880
> -#define SPITZ_GPIO_G0_SENSE_BIT      0x00021000
> -#define SPITZ_GPIO_G1_SENSE_BIT      0x000000d4
> -#define SPITZ_GPIO_G2_SENSE_BIT      0x08000000
> -#define SPITZ_GPIO_G3_SENSE_BIT      0x00000000
> -
> -#define SPITZ_GPIO_KEY_STROBE0       88
> -#define SPITZ_GPIO_KEY_STROBE1       23
> -#define SPITZ_GPIO_KEY_STROBE2       24
> -#define SPITZ_GPIO_KEY_STROBE3       25
> -#define SPITZ_GPIO_KEY_STROBE4       26
> -#define SPITZ_GPIO_KEY_STROBE5       27
> -#define SPITZ_GPIO_KEY_STROBE6       52
> -#define SPITZ_GPIO_KEY_STROBE7       103
> -#define SPITZ_GPIO_KEY_STROBE8       107
> -#define SPITZ_GPIO_KEY_STROBE9       108
> -#define SPITZ_GPIO_KEY_STROBE10      114
> -
> -#define SPITZ_GPIO_KEY_SENSE0        12
> -#define SPITZ_GPIO_KEY_SENSE1        17
> -#define SPITZ_GPIO_KEY_SENSE2        91
> -#define SPITZ_GPIO_KEY_SENSE3        34
> -#define SPITZ_GPIO_KEY_SENSE4        36
> -#define SPITZ_GPIO_KEY_SENSE5        38
> -#define SPITZ_GPIO_KEY_SENSE6        39
> -
> -
> -/* Spitz Scoop Device (No. 1) GPIOs */
> -/* Suspend States in comments */
> -#define SPITZ_SCP_LED_GREEN     SCOOP_GPCR_PA11  /* Keep */
> -#define SPITZ_SCP_JK_B          SCOOP_GPCR_PA12  /* Keep */
> -#define SPITZ_SCP_CHRG_ON       SCOOP_GPCR_PA13  /* Keep */
> -#define SPITZ_SCP_MUTE_L        SCOOP_GPCR_PA14  /* Low */
> -#define SPITZ_SCP_MUTE_R        SCOOP_GPCR_PA15  /* Low */
> -#define SPITZ_SCP_CF_POWER      SCOOP_GPCR_PA16  /* Keep */
> -#define SPITZ_SCP_LED_ORANGE    SCOOP_GPCR_PA17  /* Keep */
> -#define SPITZ_SCP_JK_A          SCOOP_GPCR_PA18  /* Low */
> -#define SPITZ_SCP_ADC_TEMP_ON   SCOOP_GPCR_PA19  /* Low */
> -
> -#define SPITZ_SCP_IO_DIR      (SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \
> -                               SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | \
> -                               SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
> -#define SPITZ_SCP_IO_OUT      (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R)
> -#define SPITZ_SCP_SUS_CLR     (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
> -#define SPITZ_SCP_SUS_SET     0
> -
> -#define SPITZ_SCP_GPIO_BASE	(PXA_NR_BUILTIN_GPIO)
> -#define SPITZ_GPIO_LED_GREEN	(SPITZ_SCP_GPIO_BASE + 0)
> -#define SPITZ_GPIO_JK_B		(SPITZ_SCP_GPIO_BASE + 1)
> -#define SPITZ_GPIO_CHRG_ON	(SPITZ_SCP_GPIO_BASE + 2)
> -#define SPITZ_GPIO_MUTE_L	(SPITZ_SCP_GPIO_BASE + 3)
> -#define SPITZ_GPIO_MUTE_R	(SPITZ_SCP_GPIO_BASE + 4)
> -#define SPITZ_GPIO_CF_POWER	(SPITZ_SCP_GPIO_BASE + 5)
> -#define SPITZ_GPIO_LED_ORANGE	(SPITZ_SCP_GPIO_BASE + 6)
> -#define SPITZ_GPIO_JK_A		(SPITZ_SCP_GPIO_BASE + 7)
> -#define SPITZ_GPIO_ADC_TEMP_ON	(SPITZ_SCP_GPIO_BASE + 8)
> -
> -/* Spitz Scoop Device (No. 2) GPIOs */
> -/* Suspend States in comments */
> -#define SPITZ_SCP2_IR_ON           SCOOP_GPCR_PA11  /* High */
> -#define SPITZ_SCP2_AKIN_PULLUP     SCOOP_GPCR_PA12  /* Keep */
> -#define SPITZ_SCP2_RESERVED_1      SCOOP_GPCR_PA13  /* High */
> -#define SPITZ_SCP2_RESERVED_2      SCOOP_GPCR_PA14  /* Low */
> -#define SPITZ_SCP2_RESERVED_3      SCOOP_GPCR_PA15  /* Low */
> -#define SPITZ_SCP2_RESERVED_4      SCOOP_GPCR_PA16  /* Low */
> -#define SPITZ_SCP2_BACKLIGHT_CONT  SCOOP_GPCR_PA17  /* Low */
> -#define SPITZ_SCP2_BACKLIGHT_ON    SCOOP_GPCR_PA18  /* Low */
> -#define SPITZ_SCP2_MIC_BIAS        SCOOP_GPCR_PA19  /* Low */
> -
> -#define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \
> -                           SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
> -                           SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
> -
> -#define SPITZ_SCP2_IO_OUT   (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1)
> -#define SPITZ_SCP2_SUS_CLR  (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
> -                             SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
> -#define SPITZ_SCP2_SUS_SET  (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1)
> -
> -#define SPITZ_SCP2_GPIO_BASE		(PXA_NR_BUILTIN_GPIO + 12)
> -#define SPITZ_GPIO_IR_ON		(SPITZ_SCP2_GPIO_BASE + 0)
> -#define SPITZ_GPIO_AKIN_PULLUP		(SPITZ_SCP2_GPIO_BASE + 1)
> -#define SPITZ_GPIO_RESERVED_1		(SPITZ_SCP2_GPIO_BASE + 2)
> -#define SPITZ_GPIO_RESERVED_2		(SPITZ_SCP2_GPIO_BASE + 3)
> -#define SPITZ_GPIO_RESERVED_3		(SPITZ_SCP2_GPIO_BASE + 4)
> -#define SPITZ_GPIO_RESERVED_4		(SPITZ_SCP2_GPIO_BASE + 5)
> -#define SPITZ_GPIO_BACKLIGHT_CONT	(SPITZ_SCP2_GPIO_BASE + 6)
> -#define SPITZ_GPIO_BACKLIGHT_ON		(SPITZ_SCP2_GPIO_BASE + 7)
> -#define SPITZ_GPIO_MIC_BIAS		(SPITZ_SCP2_GPIO_BASE + 8)
> -
> -/* Akita IO Expander GPIOs */
> -#define AKITA_IOEXP_GPIO_BASE		(PXA_NR_BUILTIN_GPIO + 12)
> -#define AKITA_GPIO_RESERVED_0		(AKITA_IOEXP_GPIO_BASE + 0)
> -#define AKITA_GPIO_RESERVED_1		(AKITA_IOEXP_GPIO_BASE + 1)
> -#define AKITA_GPIO_MIC_BIAS		(AKITA_IOEXP_GPIO_BASE + 2)
> -#define AKITA_GPIO_BACKLIGHT_ON		(AKITA_IOEXP_GPIO_BASE + 3)
> -#define AKITA_GPIO_BACKLIGHT_CONT	(AKITA_IOEXP_GPIO_BASE + 4)
> -#define AKITA_GPIO_AKIN_PULLUP		(AKITA_IOEXP_GPIO_BASE + 5)
> -#define AKITA_GPIO_IR_ON		(AKITA_IOEXP_GPIO_BASE + 6)
> -#define AKITA_GPIO_RESERVED_7		(AKITA_IOEXP_GPIO_BASE + 7)
> -
> -/* Spitz IRQ Definitions */
> -
> -#define SPITZ_IRQ_GPIO_KEY_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_KEY_INT)
> -#define SPITZ_IRQ_GPIO_AC_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_AC_IN)
> -#define SPITZ_IRQ_GPIO_AK_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_AK_INT)
> -#define SPITZ_IRQ_GPIO_HP_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_HP_IN)
> -#define SPITZ_IRQ_GPIO_TP_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT)
> -#define SPITZ_IRQ_GPIO_SYNC           PXA_GPIO_TO_IRQ(SPITZ_GPIO_SYNC)
> -#define SPITZ_IRQ_GPIO_ON_KEY         PXA_GPIO_TO_IRQ(SPITZ_GPIO_ON_KEY)
> -#define SPITZ_IRQ_GPIO_SWA            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWA)
> -#define SPITZ_IRQ_GPIO_SWB            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWB)
> -#define SPITZ_IRQ_GPIO_BAT_COVER      PXA_GPIO_TO_IRQ(SPITZ_GPIO_BAT_COVER)
> -#define SPITZ_IRQ_GPIO_FATAL_BAT      PXA_GPIO_TO_IRQ(SPITZ_GPIO_FATAL_BAT)
> -#define SPITZ_IRQ_GPIO_CO             PXA_GPIO_TO_IRQ(SPITZ_GPIO_CO)
> -#define SPITZ_IRQ_GPIO_CF_IRQ         PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_IRQ)
> -#define SPITZ_IRQ_GPIO_CF_CD          PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_CD)
> -#define SPITZ_IRQ_GPIO_CF2_IRQ        PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF2_IRQ)
> -#define SPITZ_IRQ_GPIO_nSD_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_INT)
> -#define SPITZ_IRQ_GPIO_nSD_DETECT     PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_DETECT)
> -
> -/*
> - * Shared data structures
> - */
> -extern struct platform_device spitzssp_device;
> -extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
> diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c
> deleted file mode 100644
> index 806847c36549..000000000000
> --- a/arch/arm/mach-pxa/spitz_pm.c
> +++ /dev/null
> @@ -1,257 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Battery and Power Management code for the Sharp SL-Cxx00
> - *
> - * Copyright (c) 2005 Richard Purdie
> - */
> -
> -#include <linux/module.h>
> -#include <linux/stat.h>
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/delay.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio-pxa.h>
> -#include <linux/interrupt.h>
> -#include <linux/platform_device.h>
> -#include <linux/apm-emulation.h>
> -#include <linux/spi/corgi_lcd.h>
> -
> -#include <asm/irq.h>
> -#include <asm/mach-types.h>
> -
> -#include "spitz.h"
> -#include "pxa27x.h"
> -#include "sharpsl_pm.h"
> -
> -#include "generic.h"
> -
> -#define SHARPSL_CHARGE_ON_VOLT         0x99  /* 2.9V */
> -#define SHARPSL_CHARGE_ON_TEMP         0xe0  /* 2.9V */
> -#define SHARPSL_CHARGE_ON_ACIN_HIGH    0x9b  /* 6V */
> -#define SHARPSL_CHARGE_ON_ACIN_LOW     0x34  /* 2V */
> -#define SHARPSL_FATAL_ACIN_VOLT        182   /* 3.45V */
> -#define SHARPSL_FATAL_NOACIN_VOLT      170   /* 3.40V */
> -
> -static int spitz_last_ac_status;
> -
> -static void spitz_charger_init(void)
> -{
> -	gpio_request(SPITZ_GPIO_KEY_INT, "Keyboard Interrupt");
> -	gpio_direction_input(SPITZ_GPIO_KEY_INT);
> -	gpio_request(SPITZ_GPIO_SYNC, "Sync");
> -	gpio_direction_input(SPITZ_GPIO_SYNC);
> -	gpio_request(SPITZ_GPIO_AC_IN, "Charger Detection");
> -	gpio_direction_input(SPITZ_GPIO_AC_IN);
> -	gpio_request(SPITZ_GPIO_ADC_TEMP_ON, "ADC Temp On");
> -	gpio_direction_output(SPITZ_GPIO_ADC_TEMP_ON, 0);
> -	gpio_request(SPITZ_GPIO_JK_B, "JK B");
> -	gpio_direction_output(SPITZ_GPIO_JK_B, 0);
> -	gpio_request(SPITZ_GPIO_CHRG_ON, "Charger On");
> -	gpio_direction_output(SPITZ_GPIO_CHRG_ON, 0);
> -}
> -
> -static void spitz_measure_temp(int on)
> -{
> -	gpio_set_value(SPITZ_GPIO_ADC_TEMP_ON, on);
> -}
> -
> -static void spitz_charge(int on)
> -{
> -	if (on) {
> -		if (sharpsl_pm.flags & SHARPSL_SUSPENDED) {
> -			gpio_set_value(SPITZ_GPIO_JK_B, 1);
> -			gpio_set_value(SPITZ_GPIO_CHRG_ON, 0);
> -		} else {
> -			gpio_set_value(SPITZ_GPIO_JK_B, 0);
> -			gpio_set_value(SPITZ_GPIO_CHRG_ON, 0);
> -		}
> -	} else {
> -		gpio_set_value(SPITZ_GPIO_JK_B, 0);
> -		gpio_set_value(SPITZ_GPIO_CHRG_ON, 1);
> -	}
> -}
> -
> -static void spitz_discharge(int on)
> -{
> -	gpio_set_value(SPITZ_GPIO_JK_A, on);
> -}
> -
> -/* HACK - For unknown reasons, accurate voltage readings are only made with a load
> -   on the power bus which the green led on spitz provides */
> -static void spitz_discharge1(int on)
> -{
> -	gpio_set_value(SPITZ_GPIO_LED_GREEN, on);
> -}
> -
> -static unsigned long gpio18_config = GPIO18_GPIO;
> -
> -static void spitz_presuspend(void)
> -{
> -	spitz_last_ac_status = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
> -
> -	/* GPIO Sleep Register */
> -	PGSR0 = 0x00144018;
> -	PGSR1 = 0x00EF0000;
> -	if (machine_is_akita()) {
> -		PGSR2 = 0x2121C000;
> -		PGSR3 = 0x00600400;
> -	} else {
> -		PGSR2 = 0x0121C000;
> -		PGSR3 = 0x00600000;
> -	}
> -
> -	PGSR0 &= ~SPITZ_GPIO_G0_STROBE_BIT;
> -	PGSR1 &= ~SPITZ_GPIO_G1_STROBE_BIT;
> -	PGSR2 &= ~SPITZ_GPIO_G2_STROBE_BIT;
> -	PGSR3 &= ~SPITZ_GPIO_G3_STROBE_BIT;
> -	PGSR2 |= GPIO_bit(SPITZ_GPIO_KEY_STROBE0);
> -
> -	pxa2xx_mfp_config(&gpio18_config, 1);
> -	gpio_request_one(18, GPIOF_OUT_INIT_HIGH, "Unknown");
> -	gpio_free(18);
> -
> -	PRER = GPIO_bit(SPITZ_GPIO_KEY_INT);
> -	PFER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
> -	PWER = GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET) | PWER_RTC;
> -	PKWR = GPIO_bit(SPITZ_GPIO_SYNC) | GPIO_bit(SPITZ_GPIO_KEY_INT) | GPIO_bit(SPITZ_GPIO_RESET);
> -	PKSR = 0xffffffff; /* clear */
> -
> -	/* nRESET_OUT Disable */
> -	PSLR |= PSLR_SL_ROD;
> -
> -	/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
> -	PCFR = PCFR_GPR_EN | PCFR_OPDE;
> -}
> -
> -static void spitz_postsuspend(void)
> -{
> -}
> -
> -static int spitz_should_wakeup(unsigned int resume_on_alarm)
> -{
> -	int is_resume = 0;
> -	int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
> -
> -	if (spitz_last_ac_status != acin) {
> -		if (acin) {
> -			/* charge on */
> -			sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG;
> -			dev_dbg(sharpsl_pm.dev, "AC Inserted\n");
> -		} else {
> -			/* charge off */
> -			dev_dbg(sharpsl_pm.dev, "AC Removed\n");
> -			sharpsl_pm_led(SHARPSL_LED_OFF);
> -			sharpsl_pm.machinfo->charge(0);
> -			sharpsl_pm.charge_mode = CHRG_OFF;
> -		}
> -		spitz_last_ac_status = acin;
> -		/* Return to suspend as this must be what we were woken for */
> -		return 0;
> -	}
> -
> -	if (PEDR & GPIO_bit(SPITZ_GPIO_KEY_INT))
> -		is_resume |= GPIO_bit(SPITZ_GPIO_KEY_INT);
> -
> -	if (PKSR & GPIO_bit(SPITZ_GPIO_SYNC))
> -		is_resume |= GPIO_bit(SPITZ_GPIO_SYNC);
> -
> -	if (resume_on_alarm && (PEDR & PWER_RTC))
> -		is_resume |= PWER_RTC;
> -
> -	dev_dbg(sharpsl_pm.dev, "is_resume: %x\n", is_resume);
> -	return is_resume;
> -}
> -
> -static bool spitz_charger_wakeup(void)
> -{
> -	return !gpio_get_value(SPITZ_GPIO_KEY_INT) ||
> -		gpio_get_value(SPITZ_GPIO_SYNC);
> -}
> -
> -static unsigned long spitzpm_read_devdata(int type)
> -{
> -	switch (type) {
> -	case SHARPSL_STATUS_ACIN:
> -		return !gpio_get_value(SPITZ_GPIO_AC_IN);
> -	case SHARPSL_STATUS_LOCK:
> -		return gpio_get_value(sharpsl_pm.machinfo->gpio_batlock);
> -	case SHARPSL_STATUS_CHRGFULL:
> -		return gpio_get_value(sharpsl_pm.machinfo->gpio_batfull);
> -	case SHARPSL_STATUS_FATAL:
> -		return gpio_get_value(sharpsl_pm.machinfo->gpio_fatal);
> -	case SHARPSL_ACIN_VOLT:
> -		return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT);
> -	case SHARPSL_BATT_TEMP:
> -		return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP);
> -	case SHARPSL_BATT_VOLT:
> -	default:
> -		return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT);
> -	}
> -}
> -
> -struct sharpsl_charger_machinfo spitz_pm_machinfo = {
> -	.init             = spitz_charger_init,
> -	.exit             = NULL,
> -	.gpio_batlock     = SPITZ_GPIO_BAT_COVER,
> -	.gpio_acin        = SPITZ_GPIO_AC_IN,
> -	.gpio_batfull     = SPITZ_GPIO_CHRG_FULL,
> -	.batfull_irq	  = 1,
> -	.gpio_fatal       = SPITZ_GPIO_FATAL_BAT,
> -	.discharge        = spitz_discharge,
> -	.discharge1       = spitz_discharge1,
> -	.charge           = spitz_charge,
> -	.measure_temp     = spitz_measure_temp,
> -	.presuspend       = spitz_presuspend,
> -	.postsuspend      = spitz_postsuspend,
> -	.read_devdata     = spitzpm_read_devdata,
> -	.charger_wakeup   = spitz_charger_wakeup,
> -	.should_wakeup    = spitz_should_wakeup,
> -#if defined(CONFIG_LCD_CORGI)
> -	.backlight_limit = corgi_lcd_limit_intensity,
> -#endif
> -	.charge_on_volt	  = SHARPSL_CHARGE_ON_VOLT,
> -	.charge_on_temp	  = SHARPSL_CHARGE_ON_TEMP,
> -	.charge_acin_high = SHARPSL_CHARGE_ON_ACIN_HIGH,
> -	.charge_acin_low  = SHARPSL_CHARGE_ON_ACIN_LOW,
> -	.fatal_acin_volt  = SHARPSL_FATAL_ACIN_VOLT,
> -	.fatal_noacin_volt= SHARPSL_FATAL_NOACIN_VOLT,
> -	.bat_levels       = 40,
> -	.bat_levels_noac  = sharpsl_battery_levels_noac,
> -	.bat_levels_acin  = sharpsl_battery_levels_acin,
> -	.status_high_acin = 188,
> -	.status_low_acin  = 178,
> -	.status_high_noac = 185,
> -	.status_low_noac  = 175,
> -};
> -
> -static struct platform_device *spitzpm_device;
> -
> -static int spitzpm_init(void)
> -{
> -	int ret;
> -
> -	if (!machine_is_spitz() && !machine_is_akita()
> -			&& !machine_is_borzoi())
> -		return -ENODEV;
> -
> -	spitzpm_device = platform_device_alloc("sharpsl-pm", -1);
> -	if (!spitzpm_device)
> -		return -ENOMEM;
> -
> -	spitzpm_device->dev.platform_data = &spitz_pm_machinfo;
> -	ret = platform_device_add(spitzpm_device);
> -
> -	if (ret)
> -		platform_device_put(spitzpm_device);
> -
> -	return ret;
> -}
> -
> -static void spitzpm_exit(void)
> -{
> -	platform_device_unregister(spitzpm_device);
> -}
> -
> -module_init(spitzpm_init);
> -module_exit(spitzpm_exit);


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 00/13] ARM: deprecated platform removal
  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
  1 sibling, 1 reply; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 18:33 UTC (permalink / raw)
  To: Randy Dunlap, Arnd Bergmann, Krzysztof Kozlowski,
	Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Rob Herring, Conor Dooley, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	A. Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP

On Tue, Sep 8, 2026, at 18:53, Randy Dunlap wrote:
>
> If netwinder is going away, can all of
> Documentation/arch/arm/nwfpe/ also go away?
>
> Or do all of these come later (in phase 2 or 3)?

nwfpe is used on all OABI platforms, not just netwinder, so
the patch to remove that comes in the next series after removing
OABI. See

https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/commit/?id=ff375183fe225b79de700f004181405ff6a739cc

for the draft patch.

      Arnd

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 00/13] ARM: deprecated platform removal
  2026-09-08 18:33   ` Arnd Bergmann
@ 2026-09-08 18:39     ` Randy Dunlap
  0 siblings, 0 replies; 70+ messages in thread
From: Randy Dunlap @ 2026-09-08 18:39 UTC (permalink / raw)
  To: Arnd Bergmann, Arnd Bergmann, Krzysztof Kozlowski,
	Alexandre Belloni, Linus Walleij, Russell King
  Cc: Drew Fustini, Rob Herring, Conor Dooley, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	A. Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP



On 9/8/26 11:33 AM, Arnd Bergmann wrote:
> On Tue, Sep 8, 2026, at 18:53, Randy Dunlap wrote:
>>
>> If netwinder is going away, can all of
>> Documentation/arch/arm/nwfpe/ also go away?
>>
>> Or do all of these come later (in phase 2 or 3)?
> 
> nwfpe is used on all OABI platforms, not just netwinder, so
> the patch to remove that comes in the next series after removing
> OABI. See
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/commit/?id=ff375183fe225b79de700f004181405ff6a739cc
> 
> for the draft patch.

Got it. Thanks.

-- 
~Randy


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 06/13] ARM: omap2: remove omap24xx support
  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
  3 siblings, 1 reply; 70+ messages in thread
From: Karl Mehltretter @ 2026-09-08 19:21 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Paul Walmsley,
	Herbert Xu, David S. Miller, Mauro Carvalho Chehab,
	Kyungmin Park, Helge Deller, Tero Kristo, Stephen Boyd,
	Thomas Zimmermann, linux-media, linux-mtd, linux-fbdev,
	dri-devel, linux-clk

On Tue, Sep 08, 2026 at 05:27:56PM +0100, Arnd Bergmann wrote:
>  86 files changed, 60 insertions(+), 10696 deletions(-)

Note that Sashiko skipped reviewing this patch, because it exceeded
its current 10000 line limit.

> -CONFIG_ARCH_MULTI_V6=y
>  CONFIG_OMAP_RESET_CLOCKS=y
> -CONFIG_ARCH_OMAP2=y

With CONFIG_ARCH_MULTI_V6 gone, CONFIG_ARM_ERRATA_411920=y a few lines
down can be deleted (savedefconfig drops it)

> diff --git a/arch/arm/mach-omap2/gpmc.h b/arch/arm/mach-omap2/gpmc.h
> deleted file mode 100644

perl scripts/get_maintainer.pl --self-test=patterns now warns:
  ./MAINTAINERS:19896: warning: no file matches	F:	arch/arm/mach-omap2/*gpmc*

> @@ -560,13 +533,11 @@ void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
>  	 * We still need this for omap2420 and omap3 PM to work, others are

Stale comment about omap2420

> diff --git a/arch/arm/mach-omap2/voltagedomains2xxx_data.c b/arch/arm/mach-omap2/voltagedomains2xxx_data.c
> deleted file mode 100644
> [...]
> -void __init omap2xxx_voltagedomains_init(void)

The declaration for this is still in voltage.h.

Thanks,
Karl

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  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
  3 siblings, 1 reply; 70+ messages in thread
From: Karl Mehltretter @ 2026-09-08 19:39 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Guenter Roeck

On Tue, Sep 08, 2026 at 05:27:51PM +0100, Arnd Bergmann wrote:
>  62 files changed, 19 insertions(+), 10501 deletions(-)

Note that Sashiko skipped reviewing this patch, because it exceeded
its current 10000 line limit.

> diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
> @@ -275,18 +275,10 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
> -	if (IS_ENABLED(CONFIG_ARCH_SA1100) ||
> -	    of_device_is_compatible(pdev->dev.of_node, "mrvl,sa1100-rtc")) {
> -		info->rcnr = base + 0x04;
> -		info->rtsr = base + 0x10;
> -		info->rtar = base + 0x00;
> -		info->rttr = base + 0x08;
> -	} else {
> -		info->rcnr = base + 0x0;
> -		info->rtsr = base + 0x8;
> -		info->rtar = base + 0x4;
> -		info->rttr = base + 0xc;
> -	}
> +	info->rcnr = base + 0x0;
> +	info->rtsr = base + 0x8;
> +	info->rtar = base + 0x4;
> +	info->rttr = base + 0xc;

This drops the layout switch but keeps "mrvl,sa1100-rtc" in
sa1100_rtc_dt_ids[] and in bindings/rtc/sa1100-rtc.yaml, so a DT with
that compatible would now silently get the MMP register offsets instead
of the SA1100 ones.

> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> @@ -614,16 +614,16 @@ config S3C2410_WATCHDOG
>  	  be called s3c2410_wdt.
>  
>  config SA1100_WATCHDOG
> -	tristate "SA1100/PXA2xx watchdog"
> -	depends on ARCH_SA1100 || ARCH_PXA || COMPILE_TEST
> +	tristate "PXA2xx watchdog"
> +	depends on ARCH_PXA || COMPILE_TEST
>  	help
> -	  Watchdog timer embedded into SA11x0 and PXA2xx chips. This will
> -	  reboot your system when timeout is reached.
> +	  Watchdog timer embedded PXA2xx chips. This will reboot your
> +	  system when timeout is reached.
>  

"embedded into PXA2xx chips" is better.

The RTC_DRV_SA1100 help text a bit earlier in the patch also still says
"built into your SA11x0 or PXA2xx CPU".

Thanks,
Karl

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 06/13] ARM: omap2: remove omap24xx support
  2026-09-08 19:21   ` Karl Mehltretter
@ 2026-09-08 19:42     ` Arnd Bergmann
  0 siblings, 0 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 19:42 UTC (permalink / raw)
  To: Karl Mehltretter, Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, A. Sverdlin, Shawn Guo,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP, Paul Walmsley,
	Herbert Xu, David S . Miller, Mauro Carvalho Chehab,
	Kyungmin Park, Helge Deller, Tero Kristo, Stephen Boyd,
	Thomas Zimmermann, linux-media, linux-mtd, linux-fbdev,
	dri-devel, linux-clk

On Tue, Sep 8, 2026, at 21:21, Karl Mehltretter wrote:
> On Tue, Sep 08, 2026 at 05:27:56PM +0100, Arnd Bergmann wrote:
>>  86 files changed, 60 insertions(+), 10696 deletions(-)
>
>> -CONFIG_ARCH_MULTI_V6=y
>>  CONFIG_OMAP_RESET_CLOCKS=y
>> -CONFIG_ARCH_OMAP2=y
>
> With CONFIG_ARCH_MULTI_V6 gone, CONFIG_ARM_ERRATA_411920=y a few lines
> down can be deleted (savedefconfig drops it)

fixed now

>> diff --git a/arch/arm/mach-omap2/gpmc.h b/arch/arm/mach-omap2/gpmc.h
>> deleted file mode 100644
>
> perl scripts/get_maintainer.pl --self-test=patterns now warns:
>   ./MAINTAINERS:19896: warning: no file matches	F:	arch/arm/mach-omap2/*gpmc*

Ah perfect, I was looking for that command, and will check
the rest of my series now.

>> @@ -560,13 +533,11 @@ void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
>>  	 * We still need this for omap2420 and omap3 PM to work, others are
>
> Stale comment about omap2420

fixed.

>> diff --git a/arch/arm/mach-omap2/voltagedomains2xxx_data.c b/arch/arm/mach-omap2/voltagedomains2xxx_data.c
>> deleted file mode 100644
>> [...]
>> -void __init omap2xxx_voltagedomains_init(void)
>
> The declaration for this is still in voltage.h.

fixed.

Thanks a lot for taking a look here.

       Arnd

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 11/13] ARM: versatile: remove mps2 support
  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 17:37   ` Linus Walleij
@ 2026-09-08 19:49   ` Sudeep Holla
  2026-09-08 19:51     ` Arnd Bergmann
  2026-09-08 19:54     ` Sudeep Holla
  2 siblings, 2 replies; 70+ messages in thread
From: Sudeep Holla @ 2026-09-08 19:49 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Sudeep Holla, Alexandre Belloni,
	Linus Walleij, Russell King, Drew Fustini, Arnd Bergmann,
	Rob Herring, Conor Dooley, Liviu Dudau, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

On Tue, Sep 08, 2026 at 05:28:01PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Arm mps2 platform is the reference implementation for Arm
> microcontrollers and is useful for testing but not expected to be used
> as a production device.
> 
> With all the Cortex-M based products gone, there is no longer a need
> for a reference platform either, so remove it as well.
> 
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Sudeep Holla <sudeep.holla@kernel.org>

Acked-by: Sudeep Holla <sudeep.holla@kernel.org>

While at it, should we also remove

drivers/tty/serial/mps2-uart.c and related Makefile/Kconfig entries ?

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 11/13] ARM: versatile: remove mps2 support
  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
  1 sibling, 1 reply; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 19:51 UTC (permalink / raw)
  To: Sudeep Holla, Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Rob Herring, Conor Dooley,
	Liviu Dudau, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	A. Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

On Tue, Sep 8, 2026, at 21:49, Sudeep Holla wrote:
> On Tue, Sep 08, 2026 at 05:28:01PM +0200, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>> 
>> The Arm mps2 platform is the reference implementation for Arm
>> microcontrollers and is useful for testing but not expected to be used
>> as a production device.
>> 
>> With all the Cortex-M based products gone, there is no longer a need
>> for a reference platform either, so remove it as well.
>> 
>> Cc: Liviu Dudau <liviu.dudau@arm.com>
>> Cc: Sudeep Holla <sudeep.holla@kernel.org>
>
> Acked-by: Sudeep Holla <sudeep.holla@kernel.org>

Thanks!

> While at it, should we also remove
>
> drivers/tty/serial/mps2-uart.c and related Makefile/Kconfig entries ?

Yes, I have a patch for that in
https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/log/?h=board-remove-7.3 and will post that once this series has progressed enough.

     Arnd

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 11/13] ARM: versatile: remove mps2 support
  2026-09-08 19:49   ` Sudeep Holla
  2026-09-08 19:51     ` Arnd Bergmann
@ 2026-09-08 19:54     ` Sudeep Holla
  1 sibling, 0 replies; 70+ messages in thread
From: Sudeep Holla @ 2026-09-08 19:54 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Sudeep Holla,
	Linus Walleij, Russell King, Drew Fustini, Arnd Bergmann,
	Rob Herring, Conor Dooley, Liviu Dudau, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

On Tue, Sep 08, 2026 at 08:49:09PM +0100, Sudeep Holla wrote:
> On Tue, Sep 08, 2026 at 05:28:01PM +0200, Arnd Bergmann wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> > 
> > The Arm mps2 platform is the reference implementation for Arm
> > microcontrollers and is useful for testing but not expected to be used
> > as a production device.
> > 
> > With all the Cortex-M based products gone, there is no longer a need
> > for a reference platform either, so remove it as well.
> > 
> > Cc: Liviu Dudau <liviu.dudau@arm.com>
> > Cc: Sudeep Holla <sudeep.holla@kernel.org>
> 
> Acked-by: Sudeep Holla <sudeep.holla@kernel.org>
> 
> While at it, should we also remove
> 
> drivers/tty/serial/mps2-uart.c and related Makefile/Kconfig entries ?
> 

My initial search was incomplete(used _MPS2_ instead of _MPS2).
We also have timer/clocksource driver:

drivers/clocksource/mps2-timer.c

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 11/13] ARM: versatile: remove mps2 support
  2026-09-08 19:51     ` Arnd Bergmann
@ 2026-09-08 19:58       ` Sudeep Holla
  0 siblings, 0 replies; 70+ messages in thread
From: Sudeep Holla @ 2026-09-08 19:58 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Sudeep Holla, Linus Walleij, Russell King, Drew Fustini,
	Rob Herring, Conor Dooley, Liviu Dudau, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, A. Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP, Krzysztof Kozlowski,
	Andi Shyti, linux-i2c

On Tue, Sep 08, 2026 at 09:51:22PM +0200, Arnd Bergmann wrote:
> On Tue, Sep 8, 2026, at 21:49, Sudeep Holla wrote:
> > On Tue, Sep 08, 2026 at 05:28:01PM +0200, Arnd Bergmann wrote:
> >> From: Arnd Bergmann <arnd@arndb.de>
> >> 
> >> The Arm mps2 platform is the reference implementation for Arm
> >> microcontrollers and is useful for testing but not expected to be used
> >> as a production device.
> >> 
> >> With all the Cortex-M based products gone, there is no longer a need
> >> for a reference platform either, so remove it as well.
> >> 
> >> Cc: Liviu Dudau <liviu.dudau@arm.com>
> >> Cc: Sudeep Holla <sudeep.holla@kernel.org>
> >
> > Acked-by: Sudeep Holla <sudeep.holla@kernel.org>
> 
> Thanks!
> 
> > While at it, should we also remove
> >
> > drivers/tty/serial/mps2-uart.c and related Makefile/Kconfig entries ?
> 
> Yes, I have a patch for that in
> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/log/?h=board-remove-7.3 and will post that once this series has progressed enough.
> 

Ah ok, then discard my followup message. I assume you would have the timer
driver as well. Thanks for the deprecation.

-- 
Regards,
Sudeep

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
  2026-09-08 17:39   ` Linus Walleij
@ 2026-09-08 19:58   ` Sverdlin, Alexander
  2026-09-08 21:09   ` Rob Herring
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 70+ messages in thread
From: Sverdlin, Alexander @ 2026-09-08 19:58 UTC (permalink / raw)
  To: arnd; +Cc: linux-arm-kernel, linux-kernel, arnd

On Tue, 2026-09-08 at 17:28 +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Atmel at91 line, now known as Microchip SAM contains both
> SoCs using ARM926 and Cortex-A CPUs as well as a number of
> microcontrollers. Only a single one of those MCUs currently
> has Linux support, and has no known users.
> 
> The samv7 platform was deprecated in Linux-7.3LTS, which will
> remain supported a while longer after it is gone from mainline.
> 
> Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>

> ---
>  arch/arm/Kconfig.debug      | 10 ----------
>  arch/arm/mach-at91/Kconfig  | 11 +----------
>  arch/arm/mach-at91/Makefile |  1 -
>  arch/arm/mach-at91/samv7.c  | 17 -----------------
>  drivers/soc/atmel/soc.c     | 36 ------------------------------------
>  5 files changed, 1 insertion(+), 74 deletions(-)
>  delete mode 100644 arch/arm/mach-at91/samv7.c

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 13/13] ARM: axxia: remove entire platform
  2026-09-08 15:28 ` [PATCH 13/13] ARM: axxia: remove entire platform Arnd Bergmann
  2026-09-08 17:40   ` Linus Walleij
  2026-09-08 18:23   ` Krzysztof Kozlowski
@ 2026-09-08 20:02   ` Sverdlin, Alexander
  2 siblings, 0 replies; 70+ messages in thread
From: Sverdlin, Alexander @ 2026-09-08 20:02 UTC (permalink / raw)
  To: arnd; +Cc: linux-arm-kernel, devicetree, linux-kernel, anders.berg, arnd

On Tue, 2026-09-08 at 17:28 +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The initial Axxia port was contributed by LSI in 2014, but never completed
> after the sale of the business unit to Intel, which kept supporting the
> bulk of the drivers in their own downstream BSP.
> 
> The downstream work has also ended now, and there is no realistic chance
> that anyone would rewrite it all into an upstreamable port.
> 
> Remove it now that the 7.3LTS release is out and can be used as the
> base for one more downstream rebase of the downstream patches if needed.
> 
> Cc: Krzysztof Kozlowski <krzk@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Cc: Anders Berg <anders.berg@lsi.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>

> ---
>  .../devicetree/bindings/arm/axxia.yaml        |  23 --
>  MAINTAINERS                                   |   8 -
>  arch/arm/Kconfig                              |   2 -
>  arch/arm/Makefile                             |   2 -
>  arch/arm/boot/dts/intel/Makefile              |   1 -
>  arch/arm/boot/dts/intel/axm/Makefile          |   5 -
>  .../boot/dts/intel/axm/axm5516-amarillo.dts   |  47 ----
>  arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi | 200 ---------------
>  arch/arm/boot/dts/intel/axm/axm55xx.dtsi      | 200 ---------------
>  arch/arm/configs/axm55xx_defconfig            | 231 ------------------
>  arch/arm/mach-axxia/Kconfig                   |  17 --
>  arch/arm/mach-axxia/Makefile                  |   3 -
>  arch/arm/mach-axxia/axxia.c                   |  19 --
>  arch/arm/mach-axxia/platsmp.c                 |  87 -------
>  14 files changed, 845 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/arm/axxia.yaml
>  delete mode 100644 arch/arm/boot/dts/intel/axm/Makefile
>  delete mode 100644 arch/arm/boot/dts/intel/axm/axm5516-amarillo.dts
>  delete mode 100644 arch/arm/boot/dts/intel/axm/axm5516-cpus.dtsi
>  delete mode 100644 arch/arm/boot/dts/intel/axm/axm55xx.dtsi
>  delete mode 100644 arch/arm/configs/axm55xx_defconfig
>  delete mode 100644 arch/arm/mach-axxia/Kconfig
>  delete mode 100644 arch/arm/mach-axxia/Makefile
>  delete mode 100644 arch/arm/mach-axxia/axxia.c
>  delete mode 100644 arch/arm/mach-axxia/platsmp.c

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  2026-09-08 19:39   ` Karl Mehltretter
@ 2026-09-08 20:09     ` Arnd Bergmann
  0 siblings, 0 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 20:09 UTC (permalink / raw)
  To: Karl Mehltretter, Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, A. Sverdlin, Shawn Guo,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP, Guenter Roeck

On Tue, Sep 8, 2026, at 21:39, Karl Mehltretter wrote:
> On Tue, Sep 08, 2026 at 05:27:51PM +0100, Arnd Bergmann wrote:
>>  62 files changed, 19 insertions(+), 10501 deletions(-)
>
> Note that Sashiko skipped reviewing this patch, because it exceeded
> its current 10000 line limit.
>
>> diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
>> @@ -275,18 +275,10 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
>> -	if (IS_ENABLED(CONFIG_ARCH_SA1100) ||
>> -	    of_device_is_compatible(pdev->dev.of_node, "mrvl,sa1100-rtc")) {
>> -		info->rcnr = base + 0x04;
>> -		info->rtsr = base + 0x10;
>> -		info->rtar = base + 0x00;
>> -		info->rttr = base + 0x08;
>> -	} else {
>> -		info->rcnr = base + 0x0;
>> -		info->rtsr = base + 0x8;
>> -		info->rtar = base + 0x4;
>> -		info->rttr = base + 0xc;
>> -	}
>> +	info->rcnr = base + 0x0;
>> +	info->rtsr = base + 0x8;
>> +	info->rtar = base + 0x4;
>> +	info->rttr = base + 0xc;
>
> This drops the layout switch but keeps "mrvl,sa1100-rtc" in
> sa1100_rtc_dt_ids[] and in bindings/rtc/sa1100-rtc.yaml, so a DT with
> that compatible would now silently get the MMP register offsets instead
> of the SA1100 ones.

This one is interesting: this was already the behavior before
my patch, as CONFIG_ARCH_SA1100 is mutually exclusive with all
other targets. That obviously wasn't the intention of the code.

I've removed the sa1100_rtc_dt_ids[] entry now.

>> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
>> @@ -614,16 +614,16 @@ config S3C2410_WATCHDOG
>>  	  be called s3c2410_wdt.
>>  
>>  config SA1100_WATCHDOG
>> -	tristate "SA1100/PXA2xx watchdog"
>> -	depends on ARCH_SA1100 || ARCH_PXA || COMPILE_TEST
>> +	tristate "PXA2xx watchdog"
>> +	depends on ARCH_PXA || COMPILE_TEST
>>  	help
>> -	  Watchdog timer embedded into SA11x0 and PXA2xx chips. This will
>> -	  reboot your system when timeout is reached.
>> +	  Watchdog timer embedded PXA2xx chips. This will reboot your
>> +	  system when timeout is reached.
>>  
>
> "embedded into PXA2xx chips" is better.
>
> The RTC_DRV_SA1100 help text a bit earlier in the patch also still says
> "built into your SA11x0 or PXA2xx CPU".

Fixed all these now, thanks for the review!

      Arnd

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  2026-09-08 15:27 ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all " Arnd Bergmann
                     ` (3 preceding siblings ...)
  2026-09-08 17:33   ` Linus Walleij
@ 2026-09-08 20:14   ` Niklas Cassel
  2026-09-09 12:54   ` Gregory CLEMENT
  5 siblings, 0 replies; 70+ messages in thread
From: Niklas Cassel @ 2026-09-08 20:14 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Mark Brown, Bartosz Golaszewski, Thomas Weissschuh, linux-ide,
	linux-mmc, linux-pci, linux-phy, linux-rtc, linux-pm,
	linux-watchdog, linux-sound, linux-gpio

On Tue, Sep 08, 2026 at 05:27:55PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The 'orion' platform is the predecessor to what linux now calls the
> 'mvebu' line of Marvell SoCs, and originally covered orion5x,
> mv78xx0, kirkwood, dove and a few others that do not have any
> upstream support at the moment.
> 
> Only a few board files remain here, these are the ones left
> in 2022 board file purge because they had some level of support
> in Debian or OpenWRT, mostly for commercial NAS or router boxes.
> This distro support is now gone, and nobody has converted the
> board files to devicetree, though the orion5x and dove platforms
> also come with devicetree support for some other machines.
> 
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
> Cc: Gregory Clement <gregory.clement@bootlin.com>
> Cc: Alexander Clouter <alex@digriz.org.uk>
> Cc: Jeremy J. Peper <jeremy@jeremypeper.com>
> Cc: Damien Le Moal <dlemoal@kernel.org>
> Cc: Niklas Cassel <cassel@kernel.org>
> Cc: Ulf Hansson <ulfh@kernel.org>
> Cc: Lorenzo Pieralisi <lpieralisi@kernel.org>
> Cc: "Krzysztof Wilczyński" <kwilczynski@kernel.org>
> Cc: Manivannan Sadhasivam <mani@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Vinod Koul <vkoul@kernel.org>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Daniel Lezcano <daniel.lezcano@kernel.org>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Mark Brown <broonie@kernel.org>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Bartosz Golaszewski <brgl@kernel.org>
> Cc: Thomas Weissschuh <thomas.weissschuh@linutronix.de>
> Cc: linux-ide@vger.kernel.org
> Cc: linux-mmc@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> Cc: linux-phy@lists.infradead.org
> Cc: linux-rtc@vger.kernel.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-watchdog@vger.kernel.org
> Cc: linux-sound@vger.kernel.org
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Niklas Cassel <cassel@kernel.org> # ata parts

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  2026-09-08 15:27 ` [PATCH 01/13] ARM: remove sa1100 platform Arnd Bergmann
                     ` (2 preceding siblings ...)
  2026-09-08 19:39   ` Karl Mehltretter
@ 2026-09-08 20:36   ` Nicolas Pitre
  2026-09-08 21:26     ` David Laight
  2026-09-08 21:32     ` Arnd Bergmann
  3 siblings, 2 replies; 70+ messages in thread
From: Nicolas Pitre @ 2026-09-08 20:36 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	linux-doc, linux-kernel, linux-arm-kernel, devicetree, imx,
	linux-stm32, linux-omap, Guenter Roeck

On Tue, 8 Sep 2026, Arnd Bergmann wrote:

> From: Arnd Bergmann <arnd@arndb.de>
> 
> Most sa1100 platforms were removed a few years, with the remaining
> ones left as a starting point for a conversion to devicetree.
> 
> Nothing ever happened on that front, so remove the rest now,
> including the sa1111 and locomo drivers that were once shared
> with pxa but are already sa1100-exclusive now.

The SA1100 was the starting point of my career. Feels strange how much 
time has passed.

I parted with such hardware a long time ago in any case.

Acked-by: Nicolas Pitre <nico@fluxnic.net>


> 
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Linus Walleij <linusw@kernel.org>
> Cc: Kristoffer Ericson <kristoffer.ericson@gmail.com>
> Cc: Guenter Roeck <linux@roeck-us.net>
> Cc: Ethan Nelson-Moore <enelsonmoore@gmail.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  Documentation/arch/arm/index.rst              |    3 -
>  Documentation/arch/arm/sa1100/assabet.rst     |  301 ---
>  Documentation/arch/arm/sa1100/cerf.rst        |   35 -
>  Documentation/arch/arm/sa1100/index.rst       |   13 -
>  Documentation/arch/arm/sa1100/lart.rst        |   15 -
>  Documentation/arch/arm/sa1100/serial_uart.rst |   51 -
>  MAINTAINERS                                   |    8 -
>  arch/arm/Kconfig                              |   16 +-
>  arch/arm/Kconfig.debug                        |   13 +-
>  arch/arm/Makefile                             |    6 -
>  arch/arm/boot/bootp/Makefile                  |    1 -
>  arch/arm/boot/compressed/Makefile             |    4 -
>  arch/arm/boot/compressed/head-sa1100.S        |   45 -
>  arch/arm/boot/compressed/head.S               |    7 -
>  arch/arm/common/Kconfig                       |    7 -
>  arch/arm/common/Makefile                      |    2 -
>  arch/arm/common/locomo.c                      |  886 --------
>  arch/arm/common/sa1111.c                      | 1413 -------------
>  arch/arm/configs/assabet_defconfig            |   57 -
>  arch/arm/configs/collie_defconfig             |   87 -
>  arch/arm/configs/h3600_defconfig              |   63 -
>  arch/arm/configs/jornada720_defconfig         |   95 -
>  arch/arm/configs/neponset_defconfig           |   88 -
>  arch/arm/include/asm/cputype.h                |    4 -
>  arch/arm/include/asm/hardware/locomo.h        |  217 --
>  arch/arm/include/asm/hardware/sa1111.h        |  442 ----
>  arch/arm/include/asm/hardware/ssp.h           |   25 -
>  arch/arm/include/debug/sa1100.S               |   67 -
>  arch/arm/mach-sa1100/Kconfig                  |   92 -
>  arch/arm/mach-sa1100/Makefile                 |   20 -
>  arch/arm/mach-sa1100/assabet.c                |  770 -------
>  arch/arm/mach-sa1100/clock.c                  |  145 --
>  arch/arm/mach-sa1100/collie.c                 |  447 ----
>  arch/arm/mach-sa1100/generic.c                |  470 -----
>  arch/arm/mach-sa1100/generic.h                |   58 -
>  arch/arm/mach-sa1100/h3600.c                  |  134 --
>  arch/arm/mach-sa1100/h3xxx.c                  |  305 ---
>  arch/arm/mach-sa1100/include/mach/SA-1100.h   | 1798 -----------------
>  arch/arm/mach-sa1100/include/mach/assabet.h   |   99 -
>  arch/arm/mach-sa1100/include/mach/bitfield.h  |  113 --
>  arch/arm/mach-sa1100/include/mach/collie.h    |   94 -
>  arch/arm/mach-sa1100/include/mach/generic.h   |    1 -
>  arch/arm/mach-sa1100/include/mach/h3xxx.h     |   81 -
>  arch/arm/mach-sa1100/include/mach/hardware.h  |   56 -
>  arch/arm/mach-sa1100/include/mach/irqs.h      |  101 -
>  .../arm/mach-sa1100/include/mach/jornada720.h |   28 -
>  arch/arm/mach-sa1100/include/mach/memory.h    |   37 -
>  arch/arm/mach-sa1100/include/mach/mtd-xip.h   |   23 -
>  arch/arm/mach-sa1100/include/mach/neponset.h  |   31 -
>  arch/arm/mach-sa1100/include/mach/reset.h     |   18 -
>  .../arm/mach-sa1100/include/mach/uncompress.h |   52 -
>  arch/arm/mach-sa1100/jornada720.c             |  380 ----
>  arch/arm/mach-sa1100/jornada720_ssp.c         |  202 --
>  arch/arm/mach-sa1100/neponset.c               |  438 ----
>  arch/arm/mach-sa1100/pm.c                     |  128 --
>  arch/arm/mach-sa1100/sleep.S                  |  143 --
>  arch/arm/mach-sa1100/ssp.c                    |  240 ---
>  arch/arm/mm/init.c                            |    5 -
>  arch/arm/mm/mmu.c                             |    8 -
>  drivers/rtc/Kconfig                           |    4 +-
>  drivers/rtc/rtc-sa1100.c                      |   16 +-
>  drivers/watchdog/Kconfig                      |   12 +-
>  62 files changed, 19 insertions(+), 10501 deletions(-)
>  delete mode 100644 Documentation/arch/arm/sa1100/assabet.rst
>  delete mode 100644 Documentation/arch/arm/sa1100/cerf.rst
>  delete mode 100644 Documentation/arch/arm/sa1100/index.rst
>  delete mode 100644 Documentation/arch/arm/sa1100/lart.rst
>  delete mode 100644 Documentation/arch/arm/sa1100/serial_uart.rst
>  delete mode 100644 arch/arm/boot/compressed/head-sa1100.S
>  delete mode 100644 arch/arm/common/locomo.c
>  delete mode 100644 arch/arm/common/sa1111.c
>  delete mode 100644 arch/arm/configs/assabet_defconfig
>  delete mode 100644 arch/arm/configs/collie_defconfig
>  delete mode 100644 arch/arm/configs/h3600_defconfig
>  delete mode 100644 arch/arm/configs/jornada720_defconfig
>  delete mode 100644 arch/arm/configs/neponset_defconfig
>  delete mode 100644 arch/arm/include/asm/hardware/locomo.h
>  delete mode 100644 arch/arm/include/asm/hardware/sa1111.h
>  delete mode 100644 arch/arm/include/asm/hardware/ssp.h
>  delete mode 100644 arch/arm/include/debug/sa1100.S
>  delete mode 100644 arch/arm/mach-sa1100/Kconfig
>  delete mode 100644 arch/arm/mach-sa1100/Makefile
>  delete mode 100644 arch/arm/mach-sa1100/assabet.c
>  delete mode 100644 arch/arm/mach-sa1100/clock.c
>  delete mode 100644 arch/arm/mach-sa1100/collie.c
>  delete mode 100644 arch/arm/mach-sa1100/generic.c
>  delete mode 100644 arch/arm/mach-sa1100/generic.h
>  delete mode 100644 arch/arm/mach-sa1100/h3600.c
>  delete mode 100644 arch/arm/mach-sa1100/h3xxx.c
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/SA-1100.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/assabet.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/bitfield.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/collie.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/generic.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/h3xxx.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/hardware.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/irqs.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/jornada720.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/memory.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/mtd-xip.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/neponset.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/reset.h
>  delete mode 100644 arch/arm/mach-sa1100/include/mach/uncompress.h
>  delete mode 100644 arch/arm/mach-sa1100/jornada720.c
>  delete mode 100644 arch/arm/mach-sa1100/jornada720_ssp.c
>  delete mode 100644 arch/arm/mach-sa1100/neponset.c
>  delete mode 100644 arch/arm/mach-sa1100/pm.c
>  delete mode 100644 arch/arm/mach-sa1100/sleep.S
>  delete mode 100644 arch/arm/mach-sa1100/ssp.c
> 
> diff --git a/Documentation/arch/arm/index.rst b/Documentation/arch/arm/index.rst
> index b15621093f7a..a292b8ac41ce 100644
> --- a/Documentation/arch/arm/index.rst
> +++ b/Documentation/arch/arm/index.rst
> @@ -48,9 +48,6 @@ SoC-specific documents
>  
>     pxa/mfp
>  
> -
> -   sa1100/index
> -
>     stm32/stm32f746-overview
>     stm32/overview
>     stm32/stm32h743-overview
> diff --git a/Documentation/arch/arm/sa1100/assabet.rst b/Documentation/arch/arm/sa1100/assabet.rst
> deleted file mode 100644
> index a761e128fb08..000000000000
> --- a/Documentation/arch/arm/sa1100/assabet.rst
> +++ /dev/null
> @@ -1,301 +0,0 @@
> -============================================
> -The Intel Assabet (SA-1110 evaluation) board
> -============================================
> -
> -Please see:
> -http://developer.intel.com
> -
> -Also some notes from John G Dorsey <jd5q@andrew.cmu.edu>:
> -http://www.cs.cmu.edu/~wearable/software/assabet.html
> -
> -
> -Building the kernel
> --------------------
> -
> -To build the kernel with current defaults::
> -
> -	make assabet_defconfig
> -	make oldconfig
> -	make zImage
> -
> -The resulting kernel image should be available in linux/arch/arm/boot/zImage.
> -
> -
> -Installing a bootloader
> ------------------------
> -
> -A couple of bootloaders able to boot Linux on Assabet are available:
> -
> -BLOB (http://www.lartmaker.nl/lartware/blob/)
> -
> -   BLOB is a bootloader used within the LART project.  Some contributed
> -   patches were merged into BLOB to add support for Assabet.
> -
> -Compaq's Bootldr + John Dorsey's patch for Assabet support
> -(http://www.handhelds.org/Compaq/bootldr.html)
> -(http://www.wearablegroup.org/software/bootldr/)
> -
> -   Bootldr is the bootloader developed by Compaq for the iPAQ Pocket PC.
> -   John Dorsey has produced add-on patches to add support for Assabet and
> -   the JFFS filesystem.
> -
> -RedBoot (http://sources.redhat.com/redboot/)
> -
> -   RedBoot is a bootloader developed by Red Hat based on the eCos RTOS
> -   hardware abstraction layer.  It supports Assabet amongst many other
> -   hardware platforms.
> -
> -RedBoot is currently the recommended choice since it's the only one to have
> -networking support, and is the most actively maintained.
> -
> -Brief examples on how to boot Linux with RedBoot are shown below.  But first
> -you need to have RedBoot installed in your flash memory.  A known to work
> -precompiled RedBoot binary is available from the following location:
> -
> -- ftp://ftp.netwinder.org/users/n/nico/
> -- ftp://ftp.arm.linux.org.uk/pub/linux/arm/people/nico/
> -- ftp://ftp.handhelds.org/pub/linux/arm/sa-1100-patches/
> -
> -Look for redboot-assabet*.tgz.  Some installation infos are provided in
> -redboot-assabet*.txt.
> -
> -
> -Initial RedBoot configuration
> ------------------------------
> -
> -The commands used here are explained in The RedBoot User's Guide available
> -on-line at http://sources.redhat.com/ecos/docs.html.
> -Please refer to it for explanations.
> -
> -If you have a CF network card (my Assabet kit contained a CF+ LP-E from
> -Socket Communications Inc.), you should strongly consider using it for TFTP
> -file transfers.  You must insert it before RedBoot runs since it can't detect
> -it dynamically.
> -
> -To initialize the flash directory::
> -
> -	fis init -f
> -
> -To initialize the non-volatile settings, like whether you want to use BOOTP or
> -a static IP address, etc, use this command::
> -
> -	fconfig -i
> -
> -
> -Writing a kernel image into flash
> ----------------------------------
> -
> -First, the kernel image must be loaded into RAM.  If you have the zImage file
> -available on a TFTP server::
> -
> -	load zImage -r -b 0x100000
> -
> -If you rather want to use Y-Modem upload over the serial port::
> -
> -	load -m ymodem -r -b 0x100000
> -
> -To write it to flash::
> -
> -	fis create "Linux kernel" -b 0x100000 -l 0xc0000
> -
> -
> -Booting the kernel
> -------------------
> -
> -The kernel still requires a filesystem to boot.  A ramdisk image can be loaded
> -as follows::
> -
> -	load ramdisk_image.gz -r -b 0x800000
> -
> -Again, Y-Modem upload can be used instead of TFTP by replacing the file name
> -by '-y ymodem'.
> -
> -Now the kernel can be retrieved from flash like this::
> -
> -	fis load "Linux kernel"
> -
> -or loaded as described previously.  To boot the kernel::
> -
> -	exec -b 0x100000 -l 0xc0000
> -
> -The ramdisk image could be stored into flash as well, but there are better
> -solutions for on-flash filesystems as mentioned below.
> -
> -
> -Using JFFS2
> ------------
> -
> -Using JFFS2 (the Second Journalling Flash File System) is probably the most
> -convenient way to store a writable filesystem into flash.  JFFS2 is used in
> -conjunction with the MTD layer which is responsible for low-level flash
> -management.  More information on the Linux MTD can be found on-line at:
> -http://www.linux-mtd.infradead.org/.  A JFFS howto with some infos about
> -creating JFFS/JFFS2 images is available from the same site.
> -
> -For instance, a sample JFFS2 image can be retrieved from the same FTP sites
> -mentioned below for the precompiled RedBoot image.
> -
> -To load this file::
> -
> -	load sample_img.jffs2 -r -b 0x100000
> -
> -The result should look like::
> -
> -	RedBoot> load sample_img.jffs2 -r -b 0x100000
> -	Raw file loaded 0x00100000-0x00377424
> -
> -Now we must know the size of the unallocated flash::
> -
> -	fis free
> -
> -Result::
> -
> -	RedBoot> fis free
> -	  0x500E0000 .. 0x503C0000
> -
> -The values above may be different depending on the size of the filesystem and
> -the type of flash.  See their usage below as an example and take care of
> -substituting yours appropriately.
> -
> -We must determine some values::
> -
> -	size of unallocated flash:	0x503c0000 - 0x500e0000 = 0x2e0000
> -	size of the filesystem image:	0x00377424 - 0x00100000 = 0x277424
> -
> -We want to fit the filesystem image of course, but we also want to give it all
> -the remaining flash space as well.  To write it::
> -
> -	fis unlock -f 0x500E0000 -l 0x2e0000
> -	fis erase -f 0x500E0000 -l 0x2e0000
> -	fis write -b 0x100000 -l 0x277424 -f 0x500E0000
> -	fis create "JFFS2" -n -f 0x500E0000 -l 0x2e0000
> -
> -Now the filesystem is associated to a MTD "partition" once Linux has discovered
> -what they are in the boot process.  From Redboot, the 'fis list' command
> -displays them::
> -
> -	RedBoot> fis list
> -	Name              FLASH addr  Mem addr    Length      Entry point
> -	RedBoot           0x50000000  0x50000000  0x00020000  0x00000000
> -	RedBoot config    0x503C0000  0x503C0000  0x00020000  0x00000000
> -	FIS directory     0x503E0000  0x503E0000  0x00020000  0x00000000
> -	Linux kernel      0x50020000  0x00100000  0x000C0000  0x00000000
> -	JFFS2             0x500E0000  0x500E0000  0x002E0000  0x00000000
> -
> -However Linux should display something like::
> -
> -	SA1100 flash: probing 32-bit flash bus
> -	SA1100 flash: Found 2 x16 devices at 0x0 in 32-bit mode
> -	Using RedBoot partition definition
> -	Creating 5 MTD partitions on "SA1100 flash":
> -	0x00000000-0x00020000 : "RedBoot"
> -	0x00020000-0x000e0000 : "Linux kernel"
> -	0x000e0000-0x003c0000 : "JFFS2"
> -	0x003c0000-0x003e0000 : "RedBoot config"
> -	0x003e0000-0x00400000 : "FIS directory"
> -
> -What's important here is the position of the partition we are interested in,
> -which is the third one.  Within Linux, this correspond to /dev/mtdblock2.
> -Therefore to boot Linux with the kernel and its root filesystem in flash, we
> -need this RedBoot command::
> -
> -	fis load "Linux kernel"
> -	exec -b 0x100000 -l 0xc0000 -c "root=/dev/mtdblock2"
> -
> -Of course other filesystems than JFFS might be used, like cramfs for example.
> -You might want to boot with a root filesystem over NFS, etc.  It is also
> -possible, and sometimes more convenient, to flash a filesystem directly from
> -within Linux while booted from a ramdisk or NFS.  The Linux MTD repository has
> -many tools to deal with flash memory as well, to erase it for example.  JFFS2
> -can then be mounted directly on a freshly erased partition and files can be
> -copied over directly.  Etc...
> -
> -
> -RedBoot scripting
> ------------------
> -
> -All the commands above aren't so useful if they have to be typed in every
> -time the Assabet is rebooted.  Therefore it's possible to automate the boot
> -process using RedBoot's scripting capability.
> -
> -For example, I use this to boot Linux with both the kernel and the ramdisk
> -images retrieved from a TFTP server on the network::
> -
> -	RedBoot> fconfig
> -	Run script at boot: false true
> -	Boot script:
> -	Enter script, terminate with empty line
> -	>> load zImage -r -b 0x100000
> -	>> load ramdisk_ks.gz -r -b 0x800000
> -	>> exec -b 0x100000 -l 0xc0000
> -	>>
> -	Boot script timeout (1000ms resolution): 3
> -	Use BOOTP for network configuration: true
> -	GDB connection port: 9000
> -	Network debug at boot time: false
> -	Update RedBoot non-volatile configuration - are you sure (y/n)? y
> -
> -Then, rebooting the Assabet is just a matter of waiting for the login prompt.
> -
> -
> -
> -Nicolas Pitre
> -nico@fluxnic.net
> -
> -June 12, 2001
> -
> -
> -Status of peripherals in -rmk tree (updated 14/10/2001)
> --------------------------------------------------------
> -
> -Assabet:
> - Serial ports:
> -  Radio:		TX, RX, CTS, DSR, DCD, RI
> -   - PM:		Not tested.
> -   - COM:		TX, RX, CTS, DSR, DCD, RTS, DTR, PM
> -   - PM:		Not tested.
> -   - I2C:		Implemented, not fully tested.
> -   - L3:		Fully tested, pass.
> -   - PM:		Not tested.
> -
> - Video:
> -  - LCD:		Fully tested.  PM
> -
> -   (LCD doesn't like being blanked with neponset connected)
> -
> -  - Video out:		Not fully
> -
> - Audio:
> -  UDA1341:
> -  -  Playback:		Fully tested, pass.
> -  -  Record:		Implemented, not tested.
> -  -  PM:			Not tested.
> -
> -  UCB1200:
> -  -  Audio play:	Implemented, not heavily tested.
> -  -  Audio rec:		Implemented, not heavily tested.
> -  -  Telco audio play:	Implemented, not heavily tested.
> -  -  Telco audio rec:	Implemented, not heavily tested.
> -  -  POTS control:	No
> -  -  Touchscreen:	Yes
> -  -  PM:		Not tested.
> -
> - Other:
> -  - PCMCIA:
> -  - LPE:		Fully tested, pass.
> -  - USB:		No
> -  - IRDA:
> -  - SIR:		Fully tested, pass.
> -  - FIR:		Fully tested, pass.
> -  - PM:			Not tested.
> -
> -Neponset:
> - Serial ports:
> -  - COM1,2:		TX, RX, CTS, DSR, DCD, RTS, DTR
> -  - PM:			Not tested.
> -  - USB:		Implemented, not heavily tested.
> -  - PCMCIA:		Implemented, not heavily tested.
> -  - CF:			Implemented, not heavily tested.
> -  - PM:			Not tested.
> -
> -More stuff can be found in the -np (Nicolas Pitre's) tree.
> diff --git a/Documentation/arch/arm/sa1100/cerf.rst b/Documentation/arch/arm/sa1100/cerf.rst
> deleted file mode 100644
> index 7fa71b609bf9..000000000000
> --- a/Documentation/arch/arm/sa1100/cerf.rst
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -==============
> -CerfBoard/Cube
> -==============
> -
> -*** The StrongARM version of the CerfBoard/Cube has been discontinued ***
> -
> -The Intrinsyc CerfBoard is a StrongARM 1110-based computer on a board
> -that measures approximately 2" square. It includes an Ethernet
> -controller, an RS232-compatible serial port, a USB function port, and
> -one CompactFlash+ slot on the back. Pictures can be found at the
> -Intrinsyc website, http://www.intrinsyc.com.
> -
> -This document describes the support in the Linux kernel for the
> -Intrinsyc CerfBoard.
> -
> -Supported in this version
> -=========================
> -
> -   - CompactFlash+ slot (select PCMCIA in General Setup and any options
> -     that may be required)
> -   - Onboard Crystal CS8900 Ethernet controller (Cerf CS8900A support in
> -     Network Devices)
> -   - Serial ports with a serial console (hardcoded to 38400 8N1)
> -
> -In order to get this kernel onto your Cerf, you need a server that runs
> -both BOOTP and TFTP. Detailed instructions should have come with your
> -evaluation kit on how to use the bootloader. This series of commands
> -will suffice::
> -
> -   make ARCH=arm CROSS_COMPILE=arm-linux- cerfcube_defconfig
> -   make ARCH=arm CROSS_COMPILE=arm-linux- zImage
> -   make ARCH=arm CROSS_COMPILE=arm-linux- modules
> -   cp arch/arm/boot/zImage <TFTP directory>
> -
> -support@intrinsyc.com
> diff --git a/Documentation/arch/arm/sa1100/index.rst b/Documentation/arch/arm/sa1100/index.rst
> deleted file mode 100644
> index c9aed43280ff..000000000000
> --- a/Documentation/arch/arm/sa1100/index.rst
> +++ /dev/null
> @@ -1,13 +0,0 @@
> -.. SPDX-License-Identifier: GPL-2.0
> -
> -====================
> -Intel StrongARM 1100
> -====================
> -
> -.. toctree::
> -    :maxdepth: 1
> -
> -    assabet
> -    cerf
> -    lart
> -    serial_uart
> diff --git a/Documentation/arch/arm/sa1100/lart.rst b/Documentation/arch/arm/sa1100/lart.rst
> deleted file mode 100644
> index 94c0568d1095..000000000000
> --- a/Documentation/arch/arm/sa1100/lart.rst
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -====================================
> -Linux Advanced Radio Terminal (LART)
> -====================================
> -
> -The LART is a small (7.5 x 10cm) SA-1100 board, designed for embedded
> -applications. It has 32 MB DRAM, 4MB Flash ROM, double RS232 and all
> -other StrongARM-gadgets. Almost all SA signals are directly accessible
> -through a number of connectors. The powersupply accepts voltages
> -between 3.5V and 16V and is overdimensioned to support a range of
> -daughterboards. A quad Ethernet / IDE / PS2 / sound daughterboard
> -is under development, with plenty of others in different stages of
> -planning.
> -
> -The hardware designs for this board have been released under an open license;
> -see the LART page at http://www.lartmaker.nl/ for more information.
> diff --git a/Documentation/arch/arm/sa1100/serial_uart.rst b/Documentation/arch/arm/sa1100/serial_uart.rst
> deleted file mode 100644
> index ea983642b9be..000000000000
> --- a/Documentation/arch/arm/sa1100/serial_uart.rst
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -==================
> -SA1100 serial port
> -==================
> -
> -The SA1100 serial port had its major/minor numbers officially assigned::
> -
> -  > Date: Sun, 24 Sep 2000 21:40:27 -0700
> -  > From: H. Peter Anvin <hpa@transmeta.com>
> -  > To: Nicolas Pitre <nico@CAM.ORG>
> -  > Cc: Device List Maintainer <device@lanana.org>
> -  > Subject: Re: device
> -  >
> -  > Okay.  Note that device numbers 204 and 205 are used for "low density
> -  > serial devices", so you will have a range of minors on those majors (the
> -  > tty device layer handles this just fine, so you don't have to worry about
> -  > doing anything special.)
> -  >
> -  > So your assignments are:
> -  >
> -  > 204 char        Low-density serial ports
> -  >                   5 = /dev/ttySA0               SA1100 builtin serial port 0
> -  >                   6 = /dev/ttySA1               SA1100 builtin serial port 1
> -  >                   7 = /dev/ttySA2               SA1100 builtin serial port 2
> -  >
> -  > 205 char        Low-density serial ports (alternate device)
> -  >                   5 = /dev/cusa0                Callout device for ttySA0
> -  >                   6 = /dev/cusa1                Callout device for ttySA1
> -  >                   7 = /dev/cusa2                Callout device for ttySA2
> -  >
> -
> -You must create those inodes in /dev on the root filesystem used
> -by your SA1100-based device::
> -
> -	mknod ttySA0 c 204 5
> -	mknod ttySA1 c 204 6
> -	mknod ttySA2 c 204 7
> -	mknod cusa0 c 205 5
> -	mknod cusa1 c 205 6
> -	mknod cusa2 c 205 7
> -
> -In addition to the creation of the appropriate device nodes above, you
> -must ensure your user space applications make use of the correct device
> -name. The classic example is the content of the /etc/inittab file where
> -you might have a getty process started on ttyS0.
> -
> -In this case:
> -
> -- replace occurrences of ttyS0 with ttySA0, ttyS1 with ttySA1, etc.
> -
> -- don't forget to add 'ttySA0', 'console', or the appropriate tty name
> -  in /etc/securetty for root to be allowed to login as well.
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 6215fcb07770..fd213c4bc257 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2977,14 +2977,6 @@ F:	arch/arm/boot/dts/hisilicon/
>  F:	arch/arm/mach-hisi/
>  F:	arch/arm64/boot/dts/hisilicon/
>  
> -ARM/HP JORNADA 7XX MACHINE SUPPORT
> -M:	Kristoffer Ericson <kristoffer.ericson@gmail.com>
> -S:	Maintained
> -W:	www.jlime.com
> -T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git
> -F:	arch/arm/mach-sa1100/include/mach/jornada720.h
> -F:	arch/arm/mach-sa1100/jornada720.c
> -
>  ARM/HPE GXP ARCHITECTURE
>  M:	Jean-Marie Verdun <verdun@hpe.com>
>  M:	Nick Hawkins <nick.hawkins@hpe.com>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index ffbc7f386131..7f4c2973d630 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -161,7 +161,7 @@ config ARM
>  	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_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
> +	select USE_OF if !(ARCH_FOOTBRIDGE || ARCH_RPC)
>  	# Above selects are sorted alphabetically; please add new ones
>  	# according to that.  Thanks.
>  	help
> @@ -261,9 +261,6 @@ config GENERIC_ISA_DMA
>  config FIQ
>  	bool
>  
> -config ARCH_MTD_XIP
> -	bool
> -
>  config ARM_PATCH_PHYS_VIRT
>  	bool "Patch physical to virtual translations at runtime" if !ARCH_MULTIPLATFORM
>  	default y
> @@ -301,7 +298,7 @@ config PHYS_OFFSET
>  	default 0x00000000 if ARCH_FOOTBRIDGE
>  	default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
>  	default 0xa0000000 if ARCH_PXA
> -	default 0xc0000000 if ARCH_EP93XX || ARCH_SA1100
> +	default 0xc0000000 if ARCH_EP93XX
>  	default 0
>  	help
>  	  Please provide the physical address corresponding to the
> @@ -341,7 +338,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_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
> +	depends on MMU && !(ARCH_FOOTBRIDGE || ARCH_RPC)
>  	default y
>  	help
>  	  In general, all Arm machines can be supported in a single
> @@ -445,8 +442,6 @@ source "arch/arm/mach-s3c/Kconfig"
>  
>  source "arch/arm/mach-s5pv210/Kconfig"
>  
> -source "arch/arm/mach-sa1100/Kconfig"
> -
>  source "arch/arm/mach-shmobile/Kconfig"
>  
>  source "arch/arm/mach-socfpga/Kconfig"
> @@ -1201,7 +1196,7 @@ config ARCH_SELECT_MEMORY_MODEL
>  	def_bool y
>  
>  config ARCH_FLATMEM_ENABLE
> -	def_bool !(ARCH_RPC || ARCH_SA1100)
> +	def_bool !ARCH_RPC
>  
>  config ARCH_SPARSEMEM_ENABLE
>  	def_bool !ARCH_FOOTBRIDGE
> @@ -1293,7 +1288,6 @@ config ARM_MODULE_PLTS
>  config ARCH_FORCE_MAX_ORDER
>  	int "Order of maximal physically contiguous allocations"
>  	default "11" if SOC_AM33XX
> -	default "8" if SA1111
>  	default "10"
>  	help
>  	  The kernel page allocator limits the size of maximal physically
> @@ -1605,7 +1599,7 @@ config ARCH_DEFAULT_CRASH_DUMP
>  
>  config AUTO_ZRELADDR
>  	bool "Auto calculation of the decompressed kernel image address" if !ARCH_MULTIPLATFORM
> -	default !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
> +	default !(ARCH_FOOTBRIDGE || ARCH_RPC)
>  	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 366f162e147d..ad0feced4369 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -1048,14 +1048,6 @@ choice
>  		  their output to UART 3. The port must have been initialised
>  		  by the boot-loader before use.
>  
> -	config DEBUG_SA1100
> -		depends on ARCH_SA1100
> -		bool "Use SA1100 UARTs for low-level debug"
> -		help
> -		  Say Y here if you want kernel low-level debugging support
> -		  on SA-11x0 UART ports. The kernel will check for the first
> -		  enabled UART in a sequence 3-1-2.
> -
>  	config DEBUG_SD5203_UART
>  		bool "Hisilicon SD5203 Debug UART"
>  		depends on ARCH_SD5203
> @@ -1479,7 +1471,6 @@ config DEBUG_UART_FLOW_CONTROL
>  
>  config DEBUG_LL_INCLUDE
>  	string
> -	default "debug/sa1100.S" if DEBUG_SA1100
>  	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
>  	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
>  	default "debug/at91.S" if DEBUG_AT91_UART
> @@ -1807,7 +1798,7 @@ config DEBUG_UART_8250_PALMCHIP
>  config DEBUG_UNCOMPRESS
>  	bool "Enable decompressor debugging via DEBUG_LL output"
>  	depends on !ARCH_MULTIPLATFORM
> -	depends on !(ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100)
> +	depends on !(ARCH_FOOTBRIDGE || ARCH_RPC)
>  	depends on DEBUG_LL && !DEBUG_OMAP2PLUS_UART && \
>  		     (!DEBUG_TEGRA_UART || !ZBOOT_ROM) && \
>  		     !DEBUG_BRCMSTB_UART && !DEBUG_SEMIHOSTING
> @@ -1817,7 +1808,7 @@ config DEBUG_UNCOMPRESS
>  
>  config UNCOMPRESS_INCLUDE
>  	string
> -	default "mach/uncompress.h" if ARCH_FOOTBRIDGE || ARCH_RPC || ARCH_SA1100
> +	default "mach/uncompress.h" if ARCH_FOOTBRIDGE || ARCH_RPC
>  	default "debug/uncompress.h"
>  
>  config EARLY_PRINTK
> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
> index 573813ef5e77..ea3da21202c8 100644
> --- a/arch/arm/Makefile
> +++ b/arch/arm/Makefile
> @@ -162,10 +162,6 @@ CHECKFLAGS	+= -D__arm__
>  textofs-y	:= 0x00008000
>  # RTD1195 has Boot ROM at start of address space
>  textofs-$(CONFIG_ARCH_REALTEK)  := 0x00108000
> -# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
> -ifeq ($(CONFIG_ARCH_SA1100),y)
> -textofs-$(CONFIG_SA1111) := 0x00208000
> -endif
>  textofs-$(CONFIG_ARCH_QCOM_RESERVE_SMEM) := 0x00208000
>  textofs-$(CONFIG_ARCH_MESON) := 0x00208000
>  textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
> @@ -214,7 +210,6 @@ machine-$(CONFIG_ARCH_ROCKCHIP)		+= rockchip
>  machine-$(CONFIG_ARCH_RPC)		+= rpc
>  machine-$(CONFIG_PLAT_SAMSUNG)		+= s3c
>  machine-$(CONFIG_ARCH_S5PV210)		+= s5pv210
> -machine-$(CONFIG_ARCH_SA1100)		+= sa1100
>  machine-$(CONFIG_ARCH_RENESAS)	 	+= shmobile
>  machine-$(CONFIG_ARCH_INTEL_SOCFPGA)	+= socfpga
>  machine-$(CONFIG_ARCH_STI)		+= sti
> @@ -232,7 +227,6 @@ machine-$(CONFIG_PLAT_SPEAR)		+= spear
>  # these three are mutually exclusive
>  machdirs-$(CONFIG_ARCH_FOOTBRIDGE)	+= arch/arm/mach-footbridge
>  machdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
> -machdirs-$(CONFIG_ARCH_SA1100)		+= arch/arm/mach-sa1100
>  KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
>  
>  # The byte offset of the kernel image in RAM from the start of RAM.
> diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
> index f3443f7d7b02..a1a1f4bec783 100644
> --- a/arch/arm/boot/bootp/Makefile
> +++ b/arch/arm/boot/bootp/Makefile
> @@ -20,7 +20,6 @@ PARAMS_PHYS := $(call add_hex, $(PHYS_OFFSET), 0x100)
>  
>  # guess an initrd location if possible
>  initrd_offset-$(CONFIG_ARCH_FOOTBRIDGE)	+= 0x00800000
> -initrd_offset-$(CONFIG_ARCH_SA1100)	+= 0x00800000
>  initrd_offset-$(CONFIG_ARCH_RPC)	+= 0x08000000
>  INITRD_OFFSET := $(initrd_offset-y)
>  ifdef INITRD_OFFSET
> diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
> index e3f550d62857..d8d81ba741a2 100644
> --- a/arch/arm/boot/compressed/Makefile
> +++ b/arch/arm/boot/compressed/Makefile
> @@ -29,10 +29,6 @@ ifeq ($(CONFIG_ARCH_ACORN),y)
>  OBJS		+= ll_char_wr.o font.o
>  endif
>  
> -ifeq ($(CONFIG_ARCH_SA1100),y)
> -OBJS		+= head-sa1100.o
> -endif
> -
>  ifeq ($(CONFIG_CPU_XSCALE),y)
>  OBJS		+= head-xscale.o
>  endif
> diff --git a/arch/arm/boot/compressed/head-sa1100.S b/arch/arm/boot/compressed/head-sa1100.S
> deleted file mode 100644
> index 23eae1a65064..000000000000
> --- a/arch/arm/boot/compressed/head-sa1100.S
> +++ /dev/null
> @@ -1,45 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/* 
> - * linux/arch/arm/boot/compressed/head-sa1100.S
> - * 
> - * Copyright (C) 1999 Nicolas Pitre <nico@fluxnic.net>
> - * 
> - * SA1100 specific tweaks.  This is merged into head.S by the linker.
> - *
> - */
> -
> -#include <linux/linkage.h>
> -#include <asm/mach-types.h>
> -
> -		.section        ".start", "ax"
> -		.arch	armv4
> -
> -__SA1100_start:
> -
> -		@ Preserve r8/r7 i.e. kernel entry values
> -#ifdef CONFIG_SA1100_COLLIE
> -		mov	r7, #MACH_TYPE_COLLIE
> -#endif
> -		mrc	p15, 0, r0, c1, c0, 0	@ read control reg
> -		ands	r0, r0, #0x0d
> -		beq	99f
> -
> -		@ Data cache might be active.
> -		@ Be sure to flush kernel binary out of the cache,
> -		@ whatever state it is, before it is turned off.
> -		@ This is done by fetching through currently executed
> -		@ memory to be sure we hit the same cache.
> -		bic	r2, pc, #0x1f
> -		add	r3, r2, #0x4000		@ 16 kb is quite enough...
> -1:		ldr	r0, [r2], #32
> -		teq	r2, r3
> -		bne	1b
> -		mcr	p15, 0, r0, c7, c10, 4	@ drain WB
> -		mcr	p15, 0, r0, c7, c7, 0	@ flush I & D caches
> -
> -		@ disabling MMU and caches
> -		mrc	p15, 0, r0, c1, c0, 0	@ read control reg
> -		bic	r0, r0, #0x0d		@ clear WB, DC, MMU
> -		bic	r0, r0, #0x1000		@ clear Icache
> -		mcr	p15, 0, r0, c1, c0, 0
> -99:
> diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
> index 9f406e9c0ea6..845abffbc2d6 100644
> --- a/arch/arm/boot/compressed/head.S
> +++ b/arch/arm/boot/compressed/head.S
> @@ -64,17 +64,10 @@
>  		busyuart \tmp, \rb
>  		.endm
>  
> -#if defined(CONFIG_ARCH_SA1100)
> -		.macro	loadsp, rb, tmp1, tmp2
> -		mov	\rb, #0x80000000	@ physical base address
> -		add	\rb, \rb, #0x00010000	@ Ser1
> -		.endm
> -#else
>  		.macro	loadsp,	rb, tmp1, tmp2
>  		addruart \rb, \tmp1, \tmp2
>  		.endm
>  #endif
> -#endif
>  #endif
>  
>  		.macro	kputc,val
> diff --git a/arch/arm/common/Kconfig b/arch/arm/common/Kconfig
> index d2fdb1796f48..d72dccf6f3c2 100644
> --- a/arch/arm/common/Kconfig
> +++ b/arch/arm/common/Kconfig
> @@ -1,14 +1,7 @@
>  # SPDX-License-Identifier: GPL-2.0
> -config SA1111
> -	bool
> -	select ZONE_DMA if ARCH_SA1100
> -
>  config KRAIT_L2_ACCESSORS
>  	bool
>  
> -config SHARP_LOCOMO
> -	bool
> -
>  config SHARP_PARAM
>  	bool
>  
> diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile
> index 9733381074e0..e1bcc250874f 100644
> --- a/arch/arm/common/Makefile
> +++ b/arch/arm/common/Makefile
> @@ -5,9 +5,7 @@
>  
>  obj-y				+= firmware.o
>  
> -obj-$(CONFIG_SA1111)		+= sa1111.o
>  obj-$(CONFIG_KRAIT_L2_ACCESSORS) += krait-l2-accessors.o
> -obj-$(CONFIG_SHARP_LOCOMO)	+= locomo.o
>  obj-$(CONFIG_SHARP_PARAM)	+= sharpsl_param.o
>  obj-$(CONFIG_SHARP_SCOOP)	+= scoop.o
>  obj-$(CONFIG_CPU_V7)		+= secure_cntvoff.o
> diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
> deleted file mode 100644
> index 55e360452828..000000000000
> --- a/arch/arm/common/locomo.c
> +++ /dev/null
> @@ -1,886 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/common/locomo.c
> - *
> - * Sharp LoCoMo support
> - *
> - * This file contains all generic LoCoMo support.
> - *
> - * All initialization functions provided here are intended to be called
> - * from machine specific code with proper arguments when required.
> - *
> - * Based on sa1111.c
> - */
> -
> -#include <linux/module.h>
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/delay.h>
> -#include <linux/errno.h>
> -#include <linux/ioport.h>
> -#include <linux/platform_device.h>
> -#include <linux/slab.h>
> -#include <linux/spinlock.h>
> -#include <linux/io.h>
> -
> -#include <asm/irq.h>
> -#include <asm/mach/irq.h>
> -
> -#include <asm/hardware/locomo.h>
> -
> -/* LoCoMo Interrupts */
> -#define IRQ_LOCOMO_KEY		(0)
> -#define IRQ_LOCOMO_GPIO		(1)
> -#define IRQ_LOCOMO_LT		(2)
> -#define IRQ_LOCOMO_SPI		(3)
> -
> -/* M62332 output channel selection */
> -#define M62332_EVR_CH	1	/* M62332 volume channel number  */
> -				/*   0 : CH.1 , 1 : CH. 2        */
> -/* DAC send data */
> -#define	M62332_SLAVE_ADDR	0x4e	/* Slave address  */
> -#define	M62332_W_BIT		0x00	/* W bit (0 only) */
> -#define	M62332_SUB_ADDR		0x00	/* Sub address    */
> -#define	M62332_A_BIT		0x00	/* A bit (0 only) */
> -
> -/* DAC setup and hold times (expressed in us) */
> -#define DAC_BUS_FREE_TIME	5	/*   4.7 us */
> -#define DAC_START_SETUP_TIME	5	/*   4.7 us */
> -#define DAC_STOP_SETUP_TIME	4	/*   4.0 us */
> -#define DAC_START_HOLD_TIME	5	/*   4.7 us */
> -#define DAC_SCL_LOW_HOLD_TIME	5	/*   4.7 us */
> -#define DAC_SCL_HIGH_HOLD_TIME	4	/*   4.0 us */
> -#define DAC_DATA_SETUP_TIME	1	/*   250 ns */
> -#define DAC_DATA_HOLD_TIME	1	/*   300 ns */
> -#define DAC_LOW_SETUP_TIME	1	/*   300 ns */
> -#define DAC_HIGH_SETUP_TIME	1	/*  1000 ns */
> -
> -/* the following is the overall data for the locomo chip */
> -struct locomo {
> -	struct device *dev;
> -	unsigned long phys;
> -	unsigned int irq;
> -	int irq_base;
> -	spinlock_t lock;
> -	void __iomem *base;
> -#ifdef CONFIG_PM
> -	void *saved_state;
> -#endif
> -};
> -
> -static const struct bus_type locomo_bus_type;
> -
> -struct locomo_dev_info {
> -	unsigned long	offset;
> -	unsigned long	length;
> -	unsigned int	devid;
> -	unsigned int	irq[1];
> -	const char *	name;
> -};
> -
> -/* All the locomo devices.  If offset is non-zero, the mapbase for the
> - * locomo_dev will be set to the chip base plus offset.  If offset is
> - * zero, then the mapbase for the locomo_dev will be set to zero.  An
> - * offset of zero means the device only uses GPIOs or other helper
> - * functions inside this file */
> -static struct locomo_dev_info locomo_devices[] = {
> -	{
> -		.devid 		= LOCOMO_DEVID_KEYBOARD,
> -		.irq		= { IRQ_LOCOMO_KEY },
> -		.name		= "locomo-keyboard",
> -		.offset		= LOCOMO_KEYBOARD,
> -		.length		= 16,
> -	},
> -	{
> -		.devid		= LOCOMO_DEVID_FRONTLIGHT,
> -		.irq		= {},
> -		.name		= "locomo-frontlight",
> -		.offset		= LOCOMO_FRONTLIGHT,
> -		.length		= 8,
> -
> -	},
> -	{
> -		.devid		= LOCOMO_DEVID_BACKLIGHT,
> -		.irq		= {},
> -		.name		= "locomo-backlight",
> -		.offset		= LOCOMO_BACKLIGHT,
> -		.length		= 8,
> -	},
> -	{
> -		.devid		= LOCOMO_DEVID_AUDIO,
> -		.irq		= {},
> -		.name		= "locomo-audio",
> -		.offset		= LOCOMO_AUDIO,
> -		.length		= 4,
> -	},
> -	{
> -		.devid		= LOCOMO_DEVID_LED,
> -		.irq 		= {},
> -		.name		= "locomo-led",
> -		.offset		= LOCOMO_LED,
> -		.length		= 8,
> -	},
> -	{
> -		.devid		= LOCOMO_DEVID_UART,
> -		.irq		= {},
> -		.name		= "locomo-uart",
> -		.offset		= 0,
> -		.length		= 0,
> -	},
> -	{
> -		.devid		= LOCOMO_DEVID_SPI,
> -		.irq		= {},
> -		.name		= "locomo-spi",
> -		.offset		= LOCOMO_SPI,
> -		.length		= 0x30,
> -	},
> -};
> -
> -static void locomo_handler(struct irq_desc *desc)
> -{
> -	struct locomo *lchip = irq_desc_get_handler_data(desc);
> -	int req, i;
> -
> -	/* Acknowledge the parent IRQ */
> -	desc->irq_data.chip->irq_ack(&desc->irq_data);
> -
> -	/* check why this interrupt was generated */
> -	req = locomo_readl(lchip->base + LOCOMO_ICR) & 0x0f00;
> -
> -	if (req) {
> -		unsigned int irq;
> -
> -		/* generate the next interrupt(s) */
> -		irq = lchip->irq_base;
> -		for (i = 0; i <= 3; i++, irq++) {
> -			if (req & (0x0100 << i)) {
> -				generic_handle_irq(irq);
> -			}
> -
> -		}
> -	}
> -}
> -
> -static void locomo_ack_irq(struct irq_data *d)
> -{
> -}
> -
> -static void locomo_mask_irq(struct irq_data *d)
> -{
> -	struct locomo *lchip = irq_data_get_irq_chip_data(d);
> -	unsigned int r;
> -	r = locomo_readl(lchip->base + LOCOMO_ICR);
> -	r &= ~(0x0010 << (d->irq - lchip->irq_base));
> -	locomo_writel(r, lchip->base + LOCOMO_ICR);
> -}
> -
> -static void locomo_unmask_irq(struct irq_data *d)
> -{
> -	struct locomo *lchip = irq_data_get_irq_chip_data(d);
> -	unsigned int r;
> -	r = locomo_readl(lchip->base + LOCOMO_ICR);
> -	r |= (0x0010 << (d->irq - lchip->irq_base));
> -	locomo_writel(r, lchip->base + LOCOMO_ICR);
> -}
> -
> -static struct irq_chip locomo_chip = {
> -	.name		= "LOCOMO",
> -	.irq_ack	= locomo_ack_irq,
> -	.irq_mask	= locomo_mask_irq,
> -	.irq_unmask	= locomo_unmask_irq,
> -};
> -
> -static void locomo_setup_irq(struct locomo *lchip)
> -{
> -	int irq = lchip->irq_base;
> -
> -	/*
> -	 * Install handler for IRQ_LOCOMO_HW.
> -	 */
> -	irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
> -	irq_set_chained_handler_and_data(lchip->irq, locomo_handler, lchip);
> -
> -	/* Install handlers for IRQ_LOCOMO_* */
> -	for ( ; irq <= lchip->irq_base + 3; irq++) {
> -		irq_set_chip_and_handler(irq, &locomo_chip, handle_level_irq);
> -		irq_set_chip_data(irq, lchip);
> -		irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
> -	}
> -}
> -
> -
> -static void locomo_dev_release(struct device *_dev)
> -{
> -	struct locomo_dev *dev = LOCOMO_DEV(_dev);
> -
> -	kfree(dev);
> -}
> -
> -static int
> -locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info)
> -{
> -	struct locomo_dev *dev;
> -	int ret;
> -
> -	dev = kzalloc_obj(struct locomo_dev);
> -	if (!dev) {
> -		ret = -ENOMEM;
> -		goto out;
> -	}
> -
> -	/*
> -	 * If the parent device has a DMA mask associated with it,
> -	 * propagate it down to the children.
> -	 */
> -	if (lchip->dev->dma_mask) {
> -		dev->dma_mask = *lchip->dev->dma_mask;
> -		dev->dev.dma_mask = &dev->dma_mask;
> -	}
> -
> -	dev_set_name(&dev->dev, "%s", info->name);
> -	dev->devid	 = info->devid;
> -	dev->dev.parent  = lchip->dev;
> -	dev->dev.bus     = &locomo_bus_type;
> -	dev->dev.release = locomo_dev_release;
> -	dev->dev.coherent_dma_mask = lchip->dev->coherent_dma_mask;
> -
> -	if (info->offset)
> -		dev->mapbase = lchip->base + info->offset;
> -	else
> -		dev->mapbase = 0;
> -	dev->length = info->length;
> -
> -	dev->irq[0] = (lchip->irq_base == NO_IRQ) ?
> -			NO_IRQ : lchip->irq_base + info->irq[0];
> -
> -	ret = device_register(&dev->dev);
> -	if (ret) {
> - out:
> -		kfree(dev);
> -	}
> -	return ret;
> -}
> -
> -#ifdef CONFIG_PM
> -
> -struct locomo_save_data {
> -	u16	LCM_GPO;
> -	u16	LCM_SPICT;
> -	u16	LCM_GPE;
> -	u16	LCM_ASD;
> -	u16	LCM_SPIMD;
> -};
> -
> -static int locomo_suspend(struct platform_device *dev, pm_message_t state)
> -{
> -	struct locomo *lchip = platform_get_drvdata(dev);
> -	struct locomo_save_data *save;
> -	unsigned long flags;
> -
> -	save = kmalloc_obj(struct locomo_save_data);
> -	if (!save)
> -		return -ENOMEM;
> -
> -	lchip->saved_state = save;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -
> -	save->LCM_GPO     = locomo_readl(lchip->base + LOCOMO_GPO);	/* GPIO */
> -	locomo_writel(0x00, lchip->base + LOCOMO_GPO);
> -	save->LCM_SPICT   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT);	/* SPI */
> -	locomo_writel(0x40, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
> -	save->LCM_GPE     = locomo_readl(lchip->base + LOCOMO_GPE);	/* GPIO */
> -	locomo_writel(0x00, lchip->base + LOCOMO_GPE);
> -	save->LCM_ASD     = locomo_readl(lchip->base + LOCOMO_ASD);	/* ADSTART */
> -	locomo_writel(0x00, lchip->base + LOCOMO_ASD);
> -	save->LCM_SPIMD   = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);	/* SPI */
> -	locomo_writel(0x3C14, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
> -
> -	locomo_writel(0x00, lchip->base + LOCOMO_PAIF);
> -	locomo_writel(0x00, lchip->base + LOCOMO_DAC);
> -	locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC);
> -
> -	if ((locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88))
> -		locomo_writel(0x00, lchip->base + LOCOMO_C32K); 	/* CLK32 off */
> -	else
> -		/* 18MHz already enabled, so no wait */
> -		locomo_writel(0xc1, lchip->base + LOCOMO_C32K); 	/* CLK32 on */
> -
> -	locomo_writel(0x00, lchip->base + LOCOMO_TADC);		/* 18MHz clock off*/
> -	locomo_writel(0x00, lchip->base + LOCOMO_AUDIO + LOCOMO_ACC);			/* 22MHz/24MHz clock off */
> -	locomo_writel(0x00, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);			/* FL */
> -
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -
> -	return 0;
> -}
> -
> -static int locomo_resume(struct platform_device *dev)
> -{
> -	struct locomo *lchip = platform_get_drvdata(dev);
> -	struct locomo_save_data *save;
> -	unsigned long r;
> -	unsigned long flags;
> -
> -	save = lchip->saved_state;
> -	if (!save)
> -		return 0;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -
> -	locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO);
> -	locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
> -	locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE);
> -	locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD);
> -	locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
> -
> -	locomo_writel(0x00, lchip->base + LOCOMO_C32K);
> -	locomo_writel(0x90, lchip->base + LOCOMO_TADC);
> -
> -	locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KSC);
> -	r = locomo_readl(lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
> -	r &= 0xFEFF;
> -	locomo_writel(r, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
> -	locomo_writel(0x1, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KCMD);
> -
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -
> -	lchip->saved_state = NULL;
> -	kfree(save);
> -
> -	return 0;
> -}
> -#endif
> -
> -static int
> -__locomo_probe(struct device *me, struct resource *mem, int irq)
> -{
> -	struct locomo_platform_data *pdata = me->platform_data;
> -	struct locomo *lchip;
> -	unsigned long r;
> -	int i, ret = -ENODEV;
> -
> -	lchip = kzalloc_obj(struct locomo);
> -	if (!lchip)
> -		return -ENOMEM;
> -
> -	spin_lock_init(&lchip->lock);
> -
> -	lchip->dev = me;
> -	dev_set_drvdata(lchip->dev, lchip);
> -
> -	lchip->phys = mem->start;
> -	lchip->irq = irq;
> -	lchip->irq_base = (pdata) ? pdata->irq_base : NO_IRQ;
> -
> -	/*
> -	 * Map the whole region.  This also maps the
> -	 * registers for our children.
> -	 */
> -	lchip->base = ioremap(mem->start, PAGE_SIZE);
> -	if (!lchip->base) {
> -		ret = -ENOMEM;
> -		goto out;
> -	}
> -
> -	/* locomo initialize */
> -	locomo_writel(0, lchip->base + LOCOMO_ICR);
> -	/* KEYBOARD */
> -	locomo_writel(0, lchip->base + LOCOMO_KEYBOARD + LOCOMO_KIC);
> -
> -	/* GPIO */
> -	locomo_writel(0, lchip->base + LOCOMO_GPO);
> -	locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
> -			, lchip->base + LOCOMO_GPE);
> -	locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
> -			, lchip->base + LOCOMO_GPD);
> -	locomo_writel(0, lchip->base + LOCOMO_GIE);
> -
> -	/* Frontlight */
> -	locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
> -	locomo_writel(0, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
> -
> -	/* Longtime timer */
> -	locomo_writel(0, lchip->base + LOCOMO_LTINT);
> -	/* SPI */
> -	locomo_writel(0, lchip->base + LOCOMO_SPI + LOCOMO_SPIIE);
> -
> -	locomo_writel(6 + 8 + 320 + 30 - 10, lchip->base + LOCOMO_ASD);
> -	r = locomo_readl(lchip->base + LOCOMO_ASD);
> -	r |= 0x8000;
> -	locomo_writel(r, lchip->base + LOCOMO_ASD);
> -
> -	locomo_writel(6 + 8 + 320 + 30 - 10 - 128 + 4, lchip->base + LOCOMO_HSD);
> -	r = locomo_readl(lchip->base + LOCOMO_HSD);
> -	r |= 0x8000;
> -	locomo_writel(r, lchip->base + LOCOMO_HSD);
> -
> -	locomo_writel(128 / 8, lchip->base + LOCOMO_HSC);
> -
> -	/* XON */
> -	locomo_writel(0x80, lchip->base + LOCOMO_TADC);
> -	udelay(1000);
> -	/* CLK9MEN */
> -	r = locomo_readl(lchip->base + LOCOMO_TADC);
> -	r |= 0x10;
> -	locomo_writel(r, lchip->base + LOCOMO_TADC);
> -	udelay(100);
> -
> -	/* init DAC */
> -	r = locomo_readl(lchip->base + LOCOMO_DAC);
> -	r |= LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
> -	locomo_writel(r, lchip->base + LOCOMO_DAC);
> -
> -	r = locomo_readl(lchip->base + LOCOMO_VER);
> -	printk(KERN_INFO "LoCoMo Chip: %lu%lu\n", (r >> 8), (r & 0xff));
> -
> -	/*
> -	 * The interrupt controller must be initialised before any
> -	 * other device to ensure that the interrupts are available.
> -	 */
> -	if (lchip->irq != NO_IRQ && lchip->irq_base != NO_IRQ)
> -		locomo_setup_irq(lchip);
> -
> -	for (i = 0; i < ARRAY_SIZE(locomo_devices); i++)
> -		locomo_init_one_child(lchip, &locomo_devices[i]);
> -	return 0;
> -
> - out:
> -	kfree(lchip);
> -	return ret;
> -}
> -
> -static int locomo_remove_child(struct device *dev, void *data)
> -{
> -	device_unregister(dev);
> -	return 0;
> -} 
> -
> -static void __locomo_remove(struct locomo *lchip)
> -{
> -	device_for_each_child(lchip->dev, NULL, locomo_remove_child);
> -
> -	if (lchip->irq != NO_IRQ) {
> -		irq_set_chained_handler_and_data(lchip->irq, NULL, NULL);
> -	}
> -
> -	iounmap(lchip->base);
> -	kfree(lchip);
> -}
> -
> -/**
> - *	locomo_probe - probe for a single LoCoMo chip.
> - *	@dev: platform device
> - *
> - *	Probe for a LoCoMo chip.  This must be called
> - *	before any other locomo-specific code.
> - *
> - *	Returns:
> - *	* %-EINVAL	- device's IORESOURCE_MEM not found
> - *	* %-ENXIO	- could not allocate an IRQ for the device
> - *	* %-ENODEV	- device not found.
> - *	* %-EBUSY	- physical address already marked in-use.
> - *	* %-ENOMEM	- could not allocate or iomap memory.
> - *	* %0		- successful.
> - */
> -static int locomo_probe(struct platform_device *dev)
> -{
> -	struct resource *mem;
> -	int irq;
> -
> -	mem = platform_get_resource(dev, IORESOURCE_MEM, 0);
> -	if (!mem)
> -		return -EINVAL;
> -	irq = platform_get_irq(dev, 0);
> -	if (irq < 0)
> -		return -ENXIO;
> -
> -	return __locomo_probe(&dev->dev, mem, irq);
> -}
> -
> -static void locomo_remove(struct platform_device *dev)
> -{
> -	struct locomo *lchip = platform_get_drvdata(dev);
> -
> -	if (lchip) {
> -		__locomo_remove(lchip);
> -		platform_set_drvdata(dev, NULL);
> -	}
> -}
> -
> -/*
> - *	Not sure if this should be on the system bus or not yet.
> - *	We really want some way to register a system device at
> - *	the per-machine level, and then have this driver pick
> - *	up the registered devices.
> - */
> -static struct platform_driver locomo_device_driver = {
> -	.probe		= locomo_probe,
> -	.remove		= locomo_remove,
> -#ifdef CONFIG_PM
> -	.suspend	= locomo_suspend,
> -	.resume		= locomo_resume,
> -#endif
> -	.driver		= {
> -		.name	= "locomo",
> -	},
> -};
> -
> -/*
> - *	Get the parent device driver (us) structure
> - *	from a child function device
> - */
> -static inline struct locomo *locomo_chip_driver(struct locomo_dev *ldev)
> -{
> -	return (struct locomo *)dev_get_drvdata(ldev->dev.parent);
> -}
> -
> -void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir)
> -{
> -	struct locomo *lchip = dev_get_drvdata(dev);
> -	unsigned long flags;
> -	unsigned int r;
> -
> -	if (!lchip)
> -		return;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -
> -	r = locomo_readl(lchip->base + LOCOMO_GPD);
> -	if (dir)
> -		r |= bits;
> -	else
> -		r &= ~bits;
> -	locomo_writel(r, lchip->base + LOCOMO_GPD);
> -
> -	r = locomo_readl(lchip->base + LOCOMO_GPE);
> -	if (dir)
> -		r |= bits;
> -	else
> -		r &= ~bits;
> -	locomo_writel(r, lchip->base + LOCOMO_GPE);
> -
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -}
> -EXPORT_SYMBOL(locomo_gpio_set_dir);
> -
> -int locomo_gpio_read_level(struct device *dev, unsigned int bits)
> -{
> -	struct locomo *lchip = dev_get_drvdata(dev);
> -	unsigned long flags;
> -	unsigned int ret;
> -
> -	if (!lchip)
> -		return -ENODEV;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -	ret = locomo_readl(lchip->base + LOCOMO_GPL);
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -
> -	ret &= bits;
> -	return ret;
> -}
> -EXPORT_SYMBOL(locomo_gpio_read_level);
> -
> -int locomo_gpio_read_output(struct device *dev, unsigned int bits)
> -{
> -	struct locomo *lchip = dev_get_drvdata(dev);
> -	unsigned long flags;
> -	unsigned int ret;
> -
> -	if (!lchip)
> -		return -ENODEV;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -	ret = locomo_readl(lchip->base + LOCOMO_GPO);
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -
> -	ret &= bits;
> -	return ret;
> -}
> -EXPORT_SYMBOL(locomo_gpio_read_output);
> -
> -void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set)
> -{
> -	struct locomo *lchip = dev_get_drvdata(dev);
> -	unsigned long flags;
> -	unsigned int r;
> -
> -	if (!lchip)
> -		return;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -
> -	r = locomo_readl(lchip->base + LOCOMO_GPO);
> -	if (set)
> -		r |= bits;
> -	else
> -		r &= ~bits;
> -	locomo_writel(r, lchip->base + LOCOMO_GPO);
> -
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -}
> -EXPORT_SYMBOL(locomo_gpio_write);
> -
> -static void locomo_m62332_sendbit(void *mapbase, int bit)
> -{
> -	unsigned int r;
> -
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SCLOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	udelay(DAC_DATA_HOLD_TIME);	/* 300 nsec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SCLOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
> -
> -	if (bit & 1) {
> -		r = locomo_readl(mapbase + LOCOMO_DAC);
> -		r |=  LOCOMO_DAC_SDAOEB;
> -		locomo_writel(r, mapbase + LOCOMO_DAC);
> -		udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	} else {
> -		r = locomo_readl(mapbase + LOCOMO_DAC);
> -		r &=  ~(LOCOMO_DAC_SDAOEB);
> -		locomo_writel(r, mapbase + LOCOMO_DAC);
> -		udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	}
> -
> -	udelay(DAC_DATA_SETUP_TIME);	/* 250 nsec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/*  4.0 usec */
> -}
> -
> -void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel)
> -{
> -	struct locomo *lchip = locomo_chip_driver(ldev);
> -	int i;
> -	unsigned char data;
> -	unsigned int r;
> -	void *mapbase = lchip->base;
> -	unsigned long flags;
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -
> -	/* Start */
> -	udelay(DAC_BUS_FREE_TIME);	/* 5.0 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.0 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SDAOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_START_HOLD_TIME);	/* 5.0 usec */
> -	udelay(DAC_DATA_HOLD_TIME);	/* 300 nsec */
> -
> -	/* Send slave address and W bit (LSB is W bit) */
> -	data = (M62332_SLAVE_ADDR << 1) | M62332_W_BIT;
> -	for (i = 1; i <= 8; i++) {
> -		locomo_m62332_sendbit(mapbase, data >> (8 - i));
> -	}
> -
> -	/* Check A bit */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SCLOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SDAOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
> -	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
> -		printk(KERN_WARNING "locomo: m62332_senddata Error 1\n");
> -		goto out;
> -	}
> -
> -	/* Send Sub address (LSB is channel select) */
> -	/*    channel = 0 : ch1 select              */
> -	/*            = 1 : ch2 select              */
> -	data = M62332_SUB_ADDR + channel;
> -	for (i = 1; i <= 8; i++) {
> -		locomo_m62332_sendbit(mapbase, data >> (8 - i));
> -	}
> -
> -	/* Check A bit */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SCLOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SDAOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
> -	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
> -		printk(KERN_WARNING "locomo: m62332_senddata Error 2\n");
> -		goto out;
> -	}
> -
> -	/* Send DAC data */
> -	for (i = 1; i <= 8; i++) {
> -		locomo_m62332_sendbit(mapbase, dac_data >> (8 - i));
> -	}
> -
> -	/* Check A bit */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SCLOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SDAOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4.7 usec */
> -	if (locomo_readl(mapbase + LOCOMO_DAC) & LOCOMO_DAC_SDAOEB) {	/* High is error */
> -		printk(KERN_WARNING "locomo: m62332_senddata Error 3\n");
> -	}
> -
> -out:
> -	/* stop */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r &=  ~(LOCOMO_DAC_SCLOEB);
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 300 nsec */
> -	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4 usec */
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SDAOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_HIGH_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_HIGH_HOLD_TIME);	/* 4 usec */
> -
> -	r = locomo_readl(mapbase + LOCOMO_DAC);
> -	r |=  LOCOMO_DAC_SCLOEB | LOCOMO_DAC_SDAOEB;
> -	locomo_writel(r, mapbase + LOCOMO_DAC);
> -	udelay(DAC_LOW_SETUP_TIME);	/* 1000 nsec */
> -	udelay(DAC_SCL_LOW_HOLD_TIME);	/* 4.7 usec */
> -
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -}
> -EXPORT_SYMBOL(locomo_m62332_senddata);
> -
> -/*
> - *	Frontlight control
> - */
> -
> -void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf)
> -{
> -	unsigned long flags;
> -	struct locomo *lchip = locomo_chip_driver(dev);
> -
> -	if (vr)
> -		locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 1);
> -	else
> -		locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 0);
> -
> -	spin_lock_irqsave(&lchip->lock, flags);
> -	locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
> -	udelay(100);
> -	locomo_writel(duty, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALD);
> -	locomo_writel(bpwf | LOCOMO_ALC_EN, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
> -	spin_unlock_irqrestore(&lchip->lock, flags);
> -}
> -EXPORT_SYMBOL(locomo_frontlight_set);
> -
> -/*
> - *	LoCoMo "Register Access Bus."
> - *
> - *	We model this as a regular bus type, and hang devices directly
> - *	off this.
> - */
> -static int locomo_match(struct device *_dev, const struct device_driver *_drv)
> -{
> -	struct locomo_dev *dev = LOCOMO_DEV(_dev);
> -	const struct locomo_driver *drv = LOCOMO_DRV(_drv);
> -
> -	return dev->devid == drv->devid;
> -}
> -
> -static int locomo_bus_probe(struct device *dev)
> -{
> -	struct locomo_dev *ldev = LOCOMO_DEV(dev);
> -	struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
> -	int ret = -ENODEV;
> -
> -	if (drv->probe)
> -		ret = drv->probe(ldev);
> -	return ret;
> -}
> -
> -static void locomo_bus_remove(struct device *dev)
> -{
> -	struct locomo_dev *ldev = LOCOMO_DEV(dev);
> -	struct locomo_driver *drv = LOCOMO_DRV(dev->driver);
> -
> -	if (drv->remove)
> -		drv->remove(ldev);
> -}
> -
> -static const struct bus_type locomo_bus_type = {
> -	.name		= "locomo-bus",
> -	.match		= locomo_match,
> -	.probe		= locomo_bus_probe,
> -	.remove		= locomo_bus_remove,
> -};
> -
> -int locomo_driver_register(struct locomo_driver *driver)
> -{
> -	driver->drv.bus = &locomo_bus_type;
> -	return driver_register(&driver->drv);
> -}
> -EXPORT_SYMBOL(locomo_driver_register);
> -
> -void locomo_driver_unregister(struct locomo_driver *driver)
> -{
> -	driver_unregister(&driver->drv);
> -}
> -EXPORT_SYMBOL(locomo_driver_unregister);
> -
> -static int __init locomo_init(void)
> -{
> -	int ret = bus_register(&locomo_bus_type);
> -	if (ret == 0)
> -		platform_driver_register(&locomo_device_driver);
> -	return ret;
> -}
> -
> -static void __exit locomo_exit(void)
> -{
> -	platform_driver_unregister(&locomo_device_driver);
> -	bus_unregister(&locomo_bus_type);
> -}
> -
> -module_init(locomo_init);
> -module_exit(locomo_exit);
> -
> -MODULE_DESCRIPTION("Sharp LoCoMo core driver");
> -MODULE_LICENSE("GPL");
> -MODULE_AUTHOR("John Lenz <lenz@cs.wisc.edu>");
> diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
> deleted file mode 100644
> index a0f854cf4748..000000000000
> --- a/arch/arm/common/sa1111.c
> +++ /dev/null
> @@ -1,1413 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/common/sa1111.c
> - *
> - * SA1111 support
> - *
> - * Original code by John Dorsey
> - *
> - * This file contains all generic SA1111 support.
> - *
> - * All initialization functions provided here are intended to be called
> - * from machine specific code with proper arguments when required.
> - */
> -#include <linux/module.h>
> -#include <linux/gpio/driver.h>
> -#include <linux/init.h>
> -#include <linux/irq.h>
> -#include <linux/kernel.h>
> -#include <linux/delay.h>
> -#include <linux/errno.h>
> -#include <linux/ioport.h>
> -#include <linux/platform_device.h>
> -#include <linux/slab.h>
> -#include <linux/spinlock.h>
> -#include <linux/dma-map-ops.h>
> -#include <linux/clk.h>
> -#include <linux/io.h>
> -
> -#include <asm/mach/irq.h>
> -#include <asm/mach-types.h>
> -#include <linux/sizes.h>
> -
> -#include <asm/hardware/sa1111.h>
> -
> -#ifdef CONFIG_ARCH_SA1100
> -#include <mach/hardware.h>
> -#endif
> -
> -/* SA1111 IRQs */
> -#define IRQ_GPAIN0		(0)
> -#define IRQ_GPAIN1		(1)
> -#define IRQ_GPAIN2		(2)
> -#define IRQ_GPAIN3		(3)
> -#define IRQ_GPBIN0		(4)
> -#define IRQ_GPBIN1		(5)
> -#define IRQ_GPBIN2		(6)
> -#define IRQ_GPBIN3		(7)
> -#define IRQ_GPBIN4		(8)
> -#define IRQ_GPBIN5		(9)
> -#define IRQ_GPCIN0		(10)
> -#define IRQ_GPCIN1		(11)
> -#define IRQ_GPCIN2		(12)
> -#define IRQ_GPCIN3		(13)
> -#define IRQ_GPCIN4		(14)
> -#define IRQ_GPCIN5		(15)
> -#define IRQ_GPCIN6		(16)
> -#define IRQ_GPCIN7		(17)
> -#define IRQ_MSTXINT		(18)
> -#define IRQ_MSRXINT		(19)
> -#define IRQ_MSSTOPERRINT	(20)
> -#define IRQ_TPTXINT		(21)
> -#define IRQ_TPRXINT		(22)
> -#define IRQ_TPSTOPERRINT	(23)
> -#define SSPXMTINT		(24)
> -#define SSPRCVINT		(25)
> -#define SSPROR			(26)
> -#define AUDXMTDMADONEA		(32)
> -#define AUDRCVDMADONEA		(33)
> -#define AUDXMTDMADONEB		(34)
> -#define AUDRCVDMADONEB		(35)
> -#define AUDTFSR			(36)
> -#define AUDRFSR			(37)
> -#define AUDTUR			(38)
> -#define AUDROR			(39)
> -#define AUDDTS			(40)
> -#define AUDRDD			(41)
> -#define AUDSTO			(42)
> -#define IRQ_USBPWR		(43)
> -#define IRQ_HCIM		(44)
> -#define IRQ_HCIBUFFACC		(45)
> -#define IRQ_HCIRMTWKP		(46)
> -#define IRQ_NHCIMFCIR		(47)
> -#define IRQ_USB_PORT_RESUME	(48)
> -#define IRQ_S0_READY_NINT	(49)
> -#define IRQ_S1_READY_NINT	(50)
> -#define IRQ_S0_CD_VALID		(51)
> -#define IRQ_S1_CD_VALID		(52)
> -#define IRQ_S0_BVD1_STSCHG	(53)
> -#define IRQ_S1_BVD1_STSCHG	(54)
> -#define SA1111_IRQ_NR		(55)
> -
> -extern void sa1110_mb_enable(void);
> -extern void sa1110_mb_disable(void);
> -
> -/*
> - * We keep the following data for the overall SA1111.  Note that the
> - * struct device and struct resource are "fake"; they should be supplied
> - * by the bus above us.  However, in the interests of getting all SA1111
> - * drivers converted over to the device model, we provide this as an
> - * anchor point for all the other drivers.
> - */
> -struct sa1111 {
> -	struct device	*dev;
> -	struct clk	*clk;
> -	unsigned long	phys;
> -	int		irq;
> -	int		irq_base;	/* base for cascaded on-chip IRQs */
> -	spinlock_t	lock;
> -	void __iomem	*base;
> -	struct sa1111_platform_data *pdata;
> -	struct irq_domain *irqdomain;
> -	struct gpio_chip gc;
> -#ifdef CONFIG_PM
> -	void		*saved_state;
> -#endif
> -};
> -
> -/*
> - * We _really_ need to eliminate this.  Its only users
> - * are the PWM and DMA checking code.
> - */
> -static struct sa1111 *g_sa1111;
> -
> -struct sa1111_dev_info {
> -	unsigned long	offset;
> -	unsigned long	skpcr_mask;
> -	bool		dma;
> -	unsigned int	devid;
> -	unsigned int	hwirq[6];
> -};
> -
> -static struct sa1111_dev_info sa1111_devices[] = {
> -	{
> -		.offset		= SA1111_USB,
> -		.skpcr_mask	= SKPCR_UCLKEN,
> -		.dma		= true,
> -		.devid		= SA1111_DEVID_USB,
> -		.hwirq = {
> -			IRQ_USBPWR,
> -			IRQ_HCIM,
> -			IRQ_HCIBUFFACC,
> -			IRQ_HCIRMTWKP,
> -			IRQ_NHCIMFCIR,
> -			IRQ_USB_PORT_RESUME
> -		},
> -	},
> -	{
> -		.offset		= 0x0600,
> -		.skpcr_mask	= SKPCR_I2SCLKEN | SKPCR_L3CLKEN,
> -		.dma		= true,
> -		.devid		= SA1111_DEVID_SAC,
> -		.hwirq = {
> -			AUDXMTDMADONEA,
> -			AUDXMTDMADONEB,
> -			AUDRCVDMADONEA,
> -			AUDRCVDMADONEB
> -		},
> -	},
> -	{
> -		.offset		= 0x0800,
> -		.skpcr_mask	= SKPCR_SCLKEN,
> -		.devid		= SA1111_DEVID_SSP,
> -	},
> -	{
> -		.offset		= SA1111_KBD,
> -		.skpcr_mask	= SKPCR_PTCLKEN,
> -		.devid		= SA1111_DEVID_PS2_KBD,
> -		.hwirq = {
> -			IRQ_TPRXINT,
> -			IRQ_TPTXINT
> -		},
> -	},
> -	{
> -		.offset		= SA1111_MSE,
> -		.skpcr_mask	= SKPCR_PMCLKEN,
> -		.devid		= SA1111_DEVID_PS2_MSE,
> -		.hwirq = {
> -			IRQ_MSRXINT,
> -			IRQ_MSTXINT
> -		},
> -	},
> -	{
> -		.offset		= 0x1800,
> -		.skpcr_mask	= 0,
> -		.devid		= SA1111_DEVID_PCMCIA,
> -		.hwirq = {
> -			IRQ_S0_READY_NINT,
> -			IRQ_S0_CD_VALID,
> -			IRQ_S0_BVD1_STSCHG,
> -			IRQ_S1_READY_NINT,
> -			IRQ_S1_CD_VALID,
> -			IRQ_S1_BVD1_STSCHG,
> -		},
> -	},
> -};
> -
> -static int sa1111_map_irq(struct sa1111 *sachip, irq_hw_number_t hwirq)
> -{
> -	return irq_create_mapping(sachip->irqdomain, hwirq);
> -}
> -
> -/*
> - * SA1111 interrupt support.  Since clearing an IRQ while there are
> - * active IRQs causes the interrupt output to pulse, the upper levels
> - * will call us again if there are more interrupts to process.
> - */
> -static void sa1111_irq_handler(struct irq_desc *desc)
> -{
> -	unsigned int stat0, stat1, i;
> -	struct sa1111 *sachip = irq_desc_get_handler_data(desc);
> -	struct irq_domain *irqdomain;
> -	void __iomem *mapbase = sachip->base + SA1111_INTC;
> -
> -	stat0 = readl_relaxed(mapbase + SA1111_INTSTATCLR0);
> -	stat1 = readl_relaxed(mapbase + SA1111_INTSTATCLR1);
> -
> -	writel_relaxed(stat0, mapbase + SA1111_INTSTATCLR0);
> -
> -	desc->irq_data.chip->irq_ack(&desc->irq_data);
> -
> -	writel_relaxed(stat1, mapbase + SA1111_INTSTATCLR1);
> -
> -	if (stat0 == 0 && stat1 == 0) {
> -		handle_bad_irq(desc);
> -		return;
> -	}
> -
> -	irqdomain = sachip->irqdomain;
> -
> -	for (i = 0; stat0; i++, stat0 >>= 1)
> -		if (stat0 & 1)
> -			generic_handle_domain_irq(irqdomain, i);
> -
> -	for (i = 32; stat1; i++, stat1 >>= 1)
> -		if (stat1 & 1)
> -			generic_handle_domain_irq(irqdomain, i);
> -
> -	/* For level-based interrupts */
> -	desc->irq_data.chip->irq_unmask(&desc->irq_data);
> -}
> -
> -static u32 sa1111_irqmask(struct irq_data *d)
> -{
> -	return BIT(irqd_to_hwirq(d) & 31);
> -}
> -
> -static int sa1111_irqbank(struct irq_data *d)
> -{
> -	return (irqd_to_hwirq(d) / 32) * 4;
> -}
> -
> -static void sa1111_ack_irq(struct irq_data *d)
> -{
> -}
> -
> -static void sa1111_mask_irq(struct irq_data *d)
> -{
> -	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
> -	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
> -	u32 ie;
> -
> -	ie = readl_relaxed(mapbase + SA1111_INTEN0);
> -	ie &= ~sa1111_irqmask(d);
> -	writel(ie, mapbase + SA1111_INTEN0);
> -}
> -
> -static void sa1111_unmask_irq(struct irq_data *d)
> -{
> -	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
> -	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
> -	u32 ie;
> -
> -	ie = readl_relaxed(mapbase + SA1111_INTEN0);
> -	ie |= sa1111_irqmask(d);
> -	writel_relaxed(ie, mapbase + SA1111_INTEN0);
> -}
> -
> -/*
> - * Attempt to re-trigger the interrupt.  The SA1111 contains a register
> - * (INTSET) which claims to do this.  However, in practice no amount of
> - * manipulation of INTEN and INTSET guarantees that the interrupt will
> - * be triggered.  In fact, its very difficult, if not impossible to get
> - * INTSET to re-trigger the interrupt.
> - */
> -static int sa1111_retrigger_irq(struct irq_data *d)
> -{
> -	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
> -	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
> -	u32 ip, mask = sa1111_irqmask(d);
> -	int i;
> -
> -	ip = readl_relaxed(mapbase + SA1111_INTPOL0);
> -	for (i = 0; i < 8; i++) {
> -		writel_relaxed(ip ^ mask, mapbase + SA1111_INTPOL0);
> -		writel_relaxed(ip, mapbase + SA1111_INTPOL0);
> -		if (readl_relaxed(mapbase + SA1111_INTSTATCLR0) & mask)
> -			break;
> -	}
> -
> -	if (i == 8) {
> -		pr_err("Danger Will Robinson: failed to re-trigger IRQ%d\n",
> -		       d->irq);
> -		return 0;
> -	}
> -
> -	return 1;
> -}
> -
> -static int sa1111_type_irq(struct irq_data *d, unsigned int flags)
> -{
> -	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
> -	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
> -	u32 ip, mask = sa1111_irqmask(d);
> -
> -	if (flags == IRQ_TYPE_PROBE)
> -		return 0;
> -
> -	if ((!(flags & IRQ_TYPE_EDGE_RISING) ^ !(flags & IRQ_TYPE_EDGE_FALLING)) == 0)
> -		return -EINVAL;
> -
> -	ip = readl_relaxed(mapbase + SA1111_INTPOL0);
> -	if (flags & IRQ_TYPE_EDGE_RISING)
> -		ip &= ~mask;
> -	else
> -		ip |= mask;
> -	writel_relaxed(ip, mapbase + SA1111_INTPOL0);
> -	writel_relaxed(ip, mapbase + SA1111_WAKEPOL0);
> -
> -	return 0;
> -}
> -
> -static int sa1111_wake_irq(struct irq_data *d, unsigned int on)
> -{
> -	struct sa1111 *sachip = irq_data_get_irq_chip_data(d);
> -	void __iomem *mapbase = sachip->base + SA1111_INTC + sa1111_irqbank(d);
> -	u32 we, mask = sa1111_irqmask(d);
> -
> -	we = readl_relaxed(mapbase + SA1111_WAKEEN0);
> -	if (on)
> -		we |= mask;
> -	else
> -		we &= ~mask;
> -	writel_relaxed(we, mapbase + SA1111_WAKEEN0);
> -
> -	return 0;
> -}
> -
> -static struct irq_chip sa1111_irq_chip = {
> -	.name		= "SA1111",
> -	.irq_ack	= sa1111_ack_irq,
> -	.irq_mask	= sa1111_mask_irq,
> -	.irq_unmask	= sa1111_unmask_irq,
> -	.irq_retrigger	= sa1111_retrigger_irq,
> -	.irq_set_type	= sa1111_type_irq,
> -	.irq_set_wake	= sa1111_wake_irq,
> -};
> -
> -static int sa1111_irqdomain_map(struct irq_domain *d, unsigned int irq,
> -	irq_hw_number_t hwirq)
> -{
> -	struct sa1111 *sachip = d->host_data;
> -
> -	/* Disallow unavailable interrupts */
> -	if (hwirq > SSPROR && hwirq < AUDXMTDMADONEA)
> -		return -EINVAL;
> -
> -	irq_set_chip_data(irq, sachip);
> -	irq_set_chip_and_handler(irq, &sa1111_irq_chip, handle_edge_irq);
> -	irq_clear_status_flags(irq, IRQ_NOREQUEST | IRQ_NOPROBE);
> -
> -	return 0;
> -}
> -
> -static const struct irq_domain_ops sa1111_irqdomain_ops = {
> -	.map = sa1111_irqdomain_map,
> -	.xlate = irq_domain_xlate_twocell,
> -};
> -
> -static int sa1111_setup_irq(struct sa1111 *sachip, unsigned irq_base)
> -{
> -	void __iomem *irqbase = sachip->base + SA1111_INTC;
> -	int ret;
> -
> -	/*
> -	 * We're guaranteed that this region hasn't been taken.
> -	 */
> -	request_mem_region(sachip->phys + SA1111_INTC, 512, "irq");
> -
> -	ret = irq_alloc_descs(-1, irq_base, SA1111_IRQ_NR, -1);
> -	if (ret <= 0) {
> -		dev_err(sachip->dev, "unable to allocate %u irqs: %d\n",
> -			SA1111_IRQ_NR, ret);
> -		if (ret == 0)
> -			ret = -EINVAL;
> -		return ret;
> -	}
> -
> -	sachip->irq_base = ret;
> -
> -	/* disable all IRQs */
> -	writel_relaxed(0, irqbase + SA1111_INTEN0);
> -	writel_relaxed(0, irqbase + SA1111_INTEN1);
> -	writel_relaxed(0, irqbase + SA1111_WAKEEN0);
> -	writel_relaxed(0, irqbase + SA1111_WAKEEN1);
> -
> -	/*
> -	 * detect on rising edge.  Note: Feb 2001 Errata for SA1111
> -	 * specifies that S0ReadyInt and S1ReadyInt should be '1'.
> -	 */
> -	writel_relaxed(0, irqbase + SA1111_INTPOL0);
> -	writel_relaxed(BIT(IRQ_S0_READY_NINT & 31) |
> -		       BIT(IRQ_S1_READY_NINT & 31),
> -		       irqbase + SA1111_INTPOL1);
> -
> -	/* clear all IRQs */
> -	writel_relaxed(~0, irqbase + SA1111_INTSTATCLR0);
> -	writel_relaxed(~0, irqbase + SA1111_INTSTATCLR1);
> -
> -	sachip->irqdomain = irq_domain_create_linear(NULL, SA1111_IRQ_NR,
> -						     &sa1111_irqdomain_ops,
> -						     sachip);
> -	if (!sachip->irqdomain) {
> -		irq_free_descs(sachip->irq_base, SA1111_IRQ_NR);
> -		return -ENOMEM;
> -	}
> -
> -	irq_domain_associate_many(sachip->irqdomain,
> -				  sachip->irq_base + IRQ_GPAIN0,
> -				  IRQ_GPAIN0, SSPROR + 1 - IRQ_GPAIN0);
> -	irq_domain_associate_many(sachip->irqdomain,
> -				  sachip->irq_base + AUDXMTDMADONEA,
> -				  AUDXMTDMADONEA,
> -				  IRQ_S1_BVD1_STSCHG + 1 - AUDXMTDMADONEA);
> -
> -	/*
> -	 * Register SA1111 interrupt
> -	 */
> -	irq_set_irq_type(sachip->irq, IRQ_TYPE_EDGE_RISING);
> -	irq_set_chained_handler_and_data(sachip->irq, sa1111_irq_handler,
> -					 sachip);
> -
> -	dev_info(sachip->dev, "Providing IRQ%u-%u\n",
> -		sachip->irq_base, sachip->irq_base + SA1111_IRQ_NR - 1);
> -
> -	return 0;
> -}
> -
> -static void sa1111_remove_irq(struct sa1111 *sachip)
> -{
> -	struct irq_domain *domain = sachip->irqdomain;
> -	void __iomem *irqbase = sachip->base + SA1111_INTC;
> -	int i;
> -
> -	/* disable all IRQs */
> -	writel_relaxed(0, irqbase + SA1111_INTEN0);
> -	writel_relaxed(0, irqbase + SA1111_INTEN1);
> -	writel_relaxed(0, irqbase + SA1111_WAKEEN0);
> -	writel_relaxed(0, irqbase + SA1111_WAKEEN1);
> -
> -	irq_set_chained_handler_and_data(sachip->irq, NULL, NULL);
> -	for (i = 0; i < SA1111_IRQ_NR; i++)
> -		irq_dispose_mapping(irq_find_mapping(domain, i));
> -	irq_domain_remove(domain);
> -
> -	release_mem_region(sachip->phys + SA1111_INTC, 512);
> -}
> -
> -enum {
> -	SA1111_GPIO_PXDDR = (SA1111_GPIO_PADDR - SA1111_GPIO_PADDR),
> -	SA1111_GPIO_PXDRR = (SA1111_GPIO_PADRR - SA1111_GPIO_PADDR),
> -	SA1111_GPIO_PXDWR = (SA1111_GPIO_PADWR - SA1111_GPIO_PADDR),
> -	SA1111_GPIO_PXSDR = (SA1111_GPIO_PASDR - SA1111_GPIO_PADDR),
> -	SA1111_GPIO_PXSSR = (SA1111_GPIO_PASSR - SA1111_GPIO_PADDR),
> -};
> -
> -static struct sa1111 *gc_to_sa1111(struct gpio_chip *gc)
> -{
> -	return container_of(gc, struct sa1111, gc);
> -}
> -
> -static void __iomem *sa1111_gpio_map_reg(struct sa1111 *sachip, unsigned offset)
> -{
> -	void __iomem *reg = sachip->base + SA1111_GPIO;
> -
> -	if (offset < 4)
> -		return reg + SA1111_GPIO_PADDR;
> -	if (offset < 10)
> -		return reg + SA1111_GPIO_PBDDR;
> -	if (offset < 18)
> -		return reg + SA1111_GPIO_PCDDR;
> -	return NULL;
> -}
> -
> -static u32 sa1111_gpio_map_bit(unsigned offset)
> -{
> -	if (offset < 4)
> -		return BIT(offset);
> -	if (offset < 10)
> -		return BIT(offset - 4);
> -	if (offset < 18)
> -		return BIT(offset - 10);
> -	return 0;
> -}
> -
> -static void sa1111_gpio_modify(void __iomem *reg, u32 mask, u32 set)
> -{
> -	u32 val;
> -
> -	val = readl_relaxed(reg);
> -	val &= ~mask;
> -	val |= mask & set;
> -	writel_relaxed(val, reg);
> -}
> -
> -static int sa1111_gpio_get_direction(struct gpio_chip *gc, unsigned offset)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
> -	u32 mask = sa1111_gpio_map_bit(offset);
> -
> -	return !!(readl_relaxed(reg + SA1111_GPIO_PXDDR) & mask);
> -}
> -
> -static int sa1111_gpio_direction_input(struct gpio_chip *gc, unsigned offset)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -	unsigned long flags;
> -	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
> -	u32 mask = sa1111_gpio_map_bit(offset);
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXDDR, mask, mask);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXSDR, mask, mask);
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -	return 0;
> -}
> -
> -static int sa1111_gpio_direction_output(struct gpio_chip *gc, unsigned offset,
> -	int value)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -	unsigned long flags;
> -	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
> -	u32 mask = sa1111_gpio_map_bit(offset);
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXDWR, mask, value ? mask : 0);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXSSR, mask, value ? mask : 0);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXDDR, mask, 0);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXSDR, mask, 0);
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -	return 0;
> -}
> -
> -static int sa1111_gpio_get(struct gpio_chip *gc, unsigned offset)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
> -	u32 mask = sa1111_gpio_map_bit(offset);
> -
> -	return !!(readl_relaxed(reg + SA1111_GPIO_PXDRR) & mask);
> -}
> -
> -static int sa1111_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -	unsigned long flags;
> -	void __iomem *reg = sa1111_gpio_map_reg(sachip, offset);
> -	u32 mask = sa1111_gpio_map_bit(offset);
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXDWR, mask, value ? mask : 0);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PXSSR, mask, value ? mask : 0);
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -	return 0;
> -}
> -
> -static int sa1111_gpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
> -				    unsigned long *bits)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -	unsigned long flags;
> -	void __iomem *reg = sachip->base + SA1111_GPIO;
> -	u32 msk, val;
> -
> -	msk = *mask;
> -	val = *bits;
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PADWR, msk & 15, val);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PASSR, msk & 15, val);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PBDWR, (msk >> 4) & 255, val >> 4);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PBSSR, (msk >> 4) & 255, val >> 4);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PCDWR, (msk >> 12) & 255, val >> 12);
> -	sa1111_gpio_modify(reg + SA1111_GPIO_PCSSR, (msk >> 12) & 255, val >> 12);
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -	return 0;
> -}
> -
> -static int sa1111_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
> -{
> -	struct sa1111 *sachip = gc_to_sa1111(gc);
> -
> -	return sa1111_map_irq(sachip, offset);
> -}
> -
> -static int sa1111_setup_gpios(struct sa1111 *sachip)
> -{
> -	sachip->gc.label = "sa1111";
> -	sachip->gc.parent = sachip->dev;
> -	sachip->gc.owner = THIS_MODULE;
> -	sachip->gc.get_direction = sa1111_gpio_get_direction;
> -	sachip->gc.direction_input = sa1111_gpio_direction_input;
> -	sachip->gc.direction_output = sa1111_gpio_direction_output;
> -	sachip->gc.get = sa1111_gpio_get;
> -	sachip->gc.set = sa1111_gpio_set;
> -	sachip->gc.set_multiple = sa1111_gpio_set_multiple;
> -	sachip->gc.to_irq = sa1111_gpio_to_irq;
> -	sachip->gc.base = -1;
> -	sachip->gc.ngpio = 18;
> -
> -	return devm_gpiochip_add_data(sachip->dev, &sachip->gc, sachip);
> -}
> -
> -/*
> - * Bring the SA1111 out of reset.  This requires a set procedure:
> - *  1. nRESET asserted (by hardware)
> - *  2. CLK turned on from SA1110
> - *  3. nRESET deasserted
> - *  4. VCO turned on, PLL_BYPASS turned off
> - *  5. Wait lock time, then assert RCLKEn
> - *  7. PCR set to allow clocking of individual functions
> - *
> - * Until we've done this, the only registers we can access are:
> - *   SBI_SKCR
> - *   SBI_SMCR
> - *   SBI_SKID
> - */
> -static void sa1111_wake(struct sa1111 *sachip)
> -{
> -	unsigned long flags, r;
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -
> -	clk_enable(sachip->clk);
> -
> -	/*
> -	 * Turn VCO on, and disable PLL Bypass.
> -	 */
> -	r = readl_relaxed(sachip->base + SA1111_SKCR);
> -	r &= ~SKCR_VCO_OFF;
> -	writel_relaxed(r, sachip->base + SA1111_SKCR);
> -	r |= SKCR_PLL_BYPASS | SKCR_OE_EN;
> -	writel_relaxed(r, sachip->base + SA1111_SKCR);
> -
> -	/*
> -	 * Wait lock time.  SA1111 manual _doesn't_
> -	 * specify a figure for this!  We choose 100us.
> -	 */
> -	udelay(100);
> -
> -	/*
> -	 * Enable RCLK.  We also ensure that RDYEN is set.
> -	 */
> -	r |= SKCR_RCLKEN | SKCR_RDYEN;
> -	writel_relaxed(r, sachip->base + SA1111_SKCR);
> -
> -	/*
> -	 * Wait 14 RCLK cycles for the chip to finish coming out
> -	 * of reset. (RCLK=24MHz).  This is 590ns.
> -	 */
> -	udelay(1);
> -
> -	/*
> -	 * Ensure all clocks are initially off.
> -	 */
> -	writel_relaxed(0, sachip->base + SA1111_SKPCR);
> -
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -}
> -
> -#ifdef CONFIG_ARCH_SA1100
> -
> -static u32 sa1111_dma_mask[] = {
> -	~0,
> -	~(1 << 20),
> -	~(1 << 23),
> -	~(1 << 24),
> -	~(1 << 25),
> -	~(1 << 20),
> -	~(1 << 20),
> -	0,
> -};
> -
> -/*
> - * Configure the SA1111 shared memory controller.
> - */
> -static void
> -sa1111_configure_smc(struct sa1111 *sachip, int sdram, unsigned int drac,
> -		     unsigned int cas_latency)
> -{
> -	unsigned int smcr = SMCR_DTIM | SMCR_MBGE | FInsrt(drac, SMCR_DRAC);
> -
> -	if (cas_latency == 3)
> -		smcr |= SMCR_CLAT;
> -
> -	writel_relaxed(smcr, sachip->base + SA1111_SMCR);
> -
> -	/*
> -	 * Now clear the bits in the DMA mask to work around the SA1111
> -	 * DMA erratum (Intel StrongARM SA-1111 Microprocessor Companion
> -	 * Chip Specification Update, June 2000, Erratum #7).
> -	 */
> -	if (sachip->dev->dma_mask)
> -		*sachip->dev->dma_mask &= sa1111_dma_mask[drac >> 2];
> -
> -	sachip->dev->coherent_dma_mask &= sa1111_dma_mask[drac >> 2];
> -}
> -#endif
> -
> -static void sa1111_dev_release(struct device *_dev)
> -{
> -	struct sa1111_dev *dev = to_sa1111_device(_dev);
> -
> -	kfree(dev);
> -}
> -
> -static int
> -sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
> -		      struct sa1111_dev_info *info)
> -{
> -	struct sa1111_dev *dev;
> -	unsigned i;
> -	int ret;
> -
> -	dev = kzalloc_obj(struct sa1111_dev);
> -	if (!dev) {
> -		ret = -ENOMEM;
> -		goto err_alloc;
> -	}
> -
> -	device_initialize(&dev->dev);
> -	dev_set_name(&dev->dev, "%4.4lx", info->offset);
> -	dev->devid	 = info->devid;
> -	dev->dev.parent  = sachip->dev;
> -	dev->dev.bus     = &sa1111_bus_type;
> -	dev->dev.release = sa1111_dev_release;
> -	dev->res.start   = sachip->phys + info->offset;
> -	dev->res.end     = dev->res.start + 511;
> -	dev->res.name    = dev_name(&dev->dev);
> -	dev->res.flags   = IORESOURCE_MEM;
> -	dev->mapbase     = sachip->base + info->offset;
> -	dev->skpcr_mask  = info->skpcr_mask;
> -
> -	for (i = 0; i < ARRAY_SIZE(info->hwirq); i++)
> -		dev->hwirq[i] = info->hwirq[i];
> -
> -	/*
> -	 * If the parent device has a DMA mask associated with it, and
> -	 * this child supports DMA, propagate it down to the children.
> -	 */
> -	if (info->dma && sachip->dev->dma_mask) {
> -		dev->dma_mask = *sachip->dev->dma_mask;
> -		dev->dev.dma_mask = &dev->dma_mask;
> -		dev->dev.coherent_dma_mask = sachip->dev->coherent_dma_mask;
> -	}
> -
> -	ret = request_resource(parent, &dev->res);
> -	if (ret) {
> -		dev_err(sachip->dev, "failed to allocate resource for %s\n",
> -			dev->res.name);
> -		goto err_resource;
> -	}
> -
> -	ret = device_add(&dev->dev);
> -	if (ret)
> -		goto err_add;
> -	return 0;
> -
> - err_add:
> -	release_resource(&dev->res);
> - err_resource:
> -	put_device(&dev->dev);
> - err_alloc:
> -	return ret;
> -}
> -
> -static int __sa1111_probe(struct device *me, struct resource *mem, int irq)
> -{
> -	struct sa1111_platform_data *pd = me->platform_data;
> -	struct sa1111 *sachip;
> -	unsigned long id;
> -	unsigned int has_devs;
> -	int i, ret = -ENODEV;
> -
> -	if (!pd)
> -		return -EINVAL;
> -
> -	sachip = devm_kzalloc(me, sizeof(struct sa1111), GFP_KERNEL);
> -	if (!sachip)
> -		return -ENOMEM;
> -
> -	sachip->clk = devm_clk_get(me, "SA1111_CLK");
> -	if (IS_ERR(sachip->clk))
> -		return PTR_ERR(sachip->clk);
> -
> -	ret = clk_prepare(sachip->clk);
> -	if (ret)
> -		return ret;
> -
> -	spin_lock_init(&sachip->lock);
> -
> -	sachip->dev = me;
> -	dev_set_drvdata(sachip->dev, sachip);
> -
> -	sachip->pdata = pd;
> -	sachip->phys = mem->start;
> -	sachip->irq = irq;
> -
> -	/*
> -	 * Map the whole region.  This also maps the
> -	 * registers for our children.
> -	 */
> -	sachip->base = ioremap(mem->start, PAGE_SIZE * 2);
> -	if (!sachip->base) {
> -		ret = -ENOMEM;
> -		goto err_clk_unprep;
> -	}
> -
> -	/*
> -	 * Probe for the chip.  Only touch the SBI registers.
> -	 */
> -	id = readl_relaxed(sachip->base + SA1111_SKID);
> -	if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
> -		printk(KERN_DEBUG "SA1111 not detected: ID = %08lx\n", id);
> -		ret = -ENODEV;
> -		goto err_unmap;
> -	}
> -
> -	pr_info("SA1111 Microprocessor Companion Chip: silicon revision %lx, metal revision %lx\n",
> -		(id & SKID_SIREV_MASK) >> 4, id & SKID_MTREV_MASK);
> -
> -	/*
> -	 * We found it.  Wake the chip up, and initialise.
> -	 */
> -	sa1111_wake(sachip);
> -
> -	/*
> -	 * The interrupt controller must be initialised before any
> -	 * other device to ensure that the interrupts are available.
> -	 */
> -	ret = sa1111_setup_irq(sachip, pd->irq_base);
> -	if (ret)
> -		goto err_clk;
> -
> -	/* Setup the GPIOs - should really be done after the IRQ setup */
> -	ret = sa1111_setup_gpios(sachip);
> -	if (ret)
> -		goto err_irq;
> -
> -#ifdef CONFIG_ARCH_SA1100
> -	{
> -	unsigned int val;
> -
> -	/*
> -	 * The SDRAM configuration of the SA1110 and the SA1111 must
> -	 * match.  This is very important to ensure that SA1111 accesses
> -	 * don't corrupt the SDRAM.  Note that this ungates the SA1111's
> -	 * MBGNT signal, so we must have called sa1110_mb_disable()
> -	 * beforehand.
> -	 */
> -	sa1111_configure_smc(sachip, 1,
> -			     FExtr(MDCNFG, MDCNFG_SA1110_DRAC0),
> -			     FExtr(MDCNFG, MDCNFG_SA1110_TDL0));
> -
> -	/*
> -	 * We only need to turn on DCLK whenever we want to use the
> -	 * DMA.  It can otherwise be held firmly in the off position.
> -	 * (currently, we always enable it.)
> -	 */
> -	val = readl_relaxed(sachip->base + SA1111_SKPCR);
> -	writel_relaxed(val | SKPCR_DCLKEN, sachip->base + SA1111_SKPCR);
> -
> -	/*
> -	 * Enable the SA1110 memory bus request and grant signals.
> -	 */
> -	sa1110_mb_enable();
> -	}
> -#endif
> -
> -	g_sa1111 = sachip;
> -
> -	has_devs = ~0;
> -	if (pd)
> -		has_devs &= ~pd->disable_devs;
> -
> -	for (i = 0; i < ARRAY_SIZE(sa1111_devices); i++)
> -		if (sa1111_devices[i].devid & has_devs)
> -			sa1111_init_one_child(sachip, mem, &sa1111_devices[i]);
> -
> -	return 0;
> -
> - err_irq:
> -	sa1111_remove_irq(sachip);
> - err_clk:
> -	clk_disable(sachip->clk);
> - err_unmap:
> -	iounmap(sachip->base);
> - err_clk_unprep:
> -	clk_unprepare(sachip->clk);
> -	return ret;
> -}
> -
> -static int sa1111_remove_one(struct device *dev, void *data)
> -{
> -	struct sa1111_dev *sadev = to_sa1111_device(dev);
> -	if (dev->bus != &sa1111_bus_type)
> -		return 0;
> -	device_del(&sadev->dev);
> -	release_resource(&sadev->res);
> -	put_device(&sadev->dev);
> -	return 0;
> -}
> -
> -static void __sa1111_remove(struct sa1111 *sachip)
> -{
> -	device_for_each_child(sachip->dev, NULL, sa1111_remove_one);
> -
> -	sa1111_remove_irq(sachip);
> -
> -	clk_disable(sachip->clk);
> -	clk_unprepare(sachip->clk);
> -
> -	iounmap(sachip->base);
> -}
> -
> -struct sa1111_save_data {
> -	unsigned int	skcr;
> -	unsigned int	skpcr;
> -	unsigned int	skcdr;
> -	unsigned char	skaud;
> -	unsigned char	skpwm0;
> -	unsigned char	skpwm1;
> -
> -	/*
> -	 * Interrupt controller
> -	 */
> -	unsigned int	intpol0;
> -	unsigned int	intpol1;
> -	unsigned int	inten0;
> -	unsigned int	inten1;
> -	unsigned int	wakepol0;
> -	unsigned int	wakepol1;
> -	unsigned int	wakeen0;
> -	unsigned int	wakeen1;
> -};
> -
> -#ifdef CONFIG_PM
> -
> -static int sa1111_suspend_noirq(struct device *dev)
> -{
> -	struct sa1111 *sachip = dev_get_drvdata(dev);
> -	struct sa1111_save_data *save;
> -	unsigned long flags;
> -	unsigned int val;
> -	void __iomem *base;
> -
> -	save = kmalloc_obj(struct sa1111_save_data);
> -	if (!save)
> -		return -ENOMEM;
> -	sachip->saved_state = save;
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -
> -	/*
> -	 * Save state.
> -	 */
> -	base = sachip->base;
> -	save->skcr     = readl_relaxed(base + SA1111_SKCR);
> -	save->skpcr    = readl_relaxed(base + SA1111_SKPCR);
> -	save->skcdr    = readl_relaxed(base + SA1111_SKCDR);
> -	save->skaud    = readl_relaxed(base + SA1111_SKAUD);
> -	save->skpwm0   = readl_relaxed(base + SA1111_SKPWM0);
> -	save->skpwm1   = readl_relaxed(base + SA1111_SKPWM1);
> -
> -	writel_relaxed(0, sachip->base + SA1111_SKPWM0);
> -	writel_relaxed(0, sachip->base + SA1111_SKPWM1);
> -
> -	base = sachip->base + SA1111_INTC;
> -	save->intpol0  = readl_relaxed(base + SA1111_INTPOL0);
> -	save->intpol1  = readl_relaxed(base + SA1111_INTPOL1);
> -	save->inten0   = readl_relaxed(base + SA1111_INTEN0);
> -	save->inten1   = readl_relaxed(base + SA1111_INTEN1);
> -	save->wakepol0 = readl_relaxed(base + SA1111_WAKEPOL0);
> -	save->wakepol1 = readl_relaxed(base + SA1111_WAKEPOL1);
> -	save->wakeen0  = readl_relaxed(base + SA1111_WAKEEN0);
> -	save->wakeen1  = readl_relaxed(base + SA1111_WAKEEN1);
> -
> -	/*
> -	 * Disable.
> -	 */
> -	val = readl_relaxed(sachip->base + SA1111_SKCR);
> -	writel_relaxed(val | SKCR_SLEEP, sachip->base + SA1111_SKCR);
> -
> -	clk_disable(sachip->clk);
> -
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -#ifdef CONFIG_ARCH_SA1100
> -	sa1110_mb_disable();
> -#endif
> -
> -	return 0;
> -}
> -
> -/*
> - *	sa1111_resume - Restore the SA1111 device state.
> - *	@dev: device to restore
> - *
> - *	Restore the general state of the SA1111; clock control and
> - *	interrupt controller.  Other parts of the SA1111 must be
> - *	restored by their respective drivers, and must be called
> - *	via LDM after this function.
> - */
> -static int sa1111_resume_noirq(struct device *dev)
> -{
> -	struct sa1111 *sachip = dev_get_drvdata(dev);
> -	struct sa1111_save_data *save;
> -	unsigned long flags, id;
> -	void __iomem *base;
> -
> -	save = sachip->saved_state;
> -	if (!save)
> -		return 0;
> -
> -	/*
> -	 * Ensure that the SA1111 is still here.
> -	 * FIXME: shouldn't do this here.
> -	 */
> -	id = readl_relaxed(sachip->base + SA1111_SKID);
> -	if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
> -		__sa1111_remove(sachip);
> -		dev_set_drvdata(dev, NULL);
> -		kfree(save);
> -		return 0;
> -	}
> -
> -	/*
> -	 * First of all, wake up the chip.
> -	 */
> -	sa1111_wake(sachip);
> -
> -#ifdef CONFIG_ARCH_SA1100
> -	/* Enable the memory bus request/grant signals */
> -	sa1110_mb_enable();
> -#endif
> -
> -	/*
> -	 * Only lock for write ops. Also, sa1111_wake must be called with
> -	 * released spinlock!
> -	 */
> -	spin_lock_irqsave(&sachip->lock, flags);
> -
> -	writel_relaxed(0, sachip->base + SA1111_INTC + SA1111_INTEN0);
> -	writel_relaxed(0, sachip->base + SA1111_INTC + SA1111_INTEN1);
> -
> -	base = sachip->base;
> -	writel_relaxed(save->skcr,     base + SA1111_SKCR);
> -	writel_relaxed(save->skpcr,    base + SA1111_SKPCR);
> -	writel_relaxed(save->skcdr,    base + SA1111_SKCDR);
> -	writel_relaxed(save->skaud,    base + SA1111_SKAUD);
> -	writel_relaxed(save->skpwm0,   base + SA1111_SKPWM0);
> -	writel_relaxed(save->skpwm1,   base + SA1111_SKPWM1);
> -
> -	base = sachip->base + SA1111_INTC;
> -	writel_relaxed(save->intpol0,  base + SA1111_INTPOL0);
> -	writel_relaxed(save->intpol1,  base + SA1111_INTPOL1);
> -	writel_relaxed(save->inten0,   base + SA1111_INTEN0);
> -	writel_relaxed(save->inten1,   base + SA1111_INTEN1);
> -	writel_relaxed(save->wakepol0, base + SA1111_WAKEPOL0);
> -	writel_relaxed(save->wakepol1, base + SA1111_WAKEPOL1);
> -	writel_relaxed(save->wakeen0,  base + SA1111_WAKEEN0);
> -	writel_relaxed(save->wakeen1,  base + SA1111_WAKEEN1);
> -
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -	sachip->saved_state = NULL;
> -	kfree(save);
> -
> -	return 0;
> -}
> -
> -#else
> -#define sa1111_suspend_noirq NULL
> -#define sa1111_resume_noirq  NULL
> -#endif
> -
> -/**
> - *	sa1111_probe - probe for a single SA1111 chip.
> - *	@pdev: platform device.
> - *
> - *	Probe for a SA1111 chip.  This must be called
> - *	before any other SA1111-specific code.
> - *
> - *	Returns:
> - *	* %-ENODEV	- device not found.
> - *	* %-ENOMEM	- memory allocation failure.
> - *	* %-EBUSY	- physical address already marked in-use.
> - *	* %-EINVAL	- no platform data passed
> - *	* %0		- successful.
> - */
> -static int sa1111_probe(struct platform_device *pdev)
> -{
> -	struct resource *mem;
> -	int irq;
> -
> -	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> -	if (!mem)
> -		return -EINVAL;
> -	irq = platform_get_irq(pdev, 0);
> -	if (irq < 0)
> -		return irq;
> -
> -	return __sa1111_probe(&pdev->dev, mem, irq);
> -}
> -
> -static void sa1111_remove(struct platform_device *pdev)
> -{
> -	struct sa1111 *sachip = platform_get_drvdata(pdev);
> -
> -	if (sachip) {
> -#ifdef CONFIG_PM
> -		kfree(sachip->saved_state);
> -		sachip->saved_state = NULL;
> -#endif
> -		__sa1111_remove(sachip);
> -		platform_set_drvdata(pdev, NULL);
> -	}
> -}
> -
> -static struct dev_pm_ops sa1111_pm_ops = {
> -	.suspend_noirq = sa1111_suspend_noirq,
> -	.resume_noirq = sa1111_resume_noirq,
> -};
> -
> -/*
> - *	Not sure if this should be on the system bus or not yet.
> - *	We really want some way to register a system device at
> - *	the per-machine level, and then have this driver pick
> - *	up the registered devices.
> - *
> - *	We also need to handle the SDRAM configuration for
> - *	PXA250/SA1110 machine classes.
> - */
> -static struct platform_driver sa1111_device_driver = {
> -	.probe		= sa1111_probe,
> -	.remove		= sa1111_remove,
> -	.driver		= {
> -		.name	= "sa1111",
> -		.pm	= &sa1111_pm_ops,
> -	},
> -};
> -
> -/*
> - *	Get the parent device driver (us) structure
> - *	from a child function device
> - */
> -static inline struct sa1111 *sa1111_chip_driver(struct sa1111_dev *sadev)
> -{
> -	return (struct sa1111 *)dev_get_drvdata(sadev->dev.parent);
> -}
> -
> -/*
> - * The bits in the opdiv field are non-linear.
> - */
> -static unsigned char opdiv_table[] = { 1, 4, 2, 8 };
> -
> -static unsigned int __sa1111_pll_clock(struct sa1111 *sachip)
> -{
> -	unsigned int skcdr, fbdiv, ipdiv, opdiv;
> -
> -	skcdr = readl_relaxed(sachip->base + SA1111_SKCDR);
> -
> -	fbdiv = (skcdr & 0x007f) + 2;
> -	ipdiv = ((skcdr & 0x0f80) >> 7) + 2;
> -	opdiv = opdiv_table[(skcdr & 0x3000) >> 12];
> -
> -	return 3686400 * fbdiv / (ipdiv * opdiv);
> -}
> -
> -/**
> - *	sa1111_pll_clock - return the current PLL clock frequency.
> - *	@sadev: SA1111 function block
> - *
> - *	BUG: we should look at SKCR.  We also blindly believe that
> - *	the chip is being fed with the 3.6864MHz clock.
> - *
> - *	Returns the PLL clock in Hz.
> - */
> -unsigned int sa1111_pll_clock(struct sa1111_dev *sadev)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -
> -	return __sa1111_pll_clock(sachip);
> -}
> -EXPORT_SYMBOL(sa1111_pll_clock);
> -
> -/**
> - *	sa1111_select_audio_mode - select I2S or AC link mode
> - *	@sadev: SA1111 function block
> - *	@mode: One of %SA1111_AUDIO_ACLINK or %SA1111_AUDIO_I2S
> - *
> - *	Frob the SKCR to select AC Link mode or I2S mode for
> - *	the audio block.
> - */
> -void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -	unsigned long flags;
> -	unsigned int val;
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -
> -	val = readl_relaxed(sachip->base + SA1111_SKCR);
> -	if (mode == SA1111_AUDIO_I2S) {
> -		val &= ~SKCR_SELAC;
> -	} else {
> -		val |= SKCR_SELAC;
> -	}
> -	writel_relaxed(val, sachip->base + SA1111_SKCR);
> -
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -}
> -EXPORT_SYMBOL(sa1111_select_audio_mode);
> -
> -/**
> - *	sa1111_set_audio_rate - set the audio sample rate
> - *	@sadev: SA1111 SAC function block
> - *	@rate: sample rate to select
> - */
> -int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -	unsigned int div;
> -
> -	if (sadev->devid != SA1111_DEVID_SAC)
> -		return -EINVAL;
> -
> -	div = (__sa1111_pll_clock(sachip) / 256 + rate / 2) / rate;
> -	if (div == 0)
> -		div = 1;
> -	if (div > 128)
> -		div = 128;
> -
> -	writel_relaxed(div - 1, sachip->base + SA1111_SKAUD);
> -
> -	return 0;
> -}
> -EXPORT_SYMBOL(sa1111_set_audio_rate);
> -
> -/**
> - *	sa1111_get_audio_rate - get the audio sample rate
> - *	@sadev: SA1111 SAC function block device
> - */
> -int sa1111_get_audio_rate(struct sa1111_dev *sadev)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -	unsigned long div;
> -
> -	if (sadev->devid != SA1111_DEVID_SAC)
> -		return -EINVAL;
> -
> -	div = readl_relaxed(sachip->base + SA1111_SKAUD) + 1;
> -
> -	return __sa1111_pll_clock(sachip) / (256 * div);
> -}
> -EXPORT_SYMBOL(sa1111_get_audio_rate);
> -
> -/*
> - * Individual device operations.
> - */
> -
> -/**
> - *	sa1111_enable_device - enable an on-chip SA1111 function block
> - *	@sadev: SA1111 function block device to enable
> - */
> -int sa1111_enable_device(struct sa1111_dev *sadev)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -	unsigned long flags;
> -	unsigned int val;
> -	int ret = 0;
> -
> -	if (sachip->pdata && sachip->pdata->enable)
> -		ret = sachip->pdata->enable(sachip->pdata->data, sadev->devid);
> -
> -	if (ret == 0) {
> -		spin_lock_irqsave(&sachip->lock, flags);
> -		val = readl_relaxed(sachip->base + SA1111_SKPCR);
> -		writel_relaxed(val | sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
> -		spin_unlock_irqrestore(&sachip->lock, flags);
> -	}
> -	return ret;
> -}
> -EXPORT_SYMBOL(sa1111_enable_device);
> -
> -/**
> - *	sa1111_disable_device - disable an on-chip SA1111 function block
> - *	@sadev: SA1111 function block device to disable
> - */
> -void sa1111_disable_device(struct sa1111_dev *sadev)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -	unsigned long flags;
> -	unsigned int val;
> -
> -	spin_lock_irqsave(&sachip->lock, flags);
> -	val = readl_relaxed(sachip->base + SA1111_SKPCR);
> -	writel_relaxed(val & ~sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
> -	spin_unlock_irqrestore(&sachip->lock, flags);
> -
> -	if (sachip->pdata && sachip->pdata->disable)
> -		sachip->pdata->disable(sachip->pdata->data, sadev->devid);
> -}
> -EXPORT_SYMBOL(sa1111_disable_device);
> -
> -int sa1111_get_irq(struct sa1111_dev *sadev, unsigned num)
> -{
> -	struct sa1111 *sachip = sa1111_chip_driver(sadev);
> -	if (num >= ARRAY_SIZE(sadev->hwirq))
> -		return -EINVAL;
> -	return sa1111_map_irq(sachip, sadev->hwirq[num]);
> -}
> -EXPORT_SYMBOL_GPL(sa1111_get_irq);
> -
> -/*
> - *	SA1111 "Register Access Bus."
> - *
> - *	We model this as a regular bus type, and hang devices directly
> - *	off this.
> - */
> -static int sa1111_match(struct device *_dev, const struct device_driver *_drv)
> -{
> -	struct sa1111_dev *dev = to_sa1111_device(_dev);
> -	const struct sa1111_driver *drv = SA1111_DRV(_drv);
> -
> -	return !!(dev->devid & drv->devid);
> -}
> -
> -static int sa1111_bus_probe(struct device *dev)
> -{
> -	struct sa1111_dev *sadev = to_sa1111_device(dev);
> -	struct sa1111_driver *drv = SA1111_DRV(dev->driver);
> -	int ret = -ENODEV;
> -
> -	if (drv->probe)
> -		ret = drv->probe(sadev);
> -	return ret;
> -}
> -
> -static void sa1111_bus_remove(struct device *dev)
> -{
> -	struct sa1111_dev *sadev = to_sa1111_device(dev);
> -	struct sa1111_driver *drv = SA1111_DRV(dev->driver);
> -
> -	if (drv->remove)
> -		drv->remove(sadev);
> -}
> -
> -const struct bus_type sa1111_bus_type = {
> -	.name		= "sa1111-rab",
> -	.match		= sa1111_match,
> -	.probe		= sa1111_bus_probe,
> -	.remove		= sa1111_bus_remove,
> -};
> -EXPORT_SYMBOL(sa1111_bus_type);
> -
> -int sa1111_driver_register(struct sa1111_driver *driver)
> -{
> -	driver->drv.bus = &sa1111_bus_type;
> -	return driver_register(&driver->drv);
> -}
> -EXPORT_SYMBOL(sa1111_driver_register);
> -
> -void sa1111_driver_unregister(struct sa1111_driver *driver)
> -{
> -	driver_unregister(&driver->drv);
> -}
> -EXPORT_SYMBOL(sa1111_driver_unregister);
> -
> -static int __init sa1111_init(void)
> -{
> -	int ret = bus_register(&sa1111_bus_type);
> -	if (ret == 0)
> -		platform_driver_register(&sa1111_device_driver);
> -	return ret;
> -}
> -
> -static void __exit sa1111_exit(void)
> -{
> -	platform_driver_unregister(&sa1111_device_driver);
> -	bus_unregister(&sa1111_bus_type);
> -}
> -
> -subsys_initcall(sa1111_init);
> -module_exit(sa1111_exit);
> -
> -MODULE_DESCRIPTION("Intel Corporation SA1111 core driver");
> -MODULE_LICENSE("GPL");
> diff --git a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig
> deleted file mode 100644
> index e4264fdac2e5..000000000000
> --- a/arch/arm/configs/assabet_defconfig
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -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_SA1100=y
> -CONFIG_SA1100_ASSABET=y
> -# CONFIG_AEABI is not set
> -CONFIG_ATAGS=y
> -CONFIG_CMDLINE="mem=32M console=ttySA0,38400n8 initrd=0xc0800000,3M root=/dev/ram"
> -CONFIG_FPE_NWFPE=y
> -CONFIG_PM=y
> -CONFIG_MODULES=y
> -CONFIG_PARTITION_ADVANCED=y
> -CONFIG_NET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -# CONFIG_IPV6 is not set
> -CONFIG_PCCARD=y
> -CONFIG_PCMCIA_SA1100=y
> -CONFIG_MTD=y
> -CONFIG_MTD_REDBOOT_PARTS=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_GEOMETRY=y
> -# CONFIG_MTD_CFI_I1 is not set
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_SA1100=y
> -CONFIG_BLK_DEV_LOOP=m
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_NETDEVICES=y
> -CONFIG_NET_PCMCIA=y
> -CONFIG_PCMCIA_PCNET=y
> -CONFIG_INPUT_EVDEV=y
> -# CONFIG_INPUT_KEYBOARD is not set
> -# CONFIG_INPUT_MOUSE is not set
> -# CONFIG_SERIO is not set
> -CONFIG_SERIAL_8250=m
> -CONFIG_SERIAL_SA1100=y
> -CONFIG_SERIAL_SA1100_CONSOLE=y
> -CONFIG_FB=y
> -CONFIG_FB_SA1100=y
> -# CONFIG_VGA_CONSOLE is not set
> -CONFIG_SOUND=y
> -CONFIG_NEW_LEDS=y
> -CONFIG_LEDS_CLASS=y
> -CONFIG_LEDS_TRIGGERS=y
> -CONFIG_LEDS_TRIGGER_CPU=y
> -CONFIG_EXT2_FS=y
> -CONFIG_MSDOS_FS=y
> -CONFIG_TMPFS=y
> -CONFIG_JFFS2_FS=y
> -CONFIG_NFS_FS=y
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_DEBUG_USER=y
> diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig
> deleted file mode 100644
> index 570a5f8bc57b..000000000000
> --- a/arch/arm/configs/collie_defconfig
> +++ /dev/null
> @@ -1,87 +0,0 @@
> -CONFIG_SYSVIPC=y
> -CONFIG_LOG_BUF_SHIFT=14
> -CONFIG_BLK_DEV_INITRD=y
> -# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
> -CONFIG_EXPERT=y
> -CONFIG_BASE_SMALL=y
> -# CONFIG_EPOLL is not set
> -CONFIG_ARCH_MULTI_V4=y
> -# CONFIG_ARCH_MULTI_V7 is not set
> -CONFIG_ARCH_SA1100=y
> -CONFIG_SA1100_COLLIE=y
> -CONFIG_ATAGS=y
> -CONFIG_CMDLINE="noinitrd root=/dev/mtdblock2 rootfstype=jffs2 fbcon=rotate:1"
> -CONFIG_PM=y
> -# CONFIG_SWAP is not set
> -CONFIG_SLUB_TINY=y
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -# CONFIG_IPV6 is not set
> -CONFIG_PCCARD=y
> -CONFIG_PCMCIA_SA1100=y
> -CONFIG_PCMCIA_DEBUG=y
> -CONFIG_MTD=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_JEDECPROBE=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_GEOMETRY=y
> -# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
> -# CONFIG_MTD_MAP_BANK_WIDTH_2 is not set
> -# CONFIG_MTD_CFI_I1 is not set
> -# CONFIG_MTD_CFI_I2 is not set
> -CONFIG_MTD_CFI_I4=y
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_SA1100=y
> -CONFIG_BLK_DEV_LOOP=y
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_BLK_DEV_RAM_SIZE=1024
> -CONFIG_BLK_DEV_SD=y
> -CONFIG_ATA=y
> -CONFIG_PATA_PCMCIA=y
> -# CONFIG_INPUT_MOUSEDEV is not set
> -CONFIG_INPUT_EVDEV=y
> -# CONFIG_KEYBOARD_ATKBD is not set
> -CONFIG_KEYBOARD_LOCOMO=y
> -# CONFIG_INPUT_MOUSE is not set
> -CONFIG_INPUT_TOUCHSCREEN=y
> -# CONFIG_SERIO_SERPORT is not set
> -# CONFIG_LEGACY_PTYS is not set
> -CONFIG_SERIAL_8250=y
> -CONFIG_SERIAL_8250_CS=y
> -CONFIG_SERIAL_8250_EXTENDED=y
> -CONFIG_SERIAL_SA1100=y
> -CONFIG_SERIAL_SA1100_CONSOLE=y
> -# CONFIG_HWMON is not set
> -CONFIG_MCP_SA11X0=y
> -CONFIG_MCP_UCB1200=y
> -CONFIG_MCP_UCB1200_TS=y
> -CONFIG_FB=y
> -CONFIG_FB_SA1100=y
> -# CONFIG_VGA_CONSOLE is not set
> -CONFIG_FB_MODE_HELPERS=y
> -CONFIG_FRAMEBUFFER_CONSOLE=y
> -CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
> -CONFIG_NEW_LEDS=y
> -CONFIG_LEDS_CLASS=y
> -CONFIG_LEDS_LOCOMO=y
> -CONFIG_LEDS_TRIGGERS=y
> -CONFIG_LEDS_TRIGGER_TIMER=y
> -CONFIG_LEDS_TRIGGER_DISK=y
> -# CONFIG_DNOTIFY is not set
> -CONFIG_VFAT_FS=y
> -CONFIG_TMPFS=y
> -CONFIG_JFFS2_FS=y
> -CONFIG_ROMFS_FS=y
> -CONFIG_NLS_DEFAULT="cp437"
> -CONFIG_NLS_CODEPAGE_437=y
> -CONFIG_NLS_ISO8859_1=y
> -CONFIG_FONTS=y
> -CONFIG_FONT_MINI_4x6=y
> -# CONFIG_DEBUG_BUGVERBOSE is not set
> -CONFIG_MAGIC_SYSRQ=y
> -CONFIG_DEBUG_KERNEL=y
> -# CONFIG_DETECT_SOFTLOCKUP is not set
> -CONFIG_DEBUG_MUTEXES=y
> diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig
> deleted file mode 100644
> index 3e8da62d959d..000000000000
> --- a/arch/arm/configs/h3600_defconfig
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -CONFIG_SYSVIPC=y
> -CONFIG_NO_HZ_IDLE=y
> -CONFIG_HIGH_RES_TIMERS=y
> -CONFIG_PREEMPT=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_SA1100=y
> -CONFIG_SA1100_H3600=y
> -# CONFIG_CPU_FREQ_STAT is not set
> -CONFIG_ATAGS=y
> -CONFIG_MODULES=y
> -CONFIG_NET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -# CONFIG_IPV6 is not set
> -# CONFIG_WIRELESS is not set
> -CONFIG_PCCARD=y
> -CONFIG_PCMCIA_SA1100=y
> -CONFIG_MTD=y
> -CONFIG_MTD_REDBOOT_PARTS=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_GEOMETRY=y
> -# CONFIG_MTD_CFI_I1 is not set
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_SA1100=y
> -CONFIG_BLK_DEV_LOOP=m
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_BLK_DEV_RAM_SIZE=8192
> -CONFIG_BLK_DEV_SD=y
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_ATA=y
> -CONFIG_PATA_PCMCIA=y
> -CONFIG_NETDEVICES=y
> -CONFIG_PCMCIA_PCNET=y
> -CONFIG_PPP=m
> -CONFIG_PPP_BSDCOMP=m
> -CONFIG_PPP_DEFLATE=m
> -CONFIG_PPP_ASYNC=m
> -# CONFIG_WLAN is not set
> -# CONFIG_KEYBOARD_ATKBD is not set
> -CONFIG_KEYBOARD_GPIO=y
> -# CONFIG_INPUT_MOUSE is not set
> -# CONFIG_SERIO is not set
> -CONFIG_SERIAL_SA1100=y
> -CONFIG_SERIAL_SA1100_CONSOLE=y
> -# CONFIG_HW_RANDOM is not set
> -# CONFIG_HWMON is not set
> -CONFIG_FB=y
> -CONFIG_FB_SA1100=y
> -# CONFIG_USB_SUPPORT is not set
> -CONFIG_EXT2_FS=y
> -CONFIG_MSDOS_FS=m
> -CONFIG_VFAT_FS=m
> -CONFIG_JFFS2_FS=y
> -CONFIG_CRAMFS=m
> -CONFIG_NFS_FS=y
> -CONFIG_NFSD=m
> -CONFIG_NLS=y
> diff --git a/arch/arm/configs/jornada720_defconfig b/arch/arm/configs/jornada720_defconfig
> deleted file mode 100644
> index a96cfb81aba5..000000000000
> --- a/arch/arm/configs/jornada720_defconfig
> +++ /dev/null
> @@ -1,95 +0,0 @@
> -CONFIG_SYSVIPC=y
> -CONFIG_LOG_BUF_SHIFT=14
> -CONFIG_EXPERT=y
> -CONFIG_ARCH_MULTI_V4=y
> -# CONFIG_ARCH_MULTI_V7 is not set
> -CONFIG_ARCH_SA1100=y
> -CONFIG_SA1100_JORNADA720=y
> -CONFIG_SA1100_JORNADA720_SSP=y
> -CONFIG_PM=y
> -CONFIG_ATAGS=y
> -CONFIG_MODULES=y
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -CONFIG_IP_MULTICAST=y
> -# CONFIG_IPV6 is not set
> -CONFIG_NETFILTER=y
> -CONFIG_PCCARD=y
> -CONFIG_PCMCIA_SA1100=y
> -CONFIG_BLK_DEV_LOOP=y
> -CONFIG_BLK_DEV_NBD=y
> -CONFIG_BLK_DEV_SD=y
> -# CONFIG_BLK_DEV_BSG is not set
> -CONFIG_ATA=y
> -CONFIG_PATA_PCMCIA=y
> -CONFIG_NETDEVICES=y
> -CONFIG_DUMMY=y
> -CONFIG_NET_PCMCIA=y
> -CONFIG_INPUT_MOUSEDEV_SCREEN_X=640
> -CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
> -# CONFIG_KEYBOARD_ATKBD is not set
> -CONFIG_KEYBOARD_HP7XX=y
> -# CONFIG_INPUT_MOUSE is not set
> -CONFIG_INPUT_TOUCHSCREEN=y
> -CONFIG_TOUCHSCREEN_HP7XX=y
> -CONFIG_LEGACY_PTY_COUNT=32
> -CONFIG_SERIAL_SA1100=y
> -CONFIG_SERIAL_SA1100_CONSOLE=y
> -# CONFIG_HWMON is not set
> -CONFIG_FB=y
> -CONFIG_FB_S1D13XXX=y
> -CONFIG_LCD_CLASS_DEVICE=y
> -CONFIG_BACKLIGHT_CLASS_DEVICE=y
> -# CONFIG_VGA_CONSOLE is not set
> -CONFIG_FRAMEBUFFER_CONSOLE=y
> -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
> -# CONFIG_USB_SUPPORT is not set
> -CONFIG_RTC_CLASS=y
> -CONFIG_RTC_DRV_SA1100=y
> -CONFIG_EXT2_FS=y
> -CONFIG_MSDOS_FS=y
> -CONFIG_VFAT_FS=y
> -# CONFIG_NETWORK_FILESYSTEMS 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_936=m
> -CONFIG_NLS_CODEPAGE_950=m
> -CONFIG_NLS_CODEPAGE_932=m
> -CONFIG_NLS_CODEPAGE_949=m
> -CONFIG_NLS_CODEPAGE_874=m
> -CONFIG_NLS_ISO8859_8=m
> -CONFIG_NLS_CODEPAGE_1250=m
> -CONFIG_NLS_CODEPAGE_1251=m
> -CONFIG_NLS_ASCII=m
> -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_ISO8859_13=m
> -CONFIG_NLS_ISO8859_14=m
> -CONFIG_NLS_ISO8859_15=m
> -CONFIG_NLS_KOI8_R=m
> -CONFIG_NLS_KOI8_U=m
> -CONFIG_NLS_UTF8=m
> -CONFIG_DEBUG_KERNEL=y
> -# CONFIG_FTRACE is not set
> -CONFIG_DEBUG_LL=y
> diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig
> deleted file mode 100644
> index 164643f1b6c0..000000000000
> --- a/arch/arm/configs/neponset_defconfig
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -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_SA1100=y
> -CONFIG_SA1100_ASSABET=y
> -CONFIG_ASSABET_NEPONSET=y
> -CONFIG_ATAGS=y
> -CONFIG_ZBOOT_ROM_TEXT=0x80000
> -CONFIG_ZBOOT_ROM_BSS=0xc1000000
> -CONFIG_ZBOOT_ROM=y
> -CONFIG_CMDLINE="console=ttySA0,38400n8 cpufreq=221200 rw root=/dev/mtdblock2 mtdparts=sa1100:512K(boot),1M(kernel),2560K(initrd),4M(root) mem=32M noinitrd initrd=0xc0800000,3M"
> -CONFIG_FPE_NWFPE=y
> -# CONFIG_AEABI is not set
> -CONFIG_PM=y
> -CONFIG_MODULES=y
> -CONFIG_MODULE_UNLOAD=y
> -CONFIG_PARTITION_ADVANCED=y
> -# CONFIG_MSDOS_PARTITION is not set
> -CONFIG_NET=y
> -CONFIG_PACKET=y
> -CONFIG_UNIX=y
> -CONFIG_INET=y
> -# CONFIG_IPV6 is not set
> -CONFIG_PCCARD=y
> -CONFIG_PCMCIA_SA1100=y
> -CONFIG_PCMCIA_SA1111=y
> -CONFIG_MTD=y
> -CONFIG_MTD_CMDLINE_PARTS=y
> -CONFIG_MTD_REDBOOT_PARTS=y
> -CONFIG_MTD_BLOCK=y
> -CONFIG_MTD_CFI=y
> -CONFIG_MTD_CFI_ADV_OPTIONS=y
> -CONFIG_MTD_CFI_INTELEXT=y
> -CONFIG_MTD_RAM=y
> -CONFIG_MTD_SA1100=y
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_BLK_DEV_RAM_SIZE=8192
> -CONFIG_SCSI=m
> -CONFIG_BLK_DEV_SD=m
> -CONFIG_NETDEVICES=y
> -CONFIG_NET_VENDOR_SMC=y
> -CONFIG_PCMCIA_PCNET=y
> -CONFIG_SMC91X=y
> -CONFIG_NET_PCMCIA=y
> -# CONFIG_INPUT_MOUSE is not set
> -CONFIG_INPUT_TOUCHSCREEN=y
> -CONFIG_SERIO_SERPORT=m
> -CONFIG_SERIO_SA1111=y
> -CONFIG_LEGACY_PTY_COUNT=64
> -CONFIG_SERIAL_8250=y
> -CONFIG_SERIAL_8250_CS=y
> -CONFIG_SERIAL_SA1100=y
> -CONFIG_SERIAL_SA1100_CONSOLE=y
> -CONFIG_SERIAL_NONSTANDARD=y
> -CONFIG_I2C=y
> -CONFIG_I2C_CHARDEV=y
> -CONFIG_WATCHDOG=y
> -CONFIG_SA1100_WATCHDOG=m
> -CONFIG_FB=y
> -CONFIG_FB_SA1100=y
> -# CONFIG_VGA_CONSOLE is not set
> -CONFIG_FRAMEBUFFER_CONSOLE=y
> -CONFIG_SOUND=y
> -CONFIG_SOUND_PRIME=y
> -# CONFIG_USB_HID is not set
> -CONFIG_USB=m
> -CONFIG_USB_MON=m
> -CONFIG_USB_OHCI_HCD=m
> -CONFIG_USB_STORAGE=m
> -CONFIG_NEW_LEDS=y
> -CONFIG_LEDS_CLASS=y
> -CONFIG_LEDS_TRIGGERS=y
> -CONFIG_LEDS_TRIGGER_CPU=y
> -CONFIG_EXT2_FS=y
> -CONFIG_MSDOS_FS=m
> -CONFIG_VFAT_FS=m
> -CONFIG_JFFS2_FS=y
> -CONFIG_NFS_FS=y
> -CONFIG_NLS=y
> -CONFIG_NLS_CODEPAGE_437=m
> -CONFIG_NLS_ISO8859_1=m
> -CONFIG_DEBUG_KERNEL=y
> -CONFIG_MAGIC_SYSRQ=y
> -CONFIG_DEBUG_USER=y
> -CONFIG_DEBUG_LL=y
> diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
> index 0163c3e78a67..d58f6b5c4c35 100644
> --- a/arch/arm/include/asm/cputype.h
> +++ b/arch/arm/include/asm/cputype.h
> @@ -262,10 +262,6 @@ static inline unsigned int __attribute_const__ read_cpuid_mpidr(void)
>  	return read_cpuid(CPUID_MPIDR);
>  }
>  
> -/* StrongARM-11x0 CPUs */
> -#define cpu_is_sa1100() (read_cpuid_part() == ARM_CPU_PART_SA1100)
> -#define cpu_is_sa1110() (read_cpuid_part() == ARM_CPU_PART_SA1110)
> -
>  /*
>   * Intel's XScale3 core supports some v6 features (supersections, L2)
>   * but advertises itself as v5 as it does not support the v6 ISA.  For
> diff --git a/arch/arm/include/asm/hardware/locomo.h b/arch/arm/include/asm/hardware/locomo.h
> deleted file mode 100644
> index 3190e1e5067a..000000000000
> --- a/arch/arm/include/asm/hardware/locomo.h
> +++ /dev/null
> @@ -1,217 +0,0 @@
> -/*
> - * arch/arm/include/asm/hardware/locomo.h
> - *
> - * This file contains the definitions for the LoCoMo G/A Chip
> - *
> - * (C) Copyright 2004 John Lenz
> - *
> - * May be copied or modified under the terms of the GNU General Public
> - * License.  See linux/COPYING for more information.
> - *
> - * Based on sa1111.h
> - */
> -#ifndef _ASM_ARCH_LOCOMO
> -#define _ASM_ARCH_LOCOMO
> -
> -#define locomo_writel(val,addr)	({ *(volatile u16 *)(addr) = (val); })
> -#define locomo_readl(addr)	(*(volatile u16 *)(addr))
> -
> -/* LOCOMO version */
> -#define LOCOMO_VER	0x00
> -
> -/* Pin status */
> -#define LOCOMO_ST	0x04
> -
> -/* Pin status */
> -#define LOCOMO_C32K	0x08
> -
> -/* Interrupt controller */
> -#define LOCOMO_ICR	0x0C
> -
> -/* MCS decoder for boot selecting */
> -#define LOCOMO_MCSX0	0x10
> -#define LOCOMO_MCSX1	0x14
> -#define LOCOMO_MCSX2	0x18
> -#define LOCOMO_MCSX3	0x1c
> -
> -/* Touch panel controller */
> -#define LOCOMO_ASD	0x20		/* AD start delay */
> -#define LOCOMO_HSD	0x28		/* HSYS delay */
> -#define LOCOMO_HSC	0x2c		/* HSYS period */
> -#define LOCOMO_TADC	0x30		/* tablet ADC clock */
> -
> -
> -/* Long time timer */
> -#define LOCOMO_LTC	0xd8		/* LTC interrupt setting */
> -#define LOCOMO_LTINT	0xdc		/* LTC interrupt */
> -
> -/* DAC control signal for LCD (COMADJ ) */
> -#define LOCOMO_DAC		0xe0
> -/* DAC control */
> -#define	LOCOMO_DAC_SCLOEB	0x08	/* SCL pin output data       */
> -#define	LOCOMO_DAC_TEST		0x04	/* Test bit                  */
> -#define	LOCOMO_DAC_SDA		0x02	/* SDA pin level (read-only) */
> -#define	LOCOMO_DAC_SDAOEB	0x01	/* SDA pin output data       */
> -
> -/* SPI interface */
> -#define LOCOMO_SPI	0x60
> -#define LOCOMO_SPIMD	0x00		/* SPI mode setting */
> -#define LOCOMO_SPICT	0x04		/* SPI mode control */
> -#define LOCOMO_SPIST	0x08		/* SPI status */
> -#define	LOCOMO_SPI_TEND	(1 << 3)	/* Transfer end bit */
> -#define	LOCOMO_SPI_REND	(1 << 2)	/* Receive end bit */
> -#define	LOCOMO_SPI_RFW	(1 << 1)	/* write buffer bit */
> -#define	LOCOMO_SPI_RFR	(1)		/* read buffer bit */
> -
> -#define LOCOMO_SPIIS	0x10		/* SPI interrupt status */
> -#define LOCOMO_SPIWE	0x14		/* SPI interrupt status write enable */
> -#define LOCOMO_SPIIE	0x18		/* SPI interrupt enable */
> -#define LOCOMO_SPIIR	0x1c		/* SPI interrupt request */
> -#define LOCOMO_SPITD	0x20		/* SPI transfer data write */
> -#define LOCOMO_SPIRD	0x24		/* SPI receive data read */
> -#define LOCOMO_SPITS	0x28		/* SPI transfer data shift */
> -#define LOCOMO_SPIRS	0x2C		/* SPI receive data shift */
> -
> -/* GPIO */
> -#define LOCOMO_GPD		0x90	/* GPIO direction */
> -#define LOCOMO_GPE		0x94	/* GPIO input enable */
> -#define LOCOMO_GPL		0x98	/* GPIO level */
> -#define LOCOMO_GPO		0x9c	/* GPIO out data setting */
> -#define LOCOMO_GRIE		0xa0	/* GPIO rise detection */
> -#define LOCOMO_GFIE		0xa4	/* GPIO fall detection */
> -#define LOCOMO_GIS		0xa8	/* GPIO edge detection status */
> -#define LOCOMO_GWE		0xac	/* GPIO status write enable */
> -#define LOCOMO_GIE		0xb0	/* GPIO interrupt enable */
> -#define LOCOMO_GIR		0xb4	/* GPIO interrupt request */
> -#define	LOCOMO_GPIO(Nb)		(0x01 << (Nb))
> -#define LOCOMO_GPIO_RTS		LOCOMO_GPIO(0)
> -#define LOCOMO_GPIO_CTS		LOCOMO_GPIO(1)
> -#define LOCOMO_GPIO_DSR		LOCOMO_GPIO(2)
> -#define LOCOMO_GPIO_DTR		LOCOMO_GPIO(3)
> -#define LOCOMO_GPIO_LCD_VSHA_ON	LOCOMO_GPIO(4)
> -#define LOCOMO_GPIO_LCD_VSHD_ON	LOCOMO_GPIO(5)
> -#define LOCOMO_GPIO_LCD_VEE_ON	LOCOMO_GPIO(6)
> -#define LOCOMO_GPIO_LCD_MOD	LOCOMO_GPIO(7)
> -#define LOCOMO_GPIO_DAC_ON	LOCOMO_GPIO(8)
> -#define LOCOMO_GPIO_FL_VR	LOCOMO_GPIO(9)
> -#define LOCOMO_GPIO_DAC_SDATA	LOCOMO_GPIO(10)
> -#define LOCOMO_GPIO_DAC_SCK	LOCOMO_GPIO(11)
> -#define LOCOMO_GPIO_DAC_SLOAD	LOCOMO_GPIO(12)
> -#define LOCOMO_GPIO_CARD_DETECT LOCOMO_GPIO(13)
> -#define LOCOMO_GPIO_WRITE_PROT  LOCOMO_GPIO(14)
> -#define LOCOMO_GPIO_CARD_POWER  LOCOMO_GPIO(15)
> -
> -/* Start the definitions of the devices.  Each device has an initial
> - * base address and a series of offsets from that base address. */
> -
> -/* Keyboard controller */
> -#define LOCOMO_KEYBOARD		0x40
> -#define LOCOMO_KIB		0x00	/* KIB level */
> -#define LOCOMO_KSC		0x04	/* KSTRB control */
> -#define LOCOMO_KCMD		0x08	/* KSTRB command */
> -#define LOCOMO_KIC		0x0c	/* Key interrupt */
> -
> -/* Front light adjustment controller */
> -#define LOCOMO_FRONTLIGHT	0xc8
> -#define LOCOMO_ALS		0x00	/* Adjust light cycle */
> -#define LOCOMO_ALD		0x04	/* Adjust light duty */
> -
> -#define LOCOMO_ALC_EN		0x8000
> -
> -/* Backlight controller: TFT signal */
> -#define LOCOMO_BACKLIGHT	0x38
> -#define LOCOMO_TC		0x00		/* TFT control signal */
> -#define LOCOMO_CPSD		0x04		/* CPS delay */
> -
> -/* Audio controller */
> -#define LOCOMO_AUDIO		0x54
> -#define LOCOMO_ACC		0x00	/* Audio clock */
> -#define LOCOMO_PAIF		0xD0	/* PCM audio interface */
> -/* Audio clock */
> -#define	LOCOMO_ACC_XON		0x80
> -#define	LOCOMO_ACC_XEN		0x40
> -#define	LOCOMO_ACC_XSEL0	0x00
> -#define	LOCOMO_ACC_XSEL1	0x20
> -#define	LOCOMO_ACC_MCLKEN	0x10
> -#define	LOCOMO_ACC_64FSEN	0x08
> -#define	LOCOMO_ACC_CLKSEL000	0x00	/* mclk  2 */
> -#define	LOCOMO_ACC_CLKSEL001	0x01	/* mclk  3 */
> -#define	LOCOMO_ACC_CLKSEL010	0x02	/* mclk  4 */
> -#define	LOCOMO_ACC_CLKSEL011	0x03	/* mclk  6 */
> -#define	LOCOMO_ACC_CLKSEL100	0x04	/* mclk  8 */
> -#define	LOCOMO_ACC_CLKSEL101	0x05	/* mclk 12 */
> -/* PCM audio interface */
> -#define	LOCOMO_PAIF_SCINV	0x20
> -#define	LOCOMO_PAIF_SCEN	0x10
> -#define	LOCOMO_PAIF_LRCRST	0x08
> -#define	LOCOMO_PAIF_LRCEVE	0x04
> -#define	LOCOMO_PAIF_LRCINV	0x02
> -#define	LOCOMO_PAIF_LRCEN	0x01
> -
> -/* LED controller */
> -#define LOCOMO_LED		0xe8
> -#define LOCOMO_LPT0		0x00
> -#define LOCOMO_LPT1		0x04
> -/* LED control */
> -#define LOCOMO_LPT_TOFH		0x80
> -#define LOCOMO_LPT_TOFL		0x08
> -#define LOCOMO_LPT_TOH(TOH)	((TOH & 0x7) << 4)
> -#define LOCOMO_LPT_TOL(TOL)	((TOL & 0x7))
> -
> -#define LOCOMO_DEVID_KEYBOARD	0
> -#define LOCOMO_DEVID_FRONTLIGHT	1
> -#define LOCOMO_DEVID_BACKLIGHT	2
> -#define LOCOMO_DEVID_AUDIO	3
> -#define LOCOMO_DEVID_LED	4
> -#define LOCOMO_DEVID_UART	5
> -#define LOCOMO_DEVID_SPI	6
> -
> -struct locomo_dev {
> -	struct device	dev;
> -	unsigned int	devid;
> -	unsigned int	irq[1];
> -
> -	void		*mapbase;
> -	unsigned long	length;
> -
> -	u64		dma_mask;
> -};
> -
> -#define LOCOMO_DEV(_d)	container_of((_d), struct locomo_dev, dev)
> -
> -#define locomo_get_drvdata(d)	dev_get_drvdata(&(d)->dev)
> -#define locomo_set_drvdata(d,p)	dev_set_drvdata(&(d)->dev, p)
> -
> -struct locomo_driver {
> -	struct device_driver	drv;
> -	unsigned int		devid;
> -	int (*probe)(struct locomo_dev *);
> -	void (*remove)(struct locomo_dev *);
> -};
> -
> -#define LOCOMO_DRV(_d)	container_of_const((_d), struct locomo_driver, drv)
> -
> -#define LOCOMO_DRIVER_NAME(_ldev) ((_ldev)->dev.driver->name)
> -
> -extern void locomolcd_power(int on);
> -
> -int locomo_driver_register(struct locomo_driver *);
> -void locomo_driver_unregister(struct locomo_driver *);
> -
> -/* GPIO control functions */
> -void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir);
> -int locomo_gpio_read_level(struct device *dev, unsigned int bits);
> -int locomo_gpio_read_output(struct device *dev, unsigned int bits);
> -void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set);
> -
> -/* M62332 control function */
> -void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel);
> -
> -/* Frontlight control */
> -void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf);
> -
> -struct locomo_platform_data {
> -	int	irq_base;	/* IRQ base for cascaded on-chip IRQs */
> -};
> -
> -#endif
> diff --git a/arch/arm/include/asm/hardware/sa1111.h b/arch/arm/include/asm/hardware/sa1111.h
> deleted file mode 100644
> index 90b6a832108d..000000000000
> --- a/arch/arm/include/asm/hardware/sa1111.h
> +++ /dev/null
> @@ -1,442 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/include/asm/hardware/sa1111.h
> - *
> - * Copyright (C) 2000 John G Dorsey <john+@cs.cmu.edu>
> - *
> - * This file contains definitions for the SA-1111 Companion Chip.
> - * (Structure and naming borrowed from SA-1101.h, by Peter Danielsson.)
> - *
> - * Macro that calculates real address for registers in the SA-1111
> - */
> -
> -#ifndef _ASM_ARCH_SA1111
> -#define _ASM_ARCH_SA1111
> -
> -/*
> - * Don't ask the (SAC) DMA engines to move less than this amount.
> - */
> -
> -#define SA1111_SAC_DMA_MIN_XFER	(0x800)
> -
> -/*
> - * System Bus Interface (SBI)
> - *
> - * Registers
> - *    SKCR	Control Register
> - *    SMCR	Shared Memory Controller Register
> - *    SKID	ID Register
> - */
> -#define SA1111_SKCR	0x0000
> -#define SA1111_SMCR	0x0004
> -#define SA1111_SKID	0x0008
> -
> -#define SKCR_PLL_BYPASS	(1<<0)
> -#define SKCR_RCLKEN	(1<<1)
> -#define SKCR_SLEEP	(1<<2)
> -#define SKCR_DOZE	(1<<3)
> -#define SKCR_VCO_OFF	(1<<4)
> -#define SKCR_SCANTSTEN	(1<<5)
> -#define SKCR_CLKTSTEN	(1<<6)
> -#define SKCR_RDYEN	(1<<7)
> -#define SKCR_SELAC	(1<<8)
> -#define SKCR_OPPC	(1<<9)
> -#define SKCR_PLLTSTEN	(1<<10)
> -#define SKCR_USBIOTSTEN	(1<<11)
> -/*
> - * Don't believe the specs!  Take them, throw them outside.  Leave them
> - * there for a week.  Spit on them.  Walk on them.  Stamp on them.
> - * Pour gasoline over them and finally burn them.  Now think about coding.
> - *  - The October 1999 errata (278260-007) says its bit 13, 1 to enable.
> - *  - The Feb 2001 errata (278260-010) says that the previous errata
> - *    (278260-009) is wrong, and its bit actually 12, fixed in spec
> - *    278242-003.
> - *  - The SA1111 manual (278242) says bit 12, but 0 to enable.
> - *  - Reality is bit 13, 1 to enable.
> - *      -- rmk
> - */
> -#define SKCR_OE_EN	(1<<13)
> -
> -#define SMCR_DTIM	(1<<0)
> -#define SMCR_MBGE	(1<<1)
> -#define SMCR_DRAC_0	(1<<2)
> -#define SMCR_DRAC_1	(1<<3)
> -#define SMCR_DRAC_2	(1<<4)
> -#define SMCR_DRAC	Fld(3, 2)
> -#define SMCR_CLAT	(1<<5)
> -
> -#define SKID_SIREV_MASK	(0x000000f0)
> -#define SKID_MTREV_MASK (0x0000000f)
> -#define SKID_ID_MASK	(0xffffff00)
> -#define SKID_SA1111_ID	(0x690cc200)
> -
> -/*
> - * System Controller
> - *
> - * Registers
> - *    SKPCR	Power Control Register
> - *    SKCDR	Clock Divider Register
> - *    SKAUD	Audio Clock Divider Register
> - *    SKPMC	PS/2 Mouse Clock Divider Register
> - *    SKPTC	PS/2 Track Pad Clock Divider Register
> - *    SKPEN0	PWM0 Enable Register
> - *    SKPWM0	PWM0 Clock Register
> - *    SKPEN1	PWM1 Enable Register
> - *    SKPWM1	PWM1 Clock Register
> - */
> -#define SA1111_SKPCR	0x0200
> -#define SA1111_SKCDR	0x0204
> -#define SA1111_SKAUD	0x0208
> -#define SA1111_SKPMC	0x020c
> -#define SA1111_SKPTC	0x0210
> -#define SA1111_SKPEN0	0x0214
> -#define SA1111_SKPWM0	0x0218
> -#define SA1111_SKPEN1	0x021c
> -#define SA1111_SKPWM1	0x0220
> -
> -#define SKPCR_UCLKEN	(1<<0)
> -#define SKPCR_ACCLKEN	(1<<1)
> -#define SKPCR_I2SCLKEN	(1<<2)
> -#define SKPCR_L3CLKEN	(1<<3)
> -#define SKPCR_SCLKEN	(1<<4)
> -#define SKPCR_PMCLKEN	(1<<5)
> -#define SKPCR_PTCLKEN	(1<<6)
> -#define SKPCR_DCLKEN	(1<<7)
> -#define SKPCR_PWMCLKEN	(1<<8)
> -
> -/* USB Host controller */
> -#define SA1111_USB		0x0400
> -
> -/*
> - * Serial Audio Controller
> - *
> - * Registers
> - *    SACR0             Serial Audio Common Control Register
> - *    SACR1             Serial Audio Alternate Mode (I2C/MSB) Control Register
> - *    SACR2             Serial Audio AC-link Control Register
> - *    SASR0             Serial Audio I2S/MSB Interface & FIFO Status Register
> - *    SASR1             Serial Audio AC-link Interface & FIFO Status Register
> - *    SASCR             Serial Audio Status Clear Register
> - *    L3_CAR            L3 Control Bus Address Register
> - *    L3_CDR            L3 Control Bus Data Register
> - *    ACCAR             AC-link Command Address Register
> - *    ACCDR             AC-link Command Data Register
> - *    ACSAR             AC-link Status Address Register
> - *    ACSDR             AC-link Status Data Register
> - *    SADTCS            Serial Audio DMA Transmit Control/Status Register
> - *    SADTSA            Serial Audio DMA Transmit Buffer Start Address A
> - *    SADTCA            Serial Audio DMA Transmit Buffer Count Register A
> - *    SADTSB            Serial Audio DMA Transmit Buffer Start Address B
> - *    SADTCB            Serial Audio DMA Transmit Buffer Count Register B
> - *    SADRCS            Serial Audio DMA Receive Control/Status Register
> - *    SADRSA            Serial Audio DMA Receive Buffer Start Address A
> - *    SADRCA            Serial Audio DMA Receive Buffer Count Register A
> - *    SADRSB            Serial Audio DMA Receive Buffer Start Address B
> - *    SADRCB            Serial Audio DMA Receive Buffer Count Register B
> - *    SAITR             Serial Audio Interrupt Test Register
> - *    SADR              Serial Audio Data Register (16 x 32-bit)
> - */
> -
> -#define SA1111_SERAUDIO		0x0600
> -
> -/*
> - * These are offsets from the above base.
> - */
> -#define SA1111_SACR0		0x00
> -#define SA1111_SACR1		0x04
> -#define SA1111_SACR2		0x08
> -#define SA1111_SASR0		0x0c
> -#define SA1111_SASR1		0x10
> -#define SA1111_SASCR		0x18
> -#define SA1111_L3_CAR		0x1c
> -#define SA1111_L3_CDR		0x20
> -#define SA1111_ACCAR		0x24
> -#define SA1111_ACCDR		0x28
> -#define SA1111_ACSAR		0x2c
> -#define SA1111_ACSDR		0x30
> -#define SA1111_SADTCS		0x34
> -#define SA1111_SADTSA		0x38
> -#define SA1111_SADTCA		0x3c
> -#define SA1111_SADTSB		0x40
> -#define SA1111_SADTCB		0x44
> -#define SA1111_SADRCS		0x48
> -#define SA1111_SADRSA		0x4c
> -#define SA1111_SADRCA		0x50
> -#define SA1111_SADRSB		0x54
> -#define SA1111_SADRCB		0x58
> -#define SA1111_SAITR		0x5c
> -#define SA1111_SADR		0x80
> -
> -#ifndef CONFIG_ARCH_PXA
> -
> -#define SACR0_ENB	(1<<0)
> -#define SACR0_BCKD	(1<<2)
> -#define SACR0_RST	(1<<3)
> -
> -#define SACR1_AMSL	(1<<0)
> -#define SACR1_L3EN	(1<<1)
> -#define SACR1_L3MB	(1<<2)
> -#define SACR1_DREC	(1<<3)
> -#define SACR1_DRPL	(1<<4)
> -#define SACR1_ENLBF	(1<<5)
> -
> -#define SACR2_TS3V	(1<<0)
> -#define SACR2_TS4V	(1<<1)
> -#define SACR2_WKUP	(1<<2)
> -#define SACR2_DREC	(1<<3)
> -#define SACR2_DRPL	(1<<4)
> -#define SACR2_ENLBF	(1<<5)
> -#define SACR2_RESET	(1<<6)
> -
> -#define SASR0_TNF	(1<<0)
> -#define SASR0_RNE	(1<<1)
> -#define SASR0_BSY	(1<<2)
> -#define SASR0_TFS	(1<<3)
> -#define SASR0_RFS	(1<<4)
> -#define SASR0_TUR	(1<<5)
> -#define SASR0_ROR	(1<<6)
> -#define SASR0_L3WD	(1<<16)
> -#define SASR0_L3RD	(1<<17)
> -
> -#define SASR1_TNF	(1<<0)
> -#define SASR1_RNE	(1<<1)
> -#define SASR1_BSY	(1<<2)
> -#define SASR1_TFS	(1<<3)
> -#define SASR1_RFS	(1<<4)
> -#define SASR1_TUR	(1<<5)
> -#define SASR1_ROR	(1<<6)
> -#define SASR1_CADT	(1<<16)
> -#define SASR1_SADR	(1<<17)
> -#define SASR1_RSTO	(1<<18)
> -#define SASR1_CLPM	(1<<19)
> -#define SASR1_CRDY	(1<<20)
> -#define SASR1_RS3V	(1<<21)
> -#define SASR1_RS4V	(1<<22)
> -
> -#define SASCR_TUR	(1<<5)
> -#define SASCR_ROR	(1<<6)
> -#define SASCR_DTS	(1<<16)
> -#define SASCR_RDD	(1<<17)
> -#define SASCR_STO	(1<<18)
> -
> -#define SADTCS_TDEN	(1<<0)
> -#define SADTCS_TDIE	(1<<1)
> -#define SADTCS_TDBDA	(1<<3)
> -#define SADTCS_TDSTA	(1<<4)
> -#define SADTCS_TDBDB	(1<<5)
> -#define SADTCS_TDSTB	(1<<6)
> -#define SADTCS_TBIU	(1<<7)
> -
> -#define SADRCS_RDEN	(1<<0)
> -#define SADRCS_RDIE	(1<<1)
> -#define SADRCS_RDBDA	(1<<3)
> -#define SADRCS_RDSTA	(1<<4)
> -#define SADRCS_RDBDB	(1<<5)
> -#define SADRCS_RDSTB	(1<<6)
> -#define SADRCS_RBIU	(1<<7)
> -
> -#define SAD_CS_DEN	(1<<0)
> -#define SAD_CS_DIE	(1<<1)	/* Not functional on metal 1 */
> -#define SAD_CS_DBDA	(1<<3)	/* Not functional on metal 1 */
> -#define SAD_CS_DSTA	(1<<4)
> -#define SAD_CS_DBDB	(1<<5)	/* Not functional on metal 1 */
> -#define SAD_CS_DSTB	(1<<6)
> -#define SAD_CS_BIU	(1<<7)	/* Not functional on metal 1 */
> -
> -#define SAITR_TFS	(1<<0)
> -#define SAITR_RFS	(1<<1)
> -#define SAITR_TUR	(1<<2)
> -#define SAITR_ROR	(1<<3)
> -#define SAITR_CADT	(1<<4)
> -#define SAITR_SADR	(1<<5)
> -#define SAITR_RSTO	(1<<6)
> -#define SAITR_TDBDA	(1<<8)
> -#define SAITR_TDBDB	(1<<9)
> -#define SAITR_RDBDA	(1<<10)
> -#define SAITR_RDBDB	(1<<11)
> -
> -#endif  /* !CONFIG_ARCH_PXA */
> -
> -/*
> - * General-Purpose I/O Interface
> - *
> - * Registers
> - *    PA_DDR		GPIO Block A Data Direction
> - *    PA_DRR/PA_DWR	GPIO Block A Data Value Register (read/write)
> - *    PA_SDR		GPIO Block A Sleep Direction
> - *    PA_SSR		GPIO Block A Sleep State
> - *    PB_DDR		GPIO Block B Data Direction
> - *    PB_DRR/PB_DWR	GPIO Block B Data Value Register (read/write)
> - *    PB_SDR		GPIO Block B Sleep Direction
> - *    PB_SSR		GPIO Block B Sleep State
> - *    PC_DDR		GPIO Block C Data Direction
> - *    PC_DRR/PC_DWR	GPIO Block C Data Value Register (read/write)
> - *    PC_SDR		GPIO Block C Sleep Direction
> - *    PC_SSR		GPIO Block C Sleep State
> - */
> -
> -#define SA1111_GPIO	0x1000
> -
> -#define SA1111_GPIO_PADDR	(0x000)
> -#define SA1111_GPIO_PADRR	(0x004)
> -#define SA1111_GPIO_PADWR	(0x004)
> -#define SA1111_GPIO_PASDR	(0x008)
> -#define SA1111_GPIO_PASSR	(0x00c)
> -#define SA1111_GPIO_PBDDR	(0x010)
> -#define SA1111_GPIO_PBDRR	(0x014)
> -#define SA1111_GPIO_PBDWR	(0x014)
> -#define SA1111_GPIO_PBSDR	(0x018)
> -#define SA1111_GPIO_PBSSR	(0x01c)
> -#define SA1111_GPIO_PCDDR	(0x020)
> -#define SA1111_GPIO_PCDRR	(0x024)
> -#define SA1111_GPIO_PCDWR	(0x024)
> -#define SA1111_GPIO_PCSDR	(0x028)
> -#define SA1111_GPIO_PCSSR	(0x02c)
> -
> -#define GPIO_A0		(1 << 0)
> -#define GPIO_A1		(1 << 1)
> -#define GPIO_A2		(1 << 2)
> -#define GPIO_A3		(1 << 3)
> -
> -#define GPIO_B0		(1 << 8)
> -#define GPIO_B1		(1 << 9)
> -#define GPIO_B2		(1 << 10)
> -#define GPIO_B3		(1 << 11)
> -#define GPIO_B4		(1 << 12)
> -#define GPIO_B5		(1 << 13)
> -#define GPIO_B6		(1 << 14)
> -#define GPIO_B7		(1 << 15)
> -
> -#define GPIO_C0		(1 << 16)
> -#define GPIO_C1		(1 << 17)
> -#define GPIO_C2		(1 << 18)
> -#define GPIO_C3		(1 << 19)
> -#define GPIO_C4		(1 << 20)
> -#define GPIO_C5		(1 << 21)
> -#define GPIO_C6		(1 << 22)
> -#define GPIO_C7		(1 << 23)
> -
> -/*
> - * Interrupt Controller
> - *
> - * Registers
> - *    INTTEST0		Test register 0
> - *    INTTEST1		Test register 1
> - *    INTEN0		Interrupt Enable register 0
> - *    INTEN1		Interrupt Enable register 1
> - *    INTPOL0		Interrupt Polarity selection 0
> - *    INTPOL1		Interrupt Polarity selection 1
> - *    INTTSTSEL		Interrupt source selection
> - *    INTSTATCLR0	Interrupt Status/Clear 0
> - *    INTSTATCLR1	Interrupt Status/Clear 1
> - *    INTSET0		Interrupt source set 0
> - *    INTSET1		Interrupt source set 1
> - *    WAKE_EN0		Wake-up source enable 0
> - *    WAKE_EN1		Wake-up source enable 1
> - *    WAKE_POL0		Wake-up polarity selection 0
> - *    WAKE_POL1		Wake-up polarity selection 1
> - */
> -#define SA1111_INTC		0x1600
> -
> -/*
> - * These are offsets from the above base.
> - */
> -#define SA1111_INTTEST0		0x0000
> -#define SA1111_INTTEST1		0x0004
> -#define SA1111_INTEN0		0x0008
> -#define SA1111_INTEN1		0x000c
> -#define SA1111_INTPOL0		0x0010
> -#define SA1111_INTPOL1		0x0014
> -#define SA1111_INTTSTSEL	0x0018
> -#define SA1111_INTSTATCLR0	0x001c
> -#define SA1111_INTSTATCLR1	0x0020
> -#define SA1111_INTSET0		0x0024
> -#define SA1111_INTSET1		0x0028
> -#define SA1111_WAKEEN0		0x002c
> -#define SA1111_WAKEEN1		0x0030
> -#define SA1111_WAKEPOL0		0x0034
> -#define SA1111_WAKEPOL1		0x0038
> -
> -/* PS/2 Trackpad and Mouse Interfaces */
> -#define SA1111_KBD		0x0a00
> -#define SA1111_MSE		0x0c00
> -
> -/* PCMCIA Interface */
> -#define SA1111_PCMCIA		0x1600
> -
> -
> -
> -
> -
> -extern const struct bus_type sa1111_bus_type;
> -
> -#define SA1111_DEVID_SBI	(1 << 0)
> -#define SA1111_DEVID_SK		(1 << 1)
> -#define SA1111_DEVID_USB	(1 << 2)
> -#define SA1111_DEVID_SAC	(1 << 3)
> -#define SA1111_DEVID_SSP	(1 << 4)
> -#define SA1111_DEVID_PS2	(3 << 5)
> -#define SA1111_DEVID_PS2_KBD	(1 << 5)
> -#define SA1111_DEVID_PS2_MSE	(1 << 6)
> -#define SA1111_DEVID_GPIO	(1 << 7)
> -#define SA1111_DEVID_INT	(1 << 8)
> -#define SA1111_DEVID_PCMCIA	(1 << 9)
> -
> -struct sa1111_dev {
> -	struct device	dev;
> -	unsigned int	devid;
> -	struct resource	res;
> -	void __iomem	*mapbase;
> -	unsigned int	skpcr_mask;
> -	unsigned int	hwirq[6];
> -	u64		dma_mask;
> -};
> -
> -#define to_sa1111_device(x)	container_of(x, struct sa1111_dev, dev)
> -
> -#define sa1111_get_drvdata(d)	dev_get_drvdata(&(d)->dev)
> -#define sa1111_set_drvdata(d,p)	dev_set_drvdata(&(d)->dev, p)
> -
> -struct sa1111_driver {
> -	struct device_driver	drv;
> -	unsigned int		devid;
> -	int (*probe)(struct sa1111_dev *);
> -	void (*remove)(struct sa1111_dev *);
> -};
> -
> -#define SA1111_DRV(_d)	container_of_const((_d), struct sa1111_driver, drv)
> -
> -#define SA1111_DRIVER_NAME(_sadev) ((_sadev)->dev.driver->name)
> -
> -/*
> - * These frob the SKPCR register, and call platform specific
> - * enable/disable functions.
> - */
> -int sa1111_enable_device(struct sa1111_dev *);
> -void sa1111_disable_device(struct sa1111_dev *);
> -
> -int sa1111_get_irq(struct sa1111_dev *, unsigned num);
> -
> -unsigned int sa1111_pll_clock(struct sa1111_dev *);
> -
> -#define SA1111_AUDIO_ACLINK	0
> -#define SA1111_AUDIO_I2S	1
> -
> -void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode);
> -int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate);
> -int sa1111_get_audio_rate(struct sa1111_dev *sadev);
> -
> -int sa1111_check_dma_bug(dma_addr_t addr);
> -
> -int sa1111_driver_register(struct sa1111_driver *);
> -void sa1111_driver_unregister(struct sa1111_driver *);
> -
> -struct sa1111_platform_data {
> -	int	irq_base;	/* base for cascaded on-chip IRQs */
> -	unsigned disable_devs;
> -	void	*data;
> -	int	(*enable)(void *, unsigned);
> -	void	(*disable)(void *, unsigned);
> -};
> -
> -#endif  /* _ASM_ARCH_SA1111 */
> diff --git a/arch/arm/include/asm/hardware/ssp.h b/arch/arm/include/asm/hardware/ssp.h
> deleted file mode 100644
> index 72d176790308..000000000000
> --- a/arch/arm/include/asm/hardware/ssp.h
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - *  ssp.h
> - *
> - *  Copyright (C) 2003 Russell King, All Rights Reserved.
> - */
> -#ifndef SSP_H
> -#define SSP_H
> -
> -struct ssp_state {
> -	unsigned int	cr0;
> -	unsigned int	cr1;
> -};
> -
> -int ssp_write_word(u16 data);
> -int ssp_read_word(u16 *data);
> -int ssp_flush(void);
> -void ssp_enable(void);
> -void ssp_disable(void);
> -void ssp_save_state(struct ssp_state *ssp);
> -void ssp_restore_state(struct ssp_state *ssp);
> -int ssp_init(void);
> -void ssp_exit(void);
> -
> -#endif
> diff --git a/arch/arm/include/debug/sa1100.S b/arch/arm/include/debug/sa1100.S
> deleted file mode 100644
> index 7968ea52df3d..000000000000
> --- a/arch/arm/include/debug/sa1100.S
> +++ /dev/null
> @@ -1,67 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/* arch/arm/include/debug/sa1100.S
> - *
> - * Debugging macro include header
> - *
> - *  Copyright (C) 1994-1999 Russell King
> - *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
> -*/
> -
> -#define UTCR3		0x0c
> -#define UTDR		0x14
> -#define UTSR1		0x20
> -#define UTCR3_TXE	0x00000002	/* Transmit Enable                 */
> -#define UTSR1_TBY	0x00000001	/* Transmitter BusY (read)         */
> -#define UTSR1_TNF	0x00000004	/* Transmit FIFO Not Full (read)   */
> -
> -		.macro	addruart, rp, rv, tmp
> -		mrc	p15, 0, \rp, c1, c0
> -		tst	\rp, #1			@ MMU enabled?
> -		moveq	\rp, #0x80000000	@ physical base address
> -		movne	\rp, #0xf8000000	@ virtual address
> -
> -		@ We probe for the active serial port here, coherently with
> -		@ the comment in arch/arm/mach-sa1100/include/mach/uncompress.h.
> -		@ We assume r1 can be clobbered.
> -
> -		@ see if Ser3 is active
> -		add	\rp, \rp, #0x00050000
> -		ldr	\rv, [\rp, #UTCR3]
> -		tst	\rv, #UTCR3_TXE
> -
> -		@ if Ser3 is inactive, then try Ser1
> -		addeq	\rp, \rp, #(0x00010000 - 0x00050000)
> -		ldreq	\rv, [\rp, #UTCR3]
> -		tsteq	\rv, #UTCR3_TXE
> -
> -		@ if Ser1 is inactive, then try Ser2
> -		addeq	\rp, \rp, #(0x00030000 - 0x00010000)
> -		ldreq	\rv, [\rp, #UTCR3]
> -		tsteq	\rv, #UTCR3_TXE
> -
> -		@ clear top bits, and generate both phys and virt addresses
> -		lsl	\rp, \rp, #8
> -		lsr	\rp, \rp, #8
> -		orr	\rv, \rp, #0xf8000000	@ virtual
> -		orr	\rp, \rp, #0x80000000	@ physical
> -
> -		.endm
> -
> -		.macro	senduart,rd,rx
> -		str	\rd, [\rx, #UTDR]
> -		.endm
> -
> -		.macro	waituartcts,rd,rx
> -		.endm
> -
> -		.macro	waituarttxrdy,rd,rx
> -1001:		ldr	\rd, [\rx, #UTSR1]
> -		tst	\rd, #UTSR1_TNF
> -		beq	1001b
> -		.endm
> -
> -		.macro	busyuart,rd,rx
> -1001:		ldr	\rd, [\rx, #UTSR1]
> -		tst	\rd, #UTSR1_TBY
> -		bne	1001b
> -		.endm
> diff --git a/arch/arm/mach-sa1100/Kconfig b/arch/arm/mach-sa1100/Kconfig
> deleted file mode 100644
> index d50721e39641..000000000000
> --- a/arch/arm/mach-sa1100/Kconfig
> +++ /dev/null
> @@ -1,92 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0-only
> -menuconfig ARCH_SA1100
> -	bool "SA11x0 Implementations (DEPRECATED)"
> -	depends on ARCH_MULTI_V4 && !(ARCH_MULTI_V4T || ARCH_MULTI_V5)
> -	depends on !(ARCH_MOXART || ARCH_GEMINI)
> -	depends on ATAGS
> -	depends on CPU_LITTLE_ENDIAN
> -	depends on MMU
> -	select ARCH_NO_SG_CHAIN
> -	select ARCH_MTD_XIP
> -	select CLKSRC_MMIO
> -	select CLKSRC_PXA
> -	select CPU_FREQ
> -	select CPU_SA1100
> -	select GPIOLIB
> -	select GPIOLIB_LEGACY
> -	select IRQ_DOMAIN
> -	select ISA
> -	select NEED_MACH_MEMORY_H
> -	help
> -	  Support for StrongARM 11x0 based boards.
> -
> -	  Support for these machines will go away in 2027,
> -	  unless there are any remaining users that speak up.
> -
> -if ARCH_SA1100
> -
> -config SA1100_ASSABET
> -	bool "Assabet"
> -	select ARM_SA1110_CPUFREQ
> -	select GPIO_REG
> -	select LEDS_GPIO_REGISTER
> -	select REGULATOR
> -	select REGULATOR_FIXED_VOLTAGE
> -	help
> -	  Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
> -	  Microprocessor Development Board (also known as the Assabet).
> -
> -config ASSABET_NEPONSET
> -	bool "Include support for Neponset"
> -	depends on SA1100_ASSABET
> -	select SA1111
> -	help
> -	  Say Y here if you are using the Intel(R) StrongARM(R) SA-1110
> -	  Microprocessor Development Board (Assabet)  with the SA-1111
> -	  Development Board (Nepon).
> -
> -config SA1100_COLLIE
> -	bool "Sharp Zaurus SL5500"
> -	# FIXME: select ARM_SA11x0_CPUFREQ
> -	select SHARP_LOCOMO
> -	select SHARP_PARAM
> -	select SHARP_SCOOP
> -	help
> -	  Say Y here to support the Sharp Zaurus SL5500 PDAs.
> -
> -config SA1100_H3600
> -	bool "Compaq iPAQ H3600/H3700"
> -	select ARM_SA1110_CPUFREQ
> -	select HTC_EGPIO
> -	select MFD_IPAQ_MICRO
> -	help
> -	  Say Y here if you intend to run this kernel on the Compaq iPAQ
> -	  H3600 and H3700 handheld computers.
> -
> -config SA1100_JORNADA720
> -	bool "HP Jornada 720"
> -	# FIXME: select ARM_SA11x0_CPUFREQ
> -	select SA1111
> -	help
> -	  Say Y here if you want to build a kernel for the HP Jornada 720
> -	  handheld computer.  See 
> -	  <http://h10025.www1.hp.com/ewfrf/wc/product?product=61677&cc=us&lc=en&dlc=en&product=61677#> 
> -
> -config SA1100_JORNADA720_SSP
> -	bool "HP Jornada 720 Extended SSP driver"
> -	depends on SA1100_JORNADA720
> -	select SA1100_SSP
> -	help
> -	  Say Y here if you have a HP Jornada 7xx handheld computer and you
> -	  want to access devices connected to the MCU. Those include the
> -	  keyboard, touchscreen, backlight and battery. This driver also activates
> -	  the generic SSP which it extends.
> -
> -config SA1100_SSP
> -	tristate "Generic PIO SSP"
> -	help
> -	  Say Y here to enable support for the generic PIO SSP driver.
> -	  This isn't for audio support, but for attached sensors and
> -	  other devices, eg for BadgePAD 4 sensor support.
> -
> -endif
> diff --git a/arch/arm/mach-sa1100/Makefile b/arch/arm/mach-sa1100/Makefile
> deleted file mode 100644
> index b5816d675152..000000000000
> --- a/arch/arm/mach-sa1100/Makefile
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -# SPDX-License-Identifier: GPL-2.0
> -#
> -# Makefile for the linux kernel.
> -#
> -
> -# Common support
> -obj-y := clock.o generic.o #nmi-oopser.o
> -
> -# Specific board support
> -obj-$(CONFIG_SA1100_ASSABET)		+= assabet.o
> -obj-$(CONFIG_ASSABET_NEPONSET)		+= neponset.o
> -obj-$(CONFIG_SA1100_COLLIE)		+= collie.o
> -obj-$(CONFIG_SA1100_H3600)		+= h3600.o h3xxx.o
> -obj-$(CONFIG_SA1100_JORNADA720)		+= jornada720.o
> -obj-$(CONFIG_SA1100_JORNADA720_SSP)	+= jornada720_ssp.o
> -
> -# Miscellaneous functions
> -obj-$(CONFIG_PM)			+= pm.o sleep.o
> -obj-$(CONFIG_SA1100_SSP)		+= ssp.o
> -
> diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
> deleted file mode 100644
> index b001f0b6a3fa..000000000000
> --- a/arch/arm/mach-sa1100/assabet.c
> +++ /dev/null
> @@ -1,770 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/mach-sa1100/assabet.c
> - *
> - * Author: Nicolas Pitre
> - *
> - * This file contains all Assabet-specific tweaks.
> - */
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/errno.h>
> -#include <linux/gpio/driver.h>
> -#include <linux/gpio/gpio-reg.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/gpio/property.h>
> -#include <linux/input.h>
> -#include <linux/ioport.h>
> -#include <linux/property.h>
> -#include <linux/platform_data/sa11x0-serial.h>
> -#include <linux/regulator/fixed.h>
> -#include <linux/regulator/machine.h>
> -#include <linux/serial_core.h>
> -#include <linux/platform_device.h>
> -#include <linux/mfd/ucb1x00.h>
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/partitions.h>
> -#include <linux/delay.h>
> -#include <linux/mm.h>
> -#include <linux/leds.h>
> -#include <linux/slab.h>
> -
> -#include <video/sa1100fb.h>
> -
> -#include <mach/hardware.h>
> -#include <asm/mach-types.h>
> -#include <asm/setup.h>
> -#include <asm/page.h>
> -#include <asm/pgtable-hwdef.h>
> -#include <asm/tlbflush.h>
> -
> -#include <asm/mach/arch.h>
> -#include <asm/mach/flash.h>
> -#include <asm/mach/map.h>
> -#include <mach/assabet.h>
> -#include <linux/platform_data/mfd-mcp-sa11x0.h>
> -#include <mach/irqs.h>
> -
> -#include "generic.h"
> -
> -#define ASSABET_BCR_DB1110 \
> -	(ASSABET_BCR_SPK_OFF    | \
> -	 ASSABET_BCR_LED_GREEN  | ASSABET_BCR_LED_RED   | \
> -	 ASSABET_BCR_RS232EN    | ASSABET_BCR_LCD_12RGB | \
> -	 ASSABET_BCR_IRDA_MD0)
> -
> -#define ASSABET_BCR_DB1111 \
> -	(ASSABET_BCR_SPK_OFF    | \
> -	 ASSABET_BCR_LED_GREEN  | ASSABET_BCR_LED_RED   | \
> -	 ASSABET_BCR_RS232EN    | ASSABET_BCR_LCD_12RGB | \
> -	 ASSABET_BCR_CF_BUS_OFF | ASSABET_BCR_STEREO_LB | \
> -	 ASSABET_BCR_IRDA_MD0   | ASSABET_BCR_CF_RST)
> -
> -unsigned long SCR_value = ASSABET_SCR_INIT;
> -EXPORT_SYMBOL(SCR_value);
> -
> -static struct gpio_chip *assabet_bcr_gc;
> -
> -static const char *assabet_names[] = {
> -	"cf_pwr", "cf_gfx_reset", "nsoft_reset", "irda_fsel",
> -	"irda_md0", "irda_md1", "stereo_loopback", "ncf_bus_on",
> -	"audio_pwr_on", "light_pwr_on", "lcd16data", "lcd_pwr_on",
> -	"rs232_on", "nred_led", "ngreen_led", "vib_on",
> -	"com_dtr", "com_rts", "radio_wake_mod", "i2c_enab",
> -	"tvir_enab", "qmute", "radio_pwr_on", "spkr_off",
> -	"rs232_valid", "com_dcd", "com_cts", "com_dsr",
> -	"radio_cts", "radio_dsr", "radio_dcd", "radio_ri",
> -};
> -
> -/* The old deprecated interface */
> -void ASSABET_BCR_frob(unsigned int mask, unsigned int val)
> -{
> -	unsigned long m = mask, v = val;
> -
> -	assabet_bcr_gc->set_multiple(assabet_bcr_gc, &m, &v);
> -}
> -EXPORT_SYMBOL(ASSABET_BCR_frob);
> -
> -static void __init assabet_init_gpio(void __iomem *reg, u32 def_val)
> -{
> -	struct gpio_chip *gc;
> -
> -	writel_relaxed(def_val, reg);
> -
> -	gc = gpio_reg_init(NULL, reg, -1, 32, "assabet", 0xff000000, def_val,
> -			   assabet_names, NULL, NULL);
> -
> -	if (IS_ERR(gc))
> -		return;
> -
> -	assabet_bcr_gc = gc;
> -}
> -
> -/*
> - * The codec reset goes to three devices, so we need to release
> - * the rest when any one of these requests it.  However, that
> - * causes the ADV7171 to consume around 100mA - more than half
> - * the LCD-blanked power.
> - *
> - * With the ADV7171, LCD and backlight enabled, we go over
> - * budget on the MAX846 Li-Ion charger, and if no Li-Ion battery
> - * is connected, the Assabet crashes.
> - */
> -#define RST_UCB1X00 (1 << 0)
> -#define RST_UDA1341 (1 << 1)
> -#define RST_ADV7171 (1 << 2)
> -
> -#define SDA GPIO_GPIO(15)
> -#define SCK GPIO_GPIO(18)
> -#define MOD GPIO_GPIO(17)
> -
> -static void adv7171_start(void)
> -{
> -	GPSR = SCK;
> -	udelay(1);
> -	GPSR = SDA;
> -	udelay(2);
> -	GPCR = SDA;
> -}
> -
> -static void adv7171_stop(void)
> -{
> -	GPSR = SCK;
> -	udelay(2);
> -	GPSR = SDA;
> -	udelay(1);
> -}
> -
> -static void adv7171_send(unsigned byte)
> -{
> -	unsigned i;
> -
> -	for (i = 0; i < 8; i++, byte <<= 1) {
> -		GPCR = SCK;
> -		udelay(1);
> -		if (byte & 0x80)
> -			GPSR = SDA;
> -		else
> -			GPCR = SDA;
> -		udelay(1);
> -		GPSR = SCK;
> -		udelay(1);
> -	}
> -	GPCR = SCK;
> -	udelay(1);
> -	GPSR = SDA;
> -	udelay(1);
> -	GPDR &= ~SDA;
> -	GPSR = SCK;
> -	udelay(1);
> -	if (GPLR & SDA)
> -		printk(KERN_WARNING "No ACK from ADV7171\n");
> -	udelay(1);
> -	GPCR = SCK | SDA;
> -	udelay(1);
> -	GPDR |= SDA;
> -	udelay(1);
> -}
> -
> -static void adv7171_write(unsigned reg, unsigned val)
> -{
> -	unsigned gpdr = GPDR;
> -	unsigned gplr = GPLR;
> -
> -	ASSABET_BCR_frob(ASSABET_BCR_AUDIO_ON, ASSABET_BCR_AUDIO_ON);
> -	udelay(100);
> -
> -	GPCR = SDA | SCK | MOD; /* clear L3 mode to ensure UDA1341 doesn't respond */
> -	GPDR = (GPDR | SCK | MOD) & ~SDA;
> -	udelay(10);
> -	if (!(GPLR & SDA))
> -		printk(KERN_WARNING "Something dragging SDA down?\n");
> -	GPDR |= SDA;
> -
> -	adv7171_start();
> -	adv7171_send(0x54);
> -	adv7171_send(reg);
> -	adv7171_send(val);
> -	adv7171_stop();
> -
> -	/* Restore GPIO state for L3 bus */
> -	GPSR = gplr & (SDA | SCK | MOD);
> -	GPCR = (~gplr) & (SDA | SCK | MOD);
> -	GPDR = gpdr;
> -}
> -
> -static void adv7171_sleep(void)
> -{
> -	/* Put the ADV7171 into sleep mode */
> -	adv7171_write(0x04, 0x40);
> -}
> -
> -static unsigned codec_nreset;
> -
> -static void assabet_codec_reset(unsigned mask, int set)
> -{
> -	unsigned long flags;
> -	bool old;
> -
> -	local_irq_save(flags);
> -	old = !codec_nreset;
> -	if (set)
> -		codec_nreset &= ~mask;
> -	else
> -		codec_nreset |= mask;
> -
> -	if (old != !codec_nreset) {
> -		if (codec_nreset) {
> -			ASSABET_BCR_set(ASSABET_BCR_NCODEC_RST);
> -			adv7171_sleep();
> -		} else {
> -			ASSABET_BCR_clear(ASSABET_BCR_NCODEC_RST);
> -		}
> -	}
> -	local_irq_restore(flags);
> -}
> -
> -static void assabet_ucb1x00_reset(enum ucb1x00_reset state)
> -{
> -	int set = state == UCB_RST_REMOVE || state == UCB_RST_SUSPEND ||
> -		state == UCB_RST_PROBE_FAIL;
> -	assabet_codec_reset(RST_UCB1X00, set);
> -}
> -
> -void assabet_uda1341_reset(int set)
> -{
> -	assabet_codec_reset(RST_UDA1341, set);
> -}
> -EXPORT_SYMBOL(assabet_uda1341_reset);
> -
> -
> -/*
> - * Assabet flash support code.
> - */
> -
> -#ifdef ASSABET_REV_4
> -/*
> - * Phase 4 Assabet has two 28F160B3 flash parts in bank 0:
> - */
> -static struct mtd_partition assabet_partitions[] = {
> -	{
> -		.name		= "bootloader",
> -		.size		= 0x00020000,
> -		.offset		= 0,
> -		.mask_flags	= MTD_WRITEABLE,
> -	}, {
> -		.name		= "bootloader params",
> -		.size		= 0x00020000,
> -		.offset		= MTDPART_OFS_APPEND,
> -		.mask_flags	= MTD_WRITEABLE,
> -	}, {
> -		.name		= "jffs",
> -		.size		= MTDPART_SIZ_FULL,
> -		.offset		= MTDPART_OFS_APPEND,
> -	}
> -};
> -#else
> -/*
> - * Phase 5 Assabet has two 28F128J3A flash parts in bank 0:
> - */
> -static struct mtd_partition assabet_partitions[] = {
> -	{
> -		.name		= "bootloader",
> -		.size		= 0x00040000,
> -		.offset		= 0,
> -		.mask_flags	= MTD_WRITEABLE,
> -	}, {
> -		.name		= "bootloader params",
> -		.size		= 0x00040000,
> -		.offset		= MTDPART_OFS_APPEND,
> -		.mask_flags	= MTD_WRITEABLE,
> -	}, {
> -		.name		= "jffs",
> -		.size		= MTDPART_SIZ_FULL,
> -		.offset		= MTDPART_OFS_APPEND,
> -	}
> -};
> -#endif
> -
> -static struct flash_platform_data assabet_flash_data = {
> -	.map_name	= "cfi_probe",
> -	.parts		= assabet_partitions,
> -	.nr_parts	= ARRAY_SIZE(assabet_partitions),
> -};
> -
> -static struct resource assabet_flash_resources[] = {
> -	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M),
> -	DEFINE_RES_MEM(SA1100_CS1_PHYS, SZ_32M),
> -};
> -
> -
> -static struct ucb1x00_plat_data assabet_ucb1x00_data = {
> -	.reset		= assabet_ucb1x00_reset,
> -	.gpio_base	= -1,
> -	.can_wakeup	= 1,
> -};
> -
> -static struct mcp_plat_data assabet_mcp_data = {
> -	.mccr0		= MCCR0_ADM,
> -	.sclk_rate	= 11981000,
> -	.codec_pdata	= &assabet_ucb1x00_data,
> -};
> -
> -static void assabet_lcd_set_visual(u32 visual)
> -{
> -	u_int is_true_color = visual == FB_VISUAL_TRUECOLOR;
> -
> -	if (machine_is_assabet()) {
> -#if 1		// phase 4 or newer Assabet's
> -		if (is_true_color)
> -			ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB);
> -		else
> -			ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB);
> -#else
> -		// older Assabet's
> -		if (is_true_color)
> -			ASSABET_BCR_clear(ASSABET_BCR_LCD_12RGB);
> -		else
> -			ASSABET_BCR_set(ASSABET_BCR_LCD_12RGB);
> -#endif
> -	}
> -}
> -
> -#ifndef ASSABET_PAL_VIDEO
> -static void assabet_lcd_backlight_power(int on)
> -{
> -	if (on)
> -		ASSABET_BCR_set(ASSABET_BCR_LIGHT_ON);
> -	else
> -		ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON);
> -}
> -
> -/*
> - * Turn on/off the backlight.  When turning the backlight on, we wait
> - * 500us after turning it on so we don't cause the supplies to droop
> - * when we enable the LCD controller (and cause a hard reset.)
> - */
> -static void assabet_lcd_power(int on)
> -{
> -	if (on) {
> -		ASSABET_BCR_set(ASSABET_BCR_LCD_ON);
> -		udelay(500);
> -	} else
> -		ASSABET_BCR_clear(ASSABET_BCR_LCD_ON);
> -}
> -
> -/*
> - * The assabet uses a sharp LQ039Q2DS54 LCD module.  It is actually
> - * takes an RGB666 signal, but we provide it with an RGB565 signal
> - * instead (def_rgb_16).
> - */
> -static struct sa1100fb_mach_info lq039q2ds54_info = {
> -	.pixclock	= 171521,	.bpp		= 16,
> -	.xres		= 320,		.yres		= 240,
> -
> -	.hsync_len	= 5,		.vsync_len	= 1,
> -	.left_margin	= 61,		.upper_margin	= 3,
> -	.right_margin	= 9,		.lower_margin	= 0,
> -
> -	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
> -
> -	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
> -	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
> -
> -	.backlight_power = assabet_lcd_backlight_power,
> -	.lcd_power = assabet_lcd_power,
> -	.set_visual = assabet_lcd_set_visual,
> -};
> -#else
> -static void assabet_pal_backlight_power(int on)
> -{
> -	ASSABET_BCR_clear(ASSABET_BCR_LIGHT_ON);
> -}
> -
> -static void assabet_pal_power(int on)
> -{
> -	ASSABET_BCR_clear(ASSABET_BCR_LCD_ON);
> -}
> -
> -static struct sa1100fb_mach_info pal_info = {
> -	.pixclock	= 67797,	.bpp		= 16,
> -	.xres		= 640,		.yres		= 512,
> -
> -	.hsync_len	= 64,		.vsync_len	= 6,
> -	.left_margin	= 125,		.upper_margin	= 70,
> -	.right_margin	= 115,		.lower_margin	= 36,
> -
> -	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
> -	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(512),
> -
> -	.backlight_power = assabet_pal_backlight_power,
> -	.lcd_power = assabet_pal_power,
> -	.set_visual = assabet_lcd_set_visual,
> -};
> -#endif
> -
> -#ifdef CONFIG_ASSABET_NEPONSET
> -static struct resource neponset_resources[] = {
> -	DEFINE_RES_MEM(0x10000000, 0x08000000),
> -	DEFINE_RES_MEM(0x18000000, 0x04000000),
> -	DEFINE_RES_MEM(0x40000000, SZ_8K),
> -	DEFINE_RES_IRQ(IRQ_GPIO25),
> -};
> -#endif
> -
> -static struct gpiod_lookup_table assabet_cf_gpio_table = {
> -	.dev_id = "sa11x0-pcmcia.1",
> -	.table = {
> -		GPIO_LOOKUP("gpio", 21, "ready", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("gpio", 22, "detect", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("gpio", 24, "bvd2", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("gpio", 25, "bvd1", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("assabet", 1, "reset", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("assabet", 7, "bus-enable", GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -static struct regulator_consumer_supply assabet_cf_vcc_consumers[] = {
> -	REGULATOR_SUPPLY("vcc", "sa11x0-pcmcia.1"),
> -};
> -
> -static struct fixed_voltage_config assabet_cf_vcc_pdata __initdata = {
> -	.supply_name = "cf-power",
> -	.microvolts = 3300000,
> -};
> -
> -static struct gpiod_lookup_table assabet_cf_vcc_gpio_table = {
> -	.dev_id = "reg-fixed-voltage.0",
> -	.table = {
> -		GPIO_LOOKUP("assabet", 0, NULL, GPIO_ACTIVE_HIGH),
> -		{ },
> -	},
> -};
> -
> -static struct gpiod_lookup_table assabet_leds_gpio_table = {
> -	.dev_id = "leds-gpio",
> -	.table = {
> -		GPIO_LOOKUP("assabet", 13, NULL, GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 14, NULL, GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -static struct gpio_led assabet_leds[] __initdata = {
> -	{
> -		.name = "assabet:red",
> -		.default_trigger = "cpu0",
> -		.default_state = LEDS_GPIO_DEFSTATE_KEEP,
> -	}, {
> -		.name = "assabet:green",
> -		.default_trigger = "heartbeat",
> -		.default_state = LEDS_GPIO_DEFSTATE_KEEP,
> -	},
> -};
> -
> -static const struct gpio_led_platform_data assabet_leds_pdata __initconst = {
> -	.num_leds = ARRAY_SIZE(assabet_leds),
> -	.leds = assabet_leds,
> -};
> -
> -static const struct software_node assabet_gpio_keys_node = {
> -	.name = "assabet-gpio-keys",
> -};
> -
> -static const struct property_entry assabet_key0_props[] = {
> -	PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED),
> -	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
> -			    0, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_STRING("label", "gpio0"),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	PROPERTY_ENTRY_BOOL("linux,can-disable"),
> -	PROPERTY_ENTRY_U32("debounce-interval", 5),
> -	{ }
> -};
> -
> -static const struct software_node assabet_key0_node = {
> -	.parent = &assabet_gpio_keys_node,
> -	.properties = assabet_key0_props,
> -};
> -
> -static const struct property_entry assabet_key1_props[] = {
> -	PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED),
> -	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
> -			    1, GPIO_ACTIVE_HIGH),
> -	PROPERTY_ENTRY_STRING("label", "gpio1"),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	PROPERTY_ENTRY_BOOL("linux,can-disable"),
> -	PROPERTY_ENTRY_U32("debounce-interval", 5),
> -	{ }
> -};
> -
> -static const struct software_node assabet_key1_node = {
> -	.parent = &assabet_gpio_keys_node,
> -	.properties = assabet_key1_props,
> -};
> -
> -static const struct software_node * const assabet_gpio_keys_swnodes[] __initconst = {
> -	&assabet_gpio_keys_node,
> -	&assabet_key0_node,
> -	&assabet_key1_node,
> -	NULL
> -};
> -
> -static const struct platform_device_info assabet_gpio_keys_dev_info __initconst = {
> -	.name = "gpio-keys",
> -	.id = PLATFORM_DEVID_NONE,
> -	.swnode = &assabet_gpio_keys_node,
> -};
> -
> -static struct gpiod_lookup_table assabet_uart1_gpio_table = {
> -	.dev_id = "sa11x0-uart.1",
> -	.table = {
> -		GPIO_LOOKUP("assabet", 16, "dtr", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 17, "rts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 25, "dcd", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 26, "cts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 27, "dsr", GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -static struct gpiod_lookup_table assabet_uart3_gpio_table = {
> -	.dev_id = "sa11x0-uart.3",
> -	.table = {
> -		GPIO_LOOKUP("assabet", 28, "cts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 29, "dsr", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 30, "dcd", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("assabet", 31, "rng", GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -static void __init assabet_init(void)
> -{
> -	/*
> -	 * Ensure that the power supply is in "high power" mode.
> -	 */
> -	GPSR = GPIO_GPIO16;
> -	GPDR |= GPIO_GPIO16;
> -
> -	/*
> -	 * Ensure that these pins are set as outputs and are driving
> -	 * logic 0.  This ensures that we won't inadvertently toggle
> -	 * the WS latch in the CPLD, and we don't float causing
> -	 * excessive power drain.  --rmk
> -	 */
> -	GPCR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
> -	GPDR |= GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM;
> -
> -	/*
> -	 * Also set GPIO27 as an output; this is used to clock UART3
> -	 * via the FPGA and as otherwise has no pullups or pulldowns,
> -	 * so stop it floating.
> -	 */
> -	GPCR = GPIO_GPIO27;
> -	GPDR |= GPIO_GPIO27;
> -
> -	/*
> -	 * Set up registers for sleep mode.
> -	 */
> -	PWER = PWER_GPIO0;
> -	PGSR = 0;
> -	PCFR = 0;
> -	PSDR = 0;
> -	PPDR |= PPC_TXD3 | PPC_TXD1;
> -	PPSR |= PPC_TXD3 | PPC_TXD1;
> -
> -	sa11x0_ppc_configure_mcp();
> -
> -	if (machine_has_neponset()) {
> -#ifndef CONFIG_ASSABET_NEPONSET
> -		printk( "Warning: Neponset detected but full support "
> -			"hasn't been configured in the kernel\n" );
> -#else
> -		platform_device_register_simple("neponset", 0,
> -			neponset_resources, ARRAY_SIZE(neponset_resources));
> -#endif
> -	} else {
> -		gpiod_add_lookup_table(&assabet_uart1_gpio_table);
> -		gpiod_add_lookup_table(&assabet_uart3_gpio_table);
> -		gpiod_add_lookup_table(&assabet_cf_vcc_gpio_table);
> -
> -		sa11x0_register_fixed_regulator(0, &assabet_cf_vcc_pdata,
> -					assabet_cf_vcc_consumers,
> -					ARRAY_SIZE(assabet_cf_vcc_consumers),
> -					true);
> -
> -	}
> -
> -	software_node_register_node_group(assabet_gpio_keys_swnodes);
> -	platform_device_register_full(&assabet_gpio_keys_dev_info);
> -
> -	gpiod_add_lookup_table(&assabet_leds_gpio_table);
> -	gpio_led_register_device(-1, &assabet_leds_pdata);
> -
> -#ifndef ASSABET_PAL_VIDEO
> -	sa11x0_register_lcd(&lq039q2ds54_info);
> -#else
> -	sa11x0_register_lcd(&pal_video);
> -#endif
> -	sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources,
> -			    ARRAY_SIZE(assabet_flash_resources));
> -	sa11x0_register_mcp(&assabet_mcp_data);
> -
> -	if (!machine_has_neponset())
> -		sa11x0_register_pcmcia(1, &assabet_cf_gpio_table);
> -}
> -
> -/*
> - * On Assabet, we must probe for the Neponset board _before_
> - * paging_init() has occurred to actually determine the amount
> - * of RAM available.  To do so, we map the appropriate IO section
> - * in the page table here in order to access GPIO registers.
> - */
> -static void __init map_sa1100_gpio_regs( void )
> -{
> -	unsigned long phys = __PREG(GPLR) & PMD_MASK;
> -	unsigned long virt = (unsigned long)io_p2v(phys);
> -	int prot = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_DOMAIN(DOMAIN_IO);
> -	pmd_t *pmd;
> -
> -	pmd = pmd_off_k(virt);
> -	*pmd = __pmd(phys | prot);
> -	flush_pmd_entry(pmd);
> -}
> -
> -/*
> - * Read System Configuration "Register"
> - * (taken from "Intel StrongARM SA-1110 Microprocessor Development Board
> - * User's Guide", section 4.4.1)
> - *
> - * This same scan is performed in arch/arm/boot/compressed/head-sa1100.S
> - * to set up the serial port for decompression status messages. We
> - * repeat it here because the kernel may not be loaded as a zImage, and
> - * also because it's a hassle to communicate the SCR value to the kernel
> - * from the decompressor.
> - *
> - * Note that IRQs are guaranteed to be disabled.
> - */
> -static void __init get_assabet_scr(void)
> -{
> -	unsigned long scr, i;
> -
> -	GPDR |= 0x3fc;			/* Configure GPIO 9:2 as outputs */
> -	GPSR = 0x3fc;			/* Write 0xFF to GPIO 9:2 */
> -	GPDR &= ~(0x3fc);		/* Configure GPIO 9:2 as inputs */
> -	for(i = 100; i--; )		/* Read GPIO 9:2 */
> -		scr = GPLR;
> -	GPDR |= 0x3fc;			/*  restore correct pin direction */
> -	scr &= 0x3fc;			/* save as system configuration byte. */
> -	SCR_value = scr;
> -}
> -
> -static void __init
> -fixup_assabet(struct tag *tags, char **cmdline)
> -{
> -	/* This must be done before any call to machine_has_neponset() */
> -	map_sa1100_gpio_regs();
> -	get_assabet_scr();
> -
> -	if (machine_has_neponset())
> -		printk("Neponset expansion board detected\n");
> -}
> -
> -
> -static void assabet_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
> -{
> -	if (port->mapbase == _Ser1UTCR0) {
> -		if (state)
> -			ASSABET_BCR_clear(ASSABET_BCR_RS232EN);
> -		else
> -			ASSABET_BCR_set(ASSABET_BCR_RS232EN);
> -	}
> -}
> -
> -static struct sa1100_port_fns assabet_port_fns __initdata = {
> -	.pm		= assabet_uart_pm,
> -};
> -
> -static struct map_desc assabet_io_desc[] __initdata = {
> -  	{	/* Board Control Register */
> -		.virtual	=  0xf1000000,
> -		.pfn		= __phys_to_pfn(0x12000000),
> -		.length		= 0x00100000,
> -		.type		= MT_DEVICE
> -	}, {	/* MQ200 */
> -		.virtual	=  0xf2800000,
> -		.pfn		= __phys_to_pfn(0x4b800000),
> -		.length		= 0x00800000,
> -		.type		= MT_DEVICE
> -	}
> -};
> -
> -static void __init assabet_map_io(void)
> -{
> -	sa1100_map_io();
> -	iotable_init(assabet_io_desc, ARRAY_SIZE(assabet_io_desc));
> -
> -	/*
> -	 * Set SUS bit in SDCR0 so serial port 1 functions.
> -	 * Its called GPCLKR0 in my SA1110 manual.
> -	 */
> -	Ser1SDCR0 |= SDCR0_SUS;
> -	MSC1 = (MSC1 & ~0xffff) |
> -		MSC_NonBrst | MSC_32BitStMem |
> -		MSC_RdAcc(2) | MSC_WrAcc(2) | MSC_Rec(0);
> -
> -	if (!machine_has_neponset())
> -		sa1100_register_uart_fns(&assabet_port_fns);
> -
> -	/*
> -	 * When Neponset is attached, the first UART should be
> -	 * UART3.  That's what Angel is doing and many documents
> -	 * are stating this.
> -	 *
> -	 * We do the Neponset mapping even if Neponset support
> -	 * isn't compiled in so the user will still get something on
> -	 * the expected physical serial port.
> -	 *
> -	 * We no longer do this; not all boot loaders support it,
> -	 * and UART3 appears to be somewhat unreliable with blob.
> -	 */
> -	sa1100_register_uart(0, 1);
> -	sa1100_register_uart(2, 3);
> -}
> -
> -static void __init assabet_init_irq(void)
> -{
> -	u32 def_val;
> -
> -	sa1100_init_irq();
> -
> -	if (machine_has_neponset())
> -		def_val = ASSABET_BCR_DB1111;
> -	else
> -		def_val = ASSABET_BCR_DB1110;
> -
> -	/*
> -	 * Angel sets this, but other bootloaders may not.
> -	 *
> -	 * This must precede any driver calls to BCR_set() or BCR_clear().
> -	 */
> -	assabet_init_gpio((void *)&ASSABET_BCR, def_val);
> -}
> -
> -MACHINE_START(ASSABET, "Intel-Assabet")
> -	.atag_offset	= 0x100,
> -	.fixup		= fixup_assabet,
> -	.map_io		= assabet_map_io,
> -	.nr_irqs	= SA1100_NR_IRQS,
> -	.init_irq	= assabet_init_irq,
> -	.init_time	= sa1100_timer_init,
> -	.init_machine	= assabet_init,
> -	.init_late	= sa11x0_init_late,
> -#ifdef CONFIG_SA1111
> -	.dma_zone_size	= SZ_1M,
> -#endif
> -	.restart	= sa11x0_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-sa1100/clock.c b/arch/arm/mach-sa1100/clock.c
> deleted file mode 100644
> index eafeb38502af..000000000000
> --- a/arch/arm/mach-sa1100/clock.c
> +++ /dev/null
> @@ -1,145 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - *  linux/arch/arm/mach-sa1100/clock.c
> - */
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/err.h>
> -#include <linux/clk.h>
> -#include <linux/clkdev.h>
> -#include <linux/clk-provider.h>
> -#include <linux/io.h>
> -#include <linux/spinlock.h>
> -
> -#include <mach/hardware.h>
> -#include <mach/generic.h>
> -
> -static const char * const clk_tucr_parents[] = {
> -	"clk32768", "clk3686400",
> -};
> -
> -static DEFINE_SPINLOCK(tucr_lock);
> -
> -static int clk_gpio27_enable(struct clk_hw *hw)
> -{
> -	unsigned long flags;
> -
> -	/*
> -	 * First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
> -	 * (SA-1110 Developer's Manual, section 9.1.2.1)
> -	 */
> -	local_irq_save(flags);
> -	GAFR |= GPIO_32_768kHz;
> -	GPDR |= GPIO_32_768kHz;
> -	local_irq_restore(flags);
> -
> -	return 0;
> -}
> -
> -static void clk_gpio27_disable(struct clk_hw *hw)
> -{
> -	unsigned long flags;
> -
> -	local_irq_save(flags);
> -	GPDR &= ~GPIO_32_768kHz;
> -	GAFR &= ~GPIO_32_768kHz;
> -	local_irq_restore(flags);
> -}
> -
> -static const struct clk_ops clk_gpio27_ops = {
> -	.enable = clk_gpio27_enable,
> -	.disable = clk_gpio27_disable,
> -};
> -
> -static const char * const clk_gpio27_parents[] = {
> -	"tucr-mux",
> -};
> -
> -static const struct clk_init_data clk_gpio27_init_data __initconst = {
> -	.name = "gpio27",
> -	.ops = &clk_gpio27_ops,
> -	.parent_names = clk_gpio27_parents,
> -	.num_parents = ARRAY_SIZE(clk_gpio27_parents),
> -};
> -
> -/*
> - * Derived from the table 8-1 in the SA1110 manual, the MPLL appears to
> - * multiply its input rate by 4 x (4 + PPCR).  This calculation gives
> - * the exact rate.  The figures given in the table are the rates rounded
> - * to 100kHz.  Stick with sa11x0_getspeed() for the time being.
> - */
> -static unsigned long clk_mpll_recalc_rate(struct clk_hw *hw,
> -	unsigned long prate)
> -{
> -	return sa11x0_getspeed(0) * 1000;
> -}
> -
> -static const struct clk_ops clk_mpll_ops = {
> -	.recalc_rate = clk_mpll_recalc_rate,
> -};
> -
> -static const char * const clk_mpll_parents[] = {
> -	"clk3686400",
> -};
> -
> -static const struct clk_init_data clk_mpll_init_data __initconst = {
> -	.name = "mpll",
> -	.ops = &clk_mpll_ops,
> -	.parent_names = clk_mpll_parents,
> -	.num_parents = ARRAY_SIZE(clk_mpll_parents),
> -	.flags = CLK_GET_RATE_NOCACHE | CLK_IS_CRITICAL,
> -};
> -
> -int __init sa11xx_clk_init(void)
> -{
> -	struct clk_hw *hw;
> -	int ret;
> -
> -	hw = clk_hw_register_fixed_rate(NULL, "clk32768", NULL, 0, 32768);
> -	if (IS_ERR(hw))
> -		return PTR_ERR(hw);
> -
> -	clk_hw_register_clkdev(hw, NULL, "sa1100-rtc");
> -
> -	hw = clk_hw_register_fixed_rate(NULL, "clk3686400", NULL, 0, 3686400);
> -	if (IS_ERR(hw))
> -		return PTR_ERR(hw);
> -
> -	clk_hw_register_clkdev(hw, "OSTIMER0", NULL);
> -
> -	hw = kzalloc_obj(*hw);
> -	if (!hw)
> -		return -ENOMEM;
> -	hw->init = &clk_mpll_init_data;
> -	ret = clk_hw_register(NULL, hw);
> -	if (ret) {
> -		kfree(hw);
> -		return ret;
> -	}
> -
> -	clk_hw_register_clkdev(hw, NULL, "sa11x0-fb");
> -	clk_hw_register_clkdev(hw, NULL, "sa11x0-pcmcia");
> -	clk_hw_register_clkdev(hw, NULL, "sa11x0-pcmcia.0");
> -	clk_hw_register_clkdev(hw, NULL, "sa11x0-pcmcia.1");
> -	clk_hw_register_clkdev(hw, NULL, "1800");
> -
> -	hw = clk_hw_register_mux(NULL, "tucr-mux", clk_tucr_parents,
> -				 ARRAY_SIZE(clk_tucr_parents), 0,
> -				 (void __iomem *)&TUCR, FShft(TUCR_TSEL),
> -				 FAlnMsk(TUCR_TSEL), 0, &tucr_lock);
> -	clk_set_rate(hw->clk, 3686400);
> -
> -	hw = kzalloc_obj(*hw);
> -	if (!hw)
> -		return -ENOMEM;
> -	hw->init = &clk_gpio27_init_data;
> -	ret = clk_hw_register(NULL, hw);
> -	if (ret) {
> -		kfree(hw);
> -		return ret;
> -	}
> -
> -	clk_hw_register_clkdev(hw, NULL, "sa1111.0");
> -
> -	return 0;
> -}
> diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c
> deleted file mode 100644
> index d1931f51c900..000000000000
> --- a/arch/arm/mach-sa1100/collie.c
> +++ /dev/null
> @@ -1,447 +0,0 @@
> -/*
> - * linux/arch/arm/mach-sa1100/collie.c
> - *
> - * May be copied or modified under the terms of the GNU General Public
> - * License.  See linux/COPYING for more information.
> - *
> - * This file contains all Collie-specific tweaks.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * ChangeLog:
> - *  2006 Pavel Machek <pavel@ucw.cz>
> - *  03-06-2004 John Lenz <lenz@cs.wisc.edu>
> - *  06-04-2002 Chris Larson <kergoth@digitalnemesis.net>
> - *  04-16-2001 Lineo Japan,Inc. ...
> - */
> -
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/tty.h>
> -#include <linux/delay.h>
> -#include <linux/platform_data/sa11x0-serial.h>
> -#include <linux/platform_device.h>
> -#include <linux/mfd/ucb1x00.h>
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/partitions.h>
> -#include <linux/timer.h>
> -#include <linux/gpio/property.h>
> -#include <linux/input.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/property.h>
> -#include <linux/power/gpio-charger.h>
> -
> -#include <video/sa1100fb.h>
> -
> -#include <mach/hardware.h>
> -#include <asm/mach-types.h>
> -#include <asm/page.h>
> -#include <asm/setup.h>
> -#include <mach/collie.h>
> -
> -#include <asm/mach/arch.h>
> -#include <asm/mach/flash.h>
> -#include <asm/mach/map.h>
> -
> -#include <asm/hardware/scoop.h>
> -#include <asm/mach/sharpsl_param.h>
> -#include <asm/hardware/locomo.h>
> -#include <linux/platform_data/mfd-mcp-sa11x0.h>
> -#include <mach/irqs.h>
> -
> -#include "generic.h"
> -
> -static struct resource collie_scoop_resources[] = {
> -	[0] = DEFINE_RES_MEM(0x40800000, SZ_4K),
> -};
> -
> -static struct scoop_config collie_scoop_setup = {
> -	.io_dir 	= COLLIE_SCOOP_IO_DIR,
> -	.io_out		= COLLIE_SCOOP_IO_OUT,
> -	.gpio_base	= COLLIE_SCOOP_GPIO_BASE,
> -};
> -
> -struct platform_device colliescoop_device = {
> -	.name		= "sharp-scoop",
> -	.id		= -1,
> -	.dev		= {
> - 		.platform_data	= &collie_scoop_setup,
> -	},
> -	.num_resources	= ARRAY_SIZE(collie_scoop_resources),
> -	.resource	= collie_scoop_resources,
> -};
> -
> -static struct scoop_pcmcia_dev collie_pcmcia_scoop[] = {
> -	{
> -	.dev		= &colliescoop_device.dev,
> -	.irq		= COLLIE_IRQ_GPIO_CF_IRQ,
> -	.cd_irq		= COLLIE_IRQ_GPIO_CF_CD,
> -	.cd_irq_str	= "PCMCIA0 CD",
> -	},
> -};
> -
> -static struct scoop_pcmcia_config collie_pcmcia_config = {
> -	.devs		= &collie_pcmcia_scoop[0],
> -	.num_devs	= 1,
> -};
> -
> -static struct ucb1x00_plat_data collie_ucb1x00_data = {
> -	.gpio_base	= COLLIE_TC35143_GPIO_BASE,
> -};
> -
> -static struct mcp_plat_data collie_mcp_data = {
> -	.mccr0		= MCCR0_ADM | MCCR0_ExtClk,
> -	.sclk_rate	= 9216000,
> -	.codec_pdata	= &collie_ucb1x00_data,
> -};
> -
> -/* Battery management GPIOs */
> -static struct gpiod_lookup_table collie_battery_gpiod_table = {
> -	/* the MCP codec mcp0 has the ucb1x00 as attached device */
> -	.dev_id = "ucb1x00",
> -	.table = {
> -		/* This is found on the main GPIO on the SA1100 */
> -		GPIO_LOOKUP("gpio", COLLIE_GPIO_CO,
> -			    "main battery full", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("gpio", COLLIE_GPIO_MAIN_BAT_LOW,
> -			    "main battery low", GPIO_ACTIVE_HIGH),
> -		/*
> -		 * This is GPIO 0 on the Scoop expander, which is registered
> -		 * from common/scoop.c with this gpio chip label.
> -		 */
> -		GPIO_LOOKUP("sharp-scoop", 0,
> -			    "main charge on", GPIO_ACTIVE_HIGH),
> -		{ },
> -	},
> -};
> -
> -/*
> - * Collie AC IN
> - */
> -static struct gpiod_lookup_table collie_power_gpiod_table = {
> -	.dev_id = "gpio-charger",
> -	.table = {
> -		GPIO_LOOKUP("gpio", COLLIE_GPIO_AC_IN,
> -			    NULL, GPIO_ACTIVE_HIGH),
> -		{ },
> -	},
> -};
> -
> -static char *collie_ac_supplied_to[] = {
> -	"main-battery",
> -	"backup-battery",
> -};
> -
> -static struct gpio_charger_platform_data collie_power_data = {
> -	.name			= "charger",
> -	.type			= POWER_SUPPLY_TYPE_MAINS,
> -	.supplied_to		= collie_ac_supplied_to,
> -	.num_supplicants	= ARRAY_SIZE(collie_ac_supplied_to),
> -};
> -
> -static struct platform_device collie_power_device = {
> -	.name			= "gpio-charger",
> -	.id			= -1,
> -	.dev.platform_data	= &collie_power_data,
> -};
> -
> -#ifdef CONFIG_SHARP_LOCOMO
> -/*
> - * low-level UART features.
> - */
> -struct platform_device collie_locomo_device;
> -
> -static void collie_uart_set_mctrl(struct uart_port *port, u_int mctrl)
> -{
> -	if (mctrl & TIOCM_RTS)
> -		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_RTS, 0);
> -	else
> -		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_RTS, 1);
> -
> -	if (mctrl & TIOCM_DTR)
> -		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_DTR, 0);
> -	else
> -		locomo_gpio_write(&collie_locomo_device.dev, LOCOMO_GPIO_DTR, 1);
> -}
> -
> -static u_int collie_uart_get_mctrl(struct uart_port *port)
> -{
> -	int ret = TIOCM_CD;
> -	unsigned int r;
> -
> -	r = locomo_gpio_read_output(&collie_locomo_device.dev, LOCOMO_GPIO_CTS & LOCOMO_GPIO_DSR);
> -	if (r == -ENODEV)
> -		return ret;
> -	if (r & LOCOMO_GPIO_CTS)
> -		ret |= TIOCM_CTS;
> -	if (r & LOCOMO_GPIO_DSR)
> -		ret |= TIOCM_DSR;
> -
> -	return ret;
> -}
> -
> -static struct sa1100_port_fns collie_port_fns __initdata = {
> -	.set_mctrl	= collie_uart_set_mctrl,
> -	.get_mctrl	= collie_uart_get_mctrl,
> -};
> -
> -static int collie_uart_probe(struct locomo_dev *dev)
> -{
> -	return 0;
> -}
> -
> -static struct locomo_driver collie_uart_driver = {
> -	.drv = {
> -		.name = "collie_uart",
> -	},
> -	.devid	= LOCOMO_DEVID_UART,
> -	.probe	= collie_uart_probe,
> -};
> -
> -static int __init collie_uart_init(void)
> -{
> -	return locomo_driver_register(&collie_uart_driver);
> -}
> -device_initcall(collie_uart_init);
> -
> -#endif
> -
> -
> -static struct resource locomo_resources[] = {
> -	[0] = DEFINE_RES_MEM(0x40000000, SZ_8K),
> -	[1] = DEFINE_RES_IRQ(IRQ_GPIO25),
> -};
> -
> -static struct locomo_platform_data locomo_info = {
> -	.irq_base	= IRQ_BOARD_START,
> -};
> -
> -struct platform_device collie_locomo_device = {
> -	.name		= "locomo",
> -	.id		= 0,
> -	.dev		= {
> -		.platform_data	= &locomo_info,
> -	},
> -	.num_resources	= ARRAY_SIZE(locomo_resources),
> -	.resource	= locomo_resources,
> -};
> -
> -static const struct software_node collie_gpio_keys_node = {
> -	.name = "collie-gpio-keys",
> -};
> -
> -static const struct property_entry collie_on_key_props[] = {
> -	PROPERTY_ENTRY_U32("linux,code", KEY_RESERVED),
> -	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
> -			    COLLIE_GPIO_ON_KEY, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_STRING("label", "On key"),
> -	PROPERTY_ENTRY_U32("linux,input-type", EV_PWR),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	{ }
> -};
> -
> -static const struct software_node collie_on_key_node = {
> -	.parent = &collie_gpio_keys_node,
> -	.properties = collie_on_key_props,
> -};
> -
> -static const struct property_entry collie_wakeup_key_props[] = {
> -	PROPERTY_ENTRY_U32("linux,code", KEY_WAKEUP),
> -	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
> -			    COLLIE_GPIO_WAKEUP, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_STRING("label", "Sync"),
> -	PROPERTY_ENTRY_U32("linux,input-type", EV_PWR),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	{ }
> -};
> -
> -static const struct software_node collie_wakeup_key_node = {
> -	.parent = &collie_gpio_keys_node,
> -	.properties = collie_wakeup_key_props,
> -};
> -
> -static const struct software_node * const collie_gpio_keys_swnodes[] __initconst = {
> -	&collie_gpio_keys_node,
> -	&collie_on_key_node,
> -	&collie_wakeup_key_node,
> -	NULL
> -};
> -
> -static const struct platform_device_info collie_gpio_keys_dev_info __initconst = {
> -	.name = "gpio-keys",
> -	.id = PLATFORM_DEVID_NONE,
> -	.swnode = &collie_gpio_keys_node,
> -};
> -
> -static struct platform_device *devices[] __initdata = {
> -	&collie_locomo_device,
> -	&colliescoop_device,
> -	&collie_power_device,
> -};
> -
> -static struct mtd_partition collie_partitions[] = {
> -	{
> -		.name		= "bootloader",
> -		.offset 	= 0,
> -		.size		= 0x000C0000,
> -		.mask_flags	= MTD_WRITEABLE
> -	}, {
> -		.name		= "kernel",
> -		.offset 	= MTDPART_OFS_APPEND,
> -		.size		= 0x00100000,
> -	}, {
> -		.name		= "rootfs",
> -		.offset 	= MTDPART_OFS_APPEND,
> -		.size		= 0x00e20000,
> -	}, {
> -		.name		= "bootblock",
> -		.offset		= MTDPART_OFS_APPEND,
> -		.size		= 0x00020000,
> -		.mask_flags	= MTD_WRITEABLE
> -	}
> -};
> -
> -static int collie_flash_init(void)
> -{
> -	int rc = gpio_request(COLLIE_GPIO_VPEN, "flash Vpp enable");
> -	if (rc)
> -		return rc;
> -
> -	rc = gpio_direction_output(COLLIE_GPIO_VPEN, 1);
> -	if (rc)
> -		gpio_free(COLLIE_GPIO_VPEN);
> -
> -	return rc;
> -}
> -
> -static void collie_set_vpp(int vpp)
> -{
> -	gpio_set_value(COLLIE_GPIO_VPEN, vpp);
> -}
> -
> -static void collie_flash_exit(void)
> -{
> -	gpio_free(COLLIE_GPIO_VPEN);
> -}
> -
> -static struct flash_platform_data collie_flash_data = {
> -	.map_name	= "cfi_probe",
> -	.init		= collie_flash_init,
> -	.set_vpp	= collie_set_vpp,
> -	.exit		= collie_flash_exit,
> -	.parts		= collie_partitions,
> -	.nr_parts	= ARRAY_SIZE(collie_partitions),
> -};
> -
> -static struct resource collie_flash_resources[] = {
> -	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M),
> -};
> -
> -static struct sa1100fb_mach_info collie_lcd_info = {
> -	.pixclock	= 171521,	.bpp		= 16,
> -	.xres		= 320,		.yres		= 240,
> -
> -	.hsync_len	= 5,		.vsync_len	= 1,
> -	.left_margin	= 11,		.upper_margin	= 2,
> -	.right_margin	= 30,		.lower_margin	= 0,
> -
> -	.sync		= FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
> -
> -	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
> -	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
> -
> -#ifdef CONFIG_BACKLIGHT_LOCOMO
> -	.lcd_power	= locomolcd_power
> -#endif
> -};
> -
> -static void __init collie_init(void)
> -{
> -	int ret = 0;
> -
> -	/* cpu initialize */
> -	GAFR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK |
> -		GPIO_MCP_CLK | GPIO_32_768kHz;
> -
> -	GPDR = GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 |
> -		GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD |
> -		GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK |
> -		_COLLIE_GPIO_UCB1x00_RESET | _COLLIE_GPIO_nMIC_ON |
> -		_COLLIE_GPIO_nREMOCON_ON | GPIO_32_768kHz;
> -
> -	PPDR = PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 |
> -		PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS |
> -		PPC_TXD1 | PPC_TXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM;
> -
> -	PWER = 0;
> -
> -	PGSR = _COLLIE_GPIO_nREMOCON_ON;
> -
> -	PSDR = PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4;
> -
> -	PCFR = PCFR_OPDE;
> -
> -	GPSR |= _COLLIE_GPIO_UCB1x00_RESET;
> -
> -	sa11x0_ppc_configure_mcp();
> -
> -
> -	platform_scoop_config = &collie_pcmcia_config;
> -
> -	gpiod_add_lookup_table(&collie_power_gpiod_table);
> -	gpiod_add_lookup_table(&collie_battery_gpiod_table);
> -
> -	ret = platform_add_devices(devices, ARRAY_SIZE(devices));
> -	if (ret) {
> -		printk(KERN_WARNING "collie: Unable to register LoCoMo device\n");
> -	}
> -
> -	software_node_register_node_group(collie_gpio_keys_swnodes);
> -	platform_device_register_full(&collie_gpio_keys_dev_info);
> -
> -	sa11x0_register_lcd(&collie_lcd_info);
> -	sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
> -			    ARRAY_SIZE(collie_flash_resources));
> -	sa11x0_register_mcp(&collie_mcp_data);
> -
> -	sharpsl_save_param();
> -}
> -
> -static struct map_desc collie_io_desc[] __initdata = {
> -	{	/* 32M main flash (cs0) */
> -		.virtual	= 0xe8000000,
> -		.pfn		= __phys_to_pfn(0x00000000),
> -		.length		= 0x02000000,
> -		.type		= MT_DEVICE
> -	}, {	/* 32M boot flash (cs1) */
> -		.virtual	= 0xea000000,
> -		.pfn		= __phys_to_pfn(0x08000000),
> -		.length		= 0x02000000,
> -		.type		= MT_DEVICE
> -	}
> -};
> -
> -static void __init collie_map_io(void)
> -{
> -	sa1100_map_io();
> -	iotable_init(collie_io_desc, ARRAY_SIZE(collie_io_desc));
> -
> -#ifdef CONFIG_SHARP_LOCOMO
> -	sa1100_register_uart_fns(&collie_port_fns);
> -#endif
> -	sa1100_register_uart(0, 3);
> -	sa1100_register_uart(1, 1);
> -}
> -
> -MACHINE_START(COLLIE, "Sharp-Collie")
> -	.map_io		= collie_map_io,
> -	.nr_irqs	= SA1100_NR_IRQS,
> -	.init_irq	= sa1100_init_irq,
> -	.init_time	= sa1100_timer_init,
> -	.init_machine	= collie_init,
> -	.init_late	= sa11x0_init_late,
> -	.restart	= sa11x0_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c
> deleted file mode 100644
> index a995625ab1a0..000000000000
> --- a/arch/arm/mach-sa1100/generic.c
> +++ /dev/null
> @@ -1,470 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/mach-sa1100/generic.c
> - *
> - * Author: Nicolas Pitre
> - *
> - * Code common to all SA11x0 machines.
> - */
> -#include <linux/gpio/consumer.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/delay.h>
> -#include <linux/dma-mapping.h>
> -#include <linux/pm.h>
> -#include <linux/cpufreq.h>
> -#include <linux/ioport.h>
> -#include <linux/platform_device.h>
> -#include <linux/reboot.h>
> -#include <linux/regulator/fixed.h>
> -#include <linux/regulator/machine.h>
> -#include <linux/irqchip/irq-sa11x0.h>
> -
> -#include <video/sa1100fb.h>
> -
> -#include <soc/sa1100/pwer.h>
> -
> -#include <asm/div64.h>
> -#include <asm/mach/map.h>
> -#include <asm/mach/flash.h>
> -#include <asm/irq.h>
> -#include <asm/system_misc.h>
> -
> -#include <mach/hardware.h>
> -#include <mach/irqs.h>
> -#include <mach/reset.h>
> -
> -#include "generic.h"
> -#include <clocksource/pxa.h>
> -
> -#define NR_FREQS	16
> -
> -/*
> - * This table is setup for a 3.6864MHz Crystal.
> - */
> -struct cpufreq_frequency_table sa11x0_freq_table[NR_FREQS+1] = {
> -	{ .frequency = 59000,	/*  59.0 MHz */},
> -	{ .frequency = 73700,	/*  73.7 MHz */},
> -	{ .frequency = 88500,	/*  88.5 MHz */},
> -	{ .frequency = 103200,	/* 103.2 MHz */},
> -	{ .frequency = 118000,	/* 118.0 MHz */},
> -	{ .frequency = 132700,	/* 132.7 MHz */},
> -	{ .frequency = 147500,	/* 147.5 MHz */},
> -	{ .frequency = 162200,	/* 162.2 MHz */},
> -	{ .frequency = 176900,	/* 176.9 MHz */},
> -	{ .frequency = 191700,	/* 191.7 MHz */},
> -	{ .frequency = 206400,	/* 206.4 MHz */},
> -	{ .frequency = 221200,	/* 221.2 MHz */},
> -	{ .frequency = 235900,	/* 235.9 MHz */},
> -	{ .frequency = 250700,	/* 250.7 MHz */},
> -	{ .frequency = 265400,	/* 265.4 MHz */},
> -	{ .frequency = 280200,	/* 280.2 MHz */},
> -	{ .frequency = CPUFREQ_TABLE_END, },
> -};
> -
> -unsigned int sa11x0_getspeed(unsigned int cpu)
> -{
> -	if (cpu)
> -		return 0;
> -	return sa11x0_freq_table[PPCR & 0xf].frequency;
> -}
> -
> -/*
> - * Default power-off for SA1100
> - */
> -static void sa1100_power_off(void)
> -{
> -	mdelay(100);
> -	local_irq_disable();
> -	/* disable internal oscillator, float CS lines */
> -	PCFR = (PCFR_OPDE | PCFR_FP | PCFR_FS);
> -	/* enable wake-up on GPIO0 (Assabet...) */
> -	PWER = GFER = GRER = 1;
> -	/*
> -	 * set scratchpad to zero, just in case it is used as a
> -	 * restart address by the bootloader.
> -	 */
> -	PSPR = 0;
> -	/* enter sleep mode */
> -	PMCR = PMCR_SF;
> -}
> -
> -void sa11x0_restart(enum reboot_mode mode, const char *cmd)
> -{
> -	clear_reset_status(RESET_STATUS_ALL);
> -
> -	if (mode == REBOOT_SOFT) {
> -		/* Jump into ROM at address 0 */
> -		soft_restart(0);
> -	} else {
> -		/* Use on-chip reset capability */
> -		RSRR = RSRR_SWR;
> -	}
> -}
> -
> -static void sa11x0_register_device(struct platform_device *dev, void *data)
> -{
> -	int err;
> -	dev->dev.platform_data = data;
> -	err = platform_device_register(dev);
> -	if (err)
> -		printk(KERN_ERR "Unable to register device %s: %d\n",
> -			dev->name, err);
> -}
> -
> -
> -static struct resource sa11x0udc_resources[] = {
> -	[0] = DEFINE_RES_MEM(__PREG(Ser0UDCCR), SZ_64K),
> -	[1] = DEFINE_RES_IRQ(IRQ_Ser0UDC),
> -};
> -
> -static u64 sa11x0udc_dma_mask = 0xffffffffUL;
> -
> -static struct platform_device sa11x0udc_device = {
> -	.name		= "sa11x0-udc",
> -	.id		= -1,
> -	.dev		= {
> -		.dma_mask = &sa11x0udc_dma_mask,
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(sa11x0udc_resources),
> -	.resource	= sa11x0udc_resources,
> -};
> -
> -static struct resource sa11x0uart1_resources[] = {
> -	[0] = DEFINE_RES_MEM(__PREG(Ser1UTCR0), SZ_64K),
> -	[1] = DEFINE_RES_IRQ(IRQ_Ser1UART),
> -};
> -
> -static struct platform_device sa11x0uart1_device = {
> -	.name		= "sa11x0-uart",
> -	.id		= 1,
> -	.num_resources	= ARRAY_SIZE(sa11x0uart1_resources),
> -	.resource	= sa11x0uart1_resources,
> -};
> -
> -static struct resource sa11x0uart3_resources[] = {
> -	[0] = DEFINE_RES_MEM(__PREG(Ser3UTCR0), SZ_64K),
> -	[1] = DEFINE_RES_IRQ(IRQ_Ser3UART),
> -};
> -
> -static struct platform_device sa11x0uart3_device = {
> -	.name		= "sa11x0-uart",
> -	.id		= 3,
> -	.num_resources	= ARRAY_SIZE(sa11x0uart3_resources),
> -	.resource	= sa11x0uart3_resources,
> -};
> -
> -static struct resource sa11x0mcp_resources[] = {
> -	[0] = DEFINE_RES_MEM(__PREG(Ser4MCCR0), SZ_64K),
> -	[1] = DEFINE_RES_MEM(__PREG(Ser4MCCR1), 4),
> -	[2] = DEFINE_RES_IRQ(IRQ_Ser4MCP),
> -};
> -
> -static u64 sa11x0mcp_dma_mask = 0xffffffffUL;
> -
> -static struct platform_device sa11x0mcp_device = {
> -	.name		= "sa11x0-mcp",
> -	.id		= -1,
> -	.dev = {
> -		.dma_mask = &sa11x0mcp_dma_mask,
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(sa11x0mcp_resources),
> -	.resource	= sa11x0mcp_resources,
> -};
> -
> -void __init sa11x0_ppc_configure_mcp(void)
> -{
> -	/* Setup the PPC unit for the MCP */
> -	PPDR &= ~PPC_RXD4;
> -	PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
> -	PSDR |= PPC_RXD4;
> -	PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
> -	PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
> -}
> -
> -void sa11x0_register_mcp(struct mcp_plat_data *data)
> -{
> -	sa11x0_register_device(&sa11x0mcp_device, data);
> -}
> -
> -static struct resource sa11x0ssp_resources[] = {
> -	[0] = DEFINE_RES_MEM(0x80070000, SZ_64K),
> -	[1] = DEFINE_RES_IRQ(IRQ_Ser4SSP),
> -};
> -
> -static u64 sa11x0ssp_dma_mask = 0xffffffffUL;
> -
> -static struct platform_device sa11x0ssp_device = {
> -	.name		= "sa11x0-ssp",
> -	.id		= -1,
> -	.dev = {
> -		.dma_mask = &sa11x0ssp_dma_mask,
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(sa11x0ssp_resources),
> -	.resource	= sa11x0ssp_resources,
> -};
> -
> -static struct resource sa11x0fb_resources[] = {
> -	[0] = DEFINE_RES_MEM(0xb0100000, SZ_64K),
> -	[1] = DEFINE_RES_IRQ(IRQ_LCD),
> -};
> -
> -static struct platform_device sa11x0fb_device = {
> -	.name		= "sa11x0-fb",
> -	.id		= -1,
> -	.dev = {
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(sa11x0fb_resources),
> -	.resource	= sa11x0fb_resources,
> -};
> -
> -void sa11x0_register_lcd(struct sa1100fb_mach_info *inf)
> -{
> -	sa11x0_register_device(&sa11x0fb_device, inf);
> -}
> -
> -void sa11x0_register_pcmcia(int socket, struct gpiod_lookup_table *table)
> -{
> -	if (table)
> -		gpiod_add_lookup_table(table);
> -	platform_device_register_simple("sa11x0-pcmcia", socket, NULL, 0);
> -}
> -
> -static struct platform_device sa11x0mtd_device = {
> -	.name		= "sa1100-mtd",
> -	.id		= -1,
> -};
> -
> -void sa11x0_register_mtd(struct flash_platform_data *flash,
> -			 struct resource *res, int nr)
> -{
> -	flash->name = "sa1100";
> -	sa11x0mtd_device.resource = res;
> -	sa11x0mtd_device.num_resources = nr;
> -	sa11x0_register_device(&sa11x0mtd_device, flash);
> -}
> -
> -static struct resource sa1100_rtc_resources[] = {
> -	DEFINE_RES_MEM(0x90010000, 0x40),
> -	DEFINE_RES_IRQ_NAMED(IRQ_RTC1Hz, "rtc 1Hz"),
> -	DEFINE_RES_IRQ_NAMED(IRQ_RTCAlrm, "rtc alarm"),
> -};
> -
> -static struct platform_device sa11x0rtc_device = {
> -	.name		= "sa1100-rtc",
> -	.id		= -1,
> -	.num_resources	= ARRAY_SIZE(sa1100_rtc_resources),
> -	.resource	= sa1100_rtc_resources,
> -};
> -
> -static struct resource sa11x0dma_resources[] = {
> -	DEFINE_RES_MEM(DMA_PHYS, DMA_SIZE),
> -	DEFINE_RES_IRQ(IRQ_DMA0),
> -	DEFINE_RES_IRQ(IRQ_DMA1),
> -	DEFINE_RES_IRQ(IRQ_DMA2),
> -	DEFINE_RES_IRQ(IRQ_DMA3),
> -	DEFINE_RES_IRQ(IRQ_DMA4),
> -	DEFINE_RES_IRQ(IRQ_DMA5),
> -};
> -
> -static u64 sa11x0dma_dma_mask = DMA_BIT_MASK(32);
> -
> -static struct platform_device sa11x0dma_device = {
> -	.name		= "sa11x0-dma",
> -	.id		= -1,
> -	.dev = {
> -		.dma_mask = &sa11x0dma_dma_mask,
> -		.coherent_dma_mask = 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(sa11x0dma_resources),
> -	.resource	= sa11x0dma_resources,
> -};
> -
> -static struct platform_device *sa11x0_devices[] __initdata = {
> -	&sa11x0udc_device,
> -	&sa11x0uart1_device,
> -	&sa11x0uart3_device,
> -	&sa11x0ssp_device,
> -	&sa11x0rtc_device,
> -	&sa11x0dma_device,
> -};
> -
> -static int __init sa1100_init(void)
> -{
> -	struct resource wdt_res = DEFINE_RES_MEM(0x90000000, 0x20);
> -	register_platform_power_off(sa1100_power_off);
> -
> -	regulator_has_full_constraints();
> -
> -	platform_device_register_simple("sa1100_wdt", -1, &wdt_res, 1);
> -
> -	return platform_add_devices(sa11x0_devices, ARRAY_SIZE(sa11x0_devices));
> -}
> -
> -arch_initcall(sa1100_init);
> -
> -void __init sa11x0_init_late(void)
> -{
> -	sa11x0_pm_init();
> -}
> -
> -int __init sa11x0_register_fixed_regulator(int n,
> -	struct fixed_voltage_config *cfg,
> -	struct regulator_consumer_supply *supplies, unsigned num_supplies,
> -	bool uses_gpio)
> -{
> -	struct regulator_init_data *id;
> -
> -	cfg->init_data = id = kzalloc_obj(*cfg->init_data);
> -	if (!cfg->init_data)
> -		return -ENOMEM;
> -
> -	if (!uses_gpio)
> -		id->constraints.always_on = 1;
> -	id->constraints.name = cfg->supply_name;
> -	id->constraints.min_uV = cfg->microvolts;
> -	id->constraints.max_uV = cfg->microvolts;
> -	id->constraints.valid_modes_mask = REGULATOR_MODE_NORMAL;
> -	id->constraints.valid_ops_mask = REGULATOR_CHANGE_STATUS;
> -	id->consumer_supplies = supplies;
> -	id->num_consumer_supplies = num_supplies;
> -
> -	platform_device_register_resndata(NULL, "reg-fixed-voltage", n,
> -					  NULL, 0, cfg, sizeof(*cfg));
> -	return 0;
> -}
> -
> -/*
> - * Common I/O mapping:
> - *
> - * Typically, static virtual address mappings are as follow:
> - *
> - * 0xf0000000-0xf3ffffff:	miscellaneous stuff (CPLDs, etc.)
> - * 0xf4000000-0xf4ffffff:	SA-1111
> - * 0xf5000000-0xf5ffffff:	reserved (used by cache flushing area)
> - * 0xf6000000-0xfffeffff:	reserved (internal SA1100 IO defined above)
> - * 0xffff0000-0xffff0fff:	SA1100 exception vectors
> - * 0xffff2000-0xffff2fff:	Minicache copy_user_page area
> - *
> - * Below 0xe8000000 is reserved for vm allocation.
> - *
> - * The machine specific code must provide the extra mapping beside the
> - * default mapping provided here.
> - */
> -
> -static struct map_desc standard_io_desc[] __initdata = {
> -	{	/* PCM */
> -		.virtual	=  0xf8000000,
> -		.pfn		= __phys_to_pfn(0x80000000),
> -		.length		= 0x00100000,
> -		.type		= MT_DEVICE
> -	}, {	/* SCM */
> -		.virtual	=  0xfa000000,
> -		.pfn		= __phys_to_pfn(0x90000000),
> -		.length		= 0x00100000,
> -		.type		= MT_DEVICE
> -	}, {	/* MER */
> -		.virtual	=  0xfc000000,
> -		.pfn		= __phys_to_pfn(0xa0000000),
> -		.length		= 0x00100000,
> -		.type		= MT_DEVICE
> -	}, {	/* LCD + DMA */
> -		.virtual	=  0xfe000000,
> -		.pfn		= __phys_to_pfn(0xb0000000),
> -		.length		= 0x00200000,
> -		.type		= MT_DEVICE
> -	},
> -};
> -
> -void __init sa1100_map_io(void)
> -{
> -	iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc));
> -}
> -
> -void __init sa1100_timer_init(void)
> -{
> -	pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x90000000));
> -}
> -
> -static struct resource irq_resource =
> -	DEFINE_RES_MEM_NAMED(0x90050000, SZ_64K, "irqs");
> -
> -void __init sa1100_init_irq(void)
> -{
> -	request_resource(&iomem_resource, &irq_resource);
> -
> -	sa11x0_init_irq_nodt(IRQ_GPIO0_SC, irq_resource.start);
> -
> -	sa1100_init_gpio();
> -	sa11xx_clk_init();
> -}
> -
> -/*
> - * Disable the memory bus request/grant signals on the SA1110 to
> - * ensure that we don't receive spurious memory requests.  We set
> - * the MBGNT signal false to ensure the SA1111 doesn't own the
> - * SDRAM bus.
> - */
> -void sa1110_mb_disable(void)
> -{
> -	unsigned long flags;
> -
> -	local_irq_save(flags);
> -	
> -	PGSR &= ~GPIO_MBGNT;
> -	GPCR = GPIO_MBGNT;
> -	GPDR = (GPDR & ~GPIO_MBREQ) | GPIO_MBGNT;
> -
> -	GAFR &= ~(GPIO_MBGNT | GPIO_MBREQ);
> -
> -	local_irq_restore(flags);
> -}
> -
> -/*
> - * If the system is going to use the SA-1111 DMA engines, set up
> - * the memory bus request/grant pins.
> - */
> -void sa1110_mb_enable(void)
> -{
> -	unsigned long flags;
> -
> -	local_irq_save(flags);
> -
> -	PGSR &= ~GPIO_MBGNT;
> -	GPCR = GPIO_MBGNT;
> -	GPDR = (GPDR & ~GPIO_MBREQ) | GPIO_MBGNT;
> -
> -	GAFR |= (GPIO_MBGNT | GPIO_MBREQ);
> -	TUCR |= TUCR_MR;
> -
> -	local_irq_restore(flags);
> -}
> -
> -int sa11x0_gpio_set_wake(unsigned int gpio, unsigned int on)
> -{
> -	if (on)
> -		PWER |= BIT(gpio);
> -	else
> -		PWER &= ~BIT(gpio);
> -
> -	return 0;
> -}
> -
> -int sa11x0_sc_set_wake(unsigned int irq, unsigned int on)
> -{
> -	if (BIT(irq) != IC_RTCAlrm)
> -		return -EINVAL;
> -
> -	if (on)
> -		PWER |= PWER_RTC;
> -	else
> -		PWER &= ~PWER_RTC;
> -
> -	return 0;
> -}
> diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h
> deleted file mode 100644
> index 3cfe3b647711..000000000000
> --- a/arch/arm/mach-sa1100/generic.h
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * linux/arch/arm/mach-sa1100/generic.h
> - *
> - * Author: Nicolas Pitre
> - */
> -#include <linux/cpufreq.h>
> -#include <linux/reboot.h>
> -
> -extern void sa1100_timer_init(void);
> -extern void __init sa1100_map_io(void);
> -extern void __init sa1100_init_irq(void);
> -extern void __init sa1100_init_gpio(void);
> -extern void sa11x0_restart(enum reboot_mode, const char *);
> -extern void sa11x0_init_late(void);
> -
> -#define SET_BANK(__nr,__start,__size) \
> -	mi->bank[__nr].start = (__start), \
> -	mi->bank[__nr].size = (__size)
> -
> -extern void sa1110_mb_enable(void);
> -extern void sa1110_mb_disable(void);
> -
> -extern struct cpufreq_frequency_table sa11x0_freq_table[];
> -extern unsigned int sa11x0_getspeed(unsigned int cpu);
> -
> -struct flash_platform_data;
> -struct resource;
> -
> -void sa11x0_register_mtd(struct flash_platform_data *flash,
> -			 struct resource *res, int nr);
> -
> -struct mcp_plat_data;
> -void sa11x0_ppc_configure_mcp(void);
> -void sa11x0_register_mcp(struct mcp_plat_data *data);
> -
> -struct sa1100fb_mach_info;
> -void sa11x0_register_lcd(struct sa1100fb_mach_info *inf);
> -
> -#ifdef CONFIG_PM
> -int sa11x0_pm_init(void);
> -#else
> -static inline int sa11x0_pm_init(void) { return 0; }
> -#endif
> -
> -int sa11xx_clk_init(void);
> -
> -struct gpiod_lookup_table;
> -void sa11x0_register_pcmcia(int socket, struct gpiod_lookup_table *);
> -
> -struct software_node;
> -extern const struct software_node sa1100_gpiochip_node;
> -
> -struct fixed_voltage_config;
> -struct regulator_consumer_supply;
> -int sa11x0_register_fixed_regulator(int n, struct fixed_voltage_config *cfg,
> -	struct regulator_consumer_supply *supplies, unsigned num_supplies,
> -	bool uses_gpio);
> diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
> deleted file mode 100644
> index 59e9251a138e..000000000000
> --- a/arch/arm/mach-sa1100/h3600.c
> +++ /dev/null
> @@ -1,134 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Support for Compaq iPAQ H3600 handheld computer
> - *
> - * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
> - * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
> - */
> -
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/gpio/legacy.h>
> -
> -#include <video/sa1100fb.h>
> -
> -#include <asm/mach-types.h>
> -#include <asm/mach/arch.h>
> -
> -#include <mach/h3xxx.h>
> -#include <mach/irqs.h>
> -
> -#include "generic.h"
> -
> -static bool h3600_lcd_request(void)
> -{
> -	static bool h3600_lcd_ok;
> -	int rc;
> -
> -	if (h3600_lcd_ok)
> -		return true;
> -
> -	rc = gpio_request(H3XXX_EGPIO_LCD_ON, "LCD power");
> -	if (rc)
> -		goto out;
> -	rc = gpio_direction_output(H3XXX_EGPIO_LCD_ON, 0);
> -	if (rc)
> -		goto out_free_on;
> -	rc = gpio_request(H3600_EGPIO_LCD_PCI, "LCD control");
> -	if (rc)
> -		goto out_free_on;
> -	rc = gpio_direction_output(H3600_EGPIO_LCD_PCI, 0);
> -	if (rc)
> -		goto out_free_pci;
> -	rc = gpio_request(H3600_EGPIO_LCD_5V_ON, "LCD 5v");
> -	if (rc)
> -		goto out_free_pci;
> -	rc = gpio_direction_output(H3600_EGPIO_LCD_5V_ON, 0);
> -	if (rc)
> -		goto out_free_5v_on;
> -	rc = gpio_request(H3600_EGPIO_LVDD_ON, "LCD 9v/-6.5v");
> -	if (rc)
> -		goto out_free_5v_on;
> -	rc = gpio_direction_output(H3600_EGPIO_LVDD_ON, 0);
> -	if (rc)
> -		goto out_free_lvdd_on;
> -
> -	goto out;
> -
> -out_free_lvdd_on:
> -	gpio_free(H3600_EGPIO_LVDD_ON);
> -out_free_5v_on:
> -	gpio_free(H3600_EGPIO_LCD_5V_ON);
> -out_free_pci:
> -	gpio_free(H3600_EGPIO_LCD_PCI);
> -out_free_on:
> -	gpio_free(H3XXX_EGPIO_LCD_ON);
> -out:
> -	if (rc)
> -		pr_err("%s: can't request GPIOs\n", __func__);
> -	else
> -		h3600_lcd_ok = true;
> -
> -	return h3600_lcd_ok;
> -}
> -
> -static void h3600_lcd_power(int enable)
> -{
> -	if (!h3600_lcd_request())
> -		return;
> -
> -	gpio_direction_output(H3XXX_EGPIO_LCD_ON, enable);
> -	gpio_direction_output(H3600_EGPIO_LCD_PCI, enable);
> -	gpio_direction_output(H3600_EGPIO_LCD_5V_ON, enable);
> -	gpio_direction_output(H3600_EGPIO_LVDD_ON, enable);
> -}
> -
> -static const struct sa1100fb_rgb h3600_rgb_16 = {
> -	.red	= { .offset = 12, .length = 4, },
> -	.green	= { .offset = 7,  .length = 4, },
> -	.blue	= { .offset = 1,  .length = 4, },
> -	.transp	= { .offset = 0,  .length = 0, },
> -};
> -
> -static struct sa1100fb_mach_info h3600_lcd_info = {
> -	.pixclock	= 174757, 	.bpp		= 16,
> -	.xres		= 320,		.yres		= 240,
> -
> -	.hsync_len	= 3,		.vsync_len	= 3,
> -	.left_margin	= 12,		.upper_margin	= 10,
> -	.right_margin	= 17,		.lower_margin	= 1,
> -
> -	.cmap_static	= 1,
> -
> -	.lccr0		= LCCR0_Color | LCCR0_Sngl | LCCR0_Act,
> -	.lccr3		= LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
> -
> -	.rgb[RGB_16] = &h3600_rgb_16,
> -
> -	.lcd_power = h3600_lcd_power,
> -};
> -
> -
> -static void __init h3600_map_io(void)
> -{
> -	h3xxx_map_io();
> -}
> -
> -static void __init h3600_mach_init(void)
> -{
> -	h3xxx_mach_init();
> -
> -	sa11x0_register_lcd(&h3600_lcd_info);
> -}
> -
> -MACHINE_START(H3600, "Compaq iPAQ H3600")
> -	.atag_offset	= 0x100,
> -	.map_io		= h3600_map_io,
> -	.nr_irqs	= SA1100_NR_IRQS,
> -	.init_irq	= sa1100_init_irq,
> -	.init_time	= sa1100_timer_init,
> -	.init_machine	= h3600_mach_init,
> -	.init_late	= sa11x0_init_late,
> -	.restart	= sa11x0_restart,
> -MACHINE_END
> -
> diff --git a/arch/arm/mach-sa1100/h3xxx.c b/arch/arm/mach-sa1100/h3xxx.c
> deleted file mode 100644
> index 6f4c5d2be569..000000000000
> --- a/arch/arm/mach-sa1100/h3xxx.c
> +++ /dev/null
> @@ -1,305 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Support for Compaq iPAQ H3100 and H3600 handheld computers (common code)
> - *
> - * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
> - * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/gpio/legacy.h>
> -#include <linux/gpio_keys.h>
> -#include <linux/gpio/property.h>
> -#include <linux/gpio/consumer.h>
> -#include <linux/input.h>
> -#include <linux/property.h>
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/partitions.h>
> -#include <linux/platform_data/gpio-htc-egpio.h>
> -#include <linux/platform_data/sa11x0-serial.h>
> -#include <linux/platform_device.h>
> -#include <linux/serial_core.h>
> -
> -#include <asm/mach/flash.h>
> -#include <asm/mach/map.h>
> -
> -#include <mach/h3xxx.h>
> -#include <mach/irqs.h>
> -
> -#include "generic.h"
> -
> -/*
> - * H3xxx flash support
> - */
> -static struct mtd_partition h3xxx_partitions[] = {
> -	{
> -		.name		= "H3XXX boot firmware",
> -		.size		= 0x00040000,
> -		.offset		= 0,
> -		.mask_flags	= MTD_WRITEABLE,  /* force read-only */
> -	}, {
> -		.name		= "H3XXX rootfs",
> -		.size		= MTDPART_SIZ_FULL,
> -		.offset		= 0x00040000,
> -	}
> -};
> -
> -static void h3xxx_set_vpp(int vpp)
> -{
> -	gpio_set_value(H3XXX_EGPIO_VPP_ON, vpp);
> -}
> -
> -static int h3xxx_flash_init(void)
> -{
> -	int err = gpio_request(H3XXX_EGPIO_VPP_ON, "Flash Vpp");
> -	if (err) {
> -		pr_err("%s: can't request H3XXX_EGPIO_VPP_ON\n", __func__);
> -		return err;
> -	}
> -
> -	err = gpio_direction_output(H3XXX_EGPIO_VPP_ON, 0);
> -	if (err)
> -		gpio_free(H3XXX_EGPIO_VPP_ON);
> -
> -	return err;
> -}
> -
> -static void h3xxx_flash_exit(void)
> -{
> -	gpio_free(H3XXX_EGPIO_VPP_ON);
> -}
> -
> -static struct flash_platform_data h3xxx_flash_data = {
> -	.map_name	= "cfi_probe",
> -	.set_vpp	= h3xxx_set_vpp,
> -	.init		= h3xxx_flash_init,
> -	.exit		= h3xxx_flash_exit,
> -	.parts		= h3xxx_partitions,
> -	.nr_parts	= ARRAY_SIZE(h3xxx_partitions),
> -};
> -
> -static struct resource h3xxx_flash_resource =
> -	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M);
> -
> -
> -/*
> - * H3xxx uart support
> - */
> -static void h3xxx_uart_pm(struct uart_port *port, u_int state, u_int oldstate)
> -{
> -	if (port->mapbase == _Ser3UTCR0) {
> -		if (!gpio_request(H3XXX_EGPIO_RS232_ON, "RS232 transceiver")) {
> -			gpio_direction_output(H3XXX_EGPIO_RS232_ON, !state);
> -			gpio_free(H3XXX_EGPIO_RS232_ON);
> -		} else {
> -			pr_err("%s: can't request H3XXX_EGPIO_RS232_ON\n",
> -				__func__);
> -		}
> -	}
> -}
> -
> -/*
> - * Enable/Disable wake up events for this serial port.
> - * Obviously, we only support this on the normal COM port.
> - */
> -static int h3xxx_uart_set_wake(struct uart_port *port, u_int enable)
> -{
> -	int err = -EINVAL;
> -
> -	if (port->mapbase == _Ser3UTCR0) {
> -		if (enable)
> -			PWER |= PWER_GPIO23 | PWER_GPIO25; /* DCD and CTS */
> -		else
> -			PWER &= ~(PWER_GPIO23 | PWER_GPIO25); /* DCD and CTS */
> -		err = 0;
> -	}
> -	return err;
> -}
> -
> -static struct sa1100_port_fns h3xxx_port_fns __initdata = {
> -	.pm		= h3xxx_uart_pm,
> -	.set_wake	= h3xxx_uart_set_wake,
> -};
> -
> -static struct gpiod_lookup_table h3xxx_uart3_gpio_table = {
> -	.dev_id = "sa11x0-uart.3",
> -	.table = {
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_COM_DCD, "dcd", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_COM_CTS, "cts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_COM_RTS, "rts", GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -/*
> - * EGPIO
> - */
> -
> -static struct resource egpio_resources[] = {
> -	[0] = DEFINE_RES_MEM(H3600_EGPIO_PHYS, 0x4),
> -};
> -
> -static struct htc_egpio_chip egpio_chips[] = {
> -	[0] = {
> -		.reg_start	= 0,
> -		.gpio_base	= H3XXX_EGPIO_BASE,
> -		.num_gpios	= 16,
> -		.direction	= HTC_EGPIO_OUTPUT,
> -		.initial_values	= 0x0080, /* H3XXX_EGPIO_RS232_ON */
> -	},
> -};
> -
> -static struct htc_egpio_platform_data egpio_info = {
> -	.reg_width	= 16,
> -	.bus_width	= 16,
> -	.chip		= egpio_chips,
> -	.num_chips	= ARRAY_SIZE(egpio_chips),
> -};
> -
> -static struct platform_device h3xxx_egpio = {
> -	.name		= "htc-egpio",
> -	.id		= -1,
> -	.resource	= egpio_resources,
> -	.num_resources	= ARRAY_SIZE(egpio_resources),
> -	.dev		= {
> -		.platform_data = &egpio_info,
> -	},
> -};
> -
> -/*
> - * GPIO keys
> - */
> -
> -static const struct software_node h3xxx_gpio_keys_node = {
> -	.name = "h3xxx-gpio-keys",
> -};
> -
> -static const struct property_entry h3xxx_power_key_props[] = {
> -	PROPERTY_ENTRY_U32("linux,code", KEY_POWER),
> -	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
> -			    H3XXX_GPIO_PWR_BUTTON, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_STRING("label", "Power Button"),
> -	PROPERTY_ENTRY_BOOL("wakeup-source"),
> -	{ }
> -};
> -
> -static const struct software_node h3xxx_power_key_node = {
> -	.parent = &h3xxx_gpio_keys_node,
> -	.properties = h3xxx_power_key_props,
> -};
> -
> -static const struct property_entry h3xxx_action_key_props[] = {
> -	PROPERTY_ENTRY_U32("linux,code", KEY_ENTER),
> -	PROPERTY_ENTRY_GPIO("gpios", &sa1100_gpiochip_node,
> -			    H3XXX_GPIO_ACTION_BUTTON, GPIO_ACTIVE_LOW),
> -	PROPERTY_ENTRY_STRING("label", "Action button"),
> -	{ }
> -};
> -
> -static const struct software_node h3xxx_action_key_node = {
> -	.parent = &h3xxx_gpio_keys_node,
> -	.properties = h3xxx_action_key_props,
> -};
> -
> -static const struct software_node * const h3xxx_gpio_keys_swnodes[] __initconst = {
> -	&h3xxx_gpio_keys_node,
> -	&h3xxx_power_key_node,
> -	&h3xxx_action_key_node,
> -	NULL
> -};
> -
> -static const struct platform_device_info h3xxx_gpio_keys_dev_info __initconst = {
> -	.name = "gpio-keys",
> -	.id = PLATFORM_DEVID_NONE,
> -	.swnode = &h3xxx_gpio_keys_node,
> -};
> -
> -static struct resource h3xxx_micro_resources[] = {
> -	DEFINE_RES_MEM(0x80010000, SZ_4K),
> -	DEFINE_RES_MEM(0x80020000, SZ_4K),
> -	DEFINE_RES_IRQ(IRQ_Ser1UART),
> -};
> -
> -struct platform_device h3xxx_micro_asic = {
> -	.name = "ipaq-h3xxx-micro",
> -	.id = -1,
> -	.resource = h3xxx_micro_resources,
> -	.num_resources = ARRAY_SIZE(h3xxx_micro_resources),
> -};
> -
> -static struct platform_device *h3xxx_devices[] = {
> -	&h3xxx_egpio,
> -	&h3xxx_micro_asic,
> -};
> -
> -static struct gpiod_lookup_table h3xxx_pcmcia_gpio_table = {
> -	.dev_id = "sa11x0-pcmcia",
> -	.table = {
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_CD0,
> -			    "pcmcia0-detect", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_IRQ0,
> -			    "pcmcia0-ready", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_CD1,
> -			    "pcmcia1-detect", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("gpio", H3XXX_GPIO_PCMCIA_IRQ1,
> -			    "pcmcia1-ready", GPIO_ACTIVE_HIGH),
> -		{ },
> -	},
> -};
> -
> -void __init h3xxx_mach_init(void)
> -{
> -	gpiod_add_lookup_table(&h3xxx_pcmcia_gpio_table);
> -	gpiod_add_lookup_table(&h3xxx_uart3_gpio_table);
> -	sa1100_register_uart_fns(&h3xxx_port_fns);
> -	sa11x0_register_mtd(&h3xxx_flash_data, &h3xxx_flash_resource, 1);
> -	platform_add_devices(h3xxx_devices, ARRAY_SIZE(h3xxx_devices));
> -	software_node_register_node_group(h3xxx_gpio_keys_swnodes);
> -	platform_device_register_full(&h3xxx_gpio_keys_dev_info);
> -}
> -
> -static struct map_desc h3600_io_desc[] __initdata = {
> -	{	/* static memory bank 2  CS#2 */
> -		.virtual	=  H3600_BANK_2_VIRT,
> -		.pfn		= __phys_to_pfn(SA1100_CS2_PHYS),
> -		.length		= 0x02800000,
> -		.type		= MT_DEVICE
> -	}, {	/* static memory bank 4  CS#4 */
> -		.virtual	=  H3600_BANK_4_VIRT,
> -		.pfn		= __phys_to_pfn(SA1100_CS4_PHYS),
> -		.length		= 0x00800000,
> -		.type		= MT_DEVICE
> -	}, {	/* EGPIO 0		CS#5 */
> -		.virtual	=  H3600_EGPIO_VIRT,
> -		.pfn		= __phys_to_pfn(H3600_EGPIO_PHYS),
> -		.length		= 0x01000000,
> -		.type		= MT_DEVICE
> -	}
> -};
> -
> -/*
> - * Common map_io initialization
> - */
> -
> -void __init h3xxx_map_io(void)
> -{
> -	sa1100_map_io();
> -	iotable_init(h3600_io_desc, ARRAY_SIZE(h3600_io_desc));
> -
> -	sa1100_register_uart(0, 3); /* Common serial port */
> -//	sa1100_register_uart(1, 1); /* Microcontroller on 3100/3600 */
> -
> -	/* Ensure those pins are outputs and driving low  */
> -	PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
> -	PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
> -
> -	/* Configure suspend conditions */
> -	PGSR = 0;
> -	PCFR = PCFR_OPDE;
> -	PSDR = 0;
> -
> -	GPCR = 0x0fffffff;	/* All outputs are set low by default */
> -	GPDR = 0;		/* Configure all GPIOs as input */
> -}
> -
> diff --git a/arch/arm/mach-sa1100/include/mach/SA-1100.h b/arch/arm/mach-sa1100/include/mach/SA-1100.h
> deleted file mode 100644
> index 6e6ff3e18f0f..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/SA-1100.h
> +++ /dev/null
> @@ -1,1798 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - *	FILE    	SA-1100.h
> - *
> - *	Version 	1.2
> - *	Author  	Copyright (c) Marc A. Viredaz, 1998
> - *	        	DEC Western Research Laboratory, Palo Alto, CA
> - *	Date    	January 1998 (April 1997)
> - *	System  	StrongARM SA-1100
> - *	Language	C or ARM Assembly
> - *	Purpose 	Definition of constants related to the StrongARM
> - *	        	SA-1100 microprocessor (Advanced RISC Machine (ARM)
> - *	        	architecture version 4). This file is based on the
> - *	        	StrongARM SA-1100 data sheet version 2.2.
> - *
> - */
> -
> -
> -/* Be sure that virtual mapping is defined right */
> -#ifndef __ASM_ARCH_HARDWARE_H
> -#error You must include hardware.h not SA-1100.h
> -#endif
> -
> -#include "bitfield.h"
> -
> -/*
> - * SA1100 CS line to physical address
> - */
> -
> -#define SA1100_CS0_PHYS	0x00000000
> -#define SA1100_CS1_PHYS	0x08000000
> -#define SA1100_CS2_PHYS	0x10000000
> -#define SA1100_CS3_PHYS	0x18000000
> -#define SA1100_CS4_PHYS	0x40000000
> -#define SA1100_CS5_PHYS	0x48000000
> -
> -/*
> - * Personal Computer Memory Card International Association (PCMCIA) sockets
> - */
> -
> -#define PCMCIAPrtSp	0x04000000	/* PCMCIA Partition Space [byte]   */
> -#define PCMCIASp	(4*PCMCIAPrtSp)	/* PCMCIA Space [byte]             */
> -#define PCMCIAIOSp	PCMCIAPrtSp	/* PCMCIA I/O Space [byte]         */
> -#define PCMCIAAttrSp	PCMCIAPrtSp	/* PCMCIA Attribute Space [byte]   */
> -#define PCMCIAMemSp	PCMCIAPrtSp	/* PCMCIA Memory Space [byte]      */
> -
> -#define PCMCIA0Sp	PCMCIASp	/* PCMCIA 0 Space [byte]           */
> -#define PCMCIA0IOSp	PCMCIAIOSp	/* PCMCIA 0 I/O Space [byte]       */
> -#define PCMCIA0AttrSp	PCMCIAAttrSp	/* PCMCIA 0 Attribute Space [byte] */
> -#define PCMCIA0MemSp	PCMCIAMemSp	/* PCMCIA 0 Memory Space [byte]    */
> -
> -#define PCMCIA1Sp	PCMCIASp	/* PCMCIA 1 Space [byte]           */
> -#define PCMCIA1IOSp	PCMCIAIOSp	/* PCMCIA 1 I/O Space [byte]       */
> -#define PCMCIA1AttrSp	PCMCIAAttrSp	/* PCMCIA 1 Attribute Space [byte] */
> -#define PCMCIA1MemSp	PCMCIAMemSp	/* PCMCIA 1 Memory Space [byte]    */
> -
> -#define _PCMCIA(Nb)	        	/* PCMCIA [0..1]                   */ \
> -                	(0x20000000 + (Nb)*PCMCIASp)
> -#define _PCMCIAIO(Nb)	_PCMCIA (Nb)	/* PCMCIA I/O [0..1]               */
> -#define _PCMCIAAttr(Nb)	        	/* PCMCIA Attribute [0..1]         */ \
> -                	(_PCMCIA (Nb) + 2*PCMCIAPrtSp)
> -#define _PCMCIAMem(Nb)	        	/* PCMCIA Memory [0..1]            */ \
> -                	(_PCMCIA (Nb) + 3*PCMCIAPrtSp)
> -
> -#define _PCMCIA0	_PCMCIA (0)	/* PCMCIA 0                        */
> -#define _PCMCIA0IO	_PCMCIAIO (0)	/* PCMCIA 0 I/O                    */
> -#define _PCMCIA0Attr	_PCMCIAAttr (0)	/* PCMCIA 0 Attribute              */
> -#define _PCMCIA0Mem	_PCMCIAMem (0)	/* PCMCIA 0 Memory                 */
> -
> -#define _PCMCIA1	_PCMCIA (1)	/* PCMCIA 1                        */
> -#define _PCMCIA1IO	_PCMCIAIO (1)	/* PCMCIA 1 I/O                    */
> -#define _PCMCIA1Attr	_PCMCIAAttr (1)	/* PCMCIA 1 Attribute              */
> -#define _PCMCIA1Mem	_PCMCIAMem (1)	/* PCMCIA 1 Memory                 */
> -
> -
> -/*
> - * Universal Serial Bus (USB) Device Controller (UDC) control registers
> - *
> - * Registers
> - *    Ser0UDCCR 	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Control Register (read/write).
> - *    Ser0UDCAR 	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Address Register (read/write).
> - *    Ser0UDCOMP	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Output Maximum Packet size register
> - *              	(read/write).
> - *    Ser0UDCIMP	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Input Maximum Packet size register
> - *              	(read/write).
> - *    Ser0UDCCS0	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Control/Status register end-point 0
> - *              	(read/write).
> - *    Ser0UDCCS1	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Control/Status register end-point 1
> - *              	(output, read/write).
> - *    Ser0UDCCS2	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Control/Status register end-point 2
> - *              	(input, read/write).
> - *    Ser0UDCD0 	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Data register end-point 0
> - *              	(read/write).
> - *    Ser0UDCWC 	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Write Count register end-point 0
> - *              	(read).
> - *    Ser0UDCDR 	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Data Register (read/write).
> - *    Ser0UDCSR 	Serial port 0 Universal Serial Bus (USB) Device
> - *              	Controller (UDC) Status Register (read/write).
> - */
> -
> -#define Ser0UDCCR	__REG(0x80000000)  /* Ser. port 0 UDC Control Reg. */
> -#define Ser0UDCAR	__REG(0x80000004)  /* Ser. port 0 UDC Address Reg. */
> -#define Ser0UDCOMP	__REG(0x80000008)  /* Ser. port 0 UDC Output Maximum Packet size reg. */
> -#define Ser0UDCIMP	__REG(0x8000000C)  /* Ser. port 0 UDC Input Maximum Packet size reg. */
> -#define Ser0UDCCS0	__REG(0x80000010)  /* Ser. port 0 UDC Control/Status reg. end-point 0 */
> -#define Ser0UDCCS1	__REG(0x80000014)  /* Ser. port 0 UDC Control/Status reg. end-point 1 (output) */
> -#define Ser0UDCCS2	__REG(0x80000018)  /* Ser. port 0 UDC Control/Status reg. end-point 2 (input) */
> -#define Ser0UDCD0	__REG(0x8000001C)  /* Ser. port 0 UDC Data reg. end-point 0 */
> -#define Ser0UDCWC	__REG(0x80000020)  /* Ser. port 0 UDC Write Count reg. end-point 0 */
> -#define Ser0UDCDR	__REG(0x80000028)  /* Ser. port 0 UDC Data Reg. */
> -#define Ser0UDCSR	__REG(0x80000030)  /* Ser. port 0 UDC Status Reg. */
> -
> -#define UDCCR_UDD	0x00000001	/* UDC Disable                     */
> -#define UDCCR_UDA	0x00000002	/* UDC Active (read)               */
> -#define UDCCR_RESIM	0x00000004	/* Resume Interrupt Mask, per errata */
> -#define UDCCR_EIM	0x00000008	/* End-point 0 Interrupt Mask      */
> -                	        	/* (disable)                       */
> -#define UDCCR_RIM	0x00000010	/* Receive Interrupt Mask          */
> -                	        	/* (disable)                       */
> -#define UDCCR_TIM	0x00000020	/* Transmit Interrupt Mask         */
> -                	        	/* (disable)                       */
> -#define UDCCR_SRM	0x00000040	/* Suspend/Resume interrupt Mask   */
> -                	        	/* (disable)                       */
> -#define UDCCR_SUSIM	UDCCR_SRM	/* Per errata, SRM just masks suspend */
> -#define UDCCR_REM	0x00000080	/* REset interrupt Mask (disable)  */
> -
> -#define UDCAR_ADD	Fld (7, 0)	/* function ADDress                */
> -
> -#define UDCOMP_OUTMAXP	Fld (8, 0)	/* OUTput MAXimum Packet size - 1  */
> -                	        	/* [byte]                          */
> -#define UDCOMP_OutMaxPkt(Size)  	/* Output Maximum Packet size      */ \
> -                	        	/* [1..256 byte]                   */ \
> -                	(((Size) - 1) << FShft (UDCOMP_OUTMAXP))
> -
> -#define UDCIMP_INMAXP	Fld (8, 0)	/* INput MAXimum Packet size - 1   */
> -                	        	/* [byte]                          */
> -#define UDCIMP_InMaxPkt(Size)   	/* Input Maximum Packet size       */ \
> -                	        	/* [1..256 byte]                   */ \
> -                	(((Size) - 1) << FShft (UDCIMP_INMAXP))
> -
> -#define UDCCS0_OPR	0x00000001	/* Output Packet Ready (read)      */
> -#define UDCCS0_IPR	0x00000002	/* Input Packet Ready              */
> -#define UDCCS0_SST	0x00000004	/* Sent STall                      */
> -#define UDCCS0_FST	0x00000008	/* Force STall                     */
> -#define UDCCS0_DE	0x00000010	/* Data End                        */
> -#define UDCCS0_SE	0x00000020	/* Setup End (read)                */
> -#define UDCCS0_SO	0x00000040	/* Serviced Output packet ready    */
> -                	        	/* (write)                         */
> -#define UDCCS0_SSE	0x00000080	/* Serviced Setup End (write)      */
> -
> -#define UDCCS1_RFS	0x00000001	/* Receive FIFO 12-bytes or more   */
> -                	        	/* Service request (read)          */
> -#define UDCCS1_RPC	0x00000002	/* Receive Packet Complete         */
> -#define UDCCS1_RPE	0x00000004	/* Receive Packet Error (read)     */
> -#define UDCCS1_SST	0x00000008	/* Sent STall                      */
> -#define UDCCS1_FST	0x00000010	/* Force STall                     */
> -#define UDCCS1_RNE	0x00000020	/* Receive FIFO Not Empty (read)   */
> -
> -#define UDCCS2_TFS	0x00000001	/* Transmit FIFO 8-bytes or less   */
> -                	        	/* Service request (read)          */
> -#define UDCCS2_TPC	0x00000002	/* Transmit Packet Complete        */
> -#define UDCCS2_TPE	0x00000004	/* Transmit Packet Error (read)    */
> -#define UDCCS2_TUR	0x00000008	/* Transmit FIFO Under-Run         */
> -#define UDCCS2_SST	0x00000010	/* Sent STall                      */
> -#define UDCCS2_FST	0x00000020	/* Force STall                     */
> -
> -#define UDCD0_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
> -
> -#define UDCWC_WC	Fld (4, 0)	/* Write Count                     */
> -
> -#define UDCDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
> -
> -#define UDCSR_EIR	0x00000001	/* End-point 0 Interrupt Request   */
> -#define UDCSR_RIR	0x00000002	/* Receive Interrupt Request       */
> -#define UDCSR_TIR	0x00000004	/* Transmit Interrupt Request      */
> -#define UDCSR_SUSIR	0x00000008	/* SUSpend Interrupt Request       */
> -#define UDCSR_RESIR	0x00000010	/* RESume Interrupt Request        */
> -#define UDCSR_RSTIR	0x00000020	/* ReSeT Interrupt Request         */
> -
> -
> -/*
> - * Universal Asynchronous Receiver/Transmitter (UART) control registers
> - *
> - * Registers
> - *    Ser1UTCR0 	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 0
> - *              	(read/write).
> - *    Ser1UTCR1 	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 1
> - *              	(read/write).
> - *    Ser1UTCR2 	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 2
> - *              	(read/write).
> - *    Ser1UTCR3 	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 3
> - *              	(read/write).
> - *    Ser1UTDR  	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Data Register
> - *              	(read/write).
> - *    Ser1UTSR0 	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Status Register 0
> - *              	(read/write).
> - *    Ser1UTSR1 	Serial port 1 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Status Register 1 (read).
> - *
> - *    Ser2UTCR0 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 0
> - *              	(read/write).
> - *    Ser2UTCR1 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 1
> - *              	(read/write).
> - *    Ser2UTCR2 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 2
> - *              	(read/write).
> - *    Ser2UTCR3 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 3
> - *              	(read/write).
> - *    Ser2UTCR4 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 4
> - *              	(read/write).
> - *    Ser2UTDR  	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Data Register
> - *              	(read/write).
> - *    Ser2UTSR0 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Status Register 0
> - *              	(read/write).
> - *    Ser2UTSR1 	Serial port 2 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Status Register 1 (read).
> - *
> - *    Ser3UTCR0 	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 0
> - *              	(read/write).
> - *    Ser3UTCR1 	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 1
> - *              	(read/write).
> - *    Ser3UTCR2 	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 2
> - *              	(read/write).
> - *    Ser3UTCR3 	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Control Register 3
> - *              	(read/write).
> - *    Ser3UTDR  	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Data Register
> - *              	(read/write).
> - *    Ser3UTSR0 	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Status Register 0
> - *              	(read/write).
> - *    Ser3UTSR1 	Serial port 3 Universal Asynchronous
> - *              	Receiver/Transmitter (UART) Status Register 1 (read).
> - *
> - * Clocks
> - *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
> - *              	or 3.5795 MHz).
> - *    fua, Tua  	Frequency, period of the UART communication.
> - */
> -
> -#define _UTCR0(Nb)	__REG(0x80010000 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 0 [1..3] */
> -#define _UTCR1(Nb)	__REG(0x80010004 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 1 [1..3] */
> -#define _UTCR2(Nb)	__REG(0x80010008 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 2 [1..3] */
> -#define _UTCR3(Nb)	__REG(0x8001000C + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 3 [1..3] */
> -#define _UTCR4(Nb)	__REG(0x80010010 + ((Nb) - 1)*0x00020000)  /* UART Control Reg. 4 [2] */
> -#define _UTDR(Nb)	__REG(0x80010014 + ((Nb) - 1)*0x00020000)  /* UART Data Reg. [1..3] */
> -#define _UTSR0(Nb)	__REG(0x8001001C + ((Nb) - 1)*0x00020000)  /* UART Status Reg. 0 [1..3] */
> -#define _UTSR1(Nb)	__REG(0x80010020 + ((Nb) - 1)*0x00020000)  /* UART Status Reg. 1 [1..3] */
> -
> -#define Ser1UTCR0	_UTCR0 (1)	/* Ser. port 1 UART Control Reg. 0 */
> -#define Ser1UTCR1	_UTCR1 (1)	/* Ser. port 1 UART Control Reg. 1 */
> -#define Ser1UTCR2	_UTCR2 (1)	/* Ser. port 1 UART Control Reg. 2 */
> -#define Ser1UTCR3	_UTCR3 (1)	/* Ser. port 1 UART Control Reg. 3 */
> -#define Ser1UTDR	_UTDR (1)	/* Ser. port 1 UART Data Reg.      */
> -#define Ser1UTSR0	_UTSR0 (1)	/* Ser. port 1 UART Status Reg. 0  */
> -#define Ser1UTSR1	_UTSR1 (1)	/* Ser. port 1 UART Status Reg. 1  */
> -
> -#define Ser2UTCR0	_UTCR0 (2)	/* Ser. port 2 UART Control Reg. 0 */
> -#define Ser2UTCR1	_UTCR1 (2)	/* Ser. port 2 UART Control Reg. 1 */
> -#define Ser2UTCR2	_UTCR2 (2)	/* Ser. port 2 UART Control Reg. 2 */
> -#define Ser2UTCR3	_UTCR3 (2)	/* Ser. port 2 UART Control Reg. 3 */
> -#define Ser2UTCR4	_UTCR4 (2)	/* Ser. port 2 UART Control Reg. 4 */
> -#define Ser2UTDR	_UTDR (2)	/* Ser. port 2 UART Data Reg.      */
> -#define Ser2UTSR0	_UTSR0 (2)	/* Ser. port 2 UART Status Reg. 0  */
> -#define Ser2UTSR1	_UTSR1 (2)	/* Ser. port 2 UART Status Reg. 1  */
> -
> -#define Ser3UTCR0	_UTCR0 (3)	/* Ser. port 3 UART Control Reg. 0 */
> -#define Ser3UTCR1	_UTCR1 (3)	/* Ser. port 3 UART Control Reg. 1 */
> -#define Ser3UTCR2	_UTCR2 (3)	/* Ser. port 3 UART Control Reg. 2 */
> -#define Ser3UTCR3	_UTCR3 (3)	/* Ser. port 3 UART Control Reg. 3 */
> -#define Ser3UTDR	_UTDR (3)	/* Ser. port 3 UART Data Reg.      */
> -#define Ser3UTSR0	_UTSR0 (3)	/* Ser. port 3 UART Status Reg. 0  */
> -#define Ser3UTSR1	_UTSR1 (3)	/* Ser. port 3 UART Status Reg. 1  */
> -
> -/* Those are still used in some places */
> -#define _Ser1UTCR0	__PREG(Ser1UTCR0)
> -#define _Ser2UTCR0	__PREG(Ser2UTCR0)
> -#define _Ser3UTCR0	__PREG(Ser3UTCR0)
> -
> -/* Register offsets */
> -#define UTCR0		0x00
> -#define UTCR1		0x04
> -#define UTCR2		0x08
> -#define UTCR3		0x0c
> -#define UTDR		0x14
> -#define UTSR0		0x1c
> -#define UTSR1		0x20
> -
> -#define UTCR0_PE	0x00000001	/* Parity Enable                   */
> -#define UTCR0_OES	0x00000002	/* Odd/Even parity Select          */
> -#define UTCR0_OddPar	(UTCR0_OES*0)	/*  Odd Parity                     */
> -#define UTCR0_EvenPar	(UTCR0_OES*1)	/*  Even Parity                    */
> -#define UTCR0_SBS	0x00000004	/* Stop Bit Select                 */
> -#define UTCR0_1StpBit	(UTCR0_SBS*0)	/*  1 Stop Bit per frame           */
> -#define UTCR0_2StpBit	(UTCR0_SBS*1)	/*  2 Stop Bits per frame          */
> -#define UTCR0_DSS	0x00000008	/* Data Size Select                */
> -#define UTCR0_7BitData	(UTCR0_DSS*0)	/*  7-Bit Data                     */
> -#define UTCR0_8BitData	(UTCR0_DSS*1)	/*  8-Bit Data                     */
> -#define UTCR0_SCE	0x00000010	/* Sample Clock Enable             */
> -                	        	/* (ser. port 1: GPIO [18],        */
> -                	        	/* ser. port 3: GPIO [20])         */
> -#define UTCR0_RCE	0x00000020	/* Receive Clock Edge select       */
> -#define UTCR0_RcRsEdg	(UTCR0_RCE*0)	/*  Receive clock Rising-Edge      */
> -#define UTCR0_RcFlEdg	(UTCR0_RCE*1)	/*  Receive clock Falling-Edge     */
> -#define UTCR0_TCE	0x00000040	/* Transmit Clock Edge select      */
> -#define UTCR0_TrRsEdg	(UTCR0_TCE*0)	/*  Transmit clock Rising-Edge     */
> -#define UTCR0_TrFlEdg	(UTCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
> -#define UTCR0_Ser2IrDA	        	/* Ser. port 2 IrDA settings       */ \
> -                	(UTCR0_1StpBit + UTCR0_8BitData)
> -
> -#define UTCR1_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
> -#define UTCR2_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
> -                	        	/* fua = fxtl/(16*(BRD[11:0] + 1)) */
> -                	        	/* Tua = 16*(BRD [11:0] + 1)*Txtl  */
> -#define UTCR1_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
> -                	(((Div) - 16)/16 >> FSize (UTCR2_BRD) << \
> -                	 FShft (UTCR1_BRD))
> -#define UTCR2_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
> -                	(((Div) - 16)/16 & FAlnMsk (UTCR2_BRD) << \
> -                	 FShft (UTCR2_BRD))
> -                	        	/*  fua = fxtl/(16*Floor (Div/16)) */
> -                	        	/*  Tua = 16*Floor (Div/16)*Txtl   */
> -#define UTCR1_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
> -                	(((Div) - 1)/16 >> FSize (UTCR2_BRD) << \
> -                	 FShft (UTCR1_BRD))
> -#define UTCR2_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
> -                	(((Div) - 1)/16 & FAlnMsk (UTCR2_BRD) << \
> -                	 FShft (UTCR2_BRD))
> -                	        	/*  fua = fxtl/(16*Ceil (Div/16))  */
> -                	        	/*  Tua = 16*Ceil (Div/16)*Txtl    */
> -
> -#define UTCR3_RXE	0x00000001	/* Receive Enable                  */
> -#define UTCR3_TXE	0x00000002	/* Transmit Enable                 */
> -#define UTCR3_BRK	0x00000004	/* BReaK mode                      */
> -#define UTCR3_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
> -                	        	/* more Interrupt Enable           */
> -#define UTCR3_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Interrupt Enable                */
> -#define UTCR3_LBM	0x00000020	/* Look-Back Mode                  */
> -#define UTCR3_Ser2IrDA	        	/* Ser. port 2 IrDA settings (RIE, */ \
> -                	        	/* TIE, LBM can be set or cleared) */ \
> -                	(UTCR3_RXE + UTCR3_TXE)
> -
> -#define UTCR4_HSE	0x00000001	/* Hewlett-Packard Serial InfraRed */
> -                	        	/* (HP-SIR) modulation Enable      */
> -#define UTCR4_NRZ	(UTCR4_HSE*0)	/*  Non-Return to Zero modulation  */
> -#define UTCR4_HPSIR	(UTCR4_HSE*1)	/*  HP-SIR modulation              */
> -#define UTCR4_LPM	0x00000002	/* Low-Power Mode                  */
> -#define UTCR4_Z3_16Bit	(UTCR4_LPM*0)	/*  Zero pulse = 3/16 Bit time     */
> -#define UTCR4_Z1_6us	(UTCR4_LPM*1)	/*  Zero pulse = 1.6 us            */
> -
> -#define UTDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
> -#if 0           	        	/* Hidden receive FIFO bits        */
> -#define UTDR_PRE	0x00000100	/*  receive PaRity Error (read)    */
> -#define UTDR_FRE	0x00000200	/*  receive FRaming Error (read)   */
> -#define UTDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
> -#endif /* 0 */
> -
> -#define UTSR0_TFS	0x00000001	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Service request (read)          */
> -#define UTSR0_RFS	0x00000002	/* Receive FIFO 1/3-to-2/3-full or */
> -                	        	/* more Service request (read)     */
> -#define UTSR0_RID	0x00000004	/* Receiver IDle                   */
> -#define UTSR0_RBB	0x00000008	/* Receive Beginning of Break      */
> -#define UTSR0_REB	0x00000010	/* Receive End of Break            */
> -#define UTSR0_EIF	0x00000020	/* Error In FIFO (read)            */
> -
> -#define UTSR1_TBY	0x00000001	/* Transmitter BusY (read)         */
> -#define UTSR1_RNE	0x00000002	/* Receive FIFO Not Empty (read)   */
> -#define UTSR1_TNF	0x00000004	/* Transmit FIFO Not Full (read)   */
> -#define UTSR1_PRE	0x00000008	/* receive PaRity Error (read)     */
> -#define UTSR1_FRE	0x00000010	/* receive FRaming Error (read)    */
> -#define UTSR1_ROR	0x00000020	/* Receive FIFO Over-Run (read)    */
> -
> -
> -/*
> - * Synchronous Data Link Controller (SDLC) control registers
> - *
> - * Registers
> - *    Ser1SDCR0 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Control Register 0 (read/write).
> - *    Ser1SDCR1 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Control Register 1 (read/write).
> - *    Ser1SDCR2 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Control Register 2 (read/write).
> - *    Ser1SDCR3 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Control Register 3 (read/write).
> - *    Ser1SDCR4 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Control Register 4 (read/write).
> - *    Ser1SDDR  	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Data Register (read/write).
> - *    Ser1SDSR0 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Status Register 0 (read/write).
> - *    Ser1SDSR1 	Serial port 1 Synchronous Data Link Controller (SDLC)
> - *              	Status Register 1 (read/write).
> - *
> - * Clocks
> - *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
> - *              	or 3.5795 MHz).
> - *    fsd, Tsd  	Frequency, period of the SDLC communication.
> - */
> -
> -#define Ser1SDCR0	__REG(0x80020060)  /* Ser. port 1 SDLC Control Reg. 0 */
> -#define Ser1SDCR1	__REG(0x80020064)  /* Ser. port 1 SDLC Control Reg. 1 */
> -#define Ser1SDCR2	__REG(0x80020068)  /* Ser. port 1 SDLC Control Reg. 2 */
> -#define Ser1SDCR3	__REG(0x8002006C)  /* Ser. port 1 SDLC Control Reg. 3 */
> -#define Ser1SDCR4	__REG(0x80020070)  /* Ser. port 1 SDLC Control Reg. 4 */
> -#define Ser1SDDR	__REG(0x80020078)  /* Ser. port 1 SDLC Data Reg.      */
> -#define Ser1SDSR0	__REG(0x80020080)  /* Ser. port 1 SDLC Status Reg. 0  */
> -#define Ser1SDSR1	__REG(0x80020084)  /* Ser. port 1 SDLC Status Reg. 1  */
> -
> -#define SDCR0_SUS	0x00000001	/* SDLC/UART Select                */
> -#define SDCR0_SDLC	(SDCR0_SUS*0)	/*  SDLC mode (TXD1 & RXD1)        */
> -#define SDCR0_UART	(SDCR0_SUS*1)	/*  UART mode (TXD1 & RXD1)        */
> -#define SDCR0_SDF	0x00000002	/* Single/Double start Flag select */
> -#define SDCR0_SglFlg	(SDCR0_SDF*0)	/*  Single start Flag              */
> -#define SDCR0_DblFlg	(SDCR0_SDF*1)	/*  Double start Flag              */
> -#define SDCR0_LBM	0x00000004	/* Look-Back Mode                  */
> -#define SDCR0_BMS	0x00000008	/* Bit Modulation Select           */
> -#define SDCR0_FM0	(SDCR0_BMS*0)	/*  Freq. Modulation zero (0)      */
> -#define SDCR0_NRZ	(SDCR0_BMS*1)	/*  Non-Return to Zero modulation  */
> -#define SDCR0_SCE	0x00000010	/* Sample Clock Enable (GPIO [16]) */
> -#define SDCR0_SCD	0x00000020	/* Sample Clock Direction select   */
> -                	        	/* (GPIO [16])                     */
> -#define SDCR0_SClkIn	(SDCR0_SCD*0)	/*  Sample Clock Input             */
> -#define SDCR0_SClkOut	(SDCR0_SCD*1)	/*  Sample Clock Output            */
> -#define SDCR0_RCE	0x00000040	/* Receive Clock Edge select       */
> -#define SDCR0_RcRsEdg	(SDCR0_RCE*0)	/*  Receive clock Rising-Edge      */
> -#define SDCR0_RcFlEdg	(SDCR0_RCE*1)	/*  Receive clock Falling-Edge     */
> -#define SDCR0_TCE	0x00000080	/* Transmit Clock Edge select      */
> -#define SDCR0_TrRsEdg	(SDCR0_TCE*0)	/*  Transmit clock Rising-Edge     */
> -#define SDCR0_TrFlEdg	(SDCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
> -
> -#define SDCR1_AAF	0x00000001	/* Abort After Frame enable        */
> -                	        	/* (GPIO [17])                     */
> -#define SDCR1_TXE	0x00000002	/* Transmit Enable                 */
> -#define SDCR1_RXE	0x00000004	/* Receive Enable                  */
> -#define SDCR1_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
> -                	        	/* more Interrupt Enable           */
> -#define SDCR1_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Interrupt Enable                */
> -#define SDCR1_AME	0x00000020	/* Address Match Enable            */
> -#define SDCR1_TUS	0x00000040	/* Transmit FIFO Under-run Select  */
> -#define SDCR1_EFrmURn	(SDCR1_TUS*0)	/*  End Frame on Under-Run         */
> -#define SDCR1_AbortURn	(SDCR1_TUS*1)	/*  Abort on Under-Run             */
> -#define SDCR1_RAE	0x00000080	/* Receive Abort interrupt Enable  */
> -
> -#define SDCR2_AMV	Fld (8, 0)	/* Address Match Value             */
> -
> -#define SDCR3_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
> -#define SDCR4_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
> -                	        	/* fsd = fxtl/(16*(BRD[11:0] + 1)) */
> -                	        	/* Tsd = 16*(BRD[11:0] + 1)*Txtl   */
> -#define SDCR3_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
> -                	(((Div) - 16)/16 >> FSize (SDCR4_BRD) << \
> -                	 FShft (SDCR3_BRD))
> -#define SDCR4_BdRtDiv(Div)      	/*  Baud Rate Divisor [16..65536]  */ \
> -                	(((Div) - 16)/16 & FAlnMsk (SDCR4_BRD) << \
> -                	 FShft (SDCR4_BRD))
> -                	        	/*  fsd = fxtl/(16*Floor (Div/16)) */
> -                	        	/*  Tsd = 16*Floor (Div/16)*Txtl   */
> -#define SDCR3_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
> -                	(((Div) - 1)/16 >> FSize (SDCR4_BRD) << \
> -                	 FShft (SDCR3_BRD))
> -#define SDCR4_CeilBdRtDiv(Div)  	/*  Ceil. of BdRtDiv [16..65536]   */ \
> -                	(((Div) - 1)/16 & FAlnMsk (SDCR4_BRD) << \
> -                	 FShft (SDCR4_BRD))
> -                	        	/*  fsd = fxtl/(16*Ceil (Div/16))  */
> -                	        	/*  Tsd = 16*Ceil (Div/16)*Txtl    */
> -
> -#define SDDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
> -#if 0           	        	/* Hidden receive FIFO bits        */
> -#define SDDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
> -#define SDDR_CRE	0x00000200	/*  receive CRC Error (read)       */
> -#define SDDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
> -#endif /* 0 */
> -
> -#define SDSR0_EIF	0x00000001	/* Error In FIFO (read)            */
> -#define SDSR0_TUR	0x00000002	/* Transmit FIFO Under-Run         */
> -#define SDSR0_RAB	0x00000004	/* Receive ABort                   */
> -#define SDSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Service request (read)          */
> -#define SDSR0_RFS	0x00000010	/* Receive FIFO 1/3-to-2/3-full or */
> -                	        	/* more Service request (read)     */
> -
> -#define SDSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
> -#define SDSR1_TBY	0x00000002	/* Transmitter BusY (read)         */
> -#define SDSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
> -#define SDSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
> -#define SDSR1_RTD	0x00000010	/* Receive Transition Detected     */
> -#define SDSR1_EOF	0x00000020	/* receive End-Of-Frame (read)     */
> -#define SDSR1_CRE	0x00000040	/* receive CRC Error (read)        */
> -#define SDSR1_ROR	0x00000080	/* Receive FIFO Over-Run (read)    */
> -
> -
> -/*
> - * High-Speed Serial to Parallel controller (HSSP) control registers
> - *
> - * Registers
> - *    Ser2HSCR0 	Serial port 2 High-Speed Serial to Parallel
> - *              	controller (HSSP) Control Register 0 (read/write).
> - *    Ser2HSCR1 	Serial port 2 High-Speed Serial to Parallel
> - *              	controller (HSSP) Control Register 1 (read/write).
> - *    Ser2HSDR  	Serial port 2 High-Speed Serial to Parallel
> - *              	controller (HSSP) Data Register (read/write).
> - *    Ser2HSSR0 	Serial port 2 High-Speed Serial to Parallel
> - *              	controller (HSSP) Status Register 0 (read/write).
> - *    Ser2HSSR1 	Serial port 2 High-Speed Serial to Parallel
> - *              	controller (HSSP) Status Register 1 (read).
> - *    Ser2HSCR2 	Serial port 2 High-Speed Serial to Parallel
> - *              	controller (HSSP) Control Register 2 (read/write).
> - *              	[The HSCR2 register is only implemented in
> - *              	versions 2.0 (rev. = 8) and higher of the StrongARM
> - *              	SA-1100.]
> - */
> -
> -#define Ser2HSCR0	__REG(0x80040060)  /* Ser. port 2 HSSP Control Reg. 0 */
> -#define Ser2HSCR1	__REG(0x80040064)  /* Ser. port 2 HSSP Control Reg. 1 */
> -#define Ser2HSDR	__REG(0x8004006C)  /* Ser. port 2 HSSP Data Reg.      */
> -#define Ser2HSSR0	__REG(0x80040074)  /* Ser. port 2 HSSP Status Reg. 0  */
> -#define Ser2HSSR1	__REG(0x80040078)  /* Ser. port 2 HSSP Status Reg. 1  */
> -#define Ser2HSCR2	__REG(0x90060028)  /* Ser. port 2 HSSP Control Reg. 2 */
> -
> -#define HSCR0_ITR	0x00000001	/* IrDA Transmission Rate          */
> -#define HSCR0_UART	(HSCR0_ITR*0)	/*  UART mode (115.2 kb/s if IrDA) */
> -#define HSCR0_HSSP	(HSCR0_ITR*1)	/*  HSSP mode (4 Mb/s)             */
> -#define HSCR0_LBM	0x00000002	/* Look-Back Mode                  */
> -#define HSCR0_TUS	0x00000004	/* Transmit FIFO Under-run Select  */
> -#define HSCR0_EFrmURn	(HSCR0_TUS*0)	/*  End Frame on Under-Run         */
> -#define HSCR0_AbortURn	(HSCR0_TUS*1)	/*  Abort on Under-Run             */
> -#define HSCR0_TXE	0x00000008	/* Transmit Enable                 */
> -#define HSCR0_RXE	0x00000010	/* Receive Enable                  */
> -#define HSCR0_RIE	0x00000020	/* Receive FIFO 2/5-to-3/5-full or */
> -                	        	/* more Interrupt Enable           */
> -#define HSCR0_TIE	0x00000040	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Interrupt Enable                */
> -#define HSCR0_AME	0x00000080	/* Address Match Enable            */
> -
> -#define HSCR1_AMV	Fld (8, 0)	/* Address Match Value             */
> -
> -#define HSDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs     */
> -#if 0           	        	/* Hidden receive FIFO bits        */
> -#define HSDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
> -#define HSDR_CRE	0x00000200	/*  receive CRC Error (read)       */
> -#define HSDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
> -#endif /* 0 */
> -
> -#define HSSR0_EIF	0x00000001	/* Error In FIFO (read)            */
> -#define HSSR0_TUR	0x00000002	/* Transmit FIFO Under-Run         */
> -#define HSSR0_RAB	0x00000004	/* Receive ABort                   */
> -#define HSSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Service request (read)          */
> -#define HSSR0_RFS	0x00000010	/* Receive FIFO 2/5-to-3/5-full or */
> -                	        	/* more Service request (read)     */
> -#define HSSR0_FRE	0x00000020	/* receive FRaming Error           */
> -
> -#define HSSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
> -#define HSSR1_TBY	0x00000002	/* Transmitter BusY (read)         */
> -#define HSSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
> -#define HSSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
> -#define HSSR1_EOF	0x00000010	/* receive End-Of-Frame (read)     */
> -#define HSSR1_CRE	0x00000020	/* receive CRC Error (read)        */
> -#define HSSR1_ROR	0x00000040	/* Receive FIFO Over-Run (read)    */
> -
> -#define HSCR2_TXP	0x00040000	/* Transmit data Polarity (TXD_2)  */
> -#define HSCR2_TrDataL	(HSCR2_TXP*0)	/*  Transmit Data active Low       */
> -                	        	/*  (inverted)                     */
> -#define HSCR2_TrDataH	(HSCR2_TXP*1)	/*  Transmit Data active High      */
> -                	        	/*  (non-inverted)                 */
> -#define HSCR2_RXP	0x00080000	/* Receive data Polarity (RXD_2)   */
> -#define HSCR2_RcDataL	(HSCR2_RXP*0)	/*  Receive Data active Low        */
> -                	        	/*  (inverted)                     */
> -#define HSCR2_RcDataH	(HSCR2_RXP*1)	/*  Receive Data active High       */
> -                	        	/*  (non-inverted)                 */
> -
> -
> -/*
> - * Multi-media Communications Port (MCP) control registers
> - *
> - * Registers
> - *    Ser4MCCR0 	Serial port 4 Multi-media Communications Port (MCP)
> - *              	Control Register 0 (read/write).
> - *    Ser4MCDR0 	Serial port 4 Multi-media Communications Port (MCP)
> - *              	Data Register 0 (audio, read/write).
> - *    Ser4MCDR1 	Serial port 4 Multi-media Communications Port (MCP)
> - *              	Data Register 1 (telecom, read/write).
> - *    Ser4MCDR2 	Serial port 4 Multi-media Communications Port (MCP)
> - *              	Data Register 2 (CODEC registers, read/write).
> - *    Ser4MCSR  	Serial port 4 Multi-media Communications Port (MCP)
> - *              	Status Register (read/write).
> - *    Ser4MCCR1 	Serial port 4 Multi-media Communications Port (MCP)
> - *              	Control Register 1 (read/write).
> - *              	[The MCCR1 register is only implemented in
> - *              	versions 2.0 (rev. = 8) and higher of the StrongARM
> - *              	SA-1100.]
> - *
> - * Clocks
> - *    fmc, Tmc  	Frequency, period of the MCP communication (10 MHz,
> - *              	12 MHz, or GPIO [21]).
> - *    faud, Taud	Frequency, period of the audio sampling.
> - *    ftcm, Ttcm	Frequency, period of the telecom sampling.
> - */
> -
> -#define Ser4MCCR0	__REG(0x80060000)  /* Ser. port 4 MCP Control Reg. 0 */
> -#define Ser4MCDR0	__REG(0x80060008)  /* Ser. port 4 MCP Data Reg. 0 (audio) */
> -#define Ser4MCDR1	__REG(0x8006000C)  /* Ser. port 4 MCP Data Reg. 1 (telecom) */
> -#define Ser4MCDR2	__REG(0x80060010)  /* Ser. port 4 MCP Data Reg. 2 (CODEC reg.) */
> -#define Ser4MCSR	__REG(0x80060018)  /* Ser. port 4 MCP Status Reg. */
> -#define Ser4MCCR1	__REG(0x90060030)  /* Ser. port 4 MCP Control Reg. 1 */
> -
> -#define MCCR0_ASD	Fld (7, 0)	/* Audio Sampling rate Divisor/32  */
> -                	        	/* [6..127]                        */
> -                	        	/* faud = fmc/(32*ASD)             */
> -                	        	/* Taud = 32*ASD*Tmc               */
> -#define MCCR0_AudSmpDiv(Div)    	/*  Audio Sampling rate Divisor    */ \
> -                	        	/*  [192..4064]                    */ \
> -                	((Div)/32 << FShft (MCCR0_ASD))
> -                	        	/*  faud = fmc/(32*Floor (Div/32)) */
> -                	        	/*  Taud = 32*Floor (Div/32)*Tmc   */
> -#define MCCR0_CeilAudSmpDiv(Div)	/*  Ceil. of AudSmpDiv [192..4064] */ \
> -                	(((Div) + 31)/32 << FShft (MCCR0_ASD))
> -                	        	/*  faud = fmc/(32*Ceil (Div/32))  */
> -                	        	/*  Taud = 32*Ceil (Div/32)*Tmc    */
> -#define MCCR0_TSD	Fld (7, 8)	/* Telecom Sampling rate           */
> -                	        	/* Divisor/32 [16..127]            */
> -                	        	/* ftcm = fmc/(32*TSD)             */
> -                	        	/* Ttcm = 32*TSD*Tmc               */
> -#define MCCR0_TcmSmpDiv(Div)    	/*  Telecom Sampling rate Divisor  */ \
> -                	        	/*  [512..4064]                    */ \
> -                	((Div)/32 << FShft (MCCR0_TSD))
> -                	        	/*  ftcm = fmc/(32*Floor (Div/32)) */
> -                	        	/*  Ttcm = 32*Floor (Div/32)*Tmc   */
> -#define MCCR0_CeilTcmSmpDiv(Div)	/*  Ceil. of TcmSmpDiv [512..4064] */ \
> -                	(((Div) + 31)/32 << FShft (MCCR0_TSD))
> -                	        	/*  ftcm = fmc/(32*Ceil (Div/32))  */
> -                	        	/*  Ttcm = 32*Ceil (Div/32)*Tmc    */
> -#define MCCR0_MCE	0x00010000	/* MCP Enable                      */
> -#define MCCR0_ECS	0x00020000	/* External Clock Select           */
> -#define MCCR0_IntClk	(MCCR0_ECS*0)	/*  Internal Clock (10 or 12 MHz)  */
> -#define MCCR0_ExtClk	(MCCR0_ECS*1)	/*  External Clock (GPIO [21])     */
> -#define MCCR0_ADM	0x00040000	/* A/D (audio/telecom) data        */
> -                	        	/* sampling/storing Mode           */
> -#define MCCR0_VldBit	(MCCR0_ADM*0)	/*  Valid Bit storing mode         */
> -#define MCCR0_SmpCnt	(MCCR0_ADM*1)	/*  Sampling Counter storing mode  */
> -#define MCCR0_TTE	0x00080000	/* Telecom Transmit FIFO 1/2-full  */
> -                	        	/* or less interrupt Enable        */
> -#define MCCR0_TRE	0x00100000	/* Telecom Receive FIFO 1/2-full   */
> -                	        	/* or more interrupt Enable        */
> -#define MCCR0_ATE	0x00200000	/* Audio Transmit FIFO 1/2-full    */
> -                	        	/* or less interrupt Enable        */
> -#define MCCR0_ARE	0x00400000	/* Audio Receive FIFO 1/2-full or  */
> -                	        	/* more interrupt Enable           */
> -#define MCCR0_LBM	0x00800000	/* Look-Back Mode                  */
> -#define MCCR0_ECP	Fld (2, 24)	/* External Clock Prescaler - 1    */
> -#define MCCR0_ExtClkDiv(Div)    	/*  External Clock Divisor [1..4]  */ \
> -                	(((Div) - 1) << FShft (MCCR0_ECP))
> -
> -#define MCDR0_DATA	Fld (12, 4)	/* receive/transmit audio DATA     */
> -                	        	/* FIFOs                           */
> -
> -#define MCDR1_DATA	Fld (14, 2)	/* receive/transmit telecom DATA   */
> -                	        	/* FIFOs                           */
> -
> -                	        	/* receive/transmit CODEC reg.     */
> -                	        	/* FIFOs:                          */
> -#define MCDR2_DATA	Fld (16, 0)	/*  reg. DATA                      */
> -#define MCDR2_RW	0x00010000	/*  reg. Read/Write (transmit)     */
> -#define MCDR2_Rd	(MCDR2_RW*0)	/*   reg. Read                     */
> -#define MCDR2_Wr	(MCDR2_RW*1)	/*   reg. Write                    */
> -#define MCDR2_ADD	Fld (4, 17)	/*  reg. ADDress                   */
> -
> -#define MCSR_ATS	0x00000001	/* Audio Transmit FIFO 1/2-full    */
> -                	        	/* or less Service request (read)  */
> -#define MCSR_ARS	0x00000002	/* Audio Receive FIFO 1/2-full or  */
> -                	        	/* more Service request (read)     */
> -#define MCSR_TTS	0x00000004	/* Telecom Transmit FIFO 1/2-full  */
> -                	        	/* or less Service request (read)  */
> -#define MCSR_TRS	0x00000008	/* Telecom Receive FIFO 1/2-full   */
> -                	        	/* or more Service request (read)  */
> -#define MCSR_ATU	0x00000010	/* Audio Transmit FIFO Under-run   */
> -#define MCSR_ARO	0x00000020	/* Audio Receive FIFO Over-run     */
> -#define MCSR_TTU	0x00000040	/* Telecom Transmit FIFO Under-run */
> -#define MCSR_TRO	0x00000080	/* Telecom Receive FIFO Over-run   */
> -#define MCSR_ANF	0x00000100	/* Audio transmit FIFO Not Full    */
> -                	        	/* (read)                          */
> -#define MCSR_ANE	0x00000200	/* Audio receive FIFO Not Empty    */
> -                	        	/* (read)                          */
> -#define MCSR_TNF	0x00000400	/* Telecom transmit FIFO Not Full  */
> -                	        	/* (read)                          */
> -#define MCSR_TNE	0x00000800	/* Telecom receive FIFO Not Empty  */
> -                	        	/* (read)                          */
> -#define MCSR_CWC	0x00001000	/* CODEC register Write Completed  */
> -                	        	/* (read)                          */
> -#define MCSR_CRC	0x00002000	/* CODEC register Read Completed   */
> -                	        	/* (read)                          */
> -#define MCSR_ACE	0x00004000	/* Audio CODEC Enabled (read)      */
> -#define MCSR_TCE	0x00008000	/* Telecom CODEC Enabled (read)    */
> -
> -#define MCCR1_CFS	0x00100000	/* Clock Freq. Select              */
> -#define MCCR1_F12MHz	(MCCR1_CFS*0)	/*  Freq. (fmc) = ~ 12 MHz         */
> -                	        	/*  (11.981 MHz)                   */
> -#define MCCR1_F10MHz	(MCCR1_CFS*1)	/*  Freq. (fmc) = ~ 10 MHz         */
> -                	        	/*  (9.585 MHz)                    */
> -
> -
> -/*
> - * Synchronous Serial Port (SSP) control registers
> - *
> - * Registers
> - *    Ser4SSCR0 	Serial port 4 Synchronous Serial Port (SSP) Control
> - *              	Register 0 (read/write).
> - *    Ser4SSCR1 	Serial port 4 Synchronous Serial Port (SSP) Control
> - *              	Register 1 (read/write).
> - *              	[Bits SPO and SP are only implemented in versions 2.0
> - *              	(rev. = 8) and higher of the StrongARM SA-1100.]
> - *    Ser4SSDR  	Serial port 4 Synchronous Serial Port (SSP) Data
> - *              	Register (read/write).
> - *    Ser4SSSR  	Serial port 4 Synchronous Serial Port (SSP) Status
> - *              	Register (read/write).
> - *
> - * Clocks
> - *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
> - *              	or 3.5795 MHz).
> - *    fss, Tss  	Frequency, period of the SSP communication.
> - */
> -
> -#define Ser4SSCR0	__REG(0x80070060)  /* Ser. port 4 SSP Control Reg. 0 */
> -#define Ser4SSCR1	__REG(0x80070064)  /* Ser. port 4 SSP Control Reg. 1 */
> -#define Ser4SSDR	__REG(0x8007006C)  /* Ser. port 4 SSP Data Reg. */
> -#define Ser4SSSR	__REG(0x80070074)  /* Ser. port 4 SSP Status Reg. */
> -
> -#define SSCR0_DSS	Fld (4, 0)	/* Data Size - 1 Select [3..15]    */
> -#define SSCR0_DataSize(Size)    	/*  Data Size Select [4..16]       */ \
> -                	(((Size) - 1) << FShft (SSCR0_DSS))
> -#define SSCR0_FRF	Fld (2, 4)	/* FRame Format                    */
> -#define SSCR0_Motorola	        	/*  Motorola Serial Peripheral     */ \
> -                	        	/*  Interface (SPI) format         */ \
> -                	(0 << FShft (SSCR0_FRF))
> -#define SSCR0_TI	        	/*  Texas Instruments Synchronous  */ \
> -                	        	/*  Serial format                  */ \
> -                	(1 << FShft (SSCR0_FRF))
> -#define SSCR0_National	        	/*  National Microwire format      */ \
> -                	(2 << FShft (SSCR0_FRF))
> -#define SSCR0_SSE	0x00000080	/* SSP Enable                      */
> -#define SSCR0_SCR	Fld (8, 8)	/* Serial Clock Rate divisor/2 - 1 */
> -                	        	/* fss = fxtl/(2*(SCR + 1))        */
> -                	        	/* Tss = 2*(SCR + 1)*Txtl          */
> -#define SSCR0_SerClkDiv(Div)    	/*  Serial Clock Divisor [2..512]  */ \
> -                	(((Div) - 2)/2 << FShft (SSCR0_SCR))
> -                	        	/*  fss = fxtl/(2*Floor (Div/2))   */
> -                	        	/*  Tss = 2*Floor (Div/2)*Txtl     */
> -#define SSCR0_CeilSerClkDiv(Div)	/*  Ceil. of SerClkDiv [2..512]    */ \
> -                	(((Div) - 1)/2 << FShft (SSCR0_SCR))
> -                	        	/*  fss = fxtl/(2*Ceil (Div/2))    */
> -                	        	/*  Tss = 2*Ceil (Div/2)*Txtl      */
> -
> -#define SSCR1_RIE	0x00000001	/* Receive FIFO 1/2-full or more   */
> -                	        	/* Interrupt Enable                */
> -#define SSCR1_TIE	0x00000002	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Interrupt Enable                */
> -#define SSCR1_LBM	0x00000004	/* Look-Back Mode                  */
> -#define SSCR1_SPO	0x00000008	/* Sample clock (SCLK) POlarity    */
> -#define SSCR1_SClkIactL	(SSCR1_SPO*0)	/*  Sample Clock Inactive Low      */
> -#define SSCR1_SClkIactH	(SSCR1_SPO*1)	/*  Sample Clock Inactive High     */
> -#define SSCR1_SP	0x00000010	/* Sample clock (SCLK) Phase       */
> -#define SSCR1_SClk1P	(SSCR1_SP*0)	/*  Sample Clock active 1 Period   */
> -                	        	/*  after frame (SFRM, 1st edge)   */
> -#define SSCR1_SClk1_2P	(SSCR1_SP*1)	/*  Sample Clock active 1/2 Period */
> -                	        	/*  after frame (SFRM, 1st edge)   */
> -#define SSCR1_ECS	0x00000020	/* External Clock Select           */
> -#define SSCR1_IntClk	(SSCR1_ECS*0)	/*  Internal Clock                 */
> -#define SSCR1_ExtClk	(SSCR1_ECS*1)	/*  External Clock (GPIO [19])     */
> -
> -#define SSDR_DATA	Fld (16, 0)	/* receive/transmit DATA FIFOs     */
> -
> -#define SSSR_TNF	0x00000002	/* Transmit FIFO Not Full (read)   */
> -#define SSSR_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
> -#define SSSR_BSY	0x00000008	/* SSP BuSY (read)                 */
> -#define SSSR_TFS	0x00000010	/* Transmit FIFO 1/2-full or less  */
> -                	        	/* Service request (read)          */
> -#define SSSR_RFS	0x00000020	/* Receive FIFO 1/2-full or more   */
> -                	        	/* Service request (read)          */
> -#define SSSR_ROR	0x00000040	/* Receive FIFO Over-Run           */
> -
> -
> -/*
> - * Operating System (OS) timer control registers
> - *
> - * Registers
> - *    OSMR0     	Operating System (OS) timer Match Register 0
> - *              	(read/write).
> - *    OSMR1     	Operating System (OS) timer Match Register 1
> - *              	(read/write).
> - *    OSMR2     	Operating System (OS) timer Match Register 2
> - *              	(read/write).
> - *    OSMR3     	Operating System (OS) timer Match Register 3
> - *              	(read/write).
> - *    OSCR      	Operating System (OS) timer Counter Register
> - *              	(read/write).
> - *    OSSR      	Operating System (OS) timer Status Register
> - *              	(read/write).
> - *    OWER      	Operating System (OS) timer Watch-dog Enable Register
> - *              	(read/write).
> - *    OIER      	Operating System (OS) timer Interrupt Enable Register
> - *              	(read/write).
> - */
> -
> -#define OSMR0  		io_p2v(0x90000000)  /* OS timer Match Reg. 0 */
> -#define OSMR1  		io_p2v(0x90000004)  /* OS timer Match Reg. 1 */
> -#define OSMR2  		io_p2v(0x90000008)  /* OS timer Match Reg. 2 */
> -#define OSMR3  		io_p2v(0x9000000c)  /* OS timer Match Reg. 3 */
> -#define OSCR   		io_p2v(0x90000010)  /* OS timer Counter Reg. */
> -#define OSSR   		io_p2v(0x90000014)  /* OS timer Status Reg. */
> -#define OWER   		io_p2v(0x90000018)  /* OS timer Watch-dog Enable Reg. */
> -#define OIER  	 	io_p2v(0x9000001C)  /* OS timer Interrupt Enable Reg. */
> -
> -#define OSSR_M(Nb)	        	/* Match detected [0..3]           */ \
> -                	(0x00000001 << (Nb))
> -#define OSSR_M0 	OSSR_M (0)	/* Match detected 0                */
> -#define OSSR_M1 	OSSR_M (1)	/* Match detected 1                */
> -#define OSSR_M2 	OSSR_M (2)	/* Match detected 2                */
> -#define OSSR_M3 	OSSR_M (3)	/* Match detected 3                */
> -
> -#define OWER_WME	0x00000001	/* Watch-dog Match Enable          */
> -                	        	/* (set only)                      */
> -
> -#define OIER_E(Nb)	        	/* match interrupt Enable [0..3]   */ \
> -                	(0x00000001 << (Nb))
> -#define OIER_E0 	OIER_E (0)	/* match interrupt Enable 0        */
> -#define OIER_E1 	OIER_E (1)	/* match interrupt Enable 1        */
> -#define OIER_E2 	OIER_E (2)	/* match interrupt Enable 2        */
> -#define OIER_E3 	OIER_E (3)	/* match interrupt Enable 3        */
> -
> -
> -/*
> - * Power Manager (PM) control registers
> - *
> - * Registers
> - *    PMCR      	Power Manager (PM) Control Register (read/write).
> - *    PSSR      	Power Manager (PM) Sleep Status Register (read/write).
> - *    PSPR      	Power Manager (PM) Scratch-Pad Register (read/write).
> - *    PWER      	Power Manager (PM) Wake-up Enable Register
> - *              	(read/write).
> - *    PCFR      	Power Manager (PM) general ConFiguration Register
> - *              	(read/write).
> - *    PPCR      	Power Manager (PM) Phase-Locked Loop (PLL)
> - *              	Configuration Register (read/write).
> - *    PGSR      	Power Manager (PM) General-Purpose Input/Output (GPIO)
> - *              	Sleep state Register (read/write, see GPIO pins).
> - *    POSR      	Power Manager (PM) Oscillator Status Register (read).
> - *
> - * Clocks
> - *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
> - *              	or 3.5795 MHz).
> - *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
> - */
> -
> -#define PMCR		__REG(0x90020000)  /* PM Control Reg. */
> -#define PSSR		__REG(0x90020004)  /* PM Sleep Status Reg. */
> -#define PSPR		__REG(0x90020008)  /* PM Scratch-Pad Reg. */
> -#define PWER		__REG(0x9002000C)  /* PM Wake-up Enable Reg. */
> -#define PCFR		__REG(0x90020010)  /* PM general ConFiguration Reg. */
> -#define PPCR		__REG(0x90020014)  /* PM PLL Configuration Reg. */
> -#define PGSR		__REG(0x90020018)  /* PM GPIO Sleep state Reg. */
> -#define POSR		__REG(0x9002001C)  /* PM Oscillator Status Reg. */
> -
> -#define PMCR_SF 	0x00000001	/* Sleep Force (set only)          */
> -
> -#define PSSR_SS 	0x00000001	/* Software Sleep                  */
> -#define PSSR_BFS	0x00000002	/* Battery Fault Status            */
> -                	        	/* (BATT_FAULT)                    */
> -#define PSSR_VFS	0x00000004	/* Vdd Fault Status (VDD_FAULT)    */
> -#define PSSR_DH 	0x00000008	/* DRAM control Hold               */
> -#define PSSR_PH 	0x00000010	/* Peripheral control Hold         */
> -
> -#define PWER_GPIO(Nb)	GPIO_GPIO (Nb)	/* GPIO [0..27] wake-up enable     */
> -#define PWER_GPIO0	PWER_GPIO (0)	/* GPIO  [0] wake-up enable        */
> -#define PWER_GPIO1	PWER_GPIO (1)	/* GPIO  [1] wake-up enable        */
> -#define PWER_GPIO2	PWER_GPIO (2)	/* GPIO  [2] wake-up enable        */
> -#define PWER_GPIO3	PWER_GPIO (3)	/* GPIO  [3] wake-up enable        */
> -#define PWER_GPIO4	PWER_GPIO (4)	/* GPIO  [4] wake-up enable        */
> -#define PWER_GPIO5	PWER_GPIO (5)	/* GPIO  [5] wake-up enable        */
> -#define PWER_GPIO6	PWER_GPIO (6)	/* GPIO  [6] wake-up enable        */
> -#define PWER_GPIO7	PWER_GPIO (7)	/* GPIO  [7] wake-up enable        */
> -#define PWER_GPIO8	PWER_GPIO (8)	/* GPIO  [8] wake-up enable        */
> -#define PWER_GPIO9	PWER_GPIO (9)	/* GPIO  [9] wake-up enable        */
> -#define PWER_GPIO10	PWER_GPIO (10)	/* GPIO [10] wake-up enable        */
> -#define PWER_GPIO11	PWER_GPIO (11)	/* GPIO [11] wake-up enable        */
> -#define PWER_GPIO12	PWER_GPIO (12)	/* GPIO [12] wake-up enable        */
> -#define PWER_GPIO13	PWER_GPIO (13)	/* GPIO [13] wake-up enable        */
> -#define PWER_GPIO14	PWER_GPIO (14)	/* GPIO [14] wake-up enable        */
> -#define PWER_GPIO15	PWER_GPIO (15)	/* GPIO [15] wake-up enable        */
> -#define PWER_GPIO16	PWER_GPIO (16)	/* GPIO [16] wake-up enable        */
> -#define PWER_GPIO17	PWER_GPIO (17)	/* GPIO [17] wake-up enable        */
> -#define PWER_GPIO18	PWER_GPIO (18)	/* GPIO [18] wake-up enable        */
> -#define PWER_GPIO19	PWER_GPIO (19)	/* GPIO [19] wake-up enable        */
> -#define PWER_GPIO20	PWER_GPIO (20)	/* GPIO [20] wake-up enable        */
> -#define PWER_GPIO21	PWER_GPIO (21)	/* GPIO [21] wake-up enable        */
> -#define PWER_GPIO22	PWER_GPIO (22)	/* GPIO [22] wake-up enable        */
> -#define PWER_GPIO23	PWER_GPIO (23)	/* GPIO [23] wake-up enable        */
> -#define PWER_GPIO24	PWER_GPIO (24)	/* GPIO [24] wake-up enable        */
> -#define PWER_GPIO25	PWER_GPIO (25)	/* GPIO [25] wake-up enable        */
> -#define PWER_GPIO26	PWER_GPIO (26)	/* GPIO [26] wake-up enable        */
> -#define PWER_GPIO27	PWER_GPIO (27)	/* GPIO [27] wake-up enable        */
> -#define PWER_RTC	0x80000000	/* RTC alarm wake-up enable        */
> -
> -#define PCFR_OPDE	0x00000001	/* Oscillator Power-Down Enable    */
> -#define PCFR_ClkRun	(PCFR_OPDE*0)	/*  Clock Running in sleep mode    */
> -#define PCFR_ClkStp	(PCFR_OPDE*1)	/*  Clock Stopped in sleep mode    */
> -#define PCFR_FP 	0x00000002	/* Float PCMCIA pins               */
> -#define PCFR_PCMCIANeg	(PCFR_FP*0)	/*  PCMCIA pins Negated (1)        */
> -#define PCFR_PCMCIAFlt	(PCFR_FP*1)	/*  PCMCIA pins Floating           */
> -#define PCFR_FS 	0x00000004	/* Float Static memory pins        */
> -#define PCFR_StMemNeg	(PCFR_FS*0)	/*  Static Memory pins Negated (1) */
> -#define PCFR_StMemFlt	(PCFR_FS*1)	/*  Static Memory pins Floating    */
> -#define PCFR_FO 	0x00000008	/* Force RTC oscillator            */
> -                	        	/* (32.768 kHz) enable On          */
> -
> -#define PPCR_CCF	Fld (5, 0)	/* CPU core Clock (CCLK) Freq.     */
> -#define PPCR_Fx16	        	/*  Freq. x 16 (fcpu = 16*fxtl)    */ \
> -                	(0x00 << FShft (PPCR_CCF))
> -#define PPCR_Fx20	        	/*  Freq. x 20 (fcpu = 20*fxtl)    */ \
> -                	(0x01 << FShft (PPCR_CCF))
> -#define PPCR_Fx24	        	/*  Freq. x 24 (fcpu = 24*fxtl)    */ \
> -                	(0x02 << FShft (PPCR_CCF))
> -#define PPCR_Fx28	        	/*  Freq. x 28 (fcpu = 28*fxtl)    */ \
> -                	(0x03 << FShft (PPCR_CCF))
> -#define PPCR_Fx32	        	/*  Freq. x 32 (fcpu = 32*fxtl)    */ \
> -                	(0x04 << FShft (PPCR_CCF))
> -#define PPCR_Fx36	        	/*  Freq. x 36 (fcpu = 36*fxtl)    */ \
> -                	(0x05 << FShft (PPCR_CCF))
> -#define PPCR_Fx40	        	/*  Freq. x 40 (fcpu = 40*fxtl)    */ \
> -                	(0x06 << FShft (PPCR_CCF))
> -#define PPCR_Fx44	        	/*  Freq. x 44 (fcpu = 44*fxtl)    */ \
> -                	(0x07 << FShft (PPCR_CCF))
> -#define PPCR_Fx48	        	/*  Freq. x 48 (fcpu = 48*fxtl)    */ \
> -                	(0x08 << FShft (PPCR_CCF))
> -#define PPCR_Fx52	        	/*  Freq. x 52 (fcpu = 52*fxtl)    */ \
> -                	(0x09 << FShft (PPCR_CCF))
> -#define PPCR_Fx56	        	/*  Freq. x 56 (fcpu = 56*fxtl)    */ \
> -                	(0x0A << FShft (PPCR_CCF))
> -#define PPCR_Fx60	        	/*  Freq. x 60 (fcpu = 60*fxtl)    */ \
> -                	(0x0B << FShft (PPCR_CCF))
> -#define PPCR_Fx64	        	/*  Freq. x 64 (fcpu = 64*fxtl)    */ \
> -                	(0x0C << FShft (PPCR_CCF))
> -#define PPCR_Fx68	        	/*  Freq. x 68 (fcpu = 68*fxtl)    */ \
> -                	(0x0D << FShft (PPCR_CCF))
> -#define PPCR_Fx72	        	/*  Freq. x 72 (fcpu = 72*fxtl)    */ \
> -                	(0x0E << FShft (PPCR_CCF))
> -#define PPCR_Fx76	        	/*  Freq. x 76 (fcpu = 76*fxtl)    */ \
> -                	(0x0F << FShft (PPCR_CCF))
> -                	        	/*  3.6864 MHz crystal (fxtl):     */
> -#define PPCR_F59_0MHz	PPCR_Fx16	/*   Freq. (fcpu) =  59.0 MHz      */
> -#define PPCR_F73_7MHz	PPCR_Fx20	/*   Freq. (fcpu) =  73.7 MHz      */
> -#define PPCR_F88_5MHz	PPCR_Fx24	/*   Freq. (fcpu) =  88.5 MHz      */
> -#define PPCR_F103_2MHz	PPCR_Fx28	/*   Freq. (fcpu) = 103.2 MHz      */
> -#define PPCR_F118_0MHz	PPCR_Fx32	/*   Freq. (fcpu) = 118.0 MHz      */
> -#define PPCR_F132_7MHz	PPCR_Fx36	/*   Freq. (fcpu) = 132.7 MHz      */
> -#define PPCR_F147_5MHz	PPCR_Fx40	/*   Freq. (fcpu) = 147.5 MHz      */
> -#define PPCR_F162_2MHz	PPCR_Fx44	/*   Freq. (fcpu) = 162.2 MHz      */
> -#define PPCR_F176_9MHz	PPCR_Fx48	/*   Freq. (fcpu) = 176.9 MHz      */
> -#define PPCR_F191_7MHz	PPCR_Fx52	/*   Freq. (fcpu) = 191.7 MHz      */
> -#define PPCR_F206_4MHz	PPCR_Fx56	/*   Freq. (fcpu) = 206.4 MHz      */
> -#define PPCR_F221_2MHz	PPCR_Fx60	/*   Freq. (fcpu) = 221.2 MHz      */
> -#define PPCR_F239_6MHz	PPCR_Fx64	/*   Freq. (fcpu) = 239.6 MHz      */
> -#define PPCR_F250_7MHz	PPCR_Fx68	/*   Freq. (fcpu) = 250.7 MHz      */
> -#define PPCR_F265_4MHz	PPCR_Fx72	/*   Freq. (fcpu) = 265.4 MHz      */
> -#define PPCR_F280_2MHz	PPCR_Fx76	/*   Freq. (fcpu) = 280.2 MHz      */
> -                	        	/*  3.5795 MHz crystal (fxtl):     */
> -#define PPCR_F57_3MHz	PPCR_Fx16	/*   Freq. (fcpu) =  57.3 MHz      */
> -#define PPCR_F71_6MHz	PPCR_Fx20	/*   Freq. (fcpu) =  71.6 MHz      */
> -#define PPCR_F85_9MHz	PPCR_Fx24	/*   Freq. (fcpu) =  85.9 MHz      */
> -#define PPCR_F100_2MHz	PPCR_Fx28	/*   Freq. (fcpu) = 100.2 MHz      */
> -#define PPCR_F114_5MHz	PPCR_Fx32	/*   Freq. (fcpu) = 114.5 MHz      */
> -#define PPCR_F128_9MHz	PPCR_Fx36	/*   Freq. (fcpu) = 128.9 MHz      */
> -#define PPCR_F143_2MHz	PPCR_Fx40	/*   Freq. (fcpu) = 143.2 MHz      */
> -#define PPCR_F157_5MHz	PPCR_Fx44	/*   Freq. (fcpu) = 157.5 MHz      */
> -#define PPCR_F171_8MHz	PPCR_Fx48	/*   Freq. (fcpu) = 171.8 MHz      */
> -#define PPCR_F186_1MHz	PPCR_Fx52	/*   Freq. (fcpu) = 186.1 MHz      */
> -#define PPCR_F200_5MHz	PPCR_Fx56	/*   Freq. (fcpu) = 200.5 MHz      */
> -#define PPCR_F214_8MHz	PPCR_Fx60	/*   Freq. (fcpu) = 214.8 MHz      */
> -#define PPCR_F229_1MHz	PPCR_Fx64	/*   Freq. (fcpu) = 229.1 MHz      */
> -#define PPCR_F243_4MHz	PPCR_Fx68	/*   Freq. (fcpu) = 243.4 MHz      */
> -#define PPCR_F257_7MHz	PPCR_Fx72	/*   Freq. (fcpu) = 257.7 MHz      */
> -#define PPCR_F272_0MHz	PPCR_Fx76	/*   Freq. (fcpu) = 272.0 MHz      */
> -
> -#define POSR_OOK	0x00000001	/* RTC Oscillator (32.768 kHz) OK  */
> -
> -
> -/*
> - * Reset Controller (RC) control registers
> - *
> - * Registers
> - *    RSRR      	Reset Controller (RC) Software Reset Register
> - *              	(read/write).
> - *    RCSR      	Reset Controller (RC) Status Register (read/write).
> - */
> -
> -#define RSRR		__REG(0x90030000)  /* RC Software Reset Reg. */
> -#define RCSR		__REG(0x90030004)  /* RC Status Reg. */
> -
> -#define RSRR_SWR	0x00000001	/* SoftWare Reset (set only)       */
> -
> -#define RCSR_HWR	0x00000001	/* HardWare Reset                  */
> -#define RCSR_SWR	0x00000002	/* SoftWare Reset                  */
> -#define RCSR_WDR	0x00000004	/* Watch-Dog Reset                 */
> -#define RCSR_SMR	0x00000008	/* Sleep-Mode Reset                */
> -
> -
> -/*
> - * Test unit control registers
> - *
> - * Registers
> - *    TUCR      	Test Unit Control Register (read/write).
> - */
> -
> -#define TUCR		__REG(0x90030008)  /* Test Unit Control Reg. */
> -
> -#define TUCR_TIC	0x00000040	/* TIC mode                        */
> -#define TUCR_TTST	0x00000080	/* Trim TeST mode                  */
> -#define TUCR_RCRC	0x00000100	/* Richard's Cyclic Redundancy     */
> -                	        	/* Check                           */
> -#define TUCR_PMD	0x00000200	/* Power Management Disable        */
> -#define TUCR_MR 	0x00000400	/* Memory Request mode             */
> -#define TUCR_NoMB	(TUCR_MR*0)	/*  No Memory Bus request & grant  */
> -#define TUCR_MBGPIO	(TUCR_MR*1)	/*  Memory Bus request (MBREQ) &   */
> -                	        	/*  grant (MBGNT) on GPIO [22:21]  */
> -#define TUCR_CTB	Fld (3, 20)	/* Clock Test Bits                 */
> -#define TUCR_FDC	0x00800000	/* RTC Force Delete Count          */
> -#define TUCR_FMC	0x01000000	/* Force Michelle's Control mode   */
> -#define TUCR_TMC	0x02000000	/* RTC Trimmer Multiplexer Control */
> -#define TUCR_DPS	0x04000000	/* Disallow Pad Sleep              */
> -#define TUCR_TSEL	Fld (3, 29)	/* clock Test SELect on GPIO [27]  */
> -#define TUCR_32_768kHz	        	/*  32.768 kHz osc. on GPIO [27]   */ \
> -                	(0 << FShft (TUCR_TSEL))
> -#define TUCR_3_6864MHz	        	/*  3.6864 MHz osc. on GPIO [27]   */ \
> -                	(1 << FShft (TUCR_TSEL))
> -#define TUCR_VDD	        	/*  VDD ring osc./16 on GPIO [27]  */ \
> -                	(2 << FShft (TUCR_TSEL))
> -#define TUCR_96MHzPLL	        	/*  96 MHz PLL/4 on GPIO [27]      */ \
> -                	(3 << FShft (TUCR_TSEL))
> -#define TUCR_Clock	        	/*  internal (fcpu/2) & 32.768 kHz */ \
> -                	        	/*  Clocks on GPIO [26:27]         */ \
> -                	(4 << FShft (TUCR_TSEL))
> -#define TUCR_3_6864MHzA	        	/*  3.6864 MHz osc. on GPIO [27]   */ \
> -                	        	/*  (Alternative)                  */ \
> -                	(5 << FShft (TUCR_TSEL))
> -#define TUCR_MainPLL	        	/*  Main PLL/16 on GPIO [27]       */ \
> -                	(6 << FShft (TUCR_TSEL))
> -#define TUCR_VDDL	        	/*  VDDL ring osc./4 on GPIO [27]  */ \
> -                	(7 << FShft (TUCR_TSEL))
> -
> -
> -/*
> - * General-Purpose Input/Output (GPIO) control registers
> - *
> - * Registers
> - *    GPLR      	General-Purpose Input/Output (GPIO) Pin Level
> - *              	Register (read).
> - *    GPDR      	General-Purpose Input/Output (GPIO) Pin Direction
> - *              	Register (read/write).
> - *    GPSR      	General-Purpose Input/Output (GPIO) Pin output Set
> - *              	Register (write).
> - *    GPCR      	General-Purpose Input/Output (GPIO) Pin output Clear
> - *              	Register (write).
> - *    GRER      	General-Purpose Input/Output (GPIO) Rising-Edge
> - *              	detect Register (read/write).
> - *    GFER      	General-Purpose Input/Output (GPIO) Falling-Edge
> - *              	detect Register (read/write).
> - *    GEDR      	General-Purpose Input/Output (GPIO) Edge Detect
> - *              	status Register (read/write).
> - *    GAFR      	General-Purpose Input/Output (GPIO) Alternate
> - *              	Function Register (read/write).
> - *
> - * Clock
> - *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
> - */
> -
> -#define GPLR		__REG(0x90040000)  /* GPIO Pin Level Reg.             */
> -#define GPDR		__REG(0x90040004)  /* GPIO Pin Direction Reg.         */
> -#define GPSR		__REG(0x90040008)  /* GPIO Pin output Set Reg.        */
> -#define GPCR		__REG(0x9004000C)  /* GPIO Pin output Clear Reg.      */
> -#define GRER		__REG(0x90040010)  /* GPIO Rising-Edge detect Reg.    */
> -#define GFER		__REG(0x90040014)  /* GPIO Falling-Edge detect Reg.   */
> -#define GEDR		__REG(0x90040018)  /* GPIO Edge Detect status Reg.    */
> -#define GAFR		__REG(0x9004001C)  /* GPIO Alternate Function Reg.    */
> -
> -#define GPIO_MIN	(0)
> -#define GPIO_MAX	(27)
> -
> -#define GPIO_GPIO(Nb)	        	/* GPIO [0..27]                    */ \
> -                	(0x00000001 << (Nb))
> -#define GPIO_GPIO0	GPIO_GPIO (0)	/* GPIO  [0]                       */
> -#define GPIO_GPIO1	GPIO_GPIO (1)	/* GPIO  [1]                       */
> -#define GPIO_GPIO2	GPIO_GPIO (2)	/* GPIO  [2]                       */
> -#define GPIO_GPIO3	GPIO_GPIO (3)	/* GPIO  [3]                       */
> -#define GPIO_GPIO4	GPIO_GPIO (4)	/* GPIO  [4]                       */
> -#define GPIO_GPIO5	GPIO_GPIO (5)	/* GPIO  [5]                       */
> -#define GPIO_GPIO6	GPIO_GPIO (6)	/* GPIO  [6]                       */
> -#define GPIO_GPIO7	GPIO_GPIO (7)	/* GPIO  [7]                       */
> -#define GPIO_GPIO8	GPIO_GPIO (8)	/* GPIO  [8]                       */
> -#define GPIO_GPIO9	GPIO_GPIO (9)	/* GPIO  [9]                       */
> -#define GPIO_GPIO10	GPIO_GPIO (10)	/* GPIO [10]                       */
> -#define GPIO_GPIO11	GPIO_GPIO (11)	/* GPIO [11]                       */
> -#define GPIO_GPIO12	GPIO_GPIO (12)	/* GPIO [12]                       */
> -#define GPIO_GPIO13	GPIO_GPIO (13)	/* GPIO [13]                       */
> -#define GPIO_GPIO14	GPIO_GPIO (14)	/* GPIO [14]                       */
> -#define GPIO_GPIO15	GPIO_GPIO (15)	/* GPIO [15]                       */
> -#define GPIO_GPIO16	GPIO_GPIO (16)	/* GPIO [16]                       */
> -#define GPIO_GPIO17	GPIO_GPIO (17)	/* GPIO [17]                       */
> -#define GPIO_GPIO18	GPIO_GPIO (18)	/* GPIO [18]                       */
> -#define GPIO_GPIO19	GPIO_GPIO (19)	/* GPIO [19]                       */
> -#define GPIO_GPIO20	GPIO_GPIO (20)	/* GPIO [20]                       */
> -#define GPIO_GPIO21	GPIO_GPIO (21)	/* GPIO [21]                       */
> -#define GPIO_GPIO22	GPIO_GPIO (22)	/* GPIO [22]                       */
> -#define GPIO_GPIO23	GPIO_GPIO (23)	/* GPIO [23]                       */
> -#define GPIO_GPIO24	GPIO_GPIO (24)	/* GPIO [24]                       */
> -#define GPIO_GPIO25	GPIO_GPIO (25)	/* GPIO [25]                       */
> -#define GPIO_GPIO26	GPIO_GPIO (26)	/* GPIO [26]                       */
> -#define GPIO_GPIO27	GPIO_GPIO (27)	/* GPIO [27]                       */
> -
> -#define GPIO_LDD(Nb)	        	/* LCD Data [8..15] (O)            */ \
> -                	GPIO_GPIO ((Nb) - 6)
> -#define GPIO_LDD8	GPIO_LDD (8)	/* LCD Data  [8] (O)               */
> -#define GPIO_LDD9	GPIO_LDD (9)	/* LCD Data  [9] (O)               */
> -#define GPIO_LDD10	GPIO_LDD (10)	/* LCD Data [10] (O)               */
> -#define GPIO_LDD11	GPIO_LDD (11)	/* LCD Data [11] (O)               */
> -#define GPIO_LDD12	GPIO_LDD (12)	/* LCD Data [12] (O)               */
> -#define GPIO_LDD13	GPIO_LDD (13)	/* LCD Data [13] (O)               */
> -#define GPIO_LDD14	GPIO_LDD (14)	/* LCD Data [14] (O)               */
> -#define GPIO_LDD15	GPIO_LDD (15)	/* LCD Data [15] (O)               */
> -                	        	/* ser. port 4:                    */
> -#define GPIO_SSP_TXD	GPIO_GPIO (10)	/*  SSP Transmit Data (O)          */
> -#define GPIO_SSP_RXD	GPIO_GPIO (11)	/*  SSP Receive Data (I)           */
> -#define GPIO_SSP_SCLK	GPIO_GPIO (12)	/*  SSP Sample CLocK (O)           */
> -#define GPIO_SSP_SFRM	GPIO_GPIO (13)	/*  SSP Sample FRaMe (O)           */
> -                	        	/* ser. port 1:                    */
> -#define GPIO_UART_TXD	GPIO_GPIO (14)	/*  UART Transmit Data (O)         */
> -#define GPIO_UART_RXD	GPIO_GPIO (15)	/*  UART Receive Data (I)          */
> -#define GPIO_SDLC_SCLK	GPIO_GPIO (16)	/*  SDLC Sample CLocK (I/O)        */
> -#define GPIO_SDLC_AAF	GPIO_GPIO (17)	/*  SDLC Abort After Frame (O)     */
> -#define GPIO_UART_SCLK1	GPIO_GPIO (18)	/*  UART Sample CLocK 1 (I)        */
> -                	        	/* ser. port 4:                    */
> -#define GPIO_SSP_CLK	GPIO_GPIO (19)	/*  SSP external CLocK (I)         */
> -                	        	/* ser. port 3:                    */
> -#define GPIO_UART_SCLK3	GPIO_GPIO (20)	/*  UART Sample CLocK 3 (I)        */
> -                	        	/* ser. port 4:                    */
> -#define GPIO_MCP_CLK	GPIO_GPIO (21)	/*  MCP CLocK (I)                  */
> -                	        	/* test controller:                */
> -#define GPIO_TIC_ACK	GPIO_GPIO (21)	/*  TIC ACKnowledge (O)            */
> -#define GPIO_MBGNT	GPIO_GPIO (21)	/*  Memory Bus GraNT (O)           */
> -#define GPIO_TREQA	GPIO_GPIO (22)	/*  TIC REQuest A (I)              */
> -#define GPIO_MBREQ	GPIO_GPIO (22)	/*  Memory Bus REQuest (I)         */
> -#define GPIO_TREQB	GPIO_GPIO (23)	/*  TIC REQuest B (I)              */
> -#define GPIO_1Hz	GPIO_GPIO (25)	/* 1 Hz clock (O)                  */
> -#define GPIO_RCLK	GPIO_GPIO (26)	/* internal (R) CLocK (O, fcpu/2)  */
> -#define GPIO_32_768kHz	GPIO_GPIO (27)	/* 32.768 kHz clock (O, RTC)       */
> -
> -#define GPDR_In 	0       	/* Input                           */
> -#define GPDR_Out	1       	/* Output                          */
> -
> -
> -/*
> - * Interrupt Controller (IC) control registers
> - *
> - * Registers
> - *    ICIP      	Interrupt Controller (IC) Interrupt ReQuest (IRQ)
> - *              	Pending register (read).
> - *    ICMR      	Interrupt Controller (IC) Mask Register (read/write).
> - *    ICLR      	Interrupt Controller (IC) Level Register (read/write).
> - *    ICCR      	Interrupt Controller (IC) Control Register
> - *              	(read/write).
> - *              	[The ICCR register is only implemented in versions 2.0
> - *              	(rev. = 8) and higher of the StrongARM SA-1100.]
> - *    ICFP      	Interrupt Controller (IC) Fast Interrupt reQuest
> - *              	(FIQ) Pending register (read).
> - *    ICPR      	Interrupt Controller (IC) Pending Register (read).
> - *              	[The ICPR register is active low (inverted) in
> - *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
> - *              	StrongARM SA-1100, it is active high (non-inverted) in
> - *              	versions 2.0 (rev. = 8) and higher.]
> - */
> -
> -#define ICIP		__REG(0x90050000)  /* IC IRQ Pending reg.             */
> -#define ICMR		__REG(0x90050004)  /* IC Mask Reg.                    */
> -#define ICLR		__REG(0x90050008)  /* IC Level Reg.                   */
> -#define ICCR		__REG(0x9005000C)  /* IC Control Reg.                 */
> -#define ICFP		__REG(0x90050010)  /* IC FIQ Pending reg.             */
> -#define ICPR		__REG(0x90050020)  /* IC Pending Reg.                 */
> -
> -#define IC_GPIO(Nb)	        	/* GPIO [0..10]                    */ \
> -                	(0x00000001 << (Nb))
> -#define IC_GPIO0	IC_GPIO (0)	/* GPIO  [0]                       */
> -#define IC_GPIO1	IC_GPIO (1)	/* GPIO  [1]                       */
> -#define IC_GPIO2	IC_GPIO (2)	/* GPIO  [2]                       */
> -#define IC_GPIO3	IC_GPIO (3)	/* GPIO  [3]                       */
> -#define IC_GPIO4	IC_GPIO (4)	/* GPIO  [4]                       */
> -#define IC_GPIO5	IC_GPIO (5)	/* GPIO  [5]                       */
> -#define IC_GPIO6	IC_GPIO (6)	/* GPIO  [6]                       */
> -#define IC_GPIO7	IC_GPIO (7)	/* GPIO  [7]                       */
> -#define IC_GPIO8	IC_GPIO (8)	/* GPIO  [8]                       */
> -#define IC_GPIO9	IC_GPIO (9)	/* GPIO  [9]                       */
> -#define IC_GPIO10	IC_GPIO (10)	/* GPIO [10]                       */
> -#define IC_GPIO11_27	0x00000800	/* GPIO [11:27] (ORed)             */
> -#define IC_LCD  	0x00001000	/* LCD controller                  */
> -#define IC_Ser0UDC	0x00002000	/* Ser. port 0 UDC                 */
> -#define IC_Ser1SDLC	0x00004000	/* Ser. port 1 SDLC                */
> -#define IC_Ser1UART	0x00008000	/* Ser. port 1 UART                */
> -#define IC_Ser2ICP	0x00010000	/* Ser. port 2 ICP                 */
> -#define IC_Ser3UART	0x00020000	/* Ser. port 3 UART                */
> -#define IC_Ser4MCP	0x00040000	/* Ser. port 4 MCP                 */
> -#define IC_Ser4SSP	0x00080000	/* Ser. port 4 SSP                 */
> -#define IC_DMA(Nb)	        	/* DMA controller channel [0..5]   */ \
> -                	(0x00100000 << (Nb))
> -#define IC_DMA0 	IC_DMA (0)	/* DMA controller channel 0        */
> -#define IC_DMA1 	IC_DMA (1)	/* DMA controller channel 1        */
> -#define IC_DMA2 	IC_DMA (2)	/* DMA controller channel 2        */
> -#define IC_DMA3 	IC_DMA (3)	/* DMA controller channel 3        */
> -#define IC_DMA4 	IC_DMA (4)	/* DMA controller channel 4        */
> -#define IC_DMA5 	IC_DMA (5)	/* DMA controller channel 5        */
> -#define IC_OST(Nb)	        	/* OS Timer match [0..3]           */ \
> -                	(0x04000000 << (Nb))
> -#define IC_OST0 	IC_OST (0)	/* OS Timer match 0                */
> -#define IC_OST1 	IC_OST (1)	/* OS Timer match 1                */
> -#define IC_OST2 	IC_OST (2)	/* OS Timer match 2                */
> -#define IC_OST3 	IC_OST (3)	/* OS Timer match 3                */
> -#define IC_RTC1Hz	0x40000000	/* RTC 1 Hz clock                  */
> -#define IC_RTCAlrm	0x80000000	/* RTC Alarm                       */
> -
> -#define ICLR_IRQ	0       	/* Interrupt ReQuest               */
> -#define ICLR_FIQ	1       	/* Fast Interrupt reQuest          */
> -
> -#define ICCR_DIM	0x00000001	/* Disable Idle-mode interrupt     */
> -                	        	/* Mask                            */
> -#define ICCR_IdleAllInt	(ICCR_DIM*0)	/*  Idle-mode All Interrupt enable */
> -                	        	/*  (ICMR ignored)                 */
> -#define ICCR_IdleMskInt	(ICCR_DIM*1)	/*  Idle-mode non-Masked Interrupt */
> -                	        	/*  enable (ICMR used)             */
> -
> -
> -/*
> - * Peripheral Pin Controller (PPC) control registers
> - *
> - * Registers
> - *    PPDR      	Peripheral Pin Controller (PPC) Pin Direction
> - *              	Register (read/write).
> - *    PPSR      	Peripheral Pin Controller (PPC) Pin State Register
> - *              	(read/write).
> - *    PPAR      	Peripheral Pin Controller (PPC) Pin Assignment
> - *              	Register (read/write).
> - *    PSDR      	Peripheral Pin Controller (PPC) Sleep-mode pin
> - *              	Direction Register (read/write).
> - *    PPFR      	Peripheral Pin Controller (PPC) Pin Flag Register
> - *              	(read).
> - */
> -
> -#define PPDR		__REG(0x90060000)  /* PPC Pin Direction Reg.          */
> -#define PPSR		__REG(0x90060004)  /* PPC Pin State Reg.              */
> -#define PPAR		__REG(0x90060008)  /* PPC Pin Assignment Reg.         */
> -#define PSDR		__REG(0x9006000C)  /* PPC Sleep-mode pin Direction Reg. */
> -#define PPFR		__REG(0x90060010)  /* PPC Pin Flag Reg.               */
> -
> -#define PPC_LDD(Nb)	        	/* LCD Data [0..7]                 */ \
> -                	(0x00000001 << (Nb))
> -#define PPC_LDD0	PPC_LDD (0)	/* LCD Data [0]                    */
> -#define PPC_LDD1	PPC_LDD (1)	/* LCD Data [1]                    */
> -#define PPC_LDD2	PPC_LDD (2)	/* LCD Data [2]                    */
> -#define PPC_LDD3	PPC_LDD (3)	/* LCD Data [3]                    */
> -#define PPC_LDD4	PPC_LDD (4)	/* LCD Data [4]                    */
> -#define PPC_LDD5	PPC_LDD (5)	/* LCD Data [5]                    */
> -#define PPC_LDD6	PPC_LDD (6)	/* LCD Data [6]                    */
> -#define PPC_LDD7	PPC_LDD (7)	/* LCD Data [7]                    */
> -#define PPC_L_PCLK	0x00000100	/* LCD Pixel CLocK                 */
> -#define PPC_L_LCLK	0x00000200	/* LCD Line CLocK                  */
> -#define PPC_L_FCLK	0x00000400	/* LCD Frame CLocK                 */
> -#define PPC_L_BIAS	0x00000800	/* LCD AC BIAS                     */
> -                	        	/* ser. port 1:                    */
> -#define PPC_TXD1	0x00001000	/*  SDLC/UART Transmit Data 1      */
> -#define PPC_RXD1	0x00002000	/*  SDLC/UART Receive Data 1       */
> -                	        	/* ser. port 2:                    */
> -#define PPC_TXD2	0x00004000	/*  IPC Transmit Data 2            */
> -#define PPC_RXD2	0x00008000	/*  IPC Receive Data 2             */
> -                	        	/* ser. port 3:                    */
> -#define PPC_TXD3	0x00010000	/*  UART Transmit Data 3           */
> -#define PPC_RXD3	0x00020000	/*  UART Receive Data 3            */
> -                	        	/* ser. port 4:                    */
> -#define PPC_TXD4	0x00040000	/*  MCP/SSP Transmit Data 4        */
> -#define PPC_RXD4	0x00080000	/*  MCP/SSP Receive Data 4         */
> -#define PPC_SCLK	0x00100000	/*  MCP/SSP Sample CLocK           */
> -#define PPC_SFRM	0x00200000	/*  MCP/SSP Sample FRaMe           */
> -
> -#define PPDR_In 	0       	/* Input                           */
> -#define PPDR_Out	1       	/* Output                          */
> -
> -                	        	/* ser. port 1:                    */
> -#define PPAR_UPR	0x00001000	/*  UART Pin Reassignment          */
> -#define PPAR_UARTTR	(PPAR_UPR*0)	/*   UART on TXD_1 & RXD_1         */
> -#define PPAR_UARTGPIO	(PPAR_UPR*1)	/*   UART on GPIO [14:15]          */
> -                	        	/* ser. port 4:                    */
> -#define PPAR_SPR	0x00040000	/*  SSP Pin Reassignment           */
> -#define PPAR_SSPTRSS	(PPAR_SPR*0)	/*   SSP on TXD_C, RXD_C, SCLK_C,  */
> -                	        	/*   & SFRM_C                      */
> -#define PPAR_SSPGPIO	(PPAR_SPR*1)	/*   SSP on GPIO [10:13]           */
> -
> -#define PSDR_OutL	0       	/* Output Low in sleep mode        */
> -#define PSDR_Flt	1       	/* Floating (input) in sleep mode  */
> -
> -#define PPFR_LCD	0x00000001	/* LCD controller                  */
> -#define PPFR_SP1TX	0x00001000	/* Ser. Port 1 SDLC/UART Transmit  */
> -#define PPFR_SP1RX	0x00002000	/* Ser. Port 1 SDLC/UART Receive   */
> -#define PPFR_SP2TX	0x00004000	/* Ser. Port 2 ICP Transmit        */
> -#define PPFR_SP2RX	0x00008000	/* Ser. Port 2 ICP Receive         */
> -#define PPFR_SP3TX	0x00010000	/* Ser. Port 3 UART Transmit       */
> -#define PPFR_SP3RX	0x00020000	/* Ser. Port 3 UART Receive        */
> -#define PPFR_SP4	0x00040000	/* Ser. Port 4 MCP/SSP             */
> -#define PPFR_PerEn	0       	/* Peripheral Enabled              */
> -#define PPFR_PPCEn	1       	/* PPC Enabled                     */
> -
> -
> -/*
> - * Dynamic Random-Access Memory (DRAM) control registers
> - *
> - * Registers
> - *    MDCNFG    	Memory system: Dynamic Random-Access Memory (DRAM)
> - *              	CoNFiGuration register (read/write).
> - *    MDCAS0    	Memory system: Dynamic Random-Access Memory (DRAM)
> - *              	Column Address Strobe (CAS) shift register 0
> - *              	(read/write).
> - *    MDCAS1    	Memory system: Dynamic Random-Access Memory (DRAM)
> - *              	Column Address Strobe (CAS) shift register 1
> - *              	(read/write).
> - *    MDCAS2    	Memory system: Dynamic Random-Access Memory (DRAM)
> - *              	Column Address Strobe (CAS) shift register 2
> - *              	(read/write).
> - *
> - * Clocks
> - *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
> - *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
> - *    fcas, Tcas	Frequency, period of the DRAM CAS shift registers.
> - */
> -
> -#define MDCNFG		__REG(0xA0000000)  /*  DRAM CoNFiGuration reg. */
> -#define MDCAS0		__REG(0xA0000004)  /* DRAM CAS shift reg. 0 */
> -#define MDCAS1		__REG(0xA0000008)  /* DRAM CAS shift reg. 1 */
> -#define MDCAS2		__REG(0xA000000c)  /* DRAM CAS shift reg. 2 */
> -
> -/* SA1100 MDCNFG values */
> -#define MDCNFG_DE(Nb)	        	/* DRAM Enable bank [0..3]         */ \
> -                	(0x00000001 << (Nb))
> -#define MDCNFG_DE0	MDCNFG_DE (0)	/* DRAM Enable bank 0              */
> -#define MDCNFG_DE1	MDCNFG_DE (1)	/* DRAM Enable bank 1              */
> -#define MDCNFG_DE2	MDCNFG_DE (2)	/* DRAM Enable bank 2              */
> -#define MDCNFG_DE3	MDCNFG_DE (3)	/* DRAM Enable bank 3              */
> -#define MDCNFG_DRAC	Fld (2, 4)	/* DRAM Row Address Count - 9      */
> -#define MDCNFG_RowAdd(Add)      	/*  Row Address count [9..12]      */ \
> -                	(((Add) - 9) << FShft (MDCNFG_DRAC))
> -#define MDCNFG_CDB2	0x00000040	/* shift reg. Clock Divide By 2    */
> -                	        	/* (fcas = fcpu/2)                 */
> -#define MDCNFG_TRP	Fld (4, 7)	/* Time RAS Pre-charge - 1 [Tmem]  */
> -#define MDCNFG_PrChrg(Tcpu)     	/*  Pre-Charge time [2..32 Tcpu]   */ \
> -                	(((Tcpu) - 2)/2 << FShft (MDCNFG_TRP))
> -#define MDCNFG_CeilPrChrg(Tcpu) 	/*  Ceil. of PrChrg [2..32 Tcpu]   */ \
> -                	(((Tcpu) - 1)/2 << FShft (MDCNFG_TRP))
> -#define MDCNFG_TRASR	Fld (4, 11)	/* Time RAS Refresh - 1 [Tmem]     */
> -#define MDCNFG_Ref(Tcpu)        	/*  Refresh time [2..32 Tcpu]      */ \
> -                	(((Tcpu) - 2)/2 << FShft (MDCNFG_TRASR))
> -#define MDCNFG_CeilRef(Tcpu)    	/*  Ceil. of Ref [2..32 Tcpu]      */ \
> -                	(((Tcpu) - 1)/2 << FShft (MDCNFG_TRASR))
> -#define MDCNFG_TDL	Fld (2, 15)	/* Time Data Latch [Tcpu]          */
> -#define MDCNFG_DataLtch(Tcpu)   	/*  Data Latch delay [0..3 Tcpu]   */ \
> -                	((Tcpu) << FShft (MDCNFG_TDL))
> -#define MDCNFG_DRI	Fld (15, 17)	/* min. DRAM Refresh Interval/4    */
> -                	        	/* [Tmem]                          */
> -#define MDCNFG_RefInt(Tcpu)     	/*  min. Refresh Interval          */ \
> -                	        	/*  [0..262136 Tcpu]               */ \
> -                	((Tcpu)/8 << FShft (MDCNFG_DRI))
> -
> -/* SA1110 MDCNFG values */
> -#define MDCNFG_SA1110_DE0	0x00000001	/* DRAM Enable bank 0        */
> -#define MDCNFG_SA1110_DE1	0x00000002 	/* DRAM Enable bank 1        */
> -#define MDCNFG_SA1110_DTIM0	0x00000004	/* DRAM timing type 0/1      */
> -#define MDCNFG_SA1110_DWID0	0x00000008	/* DRAM bus width 0/1        */
> -#define MDCNFG_SA1110_DRAC0	Fld(3, 4)	/* DRAM row addr bit count   */
> -                	        		/* bank 0/1                  */
> -#define MDCNFG_SA1110_CDB20	0x00000080	/* Mem Clock divide by 2 0/1 */
> -#define MDCNFG_SA1110_TRP0	Fld(3, 8)	/* RAS precharge 0/1         */
> -#define MDCNFG_SA1110_TDL0	Fld(2, 12)	/* Data input latch after CAS*/
> -                	        		/* deassertion 0/1           */
> -#define MDCNFG_SA1110_TWR0	Fld(2, 14)	/* SDRAM write recovery 0/1  */
> -#define MDCNFG_SA1110_DE2	0x00010000	/* DRAM Enable bank 0        */
> -#define MDCNFG_SA1110_DE3	0x00020000 	/* DRAM Enable bank 1        */
> -#define MDCNFG_SA1110_DTIM2	0x00040000	/* DRAM timing type 0/1      */
> -#define MDCNFG_SA1110_DWID2	0x00080000	/* DRAM bus width 0/1        */
> -#define MDCNFG_SA1110_DRAC2	Fld(3, 20)	/* DRAM row addr bit count   */
> -                	        		/* bank 0/1                  */
> -#define MDCNFG_SA1110_CDB22	0x00800000	/* Mem Clock divide by 2 0/1 */
> -#define MDCNFG_SA1110_TRP2	Fld(3, 24)	/* RAS precharge 0/1         */
> -#define MDCNFG_SA1110_TDL2	Fld(2, 28)	/* Data input latch after CAS*/
> -                	        		/* deassertion 0/1           */
> -#define MDCNFG_SA1110_TWR2	Fld(2, 30)	/* SDRAM write recovery 0/1  */
> -
> -
> -/*
> - * Static memory control registers
> - *
> - * Registers
> - *    MSC0      	Memory system: Static memory Control register 0
> - *              	(read/write).
> - *    MSC1      	Memory system: Static memory Control register 1
> - *              	(read/write).
> - *
> - * Clocks
> - *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
> - *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
> - */
> -
> -#define MSC0		__REG(0xa0000010)  /* Static memory Control reg. 0 */
> -#define MSC1		__REG(0xa0000014)  /* Static memory Control reg. 1 */
> -#define MSC2		__REG(0xa000002c)  /* Static memory Control reg. 2, not contiguous   */
> -
> -#define MSC_Bnk(Nb)	        	/* static memory Bank [0..3]       */ \
> -                	Fld (16, ((Nb) Modulo 2)*16)
> -#define MSC0_Bnk0	MSC_Bnk (0)	/* static memory Bank 0            */
> -#define MSC0_Bnk1	MSC_Bnk (1)	/* static memory Bank 1            */
> -#define MSC1_Bnk2	MSC_Bnk (2)	/* static memory Bank 2            */
> -#define MSC1_Bnk3	MSC_Bnk (3)	/* static memory Bank 3            */
> -
> -#define MSC_RT  	Fld (2, 0)	/* ROM/static memory Type          */
> -#define MSC_NonBrst	        	/*  Non-Burst static memory        */ \
> -                	(0 << FShft (MSC_RT))
> -#define MSC_SRAM	        	/*  32-bit byte-writable SRAM      */ \
> -                	(1 << FShft (MSC_RT))
> -#define MSC_Brst4	        	/*  Burst-of-4 static memory       */ \
> -                	(2 << FShft (MSC_RT))
> -#define MSC_Brst8	        	/*  Burst-of-8 static memory       */ \
> -                	(3 << FShft (MSC_RT))
> -#define MSC_RBW 	0x0004  	/* ROM/static memory Bus Width     */
> -#define MSC_32BitStMem	(MSC_RBW*0)	/*  32-Bit Static Memory           */
> -#define MSC_16BitStMem	(MSC_RBW*1)	/*  16-Bit Static Memory           */
> -#define MSC_RDF 	Fld (5, 3)	/* ROM/static memory read Delay    */
> -                	        	/* First access - 1(.5) [Tmem]     */
> -#define MSC_1stRdAcc(Tcpu)      	/*  1st Read Access time (burst    */ \
> -                	        	/*  static memory) [3..65 Tcpu]    */ \
> -                	((((Tcpu) - 3)/2) << FShft (MSC_RDF))
> -#define MSC_Ceil1stRdAcc(Tcpu)  	/*  Ceil. of 1stRdAcc [3..65 Tcpu] */ \
> -                	((((Tcpu) - 2)/2) << FShft (MSC_RDF))
> -#define MSC_RdAcc(Tcpu)	        	/*  Read Access time (non-burst    */ \
> -                	        	/*  static memory) [2..64 Tcpu]    */ \
> -                	((((Tcpu) - 2)/2) << FShft (MSC_RDF))
> -#define MSC_CeilRdAcc(Tcpu)     	/*  Ceil. of RdAcc [2..64 Tcpu]    */ \
> -                	((((Tcpu) - 1)/2) << FShft (MSC_RDF))
> -#define MSC_RDN 	Fld (5, 8)	/* ROM/static memory read Delay    */
> -                	        	/* Next access - 1 [Tmem]          */
> -#define MSC_NxtRdAcc(Tcpu)      	/*  Next Read Access time (burst   */ \
> -                	        	/*  static memory) [2..64 Tcpu]    */ \
> -                	((((Tcpu) - 2)/2) << FShft (MSC_RDN))
> -#define MSC_CeilNxtRdAcc(Tcpu)  	/*  Ceil. of NxtRdAcc [2..64 Tcpu] */ \
> -                	((((Tcpu) - 1)/2) << FShft (MSC_RDN))
> -#define MSC_WrAcc(Tcpu)	        	/*  Write Access time (non-burst   */ \
> -                	        	/*  static memory) [2..64 Tcpu]    */ \
> -                	((((Tcpu) - 2)/2) << FShft (MSC_RDN))
> -#define MSC_CeilWrAcc(Tcpu)     	/*  Ceil. of WrAcc [2..64 Tcpu]    */ \
> -                	((((Tcpu) - 1)/2) << FShft (MSC_RDN))
> -#define MSC_RRR 	Fld (3, 13)	/* ROM/static memory RecoveRy      */
> -                	        	/* time/2 [Tmem]                   */
> -#define MSC_Rec(Tcpu)	        	/*  Recovery time [0..28 Tcpu]     */ \
> -                	(((Tcpu)/4) << FShft (MSC_RRR))
> -#define MSC_CeilRec(Tcpu)       	/*  Ceil. of Rec [0..28 Tcpu]      */ \
> -                	((((Tcpu) + 3)/4) << FShft (MSC_RRR))
> -
> -
> -/*
> - * Personal Computer Memory Card International Association (PCMCIA) control
> - * register
> - *
> - * Register
> - *    MECR      	Memory system: Expansion memory bus (PCMCIA)
> - *              	Configuration Register (read/write).
> - *
> - * Clocks
> - *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
> - *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
> - *    fbclk, Tbclk	Frequency, period of the PCMCIA clock (BCLK).
> - */
> -
> -                	        	/* Memory system:                  */
> -#define MECR		__REG(0xA0000018)  /*  Expansion memory bus (PCMCIA) Configuration Reg.             */
> -
> -#define MECR_PCMCIA(Nb)	        	/* PCMCIA [0..1]                   */ \
> -                	Fld (15, (Nb)*16)
> -#define MECR_PCMCIA0	MECR_PCMCIA (0)	/* PCMCIA 0                        */
> -#define MECR_PCMCIA1	MECR_PCMCIA (1)	/* PCMCIA 1                        */
> -
> -#define MECR_BSIO	Fld (5, 0)	/* BCLK Select I/O - 1 [Tmem]      */
> -#define MECR_IOClk(Tcpu)        	/*  I/O Clock [2..64 Tcpu]         */ \
> -                	((((Tcpu) - 2)/2) << FShft (MECR_BSIO))
> -#define MECR_CeilIOClk(Tcpu)    	/*  Ceil. of IOClk [2..64 Tcpu]    */ \
> -                	((((Tcpu) - 1)/2) << FShft (MECR_BSIO))
> -#define MECR_BSA	Fld (5, 5)	/* BCLK Select Attribute - 1       */
> -                	        	/* [Tmem]                          */
> -#define MECR_AttrClk(Tcpu)      	/*  Attribute Clock [2..64 Tcpu]   */ \
> -                	((((Tcpu) - 2)/2) << FShft (MECR_BSA))
> -#define MECR_CeilAttrClk(Tcpu)  	/*  Ceil. of AttrClk [2..64 Tcpu]  */ \
> -                	((((Tcpu) - 1)/2) << FShft (MECR_BSA))
> -#define MECR_BSM	Fld (5, 10)	/* BCLK Select Memory - 1 [Tmem]   */
> -#define MECR_MemClk(Tcpu)       	/*  Memory Clock [2..64 Tcpu]      */ \
> -                	((((Tcpu) - 2)/2) << FShft (MECR_BSM))
> -#define MECR_CeilMemClk(Tcpu)   	/*  Ceil. of MemClk [2..64 Tcpu]   */ \
> -                	((((Tcpu) - 1)/2) << FShft (MECR_BSM))
> -
> -/*
> - * On SA1110 only
> - */
> -
> -#define MDREFR		__REG(0xA000001C)
> -
> -#define MDREFR_TRASR		Fld (4, 0)
> -#define MDREFR_DRI		Fld (12, 4)
> -#define MDREFR_E0PIN		(1 << 16)
> -#define MDREFR_K0RUN		(1 << 17)
> -#define MDREFR_K0DB2		(1 << 18)
> -#define MDREFR_E1PIN		(1 << 20)
> -#define MDREFR_K1RUN		(1 << 21)
> -#define MDREFR_K1DB2		(1 << 22)
> -#define MDREFR_K2RUN		(1 << 25)
> -#define MDREFR_K2DB2		(1 << 26)
> -#define MDREFR_EAPD		(1 << 28)
> -#define MDREFR_KAPD		(1 << 29)
> -#define MDREFR_SLFRSH		(1 << 31)
> -
> -
> -/*
> - * Direct Memory Access (DMA) control registers
> - */
> -#define DMA_SIZE	(6 * 0x20)
> -#define DMA_PHYS	0xb0000000
> -
> -
> -/*
> - * Liquid Crystal Display (LCD) control registers
> - *
> - * Registers
> - *    LCCR0     	Liquid Crystal Display (LCD) Control Register 0
> - *              	(read/write).
> - *              	[Bits LDM, BAM, and ERM are only implemented in
> - *              	versions 2.0 (rev. = 8) and higher of the StrongARM
> - *              	SA-1100.]
> - *    LCSR      	Liquid Crystal Display (LCD) Status Register
> - *              	(read/write).
> - *              	[Bit LDD can be only read in versions 1.0 (rev. = 1)
> - *              	and 1.1 (rev. = 2) of the StrongARM SA-1100, it can be
> - *              	read and written (cleared) in versions 2.0 (rev. = 8)
> - *              	and higher.]
> - *    DBAR1     	Liquid Crystal Display (LCD) Direct Memory Access
> - *              	(DMA) Base Address Register channel 1 (read/write).
> - *    DCAR1     	Liquid Crystal Display (LCD) Direct Memory Access
> - *              	(DMA) Current Address Register channel 1 (read).
> - *    DBAR2     	Liquid Crystal Display (LCD) Direct Memory Access
> - *              	(DMA) Base Address Register channel 2 (read/write).
> - *    DCAR2     	Liquid Crystal Display (LCD) Direct Memory Access
> - *              	(DMA) Current Address Register channel 2 (read).
> - *    LCCR1     	Liquid Crystal Display (LCD) Control Register 1
> - *              	(read/write).
> - *              	[The LCCR1 register can be only written in
> - *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
> - *              	StrongARM SA-1100, it can be written and read in
> - *              	versions 2.0 (rev. = 8) and higher.]
> - *    LCCR2     	Liquid Crystal Display (LCD) Control Register 2
> - *              	(read/write).
> - *              	[The LCCR1 register can be only written in
> - *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
> - *              	StrongARM SA-1100, it can be written and read in
> - *              	versions 2.0 (rev. = 8) and higher.]
> - *    LCCR3     	Liquid Crystal Display (LCD) Control Register 3
> - *              	(read/write).
> - *              	[The LCCR1 register can be only written in
> - *              	versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
> - *              	StrongARM SA-1100, it can be written and read in
> - *              	versions 2.0 (rev. = 8) and higher. Bit PCP is only
> - *              	implemented in versions 2.0 (rev. = 8) and higher of
> - *              	the StrongARM SA-1100.]
> - *
> - * Clocks
> - *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
> - *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
> - *    fpix, Tpix	Frequency, period of the pixel clock.
> - *    fln, Tln  	Frequency, period of the line clock.
> - *    fac, Tac  	Frequency, period of the AC bias clock.
> - */
> -
> -#define LCD_PEntrySp	2       	/* LCD Palette Entry Space [byte]  */
> -#define LCD_4BitPSp	        	/* LCD 4-Bit pixel Palette Space   */ \
> -                	        	/* [byte]                          */ \
> -                	(16*LCD_PEntrySp)
> -#define LCD_8BitPSp	        	/* LCD 8-Bit pixel Palette Space   */ \
> -                	        	/* [byte]                          */ \
> -                	(256*LCD_PEntrySp)
> -#define LCD_12_16BitPSp	        	/* LCD 12/16-Bit pixel             */ \
> -                	        	/* dummy-Palette Space [byte]      */ \
> -                	(16*LCD_PEntrySp)
> -
> -#define LCD_PGrey	Fld (4, 0)	/* LCD Palette entry Grey value    */
> -#define LCD_PBlue	Fld (4, 0)	/* LCD Palette entry Blue value    */
> -#define LCD_PGreen	Fld (4, 4)	/* LCD Palette entry Green value   */
> -#define LCD_PRed	Fld (4, 8)	/* LCD Palette entry Red value     */
> -#define LCD_PBS 	Fld (2, 12)	/* LCD Pixel Bit Size              */
> -#define LCD_4Bit	        	/*  LCD 4-Bit pixel mode           */ \
> -                	(0 << FShft (LCD_PBS))
> -#define LCD_8Bit	        	/*  LCD 8-Bit pixel mode           */ \
> -                	(1 << FShft (LCD_PBS))
> -#define LCD_12_16Bit	        	/*  LCD 12/16-Bit pixel mode       */ \
> -                	(2 << FShft (LCD_PBS))
> -
> -#define LCD_Int0_0	0x0     	/* LCD Intensity =   0.0% =  0     */
> -#define LCD_Int11_1	0x1     	/* LCD Intensity =  11.1% =  1/9   */
> -#define LCD_Int20_0	0x2     	/* LCD Intensity =  20.0% =  1/5   */
> -#define LCD_Int26_7	0x3     	/* LCD Intensity =  26.7% =  4/15  */
> -#define LCD_Int33_3	0x4     	/* LCD Intensity =  33.3% =  3/9   */
> -#define LCD_Int40_0	0x5     	/* LCD Intensity =  40.0% =  2/5   */
> -#define LCD_Int44_4	0x6     	/* LCD Intensity =  44.4% =  4/9   */
> -#define LCD_Int50_0	0x7     	/* LCD Intensity =  50.0% =  1/2   */
> -#define LCD_Int55_6	0x8     	/* LCD Intensity =  55.6% =  5/9   */
> -#define LCD_Int60_0	0x9     	/* LCD Intensity =  60.0% =  3/5   */
> -#define LCD_Int66_7	0xA     	/* LCD Intensity =  66.7% =  6/9   */
> -#define LCD_Int73_3	0xB     	/* LCD Intensity =  73.3% = 11/15  */
> -#define LCD_Int80_0	0xC     	/* LCD Intensity =  80.0% =  4/5   */
> -#define LCD_Int88_9	0xD     	/* LCD Intensity =  88.9% =  8/9   */
> -#define LCD_Int100_0	0xE     	/* LCD Intensity = 100.0% =  1     */
> -#define LCD_Int100_0A	0xF     	/* LCD Intensity = 100.0% =  1     */
> -                	        	/* (Alternative)                   */
> -
> -#define LCCR0_LEN	0x00000001	/* LCD ENable                      */
> -#define LCCR0_CMS	0x00000002	/* Color/Monochrome display Select */
> -#define LCCR0_Color	(LCCR0_CMS*0)	/*  Color display                  */
> -#define LCCR0_Mono	(LCCR0_CMS*1)	/*  Monochrome display             */
> -#define LCCR0_SDS	0x00000004	/* Single/Dual panel display       */
> -                	        	/* Select                          */
> -#define LCCR0_Sngl	(LCCR0_SDS*0)	/*  Single panel display           */
> -#define LCCR0_Dual	(LCCR0_SDS*1)	/*  Dual panel display             */
> -#define LCCR0_LDM	0x00000008	/* LCD Disable done (LDD)          */
> -                	        	/* interrupt Mask (disable)        */
> -#define LCCR0_BAM	0x00000010	/* Base Address update (BAU)       */
> -                	        	/* interrupt Mask (disable)        */
> -#define LCCR0_ERM	0x00000020	/* LCD ERror (BER, IOL, IUL, IOU,  */
> -                	        	/* IUU, OOL, OUL, OOU, and OUU)    */
> -                	        	/* interrupt Mask (disable)        */
> -#define LCCR0_PAS	0x00000080	/* Passive/Active display Select   */
> -#define LCCR0_Pas	(LCCR0_PAS*0)	/*  Passive display (STN)          */
> -#define LCCR0_Act	(LCCR0_PAS*1)	/*  Active display (TFT)           */
> -#define LCCR0_BLE	0x00000100	/* Big/Little Endian select        */
> -#define LCCR0_LtlEnd	(LCCR0_BLE*0)	/*  Little Endian frame buffer     */
> -#define LCCR0_BigEnd	(LCCR0_BLE*1)	/*  Big Endian frame buffer        */
> -#define LCCR0_DPD	0x00000200	/* Double Pixel Data (monochrome   */
> -                	        	/* display mode)                   */
> -#define LCCR0_4PixMono	(LCCR0_DPD*0)	/*  4-Pixel/clock Monochrome       */
> -                	        	/*  display                        */
> -#define LCCR0_8PixMono	(LCCR0_DPD*1)	/*  8-Pixel/clock Monochrome       */
> -                	        	/*  display                        */
> -#define LCCR0_PDD	Fld (8, 12)	/* Palette DMA request Delay       */
> -                	        	/* [Tmem]                          */
> -#define LCCR0_DMADel(Tcpu)      	/*  palette DMA request Delay      */ \
> -                	        	/*  [0..510 Tcpu]                  */ \
> -                	((Tcpu)/2 << FShft (LCCR0_PDD))
> -
> -#define LCSR_LDD	0x00000001	/* LCD Disable Done                */
> -#define LCSR_BAU	0x00000002	/* Base Address Update (read)      */
> -#define LCSR_BER	0x00000004	/* Bus ERror                       */
> -#define LCSR_ABC	0x00000008	/* AC Bias clock Count             */
> -#define LCSR_IOL	0x00000010	/* Input FIFO Over-run Lower       */
> -                	        	/* panel                           */
> -#define LCSR_IUL	0x00000020	/* Input FIFO Under-run Lower      */
> -                	        	/* panel                           */
> -#define LCSR_IOU	0x00000040	/* Input FIFO Over-run Upper       */
> -                	        	/* panel                           */
> -#define LCSR_IUU	0x00000080	/* Input FIFO Under-run Upper      */
> -                	        	/* panel                           */
> -#define LCSR_OOL	0x00000100	/* Output FIFO Over-run Lower      */
> -                	        	/* panel                           */
> -#define LCSR_OUL	0x00000200	/* Output FIFO Under-run Lower     */
> -                	        	/* panel                           */
> -#define LCSR_OOU	0x00000400	/* Output FIFO Over-run Upper      */
> -                	        	/* panel                           */
> -#define LCSR_OUU	0x00000800	/* Output FIFO Under-run Upper     */
> -                	        	/* panel                           */
> -
> -#define LCCR1_PPL	Fld (6, 4)	/* Pixels Per Line/16 - 1          */
> -#define LCCR1_DisWdth(Pixel)    	/*  Display Width [16..1024 pix.]  */ \
> -                	(((Pixel) - 16)/16 << FShft (LCCR1_PPL))
> -#define LCCR1_HSW	Fld (6, 10)	/* Horizontal Synchronization      */
> -                	        	/* pulse Width - 1 [Tpix] (L_LCLK) */
> -#define LCCR1_HorSnchWdth(Tpix) 	/*  Horizontal Synchronization     */ \
> -                	        	/*  pulse Width [1..64 Tpix]       */ \
> -                	(((Tpix) - 1) << FShft (LCCR1_HSW))
> -#define LCCR1_ELW	Fld (8, 16)	/* End-of-Line pixel clock Wait    */
> -                	        	/* count - 1 [Tpix]                */
> -#define LCCR1_EndLnDel(Tpix)    	/*  End-of-Line Delay              */ \
> -                	        	/*  [1..256 Tpix]                  */ \
> -                	(((Tpix) - 1) << FShft (LCCR1_ELW))
> -#define LCCR1_BLW	Fld (8, 24)	/* Beginning-of-Line pixel clock   */
> -                	        	/* Wait count - 1 [Tpix]           */
> -#define LCCR1_BegLnDel(Tpix)    	/*  Beginning-of-Line Delay        */ \
> -                	        	/*  [1..256 Tpix]                  */ \
> -                	(((Tpix) - 1) << FShft (LCCR1_BLW))
> -
> -#define LCCR2_LPP	Fld (10, 0)	/* Line Per Panel - 1              */
> -#define LCCR2_DisHght(Line)     	/*  Display Height [1..1024 lines] */ \
> -                	(((Line) - 1) << FShft (LCCR2_LPP))
> -#define LCCR2_VSW	Fld (6, 10)	/* Vertical Synchronization pulse  */
> -                	        	/* Width - 1 [Tln] (L_FCLK)        */
> -#define LCCR2_VrtSnchWdth(Tln)  	/*  Vertical Synchronization pulse */ \
> -                	        	/*  Width [1..64 Tln]              */ \
> -                	(((Tln) - 1) << FShft (LCCR2_VSW))
> -#define LCCR2_EFW	Fld (8, 16)	/* End-of-Frame line clock Wait    */
> -                	        	/* count [Tln]                     */
> -#define LCCR2_EndFrmDel(Tln)    	/*  End-of-Frame Delay             */ \
> -                	        	/*  [0..255 Tln]                   */ \
> -                	((Tln) << FShft (LCCR2_EFW))
> -#define LCCR2_BFW	Fld (8, 24)	/* Beginning-of-Frame line clock   */
> -                	        	/* Wait count [Tln]                */
> -#define LCCR2_BegFrmDel(Tln)    	/*  Beginning-of-Frame Delay       */ \
> -                	        	/*  [0..255 Tln]                   */ \
> -                	((Tln) << FShft (LCCR2_BFW))
> -
> -#define LCCR3_PCD	Fld (8, 0)	/* Pixel Clock Divisor/2 - 2       */
> -                	        	/* [1..255] (L_PCLK)               */
> -                	        	/* fpix = fcpu/(2*(PCD + 2))       */
> -                	        	/* Tpix = 2*(PCD + 2)*Tcpu         */
> -#define LCCR3_PixClkDiv(Div)    	/*  Pixel Clock Divisor [6..514]   */ \
> -                	(((Div) - 4)/2 << FShft (LCCR3_PCD))
> -                	        	/*  fpix = fcpu/(2*Floor (Div/2))  */
> -                	        	/*  Tpix = 2*Floor (Div/2)*Tcpu    */
> -#define LCCR3_CeilPixClkDiv(Div)	/*  Ceil. of PixClkDiv [6..514]    */ \
> -                	(((Div) - 3)/2 << FShft (LCCR3_PCD))
> -                	        	/*  fpix = fcpu/(2*Ceil (Div/2))   */
> -                	        	/*  Tpix = 2*Ceil (Div/2)*Tcpu     */
> -#define LCCR3_ACB	Fld (8, 8)	/* AC Bias clock half period - 1   */
> -                	        	/* [Tln] (L_BIAS)                  */
> -#define LCCR3_ACBsDiv(Div)      	/*  AC Bias clock Divisor [2..512] */ \
> -                	(((Div) - 2)/2 << FShft (LCCR3_ACB))
> -                	        	/*  fac = fln/(2*Floor (Div/2))    */
> -                	        	/*  Tac = 2*Floor (Div/2)*Tln      */
> -#define LCCR3_CeilACBsDiv(Div)  	/*  Ceil. of ACBsDiv [2..512]      */ \
> -                	(((Div) - 1)/2 << FShft (LCCR3_ACB))
> -                	        	/*  fac = fln/(2*Ceil (Div/2))     */
> -                	        	/*  Tac = 2*Ceil (Div/2)*Tln       */
> -#define LCCR3_API	Fld (4, 16)	/* AC bias Pin transitions per     */
> -                	        	/* Interrupt                       */
> -#define LCCR3_ACBsCntOff        	/*  AC Bias clock transition Count */ \
> -                	        	/*  Off                            */ \
> -                	(0 << FShft (LCCR3_API))
> -#define LCCR3_ACBsCnt(Trans)    	/*  AC Bias clock transition Count */ \
> -                	        	/*  [1..15]                        */ \
> -                	((Trans) << FShft (LCCR3_API))
> -#define LCCR3_VSP	0x00100000	/* Vertical Synchronization pulse  */
> -                	        	/* Polarity (L_FCLK)               */
> -#define LCCR3_VrtSnchH	(LCCR3_VSP*0)	/*  Vertical Synchronization pulse */
> -                	        	/*  active High                    */
> -#define LCCR3_VrtSnchL	(LCCR3_VSP*1)	/*  Vertical Synchronization pulse */
> -                	        	/*  active Low                     */
> -#define LCCR3_HSP	0x00200000	/* Horizontal Synchronization      */
> -                	        	/* pulse Polarity (L_LCLK)         */
> -#define LCCR3_HorSnchH	(LCCR3_HSP*0)	/*  Horizontal Synchronization     */
> -                	        	/*  pulse active High              */
> -#define LCCR3_HorSnchL	(LCCR3_HSP*1)	/*  Horizontal Synchronization     */
> -                	        	/*  pulse active Low               */
> -#define LCCR3_PCP	0x00400000	/* Pixel Clock Polarity (L_PCLK)   */
> -#define LCCR3_PixRsEdg	(LCCR3_PCP*0)	/*  Pixel clock Rising-Edge        */
> -#define LCCR3_PixFlEdg	(LCCR3_PCP*1)	/*  Pixel clock Falling-Edge       */
> -#define LCCR3_OEP	0x00800000	/* Output Enable Polarity (L_BIAS, */
> -                	        	/* active display mode)            */
> -#define LCCR3_OutEnH	(LCCR3_OEP*0)	/*  Output Enable active High      */
> -#define LCCR3_OutEnL	(LCCR3_OEP*1)	/*  Output Enable active Low       */
> diff --git a/arch/arm/mach-sa1100/include/mach/assabet.h b/arch/arm/mach-sa1100/include/mach/assabet.h
> deleted file mode 100644
> index 641a961653af..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/assabet.h
> +++ /dev/null
> @@ -1,99 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/assabet.h
> - *
> - * Created 2000/06/05 by Nicolas Pitre <nico@fluxnic.net>
> - *
> - * This file contains the hardware specific definitions for Assabet
> - * Only include this file from SA1100-specific files.
> - *
> - * 2000/05/23 John Dorsey <john+@cs.cmu.edu>
> - *      Definitions for Neponset added.
> - */
> -#ifndef __ASM_ARCH_ASSABET_H
> -#define __ASM_ARCH_ASSABET_H
> -
> -
> -/* System Configuration Register flags */
> -
> -#define ASSABET_SCR_SDRAM_LOW	(1<<2)	/* SDRAM size (low bit) */
> -#define ASSABET_SCR_SDRAM_HIGH	(1<<3)	/* SDRAM size (high bit) */
> -#define ASSABET_SCR_FLASH_LOW	(1<<4)	/* Flash size (low bit) */
> -#define ASSABET_SCR_FLASH_HIGH	(1<<5)	/* Flash size (high bit) */
> -#define ASSABET_SCR_GFX		(1<<8)	/* Graphics Accelerator (0 = present) */
> -#define ASSABET_SCR_SA1111	(1<<9)	/* Neponset (0 = present) */
> -
> -#define ASSABET_SCR_INIT	-1
> -
> -extern unsigned long SCR_value;
> -
> -#ifdef CONFIG_ASSABET_NEPONSET
> -#define machine_has_neponset()  ((SCR_value & ASSABET_SCR_SA1111) == 0)
> -#else
> -#define machine_has_neponset()	(0)
> -#endif
> -
> -/* Board Control Register */
> -
> -#define ASSABET_BCR_BASE  0xf1000000
> -#define ASSABET_BCR (*(volatile unsigned int *)(ASSABET_BCR_BASE))
> -
> -#define ASSABET_BCR_CF_PWR	(1<<0)	/* Compact Flash Power (1 = 3.3v, 0 = off) */
> -#define ASSABET_BCR_CF_RST	(1<<1)	/* Compact Flash Reset (1 = power up reset) */
> -#define ASSABET_BCR_NGFX_RST	(1<<1)	/* Graphics Accelerator Reset (0 = hold reset) */
> -#define ASSABET_BCR_NCODEC_RST	(1<<2)	/* 0 = Holds UCB1300, ADI7171, and UDA1341 in reset */
> -#define ASSABET_BCR_IRDA_FSEL	(1<<3)	/* IRDA Frequency select (0 = SIR, 1 = MIR/ FIR) */
> -#define ASSABET_BCR_IRDA_MD0	(1<<4)	/* Range/Power select */
> -#define ASSABET_BCR_IRDA_MD1	(1<<5)	/* Range/Power select */
> -#define ASSABET_BCR_STEREO_LB	(1<<6)	/* Stereo Loopback */
> -#define ASSABET_BCR_CF_BUS_OFF	(1<<7)	/* Compact Flash bus (0 = on, 1 = off (float)) */
> -#define ASSABET_BCR_AUDIO_ON	(1<<8)	/* Audio power on */
> -#define ASSABET_BCR_LIGHT_ON	(1<<9)	/* Backlight */
> -#define ASSABET_BCR_LCD_12RGB	(1<<10)	/* 0 = 16RGB, 1 = 12RGB */
> -#define ASSABET_BCR_LCD_ON	(1<<11)	/* LCD power on */
> -#define ASSABET_BCR_RS232EN	(1<<12)	/* RS232 transceiver enable */
> -#define ASSABET_BCR_LED_RED	(1<<13)	/* D9 (0 = on, 1 = off) */
> -#define ASSABET_BCR_LED_GREEN	(1<<14)	/* D8 (0 = on, 1 = off) */
> -#define ASSABET_BCR_VIB_ON	(1<<15)	/* Vibration motor (quiet alert) */
> -#define ASSABET_BCR_COM_DTR	(1<<16)	/* COMport Data Terminal Ready */
> -#define ASSABET_BCR_COM_RTS	(1<<17)	/* COMport Request To Send */
> -#define ASSABET_BCR_RAD_WU	(1<<18)	/* Radio wake up interrupt */
> -#define ASSABET_BCR_SMB_EN	(1<<19)	/* System management bus enable */
> -#define ASSABET_BCR_TV_IR_DEC	(1<<20)	/* TV IR Decode Enable (not implemented) */
> -#define ASSABET_BCR_QMUTE	(1<<21)	/* Quick Mute */
> -#define ASSABET_BCR_RAD_ON	(1<<22)	/* Radio Power On */
> -#define ASSABET_BCR_SPK_OFF	(1<<23)	/* 1 = Speaker amplifier power off */
> -
> -#ifdef CONFIG_SA1100_ASSABET
> -extern void ASSABET_BCR_frob(unsigned int mask, unsigned int set);
> -#else
> -#define ASSABET_BCR_frob(x,y)	do { } while (0)
> -#endif
> -
> -extern void assabet_uda1341_reset(int set);
> -
> -#define ASSABET_BCR_set(x)	ASSABET_BCR_frob((x), (x))
> -#define ASSABET_BCR_clear(x)	ASSABET_BCR_frob((x), 0)
> -
> -#define ASSABET_BSR_BASE	0xf1000000
> -#define ASSABET_BSR (*(volatile unsigned int*)(ASSABET_BSR_BASE))
> -
> -#define ASSABET_BSR_RS232_VALID	(1 << 24)
> -#define ASSABET_BSR_COM_DCD	(1 << 25)
> -#define ASSABET_BSR_COM_CTS	(1 << 26)
> -#define ASSABET_BSR_COM_DSR	(1 << 27)
> -#define ASSABET_BSR_RAD_CTS	(1 << 28)
> -#define ASSABET_BSR_RAD_DSR	(1 << 29)
> -#define ASSABET_BSR_RAD_DCD	(1 << 30)
> -#define ASSABET_BSR_RAD_RI	(1 << 31)
> -
> -
> -/* GPIOs (bitmasks) for which the generic definition doesn't say much */
> -#define ASSABET_GPIO_RADIO_IRQ		GPIO_GPIO (14)	/* Radio interrupt request  */
> -#define ASSABET_GPIO_PS_MODE_SYNC	GPIO_GPIO (16)	/* Power supply mode/sync   */
> -#define ASSABET_GPIO_STEREO_64FS_CLK	GPIO_GPIO (19)	/* SSP UDA1341 clock input  */
> -#define ASSABET_GPIO_GFX_IRQ		GPIO_GPIO (24)	/* Graphics IRQ */
> -#define ASSABET_GPIO_BATT_LOW		GPIO_GPIO (26)	/* Low battery */
> -#define ASSABET_GPIO_RCLK		GPIO_GPIO (26)	/* CCLK/2  */
> -
> -#endif
> diff --git a/arch/arm/mach-sa1100/include/mach/bitfield.h b/arch/arm/mach-sa1100/include/mach/bitfield.h
> deleted file mode 100644
> index f1f0e3387d9c..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/bitfield.h
> +++ /dev/null
> @@ -1,113 +0,0 @@
> -/*
> - *	FILE    	bitfield.h
> - *
> - *	Version 	1.1
> - *	Author  	Copyright (c) Marc A. Viredaz, 1998
> - *	        	DEC Western Research Laboratory, Palo Alto, CA
> - *	Date    	April 1998 (April 1997)
> - *	System  	Advanced RISC Machine (ARM)
> - *	Language	C or ARM Assembly
> - *	Purpose 	Definition of macros to operate on bit fields.
> - */
> -
> -
> -
> -#ifndef __BITFIELD_H
> -#define __BITFIELD_H
> -
> -#ifndef __ASSEMBLY__
> -#define UData(Data)	((unsigned long) (Data))
> -#else
> -#define UData(Data)	(Data)
> -#endif
> -
> -
> -/*
> - * MACRO: Fld
> - *
> - * Purpose
> - *    The macro "Fld" encodes a bit field, given its size and its shift value
> - *    with respect to bit 0.
> - *
> - * Note
> - *    A more intuitive way to encode bit fields would have been to use their
> - *    mask. However, extracting size and shift value information from a bit
> - *    field's mask is cumbersome and might break the assembler (255-character
> - *    line-size limit).
> - *
> - * Input
> - *    Size      	Size of the bit field, in number of bits.
> - *    Shft      	Shift value of the bit field with respect to bit 0.
> - *
> - * Output
> - *    Fld       	Encoded bit field.
> - */
> -
> -#define Fld(Size, Shft)	(((Size) << 16) + (Shft))
> -
> -
> -/*
> - * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
> - *
> - * Purpose
> - *    The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
> - *    the size, shift value, mask, aligned mask, and first bit of a
> - *    bit field.
> - *
> - * Input
> - *    Field     	Encoded bit field (using the macro "Fld").
> - *
> - * Output
> - *    FSize     	Size of the bit field, in number of bits.
> - *    FShft     	Shift value of the bit field with respect to bit 0.
> - *    FMsk      	Mask for the bit field.
> - *    FAlnMsk   	Mask for the bit field, aligned on bit 0.
> - *    F1stBit   	First bit of the bit field.
> - */
> -
> -#define FSize(Field)	((Field) >> 16)
> -#define FShft(Field)	((Field) & 0x0000FFFF)
> -#define FMsk(Field)	(((UData (1) << FSize (Field)) - 1) << FShft (Field))
> -#define FAlnMsk(Field)	((UData (1) << FSize (Field)) - 1)
> -#define F1stBit(Field)	(UData (1) << FShft (Field))
> -
> -
> -/*
> - * MACRO: FInsrt
> - *
> - * Purpose
> - *    The macro "FInsrt" inserts a value into a bit field by shifting the
> - *    former appropriately.
> - *
> - * Input
> - *    Value     	Bit-field value.
> - *    Field     	Encoded bit field (using the macro "Fld").
> - *
> - * Output
> - *    FInsrt    	Bit-field value positioned appropriately.
> - */
> -
> -#define FInsrt(Value, Field) \
> -                	(UData (Value) << FShft (Field))
> -
> -
> -/*
> - * MACRO: FExtr
> - *
> - * Purpose
> - *    The macro "FExtr" extracts the value of a bit field by masking and
> - *    shifting it appropriately.
> - *
> - * Input
> - *    Data      	Data containing the bit-field to be extracted.
> - *    Field     	Encoded bit field (using the macro "Fld").
> - *
> - * Output
> - *    FExtr     	Bit-field value.
> - */
> -
> -#define FExtr(Data, Field) \
> -                	((UData (Data) >> FShft (Field)) & FAlnMsk (Field))
> -
> -
> -#endif /* __BITFIELD_H */
> diff --git a/arch/arm/mach-sa1100/include/mach/collie.h b/arch/arm/mach-sa1100/include/mach/collie.h
> deleted file mode 100644
> index c95273c9567b..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/collie.h
> +++ /dev/null
> @@ -1,94 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/collie.h
> - *
> - * This file contains the hardware specific definitions for Collie
> - * Only include this file from SA1100-specific files.
> - *
> - * ChangeLog:
> - *   04-06-2001 Lineo Japan, Inc.
> - *   04-16-2001 SHARP Corporation
> - *   07-07-2002 Chris Larson <clarson@digi.com>
> - *
> - */
> -#ifndef __ASM_ARCH_COLLIE_H
> -#define __ASM_ARCH_COLLIE_H
> -
> -#include "hardware.h" /* Gives GPIO_MAX */
> -
> -#define COLLIE_SCOOP_GPIO_BASE	(GPIO_MAX + 1)
> -#define COLLIE_GPIO_CHARGE_ON	(COLLIE_SCOOP_GPIO_BASE + 0)
> -#define COLLIE_SCP_DIAG_BOOT1	SCOOP_GPCR_PA12
> -#define COLLIE_SCP_DIAG_BOOT2	SCOOP_GPCR_PA13
> -#define COLLIE_SCP_MUTE_L	SCOOP_GPCR_PA14
> -#define COLLIE_SCP_MUTE_R	SCOOP_GPCR_PA15
> -#define COLLIE_SCP_5VON		SCOOP_GPCR_PA16
> -#define COLLIE_SCP_AMP_ON	SCOOP_GPCR_PA17
> -#define COLLIE_GPIO_VPEN	(COLLIE_SCOOP_GPIO_BASE + 7)
> -#define COLLIE_SCP_LB_VOL_CHG	SCOOP_GPCR_PA19
> -
> -#define COLLIE_SCOOP_IO_DIR	(COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R | \
> -				COLLIE_SCP_5VON | COLLIE_SCP_AMP_ON | \
> -				COLLIE_SCP_LB_VOL_CHG)
> -#define COLLIE_SCOOP_IO_OUT	(COLLIE_SCP_MUTE_L | COLLIE_SCP_MUTE_R)
> -
> -/* GPIOs for gpiolib  */
> -
> -#define COLLIE_GPIO_ON_KEY		(0)
> -#define COLLIE_GPIO_AC_IN		(1)
> -#define COLLIE_GPIO_SDIO_INT		(11)
> -#define COLLIE_GPIO_CF_IRQ		(14)
> -#define COLLIE_GPIO_nREMOCON_INT	(15)
> -#define COLLIE_GPIO_UCB1x00_RESET	(16)
> -#define COLLIE_GPIO_nMIC_ON		(17)
> -#define COLLIE_GPIO_nREMOCON_ON		(18)
> -#define COLLIE_GPIO_CO			(20)
> -#define COLLIE_GPIO_MCP_CLK		(21)
> -#define COLLIE_GPIO_CF_CD		(22)
> -#define COLLIE_GPIO_UCB1x00_IRQ		(23)
> -#define COLLIE_GPIO_WAKEUP		(24)
> -#define COLLIE_GPIO_GA_INT		(25)
> -#define COLLIE_GPIO_MAIN_BAT_LOW	(26)
> -
> -/* GPIO definitions for direct register access */
> -
> -#define _COLLIE_GPIO_ON_KEY		GPIO_GPIO(0)
> -#define _COLLIE_GPIO_AC_IN		GPIO_GPIO(1)
> -#define _COLLIE_GPIO_nREMOCON_INT	GPIO_GPIO(15)
> -#define _COLLIE_GPIO_UCB1x00_RESET	GPIO_GPIO(16)
> -#define _COLLIE_GPIO_nMIC_ON		GPIO_GPIO(17)
> -#define _COLLIE_GPIO_nREMOCON_ON	GPIO_GPIO(18)
> -#define _COLLIE_GPIO_CO			GPIO_GPIO(20)
> -#define _COLLIE_GPIO_WAKEUP		GPIO_GPIO(24)
> -/* Interrupts */
> -
> -#define COLLIE_IRQ_GPIO_ON_KEY		IRQ_GPIO0
> -#define COLLIE_IRQ_GPIO_AC_IN		IRQ_GPIO1
> -#define COLLIE_IRQ_GPIO_SDIO_IRQ	IRQ_GPIO11
> -#define COLLIE_IRQ_GPIO_CF_IRQ		IRQ_GPIO14
> -#define COLLIE_IRQ_GPIO_nREMOCON_INT	IRQ_GPIO15
> -#define COLLIE_IRQ_GPIO_CO		IRQ_GPIO20
> -#define COLLIE_IRQ_GPIO_CF_CD		IRQ_GPIO22
> -#define COLLIE_IRQ_GPIO_UCB1x00_IRQ	IRQ_GPIO23
> -#define COLLIE_IRQ_GPIO_WAKEUP		IRQ_GPIO24
> -#define COLLIE_IRQ_GPIO_GA_INT		IRQ_GPIO25
> -#define COLLIE_IRQ_GPIO_MAIN_BAT_LOW	IRQ_GPIO26
> -
> -/* GPIO's on the TC35143AF (Toshiba Analog Frontend) */
> -#define COLLIE_TC35143_GPIO_BASE	(GPIO_MAX + 13)
> -#define COLLIE_TC35143_GPIO_VERSION0    UCB_IO_0
> -#define COLLIE_TC35143_GPIO_TBL_CHK     UCB_IO_1
> -#define COLLIE_TC35143_GPIO_VPEN_ON     UCB_IO_2
> -#define COLLIE_GPIO_IR_ON		(COLLIE_TC35143_GPIO_BASE + 3)
> -#define COLLIE_TC35143_GPIO_AMP_ON      UCB_IO_4
> -#define COLLIE_TC35143_GPIO_VERSION1    UCB_IO_5
> -#define COLLIE_TC35143_GPIO_FS8KLPF     UCB_IO_5
> -#define COLLIE_TC35143_GPIO_BUZZER_BIAS UCB_IO_6
> -#define COLLIE_GPIO_MBAT_ON     	(COLLIE_TC35143_GPIO_BASE + 7)
> -#define COLLIE_GPIO_BBAT_ON     	(COLLIE_TC35143_GPIO_BASE + 8)
> -#define COLLIE_GPIO_TMP_ON      	(COLLIE_TC35143_GPIO_BASE + 9)
> -#define COLLIE_TC35143_GPIO_IN		(UCB_IO_0 | UCB_IO_2 | UCB_IO_5)
> -#define COLLIE_TC35143_GPIO_OUT		(UCB_IO_1 | UCB_IO_3 | UCB_IO_4 \
> -						| UCB_IO_6)
> -
> -#endif
> diff --git a/arch/arm/mach-sa1100/include/mach/generic.h b/arch/arm/mach-sa1100/include/mach/generic.h
> deleted file mode 100644
> index 665542e0c9e2..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/generic.h
> +++ /dev/null
> @@ -1 +0,0 @@
> -#include "../../generic.h"
> diff --git a/arch/arm/mach-sa1100/include/mach/h3xxx.h b/arch/arm/mach-sa1100/include/mach/h3xxx.h
> deleted file mode 100644
> index 0ee2578e0006..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/h3xxx.h
> +++ /dev/null
> @@ -1,81 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Definitions for Compaq iPAQ H3100 and H3600 handheld computers
> - *
> - * (c) 2000 Compaq Computer Corporation. (Author: Jamey Hicks)
> - * (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
> - */
> -
> -#ifndef _INCLUDE_H3XXX_H_
> -#define _INCLUDE_H3XXX_H_
> -
> -#include "hardware.h" /* Gives GPIO_MAX */
> -
> -/* Physical memory regions corresponding to chip selects */
> -#define H3600_EGPIO_PHYS	(SA1100_CS5_PHYS + 0x01000000)
> -#define H3600_BANK_2_PHYS	SA1100_CS2_PHYS
> -#define H3600_BANK_4_PHYS	SA1100_CS4_PHYS
> -
> -/* Virtual memory regions corresponding to chip selects 2 & 4 (used on sleeves) */
> -#define H3600_EGPIO_VIRT	0xf0000000
> -#define H3600_BANK_2_VIRT	0xf1000000
> -#define H3600_BANK_4_VIRT	0xf3800000
> -
> -/*
> - * gpiolib numbers for all iPAQs
> - */
> -#define H3XXX_GPIO_PWR_BUTTON		0
> -#define H3XXX_GPIO_PCMCIA_CD1		10
> -#define H3XXX_GPIO_PCMCIA_IRQ1		11
> -#define H3XXX_GPIO_PCMCIA_CD0		17
> -#define H3XXX_GPIO_ACTION_BUTTON	18
> -#define H3XXX_GPIO_SYS_CLK		19
> -#define H3XXX_GPIO_PCMCIA_IRQ0		21
> -#define H3XXX_GPIO_COM_DCD		23
> -#define H3XXX_GPIO_OPTION		24
> -#define H3XXX_GPIO_COM_CTS		25
> -#define H3XXX_GPIO_COM_RTS		26
> -
> -/* machine-specific gpios */
> -
> -#define H3100_GPIO_BT_ON		2
> -#define H3100_GPIO_QMUTE		4
> -#define H3100_GPIO_LCD_3V_ON		5
> -#define H3100_GPIO_AUD_ON		6
> -#define H3100_GPIO_AUD_PWR_ON		7
> -#define H3100_GPIO_IR_ON		8
> -#define H3100_GPIO_IR_FSEL		9
> -
> -#define H3600_GPIO_CLK_SET0		12	/* audio sample rate clock generator */
> -#define H3600_GPIO_CLK_SET1		13
> -#define H3600_GPIO_SOFT_RESET		20	/* also known as BATT_FAULT */
> -#define H3600_GPIO_OPT_LOCK		22
> -#define H3600_GPIO_OPT_DET		27
> -
> -
> -/* H3100 / 3600 EGPIO pins */
> -#define H3XXX_EGPIO_BASE		(GPIO_MAX + 1)
> -
> -#define H3XXX_EGPIO_VPP_ON		(H3XXX_EGPIO_BASE + 0)
> -#define H3XXX_EGPIO_CARD_RESET		(H3XXX_EGPIO_BASE + 1) /* reset the attached pcmcia/compactflash card.  active high. */
> -#define H3XXX_EGPIO_OPT_RESET		(H3XXX_EGPIO_BASE + 2) /* reset the attached option pack.  active high. */
> -#define H3XXX_EGPIO_CODEC_NRESET	(H3XXX_EGPIO_BASE + 3) /* reset the onboard UDA1341.  active low. */
> -#define H3XXX_EGPIO_OPT_NVRAM_ON	(H3XXX_EGPIO_BASE + 4) /* apply power to optionpack nvram, active high. */
> -#define H3XXX_EGPIO_OPT_ON		(H3XXX_EGPIO_BASE + 5) /* full power to option pack.  active high. */
> -#define H3XXX_EGPIO_LCD_ON		(H3XXX_EGPIO_BASE + 6) /* enable 3.3V to LCD.  active high. */
> -#define H3XXX_EGPIO_RS232_ON		(H3XXX_EGPIO_BASE + 7) /* UART3 transceiver force on.  Active high. */
> -
> -/* H3600 only EGPIO pins */
> -#define H3600_EGPIO_LCD_PCI		(H3XXX_EGPIO_BASE + 8) /* LCD control IC enable.  active high. */
> -#define H3600_EGPIO_IR_ON		(H3XXX_EGPIO_BASE + 9) /* apply power to IR module.  active high. */
> -#define H3600_EGPIO_AUD_AMP_ON		(H3XXX_EGPIO_BASE + 10) /* apply power to audio power amp.  active high. */
> -#define H3600_EGPIO_AUD_PWR_ON		(H3XXX_EGPIO_BASE + 11) /* apply power to reset of audio circuit.  active high. */
> -#define H3600_EGPIO_QMUTE		(H3XXX_EGPIO_BASE + 12) /* mute control for onboard UDA1341.  active high. */
> -#define H3600_EGPIO_IR_FSEL		(H3XXX_EGPIO_BASE + 13) /* IR speed select: 1->fast, 0->slow */
> -#define H3600_EGPIO_LCD_5V_ON		(H3XXX_EGPIO_BASE + 14) /* enable 5V to LCD. active high. */
> -#define H3600_EGPIO_LVDD_ON		(H3XXX_EGPIO_BASE + 15) /* enable 9V and -6.5V to LCD. */
> -
> -void __init h3xxx_map_io(void);
> -void __init h3xxx_mach_init(void);
> -
> -#endif /* _INCLUDE_H3XXX_H_ */
> diff --git a/arch/arm/mach-sa1100/include/mach/hardware.h b/arch/arm/mach-sa1100/include/mach/hardware.h
> deleted file mode 100644
> index 6f2dbdc28663..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/hardware.h
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/hardware.h
> - *
> - * Copyright (C) 1998 Nicolas Pitre <nico@fluxnic.net>
> - *
> - * This file contains the hardware definitions for SA1100 architecture
> - *
> - * 2000/05/23 John Dorsey <john+@cs.cmu.edu>
> - *      Definitions for SA1111 added.
> - */
> -
> -#ifndef __ASM_ARCH_HARDWARE_H
> -#define __ASM_ARCH_HARDWARE_H
> -
> -
> -#define UNCACHEABLE_ADDR	0xfa050000	/* ICIP */
> -
> -
> -/*
> - * SA1100 internal I/O mappings
> - *
> - * We have the following mapping:
> - *      phys            virt
> - *      80000000        f8000000
> - *      90000000        fa000000
> - *      a0000000        fc000000
> - *      b0000000        fe000000
> - */
> -
> -#define VIO_BASE        0xf8000000	/* virtual start of IO space */
> -#define VIO_SHIFT       3		/* x = IO space shrink power */
> -#define PIO_START       0x80000000	/* physical start of IO space */
> -
> -#define io_p2v( x )             \
> -   IOMEM( (((x)&0x00ffffff) | (((x)&0x30000000)>>VIO_SHIFT)) + VIO_BASE )
> -#define io_v2p( x )             \
> -   ( (((x)&0x00ffffff) | (((x)&(0x30000000>>VIO_SHIFT))<<VIO_SHIFT)) + PIO_START )
> -
> -#define __MREG(x)	IOMEM(io_p2v(x))
> -
> -#ifndef __ASSEMBLY__
> -
> -# define __REG(x)	(*((volatile unsigned long __iomem *)io_p2v(x)))
> -# define __PREG(x)	(io_v2p((unsigned long)&(x)))
> -
> -#else
> -
> -# define __REG(x)	io_p2v(x)
> -# define __PREG(x)	io_v2p(x)
> -
> -#endif
> -
> -#include "SA-1100.h"
> -
> -#endif  /* _ASM_ARCH_HARDWARE_H */
> diff --git a/arch/arm/mach-sa1100/include/mach/irqs.h b/arch/arm/mach-sa1100/include/mach/irqs.h
> deleted file mode 100644
> index f4a41e665262..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/irqs.h
> +++ /dev/null
> @@ -1,101 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/irqs.h
> - *
> - * Copyright (C) 1996 Russell King
> - * Copyright (C) 1998 Deborah Wallach (updates for SA1100/Brutus).
> - * Copyright (C) 1999 Nicolas Pitre (full GPIO irq isolation)
> - *
> - * 2001/11/14	RMK	Cleaned up and standardised a lot of the IRQs.
> - */
> -
> -#define	IRQ_GPIO0_SC		1
> -#define	IRQ_GPIO1_SC		2
> -#define	IRQ_GPIO2_SC		3
> -#define	IRQ_GPIO3_SC		4
> -#define	IRQ_GPIO4_SC		5
> -#define	IRQ_GPIO5_SC		6
> -#define	IRQ_GPIO6_SC		7
> -#define	IRQ_GPIO7_SC		8
> -#define	IRQ_GPIO8_SC		9
> -#define	IRQ_GPIO9_SC		10
> -#define	IRQ_GPIO10_SC		11
> -#define	IRQ_GPIO11_27		12
> -#define	IRQ_LCD			13	/* LCD controller           */
> -#define	IRQ_Ser0UDC		14	/* Ser. port 0 UDC          */
> -#define	IRQ_Ser1SDLC		15	/* Ser. port 1 SDLC         */
> -#define	IRQ_Ser1UART		16	/* Ser. port 1 UART         */
> -#define	IRQ_Ser2ICP		17	/* Ser. port 2 ICP          */
> -#define	IRQ_Ser3UART		18	/* Ser. port 3 UART         */
> -#define	IRQ_Ser4MCP		19	/* Ser. port 4 MCP          */
> -#define	IRQ_Ser4SSP		20	/* Ser. port 4 SSP          */
> -#define	IRQ_DMA0		21	/* DMA controller channel 0 */
> -#define	IRQ_DMA1		22	/* DMA controller channel 1 */
> -#define	IRQ_DMA2		23	/* DMA controller channel 2 */
> -#define	IRQ_DMA3		24	/* DMA controller channel 3 */
> -#define	IRQ_DMA4		25	/* DMA controller channel 4 */
> -#define	IRQ_DMA5		26	/* DMA controller channel 5 */
> -#define	IRQ_OST0		27	/* OS Timer match 0         */
> -#define	IRQ_OST1		28	/* OS Timer match 1         */
> -#define	IRQ_OST2		29	/* OS Timer match 2         */
> -#define	IRQ_OST3		30	/* OS Timer match 3         */
> -#define	IRQ_RTC1Hz		31	/* RTC 1 Hz clock           */
> -#define	IRQ_RTCAlrm		32	/* RTC Alarm                */
> -
> -#define	IRQ_GPIO0		33
> -#define	IRQ_GPIO1		34
> -#define	IRQ_GPIO2		35
> -#define	IRQ_GPIO3		36
> -#define	IRQ_GPIO4		37
> -#define	IRQ_GPIO5		38
> -#define	IRQ_GPIO6		39
> -#define	IRQ_GPIO7		40
> -#define	IRQ_GPIO8		41
> -#define	IRQ_GPIO9		42
> -#define	IRQ_GPIO10		43
> -#define	IRQ_GPIO11		44
> -#define	IRQ_GPIO12		45
> -#define	IRQ_GPIO13		46
> -#define	IRQ_GPIO14		47
> -#define	IRQ_GPIO15		48
> -#define	IRQ_GPIO16		49
> -#define	IRQ_GPIO17		50
> -#define	IRQ_GPIO18		51
> -#define	IRQ_GPIO19		52
> -#define	IRQ_GPIO20		53
> -#define	IRQ_GPIO21		54
> -#define	IRQ_GPIO22		55
> -#define	IRQ_GPIO23		56
> -#define	IRQ_GPIO24		57
> -#define	IRQ_GPIO25		58
> -#define	IRQ_GPIO26		59
> -#define	IRQ_GPIO27		60
> -
> -/*
> - * The next 16 interrupts are for board specific purposes.  Since
> - * the kernel can only run on one machine at a time, we can re-use
> - * these.  If you need more, increase IRQ_BOARD_END, but keep it
> - * within sensible limits.  IRQs 61 to 76 are available.
> - */
> -#define IRQ_BOARD_START		61
> -#define IRQ_BOARD_END		77
> -
> -/*
> - * Figure out the MAX IRQ number.
> - *
> - * Neponset, SA1111 and UCB1x00 are sparse IRQ aware, so can dynamically
> - * allocate their IRQs above NR_IRQS.
> - *
> - * LoCoMo has 4 additional IRQs, but is not sparse IRQ aware, and so has
> - * to be included in the NR_IRQS calculation.
> - */
> -#ifdef CONFIG_SHARP_LOCOMO
> -#define NR_IRQS_LOCOMO		4
> -#else
> -#define NR_IRQS_LOCOMO		0
> -#endif
> -
> -#ifndef NR_IRQS
> -#define NR_IRQS (IRQ_BOARD_START + NR_IRQS_LOCOMO)
> -#endif
> -#define SA1100_NR_IRQS (IRQ_BOARD_START + NR_IRQS_LOCOMO)
> diff --git a/arch/arm/mach-sa1100/include/mach/jornada720.h b/arch/arm/mach-sa1100/include/mach/jornada720.h
> deleted file mode 100644
> index bb22fcab8c6c..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/jornada720.h
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * arch/arm/mach-sa1100/include/mach/jornada720.h
> - *
> - * SSP/MCU communication definitions for HP Jornada 710/720/728
> - *
> - * Copyright 2007,2008 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
> - *  Copyright 2000 John Ankcorn <jca@lcs.mit.edu>
> - */
> -
> - /* HP Jornada 7xx microprocessor commands */
> -#define GETBATTERYDATA		0xc0
> -#define GETSCANKEYCODE		0x90
> -#define GETTOUCHSAMPLES		0xa0
> -#define GETCONTRAST		0xD0
> -#define SETCONTRAST		0xD1
> -#define GETBRIGHTNESS		0xD2
> -#define SETBRIGHTNESS		0xD3
> -#define CONTRASTOFF		0xD8
> -#define BRIGHTNESSOFF		0xD9
> -#define PWMOFF			0xDF
> -#define TXDUMMY			0x11
> -#define ERRORCODE		0x00
> -
> -extern void jornada_ssp_start(void);
> -extern void jornada_ssp_end(void);
> -extern int jornada_ssp_inout(u8 byte);
> -extern int jornada_ssp_byte(u8 byte);
> diff --git a/arch/arm/mach-sa1100/include/mach/memory.h b/arch/arm/mach-sa1100/include/mach/memory.h
> deleted file mode 100644
> index 3b19296f5062..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/memory.h
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/memory.h
> - *
> - * Copyright (C) 1999-2000 Nicolas Pitre <nico@fluxnic.net>
> - */
> -
> -#ifndef __ASM_ARCH_MEMORY_H
> -#define __ASM_ARCH_MEMORY_H
> -
> -#include <linux/sizes.h>
> -
> -/*
> - * Because of the wide memory address space between physical RAM banks on the
> - * SA1100, it's much convenient to use Linux's SparseMEM support to implement
> - * our memory map representation.  Assuming all memory nodes have equal access
> - * characteristics, we then have generic discontiguous memory support.
> - *
> - * The sparsemem banks are matched with the physical memory bank addresses
> - * which are incidentally the same as virtual addresses.
> - * 
> - * 	node 0:  0xc0000000 - 0xc7ffffff
> - * 	node 1:  0xc8000000 - 0xcfffffff
> - * 	node 2:  0xd0000000 - 0xd7ffffff
> - * 	node 3:  0xd8000000 - 0xdfffffff
> - */
> -#define MAX_PHYSMEM_BITS	32
> -#define SECTION_SIZE_BITS	27
> -
> -/*
> - * Cache flushing area - SA1100 zero bank
> - */
> -#define FLUSH_BASE_PHYS		0xe0000000
> -#define FLUSH_BASE		0xf5000000
> -#define FLUSH_BASE_MINICACHE	0xf5100000
> -
> -#endif
> diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h
> deleted file mode 100644
> index 85e6a79112d2..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h
> +++ /dev/null
> @@ -1,23 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * MTD primitives for XIP support. Architecture specific functions
> - *
> - * Do not include this file directly. It's included from linux/mtd/xip.h
> - * 
> - * Author:	Nicolas Pitre
> - * Created:	Nov 2, 2004
> - * Copyright:	(C) 2004 MontaVista Software, Inc.
> - */
> -
> -#ifndef __ARCH_SA1100_MTD_XIP_H__
> -#define __ARCH_SA1100_MTD_XIP_H__
> -
> -#include <mach/hardware.h>
> -
> -#define xip_irqpending()	(ICIP & ICMR)
> -
> -/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
> -#define xip_currtime()		readl_relaxed(OSCR)
> -#define xip_elapsed_since(x)	(signed)((readl_relaxed(OSCR) - (x)) / 4)
> -
> -#endif /* __ARCH_SA1100_MTD_XIP_H__ */
> diff --git a/arch/arm/mach-sa1100/include/mach/neponset.h b/arch/arm/mach-sa1100/include/mach/neponset.h
> deleted file mode 100644
> index 18411cfdfe8e..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/neponset.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/neponset.h
> - *
> - * Created 2000/06/05 by Nicolas Pitre <nico@fluxnic.net>
> - *
> - * This file contains the hardware specific definitions for Assabet
> - * Only include this file from SA1100-specific files.
> - *
> - * 2000/05/23 John Dorsey <john+@cs.cmu.edu>
> - *      Definitions for Neponset added.
> - */
> -#ifndef __ASM_ARCH_NEPONSET_H
> -#define __ASM_ARCH_NEPONSET_H
> -
> -/*
> - * Neponset definitions: 
> - */
> -#define NCR_GP01_OFF		(1<<0)
> -#define NCR_TP_PWR_EN		(1<<1)
> -#define NCR_MS_PWR_EN		(1<<2)
> -#define NCR_ENET_OSC_EN		(1<<3)
> -#define NCR_SPI_KB_WK_UP	(1<<4)
> -#define NCR_A0VPP		(1<<5)
> -#define NCR_A1VPP		(1<<6)
> -
> -void neponset_ncr_frob(unsigned int, unsigned int);
> -#define neponset_ncr_set(v)	neponset_ncr_frob(0, v)
> -#define neponset_ncr_clear(v)	neponset_ncr_frob(v, 0)
> -
> -#endif
> diff --git a/arch/arm/mach-sa1100/include/mach/reset.h b/arch/arm/mach-sa1100/include/mach/reset.h
> deleted file mode 100644
> index a6723d45ae2a..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/reset.h
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef __ASM_ARCH_RESET_H
> -#define __ASM_ARCH_RESET_H
> -
> -#include "hardware.h"
> -
> -#define RESET_STATUS_HARDWARE	(1 << 0)	/* Hardware Reset */
> -#define RESET_STATUS_WATCHDOG	(1 << 1)	/* Watchdog Reset */
> -#define RESET_STATUS_LOWPOWER	(1 << 2)	/* Exit from Low Power/Sleep */
> -#define RESET_STATUS_GPIO	(1 << 3)	/* GPIO Reset */
> -#define RESET_STATUS_ALL	(0xf)
> -
> -static inline void clear_reset_status(unsigned int mask)
> -{
> -	RCSR = mask;
> -}
> -
> -#endif /* __ASM_ARCH_RESET_H */
> diff --git a/arch/arm/mach-sa1100/include/mach/uncompress.h b/arch/arm/mach-sa1100/include/mach/uncompress.h
> deleted file mode 100644
> index f5eaa90a4576..000000000000
> --- a/arch/arm/mach-sa1100/include/mach/uncompress.h
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * arch/arm/mach-sa1100/include/mach/uncompress.h
> - *
> - * (C) 1999 Nicolas Pitre <nico@fluxnic.net>
> - *
> - * Reorganised to be machine independent.
> - */
> -
> -#include "hardware.h"
> -
> -#define IOMEM(x)	(x)
> -
> -/*
> - * The following code assumes the serial port has already been
> - * initialized by the bootloader.  We search for the first enabled
> - * port in the most probable order.  If you didn't setup a port in
> - * your bootloader then nothing will appear (which might be desired).
> - */
> -
> -#define UART(x)		(*(volatile unsigned long *)(serial_port + (x)))
> -
> -static inline void putc(int c)
> -{
> -	unsigned long serial_port;
> -
> -	do {
> -		serial_port = _Ser3UTCR0;
> -		if (UART(UTCR3) & UTCR3_TXE) break;
> -		serial_port = _Ser1UTCR0;
> -		if (UART(UTCR3) & UTCR3_TXE) break;
> -		serial_port = _Ser2UTCR0;
> -		if (UART(UTCR3) & UTCR3_TXE) break;
> -		return;
> -	} while (0);
> -
> -	/* wait for space in the UART's transmitter */
> -	while (!(UART(UTSR1) & UTSR1_TNF))
> -		barrier();
> -
> -	/* send the character out. */
> -	UART(UTDR) = c;
> -}
> -
> -static inline void flush(void)
> -{
> -}
> -
> -/*
> - * Nothing to do for these
> - */
> -#define arch_decomp_setup()
> diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c
> deleted file mode 100644
> index e259298d9465..000000000000
> --- a/arch/arm/mach-sa1100/jornada720.c
> +++ /dev/null
> @@ -1,380 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/mach-sa1100/jornada720.c
> - *
> - * HP Jornada720 init code
> - *
> - * Copyright (C) 2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
> - * Copyright (C) 2006 Filip Zyzniewski <filip.zyzniewski@tefnet.pl>
> - *  Copyright (C) 2005 Michael Gernoth <michael@gernoth.net>
> - */
> -
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/tty.h>
> -#include <linux/delay.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/platform_data/sa11x0-serial.h>
> -#include <linux/platform_device.h>
> -#include <linux/ioport.h>
> -#include <linux/mtd/mtd.h>
> -#include <linux/mtd/partitions.h>
> -#include <video/s1d13xxxfb.h>
> -
> -#include <asm/hardware/sa1111.h>
> -#include <asm/page.h>
> -#include <asm/mach-types.h>
> -#include <asm/setup.h>
> -#include <asm/mach/arch.h>
> -#include <asm/mach/flash.h>
> -#include <asm/mach/map.h>
> -
> -#include <mach/hardware.h>
> -#include <mach/irqs.h>
> -
> -#include "generic.h"
> -
> -/*
> - * HP Documentation referred in this file:
> - * http://www.jlime.com/downloads/development/docs/jornada7xx/jornada720.txt
> - */
> -
> -/* line 110 of HP's doc */
> -#define TUCR_VAL	0x20000400
> -
> -/* memory space (line 52 of HP's doc) */
> -#define SA1111REGSTART	0x40000000
> -#define SA1111REGLEN	0x00002000
> -#define EPSONREGSTART	0x48000000
> -#define EPSONREGLEN	0x00100000
> -#define EPSONFBSTART	0x48200000
> -/* 512kB framebuffer */
> -#define EPSONFBLEN	512*1024
> -
> -static struct s1d13xxxfb_regval s1d13xxxfb_initregs[] = {
> -	/* line 344 of HP's doc */
> -	{0x0001,0x00},	// Miscellaneous Register
> -	{0x01FC,0x00},	// Display Mode Register
> -	{0x0004,0x00},	// General IO Pins Configuration Register 0
> -	{0x0005,0x00},	// General IO Pins Configuration Register 1
> -	{0x0008,0x00},	// General IO Pins Control Register 0
> -	{0x0009,0x00},	// General IO Pins Control Register 1
> -	{0x0010,0x01},	// Memory Clock Configuration Register
> -	{0x0014,0x11},	// LCD Pixel Clock Configuration Register
> -	{0x0018,0x01},	// CRT/TV Pixel Clock Configuration Register
> -	{0x001C,0x01},	// MediaPlug Clock Configuration Register
> -	{0x001E,0x01},	// CPU To Memory Wait State Select Register
> -	{0x0020,0x00},	// Memory Configuration Register
> -	{0x0021,0x45},	// DRAM Refresh Rate Register
> -	{0x002A,0x01},	// DRAM Timings Control Register 0
> -	{0x002B,0x03},	// DRAM Timings Control Register 1
> -	{0x0030,0x1c},	// Panel Type Register
> -	{0x0031,0x00},	// MOD Rate Register
> -	{0x0032,0x4F},	// LCD Horizontal Display Width Register
> -	{0x0034,0x07},	// LCD Horizontal Non-Display Period Register
> -	{0x0035,0x01},	// TFT FPLINE Start Position Register
> -	{0x0036,0x0B},	// TFT FPLINE Pulse Width Register
> -	{0x0038,0xEF},	// LCD Vertical Display Height Register 0
> -	{0x0039,0x00},	// LCD Vertical Display Height Register 1
> -	{0x003A,0x13},	// LCD Vertical Non-Display Period Register
> -	{0x003B,0x0B},	// TFT FPFRAME Start Position Register
> -	{0x003C,0x01},	// TFT FPFRAME Pulse Width Register
> -	{0x0040,0x05},	// LCD Display Mode Register (2:4bpp,3:8bpp,5:16bpp)
> -	{0x0041,0x00},	// LCD Miscellaneous Register
> -	{0x0042,0x00},	// LCD Display Start Address Register 0
> -	{0x0043,0x00},	// LCD Display Start Address Register 1
> -	{0x0044,0x00},	// LCD Display Start Address Register 2
> -	{0x0046,0x80},	// LCD Memory Address Offset Register 0
> -	{0x0047,0x02},	// LCD Memory Address Offset Register 1
> -	{0x0048,0x00},	// LCD Pixel Panning Register
> -	{0x004A,0x00},	// LCD Display FIFO High Threshold Control Register
> -	{0x004B,0x00},	// LCD Display FIFO Low Threshold Control Register
> -	{0x0050,0x4F},	// CRT/TV Horizontal Display Width Register
> -	{0x0052,0x13},	// CRT/TV Horizontal Non-Display Period Register
> -	{0x0053,0x01},	// CRT/TV HRTC Start Position Register
> -	{0x0054,0x0B},	// CRT/TV HRTC Pulse Width Register
> -	{0x0056,0xDF},	// CRT/TV Vertical Display Height Register 0
> -	{0x0057,0x01},	// CRT/TV Vertical Display Height Register 1
> -	{0x0058,0x2B},	// CRT/TV Vertical Non-Display Period Register
> -	{0x0059,0x09},	// CRT/TV VRTC Start Position Register
> -	{0x005A,0x01},	// CRT/TV VRTC Pulse Width Register
> -	{0x005B,0x10},	// TV Output Control Register
> -	{0x0060,0x03},	// CRT/TV Display Mode Register (2:4bpp,3:8bpp,5:16bpp)
> -	{0x0062,0x00},	// CRT/TV Display Start Address Register 0
> -	{0x0063,0x00},	// CRT/TV Display Start Address Register 1
> -	{0x0064,0x00},	// CRT/TV Display Start Address Register 2
> -	{0x0066,0x40},	// CRT/TV Memory Address Offset Register 0
> -	{0x0067,0x01},	// CRT/TV Memory Address Offset Register 1
> -	{0x0068,0x00},	// CRT/TV Pixel Panning Register
> -	{0x006A,0x00},	// CRT/TV Display FIFO High Threshold Control Register
> -	{0x006B,0x00},	// CRT/TV Display FIFO Low Threshold Control Register
> -	{0x0070,0x00},	// LCD Ink/Cursor Control Register
> -	{0x0071,0x01},	// LCD Ink/Cursor Start Address Register
> -	{0x0072,0x00},	// LCD Cursor X Position Register 0
> -	{0x0073,0x00},	// LCD Cursor X Position Register 1
> -	{0x0074,0x00},	// LCD Cursor Y Position Register 0
> -	{0x0075,0x00},	// LCD Cursor Y Position Register 1
> -	{0x0076,0x00},	// LCD Ink/Cursor Blue Color 0 Register
> -	{0x0077,0x00},	// LCD Ink/Cursor Green Color 0 Register
> -	{0x0078,0x00},	// LCD Ink/Cursor Red Color 0 Register
> -	{0x007A,0x1F},	// LCD Ink/Cursor Blue Color 1 Register
> -	{0x007B,0x3F},	// LCD Ink/Cursor Green Color 1 Register
> -	{0x007C,0x1F},	// LCD Ink/Cursor Red Color 1 Register
> -	{0x007E,0x00},	// LCD Ink/Cursor FIFO Threshold Register
> -	{0x0080,0x00},	// CRT/TV Ink/Cursor Control Register
> -	{0x0081,0x01},	// CRT/TV Ink/Cursor Start Address Register
> -	{0x0082,0x00},	// CRT/TV Cursor X Position Register 0
> -	{0x0083,0x00},	// CRT/TV Cursor X Position Register 1
> -	{0x0084,0x00},	// CRT/TV Cursor Y Position Register 0
> -	{0x0085,0x00},	// CRT/TV Cursor Y Position Register 1
> -	{0x0086,0x00},	// CRT/TV Ink/Cursor Blue Color 0 Register
> -	{0x0087,0x00},	// CRT/TV Ink/Cursor Green Color 0 Register
> -	{0x0088,0x00},	// CRT/TV Ink/Cursor Red Color 0 Register
> -	{0x008A,0x1F},	// CRT/TV Ink/Cursor Blue Color 1 Register
> -	{0x008B,0x3F},	// CRT/TV Ink/Cursor Green Color 1 Register
> -	{0x008C,0x1F},	// CRT/TV Ink/Cursor Red Color 1 Register
> -	{0x008E,0x00},	// CRT/TV Ink/Cursor FIFO Threshold Register
> -	{0x0100,0x00},	// BitBlt Control Register 0
> -	{0x0101,0x00},	// BitBlt Control Register 1
> -	{0x0102,0x00},	// BitBlt ROP Code/Color Expansion Register
> -	{0x0103,0x00},	// BitBlt Operation Register
> -	{0x0104,0x00},	// BitBlt Source Start Address Register 0
> -	{0x0105,0x00},	// BitBlt Source Start Address Register 1
> -	{0x0106,0x00},	// BitBlt Source Start Address Register 2
> -	{0x0108,0x00},	// BitBlt Destination Start Address Register 0
> -	{0x0109,0x00},	// BitBlt Destination Start Address Register 1
> -	{0x010A,0x00},	// BitBlt Destination Start Address Register 2
> -	{0x010C,0x00},	// BitBlt Memory Address Offset Register 0
> -	{0x010D,0x00},	// BitBlt Memory Address Offset Register 1
> -	{0x0110,0x00},	// BitBlt Width Register 0
> -	{0x0111,0x00},	// BitBlt Width Register 1
> -	{0x0112,0x00},	// BitBlt Height Register 0
> -	{0x0113,0x00},	// BitBlt Height Register 1
> -	{0x0114,0x00},	// BitBlt Background Color Register 0
> -	{0x0115,0x00},	// BitBlt Background Color Register 1
> -	{0x0118,0x00},	// BitBlt Foreground Color Register 0
> -	{0x0119,0x00},	// BitBlt Foreground Color Register 1
> -	{0x01E0,0x00},	// Look-Up Table Mode Register
> -	{0x01E2,0x00},	// Look-Up Table Address Register
> -	/* not sure, wouldn't like to mess with the driver */
> -	{0x01E4,0x00},	// Look-Up Table Data Register
> -	/* jornada doc says 0x00, but I trust the driver */
> -	{0x01F0,0x10},	// Power Save Configuration Register
> -	{0x01F1,0x00},	// Power Save Status Register
> -	{0x01F4,0x00},	// CPU-to-Memory Access Watchdog Timer Register
> -	{0x01FC,0x01},	// Display Mode Register(0x01:LCD, 0x02:CRT, 0x03:LCD&CRT)
> -};
> -
> -static struct s1d13xxxfb_pdata s1d13xxxfb_data = {
> -	.initregs		= s1d13xxxfb_initregs,
> -	.initregssize		= ARRAY_SIZE(s1d13xxxfb_initregs),
> -	.platform_init_video	= NULL
> -};
> -
> -static struct resource s1d13xxxfb_resources[] = {
> -	[0] = DEFINE_RES_MEM(EPSONFBSTART, EPSONFBLEN),
> -	[1] = DEFINE_RES_MEM(EPSONREGSTART, EPSONREGLEN),
> -};
> -
> -static struct platform_device s1d13xxxfb_device = {
> -	.name		= S1D_DEVICENAME,
> -	.id		= 0,
> -	.dev		= {
> -		.platform_data	= &s1d13xxxfb_data,
> -	},
> -	.num_resources	= ARRAY_SIZE(s1d13xxxfb_resources),
> -	.resource	= s1d13xxxfb_resources,
> -};
> -
> -static struct gpiod_lookup_table jornada_pcmcia_gpiod_table = {
> -	.dev_id = "1800",
> -	.table = {
> -		GPIO_LOOKUP("sa1111", 0, "s0-power", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("sa1111", 1, "s1-power", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("sa1111", 2, "s0-3v", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("sa1111", 3, "s1-3v", GPIO_ACTIVE_HIGH),
> -		{ },
> -	},
> -};
> -
> -static struct resource sa1111_resources[] = {
> -	[0] = DEFINE_RES_MEM(SA1111REGSTART, SA1111REGLEN),
> -	[1] = DEFINE_RES_IRQ(IRQ_GPIO1),
> -};
> -
> -static struct sa1111_platform_data sa1111_info = {
> -	.disable_devs	= SA1111_DEVID_PS2_MSE,
> -};
> -
> -static u64 sa1111_dmamask = 0xffffffffUL;
> -
> -static struct platform_device sa1111_device = {
> -	.name		= "sa1111",
> -	.id		= 0,
> -	.dev		= {
> -		.dma_mask = &sa1111_dmamask,
> -		.coherent_dma_mask = 0xffffffff,
> -		.platform_data = &sa1111_info,
> -	},
> -	.num_resources	= ARRAY_SIZE(sa1111_resources),
> -	.resource	= sa1111_resources,
> -};
> -
> -static struct platform_device jornada_ssp_device = {
> -	.name           = "jornada_ssp",
> -	.id             = -1,
> -};
> -
> -static struct resource jornada_kbd_resources[] = {
> -	DEFINE_RES_IRQ(IRQ_GPIO0),
> -};
> -
> -static struct platform_device jornada_kbd_device = {
> -	.name		= "jornada720_kbd",
> -	.id		= -1,
> -	.num_resources	= ARRAY_SIZE(jornada_kbd_resources),
> -	.resource	= jornada_kbd_resources,
> -};
> -
> -static struct gpiod_lookup_table jornada_ts_gpiod_table = {
> -	.dev_id		= "jornada_ts",
> -	.table		= {
> -		GPIO_LOOKUP("gpio", 9, "penup", GPIO_ACTIVE_HIGH),
> -	},
> -};
> -
> -static struct platform_device jornada_ts_device = {
> -	.name		= "jornada_ts",
> -	.id		= -1,
> -};
> -
> -static struct platform_device *devices[] __initdata = {
> -	&sa1111_device,
> -	&jornada_ssp_device,
> -	&s1d13xxxfb_device,
> -	&jornada_kbd_device,
> -	&jornada_ts_device,
> -};
> -
> -static int __init jornada720_init(void)
> -{
> -	int ret = -ENODEV;
> -
> -	if (machine_is_jornada720()) {
> -		/* we want to use gpio20 as input to drive the clock of our uart 3 */
> -		GPDR |= GPIO_GPIO20;	/* Clear gpio20 pin as input */
> -		TUCR = TUCR_VAL;
> -		GPSR = GPIO_GPIO20;	/* start gpio20 pin */
> -		udelay(1);
> -		GPCR = GPIO_GPIO20;	/* stop gpio20 */
> -		udelay(1);
> -		GPSR = GPIO_GPIO20;	/* restart gpio20 */
> -		udelay(20);		/* give it some time to restart */
> -
> -		gpiod_add_lookup_table(&jornada_ts_gpiod_table);
> -		gpiod_add_lookup_table(&jornada_pcmcia_gpiod_table);
> -
> -		ret = platform_add_devices(devices, ARRAY_SIZE(devices));
> -	}
> -
> -	return ret;
> -}
> -
> -arch_initcall(jornada720_init);
> -
> -static struct map_desc jornada720_io_desc[] __initdata = {
> -	{	/* Epson registers */
> -		.virtual	= 0xf0000000,
> -		.pfn		= __phys_to_pfn(EPSONREGSTART),
> -		.length		= EPSONREGLEN,
> -		.type		= MT_DEVICE
> -	}, {	/* Epson frame buffer */
> -		.virtual	= 0xf1000000,
> -		.pfn		= __phys_to_pfn(EPSONFBSTART),
> -		.length		= EPSONFBLEN,
> -		.type		= MT_DEVICE
> -	}
> -};
> -
> -static void __init jornada720_map_io(void)
> -{
> -	sa1100_map_io();
> -	iotable_init(jornada720_io_desc, ARRAY_SIZE(jornada720_io_desc));
> -
> -	sa1100_register_uart(0, 3);
> -	sa1100_register_uart(1, 1);
> -}
> -
> -static struct mtd_partition jornada720_partitions[] = {
> -	{
> -		.name		= "JORNADA720 boot firmware",
> -		.size		= 0x00040000,
> -		.offset		= 0,
> -		.mask_flags	= MTD_WRITEABLE, /* force read-only */
> -	}, {
> -		.name		= "JORNADA720 kernel",
> -		.size		= 0x000c0000,
> -		.offset		= 0x00040000,
> -	}, {
> -		.name		= "JORNADA720 params",
> -		.size		= 0x00040000,
> -		.offset		= 0x00100000,
> -	}, {
> -		.name		= "JORNADA720 initrd",
> -		.size		= 0x00100000,
> -		.offset		= 0x00140000,
> -	}, {
> -		.name		= "JORNADA720 root cramfs",
> -		.size		= 0x00300000,
> -		.offset		= 0x00240000,
> -	}, {
> -		.name		= "JORNADA720 usr cramfs",
> -		.size		= 0x00800000,
> -		.offset		= 0x00540000,
> -	}, {
> -		.name		= "JORNADA720 usr local",
> -		.size		= 0, /* will expand to the end of the flash */
> -		.offset		= 0x00d00000,
> -	}
> -};
> -
> -static void jornada720_set_vpp(int vpp)
> -{
> -	if (vpp)
> -		/* enabling flash write (line 470 of HP's doc) */
> -		PPSR |= PPC_LDD7;
> -	else
> -		/* disabling flash write (line 470 of HP's doc) */
> -		PPSR &= ~PPC_LDD7;
> -	PPDR |= PPC_LDD7;
> -}
> -
> -static struct flash_platform_data jornada720_flash_data = {
> -	.map_name	= "cfi_probe",
> -	.set_vpp	= jornada720_set_vpp,
> -	.parts		= jornada720_partitions,
> -	.nr_parts	= ARRAY_SIZE(jornada720_partitions),
> -};
> -
> -static struct resource jornada720_flash_resource =
> -	DEFINE_RES_MEM(SA1100_CS0_PHYS, SZ_32M);
> -
> -static void __init jornada720_mach_init(void)
> -{
> -	sa11x0_register_mtd(&jornada720_flash_data, &jornada720_flash_resource, 1);
> -}
> -
> -MACHINE_START(JORNADA720, "HP Jornada 720")
> -	/* Maintainer: Kristoffer Ericson <Kristoffer.Ericson@gmail.com> */
> -	.atag_offset	= 0x100,
> -	.map_io		= jornada720_map_io,
> -	.nr_irqs	= SA1100_NR_IRQS,
> -	.init_irq	= sa1100_init_irq,
> -	.init_time	= sa1100_timer_init,
> -	.init_machine	= jornada720_mach_init,
> -	.init_late	= sa11x0_init_late,
> -#ifdef CONFIG_SA1111
> -	.dma_zone_size	= SZ_1M,
> -#endif
> -	.restart	= sa11x0_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-sa1100/jornada720_ssp.c b/arch/arm/mach-sa1100/jornada720_ssp.c
> deleted file mode 100644
> index d94810217095..000000000000
> --- a/arch/arm/mach-sa1100/jornada720_ssp.c
> +++ /dev/null
> @@ -1,202 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  arch/arm/mac-sa1100/jornada720_ssp.c
> - *
> - *  Copyright (C) 2006/2007 Kristoffer Ericson <Kristoffer.Ericson@gmail.com>
> - *   Copyright (C) 2006 Filip Zyzniewski <filip.zyzniewski@tefnet.pl>
> - *
> - *  SSP driver for the HP Jornada 710/720/728
> - */
> -
> -#include <linux/delay.h>
> -#include <linux/errno.h>
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/platform_device.h>
> -#include <linux/sched.h>
> -#include <linux/io.h>
> -
> -#include <mach/hardware.h>
> -#include <mach/jornada720.h>
> -#include <asm/hardware/ssp.h>
> -
> -static DEFINE_SPINLOCK(jornada_ssp_lock);
> -static unsigned long jornada_ssp_flags;
> -
> -/**
> - * jornada_ssp_reverse - reverses input byte
> - * @byte: input byte to reverse
> - *
> - * we need to reverse all data we receive from the mcu due to its physical location
> - * returns : 01110111 -> 11101110
> - */
> -inline u8 jornada_ssp_reverse(u8 byte)
> -{
> -	return
> -		((0x80 & byte) >> 7) |
> -		((0x40 & byte) >> 5) |
> -		((0x20 & byte) >> 3) |
> -		((0x10 & byte) >> 1) |
> -		((0x08 & byte) << 1) |
> -		((0x04 & byte) << 3) |
> -		((0x02 & byte) << 5) |
> -		((0x01 & byte) << 7);
> -};
> -EXPORT_SYMBOL(jornada_ssp_reverse);
> -
> -/**
> - * jornada_ssp_byte - waits for ready ssp bus and sends byte
> - * @byte: input byte to transmit
> - *
> - * waits for fifo buffer to clear and then transmits, if it doesn't then we will
> - * timeout after <timeout> rounds. Needs mcu running before its called.
> - *
> - * returns : %mcu output on success
> - *	   : %-ETIMEDOUT on timeout
> - */
> -int jornada_ssp_byte(u8 byte)
> -{
> -	int timeout = 400000;
> -	u16 ret;
> -
> -	while ((GPLR & GPIO_GPIO10)) {
> -		if (!--timeout) {
> -			printk(KERN_WARNING "SSP: timeout while waiting for transmit\n");
> -			return -ETIMEDOUT;
> -		}
> -		cpu_relax();
> -	}
> -
> -	ret = jornada_ssp_reverse(byte) << 8;
> -
> -	ssp_write_word(ret);
> -	ssp_read_word(&ret);
> -
> -	return jornada_ssp_reverse(ret);
> -};
> -EXPORT_SYMBOL(jornada_ssp_byte);
> -
> -/**
> - * jornada_ssp_inout - decide if input is command or trading byte
> - * @byte: input byte to send (may be %TXDUMMY)
> - *
> - * returns : (jornada_ssp_byte(byte)) on success
> - *         : %-ETIMEDOUT on timeout failure
> - */
> -int jornada_ssp_inout(u8 byte)
> -{
> -	int ret, i;
> -
> -	/* true means command byte */
> -	if (byte != TXDUMMY) {
> -		ret = jornada_ssp_byte(byte);
> -		/* Proper return to commands is TxDummy */
> -		if (ret != TXDUMMY) {
> -			for (i = 0; i < 256; i++)/* flushing bus */
> -				if (jornada_ssp_byte(TXDUMMY) == -1)
> -					break;
> -			return -ETIMEDOUT;
> -		}
> -	} else /* Exchange TxDummy for data */
> -		ret = jornada_ssp_byte(TXDUMMY);
> -
> -	return ret;
> -};
> -EXPORT_SYMBOL(jornada_ssp_inout);
> -
> -/**
> - * jornada_ssp_start - enable mcu
> - *
> - */
> -void jornada_ssp_start(void)
> -{
> -	spin_lock_irqsave(&jornada_ssp_lock, jornada_ssp_flags);
> -	GPCR = GPIO_GPIO25;
> -	udelay(50);
> -	return;
> -};
> -EXPORT_SYMBOL(jornada_ssp_start);
> -
> -/**
> - * jornada_ssp_end - disable mcu and turn off lock
> - *
> - */
> -void jornada_ssp_end(void)
> -{
> -	GPSR = GPIO_GPIO25;
> -	spin_unlock_irqrestore(&jornada_ssp_lock, jornada_ssp_flags);
> -	return;
> -};
> -EXPORT_SYMBOL(jornada_ssp_end);
> -
> -static int jornada_ssp_probe(struct platform_device *dev)
> -{
> -	int ret;
> -
> -	GPSR = GPIO_GPIO25;
> -
> -	ret = ssp_init();
> -
> -	/* worked fine, lets not bother with anything else */
> -	if (!ret) {
> -		printk(KERN_INFO "SSP: device initialized with irq\n");
> -		return ret;
> -	}
> -
> -	printk(KERN_WARNING "SSP: initialization failed, trying non-irq solution \n");
> -
> -	/* init of Serial 4 port */
> -	Ser4MCCR0 = 0;
> -	Ser4SSCR0 = 0x0387;
> -	Ser4SSCR1 = 0x18;
> -
> -	/* clear out any left over data */
> -	ssp_flush();
> -
> -	/* enable MCU */
> -	jornada_ssp_start();
> -
> -	/* see if return value makes sense */
> -	ret = jornada_ssp_inout(GETBRIGHTNESS);
> -
> -	/* seems like it worked, just feed it with TxDummy to get rid of data */
> -	if (ret == TXDUMMY)
> -		jornada_ssp_inout(TXDUMMY);
> -
> -	jornada_ssp_end();
> -
> -	/* failed, lets just kill everything */
> -	if (ret == -ETIMEDOUT) {
> -		printk(KERN_WARNING "SSP: attempts failed, bailing\n");
> -		ssp_exit();
> -		return -ENODEV;
> -	}
> -
> -	/* all fine */
> -	printk(KERN_INFO "SSP: device initialized\n");
> -	return 0;
> -};
> -
> -static void jornada_ssp_remove(struct platform_device *dev)
> -{
> -	/* Note that this doesn't actually remove the driver, since theres nothing to remove
> -	 * It just makes sure everything is turned off */
> -	GPSR = GPIO_GPIO25;
> -	ssp_exit();
> -};
> -
> -struct platform_driver jornadassp_driver = {
> -	.probe	= jornada_ssp_probe,
> -	.remove = jornada_ssp_remove,
> -	.driver	= {
> -		.name	= "jornada_ssp",
> -	},
> -};
> -
> -static int __init jornada_ssp_init(void)
> -{
> -	return platform_driver_register(&jornadassp_driver);
> -}
> -
> -module_init(jornada_ssp_init);
> diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
> deleted file mode 100644
> index 9e8a3284a6cf..000000000000
> --- a/arch/arm/mach-sa1100/neponset.c
> +++ /dev/null
> @@ -1,438 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * linux/arch/arm/mach-sa1100/neponset.c
> - */
> -#include <linux/err.h>
> -#include <linux/gpio/driver.h>
> -#include <linux/gpio/gpio-reg.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/init.h>
> -#include <linux/ioport.h>
> -#include <linux/irq.h>
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/platform_device.h>
> -#include <linux/pm.h>
> -#include <linux/serial_core.h>
> -#include <linux/slab.h>
> -#include <linux/smc91x.h>
> -
> -#include <asm/mach-types.h>
> -#include <asm/mach/map.h>
> -#include <asm/hardware/sa1111.h>
> -#include <linux/sizes.h>
> -
> -#include <mach/hardware.h>
> -#include <mach/assabet.h>
> -#include <mach/neponset.h>
> -#include <mach/irqs.h>
> -
> -#define NEP_IRQ_SMC91X	0
> -#define NEP_IRQ_USAR	1
> -#define NEP_IRQ_SA1111	2
> -#define NEP_IRQ_NR	3
> -
> -#define WHOAMI		0x00
> -#define LEDS		0x10
> -#define SWPK		0x20
> -#define IRR		0x24
> -#define KP_Y_IN		0x80
> -#define KP_X_OUT	0x90
> -#define NCR_0		0xa0
> -#define MDM_CTL_0	0xb0
> -#define MDM_CTL_1	0xb4
> -#define AUD_CTL		0xc0
> -
> -#define IRR_ETHERNET	(1 << 0)
> -#define IRR_USAR	(1 << 1)
> -#define IRR_SA1111	(1 << 2)
> -
> -#define NCR_NGPIO	7
> -#define MDM_CTL0_NGPIO	4
> -#define MDM_CTL1_NGPIO	6
> -#define AUD_NGPIO	2
> -
> -extern void sa1110_mb_disable(void);
> -
> -#define to_neponset_gpio_chip(x) container_of(x, struct neponset_gpio_chip, gc)
> -
> -static const char *neponset_ncr_names[] = {
> -	"gp01_off", "tp_power", "ms_power", "enet_osc",
> -	"spi_kb_wk_up", "a0vpp", "a1vpp"
> -};
> -
> -static const char *neponset_mdmctl0_names[] = {
> -	"rts3", "dtr3", "rts1", "dtr1",
> -};
> -
> -static const char *neponset_mdmctl1_names[] = {
> -	"cts3", "dsr3", "dcd3", "cts1", "dsr1", "dcd1"
> -};
> -
> -static const char *neponset_aud_names[] = {
> -	"sel_1341", "mute_1341",
> -};
> -
> -struct neponset_drvdata {
> -	void __iomem *base;
> -	struct platform_device *sa1111;
> -	struct platform_device *smc91x;
> -	unsigned irq_base;
> -	struct gpio_chip *gpio[4];
> -};
> -
> -static struct gpiod_lookup_table neponset_uart1_gpio_table = {
> -	.dev_id = "sa11x0-uart.1",
> -	.table = {
> -		GPIO_LOOKUP("neponset-mdm-ctl0", 2, "rts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl0", 3, "dtr", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl1", 3, "cts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl1", 4, "dsr", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl1", 5, "dcd", GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -static struct gpiod_lookup_table neponset_uart3_gpio_table = {
> -	.dev_id = "sa11x0-uart.3",
> -	.table = {
> -		GPIO_LOOKUP("neponset-mdm-ctl0", 0, "rts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl0", 1, "dtr", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl1", 0, "cts", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl1", 1, "dsr", GPIO_ACTIVE_LOW),
> -		GPIO_LOOKUP("neponset-mdm-ctl1", 2, "dcd", GPIO_ACTIVE_LOW),
> -		{ },
> -	},
> -};
> -
> -static struct gpiod_lookup_table neponset_pcmcia_table = {
> -	.dev_id = "1800",
> -	.table = {
> -		GPIO_LOOKUP("sa1111", 1, "a0vcc", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("sa1111", 0, "a1vcc", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("neponset-ncr", 5, "a0vpp", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("neponset-ncr", 6, "a1vpp", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("sa1111", 2, "b0vcc", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("sa1111", 3, "b1vcc", GPIO_ACTIVE_HIGH),
> -		{ },
> -	},
> -};
> -
> -static struct neponset_drvdata *nep;
> -
> -void neponset_ncr_frob(unsigned int mask, unsigned int val)
> -{
> -	struct neponset_drvdata *n = nep;
> -	unsigned long m = mask, v = val;
> -
> -	if (nep)
> -		n->gpio[0]->set_multiple(n->gpio[0], &m, &v);
> -	else
> -		WARN(1, "nep unset\n");
> -}
> -EXPORT_SYMBOL(neponset_ncr_frob);
> -
> -/*
> - * Install handler for Neponset IRQ.  Note that we have to loop here
> - * since the ETHERNET and USAR IRQs are level based, and we need to
> - * ensure that the IRQ signal is deasserted before returning.  This
> - * is rather unfortunate.
> - */
> -static void neponset_irq_handler(struct irq_desc *desc)
> -{
> -	struct neponset_drvdata *d = irq_desc_get_handler_data(desc);
> -	unsigned int irr;
> -
> -	while (1) {
> -		/*
> -		 * Acknowledge the parent IRQ.
> -		 */
> -		desc->irq_data.chip->irq_ack(&desc->irq_data);
> -
> -		/*
> -		 * Read the interrupt reason register.  Let's have all
> -		 * active IRQ bits high.  Note: there is a typo in the
> -		 * Neponset user's guide for the SA1111 IRR level.
> -		 */
> -		irr = readb_relaxed(d->base + IRR);
> -		irr ^= IRR_ETHERNET | IRR_USAR;
> -
> -		if ((irr & (IRR_ETHERNET | IRR_USAR | IRR_SA1111)) == 0)
> -			break;
> -
> -		/*
> -		 * Since there is no individual mask, we have to
> -		 * mask the parent IRQ.  This is safe, since we'll
> -		 * recheck the register for any pending IRQs.
> -		 */
> -		if (irr & (IRR_ETHERNET | IRR_USAR)) {
> -			desc->irq_data.chip->irq_mask(&desc->irq_data);
> -
> -			/*
> -			 * Ack the interrupt now to prevent re-entering
> -			 * this neponset handler.  Again, this is safe
> -			 * since we'll check the IRR register prior to
> -			 * leaving.
> -			 */
> -			desc->irq_data.chip->irq_ack(&desc->irq_data);
> -
> -			if (irr & IRR_ETHERNET)
> -				generic_handle_irq(d->irq_base + NEP_IRQ_SMC91X);
> -
> -			if (irr & IRR_USAR)
> -				generic_handle_irq(d->irq_base + NEP_IRQ_USAR);
> -
> -			desc->irq_data.chip->irq_unmask(&desc->irq_data);
> -		}
> -
> -		if (irr & IRR_SA1111)
> -			generic_handle_irq(d->irq_base + NEP_IRQ_SA1111);
> -	}
> -}
> -
> -/* Yes, we really do not have any kind of masking or unmasking */
> -static void nochip_noop(struct irq_data *irq)
> -{
> -}
> -
> -static struct irq_chip nochip = {
> -	.name = "neponset",
> -	.irq_ack = nochip_noop,
> -	.irq_mask = nochip_noop,
> -	.irq_unmask = nochip_noop,
> -};
> -
> -static int neponset_init_gpio(struct gpio_chip **gcp,
> -	struct device *dev, const char *label, void __iomem *reg,
> -	unsigned num, bool in, const char *const * names)
> -{
> -	struct gpio_chip *gc;
> -
> -	gc = gpio_reg_init(dev, reg, -1, num, label, in ? 0xffffffff : 0,
> -			   readl_relaxed(reg), names, NULL, NULL);
> -	if (IS_ERR(gc))
> -		return PTR_ERR(gc);
> -
> -	*gcp = gc;
> -
> -	return 0;
> -}
> -
> -static struct sa1111_platform_data sa1111_info = {
> -	.disable_devs	= SA1111_DEVID_PS2_MSE,
> -};
> -
> -static int neponset_probe(struct platform_device *dev)
> -{
> -	struct neponset_drvdata *d;
> -	struct resource *nep_res, *sa1111_res, *smc91x_res;
> -	struct resource sa1111_resources[] = {
> -		DEFINE_RES_MEM(0x40000000, SZ_8K),
> -		{ .flags = IORESOURCE_IRQ },
> -	};
> -	struct platform_device_info sa1111_devinfo = {
> -		.parent = &dev->dev,
> -		.name = "sa1111",
> -		.id = 0,
> -		.res = sa1111_resources,
> -		.num_res = ARRAY_SIZE(sa1111_resources),
> -		.data = &sa1111_info,
> -		.size_data = sizeof(sa1111_info),
> -		.dma_mask = 0xffffffffUL,
> -	};
> -	struct resource smc91x_resources[] = {
> -		DEFINE_RES_MEM_NAMED(SA1100_CS3_PHYS,
> -			0x02000000, "smc91x-regs"),
> -		DEFINE_RES_MEM_NAMED(SA1100_CS3_PHYS + 0x02000000,
> -			0x02000000, "smc91x-attrib"),
> -		{ .flags = IORESOURCE_IRQ },
> -	};
> -	struct smc91x_platdata smc91x_platdata = {
> -		.flags = SMC91X_USE_8BIT | SMC91X_IO_SHIFT_2 | SMC91X_NOWAIT,
> -	};
> -	struct platform_device_info smc91x_devinfo = {
> -		.parent = &dev->dev,
> -		.name = "smc91x",
> -		.id = 0,
> -		.res = smc91x_resources,
> -		.num_res = ARRAY_SIZE(smc91x_resources),
> -		.data = &smc91x_platdata,
> -		.size_data = sizeof(smc91x_platdata),
> -	};
> -	int ret, irq;
> -
> -	if (nep)
> -		return -EBUSY;
> -
> -	irq = ret = platform_get_irq(dev, 0);
> -	if (ret < 0)
> -		goto err_alloc;
> -
> -	nep_res = platform_get_resource(dev, IORESOURCE_MEM, 0);
> -	smc91x_res = platform_get_resource(dev, IORESOURCE_MEM, 1);
> -	sa1111_res = platform_get_resource(dev, IORESOURCE_MEM, 2);
> -	if (!nep_res || !smc91x_res || !sa1111_res) {
> -		ret = -ENXIO;
> -		goto err_alloc;
> -	}
> -
> -	d = kzalloc_obj(*d);
> -	if (!d) {
> -		ret = -ENOMEM;
> -		goto err_alloc;
> -	}
> -
> -	d->base = ioremap(nep_res->start, SZ_4K);
> -	if (!d->base) {
> -		ret = -ENOMEM;
> -		goto err_ioremap;
> -	}
> -
> -	if (readb_relaxed(d->base + WHOAMI) != 0x11) {
> -		dev_warn(&dev->dev, "Neponset board detected, but wrong ID: %02x\n",
> -			 readb_relaxed(d->base + WHOAMI));
> -		ret = -ENODEV;
> -		goto err_id;
> -	}
> -
> -	ret = irq_alloc_descs(-1, IRQ_BOARD_START, NEP_IRQ_NR, -1);
> -	if (ret <= 0) {
> -		dev_err(&dev->dev, "unable to allocate %u irqs: %d\n",
> -			NEP_IRQ_NR, ret);
> -		if (ret == 0)
> -			ret = -ENOMEM;
> -		goto err_irq_alloc;
> -	}
> -
> -	d->irq_base = ret;
> -
> -	irq_set_chip_and_handler(d->irq_base + NEP_IRQ_SMC91X, &nochip,
> -		handle_simple_irq);
> -	irq_clear_status_flags(d->irq_base + NEP_IRQ_SMC91X, IRQ_NOREQUEST | IRQ_NOPROBE);
> -	irq_set_chip_and_handler(d->irq_base + NEP_IRQ_USAR, &nochip,
> -		handle_simple_irq);
> -	irq_clear_status_flags(d->irq_base + NEP_IRQ_USAR, IRQ_NOREQUEST | IRQ_NOPROBE);
> -	irq_set_chip(d->irq_base + NEP_IRQ_SA1111, &nochip);
> -
> -	irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
> -	irq_set_chained_handler_and_data(irq, neponset_irq_handler, d);
> -
> -	/* Disable GPIO 0/1 drivers so the buttons work on the Assabet */
> -	writeb_relaxed(NCR_GP01_OFF, d->base + NCR_0);
> -
> -	neponset_init_gpio(&d->gpio[0], &dev->dev, "neponset-ncr",
> -			   d->base + NCR_0, NCR_NGPIO, false,
> -			   neponset_ncr_names);
> -	neponset_init_gpio(&d->gpio[1], &dev->dev, "neponset-mdm-ctl0",
> -			   d->base + MDM_CTL_0, MDM_CTL0_NGPIO, false,
> -			   neponset_mdmctl0_names);
> -	neponset_init_gpio(&d->gpio[2], &dev->dev, "neponset-mdm-ctl1",
> -			   d->base + MDM_CTL_1, MDM_CTL1_NGPIO, true,
> -			   neponset_mdmctl1_names);
> -	neponset_init_gpio(&d->gpio[3], &dev->dev, "neponset-aud-ctl",
> -			   d->base + AUD_CTL, AUD_NGPIO, false,
> -			   neponset_aud_names);
> -
> -	gpiod_add_lookup_table(&neponset_uart1_gpio_table);
> -	gpiod_add_lookup_table(&neponset_uart3_gpio_table);
> -	gpiod_add_lookup_table(&neponset_pcmcia_table);
> -
> -	/*
> -	 * We would set IRQ_GPIO25 to be a wake-up IRQ, but unfortunately
> -	 * something on the Neponset activates this IRQ on sleep (eth?)
> -	 */
> -#if 0
> -	enable_irq_wake(irq);
> -#endif
> -
> -	dev_info(&dev->dev, "Neponset daughter board, providing IRQ%u-%u\n",
> -		 d->irq_base, d->irq_base + NEP_IRQ_NR - 1);
> -	nep = d;
> -
> -	/* Ensure that the memory bus request/grant signals are setup */
> -	sa1110_mb_disable();
> -
> -	sa1111_resources[0].parent = sa1111_res;
> -	sa1111_resources[1].start = d->irq_base + NEP_IRQ_SA1111;
> -	sa1111_resources[1].end = d->irq_base + NEP_IRQ_SA1111;
> -	d->sa1111 = platform_device_register_full(&sa1111_devinfo);
> -
> -	smc91x_resources[0].parent = smc91x_res;
> -	smc91x_resources[1].parent = smc91x_res;
> -	smc91x_resources[2].start = d->irq_base + NEP_IRQ_SMC91X;
> -	smc91x_resources[2].end = d->irq_base + NEP_IRQ_SMC91X;
> -	d->smc91x = platform_device_register_full(&smc91x_devinfo);
> -
> -	platform_set_drvdata(dev, d);
> -
> -	return 0;
> -
> - err_irq_alloc:
> - err_id:
> -	iounmap(d->base);
> - err_ioremap:
> -	kfree(d);
> - err_alloc:
> -	return ret;
> -}
> -
> -static void neponset_remove(struct platform_device *dev)
> -{
> -	struct neponset_drvdata *d = platform_get_drvdata(dev);
> -	int irq = platform_get_irq(dev, 0);
> -
> -	if (!IS_ERR(d->sa1111))
> -		platform_device_unregister(d->sa1111);
> -	if (!IS_ERR(d->smc91x))
> -		platform_device_unregister(d->smc91x);
> -
> -	gpiod_remove_lookup_table(&neponset_pcmcia_table);
> -	gpiod_remove_lookup_table(&neponset_uart3_gpio_table);
> -	gpiod_remove_lookup_table(&neponset_uart1_gpio_table);
> -
> -	irq_set_chained_handler(irq, NULL);
> -	irq_free_descs(d->irq_base, NEP_IRQ_NR);
> -	nep = NULL;
> -	iounmap(d->base);
> -	kfree(d);
> -}
> -
> -#ifdef CONFIG_PM_SLEEP
> -static int neponset_resume(struct device *dev)
> -{
> -	struct neponset_drvdata *d = dev_get_drvdata(dev);
> -	int i, ret = 0;
> -
> -	for (i = 0; i < ARRAY_SIZE(d->gpio); i++) {
> -		ret = gpio_reg_resume(d->gpio[i]);
> -		if (ret)
> -			break;
> -	}
> -
> -	return ret;
> -}
> -
> -static const struct dev_pm_ops neponset_pm_ops = {
> -	.resume_noirq = neponset_resume,
> -	.restore_noirq = neponset_resume,
> -};
> -#define PM_OPS &neponset_pm_ops
> -#else
> -#define PM_OPS NULL
> -#endif
> -
> -static struct platform_driver neponset_device_driver = {
> -	.probe		= neponset_probe,
> -	.remove		= neponset_remove,
> -	.driver		= {
> -		.name	= "neponset",
> -		.pm	= PM_OPS,
> -	},
> -};
> -
> -static int __init neponset_init(void)
> -{
> -	return platform_driver_register(&neponset_device_driver);
> -}
> -
> -subsys_initcall(neponset_init);
> diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c
> deleted file mode 100644
> index 9495fc109baa..000000000000
> --- a/arch/arm/mach-sa1100/pm.c
> +++ /dev/null
> @@ -1,128 +0,0 @@
> -/*
> - * SA1100 Power Management Routines
> - *
> - * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU General Public License.
> - *
> - * History:
> - *
> - * 2001-02-06:	Cliff Brake         Initial code
> - *
> - * 2001-02-25:	Sukjae Cho <sjcho@east.isi.edu> &
> - * 		Chester Kuo <chester@linux.org.tw>
> - * 			Save more value for the resume function! Support
> - * 			Bitsy/Assabet/Freebird board
> - *
> - * 2001-08-29:	Nicolas Pitre <nico@fluxnic.net>
> - * 			Cleaned up, pushed platform dependent stuff
> - * 			in the platform specific files.
> - *
> - * 2002-05-27:	Nicolas Pitre	Killed sleep.h and the kmalloced save array.
> - * 				Storage is local on the stack now.
> - */
> -#include <linux/init.h>
> -#include <linux/io.h>
> -#include <linux/suspend.h>
> -#include <linux/errno.h>
> -#include <linux/time.h>
> -
> -#include <mach/hardware.h>
> -#include <asm/page.h>
> -#include <asm/suspend.h>
> -#include <asm/mach/time.h>
> -
> -#include "generic.h"
> -
> -extern int sa1100_finish_suspend(unsigned long);
> -
> -#define SAVE(x)		sleep_save[SLEEP_SAVE_##x] = x
> -#define RESTORE(x)	x = sleep_save[SLEEP_SAVE_##x]
> -
> -/*
> - * List of global SA11x0 peripheral registers to preserve.
> - * More ones like CP and general purpose register values are preserved
> - * on the stack and then the stack pointer is stored last in sleep.S.
> - */
> -enum {	SLEEP_SAVE_GPDR, SLEEP_SAVE_GAFR,
> -	SLEEP_SAVE_PPDR, SLEEP_SAVE_PPSR, SLEEP_SAVE_PPAR, SLEEP_SAVE_PSDR,
> -
> -	SLEEP_SAVE_Ser1SDCR0,
> -
> -	SLEEP_SAVE_COUNT
> -};
> -
> -
> -static int sa11x0_pm_enter(suspend_state_t state)
> -{
> -	unsigned long gpio, sleep_save[SLEEP_SAVE_COUNT];
> -
> -	gpio = GPLR;
> -
> -	/* save vital registers */
> -	SAVE(GPDR);
> -	SAVE(GAFR);
> -
> -	SAVE(PPDR);
> -	SAVE(PPSR);
> -	SAVE(PPAR);
> -	SAVE(PSDR);
> -
> -	SAVE(Ser1SDCR0);
> -
> -	/* Clear previous reset status */
> -	RCSR = RCSR_HWR | RCSR_SWR | RCSR_WDR | RCSR_SMR;
> -
> -	/* set resume return address */
> -	PSPR = __pa_symbol(cpu_resume);
> -
> -	/* go zzz */
> -	cpu_suspend(0, sa1100_finish_suspend);
> -
> -	/*
> -	 * Ensure not to come back here if it wasn't intended
> -	 */
> -	RCSR = RCSR_SMR;
> -	PSPR = 0;
> -
> -	/*
> -	 * Ensure interrupt sources are disabled; we will re-init
> -	 * the interrupt subsystem via the device manager.
> -	 */
> -	ICLR = 0;
> -	ICCR = 1;
> -	ICMR = 0;
> -
> -	/* restore registers */
> -	RESTORE(GPDR);
> -	RESTORE(GAFR);
> -
> -	RESTORE(PPDR);
> -	RESTORE(PPSR);
> -	RESTORE(PPAR);
> -	RESTORE(PSDR);
> -
> -	RESTORE(Ser1SDCR0);
> -
> -	GPSR = gpio;
> -	GPCR = ~gpio;
> -
> -	/*
> -	 * Clear the peripheral sleep-hold bit.
> -	 */
> -	PSSR = PSSR_PH;
> -
> -	return 0;
> -}
> -
> -static const struct platform_suspend_ops sa11x0_pm_ops = {
> -	.enter		= sa11x0_pm_enter,
> -	.valid		= suspend_valid_only_mem,
> -};
> -
> -int __init sa11x0_pm_init(void)
> -{
> -	suspend_set_ops(&sa11x0_pm_ops);
> -	return 0;
> -}
> diff --git a/arch/arm/mach-sa1100/sleep.S b/arch/arm/mach-sa1100/sleep.S
> deleted file mode 100644
> index 85863741ef8b..000000000000
> --- a/arch/arm/mach-sa1100/sleep.S
> +++ /dev/null
> @@ -1,143 +0,0 @@
> -/*
> - * SA11x0 Assembler Sleep/WakeUp Management Routines
> - *
> - * Copyright (c) 2001 Cliff Brake <cbrake@accelent.com>
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU General Public License.
> - *
> - * History:
> - *
> - * 2001-02-06: Cliff Brake         Initial code
> - *
> - * 2001-08-29:	Nicolas Pitre	Simplified.
> - *
> - * 2002-05-27:	Nicolas Pitre	Revisited, more cleanup and simplification.
> - *				Storage is on the stack now.
> - */
> -
> -#include <linux/linkage.h>
> -#include <asm/assembler.h>
> -#include <mach/hardware.h>
> -
> -		.text
> -/*
> - * sa1100_finish_suspend()
> - *
> - * Causes sa11x0 to enter sleep state
> - *
> - * Must be aligned to a cacheline.
> - */
> -	.balign	32
> -ENTRY(sa1100_finish_suspend)
> -	@ disable clock switching
> -	mcr	p15, 0, r1, c15, c2, 2
> -
> -	ldr	r6, =MDREFR
> -	ldr	r4, [r6]
> -	orr     r4, r4, #MDREFR_K1DB2
> -	ldr	r5, =PPCR
> -
> -	@ Pre-load __loop_udelay into the I-cache
> -	mov	r0, #1
> -	bl	__loop_udelay
> -	mov	r0, r0
> -
> -	@ The following must all exist in a single cache line to
> -	@ avoid accessing memory until this sequence is complete,
> -	@ otherwise we occasionally hang.
> -
> -	@ Adjust memory timing before lowering CPU clock
> -	str     r4, [r6]
> -
> -	@ delay 90us and set CPU PLL to lowest speed
> -	@ fixes resume problem on high speed SA1110
> -	mov	r0, #90
> -	bl	__loop_udelay
> -	mov	r1, #0
> -	str	r1, [r5]
> -	mov	r0, #90
> -	bl	__loop_udelay
> -
> -	/*
> -	 * SA1110 SDRAM controller workaround.  register values:
> -	 *
> -	 * r0  = &MSC0
> -	 * r1  = &MSC1
> -	 * r2  = &MSC2
> -	 * r3  = MSC0 value
> -	 * r4  = MSC1 value
> -	 * r5  = MSC2 value
> -	 * r6  = &MDREFR
> -	 * r7  = first MDREFR value
> -	 * r8  = second MDREFR value
> -	 * r9  = &MDCNFG
> -	 * r10 = MDCNFG value
> -	 * r11 = third MDREFR value
> -	 * r12 = &PMCR
> -	 * r13 = PMCR value (1)
> -	 */
> -
> -	ldr	r0, =MSC0
> -	ldr	r1, =MSC1
> -	ldr	r2, =MSC2
> -
> -	ldr	r3, [r0]
> -	bic	r3, r3, #FMsk(MSC_RT)
> -	bic	r3, r3, #FMsk(MSC_RT)<<16
> -
> -	ldr	r4, [r1]
> -	bic	r4, r4, #FMsk(MSC_RT)
> -	bic	r4, r4, #FMsk(MSC_RT)<<16
> -
> -	ldr	r5, [r2]
> -	bic	r5, r5, #FMsk(MSC_RT)
> -	bic	r5, r5, #FMsk(MSC_RT)<<16
> -
> -	ldr	r7, [r6]
> -	bic	r7, r7, #0x0000FF00
> -	bic	r7, r7, #0x000000F0
> -	orr	r8, r7, #MDREFR_SLFRSH
> -
> -	ldr	r9, =MDCNFG
> -	ldr	r10, [r9]
> -	bic	r10, r10, #(MDCNFG_DE0+MDCNFG_DE1)
> -	bic	r10, r10, #(MDCNFG_DE2+MDCNFG_DE3)
> -
> -	bic	r11, r8, #MDREFR_SLFRSH
> -	bic	r11, r11, #MDREFR_E1PIN
> -
> -	ldr	r12, =PMCR
> -
> -	mov	r13, #PMCR_SF
> -
> -	b	sa1110_sdram_controller_fix
> -
> -	.align 5
> -sa1110_sdram_controller_fix:
> -
> -	@ Step 1 clear RT field of all MSCx registers
> -	str 	r3, [r0]
> -	str	r4, [r1]
> -	str	r5, [r2]
> -
> -	@ Step 2 clear DRI field in MDREFR
> -	str	r7, [r6]
> -
> -	@ Step 3 set SLFRSH bit in MDREFR
> -	str	r8, [r6]
> -
> -	@ Step 4 clear DE bis in MDCNFG
> -	str	r10, [r9]
> -
> -	@ Step 5 clear DRAM refresh control register
> -	str	r11, [r6]
> -
> -	@ Wow, now the hardware suspend request pins can be used, that makes them functional for
> -	@ about 7 ns out of the	entire time that the CPU is running!
> -
> -	@ Step 6 set force sleep bit in PMCR
> -
> -	str	r13, [r12]
> -
> -20:	b	20b			@ loop waiting for sleep
> diff --git a/arch/arm/mach-sa1100/ssp.c b/arch/arm/mach-sa1100/ssp.c
> deleted file mode 100644
> index 613fd767afcf..000000000000
> --- a/arch/arm/mach-sa1100/ssp.c
> +++ /dev/null
> @@ -1,240 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - *  linux/arch/arm/mach-sa1100/ssp.c
> - *
> - *  Copyright (C) 2003 Russell King.
> - *
> - *  Generic SSP driver.  This provides the generic core for simple
> - *  IO-based SSP applications.
> - */
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/sched.h>
> -#include <linux/errno.h>
> -#include <linux/interrupt.h>
> -#include <linux/ioport.h>
> -#include <linux/init.h>
> -#include <linux/io.h>
> -
> -#include <mach/hardware.h>
> -#include <mach/irqs.h>
> -#include <asm/hardware/ssp.h>
> -
> -#define TIMEOUT 100000
> -
> -static irqreturn_t ssp_interrupt(int irq, void *dev_id)
> -{
> -	unsigned int status = Ser4SSSR;
> -
> -	if (status & SSSR_ROR)
> -		printk(KERN_WARNING "SSP: receiver overrun\n");
> -
> -	Ser4SSSR = SSSR_ROR;
> -
> -	return status ? IRQ_HANDLED : IRQ_NONE;
> -}
> -
> -/**
> - * ssp_write_word - write a word to the SSP port
> - * @data: 16-bit, MSB justified data to write.
> - *
> - * Wait for a free entry in the SSP transmit FIFO, and write a data
> - * word to the SSP port.  Wait for the SSP port to start sending
> - * the data.
> - *
> - * The caller is expected to perform the necessary locking.
> - *
> - * Returns:
> - *   %-ETIMEDOUT	timeout occurred
> - *   0			success
> - */
> -int ssp_write_word(u16 data)
> -{
> -	int timeout = TIMEOUT;
> -
> -	while (!(Ser4SSSR & SSSR_TNF)) {
> -	        if (!--timeout)
> -	        	return -ETIMEDOUT;
> -		cpu_relax();
> -	}
> -
> -	Ser4SSDR = data;
> -
> -	timeout = TIMEOUT;
> -	while (!(Ser4SSSR & SSSR_BSY)) {
> -	        if (!--timeout)
> -	        	return -ETIMEDOUT;
> -		cpu_relax();
> -	}
> -
> -	return 0;
> -}
> -
> -/**
> - * ssp_read_word - read a word from the SSP port
> - *
> - * Wait for a data word in the SSP receive FIFO, and return the
> - * received data.  Data is LSB justified.
> - *
> - * Note: Currently, if data is not expected to be received, this
> - * function will wait for ever.
> - *
> - * The caller is expected to perform the necessary locking.
> - *
> - * Returns:
> - *   %-ETIMEDOUT	timeout occurred
> - *   16-bit data	success
> - */
> -int ssp_read_word(u16 *data)
> -{
> -	int timeout = TIMEOUT;
> -
> -	while (!(Ser4SSSR & SSSR_RNE)) {
> -	        if (!--timeout)
> -	        	return -ETIMEDOUT;
> -		cpu_relax();
> -	}
> -
> -	*data = (u16)Ser4SSDR;
> -
> -	return 0;
> -}
> -
> -/**
> - * ssp_flush - flush the transmit and receive FIFOs
> - *
> - * Wait for the SSP to idle, and ensure that the receive FIFO
> - * is empty.
> - *
> - * The caller is expected to perform the necessary locking.
> - *
> - * Returns:
> - *   %-ETIMEDOUT	timeout occurred
> - *   0			success
> - */
> -int ssp_flush(void)
> -{
> -	int timeout = TIMEOUT * 2;
> -
> -	do {
> -		while (Ser4SSSR & SSSR_RNE) {
> -		        if (!--timeout)
> -		        	return -ETIMEDOUT;
> -			(void) Ser4SSDR;
> -		}
> -	        if (!--timeout)
> -	        	return -ETIMEDOUT;
> -	} while (Ser4SSSR & SSSR_BSY);
> -
> -	return 0;
> -}
> -
> -/**
> - * ssp_enable - enable the SSP port
> - *
> - * Turn on the SSP port.
> - */
> -void ssp_enable(void)
> -{
> -	Ser4SSCR0 |= SSCR0_SSE;
> -}
> -
> -/**
> - * ssp_disable - shut down the SSP port
> - *
> - * Turn off the SSP port, optionally powering it down.
> - */
> -void ssp_disable(void)
> -{
> -	Ser4SSCR0 &= ~SSCR0_SSE;
> -}
> -
> -/**
> - * ssp_save_state - save the SSP configuration
> - * @ssp: pointer to structure to save SSP configuration
> - *
> - * Save the configured SSP state for suspend.
> - */
> -void ssp_save_state(struct ssp_state *ssp)
> -{
> -	ssp->cr0 = Ser4SSCR0;
> -	ssp->cr1 = Ser4SSCR1;
> -
> -	Ser4SSCR0 &= ~SSCR0_SSE;
> -}
> -
> -/**
> - * ssp_restore_state - restore a previously saved SSP configuration
> - * @ssp: pointer to configuration saved by ssp_save_state
> - *
> - * Restore the SSP configuration saved previously by ssp_save_state.
> - */
> -void ssp_restore_state(struct ssp_state *ssp)
> -{
> -	Ser4SSSR = SSSR_ROR;
> -
> -	Ser4SSCR0 = ssp->cr0 & ~SSCR0_SSE;
> -	Ser4SSCR1 = ssp->cr1;
> -	Ser4SSCR0 = ssp->cr0;
> -}
> -
> -/**
> - * ssp_init - setup the SSP port
> - *
> - * initialise and claim resources for the SSP port.
> - *
> - * Returns:
> - *   %-ENODEV	if the SSP port is unavailable
> - *   %-EBUSY	if the resources are already in use
> - *   %0		on success
> - */
> -int ssp_init(void)
> -{
> -	int ret;
> -
> -	if (!(PPAR & PPAR_SPR) && (Ser4MCCR0 & MCCR0_MCE))
> -		return -ENODEV;
> -
> -	if (!request_mem_region(__PREG(Ser4SSCR0), 0x18, "SSP")) {
> -		return -EBUSY;
> -	}
> -
> -	Ser4SSSR = SSSR_ROR;
> -
> -	ret = request_irq(IRQ_Ser4SSP, ssp_interrupt, 0, "SSP", NULL);
> -	if (ret)
> -		goto out_region;
> -
> -	return 0;
> -
> - out_region:
> -	release_mem_region(__PREG(Ser4SSCR0), 0x18);
> -	return ret;
> -}
> -
> -/**
> - * ssp_exit - undo the effects of ssp_init
> - *
> - * release and free resources for the SSP port.
> - */
> -void ssp_exit(void)
> -{
> -	Ser4SSCR0 &= ~SSCR0_SSE;
> -
> -	free_irq(IRQ_Ser4SSP, NULL);
> -	release_mem_region(__PREG(Ser4SSCR0), 0x18);
> -}
> -
> -MODULE_AUTHOR("Russell King");
> -MODULE_DESCRIPTION("SA11x0 SSP PIO driver");
> -MODULE_LICENSE("GPL");
> -
> -EXPORT_SYMBOL(ssp_write_word);
> -EXPORT_SYMBOL(ssp_read_word);
> -EXPORT_SYMBOL(ssp_flush);
> -EXPORT_SYMBOL(ssp_enable);
> -EXPORT_SYMBOL(ssp_disable);
> -EXPORT_SYMBOL(ssp_save_state);
> -EXPORT_SYMBOL(ssp_restore_state);
> -EXPORT_SYMBOL(ssp_init);
> -EXPORT_SYMBOL(ssp_exit);
> diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
> index 0cc1bf04686d..bf94f2718293 100644
> --- a/arch/arm/mm/init.c
> +++ b/arch/arm/mm/init.c
> @@ -226,11 +226,6 @@ void __init arch_mm_preinit(void)
>  	swiotlb_init(max_pfn > arm_dma_pfn_limit, SWIOTLB_VERBOSE);
>  #endif
>  
> -#ifdef CONFIG_SA1111
> -	/* now that our DMA memory is actually so designated, we can free it */
> -	memblock_phys_free(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET);
> -#endif
> -
>  	/*
>  	 * Check boundaries twice: Some fundamental inconsistencies can
>  	 * be detected at build time already.
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index 23b87b5ef7f1..350f6dcc24cc 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -1339,14 +1339,6 @@ void __init arm_mm_memblock_reserve(void)
>  	 * and can only be in node 0.
>  	 */
>  	memblock_reserve(__pa(swapper_pg_dir), SWAPPER_PG_DIR_SIZE);
> -
> -#ifdef CONFIG_SA1111
> -	/*
> -	 * Because of the SA1111 DMA bug, we want to preserve our
> -	 * precious DMA-able memory...
> -	 */
> -	memblock_reserve(PHYS_OFFSET, __pa(swapper_pg_dir) - PHYS_OFFSET);
> -#endif
>  }
>  
>  /*
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 05b9233b9418..55ffee3d75ce 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -1541,8 +1541,8 @@ config RTC_DRV_EP93XX
>  	  will be called rtc-ep93xx.
>  
>  config RTC_DRV_SA1100
> -	tristate "SA11x0/PXA2xx/PXA910"
> -	depends on ARCH_SA1100 || ARCH_PXA || ARCH_MMP
> +	tristate "PXA2xx/PXA910"
> +	depends on ARCH_PXA || ARCH_MMP
>  	help
>  	  If you say Y here you will get access to the real time clock
>  	  built into your SA11x0 or PXA2xx CPU.
> diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
> index 26b2f4184ecc..dc98484dbe27 100644
> --- a/drivers/rtc/rtc-sa1100.c
> +++ b/drivers/rtc/rtc-sa1100.c
> @@ -275,18 +275,10 @@ static int sa1100_rtc_probe(struct platform_device *pdev)
>  	if (IS_ERR(base))
>  		return PTR_ERR(base);
>  
> -	if (IS_ENABLED(CONFIG_ARCH_SA1100) ||
> -	    of_device_is_compatible(pdev->dev.of_node, "mrvl,sa1100-rtc")) {
> -		info->rcnr = base + 0x04;
> -		info->rtsr = base + 0x10;
> -		info->rtar = base + 0x00;
> -		info->rttr = base + 0x08;
> -	} else {
> -		info->rcnr = base + 0x0;
> -		info->rtsr = base + 0x8;
> -		info->rtar = base + 0x4;
> -		info->rttr = base + 0xc;
> -	}
> +	info->rcnr = base + 0x0;
> +	info->rtsr = base + 0x8;
> +	info->rtar = base + 0x4;
> +	info->rttr = base + 0xc;
>  
>  	platform_set_drvdata(pdev, info);
>  	device_init_wakeup(&pdev->dev, true);
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index f7d0a0c2c0ef..0ab0dcc6d27d 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -614,16 +614,16 @@ config S3C2410_WATCHDOG
>  	  be called s3c2410_wdt.
>  
>  config SA1100_WATCHDOG
> -	tristate "SA1100/PXA2xx watchdog"
> -	depends on ARCH_SA1100 || ARCH_PXA || COMPILE_TEST
> +	tristate "PXA2xx watchdog"
> +	depends on ARCH_PXA || COMPILE_TEST
>  	help
> -	  Watchdog timer embedded into SA11x0 and PXA2xx chips. This will
> -	  reboot your system when timeout is reached.
> +	  Watchdog timer embedded PXA2xx chips. This will reboot your
> +	  system when timeout is reached.
>  
>  	  NOTE: once enabled, this timer cannot be disabled.
>  
> -	  To compile this driver as a module, choose M here: the
> -	  module will be called sa1100_wdt.
> +	  To compile this driver as a module, choose M here: the module
> +	  will be called sa1100_wdt.
>  
>  config DW_WATCHDOG
>  	tristate "Synopsys DesignWare watchdog"
> -- 
> 2.53.0
> 
> 

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
  2026-09-08 17:39   ` Linus Walleij
  2026-09-08 19:58   ` Sverdlin, Alexander
@ 2026-09-08 21:09   ` Rob Herring
  2026-09-08 21:30     ` Arnd Bergmann
  2026-09-09 12:41   ` Alexandre Belloni
  2026-09-10 12:23   ` Nicolas Ferre
  4 siblings, 1 reply; 70+ messages in thread
From: Rob Herring @ 2026-09-08 21:09 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

On Tue, Sep 08, 2026 at 05:28:02PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Atmel at91 line, now known as Microchip SAM contains both
> SoCs using ARM926 and Cortex-A CPUs as well as a number of
> microcontrollers. Only a single one of those MCUs currently
> has Linux support, and has no known users.
> 
> The samv7 platform was deprecated in Linux-7.3LTS, which will
> remain supported a while longer after it is gone from mainline.
> 
> Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/Kconfig.debug      | 10 ----------
>  arch/arm/mach-at91/Kconfig  | 11 +----------
>  arch/arm/mach-at91/Makefile |  1 -
>  arch/arm/mach-at91/samv7.c  | 17 -----------------
>  drivers/soc/atmel/soc.c     | 36 ------------------------------------
>  5 files changed, 1 insertion(+), 74 deletions(-)
>  delete mode 100644 arch/arm/mach-at91/samv7.c

Do you want to drop all the samv7 platform compatibles from at91.yaml? 
Are there non-Linux users using DT?

Rob

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  2026-09-08 20:36   ` Nicolas Pitre
@ 2026-09-08 21:26     ` David Laight
  2026-09-08 21:32     ` Arnd Bergmann
  1 sibling, 0 replies; 70+ messages in thread
From: David Laight @ 2026-09-08 21:26 UTC (permalink / raw)
  To: Nicolas Pitre
  Cc: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King, Drew Fustini, Arnd Bergmann,
	Rob Herring, Conor Dooley, Liviu Dudau, Sudeep Holla,
	Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	linux-doc, linux-kernel, linux-arm-kernel, devicetree, imx,
	linux-stm32, linux-omap, Guenter Roeck

On Tue, 8 Sep 2026 16:36:47 -0400 (EDT)
Nicolas Pitre <nico@fluxnic.net> wrote:

> On Tue, 8 Sep 2026, Arnd Bergmann wrote:
> 
> > From: Arnd Bergmann <arnd@arndb.de>
> > 
> > Most sa1100 platforms were removed a few years, with the remaining
> > ones left as a starting point for a conversion to devicetree.
> > 
> > Nothing ever happened on that front, so remove the rest now,
> > including the sa1111 and locomo drivers that were once shared
> > with pxa but are already sa1100-exclusive now.  
> 
> The SA1100 was the starting point of my career. Feels strange how much 
> time has passed.
> 
> I parted with such hardware a long time ago in any case.

I failed to 'steal' a J-Slate when I left Tadpole.
(a very early 'tablet' computer with an LCD panel)
So I don't have one either.
Although that ran VxWorks and rtx-windows (after I patched bits so it worked!).

	David

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 21:09   ` Rob Herring
@ 2026-09-08 21:30     ` Arnd Bergmann
  2026-09-10 12:25       ` Nicolas Ferre
  0 siblings, 1 reply; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 21:30 UTC (permalink / raw)
  To: Rob Herring, Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Conor Dooley, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	A. Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP

On Tue, Sep 8, 2026, at 23:09, Rob Herring wrote:
>
> Do you want to drop all the samv7 platform compatibles from at91.yaml? 
> Are there non-Linux users using DT?

I see that zephyr uses DT here, but it uses an incompatible
set of bindings, see
https://github.com/zephyrproject-rtos/zephyr/tree/main/dts/arm/atmel

I'm dropping the references from the binding now, and also from
Documentation/arch/arm/microchip.rst, which I had missed earlier.

      Arnd

diff --git a/Documentation/arch/arm/microchip.rst b/Documentation/arch/arm/microchip.rst
index e721d855f2c9..b776a6656717 100644
--- a/Documentation/arch/arm/microchip.rst
+++ b/Documentation/arch/arm/microchip.rst
@@ -157,45 +157,6 @@ the Microchip website: http://www.microchip.com.
 
           Coming soon
 
-    * ARM Cortex-M7 MCUs
-      - sams70 family
-
-        - sams70j19
-        - sams70j20
-        - sams70j21
-        - sams70n19
-        - sams70n20
-        - sams70n21
-        - sams70q19
-        - sams70q20
-        - sams70q21
-
-      - samv70 family
-
-        - samv70j19
-        - samv70j20
-        - samv70n19
-        - samv70n20
-        - samv70q19
-        - samv70q20
-
-      - samv71 family
-
-        - samv71j19
-        - samv71j20
-        - samv71j21
-        - samv71n19
-        - samv71n20
-        - samv71n21
-        - samv71q19
-        - samv71q20
-        - samv71q21
-
-          * Datasheet
-
-          http://ww1.microchip.com/downloads/en/DeviceDoc/SAM-E70-S70-V70-V71-Family-Data-Sheet-DS60001527D.pdf
-
-
 Linux kernel information
 ------------------------
 Linux kernel mach directory: arch/arm/mach-at91
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.yaml b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
index bf161e0950ea..d9b32a95b136 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.yaml
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
@@ -258,45 +258,6 @@ properties:
           - const: microchip,lan9668
           - const: microchip,lan966
 
-      - items:
-          - enum:
-              - atmel,sams70j19
-              - atmel,sams70j20
-              - atmel,sams70j21
-              - atmel,sams70n19
-              - atmel,sams70n20
-              - atmel,sams70n21
-              - atmel,sams70q19
-              - atmel,sams70q20
-              - atmel,sams70q21
-          - const: atmel,sams70
-          - const: atmel,samv7
-
-      - items:
-          - enum:
-              - atmel,samv70j19
-              - atmel,samv70j20
-              - atmel,samv70n19
-              - atmel,samv70n20
-              - atmel,samv70q19
-              - atmel,samv70q20
-          - const: atmel,samv70
-          - const: atmel,samv7
-
-      - items:
-          - enum:
-              - atmel,samv71j19
-              - atmel,samv71j20
-              - atmel,samv71j21
-              - atmel,samv71n19
-              - atmel,samv71n20
-              - atmel,samv71n21
-              - atmel,samv71q19
-              - atmel,samv71q20
-              - atmel,samv71q21
-          - const: atmel,samv71
-          - const: atmel,samv7
-
 additionalProperties: true
 
 ...

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 01/13] ARM: remove sa1100 platform
  2026-09-08 20:36   ` Nicolas Pitre
  2026-09-08 21:26     ` David Laight
@ 2026-09-08 21:32     ` Arnd Bergmann
  1 sibling, 0 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-08 21:32 UTC (permalink / raw)
  To: Nicolas Pitre, Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, A. Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Red Hat),
	linux-doc, linux-kernel, linux-arm-kernel, devicetree, imx,
	linux-stm32, Linux-OMAP, Guenter Roeck

On Tue, Sep 8, 2026, at 22:36, Nicolas Pitre wrote:
> On Tue, 8 Sep 2026, Arnd Bergmann wrote:
>
>> From: Arnd Bergmann <arnd@arndb.de>
>> 
>> Most sa1100 platforms were removed a few years, with the remaining
>> ones left as a starting point for a conversion to devicetree.
>> 
>> Nothing ever happened on that front, so remove the rest now,
>> including the sa1111 and locomo drivers that were once shared
>> with pxa but are already sa1100-exclusive now.
>
> The SA1100 was the starting point of my career. Feels strange how much 
> time has passed.

Indeed, same for me: my first paid job involved both SA1100 and
the i486 compatible AMD Élan SoC that was also removed this year.

> I parted with such hardware a long time ago in any case.
>
> Acked-by: Nicolas Pitre <nico@fluxnic.net>

Thanks,

       Arnd

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 03/13] ARM: remove riscpc
  2026-09-08 15:27 ` [PATCH 03/13] ARM: remove riscpc Arnd Bergmann
@ 2026-09-09  8:04   ` Thomas Zimmermann
  2026-09-09 16:42   ` Bart Van Assche
  1 sibling, 0 replies; 70+ messages in thread
From: Thomas Zimmermann @ 2026-09-09  8:04 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Ian Molton, Jens Axboe,
	Helge Deller, Paul E. McKenney, linux-block, linux-serial,
	linux-fbdev

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)



^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 06/13] ARM: omap2: remove omap24xx support
  2026-09-08 15:27 ` [PATCH 06/13] ARM: omap2: remove omap24xx support Arnd Bergmann
                     ` (2 preceding siblings ...)
  2026-09-08 19:21   ` Karl Mehltretter
@ 2026-09-09  8:06   ` Thomas Zimmermann
  3 siblings, 0 replies; 70+ messages in thread
From: Thomas Zimmermann @ 2026-09-09  8:06 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Paul Walmsley,
	Herbert Xu, David S. Miller, Mauro Carvalho Chehab,
	Kyungmin Park, Helge Deller, Tero Kristo, Stephen Boyd,
	linux-media, linux-mtd, linux-fbdev, dri-devel, linux-clk



Am 08.09.26 um 17:27 schrieb Arnd Bergmann:
>   drivers/video/fbdev/omap2/omapfb/Kconfig      |    2 +-

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> # omapfb

>   include/linux/clk/ti.h                        |    8 -
>   86 files changed, 60 insertions(+), 10696 deletions(-)
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2.dtsi
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-h4.dts
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n800.dts
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n810.dts
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2420.dtsi
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap2430.dtsi
>   delete mode 100644 arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
>   delete mode 100644 arch/arm/mach-omap2/board-n8x0.c
>   delete mode 100644 arch/arm/mach-omap2/clkt2xxx_dpll.c
>   delete mode 100644 arch/arm/mach-omap2/clkt2xxx_dpllcore.c
>   delete mode 100644 arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
>   delete mode 100644 arch/arm/mach-omap2/clock2xxx.h
>   delete mode 100644 arch/arm/mach-omap2/clockdomains2420_data.c
>   delete mode 100644 arch/arm/mach-omap2/clockdomains2430_data.c
>   delete mode 100644 arch/arm/mach-omap2/cm-regbits-24xx.h
>   delete mode 100644 arch/arm/mach-omap2/cm2xxx.c
>   delete mode 100644 arch/arm/mach-omap2/cm2xxx.h
>   delete mode 100644 arch/arm/mach-omap2/common-board-devices.h
>   delete mode 100644 arch/arm/mach-omap2/gpmc.h
>   delete mode 100644 arch/arm/mach-omap2/l3_2xxx.h
>   delete mode 100644 arch/arm/mach-omap2/l4_2xxx.h
>   delete mode 100644 arch/arm/mach-omap2/mmc.h
>   delete mode 100644 arch/arm/mach-omap2/msdi.c
>   delete mode 100644 arch/arm/mach-omap2/omap2-restart.c
>   delete mode 100644 arch/arm/mach-omap2/omap24xx.h
>   delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2420_data.c
>   delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2430_data.c
>   delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
>   delete mode 100644 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
>   delete mode 100644 arch/arm/mach-omap2/opp2420_data.c
>   delete mode 100644 arch/arm/mach-omap2/opp2430_data.c
>   delete mode 100644 arch/arm/mach-omap2/opp2xxx.h
>   delete mode 100644 arch/arm/mach-omap2/powerdomains2xxx_data.c
>   delete mode 100644 arch/arm/mach-omap2/prm-regbits-24xx.h
>   delete mode 100644 arch/arm/mach-omap2/prm2xxx.c
>   delete mode 100644 arch/arm/mach-omap2/prm2xxx.h
>   delete mode 100644 arch/arm/mach-omap2/sdrc2xxx.c
>   delete mode 100644 arch/arm/mach-omap2/sleep24xx.S
>   delete mode 100644 arch/arm/mach-omap2/sram242x.S
>   delete mode 100644 arch/arm/mach-omap2/sram243x.S
>   delete mode 100644 arch/arm/mach-omap2/usb-tusb6010.c
>   delete mode 100644 arch/arm/mach-omap2/usb-tusb6010.h
>   delete mode 100644 arch/arm/mach-omap2/voltagedomains2xxx_data.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 028db7ad15ad..0d10f778800d 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -19874,7 +19874,6 @@ M:	Jarkko Nikula <jarkko.nikula@bitmer.com>
>   L:	linux-sound@vger.kernel.org
>   L:	linux-omap@vger.kernel.org
>   S:	Maintained
> -F:	sound/soc/ti/n810.c
>   F:	sound/soc/ti/omap*
>   F:	sound/soc/ti/rx51.c
>   F:	sound/soc/ti/sdma-pcm.*
> @@ -20027,7 +20026,6 @@ F:	drivers/gpio/gpio-tps65219.c
>   F:	drivers/i2c/busses/i2c-omap.c
>   F:	drivers/irqchip/irq-omap-intc.c
>   F:	drivers/mfd/*omap*.c
> -F:	drivers/mfd/menelaus.c
>   F:	drivers/mfd/palmas.c
>   F:	drivers/mfd/tps65217.c
>   F:	drivers/mfd/tps65218.c
> diff --git a/arch/arm/boot/dts/ti/omap/Makefile b/arch/arm/boot/dts/ti/omap/Makefile
> index 498c36ccb5ea..3c5d378df6b9 100644
> --- a/arch/arm/boot/dts/ti/omap/Makefile
> +++ b/arch/arm/boot/dts/ti/omap/Makefile
> @@ -1,10 +1,4 @@
>   # SPDX-License-Identifier: GPL-2.0
> -dtb-$(CONFIG_ARCH_OMAP2) += \
> -	omap2420-h4.dtb \
> -	omap2420-n800.dtb \
> -	omap2420-n810.dtb \
> -	omap2420-n810-wimax.dtb \
> -	omap2430-sdp.dtb
>   dtb-$(CONFIG_ARCH_OMAP3) += \
>   	am3517-craneboard.dtb \
>   	am3517-evm.dtb \
> diff --git a/arch/arm/boot/dts/ti/omap/omap2.dtsi b/arch/arm/boot/dts/ti/omap/omap2.dtsi
> deleted file mode 100644
> index fdc1790adf43..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2.dtsi
> +++ /dev/null
> @@ -1,338 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Device Tree Source for OMAP2 SoC
> - *
> - * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
> - */
> -
> -#include <dt-bindings/bus/ti-sysc.h>
> -#include <dt-bindings/gpio/gpio.h>
> -#include <dt-bindings/interrupt-controller/irq.h>
> -#include <dt-bindings/pinctrl/omap.h>
> -
> -/ {
> -	compatible = "ti,omap2430", "ti,omap2420", "ti,omap2";
> -	interrupt-parent = <&intc>;
> -	#address-cells = <1>;
> -	#size-cells = <1>;
> -	chosen { };
> -
> -	aliases {
> -		serial0 = &uart1;
> -		serial1 = &uart2;
> -		serial2 = &uart3;
> -		i2c0 = &i2c1;
> -		i2c1 = &i2c2;
> -	};
> -
> -	cpus {
> -		#address-cells = <0>;
> -		#size-cells = <0>;
> -
> -		cpu {
> -			compatible = "arm,arm1136jf-s";
> -			device_type = "cpu";
> -		};
> -	};
> -
> -	pmu {
> -		compatible = "arm,arm1136-pmu";
> -		interrupts = <3>;
> -	};
> -
> -	soc {
> -		compatible = "ti,omap-infra";
> -		mpu {
> -			compatible = "ti,omap2-mpu";
> -			ti,hwmods = "mpu";
> -		};
> -	};
> -
> -	ocp {
> -		compatible = "simple-bus";
> -		#address-cells = <1>;
> -		#size-cells = <1>;
> -		ranges;
> -		ti,hwmods = "l3_main";
> -
> -		aes: aes@480a6000 {
> -			compatible = "ti,omap2-aes";
> -			ti,hwmods = "aes";
> -			reg = <0x480a6000 0x50>;
> -			dmas = <&sdma 9 &sdma 10>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		hdq1w: 1w@480b2000 {
> -			compatible = "ti,omap2420-1w";
> -			ti,hwmods = "hdq1w";
> -			reg = <0x480b2000 0x1000>;
> -			interrupts = <58>;
> -		};
> -
> -		intc: interrupt-controller@1 {
> -			compatible = "ti,omap2-intc";
> -			interrupt-controller;
> -			#interrupt-cells = <1>;
> -			reg = <0x480FE000 0x1000>;
> -		};
> -
> -		target-module@48056000 {
> -			compatible = "ti,sysc-omap2", "ti,sysc";
> -			reg = <0x48056000 0x4>,
> -			      <0x4805602c 0x4>,
> -			      <0x48056028 0x4>;
> -			reg-names = "rev", "sysc", "syss";
> -			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
> -					 SYSC_OMAP2_EMUFREE |
> -					 SYSC_OMAP2_SOFTRESET |
> -					 SYSC_OMAP2_AUTOIDLE)>;
> -			ti,sysc-midle = <SYSC_IDLE_FORCE>,
> -					<SYSC_IDLE_NO>,
> -					<SYSC_IDLE_SMART>;
> -			ti,syss-mask = <1>;
> -			clocks = <&core_l3_ck>;
> -			clock-names = "fck";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x48056000 0x1000>;
> -
> -			sdma: dma-controller@0 {
> -				compatible = "ti,omap2420-sdma", "ti,omap-sdma";
> -				reg = <0 0x1000>;
> -				interrupts = <12>,
> -					     <13>,
> -					     <14>,
> -					     <15>;
> -				#dma-cells = <1>;
> -				dma-channels = <32>;
> -				dma-requests = <64>;
> -			};
> -		};
> -
> -		i2c1: i2c@48070000 {
> -			compatible = "ti,omap2-i2c";
> -			ti,hwmods = "i2c1";
> -			reg = <0x48070000 0x80>;
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			interrupts = <56>;
> -		};
> -
> -		i2c2: i2c@48072000 {
> -			compatible = "ti,omap2-i2c";
> -			ti,hwmods = "i2c2";
> -			reg = <0x48072000 0x80>;
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			interrupts = <57>;
> -		};
> -
> -		mcspi1: spi@48098000 {
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			compatible = "ti,omap2-mcspi";
> -			ti,hwmods = "mcspi1";
> -			reg = <0x48098000 0x100>;
> -			interrupts = <65>;
> -			dmas = <&sdma 35 &sdma 36 &sdma 37 &sdma 38
> -				&sdma 39 &sdma 40 &sdma 41 &sdma 42>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1",
> -				    "tx2", "rx2", "tx3", "rx3";
> -		};
> -
> -		mcspi2: spi@4809a000 {
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			compatible = "ti,omap2-mcspi";
> -			ti,hwmods = "mcspi2";
> -			reg = <0x4809a000 0x100>;
> -			interrupts = <66>;
> -			dmas = <&sdma 43 &sdma 44 &sdma 45 &sdma 46>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1";
> -		};
> -
> -		rng: rng@480a0000 {
> -			compatible = "ti,omap2-rng";
> -			ti,hwmods = "rng";
> -			reg = <0x480a0000 0x50>;
> -			interrupts = <52>;
> -		};
> -
> -		sham: sham@480a4000 {
> -			compatible = "ti,omap2-sham";
> -			ti,hwmods = "sham";
> -			reg = <0x480a4000 0x64>;
> -			interrupts = <51>;
> -			dmas = <&sdma 13>;
> -			dma-names = "rx";
> -		};
> -
> -		uart1: serial@4806a000 {
> -			compatible = "ti,omap2-uart";
> -			ti,hwmods = "uart1";
> -			reg = <0x4806a000 0x2000>;
> -			interrupts = <72>;
> -			dmas = <&sdma 49 &sdma 50>;
> -			dma-names = "tx", "rx";
> -			clock-frequency = <48000000>;
> -		};
> -
> -		uart2: serial@4806c000 {
> -			compatible = "ti,omap2-uart";
> -			ti,hwmods = "uart2";
> -			reg = <0x4806c000 0x400>;
> -			interrupts = <73>;
> -			dmas = <&sdma 51 &sdma 52>;
> -			dma-names = "tx", "rx";
> -			clock-frequency = <48000000>;
> -		};
> -
> -		uart3: serial@4806e000 {
> -			compatible = "ti,omap2-uart";
> -			ti,hwmods = "uart3";
> -			reg = <0x4806e000 0x400>;
> -			interrupts = <74>;
> -			dmas = <&sdma 53 &sdma 54>;
> -			dma-names = "tx", "rx";
> -			clock-frequency = <48000000>;
> -		};
> -
> -		timer2_target: target-module@4802a000 {
> -			compatible = "ti,sysc-omap2-timer", "ti,sysc";
> -			reg = <0x4802a000 0x4>,
> -			      <0x4802a010 0x4>,
> -			      <0x4802a014 0x4>;
> -			reg-names = "rev", "sysc", "syss";
> -			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
> -					 SYSC_OMAP2_EMUFREE |
> -					 SYSC_OMAP2_ENAWAKEUP |
> -					 SYSC_OMAP2_SOFTRESET |
> -					 SYSC_OMAP2_AUTOIDLE)>;
> -			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> -					<SYSC_IDLE_NO>,
> -					<SYSC_IDLE_SMART>;
> -			ti,syss-mask = <1>;
> -			clocks = <&gpt2_fck>, <&gpt2_ick>;
> -			clock-names = "fck", "ick";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0x0 0x4802a000 0x1000>;
> -
> -			timer2: timer@0 {
> -				compatible = "ti,omap2420-timer";
> -				reg = <0 0x400>;
> -				interrupts = <38>;
> -			};
> -		};
> -
> -		timer3: timer@48078000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x48078000 0x400>;
> -			interrupts = <39>;
> -			ti,hwmods = "timer3";
> -		};
> -
> -		timer4: timer@4807a000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x4807a000 0x400>;
> -			interrupts = <40>;
> -			ti,hwmods = "timer4";
> -		};
> -
> -		timer5: timer@4807c000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x4807c000 0x400>;
> -			interrupts = <41>;
> -			ti,hwmods = "timer5";
> -			ti,timer-dsp;
> -		};
> -
> -		timer6: timer@4807e000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x4807e000 0x400>;
> -			interrupts = <42>;
> -			ti,hwmods = "timer6";
> -			ti,timer-dsp;
> -		};
> -
> -		timer7: timer@48080000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x48080000 0x400>;
> -			interrupts = <43>;
> -			ti,hwmods = "timer7";
> -			ti,timer-dsp;
> -		};
> -
> -		timer8: timer@48082000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x48082000 0x400>;
> -			interrupts = <44>;
> -			ti,hwmods = "timer8";
> -			ti,timer-dsp;
> -		};
> -
> -		timer9: timer@48084000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x48084000 0x400>;
> -			interrupts = <45>;
> -			ti,hwmods = "timer9";
> -			ti,timer-pwm;
> -		};
> -
> -		timer10: timer@48086000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x48086000 0x400>;
> -			interrupts = <46>;
> -			ti,hwmods = "timer10";
> -			ti,timer-pwm;
> -		};
> -
> -		timer11: timer@48088000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x48088000 0x400>;
> -			interrupts = <47>;
> -			ti,hwmods = "timer11";
> -			ti,timer-pwm;
> -		};
> -
> -		timer12: timer@4808a000 {
> -			compatible = "ti,omap2420-timer";
> -			reg = <0x4808a000 0x400>;
> -			interrupts = <48>;
> -			ti,hwmods = "timer12";
> -			ti,timer-pwm;
> -		};
> -
> -		dss: dss@48050000 {
> -			compatible = "ti,omap2-dss";
> -			reg = <0x48050000 0x400>;
> -			status = "disabled";
> -			ti,hwmods = "dss_core";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -
> -			dispc@48050400 {
> -				compatible = "ti,omap2-dispc";
> -				reg = <0x48050400 0x400>;
> -				interrupts = <25>;
> -				ti,hwmods = "dss_dispc";
> -			};
> -
> -			rfbi: encoder@48050800 {
> -				compatible = "ti,omap2-rfbi";
> -				reg = <0x48050800 0x400>;
> -				status = "disabled";
> -				ti,hwmods = "dss_rfbi";
> -			};
> -
> -			venc: encoder@48050c00 {
> -				compatible = "ti,omap2-venc";
> -				reg = <0x48050c00 0x400>;
> -				status = "disabled";
> -				ti,hwmods = "dss_venc";
> -			};
> -		};
> -	};
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi b/arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
> deleted file mode 100644
> index 00a7a199a91c..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420-clocks.dtsi
> +++ /dev/null
> @@ -1,267 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Device Tree Source for OMAP2420 clock data
> - *
> - * Copyright (C) 2014 Texas Instruments, Inc.
> - */
> -
> -&prcm_clocks {
> -	sys_clkout2_src_gate: sys_clkout2_src_gate@70 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-no-wait-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <15>;
> -		reg = <0x0070>;
> -	};
> -
> -	sys_clkout2_src_mux: sys_clkout2_src_mux@70 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&core_ck>, <&sys_ck>, <&func_96m_ck>, <&func_54m_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0070>;
> -	};
> -
> -	sys_clkout2_src: sys_clkout2_src {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&sys_clkout2_src_gate>, <&sys_clkout2_src_mux>;
> -	};
> -
> -	sys_clkout2: sys_clkout2@70 {
> -		#clock-cells = <0>;
> -		compatible = "ti,divider-clock";
> -		clocks = <&sys_clkout2_src>;
> -		ti,bit-shift = <11>;
> -		ti,max-div = <64>;
> -		reg = <0x0070>;
> -		ti,index-power-of-two;
> -	};
> -
> -	dsp_gate_ick: dsp_gate_ick@810 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-interface-clock";
> -		clocks = <&dsp_fck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0810>;
> -	};
> -
> -	dsp_div_ick: dsp_div_ick@840 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&dsp_fck>;
> -		ti,bit-shift = <5>;
> -		ti,max-div = <3>;
> -		reg = <0x0840>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	dsp_ick: dsp_ick {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&dsp_gate_ick>, <&dsp_div_ick>;
> -	};
> -
> -	iva1_gate_ifck: iva1_gate_ifck@800 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <10>;
> -		reg = <0x0800>;
> -	};
> -
> -	iva1_div_ifck: iva1_div_ifck@840 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0840>;
> -		ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>, <0>, <0>, <0>, <12>;
> -	};
> -
> -	iva1_ifck: iva1_ifck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&iva1_gate_ifck>, <&iva1_div_ifck>;
> -	};
> -
> -	iva1_ifck_div: iva1_ifck_div {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&iva1_ifck>;
> -		clock-mult = <1>;
> -		clock-div = <2>;
> -	};
> -
> -	iva1_mpu_int_ifck: iva1_mpu_int_ifck@800 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&iva1_ifck_div>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0800>;
> -	};
> -
> -	wdt3_ick: wdt3_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <28>;
> -		reg = <0x0210>;
> -	};
> -
> -	wdt3_fck: wdt3_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <28>;
> -		reg = <0x0200>;
> -	};
> -
> -	mmc_ick: mmc_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <26>;
> -		reg = <0x0210>;
> -	};
> -
> -	mmc_fck: mmc_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <26>;
> -		reg = <0x0200>;
> -	};
> -
> -	eac_ick: eac_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <24>;
> -		reg = <0x0210>;
> -	};
> -
> -	eac_fck: eac_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <24>;
> -		reg = <0x0200>;
> -	};
> -
> -	i2c1_fck: i2c1_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_12m_ck>;
> -		ti,bit-shift = <19>;
> -		reg = <0x0200>;
> -	};
> -
> -	i2c2_fck: i2c2_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_12m_ck>;
> -		ti,bit-shift = <20>;
> -		reg = <0x0200>;
> -	};
> -
> -	vlynq_ick: vlynq_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0210>;
> -	};
> -
> -	vlynq_gate_fck: vlynq_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0200>;
> -	};
> -
> -	core_d18_ck: core_d18_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <18>;
> -	};
> -
> -	vlynq_mux_fck: vlynq_mux_fck@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_96m_ck>, <&core_ck>, <&core_d2_ck>, <&core_d3_ck>, <&core_d4_ck>, <&dummy_ck>, <&core_d6_ck>, <&dummy_ck>, <&core_d8_ck>, <&core_d9_ck>, <&dummy_ck>, <&dummy_ck>, <&core_d12_ck>, <&dummy_ck>, <&dummy_ck>, <&dummy_ck>, <&core_d16_ck>, <&dummy_ck>, <&core_d18_ck>;
> -		ti,bit-shift = <15>;
> -		reg = <0x0240>;
> -	};
> -
> -	vlynq_fck: vlynq_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&vlynq_gate_fck>, <&vlynq_mux_fck>;
> -	};
> -};
> -
> -&prcm_clockdomains {
> -	gfx_clkdm: gfx_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&gfx_ick>;
> -	};
> -
> -	core_l3_clkdm: core_l3_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&cam_fck>, <&vlynq_ick>, <&usb_fck>;
> -	};
> -
> -	wkup_clkdm: wkup_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&dpll_ck>, <&emul_ck>, <&gpt1_ick>, <&gpios_ick>,
> -			 <&gpios_fck>, <&mpu_wdt_ick>, <&mpu_wdt_fck>,
> -			 <&sync_32k_ick>, <&wdt1_ick>, <&omapctrl_ick>;
> -	};
> -
> -	iva1_clkdm: iva1_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&iva1_mpu_int_ifck>;
> -	};
> -
> -	dss_clkdm: dss_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&dss_ick>, <&dss_54m_fck>;
> -	};
> -
> -	core_l4_clkdm: core_l4_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&ssi_l4_ick>, <&gpt2_ick>, <&gpt3_ick>, <&gpt4_ick>,
> -			 <&gpt5_ick>, <&gpt6_ick>, <&gpt7_ick>, <&gpt8_ick>,
> -			 <&gpt9_ick>, <&gpt10_ick>, <&gpt11_ick>, <&gpt12_ick>,
> -			 <&mcbsp1_ick>, <&mcbsp2_ick>, <&mcspi1_ick>,
> -			 <&mcspi1_fck>, <&mcspi2_ick>, <&mcspi2_fck>,
> -			 <&uart1_ick>, <&uart1_fck>, <&uart2_ick>, <&uart2_fck>,
> -			 <&uart3_ick>, <&uart3_fck>, <&cam_ick>,
> -			 <&mailboxes_ick>, <&wdt4_ick>, <&wdt4_fck>,
> -			 <&wdt3_ick>, <&wdt3_fck>, <&mspro_ick>, <&mspro_fck>,
> -			 <&mmc_ick>, <&mmc_fck>, <&fac_ick>, <&fac_fck>,
> -			 <&eac_ick>, <&eac_fck>, <&hdq_ick>, <&hdq_fck>,
> -			 <&i2c1_ick>, <&i2c1_fck>, <&i2c2_ick>, <&i2c2_fck>,
> -			 <&des_ick>, <&sha_ick>, <&rng_ick>, <&aes_ick>,
> -			 <&pka_ick>;
> -	};
> -};
> -
> -&func_96m_ck {
> -	compatible = "fixed-factor-clock";
> -	clocks = <&apll96_ck>;
> -	clock-mult = <1>;
> -	clock-div = <1>;
> -};
> -
> -&dsp_div_fck {
> -	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>, <0>, <0>, <0>, <12>;
> -};
> -
> -&ssi_ssr_sst_div_fck {
> -	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>;
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420-h4.dts b/arch/arm/boot/dts/ti/omap/omap2420-h4.dts
> deleted file mode 100644
> index 5acf5dd87c59..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420-h4.dts
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
> - */
> -/dts-v1/;
> -
> -#include "omap2420.dtsi"
> -
> -/ {
> -	model = "TI OMAP2420 H4 board";
> -	compatible = "ti,omap2420-h4", "ti,omap2420", "ti,omap2";
> -
> -	memory@80000000 {
> -		device_type = "memory";
> -		reg = <0x80000000 0x4000000>; /* 64 MB */
> -	};
> -};
> -
> -&gpmc {
> -	ranges = <0 0 0x08000000 0x04000000>;
> -
> -	nor@0,0 {
> -		compatible = "cfi-flash";
> -		linux,mtd-name = "intel,ge28f256l18b85";
> -		#address-cells = <1>;
> -		#size-cells = <1>;
> -		reg = <0 0 0x04000000>;
> -		bank-width = <2>;
> -
> -		gpmc,mux-add-data = <2>;
> -		gpmc,cs-on-ns = <10>;
> -		gpmc,cs-rd-off-ns = <160>;
> -		gpmc,cs-wr-off-ns = <160>;
> -		gpmc,adv-on-ns = <20>;
> -		gpmc,adv-rd-off-ns = <50>;
> -		gpmc,adv-wr-off-ns = <50>;
> -		gpmc,oe-on-ns = <60>;
> -		gpmc,oe-off-ns = <120>;
> -		gpmc,we-on-ns = <60>;
> -		gpmc,we-off-ns = <120>;
> -		gpmc,rd-cycle-ns = <170>;
> -		gpmc,wr-cycle-ns = <170>;
> -		gpmc,access-ns = <150>;
> -		gpmc,page-burst-access-ns = <10>;
> -
> -		partition@0 {
> -			label = "bootloader";
> -			reg = <0 0x20000>;
> -		};
> -		partition@20000 {
> -			label = "params";
> -			reg = <0x20000 0x20000>;
> -		};
> -		partition@40000 {
> -			label = "kernel";
> -			reg = <0x40000 0x200000>;
> -		};
> -		partition@240000 {
> -			label = "file-system";
> -			reg = <0x240000 0x3dc0000>;
> -		};
> -	};
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n800.dts b/arch/arm/boot/dts/ti/omap/omap2420-n800.dts
> deleted file mode 100644
> index f06d767e818b..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420-n800.dts
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/dts-v1/;
> -
> -#include "omap2420-n8x0-common.dtsi"
> -
> -/ {
> -	model = "Nokia N800";
> -	compatible = "nokia,n800", "nokia,n8x0", "ti,omap2420", "ti,omap2";
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts b/arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
> deleted file mode 100644
> index ac9acbd609b6..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420-n810-wimax.dts
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/dts-v1/;
> -
> -#include "omap2420-n8x0-common.dtsi"
> -
> -/ {
> -	model = "Nokia N810 WiMax";
> -	compatible = "nokia,n810-wimax", "nokia,n8x0", "ti,omap2420", "ti,omap2";
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n810.dts b/arch/arm/boot/dts/ti/omap/omap2420-n810.dts
> deleted file mode 100644
> index 3bf8175d85a8..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420-n810.dts
> +++ /dev/null
> @@ -1,75 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/dts-v1/;
> -
> -#include "omap2420-n8x0-common.dtsi"
> -
> -/ {
> -	model = "Nokia N810";
> -	compatible = "nokia,n810", "nokia,n8x0", "ti,omap2420", "ti,omap2";
> -
> -	vio_ape: vio_ape {
> -		compatible = "regulator-fixed";
> -		regulator-name = "vio_ape";
> -		regulator-min-microvolt = <1800000>;
> -		regulator-max-microvolt = <1800000>;
> -	};
> -
> -	v28_aic: v28_aic {
> -		compatible = "regulator-fixed";
> -		regulator-name = "v28_aic";
> -		regulator-min-microvolt = <2800000>;
> -		regulator-max-microvolt = <2800000>;
> -	};
> -};
> -
> -&omap2420_pmx {
> -	mcbsp2_pins: mcbsp2-pins {
> -		pinctrl-single,pins = <
> -			OMAP2420_CORE_IOPAD(0x0124, PIN_INPUT | MUX_MODE1)	/* eac_ac_sclk.mcbsp2_clkx */
> -			OMAP2420_CORE_IOPAD(0x0125, PIN_INPUT | MUX_MODE1)	/* eac_ac_fs.mcbsp2_fsx */
> -			OMAP2420_CORE_IOPAD(0x0126, PIN_INPUT | MUX_MODE1)	/* eac_ac_din.mcbsp2_dr */
> -			OMAP2420_CORE_IOPAD(0x0127, PIN_OUTPUT | MUX_MODE1)	/* eac_ac_dout.mcbsp2_dx */
> -		>;
> -	};
> -
> -	aic33_pins: aic33-pins {
> -		pinctrl-single,pins = <
> -			OMAP2420_CORE_IOPAD(0x0129, PIN_OUTPUT | MUX_MODE3)	/* eac_ac_rst.gpio118 */
> -			OMAP2420_CORE_IOPAD(0x00e8, PIN_OUTPUT | MUX_MODE2)	/* vlynq_tx1.sys_clkout2 */
> -		>;
> -	};
> -};
> -
> -&i2c2 {
> -	aic33@18 {
> -		compatible = "ti,tlv320aic33";
> -		reg = <0x18>;
> -
> -		pinctrl-names = "default";
> -		pinctrl-0 = <&aic33_pins>;
> -
> -		reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>; /* gpio118 */
> -
> -		ai3x-gpio-func = <
> -			10 /* AIC3X_GPIO1_FUNC_DIGITAL_MIC_MODCLK */
> -			5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
> -		>;
> -		ai3x-micbias-vg = <1>; /* 2V */
> -
> -		AVDD-supply = <&v28_aic>;
> -		DRVDD-supply = <&v28_aic>;
> -		IOVDD-supply = <&vio_ape>;
> -		DVDD-supply = <&vio_ape>;
> -
> -		assigned-clocks = <&sys_clkout2_src>, <&sys_clkout2>;
> -		assigned-clock-parents = <&func_96m_ck>;
> -		assigned-clock-rates = <0>, <12000000>;
> -	};
> -};
> -
> -&mcbsp2 {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&mcbsp2_pins>;
> -
> -	status = "okay";
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi b/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
> deleted file mode 100644
> index fe9dd8bbfc85..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420-n8x0-common.dtsi
> +++ /dev/null
> @@ -1,123 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include "omap2420.dtsi"
> -
> -/ {
> -	memory@80000000 {
> -		device_type = "memory";
> -		reg = <0x80000000 0x8000000>; /* 128 MB */
> -	};
> -
> -	chosen {
> -		stdout-path = &uart3;
> -	};
> -
> -	ocp {
> -		i2c0 {
> -			compatible = "i2c-cbus-gpio";
> -			gpios = <&gpio3 2 GPIO_ACTIVE_HIGH /* gpio66 clk */
> -				 &gpio3 1 GPIO_ACTIVE_HIGH /* gpio65 dat */
> -				 &gpio3 0 GPIO_ACTIVE_HIGH /* gpio64 sel */
> -				>;
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			retu: retu@1 {
> -				compatible = "nokia,retu";
> -				interrupt-parent = <&gpio4>;
> -				interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> -				reg = <0x1>;
> -			};
> -		};
> -	};
> -};
> -
> -&i2c1 {
> -	clock-frequency = <400000>;
> -
> -	pmic@72 {
> -		compatible = "menelaus";
> -		reg = <0x72>;
> -		interrupts = <7 IRQ_TYPE_EDGE_RISING>;
> -	};
> -};
> -
> -&i2c2 {
> -	clock-frequency = <400000>;
> -};
> -
> -&gpmc {
> -	ranges = <0 0 0x04000000 0x1000000>;	/* CS0: 16MB for OneNAND */
> -
> -	/* gpio-irq for dma: 26 */
> -
> -	onenand@0,0 {
> -		#address-cells = <1>;
> -		#size-cells = <1>;
> -		compatible = "ti,omap2-onenand";
> -		reg = <0 0 0x20000>;	/* CS0, offset 0, IO size 128K */
> -
> -		gpmc,sync-read;
> -		gpmc,burst-length = <16>;
> -		gpmc,burst-read;
> -		gpmc,burst-wrap;
> -		gpmc,device-width = <2>;
> -		gpmc,mux-add-data = <2>;
> -		gpmc,cs-on-ns = <0>;
> -		gpmc,cs-rd-off-ns = <127>;
> -		gpmc,cs-wr-off-ns = <109>;
> -		gpmc,adv-on-ns = <0>;
> -		gpmc,adv-rd-off-ns = <18>;
> -		gpmc,adv-wr-off-ns = <18>;
> -		gpmc,oe-on-ns = <27>;
> -		gpmc,oe-off-ns = <127>;
> -		gpmc,we-on-ns = <27>;
> -		gpmc,we-off-ns = <72>;
> -		gpmc,rd-cycle-ns = <145>;
> -		gpmc,wr-cycle-ns = <136>;
> -		gpmc,access-ns = <118>;
> -		gpmc,page-burst-access-ns = <27>;
> -		gpmc,bus-turnaround-ns = <0>;
> -		gpmc,cycle2cycle-delay-ns = <0>;
> -		gpmc,wait-monitoring-ns = <0>;
> -		gpmc,clk-activation-ns = <9>;
> -		gpmc,sync-clk-ps = <27000>;
> -
> -		/* MTD partition table corresponding to old board-n8x0 file. */
> -		partition@0 {
> -			label = "bootloader";
> -			reg = <0x00000000 0x00020000>;
> -			read-only;
> -		};
> -		partition@1 {
> -			label = "config";
> -			reg = <0x00020000 0x00060000>;
> -		};
> -		partition@2 {
> -			label = "kernel";
> -			reg = <0x00080000 0x00200000>;
> -		};
> -		partition@3 {
> -			label = "initfs";
> -			reg = <0x00280000 0x00400000>;
> -		};
> -		partition@4 {
> -			label = "rootfs";
> -			reg = <0x00680000 0x0f980000>;
> -		};
> -		partition@5 {
> -			label = "omap2-onenand";
> -			reg = <0x00000000 0x10000000>;
> -		};
> -	};
> -};
> -
> -&mcspi2 {
> -	status = "okay";
> -
> -	wifi@0 {
> -		reg = <0>;
> -		compatible = "st,stlc4560";
> -		spi-max-frequency = <48000000>;
> -		interrupts-extended = <&gpio3 23 IRQ_TYPE_EDGE_RISING>;
> -		powerdown-gpios = <&gpio4 1 GPIO_ACTIVE_LOW>; /* gpio 97 */
> -	};
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2420.dtsi b/arch/arm/boot/dts/ti/omap/omap2420.dtsi
> deleted file mode 100644
> index 821da51cb870..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2420.dtsi
> +++ /dev/null
> @@ -1,262 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Device Tree Source for OMAP2420 SoC
> - *
> - * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
> - */
> -
> -#include "omap2.dtsi"
> -
> -/ {
> -	compatible = "ti,omap2420", "ti,omap2";
> -
> -	ocp {
> -		l4: l4@48000000 {
> -			compatible = "ti,omap2-l4", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x48000000 0x100000>;
> -
> -			prcm: prcm@8000 {
> -				compatible = "ti,omap2-prcm";
> -				reg = <0x8000 0x1000>;
> -
> -				prcm_clocks: clocks {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -				};
> -
> -				prcm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			scm: scm@0 {
> -				compatible = "ti,omap2-scm", "simple-bus";
> -				reg = <0x0 0x1000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				#pinctrl-cells = <1>;
> -				ranges = <0 0x0 0x1000>;
> -
> -				omap2420_pmx: pinmux@30 {
> -					compatible = "ti,omap2420-padconf",
> -						     "pinctrl-single";
> -					reg = <0x30 0x0113>;
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -					#pinctrl-cells = <1>;
> -					pinctrl-single,register-width = <8>;
> -					pinctrl-single,function-mask = <0x3f>;
> -				};
> -
> -				scm_conf: scm_conf@270 {
> -					compatible = "syscon";
> -					reg = <0x270 0x100>;
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -
> -					scm_clocks: clocks {
> -						#address-cells = <1>;
> -						#size-cells = <0>;
> -					};
> -				};
> -
> -				scm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			target-module@4000 {
> -				compatible = "ti,sysc-omap2", "ti,sysc";
> -				reg = <0x4000 0x4>,
> -				      <0x4004 0x4>;
> -				reg-names = "rev", "sysc";
> -				ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> -						<SYSC_IDLE_NO>;
> -				clocks = <&func_32k_ck>;
> -				clock-names = "fck";
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0x0 0x4000 0x1000>;
> -
> -				counter32k: counter@0 {
> -					compatible = "ti,omap-counter32k";
> -					reg = <0 0x20>;
> -				};
> -			};
> -		};
> -
> -		gpio1: gpio@48018000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x48018000 0x200>;
> -			interrupts = <29>;
> -			ti,hwmods = "gpio1";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio2: gpio@4801a000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x4801a000 0x200>;
> -			interrupts = <30>;
> -			ti,hwmods = "gpio2";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio3: gpio@4801c000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x4801c000 0x200>;
> -			interrupts = <31>;
> -			ti,hwmods = "gpio3";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio4: gpio@4801e000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x4801e000 0x200>;
> -			interrupts = <32>;
> -			ti,hwmods = "gpio4";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpmc: gpmc@6800a000 {
> -			compatible = "ti,omap2420-gpmc";
> -			reg = <0x6800a000 0x1000>;
> -			#address-cells = <2>;
> -			#size-cells = <1>;
> -			interrupts = <20>;
> -			gpmc,num-cs = <8>;
> -			gpmc,num-waitpins = <4>;
> -			ti,hwmods = "gpmc";
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -		};
> -
> -		mcbsp1: mcbsp@48074000 {
> -			compatible = "ti,omap2420-mcbsp";
> -			reg = <0x48074000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <59>, /* TX interrupt */
> -				     <60>; /* RX interrupt */
> -			interrupt-names = "tx", "rx";
> -			ti,hwmods = "mcbsp1";
> -			dmas = <&sdma 31>,
> -			       <&sdma 32>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		mcbsp2: mcbsp@48076000 {
> -			compatible = "ti,omap2420-mcbsp";
> -			reg = <0x48076000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <62>, /* TX interrupt */
> -				     <63>; /* RX interrupt */
> -			interrupt-names = "tx", "rx";
> -			ti,hwmods = "mcbsp2";
> -			dmas = <&sdma 33>,
> -			       <&sdma 34>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		msdi1: mmc@4809c000 {
> -			compatible = "ti,omap2420-mmc";
> -			ti,hwmods = "msdi1";
> -			reg = <0x4809c000 0x80>;
> -			interrupts = <83>;
> -			dmas = <&sdma 61 &sdma 62>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		mailbox: mailbox@48094000 {
> -			compatible = "ti,omap2-mailbox";
> -			reg = <0x48094000 0x200>;
> -			interrupts = <26>, <34>;
> -			ti,hwmods = "mailbox";
> -			#mbox-cells = <1>;
> -			ti,mbox-num-users = <4>;
> -			ti,mbox-num-fifos = <6>;
> -			mbox_dsp: mbox-dsp {
> -				ti,mbox-tx = <0 0 0>;
> -				ti,mbox-rx = <1 0 0>;
> -			};
> -			mbox_iva: mbox-iva {
> -				ti,mbox-tx = <2 1 3>;
> -				ti,mbox-rx = <3 1 3>;
> -			};
> -		};
> -
> -		timer1_target: target-module@48028000 {
> -			compatible = "ti,sysc-omap2-timer", "ti,sysc";
> -			reg = <0x48028000 0x4>,
> -			      <0x48028010 0x4>,
> -			      <0x48028014 0x4>;
> -			reg-names = "rev", "sysc", "syss";
> -			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
> -					 SYSC_OMAP2_EMUFREE |
> -					 SYSC_OMAP2_ENAWAKEUP |
> -					 SYSC_OMAP2_SOFTRESET |
> -					 SYSC_OMAP2_AUTOIDLE)>;
> -			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> -					<SYSC_IDLE_NO>,
> -					<SYSC_IDLE_SMART>;
> -			ti,syss-mask = <1>;
> -			clocks = <&gpt1_fck>, <&gpt1_ick>;
> -			clock-names = "fck", "ick";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0x0 0x48028000 0x1000>;
> -
> -			timer1: timer@0 {
> -				compatible = "ti,omap2420-timer";
> -				reg = <0 0x400>;
> -				interrupts = <37>;
> -				ti,timer-alwon;
> -			};
> -		};
> -
> -		wd_timer2: wdt@48022000 {
> -			compatible = "ti,omap2-wdt";
> -			ti,hwmods = "wd_timer2";
> -			reg = <0x48022000 0x80>;
> -		};
> -	};
> -};
> -
> -&i2c1 {
> -	compatible = "ti,omap2420-i2c";
> -};
> -
> -&i2c2 {
> -	compatible = "ti,omap2420-i2c";
> -};
> -
> -#include "omap24xx-clocks.dtsi"
> -#include "omap2420-clocks.dtsi"
> -
> -/* Preferred always-on timer for clockevent */
> -&timer1_target {
> -	ti,no-reset-on-init;
> -	ti,no-idle;
> -	timer@0 {
> -		assigned-clocks = <&gpt1_fck>;
> -		assigned-clock-parents = <&func_32k_ck>;
> -	};
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi b/arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
> deleted file mode 100644
> index 4e5ab5189476..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2430-clocks.dtsi
> +++ /dev/null
> @@ -1,341 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Device Tree Source for OMAP2430 clock data
> - *
> - * Copyright (C) 2014 Texas Instruments, Inc.
> - */
> -
> -&scm_clocks {
> -	mcbsp3_mux_fck: mcbsp3_mux_fck@78 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_96m_ck>, <&mcbsp_clks>;
> -		reg = <0x78>;
> -	};
> -
> -	mcbsp3_fck: mcbsp3_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&mcbsp3_gate_fck>, <&mcbsp3_mux_fck>;
> -	};
> -
> -	mcbsp4_mux_fck: mcbsp4_mux_fck@78 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_96m_ck>, <&mcbsp_clks>;
> -		ti,bit-shift = <2>;
> -		reg = <0x78>;
> -	};
> -
> -	mcbsp4_fck: mcbsp4_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&mcbsp4_gate_fck>, <&mcbsp4_mux_fck>;
> -	};
> -
> -	mcbsp5_mux_fck: mcbsp5_mux_fck@78 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_96m_ck>, <&mcbsp_clks>;
> -		ti,bit-shift = <4>;
> -		reg = <0x78>;
> -	};
> -
> -	mcbsp5_fck: mcbsp5_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&mcbsp5_gate_fck>, <&mcbsp5_mux_fck>;
> -	};
> -};
> -
> -&prcm_clocks {
> -	iva2_1_gate_ick: iva2_1_gate_ick@800 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&dsp_fck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0800>;
> -	};
> -
> -	iva2_1_div_ick: iva2_1_div_ick@840 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&dsp_fck>;
> -		ti,bit-shift = <5>;
> -		ti,max-div = <3>;
> -		reg = <0x0840>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	iva2_1_ick: iva2_1_ick {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&iva2_1_gate_ick>, <&iva2_1_div_ick>;
> -	};
> -
> -	mdm_gate_ick: mdm_gate_ick@c10 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-interface-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0c10>;
> -	};
> -
> -	mdm_div_ick: mdm_div_ick@c40 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_ck>;
> -		reg = <0x0c40>;
> -		ti,dividers = <0>, <1>, <0>, <0>, <4>, <0>, <6>, <0>, <0>, <9>;
> -	};
> -
> -	mdm_ick: mdm_ick {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&mdm_gate_ick>, <&mdm_div_ick>;
> -	};
> -
> -	mdm_osc_ck: mdm_osc_ck@c00 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&osc_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0c00>;
> -	};
> -
> -	mcbsp3_ick: mcbsp3_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0214>;
> -	};
> -
> -	mcbsp3_gate_fck: mcbsp3_gate_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&mcbsp_clks>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0204>;
> -	};
> -
> -	mcbsp4_ick: mcbsp4_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <4>;
> -		reg = <0x0214>;
> -	};
> -
> -	mcbsp4_gate_fck: mcbsp4_gate_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&mcbsp_clks>;
> -		ti,bit-shift = <4>;
> -		reg = <0x0204>;
> -	};
> -
> -	mcbsp5_ick: mcbsp5_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <5>;
> -		reg = <0x0214>;
> -	};
> -
> -	mcbsp5_gate_fck: mcbsp5_gate_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&mcbsp_clks>;
> -		ti,bit-shift = <5>;
> -		reg = <0x0204>;
> -	};
> -
> -	mcspi3_ick: mcspi3_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <9>;
> -		reg = <0x0214>;
> -	};
> -
> -	mcspi3_fck: mcspi3_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <9>;
> -		reg = <0x0204>;
> -	};
> -
> -	icr_ick: icr_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <6>;
> -		reg = <0x0410>;
> -	};
> -
> -	i2chs1_fck: i2chs1_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap2430-interface-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <19>;
> -		reg = <0x0204>;
> -	};
> -
> -	i2chs2_fck: i2chs2_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap2430-interface-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <20>;
> -		reg = <0x0204>;
> -	};
> -
> -	usbhs_ick: usbhs_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <6>;
> -		reg = <0x0214>;
> -	};
> -
> -	mmchs1_ick: mmchs1_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <7>;
> -		reg = <0x0214>;
> -	};
> -
> -	mmchs1_fck: mmchs1_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <7>;
> -		reg = <0x0204>;
> -	};
> -
> -	mmchs2_ick: mmchs2_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0214>;
> -	};
> -
> -	mmchs2_fck: mmchs2_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0204>;
> -	};
> -
> -	gpio5_ick: gpio5_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <10>;
> -		reg = <0x0214>;
> -	};
> -
> -	gpio5_fck: gpio5_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <10>;
> -		reg = <0x0204>;
> -	};
> -
> -	mdm_intc_ick: mdm_intc_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <11>;
> -		reg = <0x0214>;
> -	};
> -
> -	mmchsdb1_fck: mmchsdb1_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <16>;
> -		reg = <0x0204>;
> -	};
> -
> -	mmchsdb2_fck: mmchsdb2_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <17>;
> -		reg = <0x0204>;
> -	};
> -};
> -
> -&prcm_clockdomains {
> -	gfx_clkdm: gfx_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&gfx_ick>;
> -	};
> -
> -	core_l3_clkdm: core_l3_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&cam_fck>, <&usb_fck>, <&usbhs_ick>;
> -	};
> -
> -	wkup_clkdm: wkup_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&dpll_ck>, <&emul_ck>, <&gpt1_ick>, <&gpios_ick>,
> -			 <&gpios_fck>, <&mpu_wdt_ick>, <&mpu_wdt_fck>,
> -			 <&sync_32k_ick>, <&wdt1_ick>, <&omapctrl_ick>,
> -			 <&icr_ick>;
> -	};
> -
> -	dss_clkdm: dss_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&dss_ick>, <&dss_54m_fck>;
> -	};
> -
> -	core_l4_clkdm: core_l4_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&ssi_l4_ick>, <&gpt2_ick>, <&gpt3_ick>, <&gpt4_ick>,
> -			 <&gpt5_ick>, <&gpt6_ick>, <&gpt7_ick>, <&gpt8_ick>,
> -			 <&gpt9_ick>, <&gpt10_ick>, <&gpt11_ick>, <&gpt12_ick>,
> -			 <&mcbsp1_ick>, <&mcbsp2_ick>, <&mcbsp3_ick>,
> -			 <&mcbsp4_ick>, <&mcbsp5_ick>, <&mcspi1_ick>,
> -			 <&mcspi1_fck>, <&mcspi2_ick>, <&mcspi2_fck>,
> -			 <&mcspi3_ick>, <&mcspi3_fck>, <&uart1_ick>,
> -			 <&uart1_fck>, <&uart2_ick>, <&uart2_fck>, <&uart3_ick>,
> -			 <&uart3_fck>, <&cam_ick>, <&mailboxes_ick>,
> -			 <&wdt4_ick>, <&wdt4_fck>, <&mspro_ick>, <&mspro_fck>,
> -			 <&fac_ick>, <&fac_fck>, <&hdq_ick>, <&hdq_fck>,
> -			 <&i2c1_ick>, <&i2chs1_fck>, <&i2c2_ick>, <&i2chs2_fck>,
> -			 <&des_ick>, <&sha_ick>, <&rng_ick>, <&aes_ick>,
> -			 <&pka_ick>, <&mmchs1_ick>, <&mmchs1_fck>,
> -			 <&mmchs2_ick>, <&mmchs2_fck>, <&gpio5_ick>,
> -			 <&gpio5_fck>, <&mdm_intc_ick>, <&mmchsdb1_fck>,
> -			 <&mmchsdb2_fck>;
> -	};
> -
> -	mdm_clkdm: mdm_clkdm {
> -		compatible = "ti,clockdomain";
> -		clocks = <&mdm_osc_ck>;
> -	};
> -};
> -
> -&func_96m_ck {
> -	compatible = "ti,mux-clock";
> -	clocks = <&apll96_ck>, <&alt_ck>;
> -	ti,bit-shift = <4>;
> -	reg = <0x0540>;
> -};
> -
> -&dsp_div_fck {
> -	ti,max-div = <4>;
> -	ti,index-starts-at-one;
> -};
> -
> -&ssi_ssr_sst_div_fck {
> -	ti,max-div = <5>;
> -	ti,index-starts-at-one;
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap2430-sdp.dts b/arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
> deleted file mode 100644
> index 207070677e3a..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2430-sdp.dts
> +++ /dev/null
> @@ -1,70 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Copyright (C) 2013 Texas Instruments Incorporated - https://www.ti.com/
> - */
> -/dts-v1/;
> -
> -#include "omap2430.dtsi"
> -
> -/ {
> -	model = "TI OMAP2430 SDP";
> -	compatible = "ti,omap2430-sdp", "ti,omap2430", "ti,omap2";
> -
> -	memory@80000000 {
> -		device_type = "memory";
> -		reg = <0x80000000 0x8000000>; /* 128 MB */
> -	};
> -};
> -
> -&i2c2 {
> -	clock-frequency = <100000>;
> -
> -	twl: twl@48 {
> -		reg = <0x48>;
> -		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
> -	};
> -};
> -
> -#include "twl4030.dtsi"
> -
> -&mmc1 {
> -	vmmc-supply = <&vmmc1>;
> -	bus-width = <4>;
> -};
> -
> -&gpmc {
> -	ranges = <5 0 0x08000000 0x01000000>;
> -	ethernet@gpmc {
> -		compatible = "smsc,lan91c94";
> -		interrupt-parent = <&gpio5>;
> -		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;	/* gpio149 */
> -		reg = <5 0x300 0xf>;
> -		bank-width = <2>;
> -		gpmc,sync-clk-ps = <0>;
> -		gpmc,mux-add-data = <2>;
> -		gpmc,device-width = <1>;
> -		gpmc,cycle2cycle-samecsen;
> -		gpmc,cycle2cycle-diffcsen;
> -		gpmc,cs-on-ns = <6>;
> -		gpmc,cs-rd-off-ns = <187>;
> -		gpmc,cs-wr-off-ns = <187>;
> -		gpmc,adv-on-ns = <18>;
> -		gpmc,adv-rd-off-ns = <48>;
> -		gpmc,adv-wr-off-ns = <48>;
> -		gpmc,oe-on-ns = <60>;
> -		gpmc,oe-off-ns = <169>;
> -		gpmc,we-on-ns = <66>;
> -		gpmc,we-off-ns = <169>;
> -		gpmc,rd-cycle-ns = <187>;
> -		gpmc,wr-cycle-ns = <187>;
> -		gpmc,access-ns = <187>;
> -		gpmc,page-burst-access-ns = <24>;
> -		gpmc,bus-turnaround-ns = <24>;
> -		gpmc,cycle2cycle-delay-ns = <24>;
> -		gpmc,wait-monitoring-ns = <0>;
> -		gpmc,clk-activation-ns = <0>;
> -		gpmc,wr-data-mux-bus-ns = <0>;
> -		gpmc,wr-access-ns = <0>;
> -	};
> -};
> -
> diff --git a/arch/arm/boot/dts/ti/omap/omap2430.dtsi b/arch/arm/boot/dts/ti/omap/omap2430.dtsi
> deleted file mode 100644
> index 01bd471f9223..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap2430.dtsi
> +++ /dev/null
> @@ -1,366 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Device Tree Source for OMAP243x SoC
> - *
> - * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
> - */
> -
> -#include "omap2.dtsi"
> -
> -/ {
> -	compatible = "ti,omap2430", "ti,omap2";
> -
> -	ocp {
> -		l4_wkup: l4_wkup@49000000 {
> -			compatible = "ti,omap2-l4-wkup", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x49000000 0x31000>;
> -
> -			prcm: prcm@6000 {
> -				compatible = "ti,omap2-prcm";
> -				reg = <0x6000 0x1000>;
> -
> -				prcm_clocks: clocks {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -				};
> -
> -				prcm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			scm: scm@2000 {
> -				compatible = "ti,omap2-scm", "simple-bus";
> -				reg = <0x2000 0x1000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				#pinctrl-cells = <1>;
> -				ranges = <0 0x2000 0x1000>;
> -
> -				omap2430_pmx: pinmux@30 {
> -					compatible = "ti,omap2430-padconf",
> -						     "pinctrl-single";
> -					reg = <0x30 0x0154>;
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -					#pinctrl-cells = <1>;
> -					pinctrl-single,register-width = <8>;
> -					pinctrl-single,function-mask = <0x3f>;
> -				};
> -
> -				scm_conf: scm_conf@270 {
> -					compatible = "ti,omap2-scm-conf", "syscon",
> -						     "simple-bus";
> -					reg = <0x270 0x240>;
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -					ranges = <0 0x270 0x240>;
> -
> -					scm_clocks: clocks {
> -						#address-cells = <1>;
> -						#size-cells = <0>;
> -					};
> -
> -					pbias_regulator: pbias_regulator@230 {
> -						compatible = "ti,pbias-omap2", "ti,pbias-omap";
> -						reg = <0x230 0x4>;
> -						syscon = <&scm_conf>;
> -						pbias_mmc_reg: pbias_mmc_omap2430 {
> -							regulator-name = "pbias_mmc_omap2430";
> -							regulator-min-microvolt = <1800000>;
> -							regulator-max-microvolt = <3000000>;
> -						};
> -					};
> -				};
> -
> -				scm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			target-module@20000 {
> -				compatible = "ti,sysc-omap2", "ti,sysc";
> -				reg = <0x20000 0x4>,
> -				      <0x20004 0x4>;
> -				reg-names = "rev", "sysc";
> -				ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> -						<SYSC_IDLE_NO>;
> -				clocks = <&func_32k_ck>;
> -				clock-names = "fck";
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0x0 0x20000 0x1000>;
> -
> -				counter32k: counter@0 {
> -					compatible = "ti,omap-counter32k";
> -					reg = <0 0x20>;
> -				};
> -			};
> -		};
> -
> -		gpio1: gpio@4900c000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x4900c000 0x200>;
> -			interrupts = <29>;
> -			ti,hwmods = "gpio1";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio2: gpio@4900e000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x4900e000 0x200>;
> -			interrupts = <30>;
> -			ti,hwmods = "gpio2";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio3: gpio@49010000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x49010000 0x200>;
> -			interrupts = <31>;
> -			ti,hwmods = "gpio3";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio4: gpio@49012000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x49012000 0x200>;
> -			interrupts = <32>;
> -			ti,hwmods = "gpio4";
> -			ti,gpio-always-on;
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpio5: gpio@480b6000 {
> -			compatible = "ti,omap2-gpio";
> -			reg = <0x480b6000 0x200>;
> -			interrupts = <33>;
> -			ti,hwmods = "gpio5";
> -			#gpio-cells = <2>;
> -			gpio-controller;
> -			#interrupt-cells = <2>;
> -			interrupt-controller;
> -		};
> -
> -		gpmc: gpmc@6e000000 {
> -			compatible = "ti,omap2430-gpmc";
> -			reg = <0x6e000000 0x1000>;
> -			#address-cells = <2>;
> -			#size-cells = <1>;
> -			interrupts = <20>;
> -			gpmc,num-cs = <8>;
> -			gpmc,num-waitpins = <4>;
> -			ti,hwmods = "gpmc";
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -		};
> -
> -		mcbsp1: mcbsp@48074000 {
> -			compatible = "ti,omap2430-mcbsp";
> -			reg = <0x48074000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <64>, /* OCP compliant interrupt */
> -				     <59>, /* TX interrupt */
> -				     <60>, /* RX interrupt */
> -				     <61>; /* RX overflow interrupt */
> -			interrupt-names = "common", "tx", "rx", "rx_overflow";
> -			ti,buffer-size = <128>;
> -			ti,hwmods = "mcbsp1";
> -			dmas = <&sdma 31>,
> -			       <&sdma 32>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		mcbsp2: mcbsp@48076000 {
> -			compatible = "ti,omap2430-mcbsp";
> -			reg = <0x48076000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <16>, /* OCP compliant interrupt */
> -				     <62>, /* TX interrupt */
> -				     <63>; /* RX interrupt */
> -			interrupt-names = "common", "tx", "rx";
> -			ti,buffer-size = <128>;
> -			ti,hwmods = "mcbsp2";
> -			dmas = <&sdma 33>,
> -			       <&sdma 34>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		mcbsp3: mcbsp@4808c000 {
> -			compatible = "ti,omap2430-mcbsp";
> -			reg = <0x4808c000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <17>, /* OCP compliant interrupt */
> -				     <89>, /* TX interrupt */
> -				     <90>; /* RX interrupt */
> -			interrupt-names = "common", "tx", "rx";
> -			ti,buffer-size = <128>;
> -			ti,hwmods = "mcbsp3";
> -			dmas = <&sdma 17>,
> -			       <&sdma 18>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		mcbsp4: mcbsp@4808e000 {
> -			compatible = "ti,omap2430-mcbsp";
> -			reg = <0x4808e000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <18>, /* OCP compliant interrupt */
> -				     <54>, /* TX interrupt */
> -				     <55>; /* RX interrupt */
> -			interrupt-names = "common", "tx", "rx";
> -			ti,buffer-size = <128>;
> -			ti,hwmods = "mcbsp4";
> -			dmas = <&sdma 19>,
> -			       <&sdma 20>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		mcbsp5: mcbsp@48096000 {
> -			compatible = "ti,omap2430-mcbsp";
> -			reg = <0x48096000 0xff>;
> -			reg-names = "mpu";
> -			interrupts = <19>, /* OCP compliant interrupt */
> -				     <81>, /* TX interrupt */
> -				     <82>; /* RX interrupt */
> -			interrupt-names = "common", "tx", "rx";
> -			ti,buffer-size = <128>;
> -			ti,hwmods = "mcbsp5";
> -			dmas = <&sdma 21>,
> -			       <&sdma 22>;
> -			dma-names = "tx", "rx";
> -			status = "disabled";
> -		};
> -
> -		mmc1: mmc@4809c000 {
> -			compatible = "ti,omap2-hsmmc";
> -			reg = <0x4809c000 0x200>;
> -			interrupts = <83>;
> -			ti,hwmods = "mmc1";
> -			ti,dual-volt;
> -			dmas = <&sdma 61>, <&sdma 62>;
> -			dma-names = "tx", "rx";
> -			pbias-supply = <&pbias_mmc_reg>;
> -		};
> -
> -		mmc2: mmc@480b4000 {
> -			compatible = "ti,omap2-hsmmc";
> -			reg = <0x480b4000 0x200>;
> -			interrupts = <86>;
> -			ti,hwmods = "mmc2";
> -			dmas = <&sdma 47>, <&sdma 48>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		mailbox: mailbox@48094000 {
> -			compatible = "ti,omap2-mailbox";
> -			reg = <0x48094000 0x200>;
> -			interrupts = <26>;
> -			ti,hwmods = "mailbox";
> -			#mbox-cells = <1>;
> -			ti,mbox-num-users = <4>;
> -			ti,mbox-num-fifos = <6>;
> -			mbox_dsp: mbox-dsp {
> -				ti,mbox-tx = <0 0 0>;
> -				ti,mbox-rx = <1 0 0>;
> -			};
> -		};
> -
> -		timer1_target: target-module@49018000 {
> -			compatible = "ti,sysc-omap2-timer", "ti,sysc";
> -			reg = <0x49018000 0x4>,
> -			      <0x49018010 0x4>,
> -			      <0x49018014 0x4>;
> -			reg-names = "rev", "sysc", "syss";
> -			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
> -					 SYSC_OMAP2_EMUFREE |
> -					 SYSC_OMAP2_ENAWAKEUP |
> -					 SYSC_OMAP2_SOFTRESET |
> -					 SYSC_OMAP2_AUTOIDLE)>;
> -			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> -					<SYSC_IDLE_NO>,
> -					<SYSC_IDLE_SMART>;
> -			ti,syss-mask = <1>;
> -			clocks = <&gpt1_fck>, <&gpt1_ick>;
> -			clock-names = "fck", "ick";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0x0 0x49018000 0x1000>;
> -
> -			timer1: timer@0 {
> -				compatible = "ti,omap2420-timer";
> -				reg = <0 0x400>;
> -				interrupts = <37>;
> -				ti,timer-alwon;
> -			};
> -		};
> -
> -		mcspi3: spi@480b8000 {
> -			compatible = "ti,omap2-mcspi";
> -			ti,hwmods = "mcspi3";
> -			reg = <0x480b8000 0x100>;
> -			interrupts = <91>;
> -			dmas = <&sdma 15 &sdma 16 &sdma 23 &sdma 24>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1";
> -		};
> -
> -		usb_otg_hs: usb_otg_hs@480ac000 {
> -			compatible = "ti,omap2-musb";
> -			ti,hwmods = "usb_otg_hs";
> -			reg = <0x480ac000 0x1000>;
> -			interrupts = <93>;
> -		};
> -
> -		wd_timer2: watchdog@49016000 {
> -			compatible = "ti,omap2-wdt";
> -			ti,hwmods = "wd_timer2";
> -			reg = <0x49016000 0x80>;
> -		};
> -	};
> -};
> -
> -&sdma {
> -	compatible = "ti,omap2430-sdma", "ti,omap-sdma";
> -};
> -
> -&i2c1 {
> -	compatible = "ti,omap2430-i2c";
> -};
> -
> -&i2c2 {
> -	compatible = "ti,omap2430-i2c";
> -};
> -
> -#include "omap24xx-clocks.dtsi"
> -#include "omap2430-clocks.dtsi"
> -
> -/* Preferred always-on timer for clockevent */
> -&timer1_target {
> -	ti,no-reset-on-init;
> -	ti,no-idle;
> -	timer@0 {
> -		assigned-clocks = <&gpt1_fck>;
> -		assigned-clock-parents = <&func_32k_ck>;
> -	};
> -};
> diff --git a/arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi b/arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
> deleted file mode 100644
> index 07af87edf0e2..000000000000
> --- a/arch/arm/boot/dts/ti/omap/omap24xx-clocks.dtsi
> +++ /dev/null
> @@ -1,1241 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Device Tree Source for OMAP24xx clock data
> - *
> - * Copyright (C) 2014 Texas Instruments, Inc.
> - */
> -&scm_clocks {
> -	mcbsp1_mux_fck: mcbsp1_mux_fck@4 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_96m_ck>, <&mcbsp_clks>;
> -		ti,bit-shift = <2>;
> -		reg = <0x4>;
> -	};
> -
> -	mcbsp1_fck: mcbsp1_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&mcbsp1_gate_fck>, <&mcbsp1_mux_fck>;
> -	};
> -
> -	mcbsp2_mux_fck: mcbsp2_mux_fck@4 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_96m_ck>, <&mcbsp_clks>;
> -		ti,bit-shift = <6>;
> -		reg = <0x4>;
> -	};
> -
> -	mcbsp2_fck: mcbsp2_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&mcbsp2_gate_fck>, <&mcbsp2_mux_fck>;
> -	};
> -};
> -
> -&prcm_clocks {
> -	func_32k_ck: func_32k_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <32768>;
> -	};
> -
> -	secure_32k_ck: secure_32k_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <32768>;
> -	};
> -
> -	virt_12m_ck: virt_12m_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <12000000>;
> -	};
> -
> -	virt_13m_ck: virt_13m_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <13000000>;
> -	};
> -
> -	virt_19200000_ck: virt_19200000_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <19200000>;
> -	};
> -
> -	virt_26m_ck: virt_26m_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <26000000>;
> -	};
> -
> -	aplls_clkin_ck: aplls_clkin_ck@540 {
> -		#clock-cells = <0>;
> -		compatible = "ti,mux-clock";
> -		clocks = <&virt_19200000_ck>, <&virt_26m_ck>, <&virt_13m_ck>, <&virt_12m_ck>;
> -		ti,bit-shift = <23>;
> -		reg = <0x0540>;
> -	};
> -
> -	aplls_clkin_x2_ck: aplls_clkin_x2_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&aplls_clkin_ck>;
> -		clock-mult = <2>;
> -		clock-div = <1>;
> -	};
> -
> -	osc_ck: osc_ck@60 {
> -		#clock-cells = <0>;
> -		compatible = "ti,mux-clock";
> -		clocks = <&aplls_clkin_ck>, <&aplls_clkin_x2_ck>;
> -		ti,bit-shift = <6>;
> -		reg = <0x0060>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	sys_ck: sys_ck@60 {
> -		#clock-cells = <0>;
> -		compatible = "ti,divider-clock";
> -		clocks = <&osc_ck>;
> -		ti,bit-shift = <6>;
> -		ti,max-div = <3>;
> -		reg = <0x0060>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	alt_ck: alt_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <54000000>;
> -	};
> -
> -	mcbsp_clks: mcbsp_clks {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <0x0>;
> -	};
> -
> -	dpll_ck: dpll_ck@500 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap2-dpll-core-clock";
> -		clocks = <&sys_ck>, <&sys_ck>;
> -		reg = <0x0500>, <0x0540>;
> -	};
> -
> -	apll96_ck: apll96_ck@500 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap2-apll-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <2>;
> -		ti,idlest-shift = <8>;
> -		ti,clock-frequency = <96000000>;
> -		reg = <0x0500>, <0x0530>, <0x0520>;
> -	};
> -
> -	apll54_ck: apll54_ck@500 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap2-apll-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <6>;
> -		ti,idlest-shift = <9>;
> -		ti,clock-frequency = <54000000>;
> -		reg = <0x0500>, <0x0530>, <0x0520>;
> -	};
> -
> -	func_54m_ck: func_54m_ck@540 {
> -		#clock-cells = <0>;
> -		compatible = "ti,mux-clock";
> -		clocks = <&apll54_ck>, <&alt_ck>;
> -		ti,bit-shift = <5>;
> -		reg = <0x0540>;
> -	};
> -
> -	core_ck: core_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&dpll_ck>;
> -		clock-mult = <1>;
> -		clock-div = <1>;
> -	};
> -
> -	func_96m_ck: func_96m_ck@540 {
> -		#clock-cells = <0>;
> -	};
> -
> -	apll96_d2_ck: apll96_d2_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&apll96_ck>;
> -		clock-mult = <1>;
> -		clock-div = <2>;
> -	};
> -
> -	func_48m_ck: func_48m_ck@540 {
> -		#clock-cells = <0>;
> -		compatible = "ti,mux-clock";
> -		clocks = <&apll96_d2_ck>, <&alt_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0540>;
> -	};
> -
> -	func_12m_ck: func_12m_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&func_48m_ck>;
> -		clock-mult = <1>;
> -		clock-div = <4>;
> -	};
> -
> -	sys_clkout_src_gate: sys_clkout_src_gate@70 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-no-wait-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <7>;
> -		reg = <0x0070>;
> -	};
> -
> -	sys_clkout_src_mux: sys_clkout_src_mux@70 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&core_ck>, <&sys_ck>, <&func_96m_ck>, <&func_54m_ck>;
> -		reg = <0x0070>;
> -	};
> -
> -	sys_clkout_src: sys_clkout_src {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&sys_clkout_src_gate>, <&sys_clkout_src_mux>;
> -	};
> -
> -	sys_clkout: sys_clkout@70 {
> -		#clock-cells = <0>;
> -		compatible = "ti,divider-clock";
> -		clocks = <&sys_clkout_src>;
> -		ti,bit-shift = <3>;
> -		ti,max-div = <64>;
> -		reg = <0x0070>;
> -		ti,index-power-of-two;
> -	};
> -
> -	emul_ck: emul_ck@78 {
> -		#clock-cells = <0>;
> -		compatible = "ti,gate-clock";
> -		clocks = <&func_54m_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0078>;
> -	};
> -
> -	mpu_ck: mpu_ck@140 {
> -		#clock-cells = <0>;
> -		compatible = "ti,divider-clock";
> -		clocks = <&core_ck>;
> -		ti,max-div = <31>;
> -		reg = <0x0140>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	dsp_gate_fck: dsp_gate_fck@800 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0800>;
> -	};
> -
> -	dsp_div_fck: dsp_div_fck@840 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_ck>;
> -		reg = <0x0840>;
> -	};
> -
> -	dsp_fck: dsp_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&dsp_gate_fck>, <&dsp_div_fck>;
> -	};
> -
> -	core_l3_ck: core_l3_ck@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,divider-clock";
> -		clocks = <&core_ck>;
> -		ti,max-div = <31>;
> -		reg = <0x0240>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	gfx_3d_gate_fck: gfx_3d_gate_fck@300 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0300>;
> -	};
> -
> -	gfx_3d_div_fck: gfx_3d_div_fck@340 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,max-div = <4>;
> -		reg = <0x0340>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	gfx_3d_fck: gfx_3d_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gfx_3d_gate_fck>, <&gfx_3d_div_fck>;
> -	};
> -
> -	gfx_2d_gate_fck: gfx_2d_gate_fck@300 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0300>;
> -	};
> -
> -	gfx_2d_div_fck: gfx_2d_div_fck@340 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,max-div = <4>;
> -		reg = <0x0340>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	gfx_2d_fck: gfx_2d_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gfx_2d_gate_fck>, <&gfx_2d_div_fck>;
> -	};
> -
> -	gfx_ick: gfx_ick@310 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0310>;
> -	};
> -
> -	l4_ck: l4_ck@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,divider-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <5>;
> -		ti,max-div = <3>;
> -		reg = <0x0240>;
> -		ti,index-starts-at-one;
> -	};
> -
> -	dss_ick: dss_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-no-wait-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0210>;
> -	};
> -
> -	dss1_gate_fck: dss1_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-no-wait-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0200>;
> -	};
> -
> -	core_d2_ck: core_d2_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <2>;
> -	};
> -
> -	core_d3_ck: core_d3_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <3>;
> -	};
> -
> -	core_d4_ck: core_d4_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <4>;
> -	};
> -
> -	core_d5_ck: core_d5_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <5>;
> -	};
> -
> -	core_d6_ck: core_d6_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <6>;
> -	};
> -
> -	dummy_ck: dummy_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-clock";
> -		clock-frequency = <0>;
> -	};
> -
> -	core_d8_ck: core_d8_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <8>;
> -	};
> -
> -	core_d9_ck: core_d9_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <9>;
> -	};
> -
> -	core_d12_ck: core_d12_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <12>;
> -	};
> -
> -	core_d16_ck: core_d16_ck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_ck>;
> -		clock-mult = <1>;
> -		clock-div = <16>;
> -	};
> -
> -	dss1_mux_fck: dss1_mux_fck@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&sys_ck>, <&core_ck>, <&core_d2_ck>, <&core_d3_ck>, <&core_d4_ck>, <&core_d5_ck>, <&core_d6_ck>, <&core_d8_ck>, <&core_d9_ck>, <&core_d12_ck>, <&core_d16_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0240>;
> -	};
> -
> -	dss1_fck: dss1_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&dss1_gate_fck>, <&dss1_mux_fck>;
> -	};
> -
> -	dss2_gate_fck: dss2_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-no-wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0200>;
> -	};
> -
> -	dss2_mux_fck: dss2_mux_fck@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&sys_ck>, <&func_48m_ck>;
> -		ti,bit-shift = <13>;
> -		reg = <0x0240>;
> -	};
> -
> -	dss2_fck: dss2_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&dss2_gate_fck>, <&dss2_mux_fck>;
> -	};
> -
> -	dss_54m_fck: dss_54m_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_54m_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0200>;
> -	};
> -
> -	ssi_ssr_sst_gate_fck: ssi_ssr_sst_gate_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0204>;
> -	};
> -
> -	ssi_ssr_sst_div_fck: ssi_ssr_sst_div_fck@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_ck>;
> -		ti,bit-shift = <20>;
> -		reg = <0x0240>;
> -	};
> -
> -	ssi_ssr_sst_fck: ssi_ssr_sst_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&ssi_ssr_sst_gate_fck>, <&ssi_ssr_sst_div_fck>;
> -	};
> -
> -	usb_l4_gate_ick: usb_l4_gate_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-interface-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0214>;
> -	};
> -
> -	usb_l4_div_ick: usb_l4_div_ick@240 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-divider-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,bit-shift = <25>;
> -		reg = <0x0240>;
> -		ti,dividers = <0>, <1>, <2>, <0>, <4>;
> -	};
> -
> -	usb_l4_ick: usb_l4_ick {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>;
> -	};
> -
> -	ssi_l4_ick: ssi_l4_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0214>;
> -	};
> -
> -	gpt1_ick: gpt1_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0410>;
> -	};
> -
> -	gpt1_gate_fck: gpt1_gate_fck@400 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0400>;
> -	};
> -
> -	gpt1_mux_fck: gpt1_mux_fck@440 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		reg = <0x0440>;
> -	};
> -
> -	gpt1_fck: gpt1_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt1_gate_fck>, <&gpt1_mux_fck>;
> -	};
> -
> -	gpt2_ick: gpt2_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <4>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt2_gate_fck: gpt2_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <4>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt2_mux_fck: gpt2_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt2_fck: gpt2_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt2_gate_fck>, <&gpt2_mux_fck>;
> -	};
> -
> -	gpt3_ick: gpt3_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <5>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt3_gate_fck: gpt3_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <5>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt3_mux_fck: gpt3_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <4>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt3_fck: gpt3_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt3_gate_fck>, <&gpt3_mux_fck>;
> -	};
> -
> -	gpt4_ick: gpt4_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <6>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt4_gate_fck: gpt4_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <6>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt4_mux_fck: gpt4_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <6>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt4_fck: gpt4_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt4_gate_fck>, <&gpt4_mux_fck>;
> -	};
> -
> -	gpt5_ick: gpt5_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <7>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt5_gate_fck: gpt5_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <7>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt5_mux_fck: gpt5_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt5_fck: gpt5_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt5_gate_fck>, <&gpt5_mux_fck>;
> -	};
> -
> -	gpt6_ick: gpt6_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt6_gate_fck: gpt6_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <8>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt6_mux_fck: gpt6_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <10>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt6_fck: gpt6_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt6_gate_fck>, <&gpt6_mux_fck>;
> -	};
> -
> -	gpt7_ick: gpt7_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <9>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt7_gate_fck: gpt7_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <9>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt7_mux_fck: gpt7_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <12>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt7_fck: gpt7_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt7_gate_fck>, <&gpt7_mux_fck>;
> -	};
> -
> -	gpt8_ick: gpt8_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <10>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt8_gate_fck: gpt8_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <10>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt8_mux_fck: gpt8_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <14>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt8_fck: gpt8_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt8_gate_fck>, <&gpt8_mux_fck>;
> -	};
> -
> -	gpt9_ick: gpt9_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <11>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt9_gate_fck: gpt9_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <11>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt9_mux_fck: gpt9_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <16>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt9_fck: gpt9_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt9_gate_fck>, <&gpt9_mux_fck>;
> -	};
> -
> -	gpt10_ick: gpt10_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <12>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt10_gate_fck: gpt10_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <12>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt10_mux_fck: gpt10_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <18>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt10_fck: gpt10_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt10_gate_fck>, <&gpt10_mux_fck>;
> -	};
> -
> -	gpt11_ick: gpt11_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <13>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt11_gate_fck: gpt11_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <13>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt11_mux_fck: gpt11_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <20>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt11_fck: gpt11_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt11_gate_fck>, <&gpt11_mux_fck>;
> -	};
> -
> -	gpt12_ick: gpt12_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <14>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpt12_gate_fck: gpt12_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <14>;
> -		reg = <0x0200>;
> -	};
> -
> -	gpt12_mux_fck: gpt12_mux_fck@244 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-mux-clock";
> -		clocks = <&func_32k_ck>, <&sys_ck>, <&alt_ck>;
> -		ti,bit-shift = <22>;
> -		reg = <0x0244>;
> -	};
> -
> -	gpt12_fck: gpt12_fck {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-clock";
> -		clocks = <&gpt12_gate_fck>, <&gpt12_mux_fck>;
> -	};
> -
> -	mcbsp1_ick: mcbsp1_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <15>;
> -		reg = <0x0210>;
> -	};
> -
> -	mcbsp1_gate_fck: mcbsp1_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&mcbsp_clks>;
> -		ti,bit-shift = <15>;
> -		reg = <0x0200>;
> -	};
> -
> -	mcbsp2_ick: mcbsp2_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <16>;
> -		reg = <0x0210>;
> -	};
> -
> -	mcbsp2_gate_fck: mcbsp2_gate_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,composite-gate-clock";
> -		clocks = <&mcbsp_clks>;
> -		ti,bit-shift = <16>;
> -		reg = <0x0200>;
> -	};
> -
> -	mcspi1_ick: mcspi1_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <17>;
> -		reg = <0x0210>;
> -	};
> -
> -	mcspi1_fck: mcspi1_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <17>;
> -		reg = <0x0200>;
> -	};
> -
> -	mcspi2_ick: mcspi2_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <18>;
> -		reg = <0x0210>;
> -	};
> -
> -	mcspi2_fck: mcspi2_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <18>;
> -		reg = <0x0200>;
> -	};
> -
> -	uart1_ick: uart1_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <21>;
> -		reg = <0x0210>;
> -	};
> -
> -	uart1_fck: uart1_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <21>;
> -		reg = <0x0200>;
> -	};
> -
> -	uart2_ick: uart2_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <22>;
> -		reg = <0x0210>;
> -	};
> -
> -	uart2_fck: uart2_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <22>;
> -		reg = <0x0200>;
> -	};
> -
> -	uart3_ick: uart3_ick@214 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0214>;
> -	};
> -
> -	uart3_fck: uart3_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0204>;
> -	};
> -
> -	gpios_ick: gpios_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0410>;
> -	};
> -
> -	gpios_fck: gpios_fck@400 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x0400>;
> -	};
> -
> -	mpu_wdt_ick: mpu_wdt_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0410>;
> -	};
> -
> -	mpu_wdt_fck: mpu_wdt_fck@400 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x0400>;
> -	};
> -
> -	sync_32k_ick: sync_32k_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x0410>;
> -	};
> -
> -	wdt1_ick: wdt1_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <4>;
> -		reg = <0x0410>;
> -	};
> -
> -	omapctrl_ick: omapctrl_ick@410 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&sys_ck>;
> -		ti,bit-shift = <5>;
> -		reg = <0x0410>;
> -	};
> -
> -	cam_fck: cam_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,gate-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <31>;
> -		reg = <0x0200>;
> -	};
> -
> -	cam_ick: cam_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-no-wait-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <31>;
> -		reg = <0x0210>;
> -	};
> -
> -	mailboxes_ick: mailboxes_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <30>;
> -		reg = <0x0210>;
> -	};
> -
> -	wdt4_ick: wdt4_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <29>;
> -		reg = <0x0210>;
> -	};
> -
> -	wdt4_fck: wdt4_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_32k_ck>;
> -		ti,bit-shift = <29>;
> -		reg = <0x0200>;
> -	};
> -
> -	mspro_ick: mspro_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <27>;
> -		reg = <0x0210>;
> -	};
> -
> -	mspro_fck: mspro_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_96m_ck>;
> -		ti,bit-shift = <27>;
> -		reg = <0x0200>;
> -	};
> -
> -	fac_ick: fac_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <25>;
> -		reg = <0x0210>;
> -	};
> -
> -	fac_fck: fac_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_12m_ck>;
> -		ti,bit-shift = <25>;
> -		reg = <0x0200>;
> -	};
> -
> -	hdq_ick: hdq_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <23>;
> -		reg = <0x0210>;
> -	};
> -
> -	hdq_fck: hdq_fck@200 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_12m_ck>;
> -		ti,bit-shift = <23>;
> -		reg = <0x0200>;
> -	};
> -
> -	i2c1_ick: i2c1_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <19>;
> -		reg = <0x0210>;
> -	};
> -
> -	i2c2_ick: i2c2_ick@210 {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <20>;
> -		reg = <0x0210>;
> -	};
> -
> -	gpmc_fck: gpmc_fck@238 {
> -		#clock-cells = <0>;
> -		compatible = "ti,fixed-factor-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,clock-div = <1>;
> -		ti,autoidle-shift = <1>;
> -		reg = <0x0238>;
> -		ti,clock-mult = <1>;
> -	};
> -
> -	sdma_fck: sdma_fck {
> -		#clock-cells = <0>;
> -		compatible = "fixed-factor-clock";
> -		clocks = <&core_l3_ck>;
> -		clock-mult = <1>;
> -		clock-div = <1>;
> -	};
> -
> -	sdma_ick: sdma_ick@238 {
> -		#clock-cells = <0>;
> -		compatible = "ti,fixed-factor-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,clock-div = <1>;
> -		ti,autoidle-shift = <0>;
> -		reg = <0x0238>;
> -		ti,clock-mult = <1>;
> -	};
> -
> -	sdrc_ick: sdrc_ick@238 {
> -		#clock-cells = <0>;
> -		compatible = "ti,fixed-factor-clock";
> -		clocks = <&core_l3_ck>;
> -		ti,clock-div = <1>;
> -		ti,autoidle-shift = <2>;
> -		reg = <0x0238>;
> -		ti,clock-mult = <1>;
> -	};
> -
> -	des_ick: des_ick@21c {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x021c>;
> -	};
> -
> -	sha_ick: sha_ick@21c {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <1>;
> -		reg = <0x021c>;
> -	};
> -
> -	rng_ick: rng_ick@21c {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <2>;
> -		reg = <0x021c>;
> -	};
> -
> -	aes_ick: aes_ick@21c {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <3>;
> -		reg = <0x021c>;
> -	};
> -
> -	pka_ick: pka_ick@21c {
> -		#clock-cells = <0>;
> -		compatible = "ti,omap3-interface-clock";
> -		clocks = <&l4_ck>;
> -		ti,bit-shift = <4>;
> -		reg = <0x021c>;
> -	};
> -
> -	usb_fck: usb_fck@204 {
> -		#clock-cells = <0>;
> -		compatible = "ti,wait-gate-clock";
> -		clocks = <&func_48m_ck>;
> -		ti,bit-shift = <0>;
> -		reg = <0x0204>;
> -	};
> -};
> diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
> index f827f89567fd..2e9597f50c58 100644
> --- a/arch/arm/configs/omap2plus_defconfig
> +++ b/arch/arm/configs/omap2plus_defconfig
> @@ -22,9 +22,7 @@ CONFIG_NAMESPACES=y
>   CONFIG_BLK_DEV_INITRD=y
>   CONFIG_EXPERT=y
>   CONFIG_PROFILING=y
> -CONFIG_ARCH_MULTI_V6=y
>   CONFIG_OMAP_RESET_CLOCKS=y
> -CONFIG_ARCH_OMAP2=y
>   CONFIG_ARCH_OMAP3=y
>   CONFIG_ARCH_OMAP4=y
>   CONFIG_SOC_OMAP5=y
> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index 79f8afe3a6bf..37ecbfc0a19f 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -5,15 +5,6 @@ menu "TI OMAP/AM/DM/DRA Family"
>   config OMAP_HWMOD
>   	bool
>   
> -config ARCH_OMAP2
> -	bool "TI OMAP2"
> -	depends on ARCH_MULTI_V6
> -	depends on !SMP
> -	select ARCH_OMAP2PLUS
> -	select CPU_ARM1136R0
> -	select OMAP_HWMOD
> -	select SOC_HAS_OMAP2_SDRC
> -
>   config ARCH_OMAP3
>   	bool "TI OMAP3"
>   	depends on ARCH_MULTI_V7
> @@ -118,7 +109,7 @@ config ARCH_OMAP2PLUS
>   	select OMAP_IRQCHIP
>   	select CLKSRC_TI_32K
>   	help
> -	  Systems based on OMAP2, OMAP3, OMAP4 or OMAP5
> +	  Systems based on OMAP3, OMAP4 or OMAP5
>   
>   config OMAP_INTERCONNECT_BARRIER
>   	bool
> @@ -129,7 +120,7 @@ config ARCH_OMAP
>   
>   if ARCH_OMAP2PLUS
>   
> -menu "TI OMAP2/3/4 Specific Features"
> +menu "TI OMAP3/4 Specific Features"
>   
>   config ARCH_OMAP2PLUS_TYPICAL
>   	bool "Typical OMAP configuration"
> @@ -138,8 +129,7 @@ config ARCH_OMAP2PLUS_TYPICAL
>   	select HIGHMEM
>   	select I2C
>   	select I2C_OMAP
> -	select MENELAUS if ARCH_OMAP2
> -	select NEON if CPU_V7
> +	select NEON
>   	select REGULATOR
>   	select REGULATOR_FIXED_VOLTAGE
>   	select TWL4030_CORE if ARCH_OMAP3 || ARCH_OMAP4
> @@ -204,27 +194,7 @@ config OMAP3_L2_AUX_SECURE_SERVICE_SET_ID
>   	  PPA routine service ID for setting L2 auxiliary control register.
>   
>   comment "OMAP Core Type"
> -	depends on ARCH_OMAP2
> -
> -config SOC_OMAP2420
> -	bool "OMAP2420 support (DEPRECATED)"
> -	depends on ARCH_OMAP2
> -	default y
> -	select OMAP_DM_SYSTIMER
> -	select OMAP_DM_TIMER
> -	select SOC_HAS_OMAP2_SDRC
> -	help
> -	  This SoC is scheduled for removal in early 2027,
> -	  since it uses the ARM1136r0 CPU revision.
> -
> -config SOC_OMAP2430
> -	bool "OMAP2430 support (DEPRECATED)"
> -	depends on ARCH_OMAP2
> -	default y
> -	select SOC_HAS_OMAP2_SDRC
> -	help
> -	  This SoC is scheduled for removal in early 2027,
> -	  since it uses the ARM1136r0 CPU revision.
> +	depends on ARCH_OMAP3
>   
>   config SOC_OMAP3430
>   	bool "OMAP3430 support"
> @@ -237,33 +207,9 @@ config SOC_TI81XX
>   	depends on ARCH_OMAP3
>   	default y
>   
> -comment "OMAP Legacy Platform Data Board Type"
> -	depends on ARCH_OMAP2PLUS
> -
>   config MACH_OMAP_GENERIC
>   	bool
>   
> -config MACH_OMAP2_TUSB6010
> -	bool
> -	depends on ARCH_OMAP2 && SOC_OMAP2420
> -	default y if MACH_NOKIA_N8X0
> -
> -config MACH_NOKIA_N810
> -	bool
> -
> -config MACH_NOKIA_N810_WIMAX
> -	bool
> -
> -config MACH_NOKIA_N8X0
> -	bool "Nokia N800/N810 (DEPRECATED)"
> -	depends on SOC_OMAP2420
> -	default y
> -	select MACH_NOKIA_N810
> -	select MACH_NOKIA_N810_WIMAX
> -	help
> -	  This machine is scheduled for removal in early 2027,
> -	  since it uses the ARM1136r0 CPU revision.
> -
>   endmenu
>   
>   endif
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index daf21127c82f..6c741442dc0d 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -5,23 +5,17 @@
>   
>   # Common support
>   obj-y := id.o io.o control.o devices.o fb.o pm.o \
> -	 common.o dma.o omap-headsmp.o sram.o
> +	 common.o dma.o omap-headsmp.o
>   
> -hwmod-common				= omap_hwmod.o \
> +# OMAP3 hwmod specific
> +obj-$(CONFIG_ARCH_OMAP3)		+= sram.o omap_hwmod.o \
>   					  omap_hwmod_common_data.o \
>   					  omap_hwmod_common_ipblock_data.o \
>   					  omap_device.o display.o hdq1w.o \
>   					  i2c.o wd_timer.o
> -clock-common				= clock.o
> -secure-common				= omap-smc.o omap-secure.o
>   
> -obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common)
> -obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
> -obj-$(CONFIG_ARCH_OMAP4) += $(secure-common)
> -obj-$(CONFIG_SOC_AM33XX) += $(secure-common)
> -obj-$(CONFIG_SOC_OMAP5)  += $(secure-common)
> -obj-$(CONFIG_SOC_AM43XX) += $(secure-common)
> -obj-$(CONFIG_SOC_DRA7XX) += $(secure-common)
> +# secure world
> +obj-y					+= omap-smc.o omap-secure.o
>   
>   ifneq ($(CONFIG_SND_SOC_OMAP_MCBSP),)
>   obj-$(CONFIG_OMAP_HWMOD) += mcbsp.o
> @@ -49,13 +43,7 @@ omap5-dra7-common-$(CONFIG_SOC_HAS_REALTIME_COUNTER) =  timer.o
>   obj-$(CONFIG_SOC_OMAP5)			+= $(omap5-dra7-common-y)
>   obj-$(CONFIG_SOC_DRA7XX)		+= $(omap5-dra7-common-y)
>   
> -# Functions loaded to SRAM
> -obj-$(CONFIG_SOC_OMAP2420)		+= sram242x.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= sram243x.o
> -
>   # Restart code (OMAP4/5 currently in omap4-common.c)
> -obj-$(CONFIG_SOC_OMAP2420)		+= omap2-restart.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= omap2-restart.o
>   obj-$(CONFIG_SOC_TI81XX)		+= ti81xx-restart.o
>   obj-$(CONFIG_SOC_AM33XX)		+= am33xx-restart.o
>   obj-$(CONFIG_SOC_AM43XX)		+= omap4-restart.o
> @@ -65,7 +53,6 @@ obj-$(CONFIG_SOC_OMAP5)			+= omap4-restart.o
>   obj-$(CONFIG_SOC_DRA7XX)		+= omap4-restart.o
>   
>   # SMS/SDRC
> -obj-$(CONFIG_ARCH_OMAP2)		+= sdrc2xxx.o
>   # obj-$(CONFIG_ARCH_OMAP3)		+= sdrc3xxx.o
>   
>   # OPP table initialization
> @@ -80,7 +67,6 @@ obj-$(CONFIG_ARCH_OMAP4)		+= $(omap-4-5-pm-common)
>   obj-$(CONFIG_SOC_OMAP5)			+= $(omap-4-5-pm-common)
>   
>   ifeq ($(CONFIG_PM),y)
> -obj-$(CONFIG_ARCH_OMAP2)		+= sleep24xx.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= pm34xx.o sleep34xx.o
>   omap-4-5-pm-common			+= pm44xx.o
>   obj-$(CONFIG_ARCH_OMAP4)		+= $(omap-4-5-pm-common)
> @@ -105,7 +91,6 @@ endif
>   
>   # PRCM
>   obj-y					+= prm_common.o cm_common.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= prm2xxx_3xxx.o prm2xxx.o cm2xxx.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= prm2xxx_3xxx.o prm3xxx.o cm3xxx.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= vc3xxx_data.o vp3xxx_data.o
>   omap-prcm-4-5-common			=  cminst44xx.o prm44xx.o \
> @@ -122,8 +107,6 @@ obj-$(CONFIG_SOC_AM43XX)		+= $(omap-prcm-4-5-common) \
>   
>   # OMAP voltage domains
>   voltagedomain-common			:= voltage.o vc.o vp.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= $(voltagedomain-common)
> -obj-$(CONFIG_ARCH_OMAP2)		+= voltagedomains2xxx_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= $(voltagedomain-common)
>   obj-$(CONFIG_ARCH_OMAP3)		+= voltagedomains3xxx_data.o
>   obj-$(CONFIG_ARCH_OMAP4)		+= $(voltagedomain-common)
> @@ -136,9 +119,6 @@ obj-$(CONFIG_SOC_DRA7XX)		+= $(voltagedomain-common)
>   
>   # OMAP powerdomain framework
>   powerdomain-common			+= powerdomain.o powerdomain-common.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= $(powerdomain-common)
> -obj-$(CONFIG_ARCH_OMAP2)		+= powerdomains2xxx_data.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= powerdomains2xxx_3xxx_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= $(powerdomain-common)
>   obj-$(CONFIG_ARCH_OMAP3)		+= powerdomains3xxx_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= powerdomains2xxx_3xxx_data.o
> @@ -155,10 +135,6 @@ obj-$(CONFIG_SOC_DRA7XX)		+= powerdomains7xx_data.o
>   
>   # PRCM clockdomain control
>   clockdomain-common			+= clockdomain.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= $(clockdomain-common)
> -obj-$(CONFIG_ARCH_OMAP2)		+= clockdomains2xxx_3xxx_data.o
> -obj-$(CONFIG_SOC_OMAP2420)		+= clockdomains2420_data.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= clockdomains2430_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= $(clockdomain-common)
>   obj-$(CONFIG_ARCH_OMAP3)		+= clockdomains2xxx_3xxx_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= clockdomains3xxx_data.o
> @@ -176,47 +152,20 @@ obj-$(CONFIG_SOC_DRA7XX)		+= $(clockdomain-common)
>   obj-$(CONFIG_SOC_DRA7XX)		+= clockdomains7xx_data.o
>   
>   # Clock framework
> -obj-$(CONFIG_ARCH_OMAP2)		+= $(clock-common)
> -obj-$(CONFIG_ARCH_OMAP2)		+= clkt2xxx_dpllcore.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= clkt2xxx_virt_prcm_set.o
> -obj-$(CONFIG_ARCH_OMAP2)		+= clkt2xxx_dpll.o
> -obj-$(CONFIG_ARCH_OMAP3)		+= $(clock-common)
> -obj-$(CONFIG_ARCH_OMAP4)		+= $(clock-common)
> -obj-$(CONFIG_SOC_AM33XX)		+= $(clock-common)
> -obj-$(CONFIG_SOC_OMAP5)			+= $(clock-common)
> -obj-$(CONFIG_SOC_DRA7XX)		+= $(clock-common)
> -obj-$(CONFIG_SOC_AM43XX)		+= $(clock-common)
> -
> -# OMAP2 clock rate set data (old "OPP" data)
> -obj-$(CONFIG_SOC_OMAP2420)		+= opp2420_data.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= opp2430_data.o
> +obj-y					+= clock.o
>   
>   # hwmod data
> -obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2xxx_ipblock_data.o
> -obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2xxx_3xxx_ipblock_data.o
> -obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2xxx_interconnect_data.o
> -obj-$(CONFIG_SOC_OMAP2420)		+= omap_hwmod_2420_data.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2xxx_ipblock_data.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2xxx_3xxx_ipblock_data.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2xxx_interconnect_data.o
> -obj-$(CONFIG_SOC_OMAP2430)		+= omap_hwmod_2430_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= omap_hwmod_2xxx_3xxx_ipblock_data.o
>   obj-$(CONFIG_ARCH_OMAP3)		+= omap_hwmod_3xxx_data.o
>   obj-$(CONFIG_SOC_TI81XX)		+= omap_hwmod_81xx_data.o
>   
> -# OMAP2420 MSDI controller integration support ("MMC")
> -obj-$(CONFIG_SOC_OMAP2420)		+= msdi.o
> -
>   # Specific board support
>   obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o pdata-quirks.o
> -obj-$(CONFIG_MACH_NOKIA_N8X0)		+= board-n8x0.o
>   
>   # Platform specific device init code
>   
>   obj-y					+= omap_phy_internal.o
>   
> -obj-$(CONFIG_MACH_OMAP2_TUSB6010)	+= usb-tusb6010.o
> -
>   $(obj)/pm-asm-offsets.h: $(obj)/pm-asm-offsets.s FORCE
>   	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
>   
> diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
> index bff673e932fe..972b8cf0547f 100644
> --- a/arch/arm/mach-omap2/board-generic.c
> +++ b/arch/arm/mach-omap2/board-generic.c
> @@ -45,40 +45,6 @@ void tick_broadcast(const struct cpumask *mask)
>   }
>   #endif
>   
> -#ifdef CONFIG_SOC_OMAP2420
> -static const char *const omap242x_boards_compat[] __initconst = {
> -	"ti,omap2420",
> -	NULL,
> -};
> -
> -DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)")
> -	.reserve	= omap_reserve,
> -	.map_io		= omap242x_map_io,
> -	.init_early	= omap2420_init_early,
> -	.init_machine	= omap_generic_init,
> -	.init_time	= omap_init_time_of,
> -	.dt_compat	= omap242x_boards_compat,
> -	.restart	= omap2xxx_restart,
> -MACHINE_END
> -#endif
> -
> -#ifdef CONFIG_SOC_OMAP2430
> -static const char *const omap243x_boards_compat[] __initconst = {
> -	"ti,omap2430",
> -	NULL,
> -};
> -
> -DT_MACHINE_START(OMAP243X_DT, "Generic OMAP2430 (Flattened Device Tree)")
> -	.reserve	= omap_reserve,
> -	.map_io		= omap243x_map_io,
> -	.init_early	= omap2430_init_early,
> -	.init_machine	= omap_generic_init,
> -	.init_time	= omap_init_time_of,
> -	.dt_compat	= omap243x_boards_compat,
> -	.restart	= omap2xxx_restart,
> -MACHINE_END
> -#endif
> -
>   #ifdef CONFIG_ARCH_OMAP3
>   /* Some boards need board name for legacy userspace in /proc/cpuinfo */
>   static const char *const n900_boards_compat[] __initconst = {
> diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
> deleted file mode 100644
> index d9acd32c5457..000000000000
> --- a/arch/arm/mach-omap2/board-n8x0.c
> +++ /dev/null
> @@ -1,512 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/mach-omap2/board-n8x0.c
> - *
> - * Copyright (C) 2005-2009 Nokia Corporation
> - * Author: Juha Yrjola <juha.yrjola@nokia.com>
> - *
> - * Modified from mach-omap2/board-generic.c
> - */
> -
> -#include <linux/clk.h>
> -#include <linux/delay.h>
> -#include <linux/gpio/machine.h>
> -#include <linux/gpio/consumer.h>
> -#include <linux/init.h>
> -#include <linux/io.h>
> -#include <linux/irq.h>
> -#include <linux/stddef.h>
> -#include <linux/i2c.h>
> -#include <linux/spi/spi.h>
> -#include <linux/usb/musb.h>
> -#include <linux/mmc/host.h>
> -#include <linux/platform_data/mmc-omap.h>
> -#include <linux/mfd/menelaus.h>
> -
> -#include <asm/mach/arch.h>
> -#include <asm/mach-types.h>
> -
> -#include "common.h"
> -#include "mmc.h"
> -#include "usb-tusb6010.h"
> -#include "soc.h"
> -#include "common-board-devices.h"
> -
> -#define TUSB6010_ASYNC_CS	1
> -#define TUSB6010_SYNC_CS	4
> -#define TUSB6010_DMACHAN	0x3f
> -
> -#define NOKIA_N810_WIMAX	(1 << 2)
> -#define NOKIA_N810		(1 << 1)
> -#define NOKIA_N800		(1 << 0)
> -
> -static u32 board_caps;
> -
> -#define board_is_n800()		(board_caps & NOKIA_N800)
> -#define board_is_n810()		(board_caps & NOKIA_N810)
> -#define board_is_n810_wimax()	(board_caps & NOKIA_N810_WIMAX)
> -
> -static void board_check_revision(void)
> -{
> -	if (of_machine_is_compatible("nokia,n800"))
> -		board_caps = NOKIA_N800;
> -	else if (of_machine_is_compatible("nokia,n810"))
> -		board_caps = NOKIA_N810;
> -	else if (of_machine_is_compatible("nokia,n810-wimax"))
> -		board_caps = NOKIA_N810_WIMAX;
> -
> -	if (!board_caps)
> -		pr_err("Unknown board\n");
> -}
> -
> -#if IS_ENABLED(CONFIG_USB_MUSB_TUSB6010)
> -
> -static struct musb_hdrc_config musb_config = {
> -	.multipoint	= 1,
> -	.dyn_fifo	= 1,
> -	.num_eps	= 16,
> -	.ram_bits	= 12,
> -};
> -
> -static struct musb_hdrc_platform_data tusb_data = {
> -	.mode		= MUSB_OTG,
> -	.min_power	= 25,	/* x2 = 50 mA drawn from VBUS as peripheral */
> -	.power		= 100,	/* Max 100 mA VBUS for host mode */
> -	.config		= &musb_config,
> -};
> -
> -static struct gpiod_lookup_table tusb_gpio_table = {
> -	.dev_id = "musb-tusb",
> -	.table = {
> -		GPIO_LOOKUP("gpio-0-31", 0, "enable", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("gpio-32-63", 26, "int", GPIO_ACTIVE_HIGH),
> -		{ }
> -	},
> -};
> -
> -static void __init n8x0_usb_init(void)
> -{
> -	int ret = 0;
> -
> -	gpiod_add_lookup_table(&tusb_gpio_table);
> -	ret = tusb6010_setup_interface(&tusb_data, TUSB6010_REFCLK_19, 2,
> -				       TUSB6010_ASYNC_CS, TUSB6010_SYNC_CS,
> -				       TUSB6010_DMACHAN);
> -	if (ret != 0)
> -		return;
> -
> -	pr_info("TUSB 6010\n");
> -
> -	return;
> -}
> -#else
> -
> -static void __init n8x0_usb_init(void) {}
> -
> -#endif /*CONFIG_USB_MUSB_TUSB6010 */
> -
> -#if defined(CONFIG_MENELAUS) && IS_ENABLED(CONFIG_MMC_OMAP)
> -
> -/*
> - * On both N800 and N810, only the first of the two MMC controllers is in use.
> - * The two MMC slots are multiplexed via Menelaus companion chip over I2C.
> - * On N800, both slots are powered via Menelaus. On N810, only one of the
> - * slots is powered via Menelaus. The N810 EMMC is powered via GPIO.
> - *
> - * VMMC				slot 1 on both N800 and N810
> - * VDCDC3_APE and VMCS2_APE	slot 2 on N800
> - * GPIO23 and GPIO9		slot 2 EMMC on N810
> - *
> - */
> -static int slot1_cover_open;
> -static int slot2_cover_open;
> -static struct device *mmc_device;
> -
> -static struct gpiod_lookup_table nokia800_mmc_gpio_table = {
> -	.dev_id = "mmci-omap.0",
> -	.table = {
> -		/* Slot switch, GPIO 96 */
> -		GPIO_LOOKUP("gpio-96-127", 0, "switch", GPIO_ACTIVE_HIGH),
> -		{ }
> -	},
> -};
> -
> -static struct gpiod_lookup_table nokia810_mmc_gpio_table = {
> -	.dev_id = "mmci-omap.0",
> -	.table = {
> -		/* Slot switch, GPIO 96 */
> -		GPIO_LOOKUP("gpio-96-127", 0, "switch", GPIO_ACTIVE_HIGH),
> -		/* Slot index 1, VSD power, GPIO 23 */
> -		GPIO_LOOKUP_IDX("gpio-0-31", 23, "vsd", 1, GPIO_ACTIVE_HIGH),
> -		/* Slot index 1, VIO power, GPIO 9 */
> -		GPIO_LOOKUP_IDX("gpio-0-31", 9, "vio", 1, GPIO_ACTIVE_HIGH),
> -		{ }
> -	},
> -};
> -
> -static int n8x0_mmc_set_power_menelaus(struct device *dev, int slot,
> -					int power_on, int vdd)
> -{
> -	int mV;
> -
> -#ifdef CONFIG_MMC_DEBUG
> -	dev_dbg(dev, "Set slot %d power: %s (vdd %d)\n", slot + 1,
> -		str_on_off(power_on), vdd);
> -#endif
> -	if (slot == 0) {
> -		if (!power_on)
> -			return menelaus_set_vmmc(0);
> -		switch (1 << vdd) {
> -		case MMC_VDD_33_34:
> -		case MMC_VDD_32_33:
> -		case MMC_VDD_31_32:
> -			mV = 3100;
> -			break;
> -		case MMC_VDD_30_31:
> -			mV = 3000;
> -			break;
> -		case MMC_VDD_28_29:
> -			mV = 2800;
> -			break;
> -		case MMC_VDD_165_195:
> -			mV = 1850;
> -			break;
> -		default:
> -			BUG();
> -		}
> -		return menelaus_set_vmmc(mV);
> -	} else {
> -		if (!power_on)
> -			return menelaus_set_vdcdc(3, 0);
> -		switch (1 << vdd) {
> -		case MMC_VDD_33_34:
> -		case MMC_VDD_32_33:
> -			mV = 3300;
> -			break;
> -		case MMC_VDD_30_31:
> -		case MMC_VDD_29_30:
> -			mV = 3000;
> -			break;
> -		case MMC_VDD_28_29:
> -		case MMC_VDD_27_28:
> -			mV = 2800;
> -			break;
> -		case MMC_VDD_24_25:
> -		case MMC_VDD_23_24:
> -			mV = 2400;
> -			break;
> -		case MMC_VDD_22_23:
> -		case MMC_VDD_21_22:
> -			mV = 2200;
> -			break;
> -		case MMC_VDD_20_21:
> -			mV = 2000;
> -			break;
> -		case MMC_VDD_165_195:
> -			mV = 1800;
> -			break;
> -		default:
> -			BUG();
> -		}
> -		return menelaus_set_vdcdc(3, mV);
> -	}
> -	return 0;
> -}
> -
> -static int n8x0_mmc_set_power(struct device *dev, int slot, int power_on,
> -			      int vdd)
> -{
> -	if (board_is_n800() || slot == 0)
> -		return n8x0_mmc_set_power_menelaus(dev, slot, power_on, vdd);
> -
> -	/* The n810 power will be handled by GPIO code in the driver */
> -
> -	return 0;
> -}
> -
> -static int n8x0_mmc_set_bus_mode(struct device *dev, int slot, int bus_mode)
> -{
> -	int r;
> -
> -	dev_dbg(dev, "Set slot %d bus mode %s\n", slot + 1,
> -		bus_mode == MMC_BUSMODE_OPENDRAIN ? "open-drain" : "push-pull");
> -	BUG_ON(slot != 0 && slot != 1);
> -	slot++;
> -	switch (bus_mode) {
> -	case MMC_BUSMODE_OPENDRAIN:
> -		r = menelaus_set_mmc_opendrain(slot, 1);
> -		break;
> -	case MMC_BUSMODE_PUSHPULL:
> -		r = menelaus_set_mmc_opendrain(slot, 0);
> -		break;
> -	default:
> -		BUG();
> -	}
> -	if (r != 0 && printk_ratelimit())
> -		dev_err(dev, "MMC: unable to set bus mode for slot %d\n",
> -			slot);
> -	return r;
> -}
> -
> -static int n8x0_mmc_get_cover_state(struct device *dev, int slot)
> -{
> -	slot++;
> -	BUG_ON(slot != 1 && slot != 2);
> -	if (slot == 1)
> -		return slot1_cover_open;
> -	else
> -		return slot2_cover_open;
> -}
> -
> -static void n8x0_mmc_callback(void *data, u8 card_mask)
> -{
> -#ifdef CONFIG_MMC_OMAP
> -	int bit, *openp, index;
> -
> -	if (board_is_n800()) {
> -		bit = 1 << 1;
> -		openp = &slot2_cover_open;
> -		index = 1;
> -	} else {
> -		bit = 1;
> -		openp = &slot1_cover_open;
> -		index = 0;
> -	}
> -
> -	if (card_mask & bit)
> -		*openp = 1;
> -	else
> -		*openp = 0;
> -
> -	omap_mmc_notify_cover_event(mmc_device, index, *openp);
> -#else
> -	pr_warn("MMC: notify cover event not available\n");
> -#endif
> -}
> -
> -static int n8x0_mmc_late_init(struct device *dev)
> -{
> -	int r, bit, *openp;
> -	int vs2sel;
> -
> -	mmc_device = dev;
> -
> -	r = menelaus_set_slot_sel(1);
> -	if (r < 0)
> -		return r;
> -
> -	if (board_is_n800())
> -		vs2sel = 0;
> -	else
> -		vs2sel = 2;
> -
> -	r = menelaus_set_mmc_slot(2, 0, vs2sel, 1);
> -	if (r < 0)
> -		return r;
> -
> -	n8x0_mmc_set_power(dev, 0, MMC_POWER_ON, 16); /* MMC_VDD_28_29 */
> -	n8x0_mmc_set_power(dev, 1, MMC_POWER_ON, 16);
> -
> -	r = menelaus_set_mmc_slot(1, 1, 0, 1);
> -	if (r < 0)
> -		return r;
> -	r = menelaus_set_mmc_slot(2, 1, vs2sel, 1);
> -	if (r < 0)
> -		return r;
> -
> -	r = menelaus_get_slot_pin_states();
> -	if (r < 0)
> -		return r;
> -
> -	if (board_is_n800()) {
> -		bit = 1 << 1;
> -		openp = &slot2_cover_open;
> -	} else {
> -		bit = 1;
> -		openp = &slot1_cover_open;
> -		slot2_cover_open = 0;
> -	}
> -
> -	/* All slot pin bits seem to be inversed until first switch change */
> -	if (r == 0xf || r == (0xf & ~bit))
> -		r = ~r;
> -
> -	if (r & bit)
> -		*openp = 1;
> -	else
> -		*openp = 0;
> -
> -	r = menelaus_register_mmc_callback(n8x0_mmc_callback, NULL);
> -
> -	return r;
> -}
> -
> -static void n8x0_mmc_shutdown(struct device *dev)
> -{
> -	int vs2sel;
> -
> -	if (board_is_n800())
> -		vs2sel = 0;
> -	else
> -		vs2sel = 2;
> -
> -	menelaus_set_mmc_slot(1, 0, 0, 0);
> -	menelaus_set_mmc_slot(2, 0, vs2sel, 0);
> -}
> -
> -static void n8x0_mmc_cleanup(struct device *dev)
> -{
> -	menelaus_unregister_mmc_callback();
> -}
> -
> -/*
> - * MMC controller1 has two slots that are multiplexed via I2C.
> - * MMC controller2 is not in use.
> - */
> -static struct omap_mmc_platform_data mmc1_data = {
> -	.nr_slots			= 0,
> -	.init				= n8x0_mmc_late_init,
> -	.cleanup			= n8x0_mmc_cleanup,
> -	.shutdown			= n8x0_mmc_shutdown,
> -	.max_freq			= 24000000,
> -	.slots[0] = {
> -		.wires			= 4,
> -		.set_power		= n8x0_mmc_set_power,
> -		.set_bus_mode		= n8x0_mmc_set_bus_mode,
> -		.get_cover_state	= n8x0_mmc_get_cover_state,
> -		.ocr_mask		= MMC_VDD_165_195 | MMC_VDD_30_31 |
> -						MMC_VDD_32_33   | MMC_VDD_33_34,
> -		.name			= "internal",
> -	},
> -	.slots[1] = {
> -		.set_power		= n8x0_mmc_set_power,
> -		.set_bus_mode		= n8x0_mmc_set_bus_mode,
> -		.get_cover_state	= n8x0_mmc_get_cover_state,
> -		.ocr_mask		= MMC_VDD_165_195 | MMC_VDD_20_21 |
> -						MMC_VDD_21_22 | MMC_VDD_22_23 |
> -						MMC_VDD_23_24 | MMC_VDD_24_25 |
> -						MMC_VDD_27_28 | MMC_VDD_28_29 |
> -						MMC_VDD_29_30 | MMC_VDD_30_31 |
> -						MMC_VDD_32_33 | MMC_VDD_33_34,
> -		.name			= "external",
> -	},
> -};
> -
> -static struct omap_mmc_platform_data *mmc_data[OMAP24XX_NR_MMC];
> -
> -static void __init n8x0_mmc_init(void)
> -{
> -	if (board_is_n810()) {
> -		mmc1_data.slots[0].name = "external";
> -
> -		/*
> -		 * Some Samsung Movinand chips do not like open-ended
> -		 * multi-block reads and fall to braind-dead state
> -		 * while doing so. Reducing the number of blocks in
> -		 * the transfer or delays in clock disable do not help
> -		 */
> -		mmc1_data.slots[1].name = "internal";
> -		mmc1_data.slots[1].ban_openended = 1;
> -		gpiod_add_lookup_table(&nokia810_mmc_gpio_table);
> -	} else {
> -		gpiod_add_lookup_table(&nokia800_mmc_gpio_table);
> -	}
> -
> -	mmc1_data.nr_slots = 2;
> -	mmc_data[0] = &mmc1_data;
> -}
> -#else
> -static struct omap_mmc_platform_data mmc1_data;
> -static void __init n8x0_mmc_init(void)
> -{
> -}
> -#endif	/* CONFIG_MMC_OMAP */
> -
> -#ifdef CONFIG_MENELAUS
> -
> -static int n8x0_auto_sleep_regulators(void)
> -{
> -	u32 val;
> -	int ret;
> -
> -	val = EN_VPLL_SLEEP | EN_VMMC_SLEEP    \
> -		| EN_VAUX_SLEEP | EN_VIO_SLEEP \
> -		| EN_VMEM_SLEEP | EN_DC3_SLEEP \
> -		| EN_VC_SLEEP | EN_DC2_SLEEP;
> -
> -	ret = menelaus_set_regulator_sleep(1, val);
> -	if (ret < 0) {
> -		pr_err("Could not set regulators to sleep on menelaus: %u\n",
> -		       ret);
> -		return ret;
> -	}
> -	return 0;
> -}
> -
> -static int n8x0_auto_voltage_scale(void)
> -{
> -	int ret;
> -
> -	ret = menelaus_set_vcore_hw(1400, 1050);
> -	if (ret < 0) {
> -		pr_err("Could not set VCORE voltage on menelaus: %u\n", ret);
> -		return ret;
> -	}
> -	return 0;
> -}
> -
> -static int n8x0_menelaus_late_init(struct device *dev)
> -{
> -	int ret;
> -
> -	ret = n8x0_auto_voltage_scale();
> -	if (ret < 0)
> -		return ret;
> -	ret = n8x0_auto_sleep_regulators();
> -	if (ret < 0)
> -		return ret;
> -	return 0;
> -}
> -
> -#else
> -static int n8x0_menelaus_late_init(struct device *dev)
> -{
> -	return 0;
> -}
> -#endif
> -
> -struct menelaus_platform_data n8x0_menelaus_platform_data = {
> -	.late_init = n8x0_menelaus_late_init,
> -};
> -
> -static struct gpiod_lookup_table nokia810_asoc_gpio_table = {
> -	.dev_id = "soc-audio",
> -	.table = {
> -		GPIO_LOOKUP("gpio-0-15", 10, "headset", GPIO_ACTIVE_HIGH),
> -		GPIO_LOOKUP("gpio-80-111", 21, "speaker", GPIO_ACTIVE_HIGH),
> -		{ }
> -	},
> -};
> -
> -static int __init n8x0_late_initcall(void)
> -{
> -	if (!board_caps)
> -		return -ENODEV;
> -
> -	n8x0_mmc_init();
> -	n8x0_usb_init();
> -	gpiod_add_lookup_table(&nokia810_asoc_gpio_table);
> -
> -	return 0;
> -}
> -omap_late_initcall(n8x0_late_initcall);
> -
> -/*
> - * Legacy init pdata init for n8x0. Note that we want to follow the
> - * I2C bus numbering starting at 0 for device tree like other omaps.
> - */
> -void * __init n8x0_legacy_init(void)
> -{
> -	board_check_revision();
> -	return &mmc1_data;
> -}
> diff --git a/arch/arm/mach-omap2/clkt2xxx_dpll.c b/arch/arm/mach-omap2/clkt2xxx_dpll.c
> deleted file mode 100644
> index 0edebf3355fa..000000000000
> --- a/arch/arm/mach-omap2/clkt2xxx_dpll.c
> +++ /dev/null
> @@ -1,56 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * OMAP2-specific DPLL control functions
> - *
> - * Copyright (C) 2011 Nokia Corporation
> - * Paul Walmsley
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/clk.h>
> -#include <linux/io.h>
> -
> -#include "clock.h"
> -#include "cm2xxx.h"
> -#include "cm-regbits-24xx.h"
> -
> -/* Private functions */
> -
> -/**
> - * _allow_idle - enable DPLL autoidle bits
> - * @clk: struct clk * of the DPLL to operate on
> - *
> - * Enable DPLL automatic idle control.  The DPLL will enter low-power
> - * stop when its downstream clocks are gated.  No return value.
> - * REVISIT: DPLL can optionally enter low-power bypass by writing 0x1
> - * instead.  Add some mechanism to optionally enter this mode.
> - */
> -static void _allow_idle(struct clk_hw_omap *clk)
> -{
> -	if (!clk || !clk->dpll_data)
> -		return;
> -
> -	omap2xxx_cm_set_dpll_auto_low_power_stop();
> -}
> -
> -/**
> - * _deny_idle - prevent DPLL from automatically idling
> - * @clk: struct clk * of the DPLL to operate on
> - *
> - * Disable DPLL automatic idle control.  No return value.
> - */
> -static void _deny_idle(struct clk_hw_omap *clk)
> -{
> -	if (!clk || !clk->dpll_data)
> -		return;
> -
> -	omap2xxx_cm_set_dpll_disable_autoidle();
> -}
> -
> -
> -/* Public data */
> -const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll = {
> -	.allow_idle	= _allow_idle,
> -	.deny_idle	= _deny_idle,
> -};
> diff --git a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c b/arch/arm/mach-omap2/clkt2xxx_dpllcore.c
> deleted file mode 100644
> index 93f6d3cd9525..000000000000
> --- a/arch/arm/mach-omap2/clkt2xxx_dpllcore.c
> +++ /dev/null
> @@ -1,194 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * DPLL + CORE_CLK composite clock functions
> - *
> - * Copyright (C) 2005-2008 Texas Instruments, Inc.
> - * Copyright (C) 2004-2010 Nokia Corporation
> - *
> - * Contacts:
> - * Richard Woodruff <r-woodruff2@ti.com>
> - * Paul Walmsley
> - *
> - * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
> - * Gordon McNutt and RidgeRun, Inc.
> - *
> - * XXX The DPLL and CORE clocks should be split into two separate clock
> - * types.
> - */
> -#undef DEBUG
> -
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/clk.h>
> -#include <linux/clk/ti.h>
> -#include <linux/io.h>
> -
> -#include "clock.h"
> -#include "clock2xxx.h"
> -#include "opp2xxx.h"
> -#include "cm2xxx.h"
> -#include "cm-regbits-24xx.h"
> -#include "sdrc.h"
> -#include "sram.h"
> -
> -/* #define DOWN_VARIABLE_DPLL 1 */		/* Experimental */
> -
> -/*
> - * dpll_core_ck: pointer to the combined dpll_ck + core_ck on OMAP2xxx
> - * (currently defined as "dpll_ck" in the OMAP2xxx clock tree).  Set
> - * during dpll_ck init and used later by omap2xxx_clk_get_core_rate().
> - */
> -static struct clk_hw_omap *dpll_core_ck;
> -
> -/**
> - * omap2xxx_clk_get_core_rate - return the CORE_CLK rate
> - *
> - * Returns the CORE_CLK rate.  CORE_CLK can have one of three rate
> - * sources on OMAP2xxx: the DPLL CLKOUT rate, DPLL CLKOUTX2, or 32KHz
> - * (the latter is unusual).  This currently should be called with
> - * struct clk *dpll_ck, which is a composite clock of dpll_ck and
> - * core_ck.
> - */
> -unsigned long omap2xxx_clk_get_core_rate(void)
> -{
> -	long long core_clk;
> -	u32 v;
> -
> -	WARN_ON(!dpll_core_ck);
> -
> -	core_clk = omap2_get_dpll_rate(dpll_core_ck);
> -
> -	v = omap2xxx_cm_get_core_clk_src();
> -
> -	if (v == CORE_CLK_SRC_32K)
> -		core_clk = 32768;
> -	else
> -		core_clk *= v;
> -
> -	return core_clk;
> -}
> -
> -/*
> - * Uses the current prcm set to tell if a rate is valid.
> - * You can go slower, but not faster within a given rate set.
> - */
> -static long omap2_dpllcore_round_rate(unsigned long target_rate)
> -{
> -	u32 high, low, core_clk_src;
> -
> -	core_clk_src = omap2xxx_cm_get_core_clk_src();
> -
> -	if (core_clk_src == CORE_CLK_SRC_DPLL) {	/* DPLL clockout */
> -		high = curr_prcm_set->dpll_speed * 2;
> -		low = curr_prcm_set->dpll_speed;
> -	} else {				/* DPLL clockout x 2 */
> -		high = curr_prcm_set->dpll_speed;
> -		low = curr_prcm_set->dpll_speed / 2;
> -	}
> -
> -#ifdef DOWN_VARIABLE_DPLL
> -	if (target_rate > high)
> -		return high;
> -	else
> -		return target_rate;
> -#else
> -	if (target_rate > low)
> -		return high;
> -	else
> -		return low;
> -#endif
> -
> -}
> -
> -unsigned long omap2_dpllcore_recalc(struct clk_hw *hw,
> -				    unsigned long parent_rate)
> -{
> -	return omap2xxx_clk_get_core_rate();
> -}
> -
> -int omap2_reprogram_dpllcore(struct clk_hw *hw, unsigned long rate,
> -			     unsigned long parent_rate)
> -{
> -	struct clk_hw_omap *clk = to_clk_hw_omap(hw);
> -	u32 cur_rate, low, mult, div, valid_rate, done_rate;
> -	u32 bypass = 0;
> -	struct prcm_config tmpset;
> -	const struct dpll_data *dd;
> -
> -	cur_rate = omap2xxx_clk_get_core_rate();
> -	mult = omap2xxx_cm_get_core_clk_src();
> -
> -	if ((rate == (cur_rate / 2)) && (mult == 2)) {
> -		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
> -	} else if ((rate == (cur_rate * 2)) && (mult == 1)) {
> -		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
> -	} else if (rate != cur_rate) {
> -		valid_rate = omap2_dpllcore_round_rate(rate);
> -		if (valid_rate != rate)
> -			return -EINVAL;
> -
> -		if (mult == 1)
> -			low = curr_prcm_set->dpll_speed;
> -		else
> -			low = curr_prcm_set->dpll_speed / 2;
> -
> -		dd = clk->dpll_data;
> -		if (!dd)
> -			return -EINVAL;
> -
> -		tmpset.cm_clksel1_pll =
> -			omap_clk_ll_ops.clk_readl(&dd->mult_div1_reg);
> -		tmpset.cm_clksel1_pll &= ~(dd->mult_mask |
> -					   dd->div1_mask);
> -		div = ((curr_prcm_set->xtal_speed / 1000000) - 1);
> -		tmpset.cm_clksel2_pll = omap2xxx_cm_get_core_pll_config();
> -		tmpset.cm_clksel2_pll &= ~OMAP24XX_CORE_CLK_SRC_MASK;
> -		if (rate > low) {
> -			tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL_X2;
> -			mult = ((rate / 2) / 1000000);
> -			done_rate = CORE_CLK_SRC_DPLL_X2;
> -		} else {
> -			tmpset.cm_clksel2_pll |= CORE_CLK_SRC_DPLL;
> -			mult = (rate / 1000000);
> -			done_rate = CORE_CLK_SRC_DPLL;
> -		}
> -		tmpset.cm_clksel1_pll |= (div << __ffs(dd->mult_mask));
> -		tmpset.cm_clksel1_pll |= (mult << __ffs(dd->div1_mask));
> -
> -		/* Worst case */
> -		tmpset.base_sdrc_rfr = SDRC_RFR_CTRL_BYPASS;
> -
> -		if (rate == curr_prcm_set->xtal_speed)	/* If asking for 1-1 */
> -			bypass = 1;
> -
> -		/* For omap2xxx_sdrc_init_params() */
> -		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
> -
> -		/* Force dll lock mode */
> -		omap2_set_prcm(tmpset.cm_clksel1_pll, tmpset.base_sdrc_rfr,
> -			       bypass);
> -
> -		/* Errata: ret dll entry state */
> -		omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
> -		omap2xxx_sdrc_reprogram(done_rate, 0);
> -	}
> -
> -	return 0;
> -}
> -
> -/**
> - * omap2xxx_clkt_dpllcore_init - clk init function for dpll_ck
> - * @clk: struct clk *dpll_ck
> - *
> - * Store a local copy of @clk in dpll_core_ck so other code can query
> - * the core rate without having to clk_get(), which can sleep.  Must
> - * only be called once.  No return value.  XXX If the clock
> - * registration process is ever changed such that dpll_ck is no longer
> - * statically defined, this code may need to change to increment some
> - * kind of use count on dpll_ck.
> - */
> -void omap2xxx_clkt_dpllcore_init(struct clk_hw *hw)
> -{
> -	WARN(dpll_core_ck, "dpll_core_ck already set - should never happen");
> -	dpll_core_ck = to_clk_hw_omap(hw);
> -}
> diff --git a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c b/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
> deleted file mode 100644
> index 2b04e422b46c..000000000000
> --- a/arch/arm/mach-omap2/clkt2xxx_virt_prcm_set.c
> +++ /dev/null
> @@ -1,259 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * OMAP2xxx DVFS virtual clock functions
> - *
> - * Copyright (C) 2005-2008, 2012 Texas Instruments, Inc.
> - * Copyright (C) 2004-2010 Nokia Corporation
> - *
> - * Contacts:
> - * Richard Woodruff <r-woodruff2@ti.com>
> - * Paul Walmsley
> - *
> - * Based on earlier work by Tuukka Tikkanen, Tony Lindgren,
> - * Gordon McNutt and RidgeRun, Inc.
> - *
> - * XXX Some of this code should be replaceable by the upcoming OPP layer
> - * code.  However, some notion of "rate set" is probably still necessary
> - * for OMAP2xxx at least.  Rate sets should be generalized so they can be
> - * used for any OMAP chip, not just OMAP2xxx.  In particular, Richard Woodruff
> - * has in the past expressed a preference to use rate sets for OPP changes,
> - * rather than dynamically recalculating the clock tree, so if someone wants
> - * this badly enough to write the code to handle it, we should support it
> - * as an option.
> - */
> -#undef DEBUG
> -
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/clk.h>
> -#include <linux/io.h>
> -#include <linux/cpufreq.h>
> -#include <linux/slab.h>
> -
> -#include "soc.h"
> -#include "clock.h"
> -#include "clock2xxx.h"
> -#include "opp2xxx.h"
> -#include "cm2xxx.h"
> -#include "cm-regbits-24xx.h"
> -#include "sdrc.h"
> -#include "sram.h"
> -
> -static u16 cpu_mask;
> -
> -const struct prcm_config *curr_prcm_set;
> -const struct prcm_config *rate_table;
> -
> -/*
> - * sys_ck_rate: the rate of the external high-frequency clock
> - * oscillator on the board.  Set by the SoC-specific clock init code.
> - * Once set during a boot, will not change.
> - */
> -static unsigned long sys_ck_rate;
> -
> -/**
> - * omap2_table_mpu_recalc - just return the MPU speed
> - * @clk: virt_prcm_set struct clk
> - *
> - * Set virt_prcm_set's rate to the mpu_speed field of the current PRCM set.
> - */
> -static unsigned long omap2_table_mpu_recalc(struct clk_hw *clk,
> -				     unsigned long parent_rate)
> -{
> -	return curr_prcm_set->mpu_speed;
> -}
> -
> -/*
> - * Look for a rate equal or less than the target rate given a configuration set.
> - *
> - * What's not entirely clear is "which" field represents the key field.
> - * Some might argue L3-DDR, others ARM, others IVA. This code is simple and
> - * just uses the ARM rates.
> - */
> -static int omap2_determine_rate_to_table(struct clk_hw *hw,
> -					 struct clk_rate_request *req)
> -{
> -	const struct prcm_config *ptr;
> -	long highest_rate;
> -
> -	highest_rate = -EINVAL;
> -
> -	for (ptr = rate_table; ptr->mpu_speed; ptr++) {
> -		if (!(ptr->flags & cpu_mask))
> -			continue;
> -		if (ptr->xtal_speed != sys_ck_rate)
> -			continue;
> -
> -		highest_rate = ptr->mpu_speed;
> -
> -		/* Can check only after xtal frequency check */
> -		if (ptr->mpu_speed <= req->rate)
> -			break;
> -	}
> -	req->rate = highest_rate;
> -
> -	return 0;
> -}
> -
> -/* Sets basic clocks based on the specified rate */
> -static int omap2_select_table_rate(struct clk_hw *hw, unsigned long rate,
> -				   unsigned long parent_rate)
> -{
> -	u32 cur_rate, done_rate, bypass = 0;
> -	const struct prcm_config *prcm;
> -	unsigned long found_speed = 0;
> -	unsigned long flags;
> -
> -	for (prcm = rate_table; prcm->mpu_speed; prcm++) {
> -		if (!(prcm->flags & cpu_mask))
> -			continue;
> -
> -		if (prcm->xtal_speed != sys_ck_rate)
> -			continue;
> -
> -		if (prcm->mpu_speed <= rate) {
> -			found_speed = prcm->mpu_speed;
> -			break;
> -		}
> -	}
> -
> -	if (!found_speed) {
> -		printk(KERN_INFO "Could not set MPU rate to %luMHz\n",
> -		       rate / 1000000);
> -		return -EINVAL;
> -	}
> -
> -	curr_prcm_set = prcm;
> -	cur_rate = omap2xxx_clk_get_core_rate();
> -
> -	if (prcm->dpll_speed == cur_rate / 2) {
> -		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL, 1);
> -	} else if (prcm->dpll_speed == cur_rate * 2) {
> -		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
> -	} else if (prcm->dpll_speed != cur_rate) {
> -		local_irq_save(flags);
> -
> -		if (prcm->dpll_speed == prcm->xtal_speed)
> -			bypass = 1;
> -
> -		if ((prcm->cm_clksel2_pll & OMAP24XX_CORE_CLK_SRC_MASK) ==
> -		    CORE_CLK_SRC_DPLL_X2)
> -			done_rate = CORE_CLK_SRC_DPLL_X2;
> -		else
> -			done_rate = CORE_CLK_SRC_DPLL;
> -
> -		omap2xxx_cm_set_mod_dividers(prcm->cm_clksel_mpu,
> -					     prcm->cm_clksel_dsp,
> -					     prcm->cm_clksel_gfx,
> -					     prcm->cm_clksel1_core,
> -					     prcm->cm_clksel_mdm);
> -
> -		/* x2 to enter omap2xxx_sdrc_init_params() */
> -		omap2xxx_sdrc_reprogram(CORE_CLK_SRC_DPLL_X2, 1);
> -
> -		omap2_set_prcm(prcm->cm_clksel1_pll, prcm->base_sdrc_rfr,
> -			       bypass);
> -
> -		omap2xxx_sdrc_init_params(omap2xxx_sdrc_dll_is_unlocked());
> -		omap2xxx_sdrc_reprogram(done_rate, 0);
> -
> -		local_irq_restore(flags);
> -	}
> -
> -	return 0;
> -}
> -
> -/**
> - * omap2xxx_clkt_vps_check_bootloader_rates - determine which of the rate
> - * table sets matches the current CORE DPLL hardware rate
> - *
> - * Check the MPU rate set by bootloader.  Sets the 'curr_prcm_set'
> - * global to point to the active rate set when found; otherwise, sets
> - * it to NULL.  No return value;
> - */
> -static void omap2xxx_clkt_vps_check_bootloader_rates(void)
> -{
> -	const struct prcm_config *prcm = NULL;
> -	unsigned long rate;
> -
> -	rate = omap2xxx_clk_get_core_rate();
> -	for (prcm = rate_table; prcm->mpu_speed; prcm++) {
> -		if (!(prcm->flags & cpu_mask))
> -			continue;
> -		if (prcm->xtal_speed != sys_ck_rate)
> -			continue;
> -		if (prcm->dpll_speed <= rate)
> -			break;
> -	}
> -	curr_prcm_set = prcm;
> -}
> -
> -/**
> - * omap2xxx_clkt_vps_late_init - store a copy of the sys_ck rate
> - *
> - * Store a copy of the sys_ck rate for later use by the OMAP2xxx DVFS
> - * code.  (The sys_ck rate does not -- or rather, must not -- change
> - * during kernel runtime.)  Must be called after we have a valid
> - * sys_ck rate, but before the virt_prcm_set clock rate is
> - * recalculated.  No return value.
> - */
> -static void omap2xxx_clkt_vps_late_init(void)
> -{
> -	struct clk *c;
> -
> -	c = clk_get(NULL, "sys_ck");
> -	if (IS_ERR(c)) {
> -		WARN(1, "could not locate sys_ck\n");
> -	} else {
> -		sys_ck_rate = clk_get_rate(c);
> -		clk_put(c);
> -	}
> -}
> -
> -#ifdef CONFIG_OF
> -#include <linux/clk-provider.h>
> -#include <linux/clkdev.h>
> -
> -static const struct clk_ops virt_prcm_set_ops = {
> -	.recalc_rate	= &omap2_table_mpu_recalc,
> -	.set_rate	= &omap2_select_table_rate,
> -	.determine_rate = &omap2_determine_rate_to_table,
> -};
> -
> -/**
> - * omap2xxx_clkt_vps_init - initialize virt_prcm_set clock
> - *
> - * Does a manual init for the virtual prcm DVFS clock for OMAP2. This
> - * function is called only from omap2 DT clock init, as the virtual
> - * node is not modelled in the DT clock data.
> - */
> -void omap2xxx_clkt_vps_init(void)
> -{
> -	struct clk_init_data init = { NULL };
> -	struct clk_hw_omap *hw = NULL;
> -	struct clk *clk;
> -	const char *parent_name = "mpu_ck";
> -
> -	omap2xxx_clkt_vps_late_init();
> -	omap2xxx_clkt_vps_check_bootloader_rates();
> -
> -	hw = kzalloc_obj(*hw);
> -	if (!hw)
> -		return;
> -	init.name = "virt_prcm_set";
> -	init.ops = &virt_prcm_set_ops;
> -	init.parent_names = &parent_name;
> -	init.num_parents = 1;
> -
> -	hw->hw.init = &init;
> -
> -	clk = clk_register(NULL, &hw->hw);
> -	if (IS_ERR(clk)) {
> -		printk(KERN_ERR "Failed to register clock\n");
> -		kfree(hw);
> -		return;
> -	}
> -
> -	clkdev_create(clk, "cpufreq_ck", NULL);
> -}
> -#endif
> diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
> index 83fae51722a9..b73a80503da8 100644
> --- a/arch/arm/mach-omap2/clock.c
> +++ b/arch/arm/mach-omap2/clock.c
> @@ -30,9 +30,7 @@
>   #include "clockdomain.h"
>   #include "clock.h"
>   #include "cm.h"
> -#include "cm2xxx.h"
>   #include "cm3xxx.h"
> -#include "cm-regbits-24xx.h"
>   #include "cm-regbits-34xx.h"
>   #include "common.h"
>   
> @@ -94,11 +92,7 @@ void __init ti_clk_init_features(void)
>   	}
>   
>   	/* Bypass value setup for DPLLs */
> -	if (cpu_is_omap24xx()) {
> -		features.dpll_bypass_vals |=
> -			(1 << OMAP2XXX_EN_DPLL_LPBYPASS) |
> -			(1 << OMAP2XXX_EN_DPLL_FRBYPASS);
> -	} else if (cpu_is_omap34xx()) {
> +	if (cpu_is_omap34xx()) {
>   		features.dpll_bypass_vals |=
>   			(1 << OMAP3XXX_EN_DPLL_LPBYPASS) |
>   			(1 << OMAP3XXX_EN_DPLL_FRBYPASS);
> @@ -122,9 +116,7 @@ void __init ti_clk_init_features(void)
>   	 * 34xx reverses this, just to keep us on our toes
>   	 * AM35xx uses both, depending on the module.
>   	 */
> -	if (cpu_is_omap24xx())
> -		features.cm_idlest_val = OMAP24XX_CM_IDLEST_VAL;
> -	else if (cpu_is_omap34xx())
> +	if (cpu_is_omap34xx())
>   		features.cm_idlest_val = OMAP34XX_CM_IDLEST_VAL;
>   
>   	/* On OMAP3430 ES1.0, DPLL4 can't be re-programmed */
> diff --git a/arch/arm/mach-omap2/clock2xxx.h b/arch/arm/mach-omap2/clock2xxx.h
> deleted file mode 100644
> index 73c011dadfd2..000000000000
> --- a/arch/arm/mach-omap2/clock2xxx.h
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * OMAP2 clock function prototypes and macros
> - *
> - * Copyright (C) 2005-2010 Texas Instruments, Inc.
> - * Copyright (C) 2004-2010 Nokia Corporation
> - */
> -
> -#ifndef __ARCH_ARM_MACH_OMAP2_CLOCK2XXX_H
> -#define __ARCH_ARM_MACH_OMAP2_CLOCK2XXX_H
> -
> -#include <linux/clk-provider.h>
> -#include "clock.h"
> -
> -unsigned long omap2xxx_clk_get_core_rate(void);
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c
> index 69dc5b839335..4b5ae1f40d50 100644
> --- a/arch/arm/mach-omap2/clockdomain.c
> +++ b/arch/arm/mach-omap2/clockdomain.c
> @@ -1213,7 +1213,7 @@ int clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk)
>   int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh)
>   {
>   	/* The clkdm attribute does not exist yet prior OMAP4 */
> -	if (cpu_is_omap24xx() || cpu_is_omap34xx())
> +	if (cpu_is_omap34xx())
>   		return 0;
>   
>   	/*
> @@ -1244,7 +1244,7 @@ int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh)
>   int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh)
>   {
>   	/* The clkdm attribute does not exist yet prior OMAP4 */
> -	if (cpu_is_omap24xx() || cpu_is_omap34xx())
> +	if (cpu_is_omap34xx())
>   		return 0;
>   
>   	if (!oh)
> diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h
> index 86a2f9e5d0ef..2d422b5f121f 100644
> --- a/arch/arm/mach-omap2/clockdomain.h
> +++ b/arch/arm/mach-omap2/clockdomain.h
> @@ -216,8 +216,6 @@ int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh);
>   void clkdm_save_context(void);
>   void clkdm_restore_context(void);
>   
> -extern void __init omap242x_clockdomains_init(void);
> -extern void __init omap243x_clockdomains_init(void);
>   extern void __init omap3xxx_clockdomains_init(void);
>   extern void __init am33xx_clockdomains_init(void);
>   extern void __init ti814x_clockdomains_init(void);
> @@ -230,14 +228,11 @@ void am43xx_clockdomains_init(void);
>   extern void clkdm_add_autodeps(struct clockdomain *clkdm);
>   extern void clkdm_del_autodeps(struct clockdomain *clkdm);
>   
> -extern struct clkdm_ops omap2_clkdm_operations;
>   extern struct clkdm_ops omap3_clkdm_operations;
>   extern struct clkdm_ops omap4_clkdm_operations;
>   extern struct clkdm_ops am33xx_clkdm_operations;
>   extern struct clkdm_ops am43xx_clkdm_operations;
>   
> -extern struct clkdm_dep gfx_24xx_wkdeps[];
> -extern struct clkdm_dep dsp_24xx_wkdeps[];
>   extern struct clockdomain wkup_common_clkdm;
>   
>   #endif
> diff --git a/arch/arm/mach-omap2/clockdomains2420_data.c b/arch/arm/mach-omap2/clockdomains2420_data.c
> deleted file mode 100644
> index ac4ffb5d2ffc..000000000000
> --- a/arch/arm/mach-omap2/clockdomains2420_data.c
> +++ /dev/null
> @@ -1,154 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * OMAP2420 clockdomains
> - *
> - * Copyright (C) 2008-2011 Texas Instruments, Inc.
> - * Copyright (C) 2008-2010 Nokia Corporation
> - *
> - * Paul Walmsley, Jouni Högander
> - *
> - * This file contains clockdomains and clockdomain wakeup dependencies
> - * for OMAP2420 chips.  Some notes:
> - *
> - * A useful validation rule for struct clockdomain: Any clockdomain
> - * referenced by a wkdep_srcs must have a dep_bit assigned.  So
> - * wkdep_srcs are really just software-controllable dependencies.
> - * Non-software-controllable dependencies do exist, but they are not
> - * encoded below (yet).
> - *
> - * 24xx does not support programmable sleep dependencies (SLEEPDEP)
> - *
> - * The overly-specific dep_bit names are due to a bit name collision
> - * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
> - * value are the same for all powerdomains: 2
> - *
> - * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
> - * sanity check?
> - * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
> - */
> -
> -/*
> - * To-Do List
> - * -> Port the Sleep/Wakeup dependencies for the domains
> - *    from the Power domain framework
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/io.h>
> -
> -#include "soc.h"
> -#include "clockdomain.h"
> -#include "prm2xxx_3xxx.h"
> -#include "cm2xxx_3xxx.h"
> -#include "cm-regbits-24xx.h"
> -#include "prm-regbits-24xx.h"
> -
> -/*
> - * Clockdomain dependencies for wkdeps
> - *
> - * XXX Hardware dependencies (e.g., dependencies that cannot be
> - * changed in software) are not included here yet, but should be.
> - */
> -
> -/* Wakeup dependency source arrays */
> -
> -/* 2420-specific possible wakeup dependencies */
> -
> -/* 2420 PM_WKDEP_MPU: CORE, DSP, WKUP */
> -static struct clkdm_dep mpu_2420_wkdeps[] = {
> -	{ .clkdm_name = "core_l3_clkdm" },
> -	{ .clkdm_name = "core_l4_clkdm" },
> -	{ .clkdm_name = "dsp_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ NULL },
> -};
> -
> -/* 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP */
> -static struct clkdm_dep core_2420_wkdeps[] = {
> -	{ .clkdm_name = "dsp_clkdm" },
> -	{ .clkdm_name = "gfx_clkdm" },
> -	{ .clkdm_name = "mpu_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ NULL },
> -};
> -
> -/*
> - * 2420-only clockdomains
> - */
> -
> -static struct clockdomain mpu_2420_clkdm = {
> -	.name		= "mpu_clkdm",
> -	.pwrdm		= { .name = "mpu_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.wkdep_srcs	= mpu_2420_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
> -};
> -
> -static struct clockdomain iva1_2420_clkdm = {
> -	.name		= "iva1_clkdm",
> -	.pwrdm		= { .name = "dsp_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.dep_bit	= OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
> -	.wkdep_srcs	= dsp_24xx_wkdeps,
> -	.clktrctrl_mask = OMAP2420_AUTOSTATE_IVA_MASK,
> -};
> -
> -static struct clockdomain dsp_2420_clkdm = {
> -	.name		= "dsp_clkdm",
> -	.pwrdm		= { .name = "dsp_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
> -};
> -
> -static struct clockdomain gfx_2420_clkdm = {
> -	.name		= "gfx_clkdm",
> -	.pwrdm		= { .name = "gfx_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.wkdep_srcs	= gfx_24xx_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
> -};
> -
> -static struct clockdomain core_l3_2420_clkdm = {
> -	.name		= "core_l3_clkdm",
> -	.pwrdm		= { .name = "core_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.wkdep_srcs	= core_2420_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
> -};
> -
> -static struct clockdomain core_l4_2420_clkdm = {
> -	.name		= "core_l4_clkdm",
> -	.pwrdm		= { .name = "core_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.wkdep_srcs	= core_2420_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
> -};
> -
> -static struct clockdomain dss_2420_clkdm = {
> -	.name		= "dss_clkdm",
> -	.pwrdm		= { .name = "core_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
> -};
> -
> -static struct clockdomain *clockdomains_omap242x[] __initdata = {
> -	&wkup_common_clkdm,
> -	&mpu_2420_clkdm,
> -	&iva1_2420_clkdm,
> -	&dsp_2420_clkdm,
> -	&gfx_2420_clkdm,
> -	&core_l3_2420_clkdm,
> -	&core_l4_2420_clkdm,
> -	&dss_2420_clkdm,
> -	NULL,
> -};
> -
> -void __init omap242x_clockdomains_init(void)
> -{
> -	if (!cpu_is_omap242x())
> -		return;
> -
> -	clkdm_register_platform_funcs(&omap2_clkdm_operations);
> -	clkdm_register_clkdms(clockdomains_omap242x);
> -	clkdm_complete_init();
> -}
> diff --git a/arch/arm/mach-omap2/clockdomains2430_data.c b/arch/arm/mach-omap2/clockdomains2430_data.c
> deleted file mode 100644
> index 0e97e178abaa..000000000000
> --- a/arch/arm/mach-omap2/clockdomains2430_data.c
> +++ /dev/null
> @@ -1,181 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * OMAP2xxx clockdomains
> - *
> - * Copyright (C) 2008-2009 Texas Instruments, Inc.
> - * Copyright (C) 2008-2010 Nokia Corporation
> - *
> - * Paul Walmsley, Jouni Högander
> - *
> - * This file contains clockdomains and clockdomain wakeup dependencies
> - * for OMAP2xxx chips.  Some notes:
> - *
> - * A useful validation rule for struct clockdomain: Any clockdomain
> - * referenced by a wkdep_srcs must have a dep_bit assigned.  So
> - * wkdep_srcs are really just software-controllable dependencies.
> - * Non-software-controllable dependencies do exist, but they are not
> - * encoded below (yet).
> - *
> - * 24xx does not support programmable sleep dependencies (SLEEPDEP)
> - *
> - * The overly-specific dep_bit names are due to a bit name collision
> - * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
> - * value are the same for all powerdomains: 2
> - *
> - * XXX should dep_bit be a mask, so we can test to see if it is 0 as a
> - * sanity check?
> - * XXX encode hardware fixed wakeup dependencies -- esp. for 3430 CORE
> - */
> -
> -/*
> - * To-Do List
> - * -> Port the Sleep/Wakeup dependencies for the domains
> - *    from the Power domain framework
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/io.h>
> -
> -#include "soc.h"
> -#include "clockdomain.h"
> -#include "prm2xxx_3xxx.h"
> -#include "cm2xxx_3xxx.h"
> -#include "cm-regbits-24xx.h"
> -#include "prm-regbits-24xx.h"
> -
> -/*
> - * Clockdomain dependencies for wkdeps
> - *
> - * XXX Hardware dependencies (e.g., dependencies that cannot be
> - * changed in software) are not included here yet, but should be.
> - */
> -
> -/* Wakeup dependency source arrays */
> -
> -/* 2430-specific possible wakeup dependencies */
> -
> -/* 2430 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP, MDM */
> -static struct clkdm_dep core_2430_wkdeps[] = {
> -	{ .clkdm_name = "dsp_clkdm" },
> -	{ .clkdm_name = "gfx_clkdm" },
> -	{ .clkdm_name = "mpu_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ .clkdm_name = "mdm_clkdm" },
> -	{ NULL },
> -};
> -
> -/* 2430 PM_WKDEP_MPU: CORE, DSP, WKUP, MDM */
> -static struct clkdm_dep mpu_2430_wkdeps[] = {
> -	{ .clkdm_name = "core_l3_clkdm" },
> -	{ .clkdm_name = "core_l4_clkdm" },
> -	{ .clkdm_name = "dsp_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ .clkdm_name = "mdm_clkdm" },
> -	{ NULL },
> -};
> -
> -/* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */
> -static struct clkdm_dep mdm_2430_wkdeps[] = {
> -	{ .clkdm_name = "core_l3_clkdm" },
> -	{ .clkdm_name = "core_l4_clkdm" },
> -	{ .clkdm_name = "mpu_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ NULL },
> -};
> -
> -/*
> - * 2430-only clockdomains
> - */
> -
> -static struct clockdomain mpu_2430_clkdm = {
> -	.name		= "mpu_clkdm",
> -	.pwrdm		= { .name = "mpu_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.wkdep_srcs	= mpu_2430_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_MPU_MASK,
> -};
> -
> -/* Another case of bit name collisions between several registers: EN_MDM */
> -static struct clockdomain mdm_clkdm = {
> -	.name		= "mdm_clkdm",
> -	.pwrdm		= { .name = "mdm_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.dep_bit	= OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
> -	.wkdep_srcs	= mdm_2430_wkdeps,
> -	.clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
> -};
> -
> -static struct clockdomain dsp_2430_clkdm = {
> -	.name		= "dsp_clkdm",
> -	.pwrdm		= { .name = "dsp_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.dep_bit	= OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT,
> -	.wkdep_srcs	= dsp_24xx_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSP_MASK,
> -};
> -
> -static struct clockdomain gfx_2430_clkdm = {
> -	.name		= "gfx_clkdm",
> -	.pwrdm		= { .name = "gfx_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP_SWSUP,
> -	.wkdep_srcs	= gfx_24xx_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_GFX_MASK,
> -};
> -
> -/*
> - * XXX add usecounting for clkdm dependencies, otherwise the presence
> - * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
> - * could cause trouble
> - */
> -static struct clockdomain core_l3_2430_clkdm = {
> -	.name		= "core_l3_clkdm",
> -	.pwrdm		= { .name = "core_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.dep_bit	= OMAP24XX_EN_CORE_SHIFT,
> -	.wkdep_srcs	= core_2430_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L3_MASK,
> -};
> -
> -/*
> - * XXX add usecounting for clkdm dependencies, otherwise the presence
> - * of a single dep bit for core_l3_24xx_clkdm and core_l4_24xx_clkdm
> - * could cause trouble
> - */
> -static struct clockdomain core_l4_2430_clkdm = {
> -	.name		= "core_l4_clkdm",
> -	.pwrdm		= { .name = "core_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.dep_bit	= OMAP24XX_EN_CORE_SHIFT,
> -	.wkdep_srcs	= core_2430_wkdeps,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_L4_MASK,
> -};
> -
> -static struct clockdomain dss_2430_clkdm = {
> -	.name		= "dss_clkdm",
> -	.pwrdm		= { .name = "core_pwrdm" },
> -	.flags		= CLKDM_CAN_HWSUP,
> -	.clktrctrl_mask = OMAP24XX_AUTOSTATE_DSS_MASK,
> -};
> -
> -static struct clockdomain *clockdomains_omap243x[] __initdata = {
> -	&wkup_common_clkdm,
> -	&mpu_2430_clkdm,
> -	&mdm_clkdm,
> -	&dsp_2430_clkdm,
> -	&gfx_2430_clkdm,
> -	&core_l3_2430_clkdm,
> -	&core_l4_2430_clkdm,
> -	&dss_2430_clkdm,
> -	NULL,
> -};
> -
> -void __init omap243x_clockdomains_init(void)
> -{
> -	if (!cpu_is_omap243x())
> -		return;
> -
> -	clkdm_register_platform_funcs(&omap2_clkdm_operations);
> -	clkdm_register_clkdms(clockdomains_omap243x);
> -	clkdm_complete_init();
> -}
> -
> diff --git a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
> index 220c22f5e0f5..4d20c2720660 100644
> --- a/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
> +++ b/arch/arm/mach-omap2/clockdomains2xxx_3xxx_data.c
> @@ -8,7 +8,7 @@
>    * Paul Walmsley, Jouni Högander
>    *
>    * This file contains clockdomains and clockdomain wakeup/sleep
> - * dependencies for the OMAP2/3 chips.  Some notes:
> + * dependencies for the OMAP3 chips.  Some notes:
>    *
>    * A useful validation rule for struct clockdomain: Any clockdomain
>    * referenced by a wkdep_srcs or sleepdep_srcs array must have a
> @@ -16,8 +16,6 @@
>    * software-controllable dependencies.  Non-software-controllable
>    * dependencies do exist, but they are not encoded below (yet).
>    *
> - * 24xx does not support programmable sleep dependencies (SLEEPDEP)
> - *
>    * The overly-specific dep_bit names are due to a bit name collision
>    * with CM_FCLKEN_{DSP,IVA2}.  The DSP/IVA2 PM_WKDEP and CM_SLEEPDEP shift
>    * value are the same for all powerdomains: 2
> @@ -39,10 +37,8 @@
>   #include "clockdomain.h"
>   #include "prm2xxx_3xxx.h"
>   #include "cm2xxx_3xxx.h"
> -#include "cm-regbits-24xx.h"
>   #include "cm-regbits-34xx.h"
>   #include "cm-regbits-44xx.h"
> -#include "prm-regbits-24xx.h"
>   #include "prm-regbits-34xx.h"
>   
>   /*
> @@ -54,29 +50,8 @@
>   
>   /* Wakeup dependency source arrays */
>   
> -/* 2xxx-specific possible dependencies */
> -
> -/* 2xxx PM_WKDEP_GFX: CORE, MPU, WKUP */
> -struct clkdm_dep gfx_24xx_wkdeps[] = {
> -	{ .clkdm_name = "core_l3_clkdm" },
> -	{ .clkdm_name = "core_l4_clkdm" },
> -	{ .clkdm_name = "mpu_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ NULL },
> -};
> -
> -/* 2xxx PM_WKDEP_DSP: CORE, MPU, WKUP */
> -struct clkdm_dep dsp_24xx_wkdeps[] = {
> -	{ .clkdm_name = "core_l3_clkdm" },
> -	{ .clkdm_name = "core_l4_clkdm" },
> -	{ .clkdm_name = "mpu_clkdm" },
> -	{ .clkdm_name = "wkup_clkdm" },
> -	{ NULL },
> -};
> -
> -
>   /*
> - * OMAP2/3-common clockdomains
> + * OMAP3-common clockdomains
>    *
>    * Even though the 2420 has a single PRCM module from the
>    * interconnect's perspective, internally it does appear to have
> diff --git a/arch/arm/mach-omap2/cm-regbits-24xx.h b/arch/arm/mach-omap2/cm-regbits-24xx.h
> deleted file mode 100644
> index 59c14dbb6f87..000000000000
> --- a/arch/arm/mach-omap2/cm-regbits-24xx.h
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef __ARCH_ARM_MACH_OMAP2_CM_REGBITS_24XX_H
> -#define __ARCH_ARM_MACH_OMAP2_CM_REGBITS_24XX_H
> -
> -/*
> - * OMAP24XX Clock Management register bits
> - *
> - * Copyright (C) 2007 Texas Instruments, Inc.
> - * Copyright (C) 2007 Nokia Corporation
> - *
> - * Written by Paul Walmsley
> - */
> -
> -#define OMAP24XX_AUTOSTATE_MPU_MASK			(1 << 0)
> -#define OMAP24XX_EN_DSS1_MASK				(1 << 0)
> -#define OMAP24XX_ST_MAILBOXES_SHIFT			30
> -#define OMAP24XX_ST_HDQ_SHIFT				23
> -#define OMAP2420_ST_I2C2_SHIFT				20
> -#define OMAP2430_ST_I2CHS1_SHIFT			19
> -#define OMAP2420_ST_I2C1_SHIFT				19
> -#define OMAP2430_ST_I2CHS2_SHIFT			20
> -#define OMAP24XX_ST_MCBSP2_SHIFT			16
> -#define OMAP24XX_ST_MCBSP1_SHIFT			15
> -#define OMAP2430_ST_MCBSP5_SHIFT			5
> -#define OMAP2430_ST_MCBSP4_SHIFT			4
> -#define OMAP2430_ST_MCBSP3_SHIFT			3
> -#define OMAP24XX_ST_AES_SHIFT				3
> -#define OMAP24XX_ST_RNG_SHIFT				2
> -#define OMAP24XX_ST_SHA_SHIFT				1
> -#define OMAP24XX_CLKSEL_DSS2_MASK			(0x1 << 13)
> -#define OMAP24XX_AUTOSTATE_DSS_MASK			(1 << 2)
> -#define OMAP24XX_AUTOSTATE_L4_MASK			(1 << 1)
> -#define OMAP24XX_AUTOSTATE_L3_MASK			(1 << 0)
> -#define OMAP24XX_AUTOSTATE_GFX_MASK			(1 << 0)
> -#define OMAP24XX_ST_MPU_WDT_SHIFT			3
> -#define OMAP24XX_ST_32KSYNC_SHIFT			1
> -#define OMAP24XX_EN_54M_PLL_SHIFT			6
> -#define OMAP24XX_EN_96M_PLL_SHIFT			2
> -#define OMAP24XX_ST_54M_APLL_SHIFT			9
> -#define OMAP24XX_ST_96M_APLL_SHIFT			8
> -#define OMAP24XX_AUTO_54M_MASK				(0x3 << 6)
> -#define OMAP24XX_AUTO_96M_MASK				(0x3 << 2)
> -#define OMAP24XX_AUTO_DPLL_SHIFT			0
> -#define OMAP24XX_AUTO_DPLL_MASK				(0x3 << 0)
> -#define OMAP24XX_CORE_CLK_SRC_MASK			(0x3 << 0)
> -#define OMAP2420_AUTOSTATE_IVA_MASK			(1 << 8)
> -#define OMAP24XX_AUTOSTATE_DSP_MASK			(1 << 0)
> -#define OMAP2430_AUTOSTATE_MDM_MASK			(1 << 0)
> -#define OMAP24XX_CLKSTCTRL_DISABLE_AUTO		0x0
> -#define OMAP24XX_CLKSTCTRL_ENABLE_AUTO		0x1
> -#endif
> diff --git a/arch/arm/mach-omap2/cm2xxx.c b/arch/arm/mach-omap2/cm2xxx.c
> deleted file mode 100644
> index 1c6d69f4bf49..000000000000
> --- a/arch/arm/mach-omap2/cm2xxx.c
> +++ /dev/null
> @@ -1,302 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * OMAP2xxx CM module functions
> - *
> - * Copyright (C) 2009 Nokia Corporation
> - * Copyright (C) 2008-2010, 2012 Texas Instruments, Inc.
> - * Paul Walmsley
> - * Rajendra Nayak <rnayak@ti.com>
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/types.h>
> -#include <linux/delay.h>
> -#include <linux/errno.h>
> -#include <linux/err.h>
> -#include <linux/io.h>
> -
> -#include "prm2xxx.h"
> -#include "cm.h"
> -#include "cm2xxx.h"
> -#include "cm-regbits-24xx.h"
> -#include "clockdomain.h"
> -
> -/* CM_AUTOIDLE_PLL.AUTO_* bit values for DPLLs */
> -#define DPLL_AUTOIDLE_DISABLE				0x0
> -#define OMAP2XXX_DPLL_AUTOIDLE_LOW_POWER_STOP		0x3
> -
> -/* CM_AUTOIDLE_PLL.AUTO_* bit values for APLLs (OMAP2xxx only) */
> -#define OMAP2XXX_APLL_AUTOIDLE_DISABLE			0x0
> -#define OMAP2XXX_APLL_AUTOIDLE_LOW_POWER_STOP		0x3
> -
> -/* CM_IDLEST_PLL bit value offset for APLLs (OMAP2xxx only) */
> -#define EN_APLL_LOCKED					3
> -
> -static const u8 omap2xxx_cm_idlest_offs[] = {
> -	CM_IDLEST1, CM_IDLEST2, OMAP2430_CM_IDLEST3, OMAP24XX_CM_IDLEST4
> -};
> -
> -/*
> - *
> - */
> -
> -static void _write_clktrctrl(u8 c, s16 module, u32 mask)
> -{
> -	u32 v;
> -
> -	v = omap2_cm_read_mod_reg(module, OMAP2_CM_CLKSTCTRL);
> -	v &= ~mask;
> -	v |= c << __ffs(mask);
> -	omap2_cm_write_mod_reg(v, module, OMAP2_CM_CLKSTCTRL);
> -}
> -
> -static bool omap2xxx_cm_is_clkdm_in_hwsup(s16 module, u32 mask)
> -{
> -	u32 v;
> -
> -	v = omap2_cm_read_mod_reg(module, OMAP2_CM_CLKSTCTRL);
> -	v &= mask;
> -	v >>= __ffs(mask);
> -
> -	return (v == OMAP24XX_CLKSTCTRL_ENABLE_AUTO) ? 1 : 0;
> -}
> -
> -static void omap2xxx_cm_clkdm_enable_hwsup(s16 module, u32 mask)
> -{
> -	_write_clktrctrl(OMAP24XX_CLKSTCTRL_ENABLE_AUTO, module, mask);
> -}
> -
> -static void omap2xxx_cm_clkdm_disable_hwsup(s16 module, u32 mask)
> -{
> -	_write_clktrctrl(OMAP24XX_CLKSTCTRL_DISABLE_AUTO, module, mask);
> -}
> -
> -/*
> - * DPLL autoidle control
> - */
> -
> -static void _omap2xxx_set_dpll_autoidle(u8 m)
> -{
> -	u32 v;
> -
> -	v = omap2_cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
> -	v &= ~OMAP24XX_AUTO_DPLL_MASK;
> -	v |= m << OMAP24XX_AUTO_DPLL_SHIFT;
> -	omap2_cm_write_mod_reg(v, PLL_MOD, CM_AUTOIDLE);
> -}
> -
> -void omap2xxx_cm_set_dpll_disable_autoidle(void)
> -{
> -	_omap2xxx_set_dpll_autoidle(OMAP2XXX_DPLL_AUTOIDLE_LOW_POWER_STOP);
> -}
> -
> -void omap2xxx_cm_set_dpll_auto_low_power_stop(void)
> -{
> -	_omap2xxx_set_dpll_autoidle(DPLL_AUTOIDLE_DISABLE);
> -}
> -
> -/**
> - * omap2xxx_cm_split_idlest_reg - split CM_IDLEST reg addr into its components
> - * @idlest_reg: CM_IDLEST* virtual address
> - * @prcm_inst: pointer to an s16 to return the PRCM instance offset
> - * @idlest_reg_id: pointer to a u8 to return the CM_IDLESTx register ID
> - *
> - * XXX This function is only needed until absolute register addresses are
> - * removed from the OMAP struct clk records.
> - */
> -static int omap2xxx_cm_split_idlest_reg(struct clk_omap_reg *idlest_reg,
> -					s16 *prcm_inst,
> -					u8 *idlest_reg_id)
> -{
> -	unsigned long offs;
> -	u8 idlest_offs;
> -	int i;
> -
> -	idlest_offs = idlest_reg->offset & 0xff;
> -	for (i = 0; i < ARRAY_SIZE(omap2xxx_cm_idlest_offs); i++) {
> -		if (idlest_offs == omap2xxx_cm_idlest_offs[i]) {
> -			*idlest_reg_id = i + 1;
> -			break;
> -		}
> -	}
> -
> -	if (i == ARRAY_SIZE(omap2xxx_cm_idlest_offs))
> -		return -EINVAL;
> -
> -	offs = idlest_reg->offset;
> -	offs &= 0xff00;
> -	*prcm_inst = offs;
> -
> -	return 0;
> -}
> -
> -/*
> - *
> - */
> -
> -/**
> - * omap2xxx_cm_wait_module_ready - wait for a module to leave idle or standby
> - * @part: PRCM partition, ignored for OMAP2
> - * @prcm_mod: PRCM module offset
> - * @idlest_id: CM_IDLESTx register ID (i.e., x = 1, 2, 3)
> - * @idlest_shift: shift of the bit in the CM_IDLEST* register to check
> - *
> - * Wait for the PRCM to indicate that the module identified by
> - * (@prcm_mod, @idlest_id, @idlest_shift) is clocked.  Return 0 upon
> - * success or -EBUSY if the module doesn't enable in time.
> - */
> -static int omap2xxx_cm_wait_module_ready(u8 part, s16 prcm_mod, u16 idlest_id,
> -					 u8 idlest_shift)
> -{
> -	int ena = 0, i = 0;
> -	u8 cm_idlest_reg;
> -	u32 mask;
> -
> -	if (!idlest_id || (idlest_id > ARRAY_SIZE(omap2xxx_cm_idlest_offs)))
> -		return -EINVAL;
> -
> -	cm_idlest_reg = omap2xxx_cm_idlest_offs[idlest_id - 1];
> -
> -	mask = 1 << idlest_shift;
> -	ena = mask;
> -
> -	omap_test_timeout(((omap2_cm_read_mod_reg(prcm_mod, cm_idlest_reg) &
> -			    mask) == ena), MAX_MODULE_READY_TIME, i);
> -
> -	return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
> -}
> -
> -/* Clockdomain low-level functions */
> -
> -static void omap2xxx_clkdm_allow_idle(struct clockdomain *clkdm)
> -{
> -	omap2xxx_cm_clkdm_enable_hwsup(clkdm->pwrdm.ptr->prcm_offs,
> -				       clkdm->clktrctrl_mask);
> -}
> -
> -static void omap2xxx_clkdm_deny_idle(struct clockdomain *clkdm)
> -{
> -	omap2xxx_cm_clkdm_disable_hwsup(clkdm->pwrdm.ptr->prcm_offs,
> -					clkdm->clktrctrl_mask);
> -}
> -
> -static int omap2xxx_clkdm_clk_enable(struct clockdomain *clkdm)
> -{
> -	bool hwsup = false;
> -
> -	if (!clkdm->clktrctrl_mask)
> -		return 0;
> -
> -	hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
> -					      clkdm->clktrctrl_mask);
> -	if (!hwsup && clkdm->flags & CLKDM_CAN_FORCE_WAKEUP)
> -		omap2xxx_clkdm_wakeup(clkdm);
> -
> -	return 0;
> -}
> -
> -static int omap2xxx_clkdm_clk_disable(struct clockdomain *clkdm)
> -{
> -	bool hwsup = false;
> -
> -	if (!clkdm->clktrctrl_mask)
> -		return 0;
> -
> -	hwsup = omap2xxx_cm_is_clkdm_in_hwsup(clkdm->pwrdm.ptr->prcm_offs,
> -					      clkdm->clktrctrl_mask);
> -
> -	if (!hwsup && clkdm->flags & CLKDM_CAN_FORCE_SLEEP)
> -		omap2xxx_clkdm_sleep(clkdm);
> -
> -	return 0;
> -}
> -
> -struct clkdm_ops omap2_clkdm_operations = {
> -	.clkdm_add_wkdep	= omap2_clkdm_add_wkdep,
> -	.clkdm_del_wkdep	= omap2_clkdm_del_wkdep,
> -	.clkdm_read_wkdep	= omap2_clkdm_read_wkdep,
> -	.clkdm_clear_all_wkdeps	= omap2_clkdm_clear_all_wkdeps,
> -	.clkdm_sleep		= omap2xxx_clkdm_sleep,
> -	.clkdm_wakeup		= omap2xxx_clkdm_wakeup,
> -	.clkdm_allow_idle	= omap2xxx_clkdm_allow_idle,
> -	.clkdm_deny_idle	= omap2xxx_clkdm_deny_idle,
> -	.clkdm_clk_enable	= omap2xxx_clkdm_clk_enable,
> -	.clkdm_clk_disable	= omap2xxx_clkdm_clk_disable,
> -};
> -
> -int omap2xxx_cm_fclks_active(void)
> -{
> -	u32 f1, f2;
> -
> -	f1 = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
> -	f2 = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
> -
> -	return (f1 | f2) ? 1 : 0;
> -}
> -
> -int omap2xxx_cm_mpu_retention_allowed(void)
> -{
> -	u32 l;
> -
> -	/* Check for MMC, UART2, UART1, McSPI2, McSPI1 and DSS1. */
> -	l = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
> -	if (l & (OMAP2420_EN_MMC_MASK | OMAP24XX_EN_UART2_MASK |
> -		 OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_MCSPI2_MASK |
> -		 OMAP24XX_EN_MCSPI1_MASK | OMAP24XX_EN_DSS1_MASK))
> -		return 0;
> -	/* Check for UART3. */
> -	l = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
> -	if (l & OMAP24XX_EN_UART3_MASK)
> -		return 0;
> -
> -	return 1;
> -}
> -
> -u32 omap2xxx_cm_get_core_clk_src(void)
> -{
> -	u32 v;
> -
> -	v = omap2_cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
> -	v &= OMAP24XX_CORE_CLK_SRC_MASK;
> -
> -	return v;
> -}
> -
> -u32 omap2xxx_cm_get_core_pll_config(void)
> -{
> -	return omap2_cm_read_mod_reg(PLL_MOD, CM_CLKSEL2);
> -}
> -
> -void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core, u32 mdm)
> -{
> -	u32 tmp;
> -
> -	omap2_cm_write_mod_reg(mpu, MPU_MOD, CM_CLKSEL);
> -	omap2_cm_write_mod_reg(dsp, OMAP24XX_DSP_MOD, CM_CLKSEL);
> -	omap2_cm_write_mod_reg(gfx, GFX_MOD, CM_CLKSEL);
> -	tmp = omap2_cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) &
> -		OMAP24XX_CLKSEL_DSS2_MASK;
> -	omap2_cm_write_mod_reg(core | tmp, CORE_MOD, CM_CLKSEL1);
> -	if (mdm)
> -		omap2_cm_write_mod_reg(mdm, OMAP2430_MDM_MOD, CM_CLKSEL);
> -}
> -
> -/*
> - *
> - */
> -
> -static const struct cm_ll_data omap2xxx_cm_ll_data = {
> -	.split_idlest_reg	= &omap2xxx_cm_split_idlest_reg,
> -	.wait_module_ready	= &omap2xxx_cm_wait_module_ready,
> -};
> -
> -int __init omap2xxx_cm_init(const struct omap_prcm_init_data *data)
> -{
> -	return cm_register(&omap2xxx_cm_ll_data);
> -}
> -
> -static void __exit omap2xxx_cm_exit(void)
> -{
> -	cm_unregister(&omap2xxx_cm_ll_data);
> -}
> -__exitcall(omap2xxx_cm_exit);
> diff --git a/arch/arm/mach-omap2/cm2xxx.h b/arch/arm/mach-omap2/cm2xxx.h
> deleted file mode 100644
> index 7cbeff15ffb0..000000000000
> --- a/arch/arm/mach-omap2/cm2xxx.h
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * OMAP2xxx Clock Management (CM) register definitions
> - *
> - * Copyright (C) 2007-2009, 2012 Texas Instruments, Inc.
> - * Copyright (C) 2007-2010 Nokia Corporation
> - * Paul Walmsley
> - *
> - * The CM hardware modules on the OMAP2/3 are quite similar to each
> - * other.  The CM modules/instances on OMAP4 are quite different, so
> - * they are handled in a separate file.
> - */
> -#ifndef __ARCH_ASM_MACH_OMAP2_CM2XXX_H
> -#define __ARCH_ASM_MACH_OMAP2_CM2XXX_H
> -
> -#include "prcm-common.h"
> -#include "cm2xxx_3xxx.h"
> -
> -#define OMAP2420_CM_REGADDR(module, reg)				\
> -			OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE + (module) + (reg))
> -#define OMAP2430_CM_REGADDR(module, reg)				\
> -			OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE + (module) + (reg))
> -
> -/*
> - * Module specific CM register offsets from CM_BASE + domain offset
> - * Use cm_{read,write}_mod_reg() with these registers.
> - * These register offsets generally appear in more than one PRCM submodule.
> - */
> -
> -/* OMAP2-specific register offsets */
> -
> -#define OMAP24XX_CM_FCLKEN2				0x0004
> -#define OMAP24XX_CM_ICLKEN4				0x001c
> -#define OMAP24XX_CM_AUTOIDLE4				0x003c
> -#define OMAP24XX_CM_IDLEST4				0x002c
> -
> -/* CM_IDLEST bit field values to indicate deasserted IdleReq */
> -
> -#define OMAP24XX_CM_IDLEST_VAL				0
> -
> -
> -/* Clock management domain register get/set */
> -
> -#ifndef __ASSEMBLER__
> -
> -extern void omap2xxx_cm_set_dpll_disable_autoidle(void);
> -extern void omap2xxx_cm_set_dpll_auto_low_power_stop(void);
> -
> -extern int omap2xxx_cm_fclks_active(void);
> -extern int omap2xxx_cm_mpu_retention_allowed(void);
> -extern u32 omap2xxx_cm_get_core_clk_src(void);
> -extern u32 omap2xxx_cm_get_core_pll_config(void);
> -extern void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core,
> -					 u32 mdm);
> -
> -int __init omap2xxx_cm_init(const struct omap_prcm_init_data *data);
> -
> -#endif
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/cm_common.c b/arch/arm/mach-omap2/cm_common.c
> index 87f2c2d2d754..fc16cd1fd2d5 100644
> --- a/arch/arm/mach-omap2/cm_common.c
> +++ b/arch/arm/mach-omap2/cm_common.c
> @@ -15,7 +15,6 @@
>   #include <linux/of.h>
>   #include <linux/of_address.h>
>   
> -#include "cm2xxx.h"
>   #include "cm3xxx.h"
>   #include "cm33xx.h"
>   #include "cm44xx.h"
> @@ -230,14 +229,6 @@ static struct omap_prcm_init_data cm2_data __initdata = {
>   };
>   #endif
>   
> -#ifdef CONFIG_ARCH_OMAP2
> -static struct omap_prcm_init_data omap2_prcm_data __initdata = {
> -	.index = TI_CLKM_CM,
> -	.init = omap2xxx_cm_init,
> -	.flags = CM_NO_CLOCKS | CM_SINGLE_INSTANCE,
> -};
> -#endif
> -
>   #ifdef CONFIG_ARCH_OMAP3
>   static struct omap_prcm_init_data omap3_cm_data __initdata = {
>   	.index = TI_CLKM_CM,
> @@ -269,9 +260,6 @@ static struct omap_prcm_init_data am4_prcm_data __initdata = {
>   #endif
>   
>   static const struct of_device_id omap_cm_dt_match_table[] __initconst = {
> -#ifdef CONFIG_ARCH_OMAP2
> -	{ .compatible = "ti,omap2-prcm", .data = &omap2_prcm_data },
> -#endif
>   #ifdef CONFIG_ARCH_OMAP3
>   	{ .compatible = "ti,omap3-cm", .data = &omap3_cm_data },
>   #endif
> diff --git a/arch/arm/mach-omap2/common-board-devices.h b/arch/arm/mach-omap2/common-board-devices.h
> deleted file mode 100644
> index 69694af71475..000000000000
> --- a/arch/arm/mach-omap2/common-board-devices.h
> +++ /dev/null
> @@ -1,11 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef __OMAP_COMMON_BOARD_DEVICES__
> -#define __OMAP_COMMON_BOARD_DEVICES__
> -
> -#include <linux/mfd/menelaus.h>
> -
> -void *n8x0_legacy_init(void);
> -
> -extern struct menelaus_platform_data n8x0_menelaus_platform_data;
> -
> -#endif /* __OMAP_COMMON_BOARD_DEVICES__ */
> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
> index 9d60799e9752..f8ed97044ade 100644
> --- a/arch/arm/mach-omap2/common.h
> +++ b/arch/arm/mach-omap2/common.h
> @@ -102,8 +102,6 @@ static inline void omap5_realtime_timer_init(void)
>   }
>   #endif
>   
> -void omap2420_init_early(void);
> -void omap2430_init_early(void);
>   void omap3430_init_early(void);
>   void omap3630_init_early(void);
>   void am33xx_init_early(void);
> @@ -130,14 +128,6 @@ static inline void omap_soc_device_init(void)
>   }
>   #endif
>   
> -#if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
> -void omap2xxx_restart(enum reboot_mode mode, const char *cmd);
> -#else
> -static inline void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
> -{
> -}
> -#endif
> -
>   #ifdef CONFIG_SOC_AM33XX
>   void am33xx_restart(enum reboot_mode mode, const char *cmd);
>   #else
> @@ -183,8 +173,6 @@ static inline void omap_barrier_reserve_memblock(void)
>   /* This gets called from mach-omap2/io.c, do not call this */
>   void __init omap2_set_globals_tap(u32 class, void __iomem *tap);
>   
> -void __init omap242x_map_io(void);
> -void __init omap243x_map_io(void);
>   void __init omap3_map_io(void);
>   void __init am33xx_map_io(void);
>   void __init omap4_map_io(void);
> diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
> index 7e7440533bf9..3ab1c6e6dde6 100644
> --- a/arch/arm/mach-omap2/control.h
> +++ b/arch/arm/mach-omap2/control.h
> @@ -19,19 +19,11 @@
>   #include "am33xx.h"
>   
>   #ifndef __ASSEMBLY__
> -#define OMAP242X_CTRL_REGADDR(reg)					\
> -		OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg))
> -#define OMAP243X_CTRL_REGADDR(reg)					\
> -		OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg))
>   #define OMAP343X_CTRL_REGADDR(reg)					\
>   		OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg))
>   #define AM33XX_CTRL_REGADDR(reg)					\
>   		AM33XX_L4_WK_IO_ADDRESS(AM33XX_SCM_BASE + (reg))
>   #else
> -#define OMAP242X_CTRL_REGADDR(reg)					\
> -		OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE + (reg))
> -#define OMAP243X_CTRL_REGADDR(reg)					\
> -		OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE + (reg))
>   #define OMAP343X_CTRL_REGADDR(reg)					\
>   		OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE + (reg))
>   #define AM33XX_CTRL_REGADDR(reg)					\
> @@ -74,52 +66,6 @@
>   #define OMAP2_CONTROL_RPUB_KEY_H_2	(OMAP2_CONTROL_GENERAL + 0x0098)
>   #define OMAP2_CONTROL_RPUB_KEY_H_3	(OMAP2_CONTROL_GENERAL + 0x009c)
>   
> -/* 242x-only CONTROL_GENERAL register offsets */
> -#define OMAP242X_CONTROL_DEVCONF	OMAP2_CONTROL_DEVCONF0 /* match TRM */
> -#define OMAP242X_CONTROL_OCM_RAM_PERM	(OMAP2_CONTROL_GENERAL + 0x0068)
> -
> -/* 243x-only CONTROL_GENERAL register offsets */
> -/* CONTROL_IVA2_BOOT{ADDR,MOD} are at the same place on 343x - noted below */
> -#define OMAP243X_CONTROL_DEVCONF1	(OMAP2_CONTROL_GENERAL + 0x0078)
> -#define OMAP243X_CONTROL_CSIRXFE	(OMAP2_CONTROL_GENERAL + 0x007c)
> -#define OMAP243X_CONTROL_IVA2_BOOTADDR	(OMAP2_CONTROL_GENERAL + 0x0190)
> -#define OMAP243X_CONTROL_IVA2_BOOTMOD	(OMAP2_CONTROL_GENERAL + 0x0194)
> -#define OMAP243X_CONTROL_IVA2_GEMCFG	(OMAP2_CONTROL_GENERAL + 0x0198)
> -#define OMAP243X_CONTROL_PBIAS_LITE	(OMAP2_CONTROL_GENERAL + 0x0230)
> -
> -/* 24xx-only CONTROL_GENERAL register offsets */
> -#define OMAP24XX_CONTROL_DEBOBS		(OMAP2_CONTROL_GENERAL + 0x0000)
> -#define OMAP24XX_CONTROL_EMU_SUPPORT	(OMAP2_CONTROL_GENERAL + 0x0008)
> -#define OMAP24XX_CONTROL_SEC_TEST	(OMAP2_CONTROL_GENERAL + 0x0044)
> -#define OMAP24XX_CONTROL_PSA_CTRL	(OMAP2_CONTROL_GENERAL + 0x0048)
> -#define OMAP24XX_CONTROL_PSA_CMD	(OMAP2_CONTROL_GENERAL + 0x004c)
> -#define OMAP24XX_CONTROL_PSA_VALUE	(OMAP2_CONTROL_GENERAL + 0x0050)
> -#define OMAP24XX_CONTROL_SEC_EMU	(OMAP2_CONTROL_GENERAL + 0x0060)
> -#define OMAP24XX_CONTROL_SEC_TAP	(OMAP2_CONTROL_GENERAL + 0x0064)
> -#define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD	(OMAP2_CONTROL_GENERAL + 0x006c)
> -#define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD	(OMAP2_CONTROL_GENERAL + 0x0070)
> -#define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD	(OMAP2_CONTROL_GENERAL + 0x0074)
> -#define OMAP24XX_CONTROL_SEC_STATUS		(OMAP2_CONTROL_GENERAL + 0x0080)
> -#define OMAP24XX_CONTROL_SEC_ERR_STATUS		(OMAP2_CONTROL_GENERAL + 0x0084)
> -#define OMAP24XX_CONTROL_STATUS			(OMAP2_CONTROL_GENERAL + 0x0088)
> -#define OMAP24XX_CONTROL_GENERAL_PURPOSE_STATUS	(OMAP2_CONTROL_GENERAL + 0x008c)
> -#define OMAP24XX_CONTROL_RAND_KEY_0	(OMAP2_CONTROL_GENERAL + 0x00a0)
> -#define OMAP24XX_CONTROL_RAND_KEY_1	(OMAP2_CONTROL_GENERAL + 0x00a4)
> -#define OMAP24XX_CONTROL_RAND_KEY_2	(OMAP2_CONTROL_GENERAL + 0x00a8)
> -#define OMAP24XX_CONTROL_RAND_KEY_3	(OMAP2_CONTROL_GENERAL + 0x00ac)
> -#define OMAP24XX_CONTROL_CUST_KEY_0	(OMAP2_CONTROL_GENERAL + 0x00b0)
> -#define OMAP24XX_CONTROL_CUST_KEY_1	(OMAP2_CONTROL_GENERAL + 0x00b4)
> -#define OMAP24XX_CONTROL_TEST_KEY_0	(OMAP2_CONTROL_GENERAL + 0x00c0)
> -#define OMAP24XX_CONTROL_TEST_KEY_1	(OMAP2_CONTROL_GENERAL + 0x00c4)
> -#define OMAP24XX_CONTROL_TEST_KEY_2	(OMAP2_CONTROL_GENERAL + 0x00c8)
> -#define OMAP24XX_CONTROL_TEST_KEY_3	(OMAP2_CONTROL_GENERAL + 0x00cc)
> -#define OMAP24XX_CONTROL_TEST_KEY_4	(OMAP2_CONTROL_GENERAL + 0x00d0)
> -#define OMAP24XX_CONTROL_TEST_KEY_5	(OMAP2_CONTROL_GENERAL + 0x00d4)
> -#define OMAP24XX_CONTROL_TEST_KEY_6	(OMAP2_CONTROL_GENERAL + 0x00d8)
> -#define OMAP24XX_CONTROL_TEST_KEY_7	(OMAP2_CONTROL_GENERAL + 0x00dc)
> -#define OMAP24XX_CONTROL_TEST_KEY_8	(OMAP2_CONTROL_GENERAL + 0x00e0)
> -#define OMAP24XX_CONTROL_TEST_KEY_9	(OMAP2_CONTROL_GENERAL + 0x00e4)
> -
>   #define OMAP343X_CONTROL_PADCONF_SYSNIRQ (OMAP2_CONTROL_INTERFACE + 0x01b0)
>   
>   /* 34xx-only CONTROL_GENERAL register offsets */
> @@ -311,14 +257,12 @@
>    */
>   /* CONTROL_DEVCONF0 bits */
>   #define OMAP2_MMCSDIO1ADPCLKISEL	(1 << 24) /* MMC1 loop back clock */
> -#define OMAP24XX_USBSTANDBYCTRL		(1 << 15)
>   #define OMAP2_MCBSP2_CLKS_MASK		(1 << 6)
>   #define OMAP2_MCBSP1_FSR_MASK		(1 << 4)
>   #define OMAP2_MCBSP1_CLKR_MASK		(1 << 3)
>   #define OMAP2_MCBSP1_CLKS_MASK		(1 << 2)
>   
>   /* CONTROL_DEVCONF1 bits */
> -#define OMAP243X_MMC1_ACTIVE_OVERWRITE	(1 << 31)
>   #define OMAP2_MMCSDIO2ADPCLKISEL	(1 << 6) /* MMC2 loop back clock */
>   #define OMAP2_MCBSP5_CLKS_MASK		(1 << 4) /* > 242x */
>   #define OMAP2_MCBSP4_CLKS_MASK		(1 << 2) /* > 242x */
> diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
> index dbec3bb9fbf4..addc14898bd5 100644
> --- a/arch/arm/mach-omap2/display.c
> +++ b/arch/arm/mach-omap2/display.c
> @@ -124,9 +124,7 @@ static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask)
>   
>   static enum omapdss_version __init omap_display_get_version(void)
>   {
> -	if (cpu_is_omap24xx())
> -		return OMAPDSS_VER_OMAP24xx;
> -	else if (cpu_is_omap3630())
> +	if (cpu_is_omap3630())
>   		return OMAPDSS_VER_OMAP3630;
>   	else if (cpu_is_omap34xx()) {
>   		if (soc_is_am35xx()) {
> diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c
> index 830cd4e7eb44..3a6b7b4620ca 100644
> --- a/arch/arm/mach-omap2/dma.c
> +++ b/arch/arm/mach-omap2/dma.c
> @@ -82,39 +82,6 @@ static unsigned configure_dma_errata(void)
>   {
>   	unsigned errata = 0;
>   
> -	/*
> -	 * Errata applicable for OMAP2430ES1.0 and all omap2420
> -	 *
> -	 * I.
> -	 * Erratum ID: Not Available
> -	 * Inter Frame DMA buffering issue DMA will wrongly
> -	 * buffer elements if packing and bursting is enabled. This might
> -	 * result in data gets stalled in FIFO at the end of the block.
> -	 * Workaround: DMA channels must have BUFFERING_DISABLED bit set to
> -	 * guarantee no data will stay in the DMA FIFO in case inter frame
> -	 * buffering occurs
> -	 *
> -	 * II.
> -	 * Erratum ID: Not Available
> -	 * DMA may hang when several channels are used in parallel
> -	 * In the following configuration, DMA channel hanging can occur:
> -	 * a. Channel i, hardware synchronized, is enabled
> -	 * b. Another channel (Channel x), software synchronized, is enabled.
> -	 * c. Channel i is disabled before end of transfer
> -	 * d. Channel i is reenabled.
> -	 * e. Steps 1 to 4 are repeated a certain number of times.
> -	 * f. A third channel (Channel y), software synchronized, is enabled.
> -	 * Channel x and Channel y may hang immediately after step 'f'.
> -	 * Workaround:
> -	 * For any channel used - make sure NextLCH_ID is set to the value j.
> -	 */
> -	if (cpu_is_omap2420() || (cpu_is_omap2430() &&
> -				(omap_type() == OMAP2430_REV_ES1_0))) {
> -
> -		SET_DMA_ERRATA(DMA_ERRATA_IFRAME_BUFFERING);
> -		SET_DMA_ERRATA(DMA_ERRATA_PARALLEL_CHANNELS);
> -	}
> -
>   	/*
>   	 * Erratum ID: i378: OMAP2+: sDMA Channel is not disabled
>   	 * after a transaction error.
> @@ -162,16 +129,6 @@ static unsigned configure_dma_errata(void)
>   	return errata;
>   }
>   
> -static const struct dma_slave_map omap24xx_sdma_dt_map[] = {
> -	/* external DMA requests when tusb6010 is used */
> -	{ "musb-hdrc.1.auto", "dmareq0", SDMA_FILTER_PARAM(2) },
> -	{ "musb-hdrc.1.auto", "dmareq1", SDMA_FILTER_PARAM(3) },
> -	{ "musb-hdrc.1.auto", "dmareq2", SDMA_FILTER_PARAM(14) }, /* OMAP2420 only */
> -	{ "musb-hdrc.1.auto", "dmareq3", SDMA_FILTER_PARAM(15) }, /* OMAP2420 only */
> -	{ "musb-hdrc.1.auto", "dmareq4", SDMA_FILTER_PARAM(16) }, /* OMAP2420 only */
> -	{ "musb-hdrc.1.auto", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */
> -};
> -
>   static struct omap_dma_dev_attr dma_attr = {
>   	.dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
>   		    IS_CSSA_32 | IS_CDSA_32,
> @@ -188,15 +145,7 @@ struct omap_system_dma_plat_info dma_plat_info = {
>   static int __init omap2_system_dma_init(void)
>   {
>   	dma_plat_info.errata = configure_dma_errata();
> -
> -	if (soc_is_omap24xx()) {
> -		/* DMA slave map for drivers not yet converted to DT */
> -		dma_plat_info.slave_map = omap24xx_sdma_dt_map;
> -		dma_plat_info.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map);
> -	}
> -
> -	if (!soc_is_omap242x())
> -		dma_attr.dev_caps |= IS_RW_PRIORITY;
> +	dma_attr.dev_caps |= IS_RW_PRIORITY;
>   
>   	if (soc_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP))
>   		dma_attr.dev_caps |= HS_CHANNELS_RESERVED;
> diff --git a/arch/arm/mach-omap2/fb.c b/arch/arm/mach-omap2/fb.c
> index 0f8c8efe3ae8..9a425c36f996 100644
> --- a/arch/arm/mach-omap2/fb.c
> +++ b/arch/arm/mach-omap2/fb.c
> @@ -27,15 +27,6 @@
>    * The first memory resource is the register region for VRFB,
>    * the rest are VRFB virtual memory areas for each VRFB context.
>    */
> -
> -static const struct resource omap2_vrfb_resources[] = {
> -	DEFINE_RES_MEM_NAMED(0x68008000u, 0x40, "vrfb-regs"),
> -	DEFINE_RES_MEM_NAMED(0x70000000u, 0x4000000, "vrfb-area-0"),
> -	DEFINE_RES_MEM_NAMED(0x74000000u, 0x4000000, "vrfb-area-1"),
> -	DEFINE_RES_MEM_NAMED(0x78000000u, 0x4000000, "vrfb-area-2"),
> -	DEFINE_RES_MEM_NAMED(0x7c000000u, 0x4000000, "vrfb-area-3"),
> -};
> -
>   static const struct resource omap3_vrfb_resources[] = {
>   	DEFINE_RES_MEM_NAMED(0x6C000180u, 0xc0, "vrfb-regs"),
>   	DEFINE_RES_MEM_NAMED(0x70000000u, 0x4000000, "vrfb-area-0"),
> @@ -58,10 +49,7 @@ int __init omap_init_vrfb(void)
>   	const struct resource *res;
>   	unsigned int num_res;
>   
> -	if (cpu_is_omap24xx()) {
> -		res = omap2_vrfb_resources;
> -		num_res = ARRAY_SIZE(omap2_vrfb_resources);
> -	} else if (cpu_is_omap34xx()) {
> +	if (cpu_is_omap34xx()) {
>   		res = omap3_vrfb_resources;
>   		num_res = ARRAY_SIZE(omap3_vrfb_resources);
>   	} else {
> diff --git a/arch/arm/mach-omap2/gpmc.h b/arch/arm/mach-omap2/gpmc.h
> deleted file mode 100644
> index e060f1b5c27d..000000000000
> --- a/arch/arm/mach-omap2/gpmc.h
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * General-Purpose Memory Controller for OMAP2
> - *
> - * Copyright (C) 2005-2006 Nokia Corporation
> - *
> - * Do not include this file in any new code, this will get removed
> - * once omap3 boots in device tree only mode.
> - */
> -#include <linux/omap-gpmc.h>
> diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c
> index 3b4b9514f4fa..d956c70f8899 100644
> --- a/arch/arm/mach-omap2/i2c.c
> +++ b/arch/arm/mach-omap2/i2c.c
> @@ -39,7 +39,7 @@ int omap_i2c_reset(struct omap_hwmod *oh)
>   	u16 i2c_con;
>   	int c = 0;
>   
> -	if (soc_is_omap24xx() || soc_is_omap34xx() || soc_is_am35xx())
> +	if (soc_is_omap34xx() || soc_is_am35xx())
>   		i2c_con = OMAP2_I2C_CON_OFFSET;
>   	else
>   		i2c_con = OMAP4_I2C_CON_OFFSET;
> diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
> index cf2bfb447ee2..3e731dd21311 100644
> --- a/arch/arm/mach-omap2/id.c
> +++ b/arch/arm/mach-omap2/id.c
> @@ -55,9 +55,7 @@ int omap_type(void)
>   	if (val < OMAP2_DEVICETYPE_MASK)
>   		return val;
>   
> -	if (soc_is_omap24xx()) {
> -		val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
> -	} else if (soc_is_ti81xx()) {
> +	if (soc_is_ti81xx()) {
>   		val = omap_ctrl_readl(TI81XX_CONTROL_STATUS);
>   	} else if (soc_is_am33xx() || soc_is_am43xx()) {
>   		val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
> @@ -99,22 +97,6 @@ EXPORT_SYMBOL(omap_type);
>   
>   #define read_tap_reg(reg)	readl_relaxed(tap_base  + (reg))
>   
> -struct omap_id {
> -	u16	hawkeye;	/* Silicon type (Hawkeye id) */
> -	u8	dev;		/* Device type from production_id reg */
> -	u32	type;		/* Combined type id copied to omap_revision */
> -};
> -
> -/* Register values to detect the OMAP version */
> -static struct omap_id omap_ids[] __initdata = {
> -	{ .hawkeye = 0xb5d9, .dev = 0x0, .type = 0x24200024 },
> -	{ .hawkeye = 0xb5d9, .dev = 0x1, .type = 0x24201024 },
> -	{ .hawkeye = 0xb5d9, .dev = 0x2, .type = 0x24202024 },
> -	{ .hawkeye = 0xb5d9, .dev = 0x4, .type = 0x24220024 },
> -	{ .hawkeye = 0xb5d9, .dev = 0x8, .type = 0x24230024 },
> -	{ .hawkeye = 0xb68a, .dev = 0x0, .type = 0x24300024 },
> -};
> -
>   static void __iomem *tap_base;
>   static u16 tap_prod_id;
>   
> @@ -145,62 +127,6 @@ static int __init omap_feed_randpool(void)
>   }
>   omap_device_initcall(omap_feed_randpool);
>   
> -void __init omap2xxx_check_revision(void)
> -{
> -	int i, j;
> -	u32 idcode, prod_id;
> -	u16 hawkeye;
> -	u8  dev_type, rev;
> -	struct omap_die_id odi;
> -
> -	idcode = read_tap_reg(OMAP_TAP_IDCODE);
> -	prod_id = read_tap_reg(tap_prod_id);
> -	hawkeye = (idcode >> 12) & 0xffff;
> -	rev = (idcode >> 28) & 0x0f;
> -	dev_type = (prod_id >> 16) & 0x0f;
> -	omap_get_die_id(&odi);
> -
> -	pr_debug("OMAP_TAP_IDCODE 0x%08x REV %i HAWKEYE 0x%04x MANF %03x\n",
> -		 idcode, rev, hawkeye, (idcode >> 1) & 0x7ff);
> -	pr_debug("OMAP_TAP_DIE_ID_0: 0x%08x\n", odi.id_0);
> -	pr_debug("OMAP_TAP_DIE_ID_1: 0x%08x DEV_REV: %i\n",
> -		 odi.id_1, (odi.id_1 >> 28) & 0xf);
> -	pr_debug("OMAP_TAP_DIE_ID_2: 0x%08x\n", odi.id_2);
> -	pr_debug("OMAP_TAP_DIE_ID_3: 0x%08x\n", odi.id_3);
> -	pr_debug("OMAP_TAP_PROD_ID_0: 0x%08x DEV_TYPE: %i\n",
> -		 prod_id, dev_type);
> -
> -	/* Check hawkeye ids */
> -	for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
> -		if (hawkeye == omap_ids[i].hawkeye)
> -			break;
> -	}
> -
> -	if (i == ARRAY_SIZE(omap_ids)) {
> -		printk(KERN_ERR "Unknown OMAP CPU id\n");
> -		return;
> -	}
> -
> -	for (j = i; j < ARRAY_SIZE(omap_ids); j++) {
> -		if (dev_type == omap_ids[j].dev)
> -			break;
> -	}
> -
> -	if (j == ARRAY_SIZE(omap_ids)) {
> -		pr_err("Unknown OMAP device type. Handling it as OMAP%04x\n",
> -		       omap_ids[i].type >> 16);
> -		j = i;
> -	}
> -
> -	sprintf(soc_name, "OMAP%04x", omap_rev() >> 16);
> -	sprintf(soc_rev, "ES%x", (omap_rev() >> 12) & 0xf);
> -
> -	pr_info("%s", soc_name);
> -	if ((omap_rev() >> 8) & 0x0f)
> -		pr_cont("%s", soc_rev);
> -	pr_cont("\n");
> -}
> -
>   #define OMAP3_SHOW_FEATURE(feat)		\
>   	if (omap3_has_ ##feat())		\
>   		n += scnprintf(buf + n, sizeof(buf) - n, #feat " ");
> @@ -750,9 +676,7 @@ static const char * const omap_types[] = {
>   
>   static const char * __init omap_get_family(void)
>   {
> -	if (soc_is_omap24xx())
> -		return kasprintf(GFP_KERNEL, "OMAP2");
> -	else if (soc_is_omap34xx())
> +	if (soc_is_omap34xx())
>   		return kasprintf(GFP_KERNEL, "OMAP3");
>   	else if (soc_is_omap44xx())
>   		return kasprintf(GFP_KERNEL, "OMAP4");
> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index 14ec3f78000b..1c945be5e7cc 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -35,7 +35,6 @@
>   #include "sdrc.h"
>   #include "control.h"
>   #include "sram.h"
> -#include "cm2xxx.h"
>   #include "cm3xxx.h"
>   #include "cm33xx.h"
>   #include "cm44xx.h"
> @@ -43,11 +42,9 @@
>   #include "cm.h"
>   #include "prcm_mpu44xx.h"
>   #include "prminst44xx.h"
> -#include "prm2xxx.h"
>   #include "prm3xxx.h"
>   #include "prm33xx.h"
>   #include "prm44xx.h"
> -#include "opp2xxx.h"
>   #include "omap-secure.h"
>   
>   /*
> @@ -61,76 +58,6 @@ static int (*omap_clk_soc_init)(void);
>    * default mapping provided here.
>    */
>   
> -#if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
> -static struct map_desc omap24xx_io_desc[] __initdata = {
> -	{
> -		.virtual	= L3_24XX_VIRT,
> -		.pfn		= __phys_to_pfn(L3_24XX_PHYS),
> -		.length		= L3_24XX_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -	{
> -		.virtual	= L4_24XX_VIRT,
> -		.pfn		= __phys_to_pfn(L4_24XX_PHYS),
> -		.length		= L4_24XX_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -};
> -
> -#ifdef CONFIG_SOC_OMAP2420
> -static struct map_desc omap242x_io_desc[] __initdata = {
> -	{
> -		.virtual	= DSP_MEM_2420_VIRT,
> -		.pfn		= __phys_to_pfn(DSP_MEM_2420_PHYS),
> -		.length		= DSP_MEM_2420_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -	{
> -		.virtual	= DSP_IPI_2420_VIRT,
> -		.pfn		= __phys_to_pfn(DSP_IPI_2420_PHYS),
> -		.length		= DSP_IPI_2420_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -	{
> -		.virtual	= DSP_MMU_2420_VIRT,
> -		.pfn		= __phys_to_pfn(DSP_MMU_2420_PHYS),
> -		.length		= DSP_MMU_2420_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -};
> -
> -#endif
> -
> -#ifdef CONFIG_SOC_OMAP2430
> -static struct map_desc omap243x_io_desc[] __initdata = {
> -	{
> -		.virtual	= L4_WK_243X_VIRT,
> -		.pfn		= __phys_to_pfn(L4_WK_243X_PHYS),
> -		.length		= L4_WK_243X_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -	{
> -		.virtual	= OMAP243X_GPMC_VIRT,
> -		.pfn		= __phys_to_pfn(OMAP243X_GPMC_PHYS),
> -		.length		= OMAP243X_GPMC_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -	{
> -		.virtual	= OMAP243X_SDRC_VIRT,
> -		.pfn		= __phys_to_pfn(OMAP243X_SDRC_PHYS),
> -		.length		= OMAP243X_SDRC_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -	{
> -		.virtual	= OMAP243X_SMS_VIRT,
> -		.pfn		= __phys_to_pfn(OMAP243X_SMS_PHYS),
> -		.length		= OMAP243X_SMS_SIZE,
> -		.type		= MT_DEVICE
> -	},
> -};
> -#endif
> -#endif
> -
>   #ifdef	CONFIG_ARCH_OMAP3
>   static struct map_desc omap34xx_io_desc[] __initdata = {
>   	{
> @@ -305,22 +232,6 @@ static struct map_desc dra7xx_io_desc[] __initdata = {
>   };
>   #endif
>   
> -#ifdef CONFIG_SOC_OMAP2420
> -void __init omap242x_map_io(void)
> -{
> -	iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
> -	iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc));
> -}
> -#endif
> -
> -#ifdef CONFIG_SOC_OMAP2430
> -void __init omap243x_map_io(void)
> -{
> -	iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc));
> -	iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc));
> -}
> -#endif
> -
>   #ifdef CONFIG_ARCH_OMAP3
>   void __init omap3_map_io(void)
>   {
> @@ -365,6 +276,8 @@ void __init dra7xx_map_io(void)
>   	omap_barriers_init();
>   }
>   #endif
> +
> +#ifdef CONFIG_ARCH_OMAP3
>   /*
>    * omap2_init_reprogram_sdrc - reprogram SDRC timing parameters
>    *
> @@ -399,7 +312,6 @@ static int __init _omap2_init_reprogram_sdrc(void)
>   	return v;
>   }
>   
> -#ifdef CONFIG_OMAP_HWMOD
>   static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data)
>   {
>   	return omap_hwmod_set_postsetup_state(oh, *(u8 *)data);
> @@ -412,55 +324,11 @@ static void __init __maybe_unused omap_hwmod_init_postsetup(void)
>   	/* Set the default postsetup state for all hwmods */
>   	omap_hwmod_for_each(_set_hwmod_postsetup_state, &postsetup_state);
>   }
> -#else
> -static inline void omap_hwmod_init_postsetup(void)
> -{
> -}
> -#endif
> -
> -#ifdef CONFIG_SOC_OMAP2420
> -void __init omap2420_init_early(void)
> -{
> -	omap2_set_globals_tap(OMAP242X_CLASS, OMAP2_L4_IO_ADDRESS(0x48014000));
> -	omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP2420_SDRC_BASE),
> -			       OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE));
> -	omap2_control_base_init();
> -	omap2xxx_check_revision();
> -	omap2_prcm_base_init();
> -	omap2xxx_voltagedomains_init();
> -	omap242x_powerdomains_init();
> -	omap242x_clockdomains_init();
> -	omap2420_hwmod_init();
> -	omap_hwmod_init_postsetup();
> -	omap_clk_soc_init = omap2420_dt_clk_init;
> -	rate_table = omap2420_rate_table;
> -}
> -#endif
> -
> -#ifdef CONFIG_SOC_OMAP2430
> -void __init omap2430_init_early(void)
> -{
> -	omap2_set_globals_tap(OMAP243X_CLASS, OMAP2_L4_IO_ADDRESS(0x4900a000));
> -	omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP243X_SDRC_BASE),
> -			       OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE));
> -	omap2_control_base_init();
> -	omap2xxx_check_revision();
> -	omap2_prcm_base_init();
> -	omap2xxx_voltagedomains_init();
> -	omap243x_powerdomains_init();
> -	omap243x_clockdomains_init();
> -	omap2430_hwmod_init();
> -	omap_hwmod_init_postsetup();
> -	omap_clk_soc_init = omap2430_dt_clk_init;
> -	rate_table = omap2430_rate_table;
> -}
> -#endif
>   
>   /*
>    * Currently only board-omap3beagle.c should call this because of the
>    * same machine_id for 34xx and 36xx beagle.. Will get fixed with DT.
>    */
> -#ifdef CONFIG_ARCH_OMAP3
>   static void __init omap3_init_early(void)
>   {
>   	omap2_set_globals_tap(OMAP343X_CLASS, OMAP2_L4_IO_ADDRESS(0x4830A000));
> @@ -661,16 +529,18 @@ void __init dra7xx_init_late(void)
>   #endif
>   
>   
> +#ifdef CONFIG_ARCH_OMAP3
>   void __init omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
>   				      struct omap_sdrc_params *sdrc_cs1)
>   {
>   	omap_sram_init();
>   
> -	if (cpu_is_omap24xx() || omap3_has_sdrc()) {
> +	if (omap3_has_sdrc()) {
>   		omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
>   		_omap2_init_reprogram_sdrc();
>   	}
>   }
> +#endif
>   
>   int __init omap_clk_init(void)
>   {
> diff --git a/arch/arm/mach-omap2/iomap.h b/arch/arm/mach-omap2/iomap.h
> index 6191d244438a..403444bb6924 100644
> --- a/arch/arm/mach-omap2/iomap.h
> +++ b/arch/arm/mach-omap2/iomap.h
> @@ -48,52 +48,6 @@
>   #define OMAP2_EMU_IO_OFFSET		0xaa800000	/* Emulation */
>   #define OMAP2_EMU_IO_ADDRESS(pa)	IOMEM((pa) + OMAP2_EMU_IO_OFFSET)
>   
> -/*
> - * ----------------------------------------------------------------------------
> - * Omap2 specific IO mapping
> - * ----------------------------------------------------------------------------
> - */
> -
> -/* We map both L3 and L4 on OMAP2 */
> -#define L3_24XX_PHYS	L3_24XX_BASE	/* 0x68000000 --> 0xf8000000*/
> -#define L3_24XX_VIRT	(L3_24XX_PHYS + OMAP2_L3_IO_OFFSET)
> -#define L3_24XX_SIZE	SZ_1M		/* 44kB of 128MB used, want 1MB sect */
> -#define L4_24XX_PHYS	L4_24XX_BASE	/* 0x48000000 --> 0xfa000000 */
> -#define L4_24XX_VIRT	(L4_24XX_PHYS + OMAP2_L4_IO_OFFSET)
> -#define L4_24XX_SIZE	SZ_1M		/* 1MB of 128MB used, want 1MB sect */
> -
> -#define L4_WK_243X_PHYS		L4_WK_243X_BASE	/* 0x49000000 --> 0xfb000000 */
> -#define L4_WK_243X_VIRT		(L4_WK_243X_PHYS + OMAP2_L4_IO_OFFSET)
> -#define L4_WK_243X_SIZE		SZ_1M
> -#define OMAP243X_GPMC_PHYS	OMAP243X_GPMC_BASE
> -#define OMAP243X_GPMC_VIRT	(OMAP243X_GPMC_PHYS + OMAP2_L3_IO_OFFSET)
> -						/* 0x6e000000 --> 0xfe000000 */
> -#define OMAP243X_GPMC_SIZE	SZ_1M
> -#define OMAP243X_SDRC_PHYS	OMAP243X_SDRC_BASE
> -						/* 0x6D000000 --> 0xfd000000 */
> -#define OMAP243X_SDRC_VIRT	(OMAP243X_SDRC_PHYS + OMAP2_L3_IO_OFFSET)
> -#define OMAP243X_SDRC_SIZE	SZ_1M
> -#define OMAP243X_SMS_PHYS	OMAP243X_SMS_BASE
> -						/* 0x6c000000 --> 0xfc000000 */
> -#define OMAP243X_SMS_VIRT	(OMAP243X_SMS_PHYS + OMAP2_L3_IO_OFFSET)
> -#define OMAP243X_SMS_SIZE	SZ_1M
> -
> -/* 2420 IVA */
> -#define DSP_MEM_2420_PHYS	OMAP2420_DSP_MEM_BASE
> -						/* 0x58000000 --> 0xfc100000 */
> -#define DSP_MEM_2420_VIRT	0xfc100000
> -#define DSP_MEM_2420_SIZE	0x28000
> -#define DSP_IPI_2420_PHYS	OMAP2420_DSP_IPI_BASE
> -						/* 0x59000000 --> 0xfc128000 */
> -#define DSP_IPI_2420_VIRT	0xfc128000
> -#define DSP_IPI_2420_SIZE	SZ_4K
> -#define DSP_MMU_2420_PHYS	OMAP2420_DSP_MMU_BASE
> -						/* 0x5a000000 --> 0xfc129000 */
> -#define DSP_MMU_2420_VIRT	0xfc129000
> -#define DSP_MMU_2420_SIZE	SZ_4K
> -
> -/* 2430 IVA2.1 - currently unmapped */
> -
>   /*
>    * ----------------------------------------------------------------------------
>    * Omap3 specific IO mapping
> diff --git a/arch/arm/mach-omap2/l3_2xxx.h b/arch/arm/mach-omap2/l3_2xxx.h
> deleted file mode 100644
> index 6297c62428ac..000000000000
> --- a/arch/arm/mach-omap2/l3_2xxx.h
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * arch/arm/plat-omap/include/plat/l3_2xxx.h - L3 firewall definitions
> - *
> - * Copyright (C) 2010 Texas Instruments Incorporated - https://www.ti.com/
> - *	Sumit Semwal
> - */
> -#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L3_2XXX_H
> -#define __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L3_2XXX_H
> -
> -/* L3 CONNIDs */
> -/* Display Sub system (DSS) */
> -#define OMAP2_L3_CORE_FW_CONNID_DSS			8
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/l4_2xxx.h b/arch/arm/mach-omap2/l4_2xxx.h
> deleted file mode 100644
> index 418e1072d730..000000000000
> --- a/arch/arm/mach-omap2/l4_2xxx.h
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * arch/arm/plat-omap/include/plat/l4_2xxx.h - L4 firewall definitions
> - *
> - * Copyright (C) 2010 Texas Instruments Incorporated - https://www.ti.com/
> - *	Sumit Semwal
> - */
> -#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L4_2XXX_H
> -#define __ARCH_ARM_PLAT_OMAP_INCLUDE_PLAT_L4_2XXX_H
> -
> -/* L4 CORE */
> -/* Display Sub system (DSS) */
> -#define OMAP2420_L4_CORE_FW_DSS_CORE_REGION			28
> -#define OMAP2420_L4_CORE_FW_DSS_DISPC_REGION			29
> -#define OMAP2420_L4_CORE_FW_DSS_RFBI_REGION			30
> -#define OMAP2420_L4_CORE_FW_DSS_VENC_REGION			31
> -#define OMAP2420_L4_CORE_FW_DSS_TA_REGION			32
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/mmc.h b/arch/arm/mach-omap2/mmc.h
> deleted file mode 100644
> index b5533e93cb63..000000000000
> --- a/arch/arm/mach-omap2/mmc.h
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -
> -#define OMAP24XX_NR_MMC		2
> -#define OMAP2420_MMC_SIZE	OMAP1_MMC_SIZE
> -#define OMAP2_MMC1_BASE		0x4809c000
> -
> -#define OMAP4_MMC_REG_OFFSET	0x100
> -
> -struct omap_hwmod;
> -
> -#ifdef CONFIG_SOC_OMAP2420
> -int omap_msdi_reset(struct omap_hwmod *oh);
> -#else
> -static inline int omap_msdi_reset(struct omap_hwmod *oh)
> -{
> -	return 0;
> -}
> -#endif
> diff --git a/arch/arm/mach-omap2/msdi.c b/arch/arm/mach-omap2/msdi.c
> deleted file mode 100644
> index 552b2fa4e4f1..000000000000
> --- a/arch/arm/mach-omap2/msdi.c
> +++ /dev/null
> @@ -1,75 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * MSDI IP block reset
> - *
> - * Copyright (C) 2012 Texas Instruments, Inc.
> - * Paul Walmsley
> - *
> - * XXX What about pad muxing?
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/err.h>
> -
> -#include "prm.h"
> -#include "common.h"
> -#include "control.h"
> -#include "omap_hwmod.h"
> -#include "omap_device.h"
> -#include "mmc.h"
> -
> -/*
> - * MSDI_CON_OFFSET: offset in bytes of the MSDI IP block's CON register
> - *     from the IP block's base address
> - */
> -#define MSDI_CON_OFFSET				0x0c
> -
> -/* Register bitfields in the CON register */
> -#define MSDI_CON_POW_MASK			BIT(11)
> -#define MSDI_CON_CLKD_MASK			(0x3f << 0)
> -#define MSDI_CON_CLKD_SHIFT			0
> -
> -/* MSDI_TARGET_RESET_CLKD: clock divisor to use throughout the reset */
> -#define MSDI_TARGET_RESET_CLKD		0x3ff
> -
> -/**
> - * omap_msdi_reset - reset the MSDI IP block
> - * @oh: struct omap_hwmod *
> - *
> - * The MSDI IP block on OMAP2420 has to have both the POW and CLKD
> - * fields set inside its CON register for a reset to complete
> - * successfully.  This is not documented in the TRM.  For CLKD, we use
> - * the value that results in the lowest possible clock rate, to attempt
> - * to avoid disturbing any cards.
> - */
> -int omap_msdi_reset(struct omap_hwmod *oh)
> -{
> -	u16 v = 0;
> -	int c = 0;
> -
> -	/* Write to the SOFTRESET bit */
> -	omap_hwmod_softreset(oh);
> -
> -	/* Enable the MSDI core and internal clock */
> -	v |= MSDI_CON_POW_MASK;
> -	v |= MSDI_TARGET_RESET_CLKD << MSDI_CON_CLKD_SHIFT;
> -	omap_hwmod_write(v, oh, MSDI_CON_OFFSET);
> -
> -	/* Poll on RESETDONE bit */
> -	omap_test_timeout((omap_hwmod_read(oh, oh->class->sysc->syss_offs)
> -			   & SYSS_RESETDONE_MASK),
> -			  MAX_MODULE_SOFTRESET_WAIT, c);
> -
> -	if (c == MAX_MODULE_SOFTRESET_WAIT)
> -		pr_warn("%s: %s: softreset failed (waited %d usec)\n",
> -			__func__, oh->name, MAX_MODULE_SOFTRESET_WAIT);
> -	else
> -		pr_debug("%s: %s: softreset in %d usec\n", __func__,
> -			 oh->name, c);
> -
> -	/* Disable the MSDI internal clock */
> -	v &= ~MSDI_CON_CLKD_MASK;
> -	omap_hwmod_write(v, oh, MSDI_CON_OFFSET);
> -
> -	return 0;
> -}
> diff --git a/arch/arm/mach-omap2/omap2-restart.c b/arch/arm/mach-omap2/omap2-restart.c
> deleted file mode 100644
> index fdcc75c97d70..000000000000
> --- a/arch/arm/mach-omap2/omap2-restart.c
> +++ /dev/null
> @@ -1,62 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * omap2-restart.c - code common to all OMAP2xxx machines.
> - *
> - * Copyright (C) 2012 Texas Instruments
> - * Paul Walmsley
> - */
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -#include <linux/clk.h>
> -#include <linux/io.h>
> -
> -#include "soc.h"
> -#include "common.h"
> -#include "prm.h"
> -
> -/*
> - * reset_virt_prcm_set_ck, reset_sys_ck: pointers to the virt_prcm_set
> - * clock and the sys_ck.  Used during the reset process
> - */
> -static struct clk *reset_virt_prcm_set_ck, *reset_sys_ck;
> -
> -/* Reboot handling */
> -
> -/**
> - * omap2xxx_restart - Set DPLL to bypass mode for reboot to work
> - *
> - * Set the DPLL to bypass so that reboot completes successfully.  No
> - * return value.
> - */
> -void omap2xxx_restart(enum reboot_mode mode, const char *cmd)
> -{
> -	u32 rate;
> -
> -	rate = clk_get_rate(reset_sys_ck);
> -	clk_set_rate(reset_virt_prcm_set_ck, rate);
> -
> -	/* XXX Should save the cmd argument for use after the reboot */
> -
> -	omap_prm_reset_system();
> -}
> -
> -/**
> - * omap2xxx_common_look_up_clks_for_reset - look up clocks needed for restart
> - *
> - * Some clocks need to be looked up in advance for the SoC restart
> - * operation to work - see omap2xxx_restart().  Returns -EINVAL upon
> - * error or 0 upon success.
> - */
> -static int __init omap2xxx_common_look_up_clks_for_reset(void)
> -{
> -	reset_virt_prcm_set_ck = clk_get(NULL, "virt_prcm_set");
> -	if (IS_ERR(reset_virt_prcm_set_ck))
> -		return -EINVAL;
> -
> -	reset_sys_ck = clk_get(NULL, "sys_ck");
> -	if (IS_ERR(reset_sys_ck))
> -		return -EINVAL;
> -
> -	return 0;
> -}
> -omap_postcore_initcall(omap2xxx_common_look_up_clks_for_reset);
> diff --git a/arch/arm/mach-omap2/omap24xx.h b/arch/arm/mach-omap2/omap24xx.h
> deleted file mode 100644
> index d9ecc0578292..000000000000
> --- a/arch/arm/mach-omap2/omap24xx.h
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * This file contains the processor specific definitions
> - * of the TI OMAP24XX.
> - *
> - * Copyright (C) 2007 Texas Instruments.
> - * Copyright (C) 2007 Nokia Corporation.
> - */
> -
> -#ifndef __ASM_ARCH_OMAP2_H
> -#define __ASM_ARCH_OMAP2_H
> -
> -/*
> - * Please place only base defines here and put the rest in device
> - * specific headers. Note also that some of these defines are needed
> - * for omap1 to compile without adding ifdefs.
> - */
> -
> -#define L4_24XX_BASE		0x48000000
> -#define L4_WK_243X_BASE		0x49000000
> -#define L3_24XX_BASE		0x68000000
> -
> -/* interrupt controller */
> -#define OMAP24XX_IC_BASE	(L4_24XX_BASE + 0xfe000)
> -#define OMAP24XX_IVA_INTC_BASE	0x40000000
> -
> -#define OMAP242X_CTRL_BASE	L4_24XX_BASE
> -#define OMAP2420_32KSYNCT_BASE	(L4_24XX_BASE + 0x4000)
> -#define OMAP2420_PRCM_BASE	(L4_24XX_BASE + 0x8000)
> -#define OMAP2420_CM_BASE	(L4_24XX_BASE + 0x8000)
> -#define OMAP2420_PRM_BASE	OMAP2420_CM_BASE
> -#define OMAP2420_SDRC_BASE	(L3_24XX_BASE + 0x9000)
> -#define OMAP2420_SMS_BASE	0x68008000
> -#define OMAP2420_GPMC_BASE	0x6800a000
> -
> -#define OMAP2430_32KSYNCT_BASE	(L4_WK_243X_BASE + 0x20000)
> -#define OMAP2430_PRCM_BASE	(L4_WK_243X_BASE + 0x6000)
> -#define OMAP2430_CM_BASE	(L4_WK_243X_BASE + 0x6000)
> -#define OMAP2430_PRM_BASE	OMAP2430_CM_BASE
> -
> -#define OMAP243X_SMS_BASE	0x6C000000
> -#define OMAP243X_SDRC_BASE	0x6D000000
> -#define OMAP243X_GPMC_BASE	0x6E000000
> -#define OMAP243X_SCM_BASE	(L4_WK_243X_BASE + 0x2000)
> -#define OMAP243X_CTRL_BASE	OMAP243X_SCM_BASE
> -#define OMAP243X_HS_BASE	(L4_24XX_BASE + 0x000ac000)
> -
> -/* DSP SS */
> -#define OMAP2420_DSP_BASE	0x58000000
> -#define OMAP2420_DSP_MEM_BASE	(OMAP2420_DSP_BASE + 0x0)
> -#define OMAP2420_DSP_IPI_BASE	(OMAP2420_DSP_BASE + 0x1000000)
> -#define OMAP2420_DSP_MMU_BASE	(OMAP2420_DSP_BASE + 0x2000000)
> -
> -#define OMAP243X_DSP_BASE	0x5C000000
> -#define OMAP243X_DSP_MEM_BASE	(OMAP243X_DSP_BASE + 0x0)
> -#define OMAP243X_DSP_MMU_BASE	(OMAP243X_DSP_BASE + 0x1000000)
> -
> -/* Mailbox */
> -#define OMAP24XX_MAILBOX_BASE	(L4_24XX_BASE + 0x94000)
> -
> -/* Camera */
> -#define OMAP24XX_CAMERA_BASE	(L4_24XX_BASE + 0x52000)
> -
> -/* Security */
> -#define OMAP24XX_SEC_BASE	(L4_24XX_BASE + 0xA0000)
> -#define OMAP24XX_SEC_RNG_BASE	(OMAP24XX_SEC_BASE + 0x0000)
> -#define OMAP24XX_SEC_DES_BASE	(OMAP24XX_SEC_BASE + 0x2000)
> -#define OMAP24XX_SEC_SHA1MD5_BASE (OMAP24XX_SEC_BASE + 0x4000)
> -#define OMAP24XX_SEC_AES_BASE	(OMAP24XX_SEC_BASE + 0x6000)
> -#define OMAP24XX_SEC_PKA_BASE	(OMAP24XX_SEC_BASE + 0x8000)
> -
> -#endif /* __ASM_ARCH_OMAP2_H */
> -
> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
> index 03cd523dff87..c918399ea735 100644
> --- a/arch/arm/mach-omap2/omap_hwmod.c
> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> @@ -153,9 +153,7 @@
>   #include "common.h"
>   #include "clockdomain.h"
>   #include "hdq1w.h"
> -#include "mmc.h"
>   #include "powerdomain.h"
> -#include "cm2xxx.h"
>   #include "cm3xxx.h"
>   #include "cm33xx.h"
>   #include "prm.h"
> @@ -3469,10 +3467,6 @@ static int omap_hwmod_allocate_module(struct device *dev, struct omap_hwmod *oh,
>   	return -ENOMEM;
>   }
>   
> -static const struct omap_hwmod_reset omap24xx_reset_quirks[] = {
> -	{ .match = "msdi", .len = 4, .reset = omap_msdi_reset, },
> -};
> -
>   static const struct omap_hwmod_reset omap_reset_quirks[] = {
>   	{ .match = "dss_core", .len = 8, .reset = omap_dss_reset, },
>   	{ .match = "hdq1w", .len = 5, .reset = omap_hdq1w_reset, },
> @@ -3503,11 +3497,6 @@ static void
>   omap_hwmod_init_reset_quirks(struct device *dev, struct omap_hwmod *oh,
>   			     const struct ti_sysc_module_data *data)
>   {
> -	if (soc_is_omap24xx())
> -		omap_hwmod_init_reset_quirk(dev, oh, data,
> -					    omap24xx_reset_quirks,
> -					    ARRAY_SIZE(omap24xx_reset_quirks));
> -
>   	omap_hwmod_init_reset_quirk(dev, oh, data, omap_reset_quirks,
>   				    ARRAY_SIZE(omap_reset_quirks));
>   }
> @@ -3914,12 +3903,7 @@ int omap_hwmod_set_postsetup_state(struct omap_hwmod *oh, u8 state)
>    */
>   void __init omap_hwmod_init(void)
>   {
> -	if (cpu_is_omap24xx()) {
> -		soc_ops.wait_target_ready = _omap2xxx_3xxx_wait_target_ready;
> -		soc_ops.assert_hardreset = _omap2_assert_hardreset;
> -		soc_ops.deassert_hardreset = _omap2_deassert_hardreset;
> -		soc_ops.is_hardreset_asserted = _omap2_is_hardreset_asserted;
> -	} else if (cpu_is_omap34xx()) {
> +	if (cpu_is_omap34xx()) {
>   		soc_ops.wait_target_ready = _omap2xxx_3xxx_wait_target_ready;
>   		soc_ops.assert_hardreset = _omap2_assert_hardreset;
>   		soc_ops.deassert_hardreset = _omap2_deassert_hardreset;
> diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h
> index dcab7a01c10e..b60cd09c1997 100644
> --- a/arch/arm/mach-omap2/omap_hwmod.h
> +++ b/arch/arm/mach-omap2/omap_hwmod.h
> @@ -663,8 +663,6 @@ omap_hwmod_for_each_by_class(const char *classname,
>    * Chip variant-specific hwmod init routines - XXX should be converted
>    * to use initcalls once the initial boot ordering is straightened out
>    */
> -extern int omap2420_hwmod_init(void);
> -extern int omap2430_hwmod_init(void);
>   extern int omap3xxx_hwmod_init(void);
>   extern int dm814x_hwmod_init(void);
>   extern int dm816x_hwmod_init(void);
> diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> deleted file mode 100644
> index dbd9dc9f0962..000000000000
> --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> +++ /dev/null
> @@ -1,402 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
> - *
> - * Copyright (C) 2009-2011 Nokia Corporation
> - * Copyright (C) 2012 Texas Instruments, Inc.
> - * Paul Walmsley
> - *
> - * XXX handle crossbar/shared link difference for L3?
> - * XXX these should be marked initdata for multi-OMAP kernels
> - */
> -
> -#include <linux/platform_data/i2c-omap.h>
> -
> -#include "omap_hwmod.h"
> -#include "l3_2xxx.h"
> -#include "l4_2xxx.h"
> -
> -#include "omap_hwmod_common_data.h"
> -
> -#include "cm-regbits-24xx.h"
> -#include "prm-regbits-24xx.h"
> -#include "i2c.h"
> -#include "mmc.h"
> -#include "wd_timer.h"
> -
> -/*
> - * OMAP2420 hardware module integration data
> - *
> - * All of the data in this section should be autogeneratable from the
> - * TI hardware database or other technical documentation.  Data that
> - * is driver-specific or driver-kernel integration-specific belongs
> - * elsewhere.
> - */
> -
> -/*
> - * IP blocks
> - */
> -
> -/* IVA1 (IVA1) */
> -static struct omap_hwmod_class iva1_hwmod_class = {
> -	.name		= "iva1",
> -};
> -
> -static struct omap_hwmod_rst_info omap2420_iva_resets[] = {
> -	{ .name = "iva", .rst_shift = 8 },
> -};
> -
> -static struct omap_hwmod omap2420_iva_hwmod = {
> -	.name		= "iva",
> -	.class		= &iva1_hwmod_class,
> -	.clkdm_name	= "iva1_clkdm",
> -	.rst_lines	= omap2420_iva_resets,
> -	.rst_lines_cnt	= ARRAY_SIZE(omap2420_iva_resets),
> -	.main_clk	= "iva1_ifck",
> -};
> -
> -/* DSP */
> -static struct omap_hwmod_class dsp_hwmod_class = {
> -	.name		= "dsp",
> -};
> -
> -static struct omap_hwmod_rst_info omap2420_dsp_resets[] = {
> -	{ .name = "logic", .rst_shift = 0 },
> -	{ .name = "mmu", .rst_shift = 1 },
> -};
> -
> -static struct omap_hwmod omap2420_dsp_hwmod = {
> -	.name		= "dsp",
> -	.class		= &dsp_hwmod_class,
> -	.clkdm_name	= "dsp_clkdm",
> -	.rst_lines	= omap2420_dsp_resets,
> -	.rst_lines_cnt	= ARRAY_SIZE(omap2420_dsp_resets),
> -	.main_clk	= "dsp_fck",
> -};
> -
> -/* I2C common */
> -static struct omap_hwmod_class_sysconfig i2c_sysc = {
> -	.rev_offs	= 0x00,
> -	.sysc_offs	= 0x20,
> -	.syss_offs	= 0x10,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class i2c_class = {
> -	.name		= "i2c",
> -	.sysc		= &i2c_sysc,
> -	.reset		= &omap_i2c_reset,
> -};
> -
> -/* I2C1 */
> -static struct omap_hwmod omap2420_i2c1_hwmod = {
> -	.name		= "i2c1",
> -	.main_clk	= "i2c1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
> -		},
> -	},
> -	.class		= &i2c_class,
> -	/*
> -	 * From mach-omap2/pm24xx.c: "Putting MPU into the WFI state
> -	 * while a transfer is active seems to cause the I2C block to
> -	 * timeout. Why? Good question."
> -	 */
> -	.flags		= (HWMOD_16BIT_REG | HWMOD_BLOCK_WFI),
> -};
> -
> -/* I2C2 */
> -static struct omap_hwmod omap2420_i2c2_hwmod = {
> -	.name		= "i2c2",
> -	.main_clk	= "i2c2_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
> -		},
> -	},
> -	.class		= &i2c_class,
> -	.flags		= HWMOD_16BIT_REG,
> -};
> -
> -/* mailbox */
> -static struct omap_hwmod omap2420_mailbox_hwmod = {
> -	.name		= "mailbox",
> -	.class		= &omap2xxx_mailbox_hwmod_class,
> -	.main_clk	= "mailboxes_ick",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
> -		},
> -	},
> -};
> -
> -/*
> - * 'mcbsp' class
> - * multi channel buffered serial port controller
> - */
> -
> -static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
> -	.name = "mcbsp",
> -};
> -
> -static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
> -	{ .role = "pad_fck", .clk = "mcbsp_clks" },
> -	{ .role = "prcm_fck", .clk = "func_96m_ck" },
> -};
> -
> -/* mcbsp1 */
> -static struct omap_hwmod omap2420_mcbsp1_hwmod = {
> -	.name		= "mcbsp1",
> -	.class		= &omap2420_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -/* mcbsp2 */
> -static struct omap_hwmod omap2420_mcbsp2_hwmod = {
> -	.name		= "mcbsp2",
> -	.class		= &omap2420_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp2_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -static struct omap_hwmod_class_sysconfig omap2420_msdi_sysc = {
> -	.rev_offs	= 0x3c,
> -	.sysc_offs	= 0x64,
> -	.syss_offs	= 0x68,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2420_msdi_hwmod_class = {
> -	.name	= "msdi",
> -	.sysc	= &omap2420_msdi_sysc,
> -	.reset	= &omap_msdi_reset,
> -};
> -
> -/* msdi1 */
> -static struct omap_hwmod omap2420_msdi1_hwmod = {
> -	.name		= "msdi1",
> -	.class		= &omap2420_msdi_hwmod_class,
> -	.main_clk	= "mmc_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP2420_ST_MMC_SHIFT,
> -		},
> -	},
> -	.flags		= HWMOD_16BIT_REG,
> -};
> -
> -/* HDQ1W/1-wire */
> -static struct omap_hwmod omap2420_hdq1w_hwmod = {
> -	.name		= "hdq1w",
> -	.main_clk	= "hdq_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
> -		},
> -	},
> -	.class		= &omap2_hdq1w_class,
> -};
> -
> -/*
> - * interfaces
> - */
> -
> -/* L4 CORE -> I2C1 interface */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_i2c1_hwmod,
> -	.clk		= "i2c1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4 CORE -> I2C2 interface */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_i2c2_hwmod,
> -	.clk		= "i2c2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* IVA <- L3 interface */
> -static struct omap_hwmod_ocp_if omap2420_l3__iva = {
> -	.master		= &omap2xxx_l3_main_hwmod,
> -	.slave		= &omap2420_iva_hwmod,
> -	.clk		= "core_l3_ck",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* DSP <- L3 interface */
> -static struct omap_hwmod_ocp_if omap2420_l3__dsp = {
> -	.master		= &omap2xxx_l3_main_hwmod,
> -	.slave		= &omap2420_dsp_hwmod,
> -	.clk		= "dsp_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> wd_timer2 */
> -static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_wd_timer2_hwmod,
> -	.clk		= "mpu_wdt_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio1 */
> -static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio1_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio2 */
> -static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio2_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio3 */
> -static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio3_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio4 */
> -static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio4_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mailbox */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_mailbox_hwmod,
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp1 */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_mcbsp1_hwmod,
> -	.clk		= "mcbsp1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp2 */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_mcbsp2_hwmod,
> -	.clk		= "mcbsp2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> msdi1 */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__msdi1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_msdi1_hwmod,
> -	.clk		= "mmc_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> hdq1w interface */
> -static struct omap_hwmod_ocp_if omap2420_l4_core__hdq1w = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2420_hdq1w_hwmod,
> -	.clk		= "hdq_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -	.flags		= OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
> -};
> -
> -static struct omap_hwmod_ocp_if omap2420_l3__gpmc = {
> -	.master		= &omap2xxx_l3_main_hwmod,
> -	.slave		= &omap2xxx_gpmc_hwmod,
> -	.clk		= "core_l3_ck",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -static struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = {
> -	&omap2xxx_l3_main__l4_core,
> -	&omap2xxx_mpu__l3_main,
> -	&omap2xxx_dss__l3,
> -	&omap2xxx_l4_core__mcspi1,
> -	&omap2xxx_l4_core__mcspi2,
> -	&omap2xxx_l4_core__l4_wkup,
> -	&omap2_l4_core__uart1,
> -	&omap2_l4_core__uart2,
> -	&omap2_l4_core__uart3,
> -	&omap2420_l4_core__i2c1,
> -	&omap2420_l4_core__i2c2,
> -	&omap2420_l3__iva,
> -	&omap2420_l3__dsp,
> -	&omap2xxx_l4_core__timer3,
> -	&omap2xxx_l4_core__timer4,
> -	&omap2xxx_l4_core__timer5,
> -	&omap2xxx_l4_core__timer6,
> -	&omap2xxx_l4_core__timer7,
> -	&omap2xxx_l4_core__timer8,
> -	&omap2xxx_l4_core__timer9,
> -	&omap2xxx_l4_core__timer10,
> -	&omap2xxx_l4_core__timer11,
> -	&omap2xxx_l4_core__timer12,
> -	&omap2420_l4_wkup__wd_timer2,
> -	&omap2xxx_l4_core__dss,
> -	&omap2xxx_l4_core__dss_dispc,
> -	&omap2xxx_l4_core__dss_rfbi,
> -	&omap2xxx_l4_core__dss_venc,
> -	&omap2420_l4_wkup__gpio1,
> -	&omap2420_l4_wkup__gpio2,
> -	&omap2420_l4_wkup__gpio3,
> -	&omap2420_l4_wkup__gpio4,
> -	&omap2420_l4_core__mailbox,
> -	&omap2420_l4_core__mcbsp1,
> -	&omap2420_l4_core__mcbsp2,
> -	&omap2420_l4_core__msdi1,
> -	&omap2xxx_l4_core__rng,
> -	&omap2xxx_l4_core__sham,
> -	&omap2xxx_l4_core__aes,
> -	&omap2420_l4_core__hdq1w,
> -	&omap2420_l3__gpmc,
> -	NULL,
> -};
> -
> -int __init omap2420_hwmod_init(void)
> -{
> -	omap_hwmod_init();
> -	return omap_hwmod_register_links(omap2420_hwmod_ocp_ifs);
> -}
> diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> deleted file mode 100644
> index c93200801b34..000000000000
> --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> +++ /dev/null
> @@ -1,606 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * omap_hwmod_2430_data.c - hardware modules present on the OMAP2430 chips
> - *
> - * Copyright (C) 2009-2011 Nokia Corporation
> - * Copyright (C) 2012 Texas Instruments, Inc.
> - * Paul Walmsley
> - *
> - * XXX handle crossbar/shared link difference for L3?
> - * XXX these should be marked initdata for multi-OMAP kernels
> - */
> -
> -#include <linux/platform_data/i2c-omap.h>
> -#include <linux/platform_data/hsmmc-omap.h>
> -
> -#include "omap_hwmod.h"
> -#include "l3_2xxx.h"
> -
> -#include "soc.h"
> -#include "omap_hwmod_common_data.h"
> -#include "prm-regbits-24xx.h"
> -#include "cm-regbits-24xx.h"
> -#include "i2c.h"
> -#include "wd_timer.h"
> -
> -/*
> - * OMAP2430 hardware module integration data
> - *
> - * All of the data in this section should be autogeneratable from the
> - * TI hardware database or other technical documentation.  Data that
> - * is driver-specific or driver-kernel integration-specific belongs
> - * elsewhere.
> - */
> -
> -/*
> - * IP blocks
> - */
> -
> -/* IVA2 (IVA2) */
> -static struct omap_hwmod_rst_info omap2430_iva_resets[] = {
> -	{ .name = "logic", .rst_shift = 0 },
> -	{ .name = "mmu", .rst_shift = 1 },
> -};
> -
> -static struct omap_hwmod omap2430_iva_hwmod = {
> -	.name		= "iva",
> -	.class		= &iva_hwmod_class,
> -	.clkdm_name	= "dsp_clkdm",
> -	.rst_lines	= omap2430_iva_resets,
> -	.rst_lines_cnt	= ARRAY_SIZE(omap2430_iva_resets),
> -	.main_clk	= "dsp_fck",
> -};
> -
> -/* I2C common */
> -static struct omap_hwmod_class_sysconfig i2c_sysc = {
> -	.rev_offs	= 0x00,
> -	.sysc_offs	= 0x20,
> -	.syss_offs	= 0x10,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
> -			   SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class i2c_class = {
> -	.name		= "i2c",
> -	.sysc		= &i2c_sysc,
> -	.reset		= &omap_i2c_reset,
> -};
> -
> -/* I2C1 */
> -static struct omap_hwmod omap2430_i2c1_hwmod = {
> -	.name		= "i2c1",
> -	.flags		= HWMOD_16BIT_REG,
> -	.main_clk	= "i2chs1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			/*
> -			 * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
> -			 * I2CHS IP's do not follow the usual pattern.
> -			 * prcm_reg_id alone cannot be used to program
> -			 * the iclk and fclk. Needs to be handled using
> -			 * additional flags when clk handling is moved
> -			 * to hwmod framework.
> -			 */
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
> -		},
> -	},
> -	.class		= &i2c_class,
> -};
> -
> -/* I2C2 */
> -static struct omap_hwmod omap2430_i2c2_hwmod = {
> -	.name		= "i2c2",
> -	.flags		= HWMOD_16BIT_REG,
> -	.main_clk	= "i2chs2_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
> -		},
> -	},
> -	.class		= &i2c_class,
> -};
> -
> -/* gpio5 */
> -static struct omap_hwmod omap2430_gpio5_hwmod = {
> -	.name		= "gpio5",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.main_clk	= "gpio5_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_gpio_hwmod_class,
> -};
> -
> -/* mailbox */
> -static struct omap_hwmod omap2430_mailbox_hwmod = {
> -	.name		= "mailbox",
> -	.class		= &omap2xxx_mailbox_hwmod_class,
> -	.main_clk	= "mailboxes_ick",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
> -		},
> -	},
> -};
> -
> -/* mcspi3 */
> -static struct omap_hwmod omap2430_mcspi3_hwmod = {
> -	.name		= "mcspi3",
> -	.main_clk	= "mcspi3_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_mcspi_class,
> -};
> -
> -/* usbhsotg */
> -static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
> -	.rev_offs	= 0x0400,
> -	.sysc_offs	= 0x0404,
> -	.syss_offs	= 0x0408,
> -	.sysc_flags	= (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
> -			  SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> -			  SYSC_HAS_AUTOIDLE),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
> -			  MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class usbotg_class = {
> -	.name = "usbotg",
> -	.sysc = &omap2430_usbhsotg_sysc,
> -};
> -
> -/* usb_otg_hs */
> -static struct omap_hwmod omap2430_usbhsotg_hwmod = {
> -	.name		= "usb_otg_hs",
> -	.main_clk	= "usbhs_ick",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
> -		},
> -	},
> -	.class		= &usbotg_class,
> -	/*
> -	 * Erratum ID: i479  idle_req / idle_ack mechanism potentially
> -	 * broken when autoidle is enabled
> -	 * workaround is to disable the autoidle bit at module level.
> -	 */
> -	.flags		= HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
> -				| HWMOD_SWSUP_MSTANDBY,
> -};
> -
> -/*
> - * 'mcbsp' class
> - * multi channel buffered serial port controller
> - */
> -
> -static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
> -	.rev_offs	= 0x007C,
> -	.sysc_offs	= 0x008C,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET),
> -	.sysc_fields    = &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
> -	.name = "mcbsp",
> -	.sysc = &omap2430_mcbsp_sysc,
> -};
> -
> -static struct omap_hwmod_opt_clk mcbsp_opt_clks[] = {
> -	{ .role = "pad_fck", .clk = "mcbsp_clks" },
> -	{ .role = "prcm_fck", .clk = "func_96m_ck" },
> -};
> -
> -/* mcbsp1 */
> -static struct omap_hwmod omap2430_mcbsp1_hwmod = {
> -	.name		= "mcbsp1",
> -	.class		= &omap2430_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -/* mcbsp2 */
> -static struct omap_hwmod omap2430_mcbsp2_hwmod = {
> -	.name		= "mcbsp2",
> -	.class		= &omap2430_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp2_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -/* mcbsp3 */
> -static struct omap_hwmod omap2430_mcbsp3_hwmod = {
> -	.name		= "mcbsp3",
> -	.class		= &omap2430_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp3_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -/* mcbsp4 */
> -static struct omap_hwmod omap2430_mcbsp4_hwmod = {
> -	.name		= "mcbsp4",
> -	.class		= &omap2430_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp4_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -/* mcbsp5 */
> -static struct omap_hwmod omap2430_mcbsp5_hwmod = {
> -	.name		= "mcbsp5",
> -	.class		= &omap2430_mcbsp_hwmod_class,
> -	.main_clk	= "mcbsp5_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
> -		},
> -	},
> -	.opt_clks	= mcbsp_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(mcbsp_opt_clks),
> -};
> -
> -/* MMC/SD/SDIO common */
> -static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
> -	.rev_offs	= 0x1fc,
> -	.sysc_offs	= 0x10,
> -	.syss_offs	= 0x14,
> -	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
> -			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> -			   SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> -	.sysc_fields    = &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2430_mmc_class = {
> -	.name = "mmc",
> -	.sysc = &omap2430_mmc_sysc,
> -};
> -
> -/* MMC/SD/SDIO1 */
> -static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
> -	{ .role = "dbck", .clk = "mmchsdb1_fck" },
> -};
> -
> -static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
> -	.flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
> -};
> -
> -static struct omap_hwmod omap2430_mmc1_hwmod = {
> -	.name		= "mmc1",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.opt_clks	= omap2430_mmc1_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(omap2430_mmc1_opt_clks),
> -	.main_clk	= "mmchs1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
> -		},
> -	},
> -	.dev_attr	= &mmc1_dev_attr,
> -	.class		= &omap2430_mmc_class,
> -};
> -
> -/* MMC/SD/SDIO2 */
> -static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
> -	{ .role = "dbck", .clk = "mmchsdb2_fck" },
> -};
> -
> -static struct omap_hwmod omap2430_mmc2_hwmod = {
> -	.name		= "mmc2",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.opt_clks	= omap2430_mmc2_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(omap2430_mmc2_opt_clks),
> -	.main_clk	= "mmchs2_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
> -		},
> -	},
> -	.class		= &omap2430_mmc_class,
> -};
> -
> -/* HDQ1W/1-wire */
> -static struct omap_hwmod omap2430_hdq1w_hwmod = {
> -	.name		= "hdq1w",
> -	.main_clk	= "hdq_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_HDQ_SHIFT,
> -		},
> -	},
> -	.class		= &omap2_hdq1w_class,
> -};
> -
> -/*
> - * interfaces
> - */
> -
> -/* L3 -> L4_CORE interface */
> -/* l3_core -> usbhsotg  interface */
> -static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
> -	.master		= &omap2430_usbhsotg_hwmod,
> -	.slave		= &omap2xxx_l3_main_hwmod,
> -	.clk		= "core_l3_ck",
> -	.user		= OCP_USER_MPU,
> -};
> -
> -/* L4 CORE -> I2C1 interface */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_i2c1_hwmod,
> -	.clk		= "i2c1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4 CORE -> I2C2 interface */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_i2c2_hwmod,
> -	.clk		= "i2c2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/*  l4_core ->usbhsotg  interface */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_usbhsotg_hwmod,
> -	.clk		= "usb_l4_ick",
> -	.user		= OCP_USER_MPU,
> -};
> -
> -/* L4 CORE -> MMC1 interface */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mmc1_hwmod,
> -	.clk		= "mmchs1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4 CORE -> MMC2 interface */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mmc2_hwmod,
> -	.clk		= "mmchs2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4 core -> mcspi3 interface */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mcspi3_hwmod,
> -	.clk		= "mcspi3_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* IVA2 <- L3 interface */
> -static struct omap_hwmod_ocp_if omap2430_l3__iva = {
> -	.master		= &omap2xxx_l3_main_hwmod,
> -	.slave		= &omap2430_iva_hwmod,
> -	.clk		= "core_l3_ck",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> wd_timer2 */
> -static struct omap_hwmod_ocp_if omap2430_l4_wkup__wd_timer2 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_wd_timer2_hwmod,
> -	.clk		= "mpu_wdt_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio1 */
> -static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio1_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio2 */
> -static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio2_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio3 */
> -static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio3_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_wkup -> gpio4 */
> -static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
> -	.master		= &omap2xxx_l4_wkup_hwmod,
> -	.slave		= &omap2xxx_gpio4_hwmod,
> -	.clk		= "gpios_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> gpio5 */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_gpio5_hwmod,
> -	.clk		= "gpio5_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mailbox */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mailbox_hwmod,
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp1 */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mcbsp1_hwmod,
> -	.clk		= "mcbsp1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp2 */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mcbsp2_hwmod,
> -	.clk		= "mcbsp2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp3 */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mcbsp3_hwmod,
> -	.clk		= "mcbsp3_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp4 */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mcbsp4_hwmod,
> -	.clk		= "mcbsp4_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> mcbsp5 */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_mcbsp5_hwmod,
> -	.clk		= "mcbsp5_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> hdq1w */
> -static struct omap_hwmod_ocp_if omap2430_l4_core__hdq1w = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2430_hdq1w_hwmod,
> -	.clk		= "hdq_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -	.flags		= OMAP_FIREWALL_L4 | OCPIF_SWSUP_IDLE,
> -};
> -
> -static struct omap_hwmod_ocp_if omap2430_l3__gpmc = {
> -	.master		= &omap2xxx_l3_main_hwmod,
> -	.slave		= &omap2xxx_gpmc_hwmod,
> -	.clk		= "core_l3_ck",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
> -	&omap2xxx_l3_main__l4_core,
> -	&omap2xxx_mpu__l3_main,
> -	&omap2xxx_dss__l3,
> -	&omap2430_usbhsotg__l3,
> -	&omap2430_l4_core__i2c1,
> -	&omap2430_l4_core__i2c2,
> -	&omap2xxx_l4_core__l4_wkup,
> -	&omap2_l4_core__uart1,
> -	&omap2_l4_core__uart2,
> -	&omap2_l4_core__uart3,
> -	&omap2430_l4_core__usbhsotg,
> -	&omap2430_l4_core__mmc1,
> -	&omap2430_l4_core__mmc2,
> -	&omap2xxx_l4_core__mcspi1,
> -	&omap2xxx_l4_core__mcspi2,
> -	&omap2430_l4_core__mcspi3,
> -	&omap2430_l3__iva,
> -	&omap2xxx_l4_core__timer3,
> -	&omap2xxx_l4_core__timer4,
> -	&omap2xxx_l4_core__timer5,
> -	&omap2xxx_l4_core__timer6,
> -	&omap2xxx_l4_core__timer7,
> -	&omap2xxx_l4_core__timer8,
> -	&omap2xxx_l4_core__timer9,
> -	&omap2xxx_l4_core__timer10,
> -	&omap2xxx_l4_core__timer11,
> -	&omap2xxx_l4_core__timer12,
> -	&omap2430_l4_wkup__wd_timer2,
> -	&omap2xxx_l4_core__dss,
> -	&omap2xxx_l4_core__dss_dispc,
> -	&omap2xxx_l4_core__dss_rfbi,
> -	&omap2xxx_l4_core__dss_venc,
> -	&omap2430_l4_wkup__gpio1,
> -	&omap2430_l4_wkup__gpio2,
> -	&omap2430_l4_wkup__gpio3,
> -	&omap2430_l4_wkup__gpio4,
> -	&omap2430_l4_core__gpio5,
> -	&omap2430_l4_core__mailbox,
> -	&omap2430_l4_core__mcbsp1,
> -	&omap2430_l4_core__mcbsp2,
> -	&omap2430_l4_core__mcbsp3,
> -	&omap2430_l4_core__mcbsp4,
> -	&omap2430_l4_core__mcbsp5,
> -	&omap2430_l4_core__hdq1w,
> -	&omap2xxx_l4_core__rng,
> -	&omap2xxx_l4_core__sham,
> -	&omap2xxx_l4_core__aes,
> -	&omap2430_l3__gpmc,
> -	NULL,
> -};
> -
> -int __init omap2430_hwmod_init(void)
> -{
> -	omap_hwmod_init();
> -	return omap_hwmod_register_links(omap2430_hwmod_ocp_ifs);
> -}
> diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
> deleted file mode 100644
> index 761d34914ed9..000000000000
> --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
> +++ /dev/null
> @@ -1,256 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * omap_hwmod_2xxx_interconnect_data.c - common interconnect data for OMAP2xxx
> - *
> - * Copyright (C) 2009-2011 Nokia Corporation
> - * Paul Walmsley
> - *
> - * XXX handle crossbar/shared link difference for L3?
> - * XXX these should be marked initdata for multi-OMAP kernels
> - */
> -#include <linux/sizes.h>
> -
> -#include "omap_hwmod.h"
> -#include "l3_2xxx.h"
> -#include "l4_2xxx.h"
> -
> -#include "omap_hwmod_common_data.h"
> -
> -/*
> - * Common interconnect data
> - */
> -
> -/* L3 -> L4_CORE interface */
> -struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core = {
> -	.master	= &omap2xxx_l3_main_hwmod,
> -	.slave	= &omap2xxx_l4_core_hwmod,
> -	.user	= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* MPU -> L3 interface */
> -struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main = {
> -	.master = &omap2xxx_mpu_hwmod,
> -	.slave	= &omap2xxx_l3_main_hwmod,
> -	.user	= OCP_USER_MPU,
> -};
> -
> -/* DSS -> l3 */
> -struct omap_hwmod_ocp_if omap2xxx_dss__l3 = {
> -	.master		= &omap2xxx_dss_core_hwmod,
> -	.slave		= &omap2xxx_l3_main_hwmod,
> -	.fw = {
> -		.omap2 = {
> -			.l3_perm_bit  = OMAP2_L3_CORE_FW_CONNID_DSS,
> -			.flags	= OMAP_FIREWALL_L3,
> -		},
> -	},
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4_CORE -> L4_WKUP interface */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup = {
> -	.master	= &omap2xxx_l4_core_hwmod,
> -	.slave	= &omap2xxx_l4_wkup_hwmod,
> -	.user	= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4 CORE -> UART1 interface */
> -struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_uart1_hwmod,
> -	.clk		= "uart1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4 CORE -> UART2 interface */
> -struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_uart2_hwmod,
> -	.clk		= "uart2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* L4 PER -> UART3 interface */
> -struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_uart3_hwmod,
> -	.clk		= "uart3_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4 core -> mcspi1 interface */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_mcspi1_hwmod,
> -	.clk		= "mcspi1_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4 core -> mcspi2 interface */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_mcspi2_hwmod,
> -	.clk		= "mcspi2_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer3 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer3_hwmod,
> -	.clk		= "gpt3_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer4 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer4_hwmod,
> -	.clk		= "gpt4_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer5 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer5_hwmod,
> -	.clk		= "gpt5_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer6 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer6_hwmod,
> -	.clk		= "gpt6_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer7 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer7_hwmod,
> -	.clk		= "gpt7_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer8 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer8_hwmod,
> -	.clk		= "gpt8_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer9 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer9_hwmod,
> -	.clk		= "gpt9_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer10 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer10_hwmod,
> -	.clk		= "gpt10_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer11 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer11_hwmod,
> -	.clk		= "gpt11_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> timer12 */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12 = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_timer12_hwmod,
> -	.clk		= "gpt12_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> dss */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__dss = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_dss_core_hwmod,
> -	.clk		= "dss_ick",
> -	.fw = {
> -		.omap2 = {
> -			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
> -			.flags	= OMAP_FIREWALL_L4,
> -		},
> -	},
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> dss_dispc */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_dss_dispc_hwmod,
> -	.clk		= "dss_ick",
> -	.fw = {
> -		.omap2 = {
> -			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
> -			.flags	= OMAP_FIREWALL_L4,
> -		},
> -	},
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> dss_rfbi */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_dss_rfbi_hwmod,
> -	.clk		= "dss_ick",
> -	.fw = {
> -		.omap2 = {
> -			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
> -			.flags	= OMAP_FIREWALL_L4,
> -		},
> -	},
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> dss_venc */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_dss_venc_hwmod,
> -	.clk		= "dss_ick",
> -	.fw = {
> -		.omap2 = {
> -			.l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
> -			.flags	= OMAP_FIREWALL_L4,
> -		},
> -	},
> -	.flags		= OCPIF_SWSUP_IDLE,
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4_core -> rng */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__rng = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_rng_hwmod,
> -	.clk		= "rng_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4 core -> sham interface */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__sham = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_sham_hwmod,
> -	.clk		= "sha_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> -
> -/* l4 core -> aes interface */
> -struct omap_hwmod_ocp_if omap2xxx_l4_core__aes = {
> -	.master		= &omap2xxx_l4_core_hwmod,
> -	.slave		= &omap2xxx_aes_hwmod,
> -	.clk		= "aes_ick",
> -	.user		= OCP_USER_MPU | OCP_USER_SDMA,
> -};
> diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
> deleted file mode 100644
> index 4982e04ead53..000000000000
> --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
> +++ /dev/null
> @@ -1,668 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * omap_hwmod_2xxx_ipblock_data.c - common IP block data for OMAP2xxx
> - *
> - * Copyright (C) 2011 Nokia Corporation
> - * Paul Walmsley
> - */
> -
> -#include <linux/types.h>
> -
> -#include "omap_hwmod.h"
> -#include "omap_hwmod_common_data.h"
> -#include "cm-regbits-24xx.h"
> -#include "prm-regbits-24xx.h"
> -#include "wd_timer.h"
> -
> -/*
> - * 'dispc' class
> - * display controller
> - */
> -
> -static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
> -	.rev_offs	= 0x0000,
> -	.sysc_offs	= 0x0010,
> -	.syss_offs	= 0x0014,
> -	.sysc_flags	= (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
> -			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
> -			   MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2_dispc_hwmod_class = {
> -	.name	= "dispc",
> -	.sysc	= &omap2_dispc_sysc,
> -};
> -
> -/* OMAP2xxx Timer Common */
> -static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
> -	.rev_offs	= 0x0000,
> -	.sysc_offs	= 0x0010,
> -	.syss_offs	= 0x0014,
> -	.sysc_flags	= (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
> -			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> -			   SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2xxx_timer_hwmod_class = {
> -	.name	= "timer",
> -	.sysc	= &omap2xxx_timer_sysc,
> -};
> -
> -/*
> - * 'wd_timer' class
> - * 32-bit watchdog upward counter that generates a pulse on the reset pin on
> - * overflow condition
> - */
> -
> -static struct omap_hwmod_class_sysconfig omap2xxx_wd_timer_sysc = {
> -	.rev_offs	= 0x0000,
> -	.sysc_offs	= 0x0010,
> -	.syss_offs	= 0x0014,
> -	.sysc_flags	= (SYSC_HAS_EMUFREE | SYSC_HAS_SOFTRESET |
> -			   SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2xxx_wd_timer_hwmod_class = {
> -	.name		= "wd_timer",
> -	.sysc		= &omap2xxx_wd_timer_sysc,
> -	.pre_shutdown	= &omap2_wd_timer_disable,
> -	.reset		= &omap2_wd_timer_reset,
> -};
> -
> -/*
> - * 'gpio' class
> - * general purpose io module
> - */
> -static struct omap_hwmod_class_sysconfig omap2xxx_gpio_sysc = {
> -	.rev_offs	= 0x0000,
> -	.sysc_offs	= 0x0010,
> -	.syss_offs	= 0x0014,
> -	.sysc_flags	= (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
> -			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
> -			   SYSS_HAS_RESET_STATUS),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -struct omap_hwmod_class omap2xxx_gpio_hwmod_class = {
> -	.name = "gpio",
> -	.sysc = &omap2xxx_gpio_sysc,
> -};
> -
> -/*
> - * 'mailbox' class
> - * mailbox module allowing communication between the on-chip processors
> - * using a queued mailbox-interrupt mechanism.
> - */
> -
> -static struct omap_hwmod_class_sysconfig omap2xxx_mailbox_sysc = {
> -	.rev_offs	= 0x000,
> -	.sysc_offs	= 0x010,
> -	.syss_offs	= 0x014,
> -	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
> -			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -struct omap_hwmod_class omap2xxx_mailbox_hwmod_class = {
> -	.name	= "mailbox",
> -	.sysc	= &omap2xxx_mailbox_sysc,
> -};
> -
> -/*
> - * 'mcspi' class
> - * multichannel serial port interface (mcspi) / master/slave synchronous serial
> - * bus
> - */
> -
> -static struct omap_hwmod_class_sysconfig omap2xxx_mcspi_sysc = {
> -	.rev_offs	= 0x0000,
> -	.sysc_offs	= 0x0010,
> -	.syss_offs	= 0x0014,
> -	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
> -				SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
> -				SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -struct omap_hwmod_class omap2xxx_mcspi_class = {
> -	.name	= "mcspi",
> -	.sysc	= &omap2xxx_mcspi_sysc,
> -};
> -
> -/*
> - * 'gpmc' class
> - * general purpose memory controller
> - */
> -
> -static struct omap_hwmod_class_sysconfig omap2xxx_gpmc_sysc = {
> -	.rev_offs	= 0x0000,
> -	.sysc_offs	= 0x0010,
> -	.syss_offs	= 0x0014,
> -	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE |
> -			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
> -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2xxx_gpmc_hwmod_class = {
> -	.name	= "gpmc",
> -	.sysc	= &omap2xxx_gpmc_sysc,
> -};
> -
> -/*
> - * IP blocks
> - */
> -
> -/* L3 */
> -struct omap_hwmod omap2xxx_l3_main_hwmod = {
> -	.name		= "l3_main",
> -	.class		= &l3_hwmod_class,
> -	.flags		= HWMOD_NO_IDLEST,
> -};
> -
> -/* L4 CORE */
> -struct omap_hwmod omap2xxx_l4_core_hwmod = {
> -	.name		= "l4_core",
> -	.class		= &l4_hwmod_class,
> -	.flags		= HWMOD_NO_IDLEST,
> -};
> -
> -/* L4 WKUP */
> -struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
> -	.name		= "l4_wkup",
> -	.class		= &l4_hwmod_class,
> -	.flags		= HWMOD_NO_IDLEST,
> -};
> -
> -/* MPU */
> -struct omap_hwmod omap2xxx_mpu_hwmod = {
> -	.name		= "mpu",
> -	.class		= &mpu_hwmod_class,
> -	.main_clk	= "mpu_ck",
> -};
> -
> -/* timer3 */
> -struct omap_hwmod omap2xxx_timer3_hwmod = {
> -	.name		= "timer3",
> -	.main_clk	= "gpt3_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer4 */
> -struct omap_hwmod omap2xxx_timer4_hwmod = {
> -	.name		= "timer4",
> -	.main_clk	= "gpt4_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer5 */
> -struct omap_hwmod omap2xxx_timer5_hwmod = {
> -	.name		= "timer5",
> -	.main_clk	= "gpt5_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer6 */
> -struct omap_hwmod omap2xxx_timer6_hwmod = {
> -	.name		= "timer6",
> -	.main_clk	= "gpt6_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer7 */
> -struct omap_hwmod omap2xxx_timer7_hwmod = {
> -	.name		= "timer7",
> -	.main_clk	= "gpt7_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer8 */
> -struct omap_hwmod omap2xxx_timer8_hwmod = {
> -	.name		= "timer8",
> -	.main_clk	= "gpt8_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer9 */
> -struct omap_hwmod omap2xxx_timer9_hwmod = {
> -	.name		= "timer9",
> -	.main_clk	= "gpt9_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer10 */
> -struct omap_hwmod omap2xxx_timer10_hwmod = {
> -	.name		= "timer10",
> -	.main_clk	= "gpt10_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer11 */
> -struct omap_hwmod omap2xxx_timer11_hwmod = {
> -	.name		= "timer11",
> -	.main_clk	= "gpt11_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* timer12 */
> -struct omap_hwmod omap2xxx_timer12_hwmod = {
> -	.name		= "timer12",
> -	.main_clk	= "gpt12_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_timer_hwmod_class,
> -	.flags          = HWMOD_SET_DEFAULT_CLOCKACT,
> -};
> -
> -/* wd_timer2 */
> -struct omap_hwmod omap2xxx_wd_timer2_hwmod = {
> -	.name		= "wd_timer2",
> -	.class		= &omap2xxx_wd_timer_hwmod_class,
> -	.main_clk	= "mpu_wdt_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = WKUP_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
> -		},
> -	},
> -};
> -
> -/* UART1 */
> -
> -struct omap_hwmod omap2xxx_uart1_hwmod = {
> -	.name		= "uart1",
> -	.main_clk	= "uart1_fck",
> -	.flags		= DEBUG_OMAP2UART1_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
> -		},
> -	},
> -	.class		= &omap2_uart_class,
> -};
> -
> -/* UART2 */
> -
> -struct omap_hwmod omap2xxx_uart2_hwmod = {
> -	.name		= "uart2",
> -	.main_clk	= "uart2_fck",
> -	.flags		= DEBUG_OMAP2UART2_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
> -		},
> -	},
> -	.class		= &omap2_uart_class,
> -};
> -
> -/* UART3 */
> -
> -struct omap_hwmod omap2xxx_uart3_hwmod = {
> -	.name		= "uart3",
> -	.main_clk	= "uart3_fck",
> -	.flags		= DEBUG_OMAP2UART3_FLAGS | HWMOD_SWSUP_SIDLE_ACT,
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 2,
> -			.idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
> -		},
> -	},
> -	.class		= &omap2_uart_class,
> -};
> -
> -/* dss */
> -
> -static struct omap_hwmod_opt_clk dss_opt_clks[] = {
> -	/*
> -	 * The DSS HW needs all DSS clocks enabled during reset. The dss_core
> -	 * driver does not use these clocks.
> -	 */
> -	{ .role = "tv_clk", .clk = "dss_54m_fck" },
> -	{ .role = "sys_clk", .clk = "dss2_fck" },
> -};
> -
> -struct omap_hwmod omap2xxx_dss_core_hwmod = {
> -	.name		= "dss_core",
> -	.class		= &omap2_dss_hwmod_class,
> -	.main_clk	= "dss1_fck", /* instead of dss_fck */
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -		},
> -	},
> -	.opt_clks	= dss_opt_clks,
> -	.opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
> -	.flags		= HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -};
> -
> -struct omap_hwmod omap2xxx_dss_dispc_hwmod = {
> -	.name		= "dss_dispc",
> -	.class		= &omap2_dispc_hwmod_class,
> -	.main_clk	= "dss1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -		},
> -	},
> -	.flags		= HWMOD_NO_IDLEST,
> -	.dev_attr	= &omap2_3_dss_dispc_dev_attr,
> -};
> -
> -static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
> -	{ .role = "ick", .clk = "dss_ick" },
> -};
> -
> -struct omap_hwmod omap2xxx_dss_rfbi_hwmod = {
> -	.name		= "dss_rfbi",
> -	.class		= &omap2_rfbi_hwmod_class,
> -	.main_clk	= "dss1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -		},
> -	},
> -	.opt_clks	= dss_rfbi_opt_clks,
> -	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks),
> -	.flags		= HWMOD_NO_IDLEST,
> -};
> -
> -struct omap_hwmod omap2xxx_dss_venc_hwmod = {
> -	.name		= "dss_venc",
> -	.class		= &omap2_venc_hwmod_class,
> -	.main_clk	= "dss_54m_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -		},
> -	},
> -	.flags		= HWMOD_NO_IDLEST,
> -};
> -
> -/* gpio1 */
> -struct omap_hwmod omap2xxx_gpio1_hwmod = {
> -	.name		= "gpio1",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.main_clk	= "gpios_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = WKUP_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_gpio_hwmod_class,
> -};
> -
> -/* gpio2 */
> -struct omap_hwmod omap2xxx_gpio2_hwmod = {
> -	.name		= "gpio2",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.main_clk	= "gpios_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = WKUP_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_gpio_hwmod_class,
> -};
> -
> -/* gpio3 */
> -struct omap_hwmod omap2xxx_gpio3_hwmod = {
> -	.name		= "gpio3",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.main_clk	= "gpios_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = WKUP_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_gpio_hwmod_class,
> -};
> -
> -/* gpio4 */
> -struct omap_hwmod omap2xxx_gpio4_hwmod = {
> -	.name		= "gpio4",
> -	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
> -	.main_clk	= "gpios_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = WKUP_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_gpio_hwmod_class,
> -};
> -
> -/* mcspi1 */
> -struct omap_hwmod omap2xxx_mcspi1_hwmod = {
> -	.name		= "mcspi1",
> -	.main_clk	= "mcspi1_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_mcspi_class,
> -};
> -
> -/* mcspi2 */
> -struct omap_hwmod omap2xxx_mcspi2_hwmod = {
> -	.name		= "mcspi2",
> -	.main_clk	= "mcspi2_fck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 1,
> -			.idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_mcspi_class,
> -};
> -
> -/* gpmc */
> -struct omap_hwmod omap2xxx_gpmc_hwmod = {
> -	.name		= "gpmc",
> -	.class		= &omap2xxx_gpmc_hwmod_class,
> -	.main_clk	= "gpmc_fck",
> -	/* Skip reset for CONFIG_OMAP_GPMC_DEBUG for bootloader timings */
> -	.flags		= HWMOD_NO_IDLEST | DEBUG_OMAP_GPMC_HWMOD_FLAGS,
> -	.prcm		= {
> -		.omap2	= {
> -			.module_offs = CORE_MOD,
> -		},
> -	},
> -};
> -
> -/* RNG */
> -
> -static struct omap_hwmod_class_sysconfig omap2_rng_sysc = {
> -	.rev_offs	= 0x3c,
> -	.sysc_offs	= 0x40,
> -	.syss_offs	= 0x44,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
> -			   SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2_rng_hwmod_class = {
> -	.name		= "rng",
> -	.sysc		= &omap2_rng_sysc,
> -};
> -
> -struct omap_hwmod omap2xxx_rng_hwmod = {
> -	.name		= "rng",
> -	.main_clk	= "l4_ck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 4,
> -			.idlest_idle_bit = OMAP24XX_ST_RNG_SHIFT,
> -		},
> -	},
> -	/*
> -	 * XXX The first read from the SYSSTATUS register of the RNG
> -	 * after the SYSCONFIG SOFTRESET bit is set triggers an
> -	 * imprecise external abort.  It's unclear why this happens.
> -	 * Until this is analyzed, skip the IP block reset.
> -	 */
> -	.flags		= HWMOD_INIT_NO_RESET,
> -	.class		= &omap2_rng_hwmod_class,
> -};
> -
> -/* SHAM */
> -
> -static struct omap_hwmod_class_sysconfig omap2_sham_sysc = {
> -	.rev_offs	= 0x5c,
> -	.sysc_offs	= 0x60,
> -	.syss_offs	= 0x64,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
> -			   SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2xxx_sham_class = {
> -	.name	= "sham",
> -	.sysc	= &omap2_sham_sysc,
> -};
> -
> -struct omap_hwmod omap2xxx_sham_hwmod = {
> -	.name		= "sham",
> -	.main_clk	= "l4_ck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 4,
> -			.idlest_idle_bit = OMAP24XX_ST_SHA_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_sham_class,
> -};
> -
> -/* AES */
> -
> -static struct omap_hwmod_class_sysconfig omap2_aes_sysc = {
> -	.rev_offs	= 0x44,
> -	.sysc_offs	= 0x48,
> -	.syss_offs	= 0x4c,
> -	.sysc_flags	= (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
> -			   SYSS_HAS_RESET_STATUS),
> -	.sysc_fields	= &omap_hwmod_sysc_type1,
> -};
> -
> -static struct omap_hwmod_class omap2xxx_aes_class = {
> -	.name	= "aes",
> -	.sysc	= &omap2_aes_sysc,
> -};
> -
> -struct omap_hwmod omap2xxx_aes_hwmod = {
> -	.name		= "aes",
> -	.main_clk	= "l4_ck",
> -	.prcm		= {
> -		.omap2 = {
> -			.module_offs = CORE_MOD,
> -			.idlest_reg_id = 4,
> -			.idlest_idle_bit = OMAP24XX_ST_AES_SHIFT,
> -		},
> -	},
> -	.class		= &omap2xxx_aes_class,
> -};
> diff --git a/arch/arm/mach-omap2/omap_hwmod_common_data.h b/arch/arm/mach-omap2/omap_hwmod_common_data.h
> index 69dddc53e1d8..8b270cb3f64b 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_common_data.h
> +++ b/arch/arm/mach-omap2/omap_hwmod_common_data.h
> @@ -15,68 +15,6 @@
>   #include "common.h"
>   #include "display.h"
>   
> -/* Common IP block data across OMAP2xxx */
> -extern struct omap_hwmod omap2xxx_l3_main_hwmod;
> -extern struct omap_hwmod omap2xxx_l4_core_hwmod;
> -extern struct omap_hwmod omap2xxx_l4_wkup_hwmod;
> -extern struct omap_hwmod omap2xxx_mpu_hwmod;
> -extern struct omap_hwmod omap2xxx_timer3_hwmod;
> -extern struct omap_hwmod omap2xxx_timer4_hwmod;
> -extern struct omap_hwmod omap2xxx_timer5_hwmod;
> -extern struct omap_hwmod omap2xxx_timer6_hwmod;
> -extern struct omap_hwmod omap2xxx_timer7_hwmod;
> -extern struct omap_hwmod omap2xxx_timer8_hwmod;
> -extern struct omap_hwmod omap2xxx_timer9_hwmod;
> -extern struct omap_hwmod omap2xxx_timer10_hwmod;
> -extern struct omap_hwmod omap2xxx_timer11_hwmod;
> -extern struct omap_hwmod omap2xxx_timer12_hwmod;
> -extern struct omap_hwmod omap2xxx_wd_timer2_hwmod;
> -extern struct omap_hwmod omap2xxx_uart1_hwmod;
> -extern struct omap_hwmod omap2xxx_uart2_hwmod;
> -extern struct omap_hwmod omap2xxx_uart3_hwmod;
> -extern struct omap_hwmod omap2xxx_dss_core_hwmod;
> -extern struct omap_hwmod omap2xxx_dss_dispc_hwmod;
> -extern struct omap_hwmod omap2xxx_dss_rfbi_hwmod;
> -extern struct omap_hwmod omap2xxx_dss_venc_hwmod;
> -extern struct omap_hwmod omap2xxx_gpio1_hwmod;
> -extern struct omap_hwmod omap2xxx_gpio2_hwmod;
> -extern struct omap_hwmod omap2xxx_gpio3_hwmod;
> -extern struct omap_hwmod omap2xxx_gpio4_hwmod;
> -extern struct omap_hwmod omap2xxx_mcspi1_hwmod;
> -extern struct omap_hwmod omap2xxx_mcspi2_hwmod;
> -extern struct omap_hwmod omap2xxx_gpmc_hwmod;
> -extern struct omap_hwmod omap2xxx_rng_hwmod;
> -extern struct omap_hwmod omap2xxx_sham_hwmod;
> -extern struct omap_hwmod omap2xxx_aes_hwmod;
> -
> -/* Common interface data across OMAP2xxx */
> -extern struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core;
> -extern struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main;
> -extern struct omap_hwmod_ocp_if omap2xxx_dss__l3;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup;
> -extern struct omap_hwmod_ocp_if omap2_l4_core__uart1;
> -extern struct omap_hwmod_ocp_if omap2_l4_core__uart2;
> -extern struct omap_hwmod_ocp_if omap2_l4_core__uart3;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__rng;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__sham;
> -extern struct omap_hwmod_ocp_if omap2xxx_l4_core__aes;
> -
>   /* OMAP hwmod classes - forward declarations */
>   extern struct omap_hwmod_class l3_hwmod_class;
>   extern struct omap_hwmod_class l4_hwmod_class;
> @@ -88,10 +26,6 @@ extern struct omap_hwmod_class omap2_rfbi_hwmod_class;
>   extern struct omap_hwmod_class omap2_venc_hwmod_class;
>   extern struct omap_hwmod_class omap2_hdq1w_class;
>   
> -extern struct omap_hwmod_class omap2xxx_gpio_hwmod_class;
> -extern struct omap_hwmod_class omap2xxx_mailbox_hwmod_class;
> -extern struct omap_hwmod_class omap2xxx_mcspi_class;
> -
>   extern struct omap_dss_dispc_dev_attr omap2_3_dss_dispc_dev_attr;
>   
>   #endif
> diff --git a/arch/arm/mach-omap2/opp2420_data.c b/arch/arm/mach-omap2/opp2420_data.c
> deleted file mode 100644
> index 18a448f938ea..000000000000
> --- a/arch/arm/mach-omap2/opp2420_data.c
> +++ /dev/null
> @@ -1,131 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * opp2420_data.c - old-style "OPP" table for OMAP2420
> - *
> - * Copyright (C) 2005-2009 Texas Instruments, Inc.
> - * Copyright (C) 2004-2009 Nokia Corporation
> - *
> - * Richard Woodruff <r-woodruff2@ti.com>
> - *
> - * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
> - * These configurations are characterized by voltage and speed for clocks.
> - * The device is only validated for certain combinations. One way to express
> - * these combinations is via the 'ratios' which the clocks operate with
> - * respect to each other. These ratio sets are for a given voltage/DPLL
> - * setting. All configurations can be described by a DPLL setting and a ratio.
> - *
> - * XXX Missing voltage data.
> - * XXX Missing 19.2MHz sys_clk rate sets (needed for N800/N810)
> - *
> - * THe format described in this file is deprecated.  Once a reasonable
> - * OPP API exists, the data in this file should be converted to use it.
> - *
> - * This is technically part of the OMAP2xxx clock code.
> - *
> - * Considerable work is still needed to fully support dynamic frequency
> - * changes on OMAP2xxx-series chips.  Readers interested in such a
> - * project are encouraged to review the Maemo Diablo RX-34 and RX-44
> - * kernel source at:
> - *     http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
> - */
> -
> -#include <linux/kernel.h>
> -
> -#include "opp2xxx.h"
> -#include "sdrc.h"
> -#include "clock.h"
> -
> -/*
> - * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
> - * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
> - * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
> - * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
> - *
> - * Filling in table based on H4 boards available.  There are quite a
> - * few more rate combinations which could be defined.
> - *
> - * When multiple values are defined the start up will try and choose
> - * the fastest one. If a 'fast' value is defined, then automatically,
> - * the /2 one should be included as it can be used.  Generally having
> - * more than one fast set does not make sense, as static timings need
> - * to be changed to change the set.  The exception is the bypass
> - * setting which is available for low power bypass.
> - *
> - * Note: This table needs to be sorted, fastest to slowest.
> - **/
> -const struct prcm_config omap2420_rate_table[] = {
> -	/* PRCM I - FAST */
> -	{S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL,		/* 330MHz ARM */
> -		RI_CM_CLKSEL_DSP_VAL, RI_CM_CLKSEL_GFX_VAL,
> -		RI_CM_CLKSEL1_CORE_VAL, MI_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_165MHz,
> -		RATE_IN_242X},
> -
> -	/* PRCM II - FAST */
> -	{S12M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL,		/* 300MHz ARM */
> -		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
> -		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
> -		RATE_IN_242X},
> -
> -	{S13M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL,		/* 300MHz ARM */
> -		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
> -		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
> -		RATE_IN_242X},
> -
> -	/* PRCM III - FAST */
> -	{S12M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL,		/* 266MHz ARM */
> -		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
> -		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_242X},
> -
> -	{S13M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL,		/* 266MHz ARM */
> -		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
> -		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_242X},
> -
> -	/* PRCM II - SLOW */
> -	{S12M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL,		/* 150MHz ARM */
> -		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
> -		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
> -		RATE_IN_242X},
> -
> -	{S13M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL,		/* 150MHz ARM */
> -		RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL,
> -		RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz,
> -		RATE_IN_242X},
> -
> -	/* PRCM III - SLOW */
> -	{S12M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL,		/* 133MHz ARM */
> -		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
> -		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_242X},
> -
> -	{S13M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL,		/* 133MHz ARM */
> -		RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL,
> -		RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_242X},
> -
> -	/* PRCM-VII (boot-bypass) */
> -	{S12M, S12M, S12M, RVII_CM_CLKSEL_MPU_VAL,		/* 12MHz ARM*/
> -		RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL,
> -		RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS,
> -		RATE_IN_242X},
> -
> -	/* PRCM-VII (boot-bypass) */
> -	{S13M, S13M, S13M, RVII_CM_CLKSEL_MPU_VAL,		/* 13MHz ARM */
> -		RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL,
> -		RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS,
> -		RATE_IN_242X},
> -
> -	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
> -};
> diff --git a/arch/arm/mach-omap2/opp2430_data.c b/arch/arm/mach-omap2/opp2430_data.c
> deleted file mode 100644
> index ded8b566a23a..000000000000
> --- a/arch/arm/mach-omap2/opp2430_data.c
> +++ /dev/null
> @@ -1,136 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * opp2430_data.c - old-style "OPP" table for OMAP2430
> - *
> - * Copyright (C) 2005-2009 Texas Instruments, Inc.
> - * Copyright (C) 2004-2009 Nokia Corporation
> - *
> - * Richard Woodruff <r-woodruff2@ti.com>
> - *
> - * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
> - * These configurations are characterized by voltage and speed for clocks.
> - * The device is only validated for certain combinations. One way to express
> - * these combinations is via the 'ratios' which the clocks operate with
> - * respect to each other. These ratio sets are for a given voltage/DPLL
> - * setting. All configurations can be described by a DPLL setting and a ratio.
> - *
> - * 2430 differs from 2420 in that there are no more phase synchronizers used.
> - * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
> - * 2430 (iva2.1, NOdsp, mdm)
> - *
> - * XXX Missing voltage data.
> - * XXX Missing 19.2MHz sys_clk rate sets.
> - *
> - * THe format described in this file is deprecated.  Once a reasonable
> - * OPP API exists, the data in this file should be converted to use it.
> - *
> - * This is technically part of the OMAP2xxx clock code.
> - */
> -
> -#include <linux/kernel.h>
> -
> -#include "opp2xxx.h"
> -#include "sdrc.h"
> -#include "clock.h"
> -
> -/*
> - * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
> - * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
> - * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
> - * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
> - *
> - * Filling in table based on 2430-SDPs variants available.  There are
> - * quite a few more rate combinations which could be defined.
> - *
> - * When multiple values are defined the start up will try and choose
> - * the fastest one. If a 'fast' value is defined, then automatically,
> - * the /2 one should be included as it can be used.  Generally having
> - * more than one fast set does not make sense, as static timings need
> - * to be changed to change the set.  The exception is the bypass
> - * setting which is available for low power bypass.
> - *
> - * Note: This table needs to be sorted, fastest to slowest.
> - */
> -const struct prcm_config omap2430_rate_table[] = {
> -	/* PRCM #4 - ratio2 (ES2.1) - FAST */
> -	{S13M, S798M, S399M, R2_CM_CLKSEL_MPU_VAL,		/* 399MHz ARM */
> -		R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL,
> -		R2_CM_CLKSEL1_CORE_VAL, M4_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, R2_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #2 - ratio1 (ES2) - FAST */
> -	{S13M, S658M, S329M, R1_CM_CLKSEL_MPU_VAL,		/* 330MHz ARM */
> -		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
> -		R1_CM_CLKSEL1_CORE_VAL, M2_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_165MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #5a - ratio1 - FAST */
> -	{S13M, S532M, S266M, R1_CM_CLKSEL_MPU_VAL,		/* 266MHz ARM */
> -		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
> -		R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #5b - ratio1 - FAST */
> -	{S13M, S400M, S200M, R1_CM_CLKSEL_MPU_VAL,		/* 200MHz ARM */
> -		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
> -		R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, R1_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_100MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #4 - ratio1 (ES2.1) - SLOW */
> -	{S13M, S399M, S199M, R2_CM_CLKSEL_MPU_VAL,		/* 200MHz ARM */
> -		R2_CM_CLKSEL_DSP_VAL, R2_CM_CLKSEL_GFX_VAL,
> -		R2_CM_CLKSEL1_CORE_VAL, M4_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_1x_VAL, R2_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #2 - ratio1 (ES2) - SLOW */
> -	{S13M, S329M, S164M, R1_CM_CLKSEL_MPU_VAL,		/* 165MHz ARM */
> -		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
> -		R1_CM_CLKSEL1_CORE_VAL, M2_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_165MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #5a - ratio1 - SLOW */
> -	{S13M, S266M, S133M, R1_CM_CLKSEL_MPU_VAL,		/* 133MHz ARM */
> -		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
> -		R1_CM_CLKSEL1_CORE_VAL, M5A_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_133MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM #5b - ratio1 - SLOW*/
> -	{S13M, S200M, S100M, R1_CM_CLKSEL_MPU_VAL,		/* 100MHz ARM */
> -		R1_CM_CLKSEL_DSP_VAL, R1_CM_CLKSEL_GFX_VAL,
> -		R1_CM_CLKSEL1_CORE_VAL, M5B_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_1x_VAL, R1_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_100MHz,
> -		RATE_IN_243X},
> -
> -	/* PRCM-boot/bypass */
> -	{S13M, S13M, S13M, RB_CM_CLKSEL_MPU_VAL,		/* 13MHz */
> -		RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL,
> -		RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_13_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_BYPASS,
> -		RATE_IN_243X},
> -
> -	/* PRCM-boot/bypass */
> -	{S12M, S12M, S12M, RB_CM_CLKSEL_MPU_VAL,		/* 12MHz */
> -		RB_CM_CLKSEL_DSP_VAL, RB_CM_CLKSEL_GFX_VAL,
> -		RB_CM_CLKSEL1_CORE_VAL, MB_CM_CLKSEL1_PLL_12_VAL,
> -		MX_CLKSEL2_PLL_2x_VAL, RB_CM_CLKSEL_MDM_VAL,
> -		SDRC_RFR_CTRL_BYPASS,
> -		RATE_IN_243X},
> -
> -	{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
> -};
> diff --git a/arch/arm/mach-omap2/opp2xxx.h b/arch/arm/mach-omap2/opp2xxx.h
> deleted file mode 100644
> index a451182cdc02..000000000000
> --- a/arch/arm/mach-omap2/opp2xxx.h
> +++ /dev/null
> @@ -1,430 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/*
> - * opp2xxx.h - macros for old-style OMAP2xxx "OPP" definitions
> - *
> - * Copyright (C) 2005-2009 Texas Instruments, Inc.
> - * Copyright (C) 2004-2009 Nokia Corporation
> - *
> - * Richard Woodruff <r-woodruff2@ti.com>
> - *
> - * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
> - * These configurations are characterized by voltage and speed for clocks.
> - * The device is only validated for certain combinations. One way to express
> - * these combinations is via the 'ratio's' which the clocks operate with
> - * respect to each other. These ratio sets are for a given voltage/DPLL
> - * setting. All configurations can be described by a DPLL setting and a ratio
> - * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
> - *
> - * 2430 differs from 2420 in that there are no more phase synchronizers used.
> - * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
> - * 2430 (iva2.1, NOdsp, mdm)
> - *
> - * XXX Missing voltage data.
> - *
> - * THe format described in this file is deprecated.  Once a reasonable
> - * OPP API exists, the data in this file should be converted to use it.
> - *
> - * This is technically part of the OMAP2xxx clock code.
> - */
> -
> -#ifndef __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
> -#define __ARCH_ARM_MACH_OMAP2_OPP2XXX_H
> -
> -/**
> - * struct prcm_config - define clock rates on a per-OPP basis (24xx)
> - *
> - * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated.
> - * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,CM_CLKSEL_DSP
> - * CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL CM_CLKSEL2_PLL, CM_CLKSEL_MDM
> - *
> - * This is deprecated.  As soon as we have a decent OPP API, we should
> - * move all this stuff to it.
> - */
> -struct prcm_config {
> -	unsigned long xtal_speed;	/* crystal rate */
> -	unsigned long dpll_speed;	/* dpll: out*xtal*M/(N-1)table_recalc */
> -	unsigned long mpu_speed;	/* speed of MPU */
> -	unsigned long cm_clksel_mpu;	/* mpu divider */
> -	unsigned long cm_clksel_dsp;	/* dsp+iva1 div(2420), iva2.1(2430) */
> -	unsigned long cm_clksel_gfx;	/* gfx dividers */
> -	unsigned long cm_clksel1_core;	/* major subsystem dividers */
> -	unsigned long cm_clksel1_pll;	/* m,n */
> -	unsigned long cm_clksel2_pll;	/* dpllx1 or x2 out */
> -	unsigned long cm_clksel_mdm;	/* modem dividers 2430 only */
> -	unsigned long base_sdrc_rfr;	/* base refresh timing for a set */
> -	unsigned short flags;
> -};
> -
> -
> -/* Core fields for cm_clksel, not ratio governed */
> -#define RX_CLKSEL_DSS1			(0x10 << 8)
> -#define RX_CLKSEL_DSS2			(0x0 << 13)
> -#define RX_CLKSEL_SSI			(0x5 << 20)
> -
> -/*-------------------------------------------------------------------------
> - * Voltage/DPLL ratios
> - *-------------------------------------------------------------------------*/
> -
> -/* 2430 Ratio's, 2430-Ratio Config 1 */
> -#define R1_CLKSEL_L3			(4 << 0)
> -#define R1_CLKSEL_L4			(2 << 5)
> -#define R1_CLKSEL_USB			(4 << 25)
> -#define R1_CM_CLKSEL1_CORE_VAL		(R1_CLKSEL_USB | RX_CLKSEL_SSI | \
> -					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
> -					 R1_CLKSEL_L4 | R1_CLKSEL_L3)
> -#define R1_CLKSEL_MPU			(2 << 0)
> -#define R1_CM_CLKSEL_MPU_VAL		R1_CLKSEL_MPU
> -#define R1_CLKSEL_DSP			(2 << 0)
> -#define R1_CLKSEL_DSP_IF		(2 << 5)
> -#define R1_CM_CLKSEL_DSP_VAL		(R1_CLKSEL_DSP | R1_CLKSEL_DSP_IF)
> -#define R1_CLKSEL_GFX			(2 << 0)
> -#define R1_CM_CLKSEL_GFX_VAL		R1_CLKSEL_GFX
> -#define R1_CLKSEL_MDM			(4 << 0)
> -#define R1_CM_CLKSEL_MDM_VAL		R1_CLKSEL_MDM
> -
> -/* 2430-Ratio Config 2 */
> -#define R2_CLKSEL_L3			(6 << 0)
> -#define R2_CLKSEL_L4			(2 << 5)
> -#define R2_CLKSEL_USB			(2 << 25)
> -#define R2_CM_CLKSEL1_CORE_VAL		(R2_CLKSEL_USB | RX_CLKSEL_SSI | \
> -					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
> -					 R2_CLKSEL_L4 | R2_CLKSEL_L3)
> -#define R2_CLKSEL_MPU			(2 << 0)
> -#define R2_CM_CLKSEL_MPU_VAL		R2_CLKSEL_MPU
> -#define R2_CLKSEL_DSP			(2 << 0)
> -#define R2_CLKSEL_DSP_IF		(3 << 5)
> -#define R2_CM_CLKSEL_DSP_VAL		(R2_CLKSEL_DSP | R2_CLKSEL_DSP_IF)
> -#define R2_CLKSEL_GFX			(2 << 0)
> -#define R2_CM_CLKSEL_GFX_VAL		R2_CLKSEL_GFX
> -#define R2_CLKSEL_MDM			(6 << 0)
> -#define R2_CM_CLKSEL_MDM_VAL		R2_CLKSEL_MDM
> -
> -/* 2430-Ratio Bootm (BYPASS) */
> -#define RB_CLKSEL_L3			(1 << 0)
> -#define RB_CLKSEL_L4			(1 << 5)
> -#define RB_CLKSEL_USB			(1 << 25)
> -#define RB_CM_CLKSEL1_CORE_VAL		(RB_CLKSEL_USB | RX_CLKSEL_SSI | \
> -					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
> -					 RB_CLKSEL_L4 | RB_CLKSEL_L3)
> -#define RB_CLKSEL_MPU			(1 << 0)
> -#define RB_CM_CLKSEL_MPU_VAL		RB_CLKSEL_MPU
> -#define RB_CLKSEL_DSP			(1 << 0)
> -#define RB_CLKSEL_DSP_IF		(1 << 5)
> -#define RB_CM_CLKSEL_DSP_VAL		(RB_CLKSEL_DSP | RB_CLKSEL_DSP_IF)
> -#define RB_CLKSEL_GFX			(1 << 0)
> -#define RB_CM_CLKSEL_GFX_VAL		RB_CLKSEL_GFX
> -#define RB_CLKSEL_MDM			(1 << 0)
> -#define RB_CM_CLKSEL_MDM_VAL		RB_CLKSEL_MDM
> -
> -/* 2420 Ratio Equivalents */
> -#define RXX_CLKSEL_VLYNQ		(0x12 << 15)
> -#define RXX_CLKSEL_SSI			(0x8 << 20)
> -
> -/* 2420-PRCM III 532MHz core */
> -#define RIII_CLKSEL_L3			(4 << 0)	/* 133MHz */
> -#define RIII_CLKSEL_L4			(2 << 5)	/* 66.5MHz */
> -#define RIII_CLKSEL_USB			(4 << 25)	/* 33.25MHz */
> -#define RIII_CM_CLKSEL1_CORE_VAL	(RIII_CLKSEL_USB | RXX_CLKSEL_SSI | \
> -					 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
> -					 RX_CLKSEL_DSS1 | RIII_CLKSEL_L4 | \
> -					 RIII_CLKSEL_L3)
> -#define RIII_CLKSEL_MPU			(2 << 0)	/* 266MHz */
> -#define RIII_CM_CLKSEL_MPU_VAL		RIII_CLKSEL_MPU
> -#define RIII_CLKSEL_DSP			(3 << 0)	/* c5x - 177.3MHz */
> -#define RIII_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 88.67MHz */
> -#define RIII_SYNC_DSP			(1 << 7)	/* Enable sync */
> -#define RIII_CLKSEL_IVA			(6 << 8)	/* iva1 - 88.67MHz */
> -#define RIII_SYNC_IVA			(1 << 13)	/* Enable sync */
> -#define RIII_CM_CLKSEL_DSP_VAL		(RIII_SYNC_IVA | RIII_CLKSEL_IVA | \
> -					 RIII_SYNC_DSP | RIII_CLKSEL_DSP_IF | \
> -					 RIII_CLKSEL_DSP)
> -#define RIII_CLKSEL_GFX			(2 << 0)	/* 66.5MHz */
> -#define RIII_CM_CLKSEL_GFX_VAL		RIII_CLKSEL_GFX
> -
> -/* 2420-PRCM II 600MHz core */
> -#define RII_CLKSEL_L3			(6 << 0)	/* 100MHz */
> -#define RII_CLKSEL_L4			(2 << 5)	/* 50MHz */
> -#define RII_CLKSEL_USB			(2 << 25)	/* 50MHz */
> -#define RII_CM_CLKSEL1_CORE_VAL		(RII_CLKSEL_USB | RXX_CLKSEL_SSI | \
> -					 RXX_CLKSEL_VLYNQ | RX_CLKSEL_DSS2 | \
> -					 RX_CLKSEL_DSS1 | RII_CLKSEL_L4 | \
> -					 RII_CLKSEL_L3)
> -#define RII_CLKSEL_MPU			(2 << 0)	/* 300MHz */
> -#define RII_CM_CLKSEL_MPU_VAL		RII_CLKSEL_MPU
> -#define RII_CLKSEL_DSP			(3 << 0)	/* c5x - 200MHz */
> -#define RII_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 100MHz */
> -#define RII_SYNC_DSP			(0 << 7)	/* Bypass sync */
> -#define RII_CLKSEL_IVA			(3 << 8)	/* iva1 - 200MHz */
> -#define RII_SYNC_IVA			(0 << 13)	/* Bypass sync */
> -#define RII_CM_CLKSEL_DSP_VAL		(RII_SYNC_IVA | RII_CLKSEL_IVA | \
> -					 RII_SYNC_DSP | RII_CLKSEL_DSP_IF | \
> -					 RII_CLKSEL_DSP)
> -#define RII_CLKSEL_GFX			(2 << 0)	/* 50MHz */
> -#define RII_CM_CLKSEL_GFX_VAL		RII_CLKSEL_GFX
> -
> -/* 2420-PRCM I 660MHz core */
> -#define RI_CLKSEL_L3			(4 << 0)	/* 165MHz */
> -#define RI_CLKSEL_L4			(2 << 5)	/* 82.5MHz */
> -#define RI_CLKSEL_USB			(4 << 25)	/* 41.25MHz */
> -#define RI_CM_CLKSEL1_CORE_VAL		(RI_CLKSEL_USB |		\
> -					 RXX_CLKSEL_SSI | RXX_CLKSEL_VLYNQ | \
> -					 RX_CLKSEL_DSS2 | RX_CLKSEL_DSS1 | \
> -					 RI_CLKSEL_L4 | RI_CLKSEL_L3)
> -#define RI_CLKSEL_MPU			(2 << 0)	/* 330MHz */
> -#define RI_CM_CLKSEL_MPU_VAL		RI_CLKSEL_MPU
> -#define RI_CLKSEL_DSP			(3 << 0)	/* c5x - 220MHz */
> -#define RI_CLKSEL_DSP_IF		(2 << 5)	/* c5x - 110MHz */
> -#define RI_SYNC_DSP			(1 << 7)	/* Activate sync */
> -#define RI_CLKSEL_IVA			(4 << 8)	/* iva1 - 165MHz */
> -#define RI_SYNC_IVA			(0 << 13)	/* Bypass sync */
> -#define RI_CM_CLKSEL_DSP_VAL		(RI_SYNC_IVA | RI_CLKSEL_IVA |	\
> -					 RI_SYNC_DSP | RI_CLKSEL_DSP_IF | \
> -					 RI_CLKSEL_DSP)
> -#define RI_CLKSEL_GFX			(1 << 0)	/* 165MHz */
> -#define RI_CM_CLKSEL_GFX_VAL		RI_CLKSEL_GFX
> -
> -/* 2420-PRCM VII (boot) */
> -#define RVII_CLKSEL_L3			(1 << 0)
> -#define RVII_CLKSEL_L4			(1 << 5)
> -#define RVII_CLKSEL_DSS1		(1 << 8)
> -#define RVII_CLKSEL_DSS2		(0 << 13)
> -#define RVII_CLKSEL_VLYNQ		(1 << 15)
> -#define RVII_CLKSEL_SSI			(1 << 20)
> -#define RVII_CLKSEL_USB			(1 << 25)
> -
> -#define RVII_CM_CLKSEL1_CORE_VAL	(RVII_CLKSEL_USB | RVII_CLKSEL_SSI | \
> -					 RVII_CLKSEL_VLYNQ | \
> -					 RVII_CLKSEL_DSS2 | RVII_CLKSEL_DSS1 | \
> -					 RVII_CLKSEL_L4 | RVII_CLKSEL_L3)
> -
> -#define RVII_CLKSEL_MPU			(1 << 0) /* all divide by 1 */
> -#define RVII_CM_CLKSEL_MPU_VAL		RVII_CLKSEL_MPU
> -
> -#define RVII_CLKSEL_DSP			(1 << 0)
> -#define RVII_CLKSEL_DSP_IF		(1 << 5)
> -#define RVII_SYNC_DSP			(0 << 7)
> -#define RVII_CLKSEL_IVA			(1 << 8)
> -#define RVII_SYNC_IVA			(0 << 13)
> -#define RVII_CM_CLKSEL_DSP_VAL		(RVII_SYNC_IVA | RVII_CLKSEL_IVA | \
> -					 RVII_SYNC_DSP | RVII_CLKSEL_DSP_IF | \
> -					 RVII_CLKSEL_DSP)
> -
> -#define RVII_CLKSEL_GFX			(1 << 0)
> -#define RVII_CM_CLKSEL_GFX_VAL		RVII_CLKSEL_GFX
> -
> -/*-------------------------------------------------------------------------
> - * 2430 Target modes: Along with each configuration the CPU has several
> - * modes which goes along with them. Modes mainly are the addition of
> - * describe DPLL combinations to go along with a ratio.
> - *-------------------------------------------------------------------------*/
> -
> -/* Hardware governed */
> -#define MX_48M_SRC			(0 << 3)
> -#define MX_54M_SRC			(0 << 5)
> -#define MX_APLLS_CLIKIN_12		(3 << 23)
> -#define MX_APLLS_CLIKIN_13		(2 << 23)
> -#define MX_APLLS_CLIKIN_19_2		(0 << 23)
> -
> -/*
> - * 2430 - standalone, 2*ref*M/(n+1), M/N is for exactness not relock speed
> - * #5a	(ratio1) baseport-target, target DPLL = 266*2 = 532MHz
> - */
> -#define M5A_DPLL_MULT_12		(133 << 12)
> -#define M5A_DPLL_DIV_12			(5 << 8)
> -#define M5A_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M5A_DPLL_DIV_12 | M5A_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -#define M5A_DPLL_MULT_13		(61 << 12)
> -#define M5A_DPLL_DIV_13			(2 << 8)
> -#define M5A_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M5A_DPLL_DIV_13 | M5A_DPLL_MULT_13 | \
> -					 MX_APLLS_CLIKIN_13)
> -#define M5A_DPLL_MULT_19		(55 << 12)
> -#define M5A_DPLL_DIV_19			(3 << 8)
> -#define M5A_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M5A_DPLL_DIV_19 | M5A_DPLL_MULT_19 | \
> -					 MX_APLLS_CLIKIN_19_2)
> -/* #5b	(ratio1) target DPLL = 200*2 = 400MHz */
> -#define M5B_DPLL_MULT_12		(50 << 12)
> -#define M5B_DPLL_DIV_12			(2 << 8)
> -#define M5B_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M5B_DPLL_DIV_12 | M5B_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -#define M5B_DPLL_MULT_13		(200 << 12)
> -#define M5B_DPLL_DIV_13			(12 << 8)
> -
> -#define M5B_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M5B_DPLL_DIV_13 | M5B_DPLL_MULT_13 | \
> -					 MX_APLLS_CLIKIN_13)
> -#define M5B_DPLL_MULT_19		(125 << 12)
> -#define M5B_DPLL_DIV_19			(31 << 8)
> -#define M5B_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M5B_DPLL_DIV_19 | M5B_DPLL_MULT_19 | \
> -					 MX_APLLS_CLIKIN_19_2)
> -/*
> - * #4	(ratio2), DPLL = 399*2 = 798MHz, L3=133MHz
> - */
> -#define M4_DPLL_MULT_12			(133 << 12)
> -#define M4_DPLL_DIV_12			(3 << 8)
> -#define M4_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M4_DPLL_DIV_12 | M4_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -
> -#define M4_DPLL_MULT_13			(399 << 12)
> -#define M4_DPLL_DIV_13			(12 << 8)
> -#define M4_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M4_DPLL_DIV_13 | M4_DPLL_MULT_13 | \
> -					 MX_APLLS_CLIKIN_13)
> -
> -#define M4_DPLL_MULT_19			(145 << 12)
> -#define M4_DPLL_DIV_19			(6 << 8)
> -#define M4_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M4_DPLL_DIV_19 | M4_DPLL_MULT_19 | \
> -					 MX_APLLS_CLIKIN_19_2)
> -
> -/*
> - * #3	(ratio2) baseport-target, target DPLL = 330*2 = 660MHz
> - */
> -#define M3_DPLL_MULT_12			(55 << 12)
> -#define M3_DPLL_DIV_12			(1 << 8)
> -#define M3_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M3_DPLL_DIV_12 | M3_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -#define M3_DPLL_MULT_13			(76 << 12)
> -#define M3_DPLL_DIV_13			(2 << 8)
> -#define M3_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M3_DPLL_DIV_13 | M3_DPLL_MULT_13 | \
> -					 MX_APLLS_CLIKIN_13)
> -#define M3_DPLL_MULT_19			(17 << 12)
> -#define M3_DPLL_DIV_19			(0 << 8)
> -#define M3_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M3_DPLL_DIV_19 | M3_DPLL_MULT_19 | \
> -					 MX_APLLS_CLIKIN_19_2)
> -
> -/*
> - * #2   (ratio1) DPLL = 330*2 = 660MHz, L3=165MHz
> - */
> -#define M2_DPLL_MULT_12		        (55 << 12)
> -#define M2_DPLL_DIV_12		        (1 << 8)
> -#define M2_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M2_DPLL_DIV_12 | M2_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -
> -/* Speed changes - Used 658.7MHz instead of 660MHz for LP-Refresh M=76 N=2,
> - * relock time issue */
> -/* Core frequency changed from 330/165 to 329/164 MHz*/
> -#define M2_DPLL_MULT_13		        (76 << 12)
> -#define M2_DPLL_DIV_13		        (2 << 8)
> -#define M2_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M2_DPLL_DIV_13 | M2_DPLL_MULT_13 | \
> -					 MX_APLLS_CLIKIN_13)
> -
> -#define M2_DPLL_MULT_19		        (17 << 12)
> -#define M2_DPLL_DIV_19		        (0 << 8)
> -#define M2_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 M2_DPLL_DIV_19 | M2_DPLL_MULT_19 | \
> -					 MX_APLLS_CLIKIN_19_2)
> -
> -/* boot (boot) */
> -#define MB_DPLL_MULT			(1 << 12)
> -#define MB_DPLL_DIV			(0 << 8)
> -#define MB_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 MB_DPLL_DIV | MB_DPLL_MULT | \
> -					 MX_APLLS_CLIKIN_12)
> -
> -#define MB_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 MB_DPLL_DIV | MB_DPLL_MULT | \
> -					 MX_APLLS_CLIKIN_13)
> -
> -#define MB_CM_CLKSEL1_PLL_19_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 MB_DPLL_DIV | MB_DPLL_MULT | \
> -					 MX_APLLS_CLIKIN_19)
> -
> -/*
> - * 2430 - chassis (sedna)
> - * 165 (ratio1) same as above #2
> - * 150 (ratio1)
> - * 133 (ratio2) same as above #4
> - * 110 (ratio2) same as above #3
> - * 104 (ratio2)
> - * boot (boot)
> - */
> -
> -/* PRCM I target DPLL = 2*330MHz = 660MHz */
> -#define MI_DPLL_MULT_12			(55 << 12)
> -#define MI_DPLL_DIV_12			(1 << 8)
> -#define MI_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC | \
> -					 MI_DPLL_DIV_12 | MI_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -
> -/*
> - * 2420 Equivalent - mode registers
> - * PRCM II , target DPLL = 2*300MHz = 600MHz
> - */
> -#define MII_DPLL_MULT_12		(50 << 12)
> -#define MII_DPLL_DIV_12			(1 << 8)
> -#define MII_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC |	\
> -					 MII_DPLL_DIV_12 | MII_DPLL_MULT_12 | \
> -					 MX_APLLS_CLIKIN_12)
> -#define MII_DPLL_MULT_13		(300 << 12)
> -#define MII_DPLL_DIV_13			(12 << 8)
> -#define MII_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC |	\
> -					 MII_DPLL_DIV_13 | MII_DPLL_MULT_13 | \
> -					 MX_APLLS_CLIKIN_13)
> -
> -/* PRCM III target DPLL = 2*266 = 532MHz*/
> -#define MIII_DPLL_MULT_12		(133 << 12)
> -#define MIII_DPLL_DIV_12		(5 << 8)
> -#define MIII_CM_CLKSEL1_PLL_12_VAL	(MX_48M_SRC | MX_54M_SRC |	\
> -					 MIII_DPLL_DIV_12 | \
> -					 MIII_DPLL_MULT_12 | MX_APLLS_CLIKIN_12)
> -#define MIII_DPLL_MULT_13		(266 << 12)
> -#define MIII_DPLL_DIV_13		(12 << 8)
> -#define MIII_CM_CLKSEL1_PLL_13_VAL	(MX_48M_SRC | MX_54M_SRC |	\
> -					 MIII_DPLL_DIV_13 | \
> -					 MIII_DPLL_MULT_13 | MX_APLLS_CLIKIN_13)
> -
> -/* PRCM VII (boot bypass) */
> -#define MVII_CM_CLKSEL1_PLL_12_VAL	MB_CM_CLKSEL1_PLL_12_VAL
> -#define MVII_CM_CLKSEL1_PLL_13_VAL	MB_CM_CLKSEL1_PLL_13_VAL
> -
> -/* High and low operation value */
> -#define MX_CLKSEL2_PLL_2x_VAL		(2 << 0)
> -#define MX_CLKSEL2_PLL_1x_VAL		(1 << 0)
> -
> -/* MPU speed defines */
> -#define S12M	12000000
> -#define S13M	13000000
> -#define S19M	19200000
> -#define S26M	26000000
> -#define S100M	100000000
> -#define S133M	133000000
> -#define S150M	150000000
> -#define S164M	164000000
> -#define S165M	165000000
> -#define S199M	199000000
> -#define S200M	200000000
> -#define S266M	266000000
> -#define S300M	300000000
> -#define S329M	329000000
> -#define S330M	330000000
> -#define S399M	399000000
> -#define S400M	400000000
> -#define S532M	532000000
> -#define S600M	600000000
> -#define S658M	658000000
> -#define S660M	660000000
> -#define S798M	798000000
> -
> -
> -extern const struct prcm_config omap2420_rate_table[];
> -
> -#ifdef CONFIG_SOC_OMAP2430
> -extern const struct prcm_config omap2430_rate_table[];
> -#else
> -#define omap2430_rate_table	NULL
> -#endif
> -extern const struct prcm_config *rate_table;
> -extern const struct prcm_config *curr_prcm_set;
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
> index b947bacf23a3..8b8021b297aa 100644
> --- a/arch/arm/mach-omap2/pdata-quirks.c
> +++ b/arch/arm/mach-omap2/pdata-quirks.c
> @@ -27,7 +27,6 @@
>   
>   #include "clockdomain.h"
>   #include "common.h"
> -#include "common-board-devices.h"
>   #include "control.h"
>   #include "omap_device.h"
>   #include "omap-secure.h"
> @@ -42,15 +41,6 @@ struct pdata_init {
>   
>   static struct of_dev_auxdata omap_auxdata_lookup[];
>   
> -#ifdef CONFIG_MACH_NOKIA_N8X0
> -static void __init omap2420_n8x0_legacy_init(void)
> -{
> -	omap_auxdata_lookup[0].platform_data = n8x0_legacy_init();
> -}
> -#else
> -#define omap2420_n8x0_legacy_init	NULL
> -#endif
> -
>   #ifdef CONFIG_ARCH_OMAP3
>   /*
>    * Configures GPIOs 126, 127 and 129 to 1.8V mode instead of 3.0V
> @@ -431,26 +421,9 @@ static void __init omap3_mcbsp_init(void)
>   static void __init omap3_mcbsp_init(void) {}
>   #endif
>   
> -/*
> - * Few boards still need auxdata populated before we populate
> - * the dev entries in of_platform_populate().
> - */
> -static struct pdata_init auxdata_quirks[] __initdata = {
> -#ifdef CONFIG_SOC_OMAP2420
> -	{ "nokia,n800", omap2420_n8x0_legacy_init, },
> -	{ "nokia,n810", omap2420_n8x0_legacy_init, },
> -	{ "nokia,n810-wimax", omap2420_n8x0_legacy_init, },
> -#endif
> -	{ /* sentinel */ },
> -};
> -
>   struct omap_sr_data __maybe_unused omap_sr_pdata[OMAP_SR_NR];
>   
>   static struct of_dev_auxdata omap_auxdata_lookup[] = {
> -#ifdef CONFIG_MACH_NOKIA_N8X0
> -	OF_DEV_AUXDATA("ti,omap2420-mmc", 0x4809c000, "mmci-omap.0", NULL),
> -	OF_DEV_AUXDATA("menelaus", 0x72, "1-0072", &n8x0_menelaus_platform_data),
> -#endif
>   #ifdef CONFIG_ARCH_OMAP3
>   	OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d000000, "5d000000.mmu",
>   		       &omap3_iommu_pdata),
> @@ -560,13 +533,11 @@ void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
>   	 * We still need this for omap2420 and omap3 PM to work, others are
>   	 * using drivers/misc/sram.c already.
>   	 */
> -	if (of_machine_is_compatible("ti,omap2420") ||
> -	    of_machine_is_compatible("ti,omap3"))
> +	if (IS_ENABLED(CONFIG_ARCH_OMAP3) &&
> +	    of_machine_is_compatible("ti,omap3")) {
>   		omap_sdrc_init(NULL, NULL);
> -
> -	if (of_machine_is_compatible("ti,omap3"))
>   		omap3_mcbsp_init();
> -	pdata_quirks_check(auxdata_quirks);
> +	}
>   
>   	pdata_quirks_init_clocks(omap_dt_match_table);
>   
> diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
> index f97ff93f2fb4..5751b85e9ffb 100644
> --- a/arch/arm/mach-omap2/pm.h
> +++ b/arch/arm/mach-omap2/pm.h
> @@ -43,11 +43,6 @@ extern void pm_dbg_update_time(struct powerdomain *pwrdm, int prev);
>   #define pm_dbg_update_time(pwrdm, prev) do {} while (0);
>   #endif /* CONFIG_PM_DEBUG */
>   
> -/* 24xx */
> -extern void omap24xx_cpu_suspend(u32 dll_ctrl, void __iomem *sdrc_dlla_ctrl,
> -					void __iomem *sdrc_power);
> -extern unsigned int omap24xx_cpu_suspend_sz;
> -
>   /* 3xxx */
>   extern void omap34xx_cpu_suspend(int save_state);
>   
> diff --git a/arch/arm/mach-omap2/powerdomain.h b/arch/arm/mach-omap2/powerdomain.h
> index fbc89999460b..eaf6d1104dc2 100644
> --- a/arch/arm/mach-omap2/powerdomain.h
> +++ b/arch/arm/mach-omap2/powerdomain.h
> @@ -244,8 +244,6 @@ int pwrdm_post_transition(struct powerdomain *pwrdm);
>   
>   extern int omap_set_pwrdm_state(struct powerdomain *pwrdm, u8 state);
>   
> -extern void omap242x_powerdomains_init(void);
> -extern void omap243x_powerdomains_init(void);
>   extern void omap3xxx_powerdomains_init(void);
>   extern void am33xx_powerdomains_init(void);
>   extern void omap44xx_powerdomains_init(void);
> @@ -253,7 +251,6 @@ extern void omap54xx_powerdomains_init(void);
>   extern void dra7xx_powerdomains_init(void);
>   void am43xx_powerdomains_init(void);
>   
> -extern struct pwrdm_ops omap2_pwrdm_operations;
>   extern struct pwrdm_ops omap3_pwrdm_operations;
>   extern struct pwrdm_ops am33xx_pwrdm_operations;
>   extern struct pwrdm_ops omap4_pwrdm_operations;
> diff --git a/arch/arm/mach-omap2/powerdomains2xxx_data.c b/arch/arm/mach-omap2/powerdomains2xxx_data.c
> deleted file mode 100644
> index fa259adbdc61..000000000000
> --- a/arch/arm/mach-omap2/powerdomains2xxx_data.c
> +++ /dev/null
> @@ -1,134 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * OMAP2XXX powerdomain definitions
> - *
> - * Copyright (C) 2007-2008, 2011 Texas Instruments, Inc.
> - * Copyright (C) 2007-2011 Nokia Corporation
> - *
> - * Paul Walmsley, Jouni Högander
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -
> -#include "soc.h"
> -#include "powerdomain.h"
> -#include "powerdomains2xxx_3xxx_data.h"
> -
> -#include "prcm-common.h"
> -#include "prm2xxx_3xxx.h"
> -#include "prm-regbits-24xx.h"
> -
> -/* 24XX powerdomains and dependencies */
> -
> -/* Powerdomains */
> -
> -static struct powerdomain dsp_pwrdm = {
> -	.name		  = "dsp_pwrdm",
> -	.prcm_offs	  = OMAP24XX_DSP_MOD,
> -	.pwrsts		  = PWRSTS_OFF_RET_ON,
> -	.pwrsts_logic_ret = PWRSTS_RET,
> -	.banks		  = 1,
> -	.pwrsts_mem_ret	  = {
> -		[0] = PWRSTS_RET,
> -	},
> -	.pwrsts_mem_on	  = {
> -		[0] = PWRSTS_ON,
> -	},
> -	.voltdm		  = { .name = "core" },
> -};
> -
> -static struct powerdomain mpu_24xx_pwrdm = {
> -	.name		  = "mpu_pwrdm",
> -	.prcm_offs	  = MPU_MOD,
> -	.pwrsts		  = PWRSTS_OFF_RET_ON,
> -	.pwrsts_logic_ret = PWRSTS_OFF_RET,
> -	.banks		  = 1,
> -	.pwrsts_mem_ret	  = {
> -		[0] = PWRSTS_RET,
> -	},
> -	.pwrsts_mem_on	  = {
> -		[0] = PWRSTS_ON,
> -	},
> -	.voltdm		  = { .name = "core" },
> -};
> -
> -static struct powerdomain core_24xx_pwrdm = {
> -	.name		  = "core_pwrdm",
> -	.prcm_offs	  = CORE_MOD,
> -	.pwrsts		  = PWRSTS_OFF_RET_ON,
> -	.pwrsts_logic_ret = PWRSTS_RET,
> -	.banks		  = 3,
> -	.pwrsts_mem_ret	  = {
> -		[0] = PWRSTS_OFF_RET,	 /* MEM1RETSTATE */
> -		[1] = PWRSTS_OFF_RET,	 /* MEM2RETSTATE */
> -		[2] = PWRSTS_OFF_RET,	 /* MEM3RETSTATE */
> -	},
> -	.pwrsts_mem_on	  = {
> -		[0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
> -		[1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
> -		[2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */
> -	},
> -	.voltdm		  = { .name = "core" },
> -};
> -
> -
> -/*
> - * 2430-specific powerdomains
> - */
> -
> -/* XXX 2430 KILLDOMAINWKUP bit?  No current users apparently */
> -
> -static struct powerdomain mdm_pwrdm = {
> -	.name		  = "mdm_pwrdm",
> -	.prcm_offs	  = OMAP2430_MDM_MOD,
> -	.pwrsts		  = PWRSTS_OFF_RET_ON,
> -	.pwrsts_logic_ret = PWRSTS_RET,
> -	.banks		  = 1,
> -	.pwrsts_mem_ret	  = {
> -		[0] = PWRSTS_RET, /* MEMRETSTATE */
> -	},
> -	.pwrsts_mem_on	  = {
> -		[0] = PWRSTS_ON,  /* MEMONSTATE */
> -	},
> -	.voltdm		  = { .name = "core" },
> -};
> -
> -/*
> - *
> - */
> -
> -static struct powerdomain *powerdomains_omap24xx[] __initdata = {
> -	&wkup_omap2_pwrdm,
> -	&gfx_omap2_pwrdm,
> -	&dsp_pwrdm,
> -	&mpu_24xx_pwrdm,
> -	&core_24xx_pwrdm,
> -	NULL
> -};
> -
> -static struct powerdomain *powerdomains_omap2430[] __initdata = {
> -	&mdm_pwrdm,
> -	NULL
> -};
> -
> -void __init omap242x_powerdomains_init(void)
> -{
> -	if (!cpu_is_omap2420())
> -		return;
> -
> -	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
> -	pwrdm_register_pwrdms(powerdomains_omap24xx);
> -	pwrdm_complete_init();
> -}
> -
> -void __init omap243x_powerdomains_init(void)
> -{
> -	if (!cpu_is_omap2430())
> -		return;
> -
> -	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
> -	pwrdm_register_pwrdms(powerdomains_omap24xx);
> -	pwrdm_register_pwrdms(powerdomains_omap2430);
> -	pwrdm_complete_init();
> -}
> diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h
> index 5e3544a63526..e326bb6a09db 100644
> --- a/arch/arm/mach-omap2/prcm-common.h
> +++ b/arch/arm/mach-omap2/prcm-common.h
> @@ -27,12 +27,6 @@
>   #define PLL_MOD						0x500
>   
>   
> -/* Chip-specific module offsets */
> -#define OMAP24XX_GR_MOD					OCP_MOD
> -#define OMAP24XX_DSP_MOD				0x800
> -
> -#define OMAP2430_MDM_MOD				0xc00
> -
>   /* IVA2 module is < base on 3430 */
>   #define OMAP3430_IVA2_MOD				-0x800
>   #define OMAP3430ES2_SGX_MOD				GFX_MOD
> @@ -63,147 +57,6 @@
>   #define TI816X_PRM_SGX_MOD				0x0f00
>   #define TI81XX_PRM_ALWON_MOD			0x1800
>   
> -/* 24XX register bits shared between CM & PRM registers */
> -
> -/* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
> -#define OMAP2420_EN_MMC_SHIFT				26
> -#define OMAP2420_EN_MMC_MASK				(1 << 26)
> -#define OMAP24XX_EN_UART2_SHIFT				22
> -#define OMAP24XX_EN_UART2_MASK				(1 << 22)
> -#define OMAP24XX_EN_UART1_SHIFT				21
> -#define OMAP24XX_EN_UART1_MASK				(1 << 21)
> -#define OMAP24XX_EN_MCSPI2_SHIFT			18
> -#define OMAP24XX_EN_MCSPI2_MASK				(1 << 18)
> -#define OMAP24XX_EN_MCSPI1_SHIFT			17
> -#define OMAP24XX_EN_MCSPI1_MASK				(1 << 17)
> -#define OMAP24XX_EN_MCBSP2_SHIFT			16
> -#define OMAP24XX_EN_MCBSP2_MASK				(1 << 16)
> -#define OMAP24XX_EN_MCBSP1_SHIFT			15
> -#define OMAP24XX_EN_MCBSP1_MASK				(1 << 15)
> -#define OMAP24XX_EN_GPT12_SHIFT				14
> -#define OMAP24XX_EN_GPT12_MASK				(1 << 14)
> -#define OMAP24XX_EN_GPT11_SHIFT				13
> -#define OMAP24XX_EN_GPT11_MASK				(1 << 13)
> -#define OMAP24XX_EN_GPT10_SHIFT				12
> -#define OMAP24XX_EN_GPT10_MASK				(1 << 12)
> -#define OMAP24XX_EN_GPT9_SHIFT				11
> -#define OMAP24XX_EN_GPT9_MASK				(1 << 11)
> -#define OMAP24XX_EN_GPT8_SHIFT				10
> -#define OMAP24XX_EN_GPT8_MASK				(1 << 10)
> -#define OMAP24XX_EN_GPT7_SHIFT				9
> -#define OMAP24XX_EN_GPT7_MASK				(1 << 9)
> -#define OMAP24XX_EN_GPT6_SHIFT				8
> -#define OMAP24XX_EN_GPT6_MASK				(1 << 8)
> -#define OMAP24XX_EN_GPT5_SHIFT				7
> -#define OMAP24XX_EN_GPT5_MASK				(1 << 7)
> -#define OMAP24XX_EN_GPT4_SHIFT				6
> -#define OMAP24XX_EN_GPT4_MASK				(1 << 6)
> -#define OMAP24XX_EN_GPT3_SHIFT				5
> -#define OMAP24XX_EN_GPT3_MASK				(1 << 5)
> -#define OMAP24XX_EN_GPT2_SHIFT				4
> -#define OMAP24XX_EN_GPT2_MASK				(1 << 4)
> -#define OMAP2420_EN_VLYNQ_SHIFT				3
> -#define OMAP2420_EN_VLYNQ_MASK				(1 << 3)
> -
> -/* CM_FCLKEN2_CORE, CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
> -#define OMAP2430_EN_GPIO5_SHIFT				10
> -#define OMAP2430_EN_GPIO5_MASK				(1 << 10)
> -#define OMAP2430_EN_MCSPI3_SHIFT			9
> -#define OMAP2430_EN_MCSPI3_MASK				(1 << 9)
> -#define OMAP2430_EN_MMCHS2_SHIFT			8
> -#define OMAP2430_EN_MMCHS2_MASK				(1 << 8)
> -#define OMAP2430_EN_MMCHS1_SHIFT			7
> -#define OMAP2430_EN_MMCHS1_MASK				(1 << 7)
> -#define OMAP24XX_EN_UART3_SHIFT				2
> -#define OMAP24XX_EN_UART3_MASK				(1 << 2)
> -#define OMAP24XX_EN_USB_SHIFT				0
> -#define OMAP24XX_EN_USB_MASK				(1 << 0)
> -
> -/* CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
> -#define OMAP2430_EN_MDM_INTC_SHIFT			11
> -#define OMAP2430_EN_MDM_INTC_MASK			(1 << 11)
> -#define OMAP2430_EN_USBHS_SHIFT				6
> -#define OMAP2430_EN_USBHS_MASK				(1 << 6)
> -#define OMAP24XX_EN_GPMC_SHIFT				1
> -#define OMAP24XX_EN_GPMC_MASK				(1 << 1)
> -
> -/* CM_IDLEST1_CORE, PM_WKST1_CORE shared bits */
> -#define OMAP2420_ST_MMC_SHIFT				26
> -#define OMAP2420_ST_MMC_MASK				(1 << 26)
> -#define OMAP24XX_ST_UART2_SHIFT				22
> -#define OMAP24XX_ST_UART2_MASK				(1 << 22)
> -#define OMAP24XX_ST_UART1_SHIFT				21
> -#define OMAP24XX_ST_UART1_MASK				(1 << 21)
> -#define OMAP24XX_ST_MCSPI2_SHIFT			18
> -#define OMAP24XX_ST_MCSPI2_MASK				(1 << 18)
> -#define OMAP24XX_ST_MCSPI1_SHIFT			17
> -#define OMAP24XX_ST_MCSPI1_MASK				(1 << 17)
> -#define OMAP24XX_ST_MCBSP2_SHIFT			16
> -#define OMAP24XX_ST_MCBSP2_MASK				(1 << 16)
> -#define OMAP24XX_ST_MCBSP1_SHIFT			15
> -#define OMAP24XX_ST_MCBSP1_MASK				(1 << 15)
> -#define OMAP24XX_ST_GPT12_SHIFT				14
> -#define OMAP24XX_ST_GPT12_MASK				(1 << 14)
> -#define OMAP24XX_ST_GPT11_SHIFT				13
> -#define OMAP24XX_ST_GPT11_MASK				(1 << 13)
> -#define OMAP24XX_ST_GPT10_SHIFT				12
> -#define OMAP24XX_ST_GPT10_MASK				(1 << 12)
> -#define OMAP24XX_ST_GPT9_SHIFT				11
> -#define OMAP24XX_ST_GPT9_MASK				(1 << 11)
> -#define OMAP24XX_ST_GPT8_SHIFT				10
> -#define OMAP24XX_ST_GPT8_MASK				(1 << 10)
> -#define OMAP24XX_ST_GPT7_SHIFT				9
> -#define OMAP24XX_ST_GPT7_MASK				(1 << 9)
> -#define OMAP24XX_ST_GPT6_SHIFT				8
> -#define OMAP24XX_ST_GPT6_MASK				(1 << 8)
> -#define OMAP24XX_ST_GPT5_SHIFT				7
> -#define OMAP24XX_ST_GPT5_MASK				(1 << 7)
> -#define OMAP24XX_ST_GPT4_SHIFT				6
> -#define OMAP24XX_ST_GPT4_MASK				(1 << 6)
> -#define OMAP24XX_ST_GPT3_SHIFT				5
> -#define OMAP24XX_ST_GPT3_MASK				(1 << 5)
> -#define OMAP24XX_ST_GPT2_SHIFT				4
> -#define OMAP24XX_ST_GPT2_MASK				(1 << 4)
> -#define OMAP2420_ST_VLYNQ_SHIFT				3
> -#define OMAP2420_ST_VLYNQ_MASK				(1 << 3)
> -
> -/* CM_IDLEST2_CORE, PM_WKST2_CORE shared bits */
> -#define OMAP2430_ST_MDM_INTC_SHIFT			11
> -#define OMAP2430_ST_MDM_INTC_MASK			(1 << 11)
> -#define OMAP2430_ST_GPIO5_SHIFT				10
> -#define OMAP2430_ST_GPIO5_MASK				(1 << 10)
> -#define OMAP2430_ST_MCSPI3_SHIFT			9
> -#define OMAP2430_ST_MCSPI3_MASK				(1 << 9)
> -#define OMAP2430_ST_MMCHS2_SHIFT			8
> -#define OMAP2430_ST_MMCHS2_MASK				(1 << 8)
> -#define OMAP2430_ST_MMCHS1_SHIFT			7
> -#define OMAP2430_ST_MMCHS1_MASK				(1 << 7)
> -#define OMAP2430_ST_USBHS_SHIFT				6
> -#define OMAP2430_ST_USBHS_MASK				(1 << 6)
> -#define OMAP24XX_ST_UART3_SHIFT				2
> -#define OMAP24XX_ST_UART3_MASK				(1 << 2)
> -#define OMAP24XX_ST_USB_SHIFT				0
> -#define OMAP24XX_ST_USB_MASK				(1 << 0)
> -
> -/* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
> -#define OMAP24XX_EN_GPIOS_SHIFT				2
> -#define OMAP24XX_EN_GPIOS_MASK				(1 << 2)
> -#define OMAP24XX_EN_GPT1_SHIFT				0
> -#define OMAP24XX_EN_GPT1_MASK				(1 << 0)
> -
> -/* PM_WKST_WKUP, CM_IDLEST_WKUP shared bits */
> -#define OMAP24XX_ST_GPIOS_SHIFT				2
> -#define OMAP24XX_ST_GPIOS_MASK				(1 << 2)
> -#define OMAP24XX_ST_32KSYNC_SHIFT			1
> -#define OMAP24XX_ST_32KSYNC_MASK			(1 << 1)
> -#define OMAP24XX_ST_GPT1_SHIFT				0
> -#define OMAP24XX_ST_GPT1_MASK				(1 << 0)
> -
> -/* CM_IDLEST_MDM and PM_WKST_MDM shared bits */
> -#define OMAP2430_ST_MDM_SHIFT				0
> -#define OMAP2430_ST_MDM_MASK				(1 << 0)
> -
> -
>   /* 3430 register bits shared between CM & PRM registers */
>   
>   /* CM_REVISION, PRM_REVISION shared bits */
> diff --git a/arch/arm/mach-omap2/prm-regbits-24xx.h b/arch/arm/mach-omap2/prm-regbits-24xx.h
> deleted file mode 100644
> index ff83801f6439..000000000000
> --- a/arch/arm/mach-omap2/prm-regbits-24xx.h
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -#ifndef __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_24XX_H
> -#define __ARCH_ARM_MACH_OMAP2_PRM_REGBITS_24XX_H
> -
> -/*
> - * OMAP24XX Power/Reset Management register bits
> - *
> - * Copyright (C) 2007 Texas Instruments, Inc.
> - * Copyright (C) 2007 Nokia Corporation
> - *
> - * Written by Paul Walmsley
> - */
> -
> -#include "prm2xxx.h"
> -
> -#define OMAP24XX_EN_CORE_SHIFT 				0
> -#define OMAP24XX_FORCESTATE_MASK			(1 << 18)
> -#define OMAP24XX_AUTOIDLE_MASK				(1 << 0)
> -#define OMAP24XX_AUTO_EXTVOLT_MASK			(1 << 15)
> -#define OMAP24XX_SETOFF_LEVEL_SHIFT			12
> -#define OMAP24XX_MEMRETCTRL_MASK			(1 << 8)
> -#define OMAP24XX_SETRET_LEVEL_SHIFT			6
> -#define OMAP24XX_VOLT_LEVEL_SHIFT			0
> -#define OMAP2420_CLKOUT2_EN_SHIFT			15
> -#define OMAP2420_CLKOUT2_DIV_SHIFT			11
> -#define OMAP2420_CLKOUT2_DIV_WIDTH			3
> -#define OMAP2420_CLKOUT2_SOURCE_MASK			(0x3 << 8)
> -#define OMAP24XX_CLKOUT_EN_SHIFT			7
> -#define OMAP24XX_CLKOUT_DIV_SHIFT			3
> -#define OMAP24XX_CLKOUT_DIV_WIDTH			3
> -#define OMAP24XX_CLKOUT_SOURCE_MASK			(0x3 << 0)
> -#define OMAP24XX_EMULATION_EN_SHIFT			0
> -#define OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT		5
> -#define OMAP24XX_PM_WKDEP_MPU_EN_DSP_SHIFT		2
> -#define OMAP24XX_EXTWMPU_RST_SHIFT			6
> -#define OMAP24XX_SECU_WD_RST_SHIFT			5
> -#define OMAP24XX_MPU_WD_RST_SHIFT			4
> -#define OMAP24XX_SECU_VIOL_RST_SHIFT			3
> -#endif
> diff --git a/arch/arm/mach-omap2/prm2xxx.c b/arch/arm/mach-omap2/prm2xxx.c
> deleted file mode 100644
> index 35a58f54b528..000000000000
> --- a/arch/arm/mach-omap2/prm2xxx.c
> +++ /dev/null
> @@ -1,229 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * OMAP2xxx PRM module functions
> - *
> - * Copyright (C) 2010-2012 Texas Instruments, Inc.
> - * Copyright (C) 2010 Nokia Corporation
> - * Benoît Cousson
> - * Paul Walmsley
> - * Rajendra Nayak <rnayak@ti.com>
> - */
> -
> -#include <linux/kernel.h>
> -#include <linux/errno.h>
> -#include <linux/err.h>
> -#include <linux/io.h>
> -#include <linux/irq.h>
> -
> -#include "powerdomain.h"
> -#include "clockdomain.h"
> -#include "prm2xxx.h"
> -#include "cm2xxx_3xxx.h"
> -#include "prm-regbits-24xx.h"
> -
> -/*
> - * OMAP24xx PM_PWSTCTRL_*.POWERSTATE and PM_PWSTST_*.LASTSTATEENTERED bits -
> - * these are reversed from the bits used on OMAP3+
> - */
> -#define OMAP24XX_PWRDM_POWER_ON			0x0
> -#define OMAP24XX_PWRDM_POWER_RET		0x1
> -#define OMAP24XX_PWRDM_POWER_OFF		0x3
> -
> -/*
> - * omap2xxx_prm_reset_src_map - map from bits in the PRM_RSTST_WKUP
> - *   hardware register (which are specific to the OMAP2xxx SoCs) to
> - *   reset source ID bit shifts (which is an OMAP SoC-independent
> - *   enumeration)
> - */
> -static struct prm_reset_src_map omap2xxx_prm_reset_src_map[] = {
> -	{ OMAP_GLOBALCOLD_RST_SHIFT, OMAP_GLOBAL_COLD_RST_SRC_ID_SHIFT },
> -	{ OMAP_GLOBALWARM_RST_SHIFT, OMAP_GLOBAL_WARM_RST_SRC_ID_SHIFT },
> -	{ OMAP24XX_SECU_VIOL_RST_SHIFT, OMAP_SECU_VIOL_RST_SRC_ID_SHIFT },
> -	{ OMAP24XX_MPU_WD_RST_SHIFT, OMAP_MPU_WD_RST_SRC_ID_SHIFT },
> -	{ OMAP24XX_SECU_WD_RST_SHIFT, OMAP_SECU_WD_RST_SRC_ID_SHIFT },
> -	{ OMAP24XX_EXTWMPU_RST_SHIFT, OMAP_EXTWARM_RST_SRC_ID_SHIFT },
> -	{ -1, -1 },
> -};
> -
> -/**
> - * omap2xxx_prm_read_reset_sources - return the last SoC reset source
> - *
> - * Return a u32 representing the last reset sources of the SoC.  The
> - * returned reset source bits are standardized across OMAP SoCs.
> - */
> -static u32 omap2xxx_prm_read_reset_sources(void)
> -{
> -	struct prm_reset_src_map *p;
> -	u32 r = 0;
> -	u32 v;
> -
> -	v = omap2_prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTST);
> -
> -	p = omap2xxx_prm_reset_src_map;
> -	while (p->reg_shift >= 0 && p->std_shift >= 0) {
> -		if (v & (1 << p->reg_shift))
> -			r |= 1 << p->std_shift;
> -		p++;
> -	}
> -
> -	return r;
> -}
> -
> -/**
> - * omap2xxx_pwrst_to_common_pwrst - convert OMAP2xxx pwrst to common pwrst
> - * @omap2xxx_pwrst: OMAP2xxx hardware power state to convert
> - *
> - * Return the common power state bits corresponding to the OMAP2xxx
> - * hardware power state bits @omap2xxx_pwrst, or -EINVAL upon error.
> - */
> -static int omap2xxx_pwrst_to_common_pwrst(u8 omap2xxx_pwrst)
> -{
> -	u8 pwrst;
> -
> -	switch (omap2xxx_pwrst) {
> -	case OMAP24XX_PWRDM_POWER_OFF:
> -		pwrst = PWRDM_POWER_OFF;
> -		break;
> -	case OMAP24XX_PWRDM_POWER_RET:
> -		pwrst = PWRDM_POWER_RET;
> -		break;
> -	case OMAP24XX_PWRDM_POWER_ON:
> -		pwrst = PWRDM_POWER_ON;
> -		break;
> -	default:
> -		return -EINVAL;
> -	}
> -
> -	return pwrst;
> -}
> -
> -/**
> - * omap2xxx_prm_dpll_reset - use DPLL reset to reboot the OMAP SoC
> - *
> - * Set the DPLL reset bit, which should reboot the SoC.  This is the
> - * recommended way to restart the SoC.  No return value.
> - */
> -static void omap2xxx_prm_dpll_reset(void)
> -{
> -	omap2_prm_set_mod_reg_bits(OMAP_RST_DPLL3_MASK, WKUP_MOD,
> -				   OMAP2_RM_RSTCTRL);
> -	/* OCP barrier */
> -	omap2_prm_read_mod_reg(WKUP_MOD, OMAP2_RM_RSTCTRL);
> -}
> -
> -/**
> - * omap2xxx_prm_clear_mod_irqs - clear wakeup status bits for a module
> - * @module: PRM module to clear wakeups from
> - * @regs: register offset to clear
> - * @wkst_mask: wakeup status mask to clear
> - *
> - * Clears wakeup status bits for a given module, so that the device can
> - * re-enter idle.
> - */
> -static int omap2xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask)
> -{
> -	u32 wkst;
> -
> -	wkst = omap2_prm_read_mod_reg(module, regs);
> -	wkst &= wkst_mask;
> -	omap2_prm_write_mod_reg(wkst, module, regs);
> -	return 0;
> -}
> -
> -int omap2xxx_clkdm_sleep(struct clockdomain *clkdm)
> -{
> -	omap2_prm_set_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
> -				   clkdm->pwrdm.ptr->prcm_offs,
> -				   OMAP2_PM_PWSTCTRL);
> -	return 0;
> -}
> -
> -int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm)
> -{
> -	omap2_prm_clear_mod_reg_bits(OMAP24XX_FORCESTATE_MASK,
> -				     clkdm->pwrdm.ptr->prcm_offs,
> -				     OMAP2_PM_PWSTCTRL);
> -	return 0;
> -}
> -
> -static int omap2xxx_pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst)
> -{
> -	u8 omap24xx_pwrst;
> -
> -	switch (pwrst) {
> -	case PWRDM_POWER_OFF:
> -		omap24xx_pwrst = OMAP24XX_PWRDM_POWER_OFF;
> -		break;
> -	case PWRDM_POWER_RET:
> -		omap24xx_pwrst = OMAP24XX_PWRDM_POWER_RET;
> -		break;
> -	case PWRDM_POWER_ON:
> -		omap24xx_pwrst = OMAP24XX_PWRDM_POWER_ON;
> -		break;
> -	default:
> -		return -EINVAL;
> -	}
> -
> -	omap2_prm_rmw_mod_reg_bits(OMAP_POWERSTATE_MASK,
> -				   (omap24xx_pwrst << OMAP_POWERSTATE_SHIFT),
> -				   pwrdm->prcm_offs, OMAP2_PM_PWSTCTRL);
> -	return 0;
> -}
> -
> -static int omap2xxx_pwrdm_read_next_pwrst(struct powerdomain *pwrdm)
> -{
> -	u8 omap2xxx_pwrst;
> -
> -	omap2xxx_pwrst = omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs,
> -						       OMAP2_PM_PWSTCTRL,
> -						       OMAP_POWERSTATE_MASK);
> -
> -	return omap2xxx_pwrst_to_common_pwrst(omap2xxx_pwrst);
> -}
> -
> -static int omap2xxx_pwrdm_read_pwrst(struct powerdomain *pwrdm)
> -{
> -	u8 omap2xxx_pwrst;
> -
> -	omap2xxx_pwrst = omap2_prm_read_mod_bits_shift(pwrdm->prcm_offs,
> -						       OMAP2_PM_PWSTST,
> -						       OMAP_POWERSTATEST_MASK);
> -
> -	return omap2xxx_pwrst_to_common_pwrst(omap2xxx_pwrst);
> -}
> -
> -struct pwrdm_ops omap2_pwrdm_operations = {
> -	.pwrdm_set_next_pwrst	= omap2xxx_pwrdm_set_next_pwrst,
> -	.pwrdm_read_next_pwrst	= omap2xxx_pwrdm_read_next_pwrst,
> -	.pwrdm_read_pwrst	= omap2xxx_pwrdm_read_pwrst,
> -	.pwrdm_set_logic_retst	= omap2_pwrdm_set_logic_retst,
> -	.pwrdm_set_mem_onst	= omap2_pwrdm_set_mem_onst,
> -	.pwrdm_set_mem_retst	= omap2_pwrdm_set_mem_retst,
> -	.pwrdm_read_mem_pwrst	= omap2_pwrdm_read_mem_pwrst,
> -	.pwrdm_read_mem_retst	= omap2_pwrdm_read_mem_retst,
> -	.pwrdm_wait_transition	= omap2_pwrdm_wait_transition,
> -};
> -
> -/*
> - *
> - */
> -
> -static struct prm_ll_data omap2xxx_prm_ll_data = {
> -	.read_reset_sources = &omap2xxx_prm_read_reset_sources,
> -	.assert_hardreset = &omap2_prm_assert_hardreset,
> -	.deassert_hardreset = &omap2_prm_deassert_hardreset,
> -	.is_hardreset_asserted = &omap2_prm_is_hardreset_asserted,
> -	.reset_system = &omap2xxx_prm_dpll_reset,
> -	.clear_mod_irqs = &omap2xxx_prm_clear_mod_irqs,
> -};
> -
> -int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data)
> -{
> -	return prm_register(&omap2xxx_prm_ll_data);
> -}
> -
> -static void __exit omap2xxx_prm_exit(void)
> -{
> -	prm_unregister(&omap2xxx_prm_ll_data);
> -}
> -__exitcall(omap2xxx_prm_exit);
> diff --git a/arch/arm/mach-omap2/prm2xxx.h b/arch/arm/mach-omap2/prm2xxx.h
> deleted file mode 100644
> index 659b917348f8..000000000000
> --- a/arch/arm/mach-omap2/prm2xxx.h
> +++ /dev/null
> @@ -1,128 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * OMAP2xxx Power/Reset Management (PRM) register definitions
> - *
> - * Copyright (C) 2007-2009, 2011-2012 Texas Instruments, Inc.
> - * Copyright (C) 2008-2010 Nokia Corporation
> - * Paul Walmsley
> - *
> - * The PRM hardware modules on the OMAP2/3 are quite similar to each
> - * other.  The PRM on OMAP4 has a new register layout, and is handled
> - * in a separate file.
> - */
> -#ifndef __ARCH_ARM_MACH_OMAP2_PRM2XXX_H
> -#define __ARCH_ARM_MACH_OMAP2_PRM2XXX_H
> -
> -#include "prcm-common.h"
> -#include "prm.h"
> -#include "prm2xxx_3xxx.h"
> -
> -#define OMAP2420_PRM_REGADDR(module, reg)				\
> -		OMAP2_L4_IO_ADDRESS(OMAP2420_PRM_BASE + (module) + (reg))
> -#define OMAP2430_PRM_REGADDR(module, reg)				\
> -		OMAP2_L4_IO_ADDRESS(OMAP2430_PRM_BASE + (module) + (reg))
> -
> -/*
> - * OMAP2-specific global PRM registers
> - * Use {read,write}l_relaxed() with these registers.
> - *
> - * With a few exceptions, these are the register names beginning with
> - * PRCM_* on 24xx.  (The exceptions are the IRQSTATUS and IRQENABLE
> - * bits.)
> - *
> - */
> -
> -#define OMAP2_PRCM_REVISION_OFFSET	0x0000
> -#define OMAP2420_PRCM_REVISION		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0000)
> -#define OMAP2_PRCM_SYSCONFIG_OFFSET	0x0010
> -#define OMAP2420_PRCM_SYSCONFIG		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0010)
> -
> -#define OMAP2_PRCM_IRQSTATUS_MPU_OFFSET	0x0018
> -#define OMAP2420_PRCM_IRQSTATUS_MPU	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0018)
> -#define OMAP2_PRCM_IRQENABLE_MPU_OFFSET	0x001c
> -#define OMAP2420_PRCM_IRQENABLE_MPU	OMAP2420_PRM_REGADDR(OCP_MOD, 0x001c)
> -
> -#define OMAP2_PRCM_VOLTCTRL_OFFSET	0x0050
> -#define OMAP2420_PRCM_VOLTCTRL		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0050)
> -#define OMAP2_PRCM_VOLTST_OFFSET	0x0054
> -#define OMAP2420_PRCM_VOLTST		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0054)
> -#define OMAP2_PRCM_CLKSRC_CTRL_OFFSET	0x0060
> -#define OMAP2420_PRCM_CLKSRC_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0060)
> -#define OMAP2_PRCM_CLKOUT_CTRL_OFFSET	0x0070
> -#define OMAP2420_PRCM_CLKOUT_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0070)
> -#define OMAP2_PRCM_CLKEMUL_CTRL_OFFSET	0x0078
> -#define OMAP2420_PRCM_CLKEMUL_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0078)
> -#define OMAP2_PRCM_CLKCFG_CTRL_OFFSET	0x0080
> -#define OMAP2420_PRCM_CLKCFG_CTRL	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0080)
> -#define OMAP2_PRCM_CLKCFG_STATUS_OFFSET	0x0084
> -#define OMAP2420_PRCM_CLKCFG_STATUS	OMAP2420_PRM_REGADDR(OCP_MOD, 0x0084)
> -#define OMAP2_PRCM_VOLTSETUP_OFFSET	0x0090
> -#define OMAP2420_PRCM_VOLTSETUP		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0090)
> -#define OMAP2_PRCM_CLKSSETUP_OFFSET	0x0094
> -#define OMAP2420_PRCM_CLKSSETUP		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0094)
> -#define OMAP2_PRCM_POLCTRL_OFFSET	0x0098
> -#define OMAP2420_PRCM_POLCTRL		OMAP2420_PRM_REGADDR(OCP_MOD, 0x0098)
> -
> -#define OMAP2430_PRCM_REVISION		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0000)
> -#define OMAP2430_PRCM_SYSCONFIG		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0010)
> -
> -#define OMAP2430_PRCM_IRQSTATUS_MPU	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0018)
> -#define OMAP2430_PRCM_IRQENABLE_MPU	OMAP2430_PRM_REGADDR(OCP_MOD, 0x001c)
> -
> -#define OMAP2430_PRCM_VOLTCTRL		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0050)
> -#define OMAP2430_PRCM_VOLTST		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0054)
> -#define OMAP2430_PRCM_CLKSRC_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0060)
> -#define OMAP2430_PRCM_CLKOUT_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0070)
> -#define OMAP2430_PRCM_CLKEMUL_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0078)
> -#define OMAP2430_PRCM_CLKCFG_CTRL	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0080)
> -#define OMAP2430_PRCM_CLKCFG_STATUS	OMAP2430_PRM_REGADDR(OCP_MOD, 0x0084)
> -#define OMAP2430_PRCM_VOLTSETUP		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0090)
> -#define OMAP2430_PRCM_CLKSSETUP		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0094)
> -#define OMAP2430_PRCM_POLCTRL		OMAP2430_PRM_REGADDR(OCP_MOD, 0x0098)
> -
> -/*
> - * Module specific PRM register offsets from PRM_BASE + domain offset
> - *
> - * Use prm_{read,write}_mod_reg() with these registers.
> - *
> - * With a few exceptions, these are the register names beginning with
> - * {PM,RM}_* on both OMAP2/3 SoC families..  (The exceptions are the
> - * IRQSTATUS and IRQENABLE bits.)
> - */
> -
> -/* Register offsets appearing on both OMAP2 and OMAP3 */
> -
> -#define OMAP2_RM_RSTCTRL				0x0050
> -#define OMAP2_RM_RSTTIME				0x0054
> -#define OMAP2_RM_RSTST					0x0058
> -#define OMAP2_PM_PWSTCTRL				0x00e0
> -#define OMAP2_PM_PWSTST					0x00e4
> -
> -#define PM_WKEN						0x00a0
> -#define PM_WKEN1					PM_WKEN
> -#define PM_WKST						0x00b0
> -#define PM_WKST1					PM_WKST
> -#define PM_WKDEP					0x00c8
> -#define PM_EVGENCTRL					0x00d4
> -#define PM_EVGENONTIM					0x00d8
> -#define PM_EVGENOFFTIM					0x00dc
> -
> -/* OMAP2xxx specific register offsets */
> -#define OMAP24XX_PM_WKEN2				0x00a4
> -#define OMAP24XX_PM_WKST2				0x00b4
> -
> -#define OMAP24XX_PRCM_IRQSTATUS_DSP			0x00f0	/* IVA mod */
> -#define OMAP24XX_PRCM_IRQENABLE_DSP			0x00f4	/* IVA mod */
> -#define OMAP24XX_PRCM_IRQSTATUS_IVA			0x00f8
> -#define OMAP24XX_PRCM_IRQENABLE_IVA			0x00fc
> -
> -#ifndef __ASSEMBLER__
> -/* Function prototypes */
> -extern int omap2xxx_clkdm_sleep(struct clockdomain *clkdm);
> -extern int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm);
> -
> -int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data);
> -
> -#endif
> -
> -#endif
> diff --git a/arch/arm/mach-omap2/prm2xxx_3xxx.c b/arch/arm/mach-omap2/prm2xxx_3xxx.c
> index d983efac6f4f..afaba7153ece 100644
> --- a/arch/arm/mach-omap2/prm2xxx_3xxx.c
> +++ b/arch/arm/mach-omap2/prm2xxx_3xxx.c
> @@ -15,7 +15,6 @@
>   
>   #include "powerdomain.h"
>   #include "prm2xxx_3xxx.h"
> -#include "prm-regbits-24xx.h"
>   #include "clockdomain.h"
>   
>   /**
> diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
> index ee4588acda50..3546e7292bfb 100644
> --- a/arch/arm/mach-omap2/prm_common.c
> +++ b/arch/arm/mach-omap2/prm_common.c
> @@ -26,7 +26,6 @@
>   
>   #include "soc.h"
>   #include "prm2xxx_3xxx.h"
> -#include "prm2xxx.h"
>   #include "prm3xxx.h"
>   #include "prm33xx.h"
>   #include "prm44xx.h"
> @@ -582,13 +581,6 @@ int prm_unregister(struct prm_ll_data *pld)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_ARCH_OMAP2
> -static struct omap_prcm_init_data omap2_prm_data __initdata = {
> -	.index = TI_CLKM_PRM,
> -	.init = omap2xxx_prm_init,
> -};
> -#endif
> -
>   #ifdef CONFIG_ARCH_OMAP3
>   static struct omap_prcm_init_data omap3_prm_data __initdata = {
>   	.index = TI_CLKM_PRM,
> @@ -670,9 +662,6 @@ static const struct of_device_id omap_prcm_dt_match_table[] __initconst = {
>   	{ .compatible = "ti,dm814-pllss", .data = &dm814_pllss_data },
>   	{ .compatible = "ti,dm816-prcm", .data = &am3_prm_data },
>   #endif
> -#ifdef CONFIG_ARCH_OMAP2
> -	{ .compatible = "ti,omap2-prcm", .data = &omap2_prm_data },
> -#endif
>   #ifdef CONFIG_ARCH_OMAP3
>   	{ .compatible = "ti,omap3-prm", .data = &omap3_prm_data },
>   #endif
> diff --git a/arch/arm/mach-omap2/sdrc.h b/arch/arm/mach-omap2/sdrc.h
> index 45b35422b587..c34fba4d2f1a 100644
> --- a/arch/arm/mach-omap2/sdrc.h
> +++ b/arch/arm/mach-omap2/sdrc.h
> @@ -90,17 +90,7 @@ struct memory_timings {
>   	u32 base_cs;		/* base chip select to use for calculations */
>   };
>   
> -extern void omap2xxx_sdrc_init_params(u32 force_lock_to_unlock_mode);
> -
> -u32 omap2xxx_sdrc_dll_is_unlocked(void);
> -u32 omap2xxx_sdrc_reprogram(u32 level, u32 force);
> -
> -
>   #else
> -#define OMAP242X_SDRC_REGADDR(reg)					\
> -			OMAP2_L3_IO_ADDRESS(OMAP2420_SDRC_BASE + (reg))
> -#define OMAP243X_SDRC_REGADDR(reg)					\
> -			OMAP2_L3_IO_ADDRESS(OMAP243X_SDRC_BASE + (reg))
>   #define OMAP34XX_SDRC_REGADDR(reg)					\
>   			OMAP2_L3_IO_ADDRESS(OMAP343X_SDRC_BASE + (reg))
>   
> @@ -184,17 +174,6 @@ u32 omap2xxx_sdrc_reprogram(u32 level, u32 force);
>   #define SDRC_RFR_CTRL_BYPASS	(0x00005000 | 1) /* Need to calc */
>   
>   
> -/*
> - * SMS register access
> - */
> -
> -#define OMAP242X_SMS_REGADDR(reg)					\
> -		(void __iomem *)OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE + reg)
> -#define OMAP243X_SMS_REGADDR(reg)					\
> -		(void __iomem *)OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE + reg)
> -#define OMAP343X_SMS_REGADDR(reg)					\
> -		(void __iomem *)OMAP2_L3_IO_ADDRESS(OMAP343X_SMS_BASE + reg)
> -
>   /* SMS register offsets - read/write with sms_{read,write}_reg() */
>   
>   #define SMS_SYSCONFIG			0x010
> diff --git a/arch/arm/mach-omap2/sdrc2xxx.c b/arch/arm/mach-omap2/sdrc2xxx.c
> deleted file mode 100644
> index 5a275b4fd404..000000000000
> --- a/arch/arm/mach-omap2/sdrc2xxx.c
> +++ /dev/null
> @@ -1,164 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * SDRAM timing related functions for OMAP2xxx
> - *
> - * Copyright (C) 2005, 2008 Texas Instruments Inc.
> - * Copyright (C) 2005, 2008 Nokia Corporation
> - *
> - * Tony Lindgren <tony@atomide.com>
> - * Paul Walmsley
> - * Richard Woodruff <r-woodruff2@ti.com>
> - */
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/device.h>
> -#include <linux/list.h>
> -#include <linux/errno.h>
> -#include <linux/delay.h>
> -#include <linux/clk.h>
> -#include <linux/io.h>
> -
> -#include "soc.h"
> -#include "iomap.h"
> -#include "common.h"
> -#include "prm2xxx.h"
> -#include "clock.h"
> -#include "sdrc.h"
> -#include "sram.h"
> -
> -/* Memory timing, DLL mode flags */
> -#define M_DDR		1
> -#define M_LOCK_CTRL	(1 << 2)
> -#define M_UNLOCK	0
> -#define M_LOCK		1
> -
> -
> -static struct memory_timings mem_timings;
> -static u32 curr_perf_level = CORE_CLK_SRC_DPLL_X2;
> -
> -static u32 omap2xxx_sdrc_get_slow_dll_ctrl(void)
> -{
> -	return mem_timings.slow_dll_ctrl;
> -}
> -
> -static u32 omap2xxx_sdrc_get_fast_dll_ctrl(void)
> -{
> -	return mem_timings.fast_dll_ctrl;
> -}
> -
> -static u32 omap2xxx_sdrc_get_type(void)
> -{
> -	return mem_timings.m_type;
> -}
> -
> -/*
> - * Check the DLL lock state, and return tue if running in unlock mode.
> - * This is needed to compensate for the shifted DLL value in unlock mode.
> - */
> -u32 omap2xxx_sdrc_dll_is_unlocked(void)
> -{
> -	/* dlla and dllb are a set */
> -	u32 dll_state = sdrc_read_reg(SDRC_DLLA_CTRL);
> -
> -	if ((dll_state & (1 << 2)) == (1 << 2))
> -		return 1;
> -	else
> -		return 0;
> -}
> -
> -/*
> - * 'level' is the value to store to CM_CLKSEL2_PLL.CORE_CLK_SRC.
> - * Practical values are CORE_CLK_SRC_DPLL (for CORE_CLK = DPLL_CLK) or
> - * CORE_CLK_SRC_DPLL_X2 (for CORE_CLK = * DPLL_CLK * 2)
> - *
> - * Used by the clock framework during CORE DPLL changes
> - */
> -u32 omap2xxx_sdrc_reprogram(u32 level, u32 force)
> -{
> -	u32 dll_ctrl, m_type;
> -	u32 prev = curr_perf_level;
> -	unsigned long flags;
> -
> -	if ((curr_perf_level == level) && !force)
> -		return prev;
> -
> -	if (level == CORE_CLK_SRC_DPLL)
> -		dll_ctrl = omap2xxx_sdrc_get_slow_dll_ctrl();
> -	else if (level == CORE_CLK_SRC_DPLL_X2)
> -		dll_ctrl = omap2xxx_sdrc_get_fast_dll_ctrl();
> -	else
> -		return prev;
> -
> -	m_type = omap2xxx_sdrc_get_type();
> -
> -	local_irq_save(flags);
> -	/*
> -	 * XXX These calls should be abstracted out through a
> -	 * prm2xxx.c function
> -	 */
> -	if (cpu_is_omap2420())
> -		writel_relaxed(0xffff, OMAP2420_PRCM_VOLTSETUP);
> -	else
> -		writel_relaxed(0xffff, OMAP2430_PRCM_VOLTSETUP);
> -	omap2_sram_reprogram_sdrc(level, dll_ctrl, m_type);
> -	curr_perf_level = level;
> -	local_irq_restore(flags);
> -
> -	return prev;
> -}
> -
> -/* Used by the clock framework during CORE DPLL changes */
> -void omap2xxx_sdrc_init_params(u32 force_lock_to_unlock_mode)
> -{
> -	unsigned long dll_cnt;
> -	u32 fast_dll = 0;
> -
> -	/* DDR = 1, SDR = 0 */
> -	mem_timings.m_type = !((sdrc_read_reg(SDRC_MR_0) & 0x3) == 0x1);
> -
> -	/* 2422 es2.05 and beyond has a single SIP DDR instead of 2 like others.
> -	 * In the case of 2422, its ok to use CS1 instead of CS0.
> -	 */
> -	if (cpu_is_omap2422())
> -		mem_timings.base_cs = 1;
> -	else
> -		mem_timings.base_cs = 0;
> -
> -	if (mem_timings.m_type != M_DDR)
> -		return;
> -
> -	/* With DDR we need to determine the low frequency DLL value */
> -	if (((mem_timings.fast_dll_ctrl & (1 << 2)) == M_LOCK_CTRL))
> -		mem_timings.dll_mode = M_UNLOCK;
> -	else
> -		mem_timings.dll_mode = M_LOCK;
> -
> -	if (mem_timings.base_cs == 0) {
> -		fast_dll = sdrc_read_reg(SDRC_DLLA_CTRL);
> -		dll_cnt = sdrc_read_reg(SDRC_DLLA_STATUS) & 0xff00;
> -	} else {
> -		fast_dll = sdrc_read_reg(SDRC_DLLB_CTRL);
> -		dll_cnt = sdrc_read_reg(SDRC_DLLB_STATUS) & 0xff00;
> -	}
> -	if (force_lock_to_unlock_mode) {
> -		fast_dll &= ~0xff00;
> -		fast_dll |= dll_cnt;		/* Current lock mode */
> -	}
> -	/* set fast timings with DLL filter disabled */
> -	mem_timings.fast_dll_ctrl = (fast_dll | (3 << 8));
> -
> -	/* No disruptions, DDR will be offline & C-ABI not followed */
> -	omap2_sram_ddr_init(&mem_timings.slow_dll_ctrl,
> -			    mem_timings.fast_dll_ctrl,
> -			    mem_timings.base_cs,
> -			    force_lock_to_unlock_mode);
> -	mem_timings.slow_dll_ctrl &= 0xff00;	/* Keep lock value */
> -
> -	/* Turn status into unlock ctrl */
> -	mem_timings.slow_dll_ctrl |=
> -		((mem_timings.fast_dll_ctrl & 0xF) | (1 << 2));
> -
> -	/* 90 degree phase for anything below 133MHz + disable DLL filter */
> -	mem_timings.slow_dll_ctrl |= ((1 << 1) | (3 << 8));
> -}
> diff --git a/arch/arm/mach-omap2/sleep24xx.S b/arch/arm/mach-omap2/sleep24xx.S
> deleted file mode 100644
> index 84d8c43ad382..000000000000
> --- a/arch/arm/mach-omap2/sleep24xx.S
> +++ /dev/null
> @@ -1,91 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * linux/arch/arm/mach-omap2/sleep.S
> - *
> - * (C) Copyright 2004
> - * Texas Instruments, <www.ti.com>
> - * Richard Woodruff <r-woodruff2@ti.com>
> - *
> - * (C) Copyright 2006 Nokia Corporation
> - * Fixed idle loop sleep
> - * Igor Stoppa <igor.stoppa@nokia.com>
> - */
> -
> -#include <linux/linkage.h>
> -#include <asm/assembler.h>
> -
> -#include "omap24xx.h"
> -#include "sdrc.h"
> -
> -/* First address of reserved address space?  apparently valid for OMAP2 & 3 */
> -#define A_SDRC0_V		(0xC0000000)
> -
> -	.text
> -
> -/*
> - * omap24xx_cpu_suspend() - Forces OMAP into deep sleep state by completing
> - * SDRC shutdown then ARM shutdown.  Upon wake MPU is back on so just restore
> - * SDRC.
> - *
> - * Input:
> - * R0 :	DLL ctrl value pre-Sleep
> - * R1 : SDRC_DLLA_CTRL
> - * R2 : SDRC_POWER
> - *
> - * The if the DPLL is going to AutoIdle. It seems like the DPLL may be back on
> - * when we get called, but the DLL probably isn't.  We will wait a bit more in
> - * case the DPLL isn't quite there yet. The code will wait on DLL for DDR even
> - * if in unlocked mode.
> - *
> - * For less than 242x-ES2.2 upon wake from a sleep mode where the external
> - * oscillator was stopped, a timing bug exists where a non-stabilized 12MHz
> - * clock can pass into the PRCM can cause problems at DSP and IVA.
> - * To work around this the code will switch to the 32kHz source prior to sleep.
> - * Post sleep we will shift back to using the DPLL.  Apparently,
> - * CM_IDLEST_CLKGEN does not reflect the full clock change so you need to wait
> - * 3x12MHz + 3x32kHz clocks for a full switch.
> - *
> - * The DLL load value is not kept in RETENTION or OFF.	It needs to be restored
> - * at wake
> - */
> -	.align	3
> -ENTRY(omap24xx_cpu_suspend)
> -	stmfd	sp!, {r0 - r12, lr}	@ save registers on stack
> -	mov	r3, #0x0		@ clear for mcr call
> -	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier, hope SDR/DDR finished
> -	nop
> -	nop
> -	ldr	r4, [r2]		@ read SDRC_POWER
> -	orr	r4, r4, #0x40		@ enable self refresh on idle req
> -	mov	r5, #0x2000		@ set delay (DPLL relock + DLL relock)
> -	str	r4, [r2]		@ make it so
> -	nop
> -	mcr	p15, 0, r3, c7, c0, 4	@ wait for interrupt
> -	nop
> -loop:
> -	subs	r5, r5, #0x1		@ awake, wait just a bit
> -	bne	loop
> -
> -	/* The DPLL has to be on before we take the DDR out of self refresh */
> -	bic	r4, r4, #0x40		@ now clear self refresh bit.
> -	str	r4, [r2]		@ write to SDRC_POWER
> -	ldr	r4, A_SDRC0		@ make a clock happen
> -	ldr	r4, [r4]		@ read A_SDRC0
> -	nop				@ start auto refresh only after clk ok
> -	movs	r0, r0			@ see if DDR or SDR
> -	strne	r0, [r1]		@ rewrite DLLA to force DLL reload
> -	addne	r1, r1, #0x8		@ move to DLLB
> -	strne	r0, [r1]		@ rewrite DLLB to force DLL reload
> -
> -	mov	r5, #0x1000
> -loop2:
> -	subs	r5, r5, #0x1
> -	bne	loop2
> -	/* resume*/
> -	ldmfd	sp!, {r0 - r12, pc}	@ restore regs and return
> -
> -A_SDRC0:
> -	.word A_SDRC0_V
> -
> -ENTRY(omap24xx_cpu_suspend_sz)
> -	.word	. - omap24xx_cpu_suspend
> diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h
> index 9e3dbb743e5c..9c9f56ca9142 100644
> --- a/arch/arm/mach-omap2/soc.h
> +++ b/arch/arm/mach-omap2/soc.h
> @@ -12,7 +12,6 @@
>    * Added DRA7xxx specific defines - Sricharan R<r.sricharan@ti.com>
>    */
>   
> -#include "omap24xx.h"
>   #include "omap34xx.h"
>   #include "omap44xx.h"
>   #include "ti81xx.h"
> @@ -62,9 +61,6 @@ static inline int soc_is_omap(void)
>   /*
>    * Macros to group OMAP into cpu classes.
>    * These can be used in most places.
> - * soc_is_omap24xx():	True for OMAP2420, OMAP2422, OMAP2423, OMAP2430
> - * soc_is_omap242x():	True for OMAP2420, OMAP2422, OMAP2423
> - * soc_is_omap243x():	True for OMAP2430
>    * soc_is_omap343x():	True for OMAP3430
>    * soc_is_omap443x():	True for OMAP4430
>    * soc_is_omap446x():	True for OMAP4460
> @@ -137,7 +133,6 @@ static inline int is_dra ##subclass ##_ ##package (void)		\
>   	return (is_dra ##subclass () && GET_DRA_PACKAGE == id) ? 1 : 0;	\
>   }
>   
> -IS_OMAP_CLASS(24xx, 0x24)
>   IS_OMAP_CLASS(34xx, 0x34)
>   IS_OMAP_CLASS(44xx, 0x44)
>   IS_AM_CLASS(35xx, 0x35)
> @@ -148,8 +143,6 @@ IS_AM_CLASS(43xx, 0x43)
>   IS_TI_CLASS(81xx, 0x81)
>   IS_DRA_CLASS(7xx, 0x7)
>   
> -IS_OMAP_SUBCLASS(242x, 0x242)
> -IS_OMAP_SUBCLASS(243x, 0x243)
>   IS_OMAP_SUBCLASS(343x, 0x343)
>   IS_OMAP_SUBCLASS(363x, 0x363)
>   IS_OMAP_SUBCLASS(443x, 0x443)
> @@ -186,21 +179,6 @@ IS_DRA_SUBCLASS(72x, 0x72)
>   #define soc_is_dra74x()			0
>   #define soc_is_dra72x()			0
>   
> -#if defined(CONFIG_ARCH_OMAP2)
> -# define soc_is_omap24xx()		is_omap24xx()
> -#else
> -# define soc_is_omap24xx()		0
> -#endif
> -#if defined(CONFIG_SOC_OMAP2420)
> -# define soc_is_omap242x()		is_omap242x()
> -#else
> -# define soc_is_omap242x()		0
> -#endif
> -#if defined(CONFIG_SOC_OMAP2430)
> -# define soc_is_omap243x()		is_omap243x()
> -#else
> -# define soc_is_omap243x()		0
> -#endif
>   #if defined(CONFIG_ARCH_OMAP3)
>   # define soc_is_omap34xx()		is_omap34xx()
>   # define soc_is_omap343x()		is_omap343x()
> @@ -212,10 +190,6 @@ IS_DRA_SUBCLASS(72x, 0x72)
>   /*
>    * Macros to detect individual cpu types.
>    * These are only rarely needed.
> - * soc_is_omap2420():	True for OMAP2420
> - * soc_is_omap2422():	True for OMAP2422
> - * soc_is_omap2423():	True for OMAP2423
> - * soc_is_omap2430():	True for OMAP2430
>    * soc_is_omap3430():	True for OMAP3430
>    */
>   #define GET_OMAP_TYPE	((omap_rev() >> 16) & 0xffff)
> @@ -226,16 +200,8 @@ static inline int is_omap ##type (void)			\
>   	return (GET_OMAP_TYPE == (id)) ? 1 : 0;		\
>   }
>   
> -IS_OMAP_TYPE(2420, 0x2420)
> -IS_OMAP_TYPE(2422, 0x2422)
> -IS_OMAP_TYPE(2423, 0x2423)
> -IS_OMAP_TYPE(2430, 0x2430)
>   IS_OMAP_TYPE(3430, 0x3430)
>   
> -#define soc_is_omap2420()		0
> -#define soc_is_omap2422()		0
> -#define soc_is_omap2423()		0
> -#define soc_is_omap2430()		0
>   #define soc_is_omap3430()		0
>   #define soc_is_omap3630()		0
>   #define soc_is_omap5430()		0
> @@ -252,17 +218,6 @@ IS_OMAP_TYPE(3430, 0x3430)
>   #define cpu_class_is_omap1()		0
>   #define cpu_class_is_omap2()		1
>   
> -#if defined(CONFIG_ARCH_OMAP2)
> -# undef  soc_is_omap2420
> -# undef  soc_is_omap2422
> -# undef  soc_is_omap2423
> -# undef  soc_is_omap2430
> -# define soc_is_omap2420()		is_omap2420()
> -# define soc_is_omap2422()		is_omap2422()
> -# define soc_is_omap2423()		is_omap2423()
> -# define soc_is_omap2430()		is_omap2430()
> -#endif
> -
>   #if defined(CONFIG_ARCH_OMAP3)
>   # undef soc_is_omap3430
>   # undef soc_is_ti81xx
> @@ -326,13 +281,6 @@ IS_OMAP_TYPE(3430, 0x3430)
>   #endif
>   
>   /* Various silicon revisions for omap2 */
> -#define OMAP242X_CLASS		0x24200024
> -#define OMAP2420_REV_ES1_0	OMAP242X_CLASS
> -#define OMAP2420_REV_ES2_0	(OMAP242X_CLASS | (0x1 << 8))
> -
> -#define OMAP243X_CLASS		0x24300024
> -#define OMAP2430_REV_ES1_0	OMAP243X_CLASS
> -
>   #define OMAP343X_CLASS		0x34300034
>   #define OMAP3430_REV_ES1_0	OMAP343X_CLASS
>   #define OMAP3430_REV_ES2_0	(OMAP343X_CLASS | (0x1 << 8))
> @@ -400,7 +348,6 @@ IS_OMAP_TYPE(3430, 0x3430)
>   #define DRA722_REV_ES2_0	(DRA7XX_CLASS | (0x22 << 16) | (0x20 << 8))
>   #define DRA722_REV_ES2_1	(DRA7XX_CLASS | (0x22 << 16) | (0x21 << 8))
>   
> -void omap2xxx_check_revision(void);
>   void omap3xxx_check_revision(void);
>   void omap4xxx_check_revision(void);
>   void omap5xxx_check_revision(void);
> @@ -484,12 +431,6 @@ level(__##fn);
>   #define omap_late_initcall_sync(fn)	omap_initcall(late_initcall_sync, fn)
>   
>   /* Legacy defines, these can be removed when users are removed */
> -#define cpu_is_omap2420()	soc_is_omap2420()
> -#define cpu_is_omap2422()	soc_is_omap2422()
> -#define cpu_is_omap242x()	soc_is_omap242x()
> -#define cpu_is_omap2430()	soc_is_omap2430()
> -#define cpu_is_omap243x()	soc_is_omap243x()
> -#define cpu_is_omap24xx()	soc_is_omap24xx()
>   #define cpu_is_omap3430()	soc_is_omap3430()
>   #define cpu_is_omap343x()	soc_is_omap343x()
>   #define cpu_is_omap34xx()	soc_is_omap34xx()
> diff --git a/arch/arm/mach-omap2/sram.c b/arch/arm/mach-omap2/sram.c
> index 898b011ae8d9..8f980849f201 100644
> --- a/arch/arm/mach-omap2/sram.c
> +++ b/arch/arm/mach-omap2/sram.c
> @@ -28,15 +28,10 @@
>   #include "sdrc.h"
>   #include "sram.h"
>   
> -#define OMAP2_SRAM_PUB_PA	(OMAP2_SRAM_PA + 0xf800)
>   #define OMAP3_SRAM_PUB_PA       (OMAP3_SRAM_PA + 0x8000)
>   
>   #define SRAM_BOOTLOADER_SZ	0x00
>   
> -#define OMAP24XX_VA_REQINFOPERM0	OMAP2_L3_IO_ADDRESS(0x68005048)
> -#define OMAP24XX_VA_READPERM0		OMAP2_L3_IO_ADDRESS(0x68005050)
> -#define OMAP24XX_VA_WRITEPERM0		OMAP2_L3_IO_ADDRESS(0x68005058)
> -
>   #define OMAP34XX_VA_REQINFOPERM0	OMAP2_L3_IO_ADDRESS(0x68012848)
>   #define OMAP34XX_VA_READPERM0		OMAP2_L3_IO_ADDRESS(0x68012850)
>   #define OMAP34XX_VA_WRITEPERM0		OMAP2_L3_IO_ADDRESS(0x68012858)
> @@ -120,18 +115,11 @@ static int is_sram_locked(void)
>   {
>   	if (omap_type() == OMAP2_DEVICE_TYPE_GP) {
>   		/* RAMFW: R/W access to all initiators for all qualifier sets */
> -		if (cpu_is_omap242x()) {
> -			writel_relaxed(0xFF, OMAP24XX_VA_REQINFOPERM0); /* all q-vects */
> -			writel_relaxed(0xCFDE, OMAP24XX_VA_READPERM0);  /* all i-read */
> -			writel_relaxed(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */
> -		}
> -		if (cpu_is_omap34xx()) {
> -			writel_relaxed(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */
> -			writel_relaxed(0xFFFF, OMAP34XX_VA_READPERM0);  /* all i-read */
> -			writel_relaxed(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */
> -			writel_relaxed(0x0, OMAP34XX_VA_ADDR_MATCH2);
> -			writel_relaxed(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0);
> -		}
> +		writel_relaxed(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */
> +		writel_relaxed(0xFFFF, OMAP34XX_VA_READPERM0);  /* all i-read */
> +		writel_relaxed(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */
> +		writel_relaxed(0x0, OMAP34XX_VA_ADDR_MATCH2);
> +		writel_relaxed(0xFFFFFFFF, OMAP34XX_VA_SMS_RG_ATT0);
>   		return 0;
>   	} else
>   		return 1; /* assume locked with no PPA or security driver */
> @@ -147,30 +135,17 @@ static void __init omap_detect_sram(void)
>   {
>   	omap_sram_skip = SRAM_BOOTLOADER_SZ;
>   	if (is_sram_locked()) {
> -		if (cpu_is_omap34xx()) {
> -			omap_sram_start = OMAP3_SRAM_PUB_PA;
> -			if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) ||
> -			    (omap_type() == OMAP2_DEVICE_TYPE_SEC)) {
> -				omap_sram_size = 0x7000; /* 28K */
> -				omap_sram_skip += SZ_16K;
> -			} else {
> -				omap_sram_size = 0x8000; /* 32K */
> -			}
> +		omap_sram_start = OMAP3_SRAM_PUB_PA;
> +		if ((omap_type() == OMAP2_DEVICE_TYPE_EMU) ||
> +		    (omap_type() == OMAP2_DEVICE_TYPE_SEC)) {
> +			omap_sram_size = 0x7000; /* 28K */
> +			omap_sram_skip += SZ_16K;
>   		} else {
> -			omap_sram_start = OMAP2_SRAM_PUB_PA;
> -			omap_sram_size = 0x800; /* 2K */
> +			omap_sram_size = 0x8000; /* 32K */
>   		}
>   	} else {
> -		if (cpu_is_omap34xx()) {
> -			omap_sram_start = OMAP3_SRAM_PA;
> -			omap_sram_size = 0x10000; /* 64K */
> -		} else {
> -			omap_sram_start = OMAP2_SRAM_PA;
> -			if (cpu_is_omap242x())
> -				omap_sram_size = 0xa0000; /* 640K */
> -			else if (cpu_is_omap243x())
> -				omap_sram_size = 0x10000; /* 64K */
> -		}
> +		omap_sram_start = OMAP3_SRAM_PA;
> +		omap_sram_size = 0x10000; /* 64K */
>   	}
>   }
>   
> @@ -181,24 +156,20 @@ static void __init omap2_map_sram(void)
>   {
>   	unsigned long base;
>   	int pages;
> -	int cached = 1;
> -
> -	if (cpu_is_omap34xx()) {
> -		/*
> -		 * SRAM must be marked as non-cached on OMAP3 since the
> -		 * CORE DPLL M2 divider change code (in SRAM) runs with the
> -		 * SDRAM controller disabled, and if it is marked cached,
> -		 * the ARM may attempt to write cache lines back to SDRAM
> -		 * which will cause the system to hang.
> -		 */
> -		cached = 0;
> -	}
>   
>   	if (omap_sram_size == 0)
>   		return;
>   
>   	omap_sram_start = ROUND_DOWN(omap_sram_start, PAGE_SIZE);
> -	omap_sram_base = __arm_ioremap_exec(omap_sram_start, omap_sram_size, cached);
> +	/*
> +	 * SRAM must be marked as non-cached on OMAP3 since the
> +	 * CORE DPLL M2 divider change code (in SRAM) runs with the
> +	 * SDRAM controller disabled, and if it is marked cached,
> +	 * the ARM may attempt to write cache lines back to SDRAM
> +	 * which will cause the system to hang.
> +	 */
> +
> +	omap_sram_base = __arm_ioremap_exec(omap_sram_start, omap_sram_size, 0);
>   	if (!omap_sram_base) {
>   		pr_err("SRAM: Could not map\n");
>   		return;
> @@ -219,78 +190,6 @@ static void __init omap2_map_sram(void)
>   	set_memory_rox(base, pages);
>   }
>   
> -static void (*_omap2_sram_ddr_init)(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
> -			      u32 base_cs, u32 force_unlock);
> -
> -void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
> -		   u32 base_cs, u32 force_unlock)
> -{
> -	BUG_ON(!_omap2_sram_ddr_init);
> -	_omap2_sram_ddr_init(slow_dll_ctrl, fast_dll_ctrl,
> -			     base_cs, force_unlock);
> -}
> -
> -static void (*_omap2_sram_reprogram_sdrc)(u32 perf_level, u32 dll_val,
> -					  u32 mem_type);
> -
> -void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val, u32 mem_type)
> -{
> -	BUG_ON(!_omap2_sram_reprogram_sdrc);
> -	_omap2_sram_reprogram_sdrc(perf_level, dll_val, mem_type);
> -}
> -
> -static u32 (*_omap2_set_prcm)(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
> -
> -u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass)
> -{
> -	BUG_ON(!_omap2_set_prcm);
> -	return _omap2_set_prcm(dpll_ctrl_val, sdrc_rfr_val, bypass);
> -}
> -
> -#ifdef CONFIG_SOC_OMAP2420
> -static int __init omap242x_sram_init(void)
> -{
> -	_omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init,
> -					omap242x_sram_ddr_init_sz);
> -
> -	_omap2_sram_reprogram_sdrc = omap_sram_push(omap242x_sram_reprogram_sdrc,
> -					    omap242x_sram_reprogram_sdrc_sz);
> -
> -	_omap2_set_prcm = omap_sram_push(omap242x_sram_set_prcm,
> -					 omap242x_sram_set_prcm_sz);
> -
> -	return 0;
> -}
> -#else
> -static inline int omap242x_sram_init(void)
> -{
> -	return 0;
> -}
> -#endif
> -
> -#ifdef CONFIG_SOC_OMAP2430
> -static int __init omap243x_sram_init(void)
> -{
> -	_omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init,
> -					omap243x_sram_ddr_init_sz);
> -
> -	_omap2_sram_reprogram_sdrc = omap_sram_push(omap243x_sram_reprogram_sdrc,
> -					    omap243x_sram_reprogram_sdrc_sz);
> -
> -	_omap2_set_prcm = omap_sram_push(omap243x_sram_set_prcm,
> -					 omap243x_sram_set_prcm_sz);
> -
> -	return 0;
> -}
> -#else
> -static inline int omap243x_sram_init(void)
> -{
> -	return 0;
> -}
> -#endif
> -
> -#ifdef CONFIG_ARCH_OMAP3
> -
>   void omap3_sram_restore_context(void)
>   {
>   	omap_sram_reset();
> @@ -303,24 +202,12 @@ static inline int omap34xx_sram_init(void)
>   	omap3_sram_restore_context();
>   	return 0;
>   }
> -#else
> -static inline int omap34xx_sram_init(void)
> -{
> -	return 0;
> -}
> -#endif /* CONFIG_ARCH_OMAP3 */
>   
>   int __init omap_sram_init(void)
>   {
>   	omap_detect_sram();
>   	omap2_map_sram();
> -
> -	if (cpu_is_omap242x())
> -		omap242x_sram_init();
> -	else if (cpu_is_omap2430())
> -		omap243x_sram_init();
> -	else if (cpu_is_omap34xx())
> -		omap34xx_sram_init();
> +	omap34xx_sram_init();
>   
>   	return 0;
>   }
> diff --git a/arch/arm/mach-omap2/sram.h b/arch/arm/mach-omap2/sram.h
> index 030cabc39821..2db2c4598cdb 100644
> --- a/arch/arm/mach-omap2/sram.h
> +++ b/arch/arm/mach-omap2/sram.h
> @@ -5,43 +5,12 @@
>   
>   #ifndef __ASSEMBLY__
>   
> -extern void omap2_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
> -				u32 base_cs, u32 force_unlock);
> -extern void omap2_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
> -				      u32 mem_type);
> -extern u32 omap2_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val, int bypass);
> -
>   extern void omap3_sram_restore_context(void);
>   
>   extern int __init omap_sram_init(void);
>   
>   extern void *omap_sram_push(void *funcp, unsigned long size);
>   
> -extern void omap242x_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
> -						u32 base_cs, u32 force_unlock);
> -extern unsigned long omap242x_sram_ddr_init_sz;
> -
> -extern u32 omap242x_sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val,
> -						int bypass);
> -extern unsigned long omap242x_sram_set_prcm_sz;
> -
> -extern void omap242x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
> -						u32 mem_type);
> -extern unsigned long omap242x_sram_reprogram_sdrc_sz;
> -
> -
> -extern void omap243x_sram_ddr_init(u32 *slow_dll_ctrl, u32 fast_dll_ctrl,
> -						u32 base_cs, u32 force_unlock);
> -extern unsigned long omap243x_sram_ddr_init_sz;
> -
> -extern u32 omap243x_sram_set_prcm(u32 dpll_ctrl_val, u32 sdrc_rfr_val,
> -						int bypass);
> -extern unsigned long omap243x_sram_set_prcm_sz;
> -
> -extern void omap243x_sram_reprogram_sdrc(u32 perf_level, u32 dll_val,
> -						u32 mem_type);
> -extern unsigned long omap243x_sram_reprogram_sdrc_sz;
> -
>   #ifdef CONFIG_PM
>   extern void omap_push_sram_idle(void);
>   #else
> @@ -54,5 +23,4 @@ static inline void omap_push_sram_idle(void) {}
>    * OMAP2+: define the SRAM PA addresses.
>    * Used by the SRAM management code and the idle sleep code.
>    */
> -#define OMAP2_SRAM_PA		0x40200000
>   #define OMAP3_SRAM_PA           0x40200000
> diff --git a/arch/arm/mach-omap2/sram242x.S b/arch/arm/mach-omap2/sram242x.S
> deleted file mode 100644
> index 92ef21ac2ac1..000000000000
> --- a/arch/arm/mach-omap2/sram242x.S
> +++ /dev/null
> @@ -1,317 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * linux/arch/arm/mach-omap2/sram242x.S
> - *
> - * Omap2 specific functions that need to be run in internal SRAM
> - *
> - * (C) Copyright 2004
> - * Texas Instruments, <www.ti.com>
> - * Richard Woodruff <r-woodruff2@ti.com>
> - *
> - * Richard Woodruff notes that any changes to this code must be carefully
> - * audited and tested to ensure that they don't cause a TLB miss while
> - * the SDRAM is inaccessible.  Such a situation will crash the system
> - * since it will cause the ARM MMU to attempt to walk the page tables.
> - * These crashes may be intermittent.
> - */
> -#include <linux/linkage.h>
> -
> -#include <asm/assembler.h>
> -
> -#include "soc.h"
> -#include "iomap.h"
> -#include "prm2xxx.h"
> -#include "cm2xxx.h"
> -#include "sdrc.h"
> -
> -	.text
> -
> -	.align	3
> -ENTRY(omap242x_sram_ddr_init)
> -	stmfd	sp!, {r0 - r12, lr}	@ save registers on stack
> -
> -	mov	r12, r2			@ capture CS1 vs CS0
> -	mov	r8, r3			@ capture force parameter
> -
> -	/* frequency shift down */
> -	ldr	r2, omap242x_sdi_cm_clksel2_pll	@ get address of dpllout reg
> -	mov	r3, #0x1		@ value for 1x operation
> -	str	r3, [r2]		@ go to L1-freq operation
> -
> -	/* voltage shift down */
> -	mov r9, #0x1			@ set up for L1 voltage call
> -	bl voltage_shift		@ go drop voltage
> -
> -	/* dll lock mode */
> -	ldr	r11, omap242x_sdi_sdrc_dlla_ctrl	@ addr of dlla ctrl
> -	ldr	r10, [r11]		@ get current val
> -	cmp	r12, #0x1		@ cs1 base (2422 es2.05/1)
> -	addeq	r11, r11, #0x8		@ if cs1 base, move to DLLB
> -	mvn	r9, #0x4		@ mask to get clear bit2
> -	and	r10, r10, r9		@ clear bit2 for lock mode.
> -	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
> -	orr	r10, r10, #0x2		@ 90 degree phase for all below 133MHz
> -	str	r10, [r11]		@ commit to DLLA_CTRL
> -	bl	i_dll_wait		@ wait for dll to lock
> -
> -	/* get dll value */
> -	add	r11, r11, #0x4		@ get addr of status reg
> -	ldr	r10, [r11]		@ get locked value
> -
> -	/* voltage shift up */
> -	mov r9, #0x0			@ shift back to L0-voltage
> -	bl voltage_shift		@ go raise voltage
> -
> -	/* frequency shift up */
> -	mov	r3, #0x2		@ value for 2x operation
> -	str	r3, [r2]		@ go to L0-freq operation
> -
> -	/* reset entry mode for dllctrl */
> -	sub	r11, r11, #0x4		@ move from status to ctrl
> -	cmp	r12, #0x1		@ normalize if cs1 based
> -	subeq	r11, r11, #0x8		@ possibly back to DLLA
> -	cmp	r8, #0x1		@ if forced unlock exit
> -	orreq	r1, r1, #0x4		@ make sure exit with unlocked value
> -	str	r1, [r11]		@ restore DLLA_CTRL high value
> -	add	r11, r11, #0x8		@ move to DLLB_CTRL addr
> -	str	r1, [r11]		@ set value DLLB_CTRL
> -	bl	i_dll_wait		@ wait for possible lock
> -
> -	/* set up for return, DDR should be good */
> -	str r10, [r0]			@ write dll_status and return counter
> -	ldmfd	sp!, {r0 - r12, pc}	@ restore regs and return
> -
> -	/* ensure the DLL has relocked */
> -i_dll_wait:
> -	mov	r4, #0x800		@ delay DLL relock, min 0x400 L3 clocks
> -i_dll_delay:
> -	subs	r4, r4, #0x1
> -	bne	i_dll_delay
> -	ret	lr
> -
> -	/*
> -	 * shift up or down voltage, use R9 as input to tell level.
> -	 * wait for it to finish, use 32k sync counter, 1tick=31uS.
> -	 */
> -voltage_shift:
> -	ldr	r4, omap242x_sdi_prcm_voltctrl	@ get addr of volt ctrl.
> -	ldr	r5, [r4]		@ get value.
> -	ldr	r6, prcm_mask_val	@ get value of mask
> -	and	r5, r5, r6		@ apply mask to clear bits
> -	orr	r5, r5, r9		@ bulld value for L0/L1-volt operation.
> -	str	r5, [r4]		@ set up for change.
> -	mov	r3, #0x4000		@ get val for force
> -	orr	r5, r5, r3		@ build value for force
> -	str	r5, [r4]		@ Force transition to L1
> -
> -	ldr	r3, omap242x_sdi_timer_32ksynct_cr	@ get addr of counter
> -	ldr	r5, [r3]		@ get value
> -	add	r5, r5, #0x3		@ give it at most 93uS
> -volt_delay:
> -	ldr	r7, [r3]		@ get timer value
> -	cmp	r5, r7			@ time up?
> -	bhi	volt_delay		@ not yet->branch
> -	ret	lr			@ back to caller.
> -
> -omap242x_sdi_cm_clksel2_pll:
> -	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
> -omap242x_sdi_sdrc_dlla_ctrl:
> -	.word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL)
> -omap242x_sdi_prcm_voltctrl:
> -	.word OMAP2420_PRCM_VOLTCTRL
> -prcm_mask_val:
> -	.word 0xFFFF3FFC
> -omap242x_sdi_timer_32ksynct_cr:
> -	.word OMAP2_L4_IO_ADDRESS(OMAP2420_32KSYNCT_BASE + 0x010)
> -ENTRY(omap242x_sram_ddr_init_sz)
> -	.word	. - omap242x_sram_ddr_init
> -
> -/*
> - * Reprograms memory timings.
> - * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR]
> - * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0
> - */
> -	.align	3
> -ENTRY(omap242x_sram_reprogram_sdrc)
> -	stmfd	sp!, {r0 - r10, lr}	@ save registers on stack
> -	mov	r3, #0x0		@ clear for mrc call
> -	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier, finish ARM SDR/DDR
> -	nop
> -	nop
> -	ldr	r6, omap242x_srs_sdrc_rfr_ctrl	@ get addr of refresh reg
> -	ldr	r5, [r6]		@ get value
> -	mov	r5, r5, lsr #8		@ isolate rfr field and drop burst
> -
> -	cmp	r0, #0x1		@ going to half speed?
> -	movne	r9, #0x0		@ if up set flag up for pre up, hi volt
> -
> -	blne	voltage_shift_c		@ adjust voltage
> -
> -	cmp	r0, #0x1		@ going to half speed (post branch link)
> -	moveq	r5, r5, lsr #1		@ divide by 2 if to half
> -	movne	r5, r5, lsl #1		@ mult by 2 if to full
> -	mov	r5, r5, lsl #8		@ put rfr field back into place
> -	add	r5, r5, #0x1		@ turn on burst of 1
> -	ldr	r4, omap242x_srs_cm_clksel2_pll	@ get address of out reg
> -	ldr	r3, [r4]		@ get curr value
> -	orr	r3, r3, #0x3
> -	bic	r3, r3, #0x3		@ clear lower bits
> -	orr	r3, r3, r0		@ new state value
> -	str	r3, [r4]		@ set new state (pll/x, x=1 or 2)
> -	nop
> -	nop
> -
> -	moveq	r9, #0x1		@ if speed down, post down, drop volt
> -	bleq	voltage_shift_c
> -
> -	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier
> -	str	r5, [r6]		@ set new RFR_1 value
> -	add	r6, r6, #0x30		@ get RFR_2 addr
> -	str	r5, [r6]		@ set RFR_2
> -	nop
> -	cmp	r2, #0x1		@ (SDR or DDR) do we need to adjust DLL
> -	bne	freq_out		@ leave if SDR, no DLL function
> -
> -	/* With DDR, we need to take care of the DLL for the frequency change */
> -	ldr	r2, omap242x_srs_sdrc_dlla_ctrl	@ addr of dlla ctrl
> -	str	r1, [r2]		@ write out new SDRC_DLLA_CTRL
> -	add	r2, r2, #0x8		@ addr to SDRC_DLLB_CTRL
> -	str	r1, [r2]		@ commit to SDRC_DLLB_CTRL
> -	mov	r1, #0x2000		@ wait DLL relock, min 0x400 L3 clocks
> -dll_wait:
> -	subs	r1, r1, #0x1
> -	bne	dll_wait
> -freq_out:
> -	ldmfd	sp!, {r0 - r10, pc}	@ restore regs and return
> -
> -    /*
> -     * shift up or down voltage, use R9 as input to tell level.
> -     *	wait for it to finish, use 32k sync counter, 1tick=31uS.
> -     */
> -voltage_shift_c:
> -	ldr	r10, omap242x_srs_prcm_voltctrl	@ get addr of volt ctrl
> -	ldr	r8, [r10]		@ get value
> -	ldr	r7, ddr_prcm_mask_val	@ get value of mask
> -	and	r8, r8, r7		@ apply mask to clear bits
> -	orr	r8, r8, r9		@ bulld value for L0/L1-volt operation.
> -	str	r8, [r10]		@ set up for change.
> -	mov	r7, #0x4000		@ get val for force
> -	orr	r8, r8, r7		@ build value for force
> -	str	r8, [r10]		@ Force transition to L1
> -
> -	ldr	r10, omap242x_srs_timer_32ksynct	@ get addr of counter
> -	ldr	r8, [r10]		@ get value
> -	add	r8, r8, #0x2		@ give it at most 62uS (min 31+)
> -volt_delay_c:
> -	ldr	r7, [r10]		@ get timer value
> -	cmp	r8, r7			@ time up?
> -	bhi	volt_delay_c		@ not yet->branch
> -	ret	lr			@ back to caller
> -
> -omap242x_srs_cm_clksel2_pll:
> -	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
> -omap242x_srs_sdrc_dlla_ctrl:
> -	.word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL)
> -omap242x_srs_sdrc_rfr_ctrl:
> -	.word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
> -omap242x_srs_prcm_voltctrl:
> -	.word OMAP2420_PRCM_VOLTCTRL
> -ddr_prcm_mask_val:
> -	.word 0xFFFF3FFC
> -omap242x_srs_timer_32ksynct:
> -	.word OMAP2_L4_IO_ADDRESS(OMAP2420_32KSYNCT_BASE + 0x010)
> -
> -ENTRY(omap242x_sram_reprogram_sdrc_sz)
> -	.word	. - omap242x_sram_reprogram_sdrc
> -
> -/*
> - * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode.
> - */
> -	.align	3
> -ENTRY(omap242x_sram_set_prcm)
> -	stmfd	sp!, {r0-r12, lr}	@ regs to stack
> -	adr	r4, pbegin		@ addr of preload start
> -	adr	r8, pend		@ addr of preload end
> -	mcrr	p15, 1, r8, r4, c12	@ preload into icache
> -pbegin:
> -	/* move into fast relock bypass */
> -	ldr	r8, omap242x_ssp_pll_ctl	@ get addr
> -	ldr	r5, [r8]		@ get val
> -	mvn	r6, #0x3		@ clear mask
> -	and	r5, r5, r6		@ clear field
> -	orr	r7, r5, #0x2		@ fast relock val
> -	str	r7, [r8]		@ go to fast relock
> -	ldr	r4, omap242x_ssp_pll_stat	@ addr of stat
> -block:
> -	/* wait for bypass */
> -	ldr	r8, [r4]		@ stat value
> -	and	r8, r8, #0x3		@ mask for stat
> -	cmp	r8, #0x1		@ there yet
> -	bne	block			@ loop if not
> -
> -	/* set new dpll dividers _after_ in bypass */
> -	ldr	r4, omap242x_ssp_pll_div	@ get addr
> -	str	r0, [r4]		@ set dpll ctrl val
> -
> -	ldr	r4, omap242x_ssp_set_config	@ get addr
> -	mov	r8, #1			@ valid cfg msk
> -	str	r8, [r4]		@ make dividers take
> -
> -	mov	r4, #100		@ dead spin a bit
> -wait_a_bit:
> -	subs	r4, r4, #1		@ dec loop
> -	bne	wait_a_bit		@ delay done?
> -
> -	/* check if staying in bypass */
> -	cmp	r2, #0x1		@ stay in bypass?
> -	beq	pend			@ jump over dpll relock
> -
> -	/* relock DPLL with new vals */
> -	ldr	r5, omap242x_ssp_pll_stat	@ get addr
> -	ldr	r4, omap242x_ssp_pll_ctl	@ get addr
> -	orr	r8, r7, #0x3		@ val for lock dpll
> -	str	r8, [r4]		@ set val
> -	mov	r0, #1000		@ dead spin a bit
> -wait_more:
> -	subs	r0, r0, #1		@ dec loop
> -	bne	wait_more		@ delay done?
> -wait_lock:
> -	ldr	r8, [r5]		@ get lock val
> -	and	r8, r8, #3		@ isolate field
> -	cmp	r8, #2			@ locked?
> -	bne	wait_lock		@ wait if not
> -pend:
> -	/* update memory timings & briefly lock dll */
> -	ldr	r4, omap242x_ssp_sdrc_rfr	@ get addr
> -	str	r1, [r4]		@ update refresh timing
> -	ldr	r11, omap242x_ssp_dlla_ctrl	@ get addr of DLLA ctrl
> -	ldr	r10, [r11]		@ get current val
> -	mvn	r9, #0x4		@ mask to get clear bit2
> -	and	r10, r10, r9		@ clear bit2 for lock mode
> -	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
> -	str	r10, [r11]		@ commit to DLLA_CTRL
> -	add	r11, r11, #0x8		@ move to dllb
> -	str	r10, [r11]		@ hit DLLB also
> -
> -	mov	r4, #0x800		@ relock time (min 0x400 L3 clocks)
> -wait_dll_lock:
> -	subs	r4, r4, #0x1
> -	bne	wait_dll_lock
> -	nop
> -	ldmfd	sp!, {r0-r12, pc}	@ restore regs and return
> -
> -omap242x_ssp_set_config:
> -	.word OMAP2420_PRCM_CLKCFG_CTRL
> -omap242x_ssp_pll_ctl:
> -	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKEN)
> -omap242x_ssp_pll_stat:
> -	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_IDLEST)
> -omap242x_ssp_pll_div:
> -	.word OMAP2420_CM_REGADDR(PLL_MOD, CM_CLKSEL1)
> -omap242x_ssp_sdrc_rfr:
> -	.word OMAP242X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
> -omap242x_ssp_dlla_ctrl:
> -	.word OMAP242X_SDRC_REGADDR(SDRC_DLLA_CTRL)
> -
> -ENTRY(omap242x_sram_set_prcm_sz)
> -	.word	. - omap242x_sram_set_prcm
> diff --git a/arch/arm/mach-omap2/sram243x.S b/arch/arm/mach-omap2/sram243x.S
> deleted file mode 100644
> index faf03b7f08f5..000000000000
> --- a/arch/arm/mach-omap2/sram243x.S
> +++ /dev/null
> @@ -1,317 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * linux/arch/arm/mach-omap2/sram243x.S
> - *
> - * Omap2 specific functions that need to be run in internal SRAM
> - *
> - * (C) Copyright 2004
> - * Texas Instruments, <www.ti.com>
> - * Richard Woodruff <r-woodruff2@ti.com>
> - *
> - * Richard Woodruff notes that any changes to this code must be carefully
> - * audited and tested to ensure that they don't cause a TLB miss while
> - * the SDRAM is inaccessible.  Such a situation will crash the system
> - * since it will cause the ARM MMU to attempt to walk the page tables.
> - * These crashes may be intermittent.
> - */
> -#include <linux/linkage.h>
> -
> -#include <asm/assembler.h>
> -
> -#include "soc.h"
> -#include "iomap.h"
> -#include "prm2xxx.h"
> -#include "cm2xxx.h"
> -#include "sdrc.h"
> -
> -	.text
> -
> -	.align	3
> -ENTRY(omap243x_sram_ddr_init)
> -	stmfd	sp!, {r0 - r12, lr}	@ save registers on stack
> -
> -	mov	r12, r2			@ capture CS1 vs CS0
> -	mov	r8, r3			@ capture force parameter
> -
> -	/* frequency shift down */
> -	ldr	r2, omap243x_sdi_cm_clksel2_pll	@ get address of dpllout reg
> -	mov	r3, #0x1		@ value for 1x operation
> -	str	r3, [r2]		@ go to L1-freq operation
> -
> -	/* voltage shift down */
> -	mov r9, #0x1			@ set up for L1 voltage call
> -	bl voltage_shift		@ go drop voltage
> -
> -	/* dll lock mode */
> -	ldr	r11, omap243x_sdi_sdrc_dlla_ctrl	@ addr of dlla ctrl
> -	ldr	r10, [r11]		@ get current val
> -	cmp	r12, #0x1		@ cs1 base (2422 es2.05/1)
> -	addeq	r11, r11, #0x8		@ if cs1 base, move to DLLB
> -	mvn	r9, #0x4		@ mask to get clear bit2
> -	and	r10, r10, r9		@ clear bit2 for lock mode.
> -	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
> -	orr	r10, r10, #0x2		@ 90 degree phase for all below 133MHz
> -	str	r10, [r11]		@ commit to DLLA_CTRL
> -	bl	i_dll_wait		@ wait for dll to lock
> -
> -	/* get dll value */
> -	add	r11, r11, #0x4		@ get addr of status reg
> -	ldr	r10, [r11]		@ get locked value
> -
> -	/* voltage shift up */
> -	mov r9, #0x0			@ shift back to L0-voltage
> -	bl voltage_shift		@ go raise voltage
> -
> -	/* frequency shift up */
> -	mov	r3, #0x2		@ value for 2x operation
> -	str	r3, [r2]		@ go to L0-freq operation
> -
> -	/* reset entry mode for dllctrl */
> -	sub	r11, r11, #0x4		@ move from status to ctrl
> -	cmp	r12, #0x1		@ normalize if cs1 based
> -	subeq	r11, r11, #0x8		@ possibly back to DLLA
> -	cmp	r8, #0x1		@ if forced unlock exit
> -	orreq	r1, r1, #0x4		@ make sure exit with unlocked value
> -	str	r1, [r11]		@ restore DLLA_CTRL high value
> -	add	r11, r11, #0x8		@ move to DLLB_CTRL addr
> -	str	r1, [r11]		@ set value DLLB_CTRL
> -	bl	i_dll_wait		@ wait for possible lock
> -
> -	/* set up for return, DDR should be good */
> -	str r10, [r0]			@ write dll_status and return counter
> -	ldmfd	sp!, {r0 - r12, pc}	@ restore regs and return
> -
> -	/* ensure the DLL has relocked */
> -i_dll_wait:
> -	mov	r4, #0x800		@ delay DLL relock, min 0x400 L3 clocks
> -i_dll_delay:
> -	subs	r4, r4, #0x1
> -	bne	i_dll_delay
> -	ret	lr
> -
> -	/*
> -	 * shift up or down voltage, use R9 as input to tell level.
> -	 * wait for it to finish, use 32k sync counter, 1tick=31uS.
> -	 */
> -voltage_shift:
> -	ldr	r4, omap243x_sdi_prcm_voltctrl	@ get addr of volt ctrl.
> -	ldr	r5, [r4]		@ get value.
> -	ldr	r6, prcm_mask_val	@ get value of mask
> -	and	r5, r5, r6		@ apply mask to clear bits
> -	orr	r5, r5, r9		@ bulld value for L0/L1-volt operation.
> -	str	r5, [r4]		@ set up for change.
> -	mov	r3, #0x4000		@ get val for force
> -	orr	r5, r5, r3		@ build value for force
> -	str	r5, [r4]		@ Force transition to L1
> -
> -	ldr	r3, omap243x_sdi_timer_32ksynct_cr	@ get addr of counter
> -	ldr	r5, [r3]		@ get value
> -	add	r5, r5, #0x3		@ give it at most 93uS
> -volt_delay:
> -	ldr	r7, [r3]		@ get timer value
> -	cmp	r5, r7			@ time up?
> -	bhi	volt_delay		@ not yet->branch
> -	ret	lr			@ back to caller.
> -
> -omap243x_sdi_cm_clksel2_pll:
> -	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
> -omap243x_sdi_sdrc_dlla_ctrl:
> -	.word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL)
> -omap243x_sdi_prcm_voltctrl:
> -	.word OMAP2430_PRCM_VOLTCTRL
> -prcm_mask_val:
> -	.word 0xFFFF3FFC
> -omap243x_sdi_timer_32ksynct_cr:
> -	.word OMAP2_L4_IO_ADDRESS(OMAP2430_32KSYNCT_BASE + 0x010)
> -ENTRY(omap243x_sram_ddr_init_sz)
> -	.word	. - omap243x_sram_ddr_init
> -
> -/*
> - * Reprograms memory timings.
> - * r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR]
> - * PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0
> - */
> -	.align	3
> -ENTRY(omap243x_sram_reprogram_sdrc)
> -	stmfd	sp!, {r0 - r10, lr}	@ save registers on stack
> -	mov	r3, #0x0		@ clear for mrc call
> -	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier, finish ARM SDR/DDR
> -	nop
> -	nop
> -	ldr	r6, omap243x_srs_sdrc_rfr_ctrl	@ get addr of refresh reg
> -	ldr	r5, [r6]		@ get value
> -	mov	r5, r5, lsr #8		@ isolate rfr field and drop burst
> -
> -	cmp	r0, #0x1		@ going to half speed?
> -	movne	r9, #0x0		@ if up set flag up for pre up, hi volt
> -
> -	blne	voltage_shift_c		@ adjust voltage
> -
> -	cmp	r0, #0x1		@ going to half speed (post branch link)
> -	moveq	r5, r5, lsr #1		@ divide by 2 if to half
> -	movne	r5, r5, lsl #1		@ mult by 2 if to full
> -	mov	r5, r5, lsl #8		@ put rfr field back into place
> -	add	r5, r5, #0x1		@ turn on burst of 1
> -	ldr	r4, omap243x_srs_cm_clksel2_pll	@ get address of out reg
> -	ldr	r3, [r4]		@ get curr value
> -	orr	r3, r3, #0x3
> -	bic	r3, r3, #0x3		@ clear lower bits
> -	orr	r3, r3, r0		@ new state value
> -	str	r3, [r4]		@ set new state (pll/x, x=1 or 2)
> -	nop
> -	nop
> -
> -	moveq	r9, #0x1		@ if speed down, post down, drop volt
> -	bleq	voltage_shift_c
> -
> -	mcr	p15, 0, r3, c7, c10, 4	@ memory barrier
> -	str	r5, [r6]		@ set new RFR_1 value
> -	add	r6, r6, #0x30		@ get RFR_2 addr
> -	str	r5, [r6]		@ set RFR_2
> -	nop
> -	cmp	r2, #0x1		@ (SDR or DDR) do we need to adjust DLL
> -	bne	freq_out		@ leave if SDR, no DLL function
> -
> -	/* With DDR, we need to take care of the DLL for the frequency change */
> -	ldr	r2, omap243x_srs_sdrc_dlla_ctrl	@ addr of dlla ctrl
> -	str	r1, [r2]		@ write out new SDRC_DLLA_CTRL
> -	add	r2, r2, #0x8		@ addr to SDRC_DLLB_CTRL
> -	str	r1, [r2]		@ commit to SDRC_DLLB_CTRL
> -	mov	r1, #0x2000		@ wait DLL relock, min 0x400 L3 clocks
> -dll_wait:
> -	subs	r1, r1, #0x1
> -	bne	dll_wait
> -freq_out:
> -	ldmfd	sp!, {r0 - r10, pc}	@ restore regs and return
> -
> -    /*
> -     * shift up or down voltage, use R9 as input to tell level.
> -     *	wait for it to finish, use 32k sync counter, 1tick=31uS.
> -     */
> -voltage_shift_c:
> -	ldr	r10, omap243x_srs_prcm_voltctrl	@ get addr of volt ctrl
> -	ldr	r8, [r10]		@ get value
> -	ldr	r7, ddr_prcm_mask_val	@ get value of mask
> -	and	r8, r8, r7		@ apply mask to clear bits
> -	orr	r8, r8, r9		@ bulld value for L0/L1-volt operation.
> -	str	r8, [r10]		@ set up for change.
> -	mov	r7, #0x4000		@ get val for force
> -	orr	r8, r8, r7		@ build value for force
> -	str	r8, [r10]		@ Force transition to L1
> -
> -	ldr	r10, omap243x_srs_timer_32ksynct	@ get addr of counter
> -	ldr	r8, [r10]		@ get value
> -	add	r8, r8, #0x2		@ give it at most 62uS (min 31+)
> -volt_delay_c:
> -	ldr	r7, [r10]		@ get timer value
> -	cmp	r8, r7			@ time up?
> -	bhi	volt_delay_c		@ not yet->branch
> -	ret	lr			@ back to caller
> -
> -omap243x_srs_cm_clksel2_pll:
> -	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL2)
> -omap243x_srs_sdrc_dlla_ctrl:
> -	.word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL)
> -omap243x_srs_sdrc_rfr_ctrl:
> -	.word OMAP243X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
> -omap243x_srs_prcm_voltctrl:
> -	.word OMAP2430_PRCM_VOLTCTRL
> -ddr_prcm_mask_val:
> -	.word 0xFFFF3FFC
> -omap243x_srs_timer_32ksynct:
> -	.word OMAP2_L4_IO_ADDRESS(OMAP2430_32KSYNCT_BASE + 0x010)
> -
> -ENTRY(omap243x_sram_reprogram_sdrc_sz)
> -	.word	. - omap243x_sram_reprogram_sdrc
> -
> -/*
> - * Set dividers and pll. Also recalculate DLL value for DDR and unlock mode.
> - */
> -	.align	3
> -ENTRY(omap243x_sram_set_prcm)
> -	stmfd	sp!, {r0-r12, lr}	@ regs to stack
> -	adr	r4, pbegin		@ addr of preload start
> -	adr	r8, pend		@ addr of preload end
> -	mcrr	p15, 1, r8, r4, c12	@ preload into icache
> -pbegin:
> -	/* move into fast relock bypass */
> -	ldr	r8, omap243x_ssp_pll_ctl	@ get addr
> -	ldr	r5, [r8]		@ get val
> -	mvn	r6, #0x3		@ clear mask
> -	and	r5, r5, r6		@ clear field
> -	orr	r7, r5, #0x2		@ fast relock val
> -	str	r7, [r8]		@ go to fast relock
> -	ldr	r4, omap243x_ssp_pll_stat	@ addr of stat
> -block:
> -	/* wait for bypass */
> -	ldr	r8, [r4]		@ stat value
> -	and	r8, r8, #0x3		@ mask for stat
> -	cmp	r8, #0x1		@ there yet
> -	bne	block			@ loop if not
> -
> -	/* set new dpll dividers _after_ in bypass */
> -	ldr	r4, omap243x_ssp_pll_div	@ get addr
> -	str	r0, [r4]		@ set dpll ctrl val
> -
> -	ldr	r4, omap243x_ssp_set_config	@ get addr
> -	mov	r8, #1			@ valid cfg msk
> -	str	r8, [r4]		@ make dividers take
> -
> -	mov	r4, #100		@ dead spin a bit
> -wait_a_bit:
> -	subs	r4, r4, #1		@ dec loop
> -	bne	wait_a_bit		@ delay done?
> -
> -	/* check if staying in bypass */
> -	cmp	r2, #0x1		@ stay in bypass?
> -	beq	pend			@ jump over dpll relock
> -
> -	/* relock DPLL with new vals */
> -	ldr	r5, omap243x_ssp_pll_stat	@ get addr
> -	ldr	r4, omap243x_ssp_pll_ctl	@ get addr
> -	orr	r8, r7, #0x3		@ val for lock dpll
> -	str	r8, [r4]		@ set val
> -	mov	r0, #1000		@ dead spin a bit
> -wait_more:
> -	subs	r0, r0, #1		@ dec loop
> -	bne	wait_more		@ delay done?
> -wait_lock:
> -	ldr	r8, [r5]		@ get lock val
> -	and	r8, r8, #3		@ isolate field
> -	cmp	r8, #2			@ locked?
> -	bne	wait_lock		@ wait if not
> -pend:
> -	/* update memory timings & briefly lock dll */
> -	ldr	r4, omap243x_ssp_sdrc_rfr	@ get addr
> -	str	r1, [r4]		@ update refresh timing
> -	ldr	r11, omap243x_ssp_dlla_ctrl	@ get addr of DLLA ctrl
> -	ldr	r10, [r11]		@ get current val
> -	mvn	r9, #0x4		@ mask to get clear bit2
> -	and	r10, r10, r9		@ clear bit2 for lock mode
> -	orr	r10, r10, #0x8		@ make sure DLL on (es2 bit pos)
> -	str	r10, [r11]		@ commit to DLLA_CTRL
> -	add	r11, r11, #0x8		@ move to dllb
> -	str	r10, [r11]		@ hit DLLB also
> -
> -	mov	r4, #0x800		@ relock time (min 0x400 L3 clocks)
> -wait_dll_lock:
> -	subs	r4, r4, #0x1
> -	bne	wait_dll_lock
> -	nop
> -	ldmfd	sp!, {r0-r12, pc}	@ restore regs and return
> -
> -omap243x_ssp_set_config:
> -	.word OMAP2430_PRCM_CLKCFG_CTRL
> -omap243x_ssp_pll_ctl:
> -	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKEN)
> -omap243x_ssp_pll_stat:
> -	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_IDLEST)
> -omap243x_ssp_pll_div:
> -	.word OMAP2430_CM_REGADDR(PLL_MOD, CM_CLKSEL1)
> -omap243x_ssp_sdrc_rfr:
> -	.word OMAP243X_SDRC_REGADDR(SDRC_RFR_CTRL_0)
> -omap243x_ssp_dlla_ctrl:
> -	.word OMAP243X_SDRC_REGADDR(SDRC_DLLA_CTRL)
> -
> -ENTRY(omap243x_sram_set_prcm_sz)
> -	.word	. - omap243x_sram_set_prcm
> diff --git a/arch/arm/mach-omap2/usb-tusb6010.c b/arch/arm/mach-omap2/usb-tusb6010.c
> deleted file mode 100644
> index b46c254c2bc4..000000000000
> --- a/arch/arm/mach-omap2/usb-tusb6010.c
> +++ /dev/null
> @@ -1,217 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * linux/arch/arm/mach-omap2/usb-tusb6010.c
> - *
> - * Copyright (C) 2006 Nokia Corporation
> - */
> -
> -#include <linux/err.h>
> -#include <linux/string.h>
> -#include <linux/types.h>
> -#include <linux/errno.h>
> -#include <linux/delay.h>
> -#include <linux/platform_device.h>
> -#include <linux/export.h>
> -#include <linux/platform_data/usb-omap.h>
> -
> -#include <linux/usb/musb.h>
> -
> -#include "usb-tusb6010.h"
> -#include "gpmc.h"
> -
> -static u8		async_cs, sync_cs;
> -static unsigned		refclk_psec;
> -
> -static struct gpmc_settings tusb_async = {
> -	.wait_on_read	= true,
> -	.wait_on_write	= true,
> -	.device_width	= GPMC_DEVWIDTH_16BIT,
> -	.mux_add_data	= GPMC_MUX_AD,
> -};
> -
> -static struct gpmc_settings tusb_sync = {
> -	.burst_read	= true,
> -	.burst_write	= true,
> -	.sync_read	= true,
> -	.sync_write	= true,
> -	.wait_on_read	= true,
> -	.wait_on_write	= true,
> -	.burst_len	= GPMC_BURST_16,
> -	.device_width	= GPMC_DEVWIDTH_16BIT,
> -	.mux_add_data	= GPMC_MUX_AD,
> -};
> -
> -/* NOTE:  timings are from tusb 6010 datasheet Rev 1.8, 12-Sept 2006 */
> -
> -static int tusb_set_async_mode(unsigned sysclk_ps)
> -{
> -	struct gpmc_device_timings dev_t;
> -	struct gpmc_timings	t;
> -	unsigned		t_acsnh_advnh = sysclk_ps + 3000;
> -
> -	memset(&dev_t, 0, sizeof(dev_t));
> -
> -	dev_t.t_ceasu = 8 * 1000;
> -	dev_t.t_avdasu = t_acsnh_advnh - 7000;
> -	dev_t.t_ce_avd = 1000;
> -	dev_t.t_avdp_r = t_acsnh_advnh;
> -	dev_t.t_oeasu = t_acsnh_advnh + 1000;
> -	dev_t.t_oe = 300;
> -	dev_t.t_cez_r = 7000;
> -	dev_t.t_cez_w = dev_t.t_cez_r;
> -	dev_t.t_avdp_w = t_acsnh_advnh;
> -	dev_t.t_weasu = t_acsnh_advnh + 1000;
> -	dev_t.t_wpl = 300;
> -	dev_t.cyc_aavdh_we = 1;
> -
> -	gpmc_calc_timings(&t, &tusb_async, &dev_t);
> -
> -	return gpmc_cs_set_timings(async_cs, &t, &tusb_async);
> -}
> -
> -static int tusb_set_sync_mode(unsigned sysclk_ps)
> -{
> -	struct gpmc_device_timings dev_t;
> -	struct gpmc_timings	t;
> -	unsigned		t_scsnh_advnh = sysclk_ps + 3000;
> -
> -	memset(&dev_t, 0, sizeof(dev_t));
> -
> -	dev_t.clk = 11100;
> -	dev_t.t_bacc = 1000;
> -	dev_t.t_ces = 1000;
> -	dev_t.t_ceasu = 8 * 1000;
> -	dev_t.t_avdasu = t_scsnh_advnh - 7000;
> -	dev_t.t_ce_avd = 1000;
> -	dev_t.t_avdp_r = t_scsnh_advnh;
> -	dev_t.cyc_aavdh_oe = 3;
> -	dev_t.cyc_oe = 5;
> -	dev_t.t_ce_rdyz = 7000;
> -	dev_t.t_avdp_w = t_scsnh_advnh;
> -	dev_t.cyc_aavdh_we = 3;
> -	dev_t.cyc_wpl = 6;
> -
> -	gpmc_calc_timings(&t, &tusb_sync, &dev_t);
> -
> -	return gpmc_cs_set_timings(sync_cs, &t, &tusb_sync);
> -}
> -
> -/* tusb driver calls this when it changes the chip's clocking */
> -static int tusb6010_platform_retime(unsigned is_refclk)
> -{
> -	static const char	error[] =
> -		KERN_ERR "tusb6010 %s retime error %d\n";
> -
> -	unsigned	sysclk_ps;
> -	int		status;
> -
> -	if (!refclk_psec)
> -		return -ENODEV;
> -
> -	sysclk_ps = is_refclk ? refclk_psec : TUSB6010_OSCCLK_60;
> -
> -	status = tusb_set_async_mode(sysclk_ps);
> -	if (status < 0) {
> -		printk(error, "async", status);
> -		goto done;
> -	}
> -	status = tusb_set_sync_mode(sysclk_ps);
> -	if (status < 0)
> -		printk(error, "sync", status);
> -done:
> -	return status;
> -}
> -
> -static struct resource tusb_resources[] = {
> -	/* Order is significant!  The start/end fields
> -	 * are updated during setup..
> -	 */
> -	{ /* Asynchronous access */
> -		.flags	= IORESOURCE_MEM,
> -	},
> -	{ /* Synchronous access */
> -		.flags	= IORESOURCE_MEM,
> -	},
> -};
> -
> -static u64 tusb_dmamask = ~(u32)0;
> -
> -static struct platform_device tusb_device = {
> -	.name		= "musb-tusb",
> -	.id		= -1,
> -	.dev = {
> -		.dma_mask		= &tusb_dmamask,
> -		.coherent_dma_mask	= 0xffffffff,
> -	},
> -	.num_resources	= ARRAY_SIZE(tusb_resources),
> -	.resource	= tusb_resources,
> -};
> -
> -
> -/* this may be called only from board-*.c setup code */
> -int __init tusb6010_setup_interface(struct musb_hdrc_platform_data *data,
> -		unsigned int ps_refclk, unsigned int waitpin,
> -		unsigned int async, unsigned int sync,
> -		unsigned int dmachan)
> -{
> -	int		status;
> -	static char	error[] __initdata =
> -		KERN_ERR "tusb6010 init error %d, %d\n";
> -
> -	/* ASYNC region, primarily for PIO */
> -	status = gpmc_cs_request(async, SZ_16M, (unsigned long *)
> -				&tusb_resources[0].start);
> -	if (status < 0) {
> -		printk(error, 1, status);
> -		return status;
> -	}
> -	tusb_resources[0].end = tusb_resources[0].start + 0x9ff;
> -	tusb_async.wait_pin = waitpin;
> -	async_cs = async;
> -
> -	status = gpmc_cs_program_settings(async_cs, &tusb_async);
> -	if (status < 0)
> -		return status;
> -
> -	/* SYNC region, primarily for DMA */
> -	status = gpmc_cs_request(sync, SZ_16M, (unsigned long *)
> -				&tusb_resources[1].start);
> -	if (status < 0) {
> -		printk(error, 2, status);
> -		return status;
> -	}
> -	tusb_resources[1].end = tusb_resources[1].start + 0x9ff;
> -	tusb_sync.wait_pin = waitpin;
> -	sync_cs = sync;
> -
> -	status = gpmc_cs_program_settings(sync_cs, &tusb_sync);
> -	if (status < 0)
> -		return status;
> -
> -	/* set up memory timings ... can speed them up later */
> -	if (!ps_refclk) {
> -		printk(error, 4, status);
> -		return -ENODEV;
> -	}
> -	refclk_psec = ps_refclk;
> -	status = tusb6010_platform_retime(1);
> -	if (status < 0) {
> -		printk(error, 5, status);
> -		return status;
> -	}
> -
> -	/* finish device setup ... */
> -	if (!data) {
> -		printk(error, 6, status);
> -		return -ENODEV;
> -	}
> -	tusb_device.dev.platform_data = data;
> -
> -	/* so far so good ... register the device */
> -	status = platform_device_register(&tusb_device);
> -	if (status < 0) {
> -		printk(error, 7, status);
> -		return status;
> -	}
> -	return 0;
> -}
> diff --git a/arch/arm/mach-omap2/usb-tusb6010.h b/arch/arm/mach-omap2/usb-tusb6010.h
> deleted file mode 100644
> index d210ff6238c2..000000000000
> --- a/arch/arm/mach-omap2/usb-tusb6010.h
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -
> -#ifndef __USB_TUSB6010_H
> -#define __USB_TUSB6010_H
> -
> -extern int __init tusb6010_setup_interface(
> -		struct musb_hdrc_platform_data *data,
> -		unsigned int ps_refclk, unsigned int waitpin,
> -		unsigned int async_cs, unsigned int sync_cs,
> -		unsigned int dmachan);
> -
> -#endif /* __USB_TUSB6010_H */
> diff --git a/arch/arm/mach-omap2/voltagedomains2xxx_data.c b/arch/arm/mach-omap2/voltagedomains2xxx_data.c
> deleted file mode 100644
> index 9bc116fe3ba9..000000000000
> --- a/arch/arm/mach-omap2/voltagedomains2xxx_data.c
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * OMAP3 voltage domain data
> - *
> - * Copyright (C) 2011 Texas Instruments, Inc.
> - */
> -#include <linux/kernel.h>
> -#include <linux/init.h>
> -
> -#include "voltage.h"
> -
> -static struct voltagedomain omap2_voltdm_core = {
> -	.name = "core",
> -};
> -
> -static struct voltagedomain omap2_voltdm_wkup = {
> -	.name = "wakeup",
> -};
> -
> -static struct voltagedomain *voltagedomains_omap2[] __initdata = {
> -	&omap2_voltdm_core,
> -	&omap2_voltdm_wkup,
> -	NULL,
> -};
> -
> -void __init omap2xxx_voltagedomains_init(void)
> -{
> -	voltdm_init(voltagedomains_omap2);
> -}
> diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
> index 0189dfdcbbe1..a383ff8f446c 100644
> --- a/drivers/crypto/Kconfig
> +++ b/drivers/crypto/Kconfig
> @@ -337,7 +337,7 @@ config CRYPTO_DEV_OMAP_SHAM
>   
>   config CRYPTO_DEV_OMAP_AES
>   	tristate "Support for OMAP AES hw engine"
> -	depends on ARCH_OMAP2 || ARCH_OMAP3 || ARCH_OMAP2PLUS
> +	depends on ARCH_OMAP3 || ARCH_OMAP2PLUS
>   	select CRYPTO_AES
>   	select CRYPTO_SKCIPHER
>   	select CRYPTO_ENGINE
> diff --git a/drivers/media/platform/ti/omap/Kconfig b/drivers/media/platform/ti/omap/Kconfig
> index a9dbe1097775..c41812b324ad 100644
> --- a/drivers/media/platform/ti/omap/Kconfig
> +++ b/drivers/media/platform/ti/omap/Kconfig
> @@ -9,9 +9,9 @@ config VIDEO_OMAP2_VOUT
>   	depends on V4L_PLATFORM_DRIVERS
>   	depends on MMU
>   	depends on FB_OMAP2 || (COMPILE_TEST && FB_OMAP2=n)
> -	depends on ARCH_OMAP2 || ARCH_OMAP3 || COMPILE_TEST
> +	depends on ARCH_OMAP3 || COMPILE_TEST
>   	depends on VIDEO_DEV
>   	select VIDEOBUF2_DMA_CONTIG
> -	select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
> +	select OMAP2_VRFB if ARCH_OMAP3
>   	help
>   	  V4L2 Display driver support for OMAP2/3 based boards.
> diff --git a/drivers/mtd/nand/onenand/Kconfig b/drivers/mtd/nand/onenand/Kconfig
> index 7d57836bf32f..8a362fd5bfc4 100644
> --- a/drivers/mtd/nand/onenand/Kconfig
> +++ b/drivers/mtd/nand/onenand/Kconfig
> @@ -23,8 +23,8 @@ config MTD_ONENAND_GENERIC
>   	  Support for OneNAND flash via platform device driver.
>   
>   config MTD_ONENAND_OMAP2
> -	tristate "OneNAND on OMAP2/OMAP3 support"
> -	depends on ARCH_OMAP2 || ARCH_OMAP3 || (COMPILE_TEST && ARM)
> +	tristate "OneNAND on OMAP3 support"
> +	depends on ARCH_OMAP3 || (COMPILE_TEST && ARM)
>   	depends on OF
>   	depends on OMAP_GPMC
>   	help
> diff --git a/drivers/video/fbdev/omap2/omapfb/Kconfig b/drivers/video/fbdev/omap2/omapfb/Kconfig
> index 2d20e79adefc..d8227f4326bd 100644
> --- a/drivers/video/fbdev/omap2/omapfb/Kconfig
> +++ b/drivers/video/fbdev/omap2/omapfb/Kconfig
> @@ -8,7 +8,7 @@ menuconfig FB_OMAP2
>   	depends on DRM_OMAP = n
>   	depends on GPIOLIB
>   	select FB_OMAP2_DSS
> -	select OMAP2_VRFB if ARCH_OMAP2 || ARCH_OMAP3
> +	select OMAP2_VRFB if ARCH_OMAP3
>   	select FB_IOMEM_HELPERS
>   	help
>   	  Frame buffer driver for OMAP2+ based boards.
> diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
> index 54a3fa370004..ca151152da19 100644
> --- a/include/linux/clk/ti.h
> +++ b/include/linux/clk/ti.h
> @@ -265,12 +265,6 @@ int omap2_clk_disable_autoidle_all(void);
>   int omap2_clk_enable_autoidle_all(void);
>   int omap2_clk_allow_idle(struct clk *clk);
>   int omap2_clk_deny_idle(struct clk *clk);
> -unsigned long omap2_dpllcore_recalc(struct clk_hw *hw,
> -				    unsigned long parent_rate);
> -int omap2_reprogram_dpllcore(struct clk_hw *clk, unsigned long rate,
> -			     unsigned long parent_rate);
> -void omap2xxx_clkt_dpllcore_init(struct clk_hw *hw);
> -void omap2xxx_clkt_vps_init(void);
>   unsigned long omap2_get_dpll_rate(struct clk_hw_omap *clk);
>   
>   void ti_dt_clk_init_retry_clks(void);
> @@ -322,8 +316,6 @@ void omap3_noncore_dpll_restore_context(struct clk_hw *hw);
>   int omap3_core_dpll_save_context(struct clk_hw *hw);
>   void omap3_core_dpll_restore_context(struct clk_hw *hw);
>   
> -extern const struct clk_hw_omap_ops clkhwops_omap2xxx_dpll;
> -
>   #ifdef CONFIG_ATAGS
>   int omap3430_clk_legacy_init(void);
>   int omap3430es1_clk_legacy_init(void);

-- 
--
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)



^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 07/13] ARM: imx: remove i.MX31 SoC support
  2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
@ 2026-09-09  8:24   ` Vladimir Zapolskiy
  2026-09-09  8:26   ` Daniel Baluta
  2026-09-10 15:11   ` Frank Li
  2 siblings, 0 replies; 70+ messages in thread
From: Vladimir Zapolskiy @ 2026-09-09  8:24 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On 9/8/26 18:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Freescale i.MX31 was an early SoC based on the ARM1136r0 CPU core. It
> was used in the Bug Labs modular computer but ultimately much less
> popular than most other i.MX SoCs.
> 
> As the ARM1136r0 support is causing a lot of extra maintenance effort
> to keep alive and there are no known users, remove i.MX31 in order to
> allow removing support for that CPU core altogether.
> 
> The related i.MX35 is based on a slightly newer ARM1136r1 CPU core that
> does not have this problem, so there is no reason to remove that.
> 
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: imx@lists.linux.dev
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Vladimir Zapolskiy <vz@mleia.com>

I still do possess a LogicPD i.MX31 Lite board, which boots the upstream
kernel, but there is no plan to maintain it further.

-- 
Best wishes,
Vladimir

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 07/13] ARM: imx: remove i.MX31 SoC support
  2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
  2026-09-09  8:24   ` Vladimir Zapolskiy
@ 2026-09-09  8:26   ` Daniel Baluta
  2026-09-10 15:11   ` Frank Li
  2 siblings, 0 replies; 70+ messages in thread
From: Daniel Baluta @ 2026-09-09  8:26 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On 9/8/26 18:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Freescale i.MX31 was an early SoC based on the ARM1136r0 CPU core. It
> was used in the Bug Labs modular computer but ultimately much less
> popular than most other i.MX SoCs.
> 
> As the ARM1136r0 support is causing a lot of extra maintenance effort
> to keep alive and there are no known users, remove i.MX31 in order to
> allow removing support for that CPU core altogether.
> 
> The related i.MX35 is based on a slightly newer ARM1136r1 CPU core that
> does not have this problem, so there is no reason to remove that.
> 
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: imx@lists.linux.dev
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Daniel Baluta <daniel.baluta@nxp.com>


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 09/13] ARM: lpc18xx: remove entire platform
  2026-09-08 15:27 ` [PATCH 09/13] ARM: lpc18xx: remove entire platform Arnd Bergmann
  2026-09-08 17:36   ` Linus Walleij
@ 2026-09-09  8:28   ` Vladimir Zapolskiy
  1 sibling, 0 replies; 70+ messages in thread
From: Vladimir Zapolskiy @ 2026-09-09  8:28 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On 9/8/26 18:27, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The NXP LPC18xx and LPC43xx microcontrollers are the more modern
> version of the classic LPC32xx line, but they lack memory management
> units.
> 
> These microcontrollers all remain in production as of 2026, but
> there are no known users running Linux on them.
> 
> The platform was marked deprecated in the 7.3-LTS release, which
> will remain supported for a few more years.
> 
> Remove support for both LPC18xx and LPC43xx.
> 
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Vladimir Zapolskiy <vz@mleia.com>
> Cc: imx@lists.linux.dev
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Vladimir Zapolskiy <vz@mleia.com>

Since there is no known users of these pretty old NOMMU platforms in
the Linux kernel, it should be safe to drop them from maintenance.

-- 
Best wishes,
Vladimir

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
                     ` (2 preceding siblings ...)
  2026-09-08 21:09   ` Rob Herring
@ 2026-09-09 12:41   ` Alexandre Belloni
  2026-09-10 12:23   ` Nicolas Ferre
  4 siblings, 0 replies; 70+ messages in thread
From: Alexandre Belloni @ 2026-09-09 12:41 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Linus Walleij, Russell King, Drew Fustini,
	Arnd Bergmann, Rob Herring, Conor Dooley, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

On 08/09/2026 17:28:02+0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Atmel at91 line, now known as Microchip SAM contains both
> SoCs using ARM926 and Cortex-A CPUs as well as a number of
> microcontrollers. Only a single one of those MCUs currently
> has Linux support, and has no known users.
> 
> The samv7 platform was deprecated in Linux-7.3LTS, which will
> remain supported a while longer after it is gone from mainline.
> 
> Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all board files
  2026-09-08 15:27 ` [PATCH 05/13] ARM: orion/dove/mv78xx0: remove all " Arnd Bergmann
                     ` (4 preceding siblings ...)
  2026-09-08 20:14   ` Niklas Cassel
@ 2026-09-09 12:54   ` Gregory CLEMENT
  5 siblings, 0 replies; 70+ messages in thread
From: Gregory CLEMENT @ 2026-09-09 12:54 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Alexander Clouter,
	Jeremy J. Peper, Damien Le Moal, Niklas Cassel, Ulf Hansson,
	Krzysztof Wilczyński, Manivannan Sadhasivam, Bjorn Helgaas,
	Vinod Koul, Rafael J. Wysocki, Daniel Lezcano, Guenter Roeck,
	Mark Brown, Bartosz Golaszewski, Thomas Weissschuh, linux-ide,
	linux-mmc, linux-pci, linux-phy, linux-rtc, linux-pm,
	linux-watchdog, linux-sound, linux-gpio

Arnd Bergmann <arnd@kernel.org> writes:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The 'orion' platform is the predecessor to what linux now calls the
> 'mvebu' line of Marvell SoCs, and originally covered orion5x,
> mv78xx0, kirkwood, dove and a few others that do not have any
> upstream support at the moment.
>
> Only a few board files remain here, these are the ones left
> in 2022 board file purge because they had some level of support
> in Debian or OpenWRT, mostly for commercial NAS or router boxes.
> This distro support is now gone, and nobody has converted the
> board files to devicetree, though the orion5x and dove platforms
> also come with devicetree support for some other machines.
>

Acked-by: Gregory CLEMENT <gregory.clement@bootlin.com>

Thanks,

Gregory
-- 
Grégory CLEMENT, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 02/13] ARM: remove footbridge
  2026-09-08 17:27   ` Linus Walleij
@ 2026-09-09 15:09     ` Ralph Siemsen
  0 siblings, 0 replies; 70+ messages in thread
From: Ralph Siemsen @ 2026-09-09 15:09 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Helge Deller,
	dri-devel

On Tue, Sep 08, 2026 at 07:27:48PM +0200, Linus Walleij wrote:
>On Tue, Sep 8, 2026 at 5:28 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> Footbridge was deprecated in 7.3 to be removed along with the other
>> StrongARM platforms and most remaining board files.
>>
>> The main machine here is the NetWinder, which was a popular Arm based
>> desktop PC in the late 1990s and contributed to Arm's later success as
>> an embedded Linux platform, but was discontinued over 25 years ago and
>> is no longer all that useful.
>>
>> I previously tried to convert this to devicetree in a sensible way but
>> gave up due to the platform being too different from modern SoC based
>> targets.
>>
>> Cc: Russell King <linux@armlinux.org.uk>
>> Cc: Ralph Siemsen <ralphs@netwinder.org>
>> Cc: Helge Deller <deller@gmx.de>
>> Cc: dri-devel@lists.freedesktop.org
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
>Acked-by: Linus Walleij <linusw@kernel.org>
>
>I have one of those machines and it boot mainline but I
>certainly consider it a paperweight at this point, I can't use
>it for anything useful.

Likewise, I have a NetWinder machine which has occasionally booted a
mainline kernel, along with fairly current buildroot initramfs. It has 
been surprisingly smooth sailing, even the bx/bl compiler troubles seem 
to have been sorted out these days.

It's a bit sad to see it go, in particular since it all works. But the 
reality is that nobody seems to be running this hardware anymore, and 
there is no community of active users anymore.

Acked-by: Ralph Siemsen <ralphs@netwinder.org>

Regards,
-Ralph

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 03/13] ARM: remove riscpc
  2026-09-08 15:27 ` [PATCH 03/13] ARM: remove riscpc Arnd Bergmann
  2026-09-09  8:04   ` Thomas Zimmermann
@ 2026-09-09 16:42   ` Bart Van Assche
  2026-09-09 20:09     ` Arnd Bergmann
  1 sibling, 1 reply; 70+ messages in thread
From: Bart Van Assche @ 2026-09-09 16:42 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: linux-doc, linux-kernel, linux-arm-kernel, devicetree, imx,
	linux-stm32, linux-omap, linux-block, linux-serial, linux-fbdev

On 9/8/26 8:27 AM, Arnd Bergmann wrote:
> The Acorn Risc PC is the oldest still support Arm machine in the kernel,
> originally shipped with an ARMv3 ARM610 support in 1994, it later allowed
> faster StrongARM CPUs.
> 
> The main limitation here is the CPU bus that does not allow 16-bit
> wide data transfers and hence requires the kernel to be built with the
> -march=armv3 compiler option that was discontinued in gcc-9.
> 
> As gcc-8 is barely supported for compiling the kernel, this one
> will not see another LTS kernel release, so remove it now.

If this patch has to be reposted, here is the feedback of my AI coding
assistant (based on an LLM and hence may be wrong):
----------------------------------------------------------------------
Overview
--------
This patch removes the Acorn RiscPC platform (ARCH_RPC), the oldest 
32-bit ARM machine supported in mainline Linux (originally ARMv3 ARM610, 
later StrongARM SA-110). Because RiscPC hardware requires -march=armv3 
(discontinued in GCC 9) due to bus limitations, deprecating and removing 
it paves the way to clean out legacy ARMv3 support from the kernel.

Removing RiscPC also represents a major architectural milestone for 
arch/arm: with SA-1100 (patch 1), Footbridge (patch 2), and RiscPC 
(patch 3) removed, COMMON_CLK, SPARSE_IRQ, and USE_OF (Device Tree) 
become unconditionally selected for all 32-bit ARM targets, and legacy 
headers mach/io.h and mach/memory.h are eliminated.

Overall, this is a very welcome cleanup, but there are a few missed 
references, orphaned symbols, and stale comments that should be addressed.

Issues & Observations
---------------------
1. Missed arch/arm/Makefile cleanup
Patch 03 deletes the entire directory arch/arm/mach-rpc/, but does not 
touch arch/arm/Makefile. As a result, two orphaned entries remain:

makefile


machine-$(CONFIG_ARCH_RPC)		+= rpc
machdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
Furthermore, machdirs-$(CONFIG_ARCH_RPC) was the very last user of 
machdirs- in arch/arm/Makefile (after Footbridge and SA-1100 are removed 
in patches 1 & 2):

makefile


# legacy platforms provide their own mach/*.h headers globally,
# these three are mutually exclusive
machdirs-$(CONFIG_ARCH_FOOTBRIDGE)	+= arch/arm/mach-footbridge
machdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
machdirs-$(CONFIG_ARCH_SA1100)		+= arch/arm/mach-sa1100
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
Once RiscPC is gone, the entire machdirs- inclusion block can and should 
be removed from arch/arm/Makefile.

2. Missed ARCH_ACORN reference in lib/fonts/Kconfig
The patch deletes config ARCH_ACORN from arch/arm/Kconfig and removes 
#ifdef CONFIG_ARCH_ACORN from
lib/fonts/font_acorn_8x8.c
, but missed
lib/fonts/Kconfig:74
:

kconfig


config FONT_ACORN_8x8
	bool "Acorn console 8x8 font" if FONTS
	depends on FRAMEBUFFER_CONSOLE || DRM_PANIC
	default y if !SPARC && !FONTS && ARM && ARCH_ACORN
Because ARCH_ACORN is removed, this default can never trigger and the 
reference should be cleaned up.

3. Orphaned ARCH_RPC reference in arch/arm/mm/Kconfig
In
arch/arm/mm/Kconfig:281-282
:

kconfig


config CPU_SA110
	bool
	select CPU_32v3 if ARCH_RPC
	select CPU_32v4 if !ARCH_RPC
Since ARCH_RPC is removed, select CPU_32v3 if ARCH_RPC references a 
non-existent symbol. If CPU_SA110 remains temporarily (before the 
architectural cleanup in 7.5), this should be simplified to select CPU_32v4.

4. Dead code in arch/arm/kernel/atags_compat.c
With CONFIG_ARCH_ACORN removed from arch/arm/Kconfig, two blocks in
arch/arm/kernel/atags_compat.c
  are now dead code:

Lines 150–157: #ifdef CONFIG_ARCH_ACORN / if (machine_is_riscpc()) 
memory bank tagging.
Lines 186–194: #ifdef CONFIG_ARCH_ACORN ATAG_ACORN translation.
These blocks should be removed as part of this patch.

5. Stale comments
arch/arm/include/asm/io.h:207-209
:
c


/*
  * Now, pick up the machine-defined IO definitions
  */
#if IS_ENABLED(CONFIG_PCMCIA) || defined(CONFIG_PCI)
CONFIG_NEED_MACH_IO_H and #include <mach/io.h> were removed, leaving 
this comment describing generic PCI/PCMCIA I/O limits.
arch/arm/boot/bootp/Makefile:21
: # guess an initrd location if possible is left dangling right before 
ifdef INITRD_OFFSET after all initrd_offset-$(CONFIG_...) logic has been 
stripped out.
6. Floppy driver & arch/arm/include/asm/floppy.h status
The patch removes the ARM MFM AND FLOPPY DRIVERS entry from MAINTAINERS:

diff


-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
While
floppydma.S
  was deleted,
arch/arm/include/asm/floppy.h
  was left in the tree.

On ARM, floppy support requires ARCH_MAY_HAVE_PC_FDC, which was selected 
only by Footbridge and RiscPC.
With both gone, no ARM board selects ARCH_MAY_HAVE_PC_FDC.
Furthermore, asm/floppy.h references IRQ_FLOPPYDISK and DMA_FLOPPY, 
which no longer exist on ARM.
Either
arch/arm/include/asm/floppy.h
  and config ARCH_MAY_HAVE_PC_FDC in arch/arm/Kconfig should be deleted 
in this patch, or noted if intentionally deferred to the 7.5 driver cleanup.
7. Good changes & verification
block/partitions/Kconfig: Dropping default y if ARCH_ACORN while keeping 
ACORN_PARTITION available under PARTITION_ADVANCED is correct; users can 
still inspect/mount Acorn media on modern architectures.
drivers/tty/vt/keyboard.c: Clean removal of !defined(CONFIG_ARCH_RPC) 
from the raw keyboard scan handler.
Elimination of NEED_MACH_IO_H and NEED_MACH_MEMORY_H: Very clean removal 
across arch/arm/Kconfig, arch/arm/include/asm/io.h, 
arch/arm/include/asm/memory.h, and arch/arm/mm/mmu.c.
Minor Typo in Commit Message
text


The Acorn Risc PC is the oldest still support Arm machine in the kernel,
originally shipped with an ARMv3 ARM610 support in 1994, it later allowed
faster StrongARM CPUs.
"oldest still support Arm machine" -> "oldest still supported Arm machine"
"with an ARMv3 ARM610 support" -> "with ARMv3 ARM610 support" or "with 
an ARMv3 ARM610 CPU"

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 03/13] ARM: remove riscpc
  2026-09-09 16:42   ` Bart Van Assche
@ 2026-09-09 20:09     ` Arnd Bergmann
  0 siblings, 0 replies; 70+ messages in thread
From: Arnd Bergmann @ 2026-09-09 20:09 UTC (permalink / raw)
  To: Bart Van Assche, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: linux-doc, linux-kernel, linux-arm-kernel, devicetree, imx,
	linux-stm32, Linux-OMAP, linux-block, linux-serial, linux-fbdev

On Wed, Sep 9, 2026, at 18:42, Bart Van Assche wrote:
> On 9/8/26 8:27 AM, Arnd Bergmann wrote:
>> The Acorn Risc PC is the oldest still support Arm machine in the kernel,
>> originally shipped with an ARMv3 ARM610 support in 1994, it later allowed
>> faster StrongARM CPUs.
>> 
>> The main limitation here is the CPU bus that does not allow 16-bit
>> wide data transfers and hence requires the kernel to be built with the
>> -march=armv3 compiler option that was discontinued in gcc-9.
>> 
>> As gcc-8 is barely supported for compiling the kernel, this one
>> will not see another LTS kernel release, so remove it now.
>
> If this patch has to be reposted, here is the feedback of my AI coding
> assistant (based on an LLM and hence may be wrong):

Most of this was already discussed, but there are two additional
changes that I made based on it.

> Issues & Observations
> ---------------------
> 1. Missed arch/arm/Makefile cleanup
> Patch 03 deletes the entire directory arch/arm/mach-rpc/, but does not 
> touch arch/arm/Makefile. As a result, two orphaned entries remain:
>
> machine-$(CONFIG_ARCH_RPC)		+= rpc
> machdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
> Furthermore, machdirs-$(CONFIG_ARCH_RPC) was the very last user of 
> machdirs- in arch/arm/Makefile (after Footbridge and SA-1100 are removed 
> in patches 1 & 2):

Fixed already after sashiko-bot found the same thing.

> kconfig
>
>
> config FONT_ACORN_8x8
> 	bool "Acorn console 8x8 font" if FONTS
> 	depends on FRAMEBUFFER_CONSOLE || DRM_PANIC
> 	default y if !SPARC && !FONTS && ARM && ARCH_ACORN
> Because ARCH_ACORN is removed, this default can never trigger and the 
> reference should be cleaned up.

I have this in the patch that removes acornfb. It could go into
either one, but I felt it fits better there

> kconfig
>
>
> config CPU_SA110
> 	bool
> 	select CPU_32v3 if ARCH_RPC
> 	select CPU_32v4 if !ARCH_RPC
> Since ARCH_RPC is removed, select CPU_32v3 if ARCH_RPC references a 
> non-existent symbol. If CPU_SA110 remains temporarily (before the 
> architectural cleanup in 7.5), this should be simplified to select CPU_32v4.

Also explained already that I preferred removing CPU_32v3 along
with CPU_SA110 in a later patch, not together with ARCH_RPC.

> 4. Dead code in arch/arm/kernel/atags_compat.c
> With CONFIG_ARCH_ACORN removed from arch/arm/Kconfig, two blocks in
> arch/arm/kernel/atags_compat.c
>   are now dead code:
>
> Lines 150–157: #ifdef CONFIG_ARCH_ACORN / if (machine_is_riscpc()) 
> memory bank tagging.
> Lines 186–194: #ifdef CONFIG_ARCH_ACORN ATAG_ACORN translation.
> These blocks should be removed as part of this patch.

I have a patch to remove that file.

>
> /*
>   * Now, pick up the machine-defined IO definitions
>   */
> #if IS_ENABLED(CONFIG_PCMCIA) || defined(CONFIG_PCI)
> CONFIG_NEED_MACH_IO_H and #include <mach/io.h> were removed, leaving 
> this comment describing generic PCI/PCMCIA I/O limits.

Fixed now.

> arch/arm/boot/bootp/Makefile:21
> : # guess an initrd location if possible is left dangling right before 
> ifdef INITRD_OFFSET after all initrd_offset-$(CONFIG_...) logic has been 
> stripped out.

Removed that entire block now:

--- a/arch/arm/boot/bootp/Makefile
+++ b/arch/arm/boot/bootp/Makefile
@@ -17,12 +17,6 @@ add_hex = $(shell printf 0x%x $$(( $(1) + $(2) )) )
 #   INITRD_PHYS must be in RAM
 
 PARAMS_PHYS := $(call add_hex, $(PHYS_OFFSET), 0x100)
-
-# guess an initrd location if possible
-ifdef INITRD_OFFSET
-INITRD_PHYS := $(call add_hex, $(PHYS_OFFSET), $(INITRD_OFFSET))
-endif
-
 endif
 
 PHONY += initrd
@@ -30,7 +24,7 @@ initrd:
        @test "$(PARAMS_PHYS)" != "" || \
        (echo bootpImage: You must specify PHYS_OFFSET of PARAMS_PHYS ; exit -1)
        @test "$(INITRD_PHYS)" != "" || \
-       (echo bootpImage: You must specify INITRD_OFFSET or INITRD_PHYS ; exit -1)
+       (echo bootpImage: You must specify INITRD_PHYS ; exit -1)
        @test "$(INITRD)" != "" || \
        (echo bootpImage: You must specify INITRD; exit -1)
 

> 6. Floppy driver & arch/arm/include/asm/floppy.h status
> The patch removes the ARM MFM AND FLOPPY DRIVERS entry from MAINTAINERS:

commented already that this is removed along with CONFIG_ISA in a later
patch.

      Arnd

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 08/13] ARM: imx: remove nommu support
  2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
@ 2026-09-09 20:17   ` Fabio Estevam
  2026-09-09 20:21   ` Fabio Estevam
  2026-09-10 15:14   ` Frank Li
  2 siblings, 0 replies; 70+ messages in thread
From: Fabio Estevam @ 2026-09-09 20:17 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Giulio Benetti

On Tue, Sep 8, 2026 at 12:29 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> The i.MX platform has grown support for three separate product
> lines using Cortex-M based microcontrollers over the years:
>
>  - i.MX RT1050, a high-end microcontroller
>  - Vybrid vf610 suppors running Linux on either the Cortex-A5
>    CPU or the Cortex-M4 MCU
>  - i.MX7D similarly can run Linux on the Cortex-A7 or the
>    Cortex-M4
>
> There are no known upstream users of any of those three, so
> drop support and simplify the platform to assume that an MMU
> is present.
>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Stefan Agner <stefan@agner.ch>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Vladimir Zapolskiy <vz@mleia.com>
> Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
> Cc: devicetree@vger.kernel.org
> Cc: imx@lists.linux.dev
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/boot/dts/nxp/imx/Makefile            |    2 -
>  arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
>  arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 -----------
>  arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
>  arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 -----------------

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 08/13] ARM: imx: remove nommu support
  2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
  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
  2 siblings, 2 replies; 70+ messages in thread
From: Fabio Estevam @ 2026-09-09 20:21 UTC (permalink / raw)
  To: Arnd Bergmann, Jesse Taube, Giulio Benetti
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On Tue, Sep 8, 2026 at 12:29 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> From: Arnd Bergmann <arnd@arndb.de>
>
> The i.MX platform has grown support for three separate product
> lines using Cortex-M based microcontrollers over the years:
>
>  - i.MX RT1050, a high-end microcontroller
>  - Vybrid vf610 suppors running Linux on either the Cortex-A5
>    CPU or the Cortex-M4 MCU
>  - i.MX7D similarly can run Linux on the Cortex-A7 or the
>    Cortex-M4
>
> There are no known upstream users of any of those three, so
> drop support and simplify the platform to assume that an MMU
> is present.
>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Stefan Agner <stefan@agner.ch>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Vladimir Zapolskiy <vz@mleia.com>
> Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
> Cc: devicetree@vger.kernel.org
> Cc: imx@lists.linux.dev
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/boot/dts/nxp/imx/Makefile            |    2 -
>  arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
>  arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 -----------
>  arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
>  arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 -----------------
>  arch/arm/boot/dts/nxp/vf/Makefile             |    2 -
>  arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts  |   61 -
>  arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts   |   88 -
>  arch/arm/boot/dts/nxp/vf/vf610m4.dtsi         |   61 -
>  arch/arm/configs/imxrt_defconfig              |   35 -
>  arch/arm/configs/vf610m4_defconfig            |   39 -
>  arch/arm/mach-imx/Kconfig                     |   27 +-
>  arch/arm/mach-imx/Makefile                    |    3 -
>  arch/arm/mach-imx/mach-imx7d-cm4.c            |   18 -
>  arch/arm/mach-imx/mach-imxrt.c                |   19 -

The imxrt1050-evk dts is used in U-Boot.

Adding Jesse and Giulio, who use this platform in U-Boot.

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 15:28 ` [PATCH 12/13] ARM: at91: remove samv7 support Arnd Bergmann
                     ` (3 preceding siblings ...)
  2026-09-09 12:41   ` Alexandre Belloni
@ 2026-09-10 12:23   ` Nicolas Ferre
  4 siblings, 0 replies; 70+ messages in thread
From: Nicolas Ferre @ 2026-09-10 12:23 UTC (permalink / raw)
  To: Arnd Bergmann, Krzysztof Kozlowski, Alexandre Belloni,
	Linus Walleij, Russell King
  Cc: Drew Fustini, Arnd Bergmann, Rob Herring, Conor Dooley,
	Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi, Frank Li,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap

On 08/09/2026 at 17:28, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> The Atmel at91 line, now known as Microchip SAM contains both
> SoCs using ARM926 and Cortex-A CPUs as well as a number of
> microcontrollers. Only a single one of those MCUs currently
> has Linux support, and has no known users.
> 
> The samv7 platform was deprecated in Linux-7.3LTS, which will
> remain supported a while longer after it is gone from mainline.
> 
> Cc: Nicolas Ferre <nicolas.ferre@microchip.com>

Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>

Regards,
   Nicolas

> Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
> Cc: Claudiu Beznea <claudiu.beznea@tuxon.dev>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>   arch/arm/Kconfig.debug      | 10 ----------
>   arch/arm/mach-at91/Kconfig  | 11 +----------
>   arch/arm/mach-at91/Makefile |  1 -
>   arch/arm/mach-at91/samv7.c  | 17 -----------------
>   drivers/soc/atmel/soc.c     | 36 ------------------------------------
>   5 files changed, 1 insertion(+), 74 deletions(-)
>   delete mode 100644 arch/arm/mach-at91/samv7.c

[..]

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 12/13] ARM: at91: remove samv7 support
  2026-09-08 21:30     ` Arnd Bergmann
@ 2026-09-10 12:25       ` Nicolas Ferre
  0 siblings, 0 replies; 70+ messages in thread
From: Nicolas Ferre @ 2026-09-10 12:25 UTC (permalink / raw)
  To: Arnd Bergmann, Rob Herring, Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Conor Dooley, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Vladimir Zapolskiy,
	Stefan Agner, Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Claudiu Beznea, Andrew Lunn, Sebastian Hesselbarth,
	Gregory Clement, Robert Jarzmik, Kristoffer Ericson,
	Ethan Nelson-Moore, Geert Uytterhoeven, A. Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Red Hat),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, Linux-OMAP

On 08/09/2026 at 23:30, Arnd Bergmann wrote:
> On Tue, Sep 8, 2026, at 23:09, Rob Herring wrote:
>>
>> Do you want to drop all the samv7 platform compatibles from at91.yaml?
>> Are there non-Linux users using DT?
> 
> I see that zephyr uses DT here, but it uses an incompatible
> set of bindings, see
> https://github.com/zephyrproject-rtos/zephyr/tree/main/dts/arm/atmel
> 
> I'm dropping the references from the binding now, and also from
> Documentation/arch/arm/microchip.rst, which I had missed earlier.

Very good, thanks for having handling that Arnd.

Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>

Best regards,
   Nicolas

> diff --git a/Documentation/arch/arm/microchip.rst b/Documentation/arch/arm/microchip.rst
> index e721d855f2c9..b776a6656717 100644
> --- a/Documentation/arch/arm/microchip.rst
> +++ b/Documentation/arch/arm/microchip.rst
> @@ -157,45 +157,6 @@ the Microchip website: http://www.microchip.com.
> 
>             Coming soon
> 
> -    * ARM Cortex-M7 MCUs
> -      - sams70 family
> -
> -        - sams70j19
> -        - sams70j20
> -        - sams70j21
> -        - sams70n19
> -        - sams70n20
> -        - sams70n21
> -        - sams70q19
> -        - sams70q20
> -        - sams70q21
> -
> -      - samv70 family
> -
> -        - samv70j19
> -        - samv70j20
> -        - samv70n19
> -        - samv70n20
> -        - samv70q19
> -        - samv70q20
> -
> -      - samv71 family
> -
> -        - samv71j19
> -        - samv71j20
> -        - samv71j21
> -        - samv71n19
> -        - samv71n20
> -        - samv71n21
> -        - samv71q19
> -        - samv71q20
> -        - samv71q21
> -
> -          * Datasheet
> -
> -          http://ww1.microchip.com/downloads/en/DeviceDoc/SAM-E70-S70-V70-V71-Family-Data-Sheet-DS60001527D.pdf
> -
> -
>   Linux kernel information
>   ------------------------
>   Linux kernel mach directory: arch/arm/mach-at91
> diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.yaml b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> index bf161e0950ea..d9b32a95b136 100644
> --- a/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> +++ b/Documentation/devicetree/bindings/arm/atmel-at91.yaml
> @@ -258,45 +258,6 @@ properties:
>             - const: microchip,lan9668
>             - const: microchip,lan966
> 
> -      - items:
> -          - enum:
> -              - atmel,sams70j19
> -              - atmel,sams70j20
> -              - atmel,sams70j21
> -              - atmel,sams70n19
> -              - atmel,sams70n20
> -              - atmel,sams70n21
> -              - atmel,sams70q19
> -              - atmel,sams70q20
> -              - atmel,sams70q21
> -          - const: atmel,sams70
> -          - const: atmel,samv7
> -
> -      - items:
> -          - enum:
> -              - atmel,samv70j19
> -              - atmel,samv70j20
> -              - atmel,samv70n19
> -              - atmel,samv70n20
> -              - atmel,samv70q19
> -              - atmel,samv70q20
> -          - const: atmel,samv70
> -          - const: atmel,samv7
> -
> -      - items:
> -          - enum:
> -              - atmel,samv71j19
> -              - atmel,samv71j20
> -              - atmel,samv71j21
> -              - atmel,samv71n19
> -              - atmel,samv71n20
> -              - atmel,samv71n21
> -              - atmel,samv71q19
> -              - atmel,samv71q20
> -              - atmel,samv71q21
> -          - const: atmel,samv71
> -          - const: atmel,samv7
> -
>   additionalProperties: true
> 
>   ...


^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 08/13] ARM: imx: remove nommu support
  2026-09-09 20:21   ` Fabio Estevam
@ 2026-09-10 13:08     ` Jesse T
  2026-09-10 16:08     ` Giulio Benetti
  1 sibling, 0 replies; 70+ messages in thread
From: Jesse T @ 2026-09-10 13:08 UTC (permalink / raw)
  To: Fabio Estevam
  Cc: Arnd Bergmann, Giulio Benetti, Krzysztof Kozlowski,
	Alexandre Belloni, Linus Walleij, Russell King, Drew Fustini,
	Arnd Bergmann, Rob Herring, Conor Dooley, Liviu Dudau,
	Sudeep Holla, Lorenzo Pieralisi, Frank Li, Sascha Hauer,
	Pengutronix Kernel Team, Vladimir Zapolskiy, Stefan Agner,
	Maxime Coquelin, Alexandre Torgue, Aaro Koskinen,
	Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
	Nicolas Ferre, Claudiu Beznea, Andrew Lunn,
	Sebastian Hesselbarth, Gregory Clement, Robert Jarzmik,
	Kristoffer Ericson, Ethan Nelson-Moore, Geert Uytterhoeven,
	Alexander Sverdlin, Shawn Guo, Karl Mehltretter,
	David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On Wed, Sep 9, 2026 at 4:21 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> On Tue, Sep 8, 2026 at 12:29 PM Arnd Bergmann <arnd@kernel.org> wrote:
> >
> > From: Arnd Bergmann <arnd@arndb.de>
> >
> > The i.MX platform has grown support for three separate product
> > lines using Cortex-M based microcontrollers over the years:
> >
> >  - i.MX RT1050, a high-end microcontroller
> >  - Vybrid vf610 suppors running Linux on either the Cortex-A5
> >    CPU or the Cortex-M4 MCU
> >  - i.MX7D similarly can run Linux on the Cortex-A7 or the
> >    Cortex-M4
> >
> > There are no known upstream users of any of those three,
There is both a u-boot and buildroot config for i.MX RT1050,
I also do basic regression testing on this platform. I understand the
need to depreciate no-MMU, but it's sad to see them go.

If it helps at all to remove i.MX RT1050 there are only 11 commits
adding it that are from Giulio Benetti and I.
For i.MX RT1170 only 3 commits by me which only got partially
added. See
Commit: fff65226b229 ("pinctrl: freescale: Add i.MXRT1170 pinctrl
driver support")

I also occasionally test the stm32f429-disco as I have one.

> > so
> > drop support and simplify the platform to assume that an MMU
> > is present.
> >
> > Cc: Frank Li <Frank.Li@nxp.com>
> > Cc: Sascha Hauer <s.hauer@pengutronix.de>
> > Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> > Cc: Fabio Estevam <festevam@gmail.com>
> > Cc: Stefan Agner <stefan@agner.ch>
> > Cc: Rob Herring <robh@kernel.org>
> > Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> > Cc: Conor Dooley <conor+dt@kernel.org>
> > Cc: Vladimir Zapolskiy <vz@mleia.com>
> > Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
> > Cc: devicetree@vger.kernel.org
> > Cc: imx@lists.linux.dev
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> >  arch/arm/boot/dts/nxp/imx/Makefile            |    2 -
> >  arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
> >  arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 -----------
> >  arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
> >  arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 -----------------
> >  arch/arm/boot/dts/nxp/vf/Makefile             |    2 -
> >  arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts  |   61 -
> >  arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts   |   88 -
> >  arch/arm/boot/dts/nxp/vf/vf610m4.dtsi         |   61 -
> >  arch/arm/configs/imxrt_defconfig              |   35 -
> >  arch/arm/configs/vf610m4_defconfig            |   39 -
> >  arch/arm/mach-imx/Kconfig                     |   27 +-
> >  arch/arm/mach-imx/Makefile                    |    3 -
> >  arch/arm/mach-imx/mach-imx7d-cm4.c            |   18 -
> >  arch/arm/mach-imx/mach-imxrt.c                |   19 -
>
> The imxrt1050-evk dts is used in U-Boot.
>
> Adding Jesse and Giulio, who use this platform in U-Boot.

Thanks for the CC,
Jesse Taube

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 07/13] ARM: imx: remove i.MX31 SoC support
  2026-09-08 15:27 ` [PATCH 07/13] ARM: imx: remove i.MX31 SoC support Arnd Bergmann
  2026-09-09  8:24   ` Vladimir Zapolskiy
  2026-09-09  8:26   ` Daniel Baluta
@ 2026-09-10 15:11   ` Frank Li
  2 siblings, 0 replies; 70+ messages in thread
From: Frank Li @ 2026-09-10 15:11 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

On Tue, Sep 08, 2026 at 05:27:57PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The Freescale i.MX31 was an early SoC based on the ARM1136r0 CPU core. It
> was used in the Bug Labs modular computer but ultimately much less
> popular than most other i.MX SoCs.
>
> As the ARM1136r0 support is causing a lot of extra maintenance effort
> to keep alive and there are no known users, remove i.MX31 in order to
> allow removing support for that CPU core altogether.
>
> The related i.MX35 is based on a slightly newer ARM1136r1 CPU core that
> does not have this problem, so there is no reason to remove that.
>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: imx@lists.linux.dev
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---

Acked-by: Frank Li <Frank.Li@nxp.com>


>  arch/arm/Kconfig.debug                   |   9 -
>  arch/arm/boot/dts/nxp/imx/Makefile       |   3 -
>  arch/arm/boot/dts/nxp/imx/imx31-bug.dts  |  22 --
>  arch/arm/boot/dts/nxp/imx/imx31-lite.dts | 178 -----------
>  arch/arm/boot/dts/nxp/imx/imx31.dtsi     | 371 -----------------------
>  arch/arm/configs/imx_v6_v7_defconfig     |   1 -
>  arch/arm/mach-imx/Kconfig                |  11 -
>  arch/arm/mach-imx/Makefile               |   1 -
>  arch/arm/mach-imx/cpu-imx31.c            |  72 -----
>  arch/arm/mach-imx/mach-imx31.c           |  18 --
>  arch/arm/mach-imx/mm-imx3.c              |  44 ---
>  11 files changed, 730 deletions(-)
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-bug.dts
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31-lite.dts
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imx31.dtsi
>  delete mode 100644 arch/arm/mach-imx/cpu-imx31.c
>  delete mode 100644 arch/arm/mach-imx/mach-imx31.c
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index e2fc89055463..52387fe2a057 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -424,13 +424,6 @@ choice
>  		  Say Y here if you want kernel low-level debugging support
>  		  on i.MX28.
>
> -	config DEBUG_IMX31_UART
> -		bool "i.MX31 Debug UART"
> -		depends on SOC_IMX31
> -		help
> -		  Say Y here if you want kernel low-level debugging support
> -		  on i.MX31.
> -
>  	config DEBUG_IMX35_UART
>  		bool "i.MX35 Debug UART"
>  		depends on SOC_IMX35
> @@ -1411,7 +1404,6 @@ config DEBUG_IMX_UART_PORT
>  	depends on DEBUG_IMX1_UART || \
>  		   DEBUG_IMX25_UART || \
>  		   DEBUG_IMX27_UART || \
> -		   DEBUG_IMX31_UART || \
>  		   DEBUG_IMX35_UART || \
>  		   DEBUG_IMX50_UART || \
>  		   DEBUG_IMX51_UART || \
> @@ -1468,7 +1460,6 @@ config DEBUG_LL_INCLUDE
>  	default "debug/imx.S" if DEBUG_IMX1_UART || \
>  				 DEBUG_IMX25_UART || \
>  				 DEBUG_IMX27_UART || \
> -				 DEBUG_IMX31_UART || \
>  				 DEBUG_IMX35_UART || \
>  				 DEBUG_IMX50_UART || \
>  				 DEBUG_IMX51_UART || \
> diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
> index 1a2539fa19b4..e0747cb6e772 100644
> --- a/arch/arm/boot/dts/nxp/imx/Makefile
> +++ b/arch/arm/boot/dts/nxp/imx/Makefile
> @@ -16,9 +16,6 @@ dtb-$(CONFIG_SOC_IMX27) += \
>  	imx27-pdk.dtb \
>  	imx27-phytec-phycore-rdk.dtb \
>  	imx27-phytec-phycard-s-rdk.dtb
> -dtb-$(CONFIG_SOC_IMX31) += \
> -	imx31-bug.dtb \
> -	imx31-lite.dtb
>  dtb-$(CONFIG_SOC_IMX35) += \
>  	imx35-eukrea-mbimxsd35-baseboard.dtb \
>  	imx35-pdk.dtb
> diff --git a/arch/arm/boot/dts/nxp/imx/imx31-bug.dts b/arch/arm/boot/dts/nxp/imx/imx31-bug.dts
> deleted file mode 100644
> index d87eee3f9b3c..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imx31-bug.dts
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
> - */
> -
> -/dts-v1/;
> -#include "imx31.dtsi"
> -
> -/ {
> -	model = "Buglabs i.MX31 Bug 1.x";
> -	compatible = "buglabs,imx31-bug", "fsl,imx31";
> -
> -	memory@80000000 {
> -		device_type = "memory";
> -		reg = <0x80000000 0x8000000>; /* 128M */
> -	};
> -};
> -
> -&uart5 {
> -	uart-has-rtscts;
> -	status = "okay";
> -};
> diff --git a/arch/arm/boot/dts/nxp/imx/imx31-lite.dts b/arch/arm/boot/dts/nxp/imx/imx31-lite.dts
> deleted file mode 100644
> index 630f8fa69ba8..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imx31-lite.dts
> +++ /dev/null
> @@ -1,178 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -//
> -// Copyright (C) 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
> -
> -/dts-v1/;
> -
> -#include "imx31.dtsi"
> -
> -#include <dt-bindings/gpio/gpio.h>
> -#include <dt-bindings/interrupt-controller/irq.h>
> -
> -/ {
> -	model = "LogicPD i.MX31 Lite";
> -	compatible = "logicpd,imx31-lite", "fsl,imx31";
> -
> -	chosen {
> -		stdout-path = &uart1;
> -	};
> -
> -	memory@80000000 {
> -		device_type = "memory";
> -		reg = <0x80000000 0x8000000>;
> -	};
> -
> -	leds {
> -		compatible = "gpio-leds";
> -
> -		led0 {
> -			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
> -		};
> -
> -		led1 {
> -			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
> -		};
> -	};
> -};
> -
> -&ata {
> -	status = "okay";
> -};
> -
> -&nfc {
> -	nand-bus-width = <8>;
> -	nand-ecc-mode = "hw";
> -	nand-on-flash-bbt;
> -	status = "okay";
> -};
> -
> -&sdhci1 {
> -	bus-width = <4>;
> -	cd-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
> -	wp-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
> -	status = "okay";
> -};
> -
> -&spi2 {
> -	status = "okay";
> -
> -	pmic@0 {
> -		compatible = "fsl,mc13783";
> -		reg = <0>;
> -		spi-cs-high;
> -		spi-max-frequency = <1000000>;
> -		interrupt-parent = <&gpio1>;
> -		interrupts = <3 IRQ_TYPE_EDGE_RISING>;
> -
> -		fsl,mc13xxx-uses-adc;
> -		fsl,mc13xxx-uses-rtc;
> -
> -		regulators {
> -			sw1a {		/* QVCC */
> -				regulator-min-microvolt = <1200000>;
> -				regulator-max-microvolt = <1500000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			sw1b {		/* QVCC */
> -				regulator-min-microvolt = <1200000>;
> -				regulator-max-microvolt = <1500000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			sw2a {		/* 1.8V_DDR, NVCC2, NVCC21 and NVCC22 */
> -				regulator-min-microvolt = <1800000>;
> -				regulator-max-microvolt = <1800000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			sw2b {		/* NVCC10 */
> -				regulator-min-microvolt = <1800000>;
> -				regulator-max-microvolt = <1800000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			violo {		/* NVCC1 and NVCC7 */
> -				regulator-min-microvolt = <1800000>;
> -				regulator-max-microvolt = <1800000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			viohi {		/* VIOHI */
> -				regulator-min-microvolt = <2775000>;
> -				regulator-max-microvolt = <2775000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			vaudio {	/* VAUDIO */
> -				regulator-min-microvolt = <2775000>;
> -				regulator-max-microvolt = <2775000>;
> -			};
> -
> -			vcam {		/* NVCC4 */
> -				regulator-min-microvolt = <2800000>;
> -				regulator-max-microvolt = <2800000>;
> -			};
> -
> -			vgen {		/* NVCC5 / NVCC8 and NVCC6 / NVCC9 */
> -				regulator-min-microvolt = <2775000>;
> -				regulator-max-microvolt = <2775000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -
> -			vmmc2 {		/* NVCC3 */
> -				regulator-min-microvolt = <1600000>;
> -				regulator-max-microvolt = <3000000>;
> -				regulator-always-on;
> -				regulator-boot-on;
> -			};
> -		};
> -	};
> -};
> -
> -&uart1 {
> -	uart-has-rtscts;
> -	status = "okay";
> -};
> -
> -/* Routed to the extension board */
> -&uart2 {
> -	uart-has-rtscts;
> -	status = "okay";
> -};
> -
> -/* Routed to the extension board */
> -&uart3 {
> -	uart-has-rtscts;
> -	status = "okay";
> -};
> -
> -&weim {
> -	status = "okay";
> -
> -	flash@0,0 {
> -		compatible = "cfi-flash";
> -		reg = <0 0x0 0x200000>;
> -		bank-width = <2>;
> -		linux,mtd-name = "physmap-flash.0";
> -		fsl,weim-cs-timing = <0x0000cf03 0xa0330d01 0x00220800>;
> -	};
> -
> -	ethernet@4,0 {
> -		compatible = "smsc,lan9117", "smsc,lan9115";
> -		reg = <4 0x0 0x100>;
> -		interrupt-parent = <&gpio1>;
> -		interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
> -		phy-mode = "mii";
> -		reg-io-width = <2>;
> -		smsc,irq-push-pull;
> -		fsl,weim-cs-timing = <0x00008701 0x04000541 0x00010000>;
> -	};
> -};
> diff --git a/arch/arm/boot/dts/nxp/imx/imx31.dtsi b/arch/arm/boot/dts/nxp/imx/imx31.dtsi
> deleted file mode 100644
> index c58f855ea851..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imx31.dtsi
> +++ /dev/null
> @@ -1,371 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+
> -//
> -// Copyright 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
> -// Copyright 2012 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
> -
> -/ {
> -	#address-cells = <1>;
> -	#size-cells = <1>;
> -	/*
> -	 * The decompressor and also some bootloaders rely on a
> -	 * pre-existing /chosen node to be available to insert the
> -	 * command line and merge other ATAGS info.
> -	 */
> -	chosen {};
> -
> -	aliases {
> -		gpio0 = &gpio1;
> -		gpio1 = &gpio2;
> -		gpio2 = &gpio3;
> -		i2c0 = &i2c1;
> -		i2c1 = &i2c2;
> -		i2c2 = &i2c3;
> -		serial0 = &uart1;
> -		serial1 = &uart2;
> -		serial2 = &uart3;
> -		serial3 = &uart4;
> -		serial4 = &uart5;
> -		spi0 = &spi1;
> -		spi1 = &spi2;
> -		spi2 = &spi3;
> -	};
> -
> -	cpus {
> -		#address-cells = <1>;
> -		#size-cells = <0>;
> -
> -		cpu@0 {
> -			compatible = "arm,arm1136jf-s";
> -			device_type = "cpu";
> -			reg = <0>;
> -		};
> -	};
> -
> -	avic: interrupt-controller@68000000 {
> -		compatible = "fsl,imx31-avic", "fsl,avic";
> -		interrupt-controller;
> -		#interrupt-cells = <1>;
> -		reg = <0x68000000 0x100000>;
> -	};
> -
> -	soc: soc {
> -		#address-cells = <1>;
> -		#size-cells = <1>;
> -		compatible = "simple-bus";
> -		interrupt-parent = <&avic>;
> -		ranges;
> -
> -		iram: sram@1fffc000 {
> -			compatible = "mmio-sram";
> -			reg = <0x1fffc000 0x4000>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x1fffc000 0x4000>;
> -		};
> -
> -		aips1: bus@43f00000 { /* AIPS1 */
> -			compatible = "fsl,aips-bus", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			reg = <0x43f00000 0x100000>;
> -			ranges;
> -
> -			i2c1: i2c@43f80000 {
> -				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
> -				reg = <0x43f80000 0x4000>;
> -				interrupts = <10>;
> -				clocks = <&clks 33>;
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				status = "disabled";
> -			};
> -
> -			i2c3: i2c@43f84000 {
> -				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
> -				reg = <0x43f84000 0x4000>;
> -				interrupts = <3>;
> -				clocks = <&clks 35>;
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				status = "disabled";
> -			};
> -
> -			ata: ata@43f8c000 {
> -				compatible = "fsl,imx31-pata", "fsl,imx27-pata";
> -				reg = <0x43f8c000 0x4000>;
> -				interrupts = <15>;
> -				clocks = <&clks 26>;
> -				status = "disabled";
> -			};
> -
> -			uart1: serial@43f90000 {
> -				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> -				reg = <0x43f90000 0x4000>;
> -				interrupts = <45>;
> -				clocks = <&clks 10>, <&clks 30>;
> -				clock-names = "ipg", "per";
> -				status = "disabled";
> -			};
> -
> -			uart2: serial@43f94000 {
> -				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> -				reg = <0x43f94000 0x4000>;
> -				interrupts = <32>;
> -				clocks = <&clks 10>, <&clks 31>;
> -				clock-names = "ipg", "per";
> -				status = "disabled";
> -			};
> -
> -			i2c2: i2c@43f98000 {
> -				compatible = "fsl,imx31-i2c", "fsl,imx21-i2c";
> -				reg = <0x43f98000 0x4000>;
> -				interrupts = <4>;
> -				clocks = <&clks 34>;
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				status = "disabled";
> -			};
> -
> -			spi1: spi@43fa4000 {
> -				compatible = "fsl,imx31-cspi";
> -				reg = <0x43fa4000 0x4000>;
> -				interrupts = <14>;
> -				clocks = <&clks 10>, <&clks 53>;
> -				clock-names = "ipg", "per";
> -				dmas = <&sdma 8 8 0>, <&sdma 9 8 0>;
> -				dma-names = "rx", "tx";
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				status = "disabled";
> -			};
> -
> -			kpp: kpp@43fa8000 {
> -				compatible = "fsl,imx31-kpp", "fsl,imx21-kpp";
> -				reg = <0x43fa8000 0x4000>;
> -				interrupts = <24>;
> -				clocks = <&clks 46>;
> -				status = "disabled";
> -			};
> -
> -			uart4: serial@43fb0000 {
> -				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> -				reg = <0x43fb0000 0x4000>;
> -				clocks = <&clks 10>, <&clks 49>;
> -				clock-names = "ipg", "per";
> -				interrupts = <46>;
> -				status = "disabled";
> -			};
> -
> -			uart5: serial@43fb4000 {
> -				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> -				reg = <0x43fb4000 0x4000>;
> -				interrupts = <47>;
> -				clocks = <&clks 10>, <&clks 50>;
> -				clock-names = "ipg", "per";
> -				status = "disabled";
> -			};
> -		};
> -
> -		spba-bus@50000000 {
> -			compatible = "fsl,spba-bus", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			reg = <0x50000000 0x100000>;
> -			ranges;
> -
> -			sdhci1: mmc@50004000 {
> -				compatible = "fsl,imx31-mmc";
> -				reg = <0x50004000 0x4000>;
> -				interrupts = <9>;
> -				clocks = <&clks 10>, <&clks 20>;
> -				clock-names = "ipg", "per";
> -				dmas = <&sdma 20 3 0>;
> -				dma-names = "rx-tx";
> -				status = "disabled";
> -			};
> -
> -			sdhci2: mmc@50008000 {
> -				compatible = "fsl,imx31-mmc";
> -				reg = <0x50008000 0x4000>;
> -				interrupts = <8>;
> -				clocks = <&clks 10>, <&clks 21>;
> -				clock-names = "ipg", "per";
> -				dmas = <&sdma 21 3 0>;
> -				dma-names = "rx-tx";
> -				status = "disabled";
> -			};
> -
> -			uart3: serial@5000c000 {
> -				compatible = "fsl,imx31-uart", "fsl,imx21-uart";
> -				reg = <0x5000c000 0x4000>;
> -				interrupts = <18>;
> -				clocks = <&clks 10>, <&clks 48>;
> -				clock-names = "ipg", "per";
> -				status = "disabled";
> -			};
> -
> -			spi2: spi@50010000 {
> -				compatible = "fsl,imx31-cspi";
> -				reg = <0x50010000 0x4000>;
> -				interrupts = <13>;
> -				clocks = <&clks 10>, <&clks 54>;
> -				clock-names = "ipg", "per";
> -				dmas = <&sdma 6 8 0>, <&sdma 7 8 0>;
> -				dma-names = "rx", "tx";
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				status = "disabled";
> -			};
> -
> -			iim: efuse@5001c000 {
> -				compatible = "fsl,imx31-iim";
> -				reg = <0x5001c000 0x1000>;
> -				interrupts = <19>;
> -				clocks = <&clks 25>;
> -			};
> -		};
> -
> -		bus@53f00000 { /* AIPS2 */
> -			compatible = "fsl,aips-bus", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			reg = <0x53f00000 0x100000>;
> -			ranges;
> -
> -			clks: ccm@53f80000 {
> -				compatible = "fsl,imx31-ccm";
> -				reg = <0x53f80000 0x4000>;
> -				interrupts = <31>, <53>;
> -				#clock-cells = <1>;
> -			};
> -
> -			spi3: spi@53f84000 {
> -				compatible = "fsl,imx31-cspi";
> -				reg = <0x53f84000 0x4000>;
> -				interrupts = <17>;
> -				clocks = <&clks 10>, <&clks 28>;
> -				clock-names = "ipg", "per";
> -				dmas = <&sdma 10 8 0>, <&sdma 11 8 0>;
> -				dma-names = "rx", "tx";
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				status = "disabled";
> -			};
> -
> -			gpt: timer@53f90000 {
> -				compatible = "fsl,imx31-gpt";
> -				reg = <0x53f90000 0x4000>;
> -				interrupts = <29>;
> -				clocks = <&clks 10>, <&clks 22>;
> -				clock-names = "ipg", "per";
> -			};
> -
> -			gpio3: gpio@53fa4000 {
> -				compatible = "fsl,imx31-gpio";
> -				reg = <0x53fa4000 0x4000>;
> -				interrupts = <56>;
> -				gpio-controller;
> -				#gpio-cells = <2>;
> -				interrupt-controller;
> -				#interrupt-cells = <2>;
> -			};
> -
> -			rng@53fb0000 {
> -				compatible = "fsl,imx31-rnga";
> -				reg = <0x53fb0000 0x4000>;
> -				interrupts = <22>;
> -				clocks = <&clks 29>;
> -			};
> -
> -			gpio1: gpio@53fcc000 {
> -				compatible = "fsl,imx31-gpio";
> -				reg = <0x53fcc000 0x4000>;
> -				interrupts = <52>;
> -				gpio-controller;
> -				#gpio-cells = <2>;
> -				interrupt-controller;
> -				#interrupt-cells = <2>;
> -			};
> -
> -			gpio2: gpio@53fd0000 {
> -				compatible = "fsl,imx31-gpio";
> -				reg = <0x53fd0000 0x4000>;
> -				interrupts = <51>;
> -				gpio-controller;
> -				#gpio-cells = <2>;
> -				interrupt-controller;
> -				#interrupt-cells = <2>;
> -			};
> -
> -			sdma: dma-controller@53fd4000 {
> -				compatible = "fsl,imx31-sdma";
> -				reg = <0x53fd4000 0x4000>;
> -				interrupts = <34>;
> -				clocks = <&clks 10>, <&clks 27>;
> -				clock-names = "ipg", "ahb";
> -				#dma-cells = <3>;
> -				fsl,sdma-ram-script-name = "imx/sdma/sdma-imx31.bin";
> -			};
> -
> -			rtc: rtc@53fd8000 {
> -				compatible = "fsl,imx31-rtc", "fsl,imx21-rtc";
> -				reg = <0x53fd8000 0x4000>;
> -				interrupts = <25>;
> -				clocks = <&clks 2>, <&clks 40>;
> -				clock-names = "ref", "ipg";
> -			};
> -
> -			wdog: watchdog@53fdc000 {
> -				compatible = "fsl,imx31-wdt", "fsl,imx21-wdt";
> -				reg = <0x53fdc000 0x4000>;
> -				clocks = <&clks 41>;
> -				interrupts = <55>;
> -			};
> -
> -			pwm: pwm@53fe0000 {
> -				compatible = "fsl,imx31-pwm", "fsl,imx27-pwm";
> -				reg = <0x53fe0000 0x4000>;
> -				interrupts = <26>;
> -				clocks = <&clks 10>, <&clks 42>;
> -				clock-names = "ipg", "per";
> -				#pwm-cells = <3>;
> -				status = "disabled";
> -			};
> -		};
> -
> -		emi-bus@b8000000 { /* External Memory Interface */
> -			compatible = "simple-bus";
> -			reg = <0xb8000000 0x5000>;
> -			ranges;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -
> -			nfc: nand-controller@b8000000 {
> -				compatible = "fsl,imx31-nand", "fsl,imx27-nand";
> -				reg = <0xb8000000 0x1000>;
> -				interrupts = <33>;
> -				clocks = <&clks 9>;
> -				dmas = <&sdma 30 17 0>;
> -				dma-names = "rx-tx";
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				status = "disabled";
> -			};
> -
> -			weim: memory-controller@b8002000 {
> -				compatible = "fsl,imx31-weim", "fsl,imx27-weim";
> -				reg = <0xb8002000 0x1000>;
> -				clocks = <&clks 56>;
> -				#address-cells = <2>;
> -				#size-cells = <1>;
> -				ranges = <0 0 0xa0000000 0x08000000
> -					  1 0 0xa8000000 0x08000000
> -					  2 0 0xb0000000 0x02000000
> -					  3 0 0xb2000000 0x02000000
> -					  4 0 0xb4000000 0x02000000
> -					  5 0 0xb6000000 0x02000000>;
> -				status = "disabled";
> -			};
> -		};
> -	};
> -};
> diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
> index ed588add8d31..6ac42c06c1e9 100644
> --- a/arch/arm/configs/imx_v6_v7_defconfig
> +++ b/arch/arm/configs/imx_v6_v7_defconfig
> @@ -15,7 +15,6 @@ CONFIG_PERF_EVENTS=y
>  CONFIG_KEXEC=y
>  CONFIG_ARCH_MULTI_V6=y
>  CONFIG_ARCH_MXC=y
> -CONFIG_SOC_IMX31=y
>  CONFIG_SOC_IMX35=y
>  CONFIG_SOC_IMX50=y
>  CONFIG_SOC_IMX51=y
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index 3f0521c652cb..77704c6a70ba 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -39,17 +39,6 @@ if ARCH_MULTI_V6
>
>  comment "ARM1136 platforms"
>
> -config SOC_IMX31
> -	bool "i.MX31 support (DEPRECATED)"
> -	depends on !SMP
> -	select CPU_ARM1136R0
> -	select MXC_AVIC
> -	help
> -	  This enables support for Freescale i.MX31 processor
> -
> -	  This SoC is scheduled for removal in early 2027,
> -	  since it uses the ARM1136r0 CPU revision.
> -
>  config SOC_IMX35
>  	bool "i.MX35 support"
>  	select CPU_ARM1136R1
> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> index 5c650bf40e02..fa0144f0882d 100644
> --- a/arch/arm/mach-imx/Makefile
> +++ b/arch/arm/mach-imx/Makefile
> @@ -5,7 +5,6 @@ obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
>
>  obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o mach-imx27.o
>
> -obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o mach-imx31.o
>  obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o mach-imx35.o
>
>  imx5-pm-$(CONFIG_PM) += pm-imx5.o
> diff --git a/arch/arm/mach-imx/cpu-imx31.c b/arch/arm/mach-imx/cpu-imx31.c
> deleted file mode 100644
> index e81ef9e36a1f..000000000000
> --- a/arch/arm/mach-imx/cpu-imx31.c
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * MX31 CPU type detection
> - *
> - * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
> - */
> -
> -#include <linux/module.h>
> -#include <linux/of_address.h>
> -#include <linux/io.h>
> -
> -#include "common.h"
> -#include "hardware.h"
> -#include "iim.h"
> -
> -static int mx31_cpu_rev = -1;
> -
> -static struct {
> -	u8 srev;
> -	const char *name;
> -	unsigned int rev;
> -} mx31_cpu_type[] = {
> -	{ .srev = 0x00, .name = "i.MX31(L)", .rev = IMX_CHIP_REVISION_1_0 },
> -	{ .srev = 0x10, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_1 },
> -	{ .srev = 0x11, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_1 },
> -	{ .srev = 0x12, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_1 },
> -	{ .srev = 0x13, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_1 },
> -	{ .srev = 0x14, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_1_2 },
> -	{ .srev = 0x15, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_1_2 },
> -	{ .srev = 0x28, .name = "i.MX31",    .rev = IMX_CHIP_REVISION_2_0 },
> -	{ .srev = 0x29, .name = "i.MX31L",   .rev = IMX_CHIP_REVISION_2_0 },
> -};
> -
> -static int mx31_read_cpu_rev(void)
> -{
> -	void __iomem *iim_base;
> -	struct device_node *np;
> -	u32 i, srev;
> -	int rev = IMX_CHIP_REVISION_UNKNOWN;
> -
> -	np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
> -	iim_base = of_iomap(np, 0);
> -	of_node_put(np);
> -	BUG_ON(!iim_base);
> -
> -	/* read SREV register from IIM module */
> -	srev = imx_readl(iim_base + MXC_IIMSREV);
> -	srev &= 0xff;
> -
> -	for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
> -		if (srev == mx31_cpu_type[i].srev) {
> -			rev = mx31_cpu_type[i].rev;
> -			imx_print_silicon_rev(mx31_cpu_type[i].name,
> -						mx31_cpu_type[i].rev);
> -			goto out;
> -		}
> -
> -	imx_print_silicon_rev("i.MX31", IMX_CHIP_REVISION_UNKNOWN);
> -
> -out:
> -	iounmap(iim_base);
> -	return rev;
> -}
> -
> -int mx31_revision(void)
> -{
> -	if (mx31_cpu_rev == -1)
> -		mx31_cpu_rev = mx31_read_cpu_rev();
> -
> -	return mx31_cpu_rev;
> -}
> -EXPORT_SYMBOL(mx31_revision);
> diff --git a/arch/arm/mach-imx/mach-imx31.c b/arch/arm/mach-imx/mach-imx31.c
> deleted file mode 100644
> index e9a1092b6093..000000000000
> --- a/arch/arm/mach-imx/mach-imx31.c
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - * Copyright 2012 Sascha Hauer, Pengutronix
> - */
> -
> -#include <asm/mach/arch.h>
> -#include "common.h"
> -
> -static const char * const imx31_dt_board_compat[] __initconst = {
> -	"fsl,imx31",
> -	NULL
> -};
> -
> -DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
> -	.map_io		= mx31_map_io,
> -	.init_early	= imx31_init_early,
> -	.dt_compat	= imx31_dt_board_compat,
> -MACHINE_END
> diff --git a/arch/arm/mach-imx/mm-imx3.c b/arch/arm/mach-imx/mm-imx3.c
> index 9b0b014d7fe2..42e73518004a 100644
> --- a/arch/arm/mach-imx/mm-imx3.c
> +++ b/arch/arm/mach-imx/mm-imx3.c
> @@ -69,49 +69,6 @@ static void __iomem *imx3_ioremap_caller(phys_addr_t phys_addr, size_t size,
>  	return __arm_ioremap_caller(phys_addr, size, mtype, caller);
>  }
>
> -#ifdef CONFIG_SOC_IMX31
> -static struct map_desc mx31_io_desc[] __initdata = {
> -	imx_map_entry(MX31, X_MEMC, MT_DEVICE),
> -	imx_map_entry(MX31, AVIC, MT_DEVICE_NONSHARED),
> -	imx_map_entry(MX31, AIPS1, MT_DEVICE_NONSHARED),
> -	imx_map_entry(MX31, AIPS2, MT_DEVICE_NONSHARED),
> -	imx_map_entry(MX31, SPBA0, MT_DEVICE_NONSHARED),
> -};
> -
> -/*
> - * This function initializes the memory map. It is called during the
> - * system startup to create static physical to virtual memory mappings
> - * for the IO modules.
> - */
> -void __init mx31_map_io(void)
> -{
> -	iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc));
> -}
> -
> -static void imx31_idle(void)
> -{
> -	int reg = imx_readl(mx3_ccm_base + MXC_CCM_CCMR);
> -	reg &= ~MXC_CCM_CCMR_LPM_MASK;
> -	imx_writel(reg, mx3_ccm_base + MXC_CCM_CCMR);
> -
> -	imx3_idle();
> -}
> -
> -void __init imx31_init_early(void)
> -{
> -	struct device_node *np;
> -
> -	mxc_set_cpu_type(MXC_CPU_MX31);
> -	arch_ioremap_caller = imx3_ioremap_caller;
> -	arm_pm_idle = imx31_idle;
> -	np = of_find_compatible_node(NULL, NULL, "fsl,imx31-ccm");
> -	mx3_ccm_base = of_iomap(np, 0);
> -	of_node_put(np);
> -	BUG_ON(!mx3_ccm_base);
> -}
> -#endif /* ifdef CONFIG_SOC_IMX31 */
> -
> -#ifdef CONFIG_SOC_IMX35
>  static struct map_desc mx35_io_desc[] __initdata = {
>  	imx_map_entry(MX35, X_MEMC, MT_DEVICE),
>  	imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED),
> @@ -147,4 +104,3 @@ void __init imx35_init_early(void)
>  	of_node_put(np);
>  	BUG_ON(!mx3_ccm_base);
>  }
> -#endif /* ifdef CONFIG_SOC_IMX35 */
> --
> 2.53.0
>
>

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 08/13] ARM: imx: remove nommu support
  2026-09-08 15:27 ` [PATCH 08/13] ARM: imx: remove nommu support Arnd Bergmann
  2026-09-09 20:17   ` Fabio Estevam
  2026-09-09 20:21   ` Fabio Estevam
@ 2026-09-10 15:14   ` Frank Li
  2 siblings, 0 replies; 70+ messages in thread
From: Frank Li @ 2026-09-10 15:14 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski,
	Giulio Benetti

On Tue, Sep 08, 2026 at 05:27:58PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The i.MX platform has grown support for three separate product
> lines using Cortex-M based microcontrollers over the years:
>
>  - i.MX RT1050, a high-end microcontroller
>  - Vybrid vf610 suppors running Linux on either the Cortex-A5
>    CPU or the Cortex-M4 MCU
>  - i.MX7D similarly can run Linux on the Cortex-A7 or the
>    Cortex-M4
>
> There are no known upstream users of any of those three, so
> drop support and simplify the platform to assume that an MMU
> is present.
>
> Cc: Frank Li <Frank.Li@nxp.com>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Stefan Agner <stefan@agner.ch>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Vladimir Zapolskiy <vz@mleia.com>
> Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
> Cc: devicetree@vger.kernel.org
> Cc: imx@lists.linux.dev
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---

Acked-by: Frank Li <Frank.Li@nxp.com>

>  arch/arm/boot/dts/nxp/imx/Makefile            |    2 -
>  arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
>  arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 -----------
>  arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
>  arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 -----------------
>  arch/arm/boot/dts/nxp/vf/Makefile             |    2 -
>  arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts  |   61 -
>  arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts   |   88 -
>  arch/arm/boot/dts/nxp/vf/vf610m4.dtsi         |   61 -
>  arch/arm/configs/imxrt_defconfig              |   35 -
>  arch/arm/configs/vf610m4_defconfig            |   39 -
>  arch/arm/mach-imx/Kconfig                     |   27 +-
>  arch/arm/mach-imx/Makefile                    |    3 -
>  arch/arm/mach-imx/mach-imx7d-cm4.c            |   18 -
>  arch/arm/mach-imx/mach-imxrt.c                |   19 -
>  arch/arm/mach-imx/mach-vf610.c                |    1 -
>  16 files changed, 6 insertions(+), 3136 deletions(-)
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
>  delete mode 100644 arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
>  delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
>  delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
>  delete mode 100644 arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
>  delete mode 100644 arch/arm/configs/imxrt_defconfig
>  delete mode 100644 arch/arm/configs/vf610m4_defconfig
>  delete mode 100644 arch/arm/mach-imx/mach-imx7d-cm4.c
>  delete mode 100644 arch/arm/mach-imx/mach-imxrt.c
>
> diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile
> index e0747cb6e772..288d16d9315d 100644
> --- a/arch/arm/boot/dts/nxp/imx/Makefile
> +++ b/arch/arm/boot/dts/nxp/imx/Makefile
> @@ -452,5 +452,3 @@ dtb-$(CONFIG_SOC_IMX7D) += \
>  dtb-$(CONFIG_SOC_IMX7ULP) += \
>  	imx7ulp-com.dtb \
>  	imx7ulp-evk.dtb
> -dtb-$(CONFIG_SOC_IMXRT) += \
> -	imxrt1050-evk.dtb
> diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts b/arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
> deleted file mode 100644
> index 6a9c10decf52..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts
> +++ /dev/null
> @@ -1,72 +0,0 @@
> -// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> -/*
> - * Copyright (C) 2019
> - * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
> - */
> -
> -/dts-v1/;
> -#include "imxrt1050.dtsi"
> -#include "imxrt1050-pinfunc.h"
> -
> -/ {
> -	model = "NXP IMXRT1050-evk board";
> -	compatible = "fsl,imxrt1050-evk", "fsl,imxrt1050";
> -
> -	chosen {
> -		stdout-path = &lpuart1;
> -	};
> -
> -	aliases {
> -		gpio0 = &gpio1;
> -		gpio1 = &gpio2;
> -		gpio2 = &gpio3;
> -		gpio3 = &gpio4;
> -		gpio4 = &gpio5;
> -		mmc0 = &usdhc1;
> -		serial0 = &lpuart1;
> -	};
> -
> -	memory@80000000 {
> -		device_type = "memory";
> -		reg = <0x80000000 0x2000000>;
> -	};
> -};
> -
> -&lpuart1 {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&pinctrl_lpuart1>;
> -	status = "okay";
> -};
> -
> -&iomuxc {
> -	pinctrl-names = "default";
> -	pinctrl_lpuart1: lpuart1grp {
> -		fsl,pins = <
> -			MXRT1050_IOMUXC_GPIO_AD_B0_12_LPUART1_TXD	0xf1
> -			MXRT1050_IOMUXC_GPIO_AD_B0_13_LPUART1_RXD	0xf1
> -		>;
> -	};
> -
> -	pinctrl_usdhc0: usdhc0grp {
> -		fsl,pins = <
> -			MXRT1050_IOMUXC_GPIO_B1_12_USDHC1_CD_B		0x1B000
> -			MXRT1050_IOMUXC_GPIO_B1_14_USDHC1_VSELECT	0xB069
> -			MXRT1050_IOMUXC_GPIO_SD_B0_00_USDHC1_CMD	0x17061
> -			MXRT1050_IOMUXC_GPIO_SD_B0_01_USDHC1_CLK	0x17061
> -			MXRT1050_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3	0x17061
> -			MXRT1050_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2	0x17061
> -			MXRT1050_IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1	0x17061
> -			MXRT1050_IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0	0x17061
> -		>;
> -	};
> -};
> -
> -&usdhc1 {
> -	pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
> -	pinctrl-0 = <&pinctrl_usdhc0>;
> -	pinctrl-1 = <&pinctrl_usdhc0>;
> -	pinctrl-2 = <&pinctrl_usdhc0>;
> -	pinctrl-3 = <&pinctrl_usdhc0>;
> -	cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
> -	status = "okay";
> -};
> diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h b/arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
> deleted file mode 100644
> index 22c14a3262ad..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h
> +++ /dev/null
> @@ -1,993 +0,0 @@
> -/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
> -/*
> - * Copyright (C) 2019
> - * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
> - */
> -
> -#ifndef _DT_BINDINGS_PINCTRL_IMXRT1050_PINFUNC_H
> -#define _DT_BINDINGS_PINCTRL_IMXRT1050_PINFUNC_H
> -
> -#define IMX_PAD_SION	0x40000000
> -
> -/*
> - * The pin function ID is a tuple of
> - * <mux_reg conf_reg input_reg mux_mode input_val>
> - */
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_00_SEMC_DA00				0x014 0x204 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_00_FLEXPWM4_PWM0_A			0x014 0x204 0x494 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_00_LPSPI2_SCK				0x014 0x204 0x500 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_00_XBAR_INOUT2				0x014 0x204 0x60C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_00_FLEXIO1_D00				0x014 0x204 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_00_GPIO4_IO00				0x014 0x204 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_01_SEMC_DA01				0x018 0x208 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_01_FLEXPWM4_PWM0_B			0x018 0x208 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_01_LPSPI2_PCS0				0x018 0x208 0x4FC 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_01_XBAR_INOUT3				0x018 0x208 0x610 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_01_FLEXIO1_D01				0x018 0x208 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_01_GPIO4_IO01				0x018 0x208 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_02_SEMC_DA02				0x01C 0x20C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_02_FLEXPWM4_PWM1_A			0x01C 0x20C 0x498 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_02_LPSPI2_SDO				0x01C 0x20C 0x508 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_02_XBAR_INOUT4				0x01C 0x20C 0x614 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_02_FLEXIO1_D02				0x01C 0x20C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_02_GPIO4_IO02				0x01C 0x20C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_03_SEMC_DA03				0x020 0x210 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_03_FLEXPWM4_PWM1_B			0x020 0x210 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_03_LPSPI2_SDI				0x020 0x210 0x504 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_03_XBAR_INOUT5				0x020 0x210 0x618 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_03_FLEXIO1_D03				0x020 0x210 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_03_GPIO4_IO03				0x020 0x210 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_04_SEMC_DA04				0x024 0x214 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_04_FLEXPWM4_PWM2_A			0x024 0x214 0x49C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_04_SAI2_TX_DATA			0x024 0x214 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_04_XBAR_INOUT6				0x024 0x214 0x61C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_04_FLEXIO1_D04				0x024 0x214 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_04_GPIO4_IO04				0x024 0x214 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_05_SEMC_DA05				0x028 0x218 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_05_FLEXPWM4_PWM2_B			0x028 0x218 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_05_SAI2_TX_SYNC			0x028 0x218 0x5C4 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_05_XBAR_INOUT7				0x028 0x218 0x620 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_05_FLEXIO1_D05				0x028 0x218 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_05_GPIO4_IO05				0x028 0x218 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_06_SEMC_DA06				0x02C 0x21C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_06_FLEXPWM2_PWM0_A			0x02C 0x21C 0x478 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_06_SAI2_TX_BCLK			0x02C 0x21C 0x5C0 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_06_XBAR_INOUT8				0x02C 0x21C 0x624 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_06_FLEXIO1_D06				0x02C 0x21C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_06_GPIO4_IO06				0x02C 0x21C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_07_SEMC_DA07				0x030 0x220 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_07_FLEXPWM2_PWM0_B			0x030 0x220 0x488 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_07_SAI2_MCLK				0x030 0x220 0x5B0 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_07_XBAR_INOUT9				0x030 0x220 0x628 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_07_FLEXIO1_D07				0x030 0x220 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_07_GPIO4_IO07				0x030 0x220 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_08_SEMC_DM00				0x034 0x224 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_08_FLEXPWM2_PWM1_A			0x034 0x224 0x47C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_08_SAI2_RX_DATA			0x034 0x224 0x5B8 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_08_XBAR_INOUT17			0x034 0x224 0x62C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_08_FLEXIO1_D08				0x034 0x224 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_08_GPIO4_IO08				0x034 0x224 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_09_SEMC_ADDR00				0x038 0x228 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_09_FLEXPWM2_PWM1_B			0x038 0x228 0x48C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_09_SAI2_RX_SYNC			0x038 0x228 0x5BC 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_09_FLEXCAN2_TX				0x038 0x228 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_09_FLEXIO1_D09				0x038 0x228 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_09_GPIO4_IO09				0x038 0x228 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_10_SEMC_ADDR01				0x03C 0x22C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_10_FLEXPWM2_PWM2_A			0x03C 0x22C 0x480 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_10_SAI2_RX_BCLK			0x03C 0x22C 0x5B4 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_10_FLEXCAN2_RX				0x03C 0x22C 0x450 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_10_FLEXIO1_D10				0x03C 0x22C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_10_GPIO4_IO10				0x03C 0x22C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_11_SEMC_ADDR02				0x040 0x230 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_11_FLEXPWM2_PWM2_B			0x040 0x230 0x490 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_11_LPI2C4_SDA				0x040 0x230 0x4E8 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_11_USDHC2_RESET_B			0x040 0x230 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_11_FLEXIO1_D11				0x040 0x230 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_11_GPIO4_IO11				0x040 0x230 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_12_SEMC_ADDR03				0x044 0x234 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_12_XBAR_INOUT24			0x044 0x234 0x640 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_12_LPI2C4_SCL				0x044 0x234 0x4E4 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_12_USDHC2_WP				0x044 0x234 0x5D8 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_12_FLEXPWM1_PWM3_A			0x044 0x234 0x454 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_12_GPIO4_IO12				0x044 0x234 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_13_SEMC_ADDR04				0x048 0x238 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_13_XBAR_INOUT25			0x048 0x238 0x650 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_13_LPUART3_TXD				0x048 0x238 0x53C 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_13_MQS_RIGHT				0x048 0x238 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_13_FLEXPWM1_PWM3_B			0x048 0x238 0x464 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_13_GPIO4_IO13				0x048 0x238 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_14_SEMC_ADDR05				0x04C 0x23C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_14_XBAR_INOUT19			0x04C 0x23C 0x654 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_14_LPUART3_RXD				0x04C 0x23C 0x538 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_14_MQS_LEFT				0x04C 0x23C 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_14_LPSPI2_PCS1				0x04C 0x23C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_14_GPIO4_IO14				0x04C 0x23C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_15_SEMC_ADDR06				0x050 0x240 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_15_XBAR_INOUT20			0x050 0x240 0x634 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_15_LPUART3_CTS_B			0x050 0x240 0x534 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_15_SPDIF_OUT				0x050 0x240 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_15_TMR3_TIMER0				0x050 0x240 0x57C 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_15_GPIO4_IO15				0x050 0x240 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_16_SEMC_ADDR07				0x054 0x244 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_16_XBAR_INOUT21			0x054 0x244 0x658 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_16_LPUART3_RTS_B			0x054 0x244 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_16_SPDIF_IN				0x054 0x244 0x5C8 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_16_TMR3_TIMER1				0x054 0x244 0x580 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_16_GPIO4_IO16				0x054 0x244 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_17_SEMC_ADDR08				0x058 0x248 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_17_FLEXPWM4_PWM3_A			0x058 0x248 0x4A0 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_17_LPUART4_CTS_B			0x058 0x248 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_17_FLEXCAN1_TX				0x058 0x248 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_17_TMR3_TIMER2				0x058 0x248 0x584 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_17_GPIO4_IO17				0x058 0x248 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_SEMC_ADDR09				0x05C 0x24C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_FLEXPWM4_PWM3_B			0x05C 0x24C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_LPUART4_RTS_B			0x05C 0x24C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_FLEXCAN1_RX				0x05C 0x24C 0x44C 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_TMR3_TIMER3				0x05C 0x24C 0x588 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_GPIO4_IO18				0x05C 0x24C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_18_SNVS_VIO_5_CTL			0x05C 0x24C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_SEMC_ADDR11				0x060 0x250 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_FLEXPWM2_PWM3_A			0x060 0x250 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_LPUART4_TXD				0x060 0x250 0x544 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_ENET_RX_DATA01			0x060 0x250 0x438 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_TMR2_TIMER0				0x060 0x250 0x56C 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_GPIO4_IO19				0x060 0x250 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_19_SNVS_VIO_5				0x060 0x250 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_20_SEMC_ADDR12				0x064 0x254 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_20_FLEXPWM2_PWM3_B			0x064 0x254 0x484 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_20_LPUART4_RXD				0x064 0x254 0x540 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_20_ENET_RX_DATA00			0x064 0x254 0x434 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_20_TMR2_TIMER0				0x064 0x254 0x570 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_20_GPIO4_IO20				0x064 0x254 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_21_SEMC_BA0				0x068 0x258 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_21_FLEXPWM3_PWM3_A			0x068 0x258 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_21_LPI2C3_SDA				0x068 0x258 0x4E0 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_21_ENET_TX_DATA01			0x068 0x258 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_21_TMR2_TIMER2				0x068 0x258 0x574 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_21_GPIO4_IO21				0x068 0x258 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_22_SEMC_BA1				0x06C 0x25C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_22_FLEXPWM3_PWM3_B			0x06C 0x25C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_22_LPI2C3_SCL				0x06C 0x25C 0x4DC 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_22_ENET_TX_DATA00			0x06C 0x25C 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_22_TMR2_TIMER3				0x06C 0x25C 0x578 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_22_GPIO4_IO22				0x06C 0x25C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_23_SEMC_ADDR10				0x070 0x260 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_23_FLEXPWM1_PWM0_A			0x070 0x260 0x458 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_23_LPUART5_TXD				0x070 0x260 0x54C 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_23_ENET_RX_EN				0x070 0x260 0x43C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_23_GPT1_CAPTURE2			0x070 0x260 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_23_GPIO4_IO23				0x070 0x260 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_24_SEMC_CAS				0x074 0x264 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_24_FLEXPWM1_PWM0_B			0x074 0x264 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_24_LPUART5_RXD				0x074 0x264 0x548 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_24_ENET_TX_EN				0x074 0x264 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_24_GPT1_CAPTURE1			0x074 0x264 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_24_GPIO4_IO24				0x074 0x264 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_25_SEMC_RAS				0x078 0x268 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_25_FLEXPWM1_PWM1_A			0x078 0x268 0x45C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_25_LPUART6_TXD				0x078 0x268 0x554 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_25_ENET_TX_CLK				0x078 0x268 0x448 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_25_ENET_REF_CLK			0x078 0x268 0x42C 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_25_GPIO4_IO25				0x078 0x268 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_26_SEMC_CLK				0x07C 0x26C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_26_FLEXPWM1_PWM1_B			0x07C 0x26C 0x46C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_26_LPUART6_RXD				0x07C 0x26C 0x550 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_26_ENET_RX_ER				0x07C 0x26C 0x440 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_26_FLEXIO1_D12				0x07C 0x26C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_26_GPIO4_IO26				0x07C 0x26C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_27_SEMC_CKE				0x080 0x270 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_27_FLEXPWM1_PWM2_A			0x080 0x270 0x460 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_27_LPUART5_RTS_B			0x080 0x270 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_27_LPSPI1_SCK				0x080 0x270 0x4F0 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_27_FLEXIO1_D13				0x080 0x270 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_27_GPIO4_IO27				0x080 0x270 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_28_SEMC_WE				0x084 0x274 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_28_FLEXPWM1_PWM2_B			0x084 0x274 0x470 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_28_LPUART5_CTS_B			0x084 0x274 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_28_LPSPI1_SDO				0x084 0x274 0x4F8 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_28_FLEXIO1_D14				0x084 0x274 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_28_GPIO4_IO28				0x084 0x274 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_29_SEMC_CS0				0x088 0x278 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_29_FLEXPWM3_PWM0_A			0x088 0x278 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_29_LPUART6_RTS_B			0x088 0x278 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_29_LPSPI1_SDI				0x088 0x278 0x4F4 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_29_FLEXIO1_D15				0x088 0x278 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_29_GPIO4_IO29				0x088 0x278 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_30_SEMC_DA08				0x08C 0x27C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_30_FLEXPWM3_PWM0_B			0x08C 0x27C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_30_LPUART6_CTS_B			0x08C 0x27C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_30_LPSPI1_PCS0				0x08C 0x27C 0x4EC 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_30_CSI_DATA23				0x08C 0x27C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_30_GPIO4_IO30				0x08C 0x27C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_31_SEMC_DA09				0x090 0x280 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_31_FLEXPWM3_PWM1_A			0x090 0x280 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_31_LPUART7_TXD				0x090 0x280 0x55C 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_31_LPSPI1_PCS1				0x090 0x280 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_31_CSI_DATA22				0x090 0x280 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_31_GPIO4_IO31				0x090 0x280 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_32_SEMC_DA10				0x094 0x284 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_32_FLEXPWM3_PWM1_B			0x094 0x284 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_32_LPUART7_RXD				0x094 0x284 0x558 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_32_CCM_PMIC_READY			0x094 0x284 0x3FC 0x3 0x4
> -#define MXRT1050_IOMUXC_GPIO_EMC_32_CSI_DATA21				0x094 0x284 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_32_GPIO3_IO18				0x094 0x284 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_33_SEMC_DA11				0x098 0x288 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_33_FLEXPWM3_PWM2_A			0x098 0x288 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_33_USDHC1_RESET_B			0x098 0x288 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_33_SAI3_RX_DATA			0x098 0x288 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_33_CSI_DATA20				0x098 0x288 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_33_GPIO3_IO19				0x098 0x288 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_34_SEMC_DA12				0x09C 0x28C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_34_FLEXPWM3_PWM2_B			0x09C 0x28C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_34_USDHC1_VSELECT			0x09C 0x28C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_34_SAI3_RX_SYNC			0x09C 0x28C 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_34_CSI_DATA19				0x09C 0x28C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_34_GPIO3_IO20				0x09C 0x28C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_SEMC_DA13				0x0A0 0x290 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_XBAR_INOUT18			0x0A0 0x290 0x630 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_GPT1_COMPARE1			0x0A0 0x290 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_SAI3_RX_BCLK			0x0A0 0x290 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_CSI_DATA18				0x0A0 0x290 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_GPIO3_IO21				0x0A0 0x290 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_35_USDHC1_CD_B				0x0A0 0x290 0x5D4 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_SEMC_DA14				0x0A4 0x294 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_XBAR_INOUT22			0x0A4 0x294 0x638 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_GPT1_COMPARE2			0x0A4 0x294 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_SAI3_TX_DATA			0x0A4 0x294 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_CSI_DATA17				0x0A4 0x294 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_GPIO3_IO22				0x0A4 0x294 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_36_USDHC1_WP				0x0A4 0x294 0x5D8 0x6 0x1
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_SEMC_DA15				0x0A8 0x298 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_XBAR_INOUT23			0x0A8 0x298 0x63C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_GPT1_COMPARE3			0x0A8 0x298 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_SAI3_MCLK				0x0A8 0x298 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_CSI_DATA16				0x0A8 0x298 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_GPIO3_IO23				0x0A8 0x298 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_37_USDHC2_WP				0x0A8 0x298 0x608 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_SEMC_DM01				0x0AC 0x29C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_FLEXPWM1_PWM3_A			0x0AC 0x29C 0x454 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_LPUART8_TXD				0x0AC 0x29C 0x564 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_SAI3_TX_BCLK			0x0AC 0x29C 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_CSI_FIELD				0x0AC 0x29C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_GPIO3_IO24				0x0AC 0x29C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_38_USDHC2_VSELECT			0x0AC 0x29C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_SEMC_DQS				0x0B0 0x2A0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_FLEXPWM1_PWM3_B			0x0B0 0x2A0 0x464 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_LPUART8_RXD				0x0B0 0x2A0 0x560 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_SAI3_TX_SYNC			0x0B0 0x2A0 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_WDOG1_B				0x0B0 0x2A0 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_GPIO3_IO25				0x0B0 0x2A0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_39_USDHC2_CD_B				0x0B0 0x2A0 0x5E0 0x6 0x1
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_SEMC_RDY				0x0B4 0x2A4 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_GPT2_CAPTURE2			0x0B4 0x2A4 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_LPSPI1_PCS2				0x0B4 0x2A4 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_USB_OTG2_OC				0x0B4 0x2A4 0x5CC 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_ENET_MDC				0x0B4 0x2A4 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_GPIO3_IO26				0x0B4 0x2A4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_40_USDHC2_RESET_B			0x0B4 0x2A4 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_SEMC_CSX0				0x0B8 0x2A8 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_GPT2_CAPTURE1			0x0B8 0x2A8 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_LPSPI1_PCS3				0x0B8 0x2A8 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_USB_OTG2_PWR			0x0B8 0x2A8 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_ENET_MDIO				0x0B8 0x2A8 0x430 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_GPIO3_IO27				0x0B8 0x2A8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_EMC_41_USDHC2_VSELECT			0x0B8 0x2A8 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_FLEXPWM2_PWM3_A			0x0BC 0x2AC 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_XBAR_INOUT14			0x0BC 0x2AC 0x644 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_REF_CLK_32K			0x0BC 0x2AC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_USB_OTG2_ID			0x0BC 0x2AC 0x3F8 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_LPI2C1_SCLS			0x0BC 0x2AC 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_GPIO1_IO00			0x0BC 0x2AC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_USDHC1_RESET_B			0x0BC 0x2AC 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_00_LPSPI3_SCK			0x0BC 0x2AC 0x510 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_FLEXPWM2_PWM3_B			0x0C0 0x2B0 0x484 0x0 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_XBAR_INOUT15			0x0C0 0x2B0 0x648 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_REF_CLK_24M			0x0C0 0x2B0 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_USB_OTG1_ID			0x0C0 0x2B0 0x3F4 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_LPI2C1_SDAS			0x0C0 0x2B0 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_GPIO1_IO01			0x0C0 0x2B0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_EWM_OUT_B				0x0C0 0x2B0 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_01_LPSPI3_SDO			0x0C0 0x2B0 0x518 0x7 0x1
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_FLEXCAN2_TX			0x0C4 0x2B4 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_XBAR_INOUT16			0x0C4 0x2B4 0x64C 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_LPUART6_TXD			0x0C4 0x2B4 0x554 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_USB_OTG1_PWR			0x0C4 0x2B4 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_FLEXPWM1_PWM0_X			0x0C4 0x2B4 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_GPIO1_IO02			0x0C4 0x2B4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_LPI2C1_HREQ			0x0C4 0x2B4 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_02_LPSPI3_SDI			0x0C4 0x2B4 0x514 0x7 0x1
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_FLEXCAN2_RX			0x0C8 0x2B8 0x450 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_XBAR_INOUT17			0x0C8 0x2B8 0x62C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_LPUART6_RXD			0x0C8 0x2B8 0x550 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_USB_OTG1_OC			0x0C8 0x2B8 0x5D0 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_FLEXPWM1_PWM1_X			0x0C8 0x2B8 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_GPIO1_IO03			0x0C8 0x2B8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_REF_CLK_24M			0x0C8 0x2B8 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_03_LPSPI3_PCS0			0x0C8 0x2B8 0x50C 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_SRC_BOOT_MODE00			0x0CC 0x2BC 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_MQS_RIGHT				0x0CC 0x2BC 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_ENET_TX_DATA03			0x0CC 0x2BC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_SAI2_TX_SYNC			0x0CC 0x2BC 0x5C4 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_CSI_DATA09			0x0CC 0x2BC 0x41C 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_GPIO1_IO04			0x0CC 0x2BC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_PIT_TRIGGER00			0x0CC 0x2BC 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_04_LPSPI3_PCS1			0x0CC 0x2BC 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_SRC_BOOT_MODE01			0x0D0 0x2C0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_MQS_LEFT				0x0D0 0x2C0 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_ENET_TX_DATA02			0x0D0 0x2C0 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_SAI2_TX_BCLK			0x0D0 0x2C0 0x5C0 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_CSI_DATA08			0x0D0 0x2C0 0x418 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_GPIO1_IO05			0x0D0 0x2C0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_XBAR_INOUT17			0x0D0 0x2C0 0x62C 0x6 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_05_LPSPI3_PCS2			0x0D0 0x2C0 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_JTAG_TMS				0x0D4 0x2C4 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_GPT2_COMPARE1			0x0D4 0x2C4 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_ENET_RX_CLK			0x0D4 0x2C4 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_SAI2_RX_BCLK			0x0D4 0x2C4 0x5B4 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_CSI_DATA07			0x0D4 0x2C4 0x414 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_GPIO1_IO06			0x0D4 0x2C4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_XBAR_INOUT18			0x0D4 0x2C4 0x630 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_06_LPSPI3_PCS3			0x0D4 0x2C4 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_JTAG_TCK				0x0D8 0x2C8 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_GPT2_COMPARE2			0x0D8 0x2C8 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_ENET_TX_ER			0x0D8 0x2C8 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_SAI2_RX_SYNC			0x0D8 0x2C8 0x5BC 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_CSI_DATA06			0x0D8 0x2C8 0x410 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_GPIO1_IO07			0x0D8 0x2C8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_XBAR_INOUT19			0x0D8 0x2C8 0x654 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_07_ENET_1588_EVENT3_OUT		0x0D8 0x2C8 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_JTAG_MOD				0x0DC 0x2CC 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_GPT2_COMPARE3			0x0DC 0x2CC 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_ENET_RX_DATA03			0x0DC 0x2CC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_SAI2_RX_DATA			0x0DC 0x2CC 0x5B8 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_CSI_DATA05			0x0DC 0x2CC 0x40C 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_GPIO1_IO08			0x0DC 0x2CC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_XBAR_INOUT20			0x0DC 0x2CC 0x634 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_08_ENET_1588_EVENT3_IN		0x0DC 0x2CC 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_JTAG_TDI				0x0E0 0x2D0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_FLEXPWM2_PWM3_A			0x0E0 0x2D0 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_ENET_RX_DATA02			0x0E0 0x2D0 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_SAI2_TX_DATA			0x0E0 0x2D0 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_CSI_DATA04			0x0E0 0x2D0 0x408 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_GPIO1_IO09			0x0E0 0x2D0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_XBAR_INOUT21			0x0E0 0x2D0 0x658 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_09_GPT2_CLK				0x0E0 0x2D0 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_JTAG_TDO				0x0E4 0x2D4 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_FLEXPWM1_PWM3_A			0x0E4 0x2D4 0x454 0x1 0x3
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_ENET_CRS				0x0E4 0x2D4 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_SAI2_MCLK				0x0E4 0x2D4 0x5B0 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_CSI_DATA03			0x0E4 0x2D4 0x404 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_GPIO1_IO10			0x0E4 0x2D4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_XBAR_INOUT22			0x0E4 0x2D4 0x638 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_10_ENET_1588_EVENT0_OUT		0x0E4 0x2D4 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_JTAG_TRSTB			0x0E8 0x2D8 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_FLEXPWM1_PWM3_B			0x0E8 0x2D8 0x464 0x1 0x3
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_ENET_COL				0x0E8 0x2D8 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_WDOG1_B				0x0E8 0x2D8 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_CSI_DATA02			0x0E8 0x2D8 0x400 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_GPIO1_IO11			0x0E8 0x2D8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_XBAR_INOUT23			0x0E8 0x2D8 0x63C 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_11_ENET_1588_EVENT0_IN		0x0E8 0x2D8 0x444 0x7 0x1
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_LPI2C4_SCL			0x0EC 0x2DC 0x4E4 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_CCM_PMIC_READY			0x0EC 0x2DC 0x3FC 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_LPUART1_TXD			0x0EC 0x2DC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_WDOG2_B				0x0EC 0x2DC 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_FLEXPWM1_PWM2_X			0x0EC 0x2DC 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_GPIO1_IO12			0x0EC 0x2DC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_ENET_1588_EVENT1_OUT		0x0EC 0x2DC 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_12_NMI				0x0EC 0x2DC 0x568 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_LPI2C4_SDA			0x0F0 0x2E0 0x4E8 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_GPT1_CLK				0x0F0 0x2E0 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_LPUART1_RXD			0x0F0 0x2E0 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_EWM_OUT_B				0x0F0 0x2E0 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_FLEXPWM1_PWM3_X			0x0F0 0x2E0 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_GPIO1_IO13			0x0F0 0x2E0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_ENET_1588_EVENT1_IN		0x0F0 0x2E0 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_13_REF_CLK_24M			0x0F0 0x2E0 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_USB_OTG2_OC			0x0F4 0x2E4 0x5CC 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_XBAR_INOUT24			0x0F4 0x2E4 0x640 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_LPUART1_CTS_B			0x0F4 0x2E4 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_ENET_1588_EVENT0_OUT		0x0F4 0x2E4 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_CSI_VSYNC				0x0F4 0x2E4 0x428 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_GPIO1_IO14			0x0F4 0x2E4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_14_FLEXCAN2_TX			0x0F4 0x2E4 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_USB_OTG2_PWR			0x0F8 0x2E8 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_XBAR_INOUT25			0x0F8 0x2E8 0x650 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_LPUART1_RTS_B			0x0F8 0x2E8 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_ENET_1588_EVENT0_IN		0x0F8 0x2E8 0x444 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_CSI_HSYNC				0x0F8 0x2E8 0x420 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_GPIO1_IO15			0x0F8 0x2E8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_FLEXCAN2_RX			0x0F8 0x2E8 0x450 0x6 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B0_15_WDOG1_WDOG_RST_B_DEB		0x0F8 0x2E8 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_USB_OTG2_ID			0x0FC 0x2EC 0x3F8 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_TMR3_TIMER0			0x0FC 0x2EC 0x57C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_LPUART2_CTS_B			0x0FC 0x2EC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_LPI2C1_SCL			0x0FC 0x2EC 0x4CC 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_WDOG1_B				0x0FC 0x2EC 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_GPIO1_IO16			0x0FC 0x2EC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_USDHC1_WP				0x0FC 0x2EC 0x5D8 0x6 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_00_KPP_ROW07				0x0FC 0x2EC 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_USB_OTG1_PWR			0x100 0x2F0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_TMR3_TIMER1			0x100 0x2F0 0x580 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_LPUART2_RTS_B			0x100 0x2F0 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_LPI2C1_SDA			0x100 0x2F0 0x4D0 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_CCM_PMIC_READY			0x100 0x2F0 0x3FC 0x4 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_GPIO1_IO17			0x100 0x2F0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_USDHC1_VSELECT			0x100 0x2F0 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_01_KPP_COL07				0x100 0x2F0 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_USB_OTG1_ID			0x104 0x2F4 0x3F4 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_TMR3_TIMER2			0x104 0x2F4 0x584 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_LPUART2_TXD			0x104 0x2F4 0x530 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_SPDIF_OUT				0x104 0x2F4 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_ENET_1588_EVENT2_OUT		0x104 0x2F4 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_GPIO1_IO18			0x104 0x2F4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_USDHC1_CD_B			0x104 0x2F4 0x5D4 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_02_KPP_ROW06				0x104 0x2F4 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_USB_OTG1_OC			0x108 0x2F8 0x5D0 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_TMR3_TIMER3			0x108 0x2F8 0x588 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_LPUART2_RXD			0x108 0x2F8 0x52C 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_SPDIF_IN				0x108 0x2F8 0x5C8 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_ENET_1588_EVENT2_IN		0x108 0x2F8 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_GPIO1_IO19			0x108 0x2F8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_USDHC2_CD_B			0x108 0x2F8 0x5E0 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_03_KPP_COL06				0x108 0x2F8 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_FLEXSPI_B_DATA3			0x10C 0x2FC 0x4C4 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_ENET_MDC				0x10C 0x2FC 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_LPUART3_CTS_B			0x10C 0x2FC 0x534 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_SPDIF_SR_CLK			0x10C 0x2FC 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_CSI_PIXCLK			0x10C 0x2FC 0x424 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_GPIO1_IO20			0x10C 0x2FC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_USDHC2_DATA0			0x10C 0x2FC 0x5E8 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_04_KPP_ROW05				0x10C 0x2FC 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_FLEXSPI_B_DATA2			0x110 0x300 0x4C0 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_ENET_MDIO				0x110 0x300 0x430 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_LPUART3_RTS_B			0x110 0x300 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_SPDIF_OUT				0x110 0x300 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_CSI_MCLK				0x110 0x300 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_GPIO1_IO21			0x110 0x300 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_USDHC2_DATA1			0x110 0x300 0x5EC 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_05_KPP_COL05				0x110 0x300 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_FLEXSPI_B_DATA1			0x114 0x304 0x4BC 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA			0x114 0x304 0x4E0 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_LPUART3_TXD			0x114 0x304 0x53C 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_SPDIF_LOCK			0x114 0x304 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_CSI_VSYNC				0x114 0x304 0x428 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_GPIO1_IO22			0x114 0x304 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_USDHC2_DATA2			0x114 0x304 0x5F0 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_06_KPP_ROW04				0x114 0x304 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_FLEXSPI_B_DATA0			0x118 0x308 0x4B8 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL			0x118 0x308 0x4DC 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_LPUART3_RXD			0x118 0x308 0x538 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_SPDIF_EXT_CLK			0x118 0x308 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_CSI_HSYNC				0x118 0x308 0x420 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_GPIO1_IO23			0x118 0x308 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_USDHC2_DATA3			0x118 0x308 0x5F4 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_07_KPP_COL04				0x118 0x308 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_FLEXSPI_A_SS1_B			0x11C 0x30C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_FLEXPWM4_PWM0_A			0x11C 0x30C 0x494 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_FLEXCAN1_TX			0x11C 0x30C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_CCM_PMIC_READY			0x11C 0x30C 0x3FC 0x3 0x3
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_CSI_DATA09			0x11C 0x30C 0x41C 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_GPIO1_IO24			0x11C 0x30C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_USDHC2_CMD			0x11C 0x30C 0x5E4 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_08_KPP_ROW03				0x11C 0x30C 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_FLEXSPI_A_DQS			0x120 0x310 0x4A4 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_FLEXPWM4_PWM1_A			0x120 0x310 0x498 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_FLEXCAN1_RX			0x120 0x310 0x44C 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_SAI1_MCLK				0x120 0x310 0x58C 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_CSI_DATA08			0x120 0x310 0x418 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_GPIO1_IO25			0x120 0x310 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_USDHC2_CLK			0x120 0x310 0x5DC 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_09_KPP_COL03				0x120 0x310 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_FLEXSPI_A_DATA3			0x124 0x314 0x4B4 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_WDOG1_B				0x124 0x314 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_LPUART8_TXD			0x124 0x314 0x564 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_SAI1_RX_SYNC			0x124 0x314 0x5A4 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_CSI_DATA07			0x124 0x314 0x414 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_GPIO1_IO26			0x124 0x314 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_USDHC2_WP				0x124 0x314 0x608 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_10_KPP_ROW02				0x124 0x314 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_FLEXSPI_A_DATA2			0x128 0x318 0x4B0 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_EWM_OUT_B				0x128 0x318 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_LPUART8_RXD			0x128 0x318 0x560 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_SAI1_RX_BCLK			0x128 0x318 0x590 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_CSI_DATA06			0x128 0x318 0x410 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_GPIO1_IO27			0x128 0x318 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_USDHC2_RESET_B			0x128 0x318 0x000 0x6 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_11_KPP_COL02				0x128 0x318 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_FLEXSPI_A_DATA1			0x12C 0x31C 0x4AC 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_ACMP1_OUT				0x12C 0x31C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_LPSPI3_PCS0			0x12C 0x31C 0x50C 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_SAI1_RX_DATA00			0x12C 0x31C 0x594 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_CSI_DATA05			0x12C 0x31C 0x40C 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_GPIO1_IO28			0x12C 0x31C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_USDHC2_DATA4			0x12C 0x31C 0x5F8 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_12_KPP_ROW01				0x12C 0x31C 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_FLEXSPI_A_DATA0			0x130 0x320 0x4A8 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_ACMP2_OUT				0x130 0x320 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_LPSPI3_SDI			0x130 0x320 0x514 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_SAI1_TX_DATA00			0x130 0x320 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_CSI_DATA04			0x130 0x320 0x408 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_GPIO1_IO29			0x130 0x320 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_USDHC2_DATA5			0x130 0x320 0x5FC 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_13_KPP_COL01				0x130 0x320 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_FLEXSPI_A_SCLK			0x134 0x324 0x4C8 0x0 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_ACMP3_OUT				0x134 0x324 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_LPSPI3_SDO			0x134 0x324 0x518 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_SAI1_TX_BCLK			0x134 0x324 0x5A8 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_CSI_DATA03			0x134 0x324 0x404 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_GPIO1_IO30			0x134 0x324 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_USDHC2_DATA6			0x134 0x324 0x600 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_14_KPP_ROW00				0x134 0x324 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_FLEXSPI_A_SS0_B			0x138 0x328 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_ACMP4_OUT				0x138 0x328 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_LPSPI3_SCK			0x138 0x328 0x510 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_SAI1_TX_SYNC			0x138 0x328 0x5AC 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_CSI_DATA02			0x138 0x328 0x400 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_GPIO1_IO31			0x138 0x328 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_USDHC2_DATA7			0x138 0x328 0x604 0x6 0x1
> -#define MXRT1050_IOMUXC_GPIO_AD_B1_15_KPP_COL00				0x138 0x328 0x000 0x7 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_00_LCD_CLK				0x13C 0x32C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_00_TMR1_TIMER0				0x13C 0x32C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_00_MQS_RIGHT				0x13C 0x32C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_00_LPSPI4_PCS0				0x13C 0x32C 0x51C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_00_FLEXIO2_D00				0x13C 0x32C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_00_GPIO2_IO00				0x13C 0x32C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_00_SEMC_CSX1				0x13C 0x32C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_01_LCD_ENABLE				0x140 0x330 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_01_TMR1_TIMER1				0x140 0x330 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_01_MQS_LEFT				0x140 0x330 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_01_LPSPI4_SDI				0x140 0x330 0x524 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_01_FLEXIO2_D01				0x140 0x330 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_01_GPIO2_IO01				0x140 0x330 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_01_SEMC_CSX2				0x140 0x330 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_02_LCD_HSYNC				0x144 0x334 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_02_TMR1_TIMER2				0x144 0x334 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_02_FLEXCAN1_TX				0x144 0x334 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_02_LPSPI4_SDO				0x144 0x334 0x528 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_02_FLEXIO2_D02				0x144 0x334 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_02_GPIO2_IO02				0x144 0x334 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_02_SEMC_CSX3				0x144 0x334 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_03_LCD_VSYNC				0x148 0x338 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_03_TMR2_TIMER0				0x148 0x338 0x56C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_03_FLEXCAN1_RX				0x148 0x338 0x44C 0x2 0x3
> -#define MXRT1050_IOMUXC_GPIO_B0_03_LPSPI4_SCK				0x148 0x338 0x520 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_03_FLEXIO2_D03				0x148 0x338 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_03_GPIO2_IO03				0x148 0x338 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_03_WDOG2_RESET_B_DEB			0x148 0x338 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_04_LCD_DATA00				0x14C 0x33C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_04_TMR2_TIMER1				0x14C 0x33C 0x570 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_04_LPI2C2_SCL				0x14C 0x33C 0x4D4 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_04_ARM_TRACE00				0x14C 0x33C 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_04_FLEXIO2_D04				0x14C 0x33C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_04_GPIO2_IO04				0x14C 0x33C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_04_SRC_BT_CFG00				0x14C 0x33C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_05_LCD_DATA01				0x150 0x340 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_05_TMR2_TIMER2				0x150 0x340 0x574 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_05_LPI2C2_SDA				0x150 0x340 0x4D8 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_05_ARM_TRACE01				0x150 0x340 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_05_FLEXIO2_D05				0x150 0x340 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_05_GPIO2_IO05				0x150 0x340 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_05_SRC_BT_CFG01				0x150 0x340 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_06_LCD_DATA02				0x154 0x344 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_06_TMR3_TIMER0				0x154 0x344 0x57C 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_06_FLEXPWM2_PWM0_A			0x154 0x344 0x478 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_06_ARM_TRACE02				0x154 0x344 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_06_FLEXIO2_D06				0x154 0x344 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_06_GPIO2_IO06				0x154 0x344 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_06_SRC_BT_CFG02				0x154 0x344 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_07_LCD_DATA03				0x158 0x348 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_07_TMR3_TIMER1				0x158 0x348 0x580 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_07_FLEXPWM2_PWM0_B			0x158 0x348 0x488 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_07_ARM_TRACE03				0x158 0x348 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_07_FLEXIO2_D07				0x158 0x348 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_07_GPIO2_IO07				0x158 0x348 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_07_SRC_BT_CFG03				0x158 0x348 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_08_LCD_DATA04				0x15C 0x34C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_08_TMR3_TIMER2				0x15C 0x34C 0x584 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_08_FLEXPWM2_PWM1_A			0x15C 0x34C 0x47C 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_08_LPUART3_TXD				0x15C 0x34C 0x53C 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_08_FLEXIO2_D08				0x15C 0x34C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_08_GPIO2_IO08				0x15C 0x34C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_08_SRC_BT_CFG04				0x15C 0x34C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_09_LCD_DATA05				0x160 0x350 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_09_TMR4_TIMER0				0x160 0x350 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_09_FLEXPWM2_PWM1_B			0x160 0x350 0x48C 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_09_LPUART3_RXD				0x160 0x350 0x538 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_09_FLEXIO2_D09				0x160 0x350 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_09_GPIO2_IO09				0x160 0x350 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_09_SRC_BT_CFG05				0x160 0x350 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_10_LCD_DATA06				0x164 0x354 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_10_TMR4_TIMER1				0x164 0x354 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_10_FLEXPWM2_PWM2_A			0x164 0x354 0x480 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_10_SAI1_TX_DATA03			0x164 0x354 0x598 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_10_FLEXIO2_D10				0x164 0x354 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_10_GPIO2_IO10				0x164 0x354 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_10_SRC_BT_CFG06				0x164 0x354 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_11_LCD_DATA07				0x168 0x358 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_11_TMR4_TIMER2				0x168 0x358 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_11_FLEXPWM2_PWM2_B			0x168 0x358 0x490 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_11_SAI1_TX_DATA02			0x168 0x358 0x59C 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_11_FLEXIO2_D11				0x168 0x358 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_11_GPIO2_IO11				0x168 0x358 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_11_SRC_BT_CFG07				0x168 0x358 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_12_LCD_DATA08				0x16C 0x35C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_12_XBAR_INOUT10				0x16C 0x35C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_12_ARM_TRACE_CLK			0x16C 0x35C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_12_SAI1_TX_DATA01			0x16C 0x35C 0x5A0 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B0_12_FLEXIO2_D12				0x16C 0x35C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_12_GPIO2_IO12				0x16C 0x35C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_12_SRC_BT_CFG08				0x16C 0x35C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_13_LCD_DATA09				0x170 0x360 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_13_XBAR_INOUT11				0x170 0x360 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_13_ARM_TRACE_SWO			0x170 0x360 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_13_SAI1_MCLK				0x170 0x360 0x58C 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_13_FLEXIO2_D13				0x170 0x360 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_13_GPIO2_IO13				0x170 0x360 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_13_SRC_BT_CFG09				0x170 0x360 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_14_LCD_DATA10				0x174 0x364 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_14_XBAR_INOUT12				0x174 0x364 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_14_ARM_CM7_TXEV				0x174 0x364 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_14_SAI1_RX_SYNC				0x174 0x364 0x5A4 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_14_FLEXIO2_D14				0x174 0x364 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_14_GPIO2_IO14				0x174 0x364 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_14_SRC_BT_CFG10				0x174 0x364 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B0_15_LCD_DATA11				0x178 0x368 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_15_XBAR_INOUT13				0x178 0x368 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_15_ARM_CM7_RXEV				0x178 0x368 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_15_SAI1_RX_BCLK				0x178 0x368 0x590 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B0_15_FLEXIO2_D15				0x178 0x368 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_15_GPIO2_IO15				0x178 0x368 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B0_15_SRC_BT_CFG11				0x178 0x368 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_00_LCD_DATA12				0x17C 0x36C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_00_XBAR_INOUT14				0x17C 0x36C 0x644 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_00_LPUART4_TXD				0x17C 0x36C 0x544 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_00_SAI1_RX_DATA00			0x17C 0x36C 0x594 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_00_FLEXIO2_D16				0x17C 0x36C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_00_GPIO2_IO16				0x17C 0x36C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_00_FLEXPWM1_PWM3_A			0x17C 0x36C 0x454 0x6 0x4
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_01_LCD_DATA13				0x180 0x370 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_01_XBAR_INOUT15				0x180 0x370 0x648 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_01_LPUART4_RXD				0x180 0x370 0x540 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_01_SAI1_TX_DATA00			0x180 0x370 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_01_FLEXIO2_D17				0x180 0x370 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_01_GPIO2_IO17				0x180 0x370 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_01_FLEXPWM1_PWM3_B			0x180 0x370 0x464 0x6 0x4
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_02_LCD_DATA14				0x184 0x374 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_02_XBAR_INOUT16				0x184 0x374 0x64C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_02_LPSPI4_PCS2				0x184 0x374 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_02_SAI1_TX_BCLK				0x184 0x374 0x5A8 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_02_FLEXIO2_D18				0x184 0x374 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_02_GPIO2_IO18				0x184 0x374 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_02_FLEXPWM2_PWM3_A			0x184 0x374 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_03_LCD_DATA15				0x188 0x378 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_03_XBAR_INOUT17				0x188 0x378 0x62C 0x1 0x3
> -#define MXRT1050_IOMUXC_GPIO_B1_03_LPSPI4_PCS1				0x188 0x378 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_03_SAI1_TX_SYNC				0x188 0x378 0x5AC 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_03_FLEXIO2_D19				0x188 0x378 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_03_GPIO2_IO19				0x188 0x378 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_03_FLEXPWM2_PWM3_B			0x188 0x378 0x484 0x6 0x3
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_04_LCD_DATA16				0x18C 0x37C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_04_LPSPI4_PCS0				0x18C 0x37C 0x51C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_04_CSI_DATA15				0x18C 0x37C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_04_ENET_RX_DATA00			0x18C 0x37C 0x434 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_04_FLEXIO2_D20				0x18C 0x37C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_04_GPIO2_IO20				0x18C 0x37C 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_05_LCD_DATA17				0x190 0x380 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_05_LPSPI4_SDI				0x190 0x380 0x524 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_05_CSI_DATA14				0x190 0x380 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_05_ENET_RX_DATA01			0x190 0x380 0x438 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_05_FLEXIO2_D21				0x190 0x380 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_05_GPIO2_IO21				0x190 0x380 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_06_LCD_DATA18				0x194 0x384 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_06_LPSPI4_SDO				0x194 0x384 0x528 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_06_CSI_DATA13				0x194 0x384 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_06_ENET_RX_EN				0x194 0x384 0x43C 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_06_FLEXIO2_D22				0x194 0x384 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_06_GPIO2_IO22				0x194 0x384 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_07_LCD_DATA19				0x198 0x388 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_07_LPSPI4_SCK				0x198 0x388 0x520 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_07_CSI_DATA12				0x198 0x388 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_07_ENET_TX_DATA00			0x198 0x388 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_07_FLEXIO2_D23				0x198 0x388 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_07_GPIO2_IO23				0x198 0x388 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_08_LCD_DATA20				0x19C 0x38C 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_08_TMR1_TIMER3				0x19C 0x38C 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_08_CSI_DATA11				0x19C 0x38C 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_08_ENET_TX_DATA01			0x19C 0x38C 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_08_FLEXIO2_D24				0x19C 0x38C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_08_GPIO2_IO24				0x19C 0x38C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_08_FLEXCAN2_TX				0x19C 0x38C 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_09_LCD_DATA21				0x1A0 0x390 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_09_TMR2_TIMER3				0x1A0 0x390 0x578 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_09_CSI_DATA10				0x1A0 0x390 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_09_ENET_TX_EN				0x1A0 0x390 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_09_FLEXIO2_D25				0x1A0 0x390 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_09_GPIO2_IO25				0x1A0 0x390 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_09_FLEXCAN2_RX				0x1A0 0x390 0x450 0x6 0x3
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_10_LCD_DATA22				0x1A4 0x394 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_10_TMR3_TIMER3				0x1A4 0x394 0x588 0x1 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_10_CSI_DATA00				0x1A4 0x394 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_10_ENET_TX_CLK				0x1A4 0x394 0x448 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_10_FLEXIO2_D26				0x1A4 0x394 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_10_GPIO2_IO26				0x1A4 0x394 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_10_ENET_REF_CLK				0x1A4 0x394 0x42C 0x6 0x1
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_11_LCD_DATA23				0x1A8 0x398 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_11_TMR4_TIMER3				0x1A8 0x398 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_11_CSI_DATA01				0x1A8 0x398 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_11_ENET_RX_ER				0x1A8 0x398 0x440 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_11_FLEXIO2_D27				0x1A8 0x398 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_11_GPIO2_IO27				0x1A8 0x398 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_11_LPSPI4_PCS3				0x1A8 0x398 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_12_LPUART5_TXD				0x1AC 0x39C 0x54C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_12_CSI_PIXCLK				0x1AC 0x39C 0x424 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_12_ENET_1588_EVENT0_IN			0x1AC 0x39C 0x444 0x3 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_12_FLEXIO2_D28				0x1AC 0x39C 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_12_GPIO2_IO28				0x1AC 0x39C 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_12_USDHC1_CD_B				0x1AC 0x39C 0x5D4 0x6 0x2
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_13_WDOG1_B				0x1B0 0x3A0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_13_LPUART5_RXD				0x1B0 0x3A0 0x548 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_13_CSI_VSYNC				0x1B0 0x3A0 0x428 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_13_ENET_1588_EVENT0_OUT			0x1B0 0x3A0 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_13_FLEXIO2_D29				0x1B0 0x3A0 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_13_GPIO2_IO29				0x1B0 0x3A0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_13_USDHC1_WP				0x1B0 0x3A0 0x5D8 0x6 0x3
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_14_ENET_MDC				0x1B4 0x3A4 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_14_FLEXPWM4_PWM2_A			0x1B4 0x3A4 0x49C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_14_CSI_HSYNC				0x1B4 0x3A4 0x420 0x2 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_14_XBAR_INOUT02				0x1B4 0x3A4 0x60C 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_14_FLEXIO2_D30				0x1B4 0x3A4 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_14_GPIO2_IO30				0x1B4 0x3A4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_14_USDHC1_VSELECT			0x1B4 0x3A4 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_B1_15_ENET_MDIO				0x1B8 0x3A8 0x430 0x0 0x2
> -#define MXRT1050_IOMUXC_GPIO_B1_15_FLEXPWM4_PWM3_A			0x1B8 0x3A8 0x4A0 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_15_CSI_MCLK				0x1B8 0x3A8 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_15_XBAR_INOUT03				0x1B8 0x3A8 0x610 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_B1_15_FLEXIO2_D31				0x1B8 0x3A8 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_15_GPIO2_IO31				0x1B8 0x3A8 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_B1_15_USDHC1_RESET_B			0x1B8 0x3A8 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_USDHC1_CMD			0x1BC 0x3AC 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_FLEXPWM1_PWM0_A			0x1BC 0x3AC 0x458 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_LPI2C3_SCL			0x1BC 0x3AC 0x4DC 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_XBAR_INOUT04			0x1BC 0x3AC 0x614 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_LPSPI1_SCK			0x1BC 0x3AC 0x4F0 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_GPIO3_IO12			0x1BC 0x3AC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_00_FLEXSPI_A_SS1_B			0x1BC 0x3AC 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_USDHC1_CLK			0x1C0 0x3B0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_FLEXPWM1_PWM0_B			0x1C0 0x3B0 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_LPI2C3_SDA			0x1C0 0x3B0 0x4E0 0x2 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_XBAR_INOUT05			0x1C0 0x3B0 0x618 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_LPSPI1_PCS0			0x1C0 0x3B0 0x4EC 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_GPIO3_IO13			0x1C0 0x3B0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_01_FLEXSPI_B_SS1_B			0x1C0 0x3B0 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0			0x1C4 0x3B4 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_02_FLEXPWM1_PWM1_A			0x1C4 0x3B4 0x45C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_02_LPUART8_CTS_B			0x1C4 0x3B4 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_02_XBAR_INOUT06			0x1C4 0x3B4 0x61C 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_02_LPSPI1_SDO			0x1C4 0x3B4 0x4F8 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_02_GPIO3_IO14			0x1C4 0x3B4 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1			0x1C8 0x3B8 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_03_FLEXPWM1_PWM1_B			0x1C8 0x3B8 0x46C 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_03_LPUART8_RTS_B			0x1C8 0x3B8 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_03_XBAR_INOUT07			0x1C8 0x3B8 0x620 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_03_LPSPI1_SDI			0x1C8 0x3B8 0x4F4 0x4 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_03_GPIO3_IO15			0x1C8 0x3B8 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2			0x1CC 0x3BC 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_FLEXPWM1_PWM2_A			0x1CC 0x3BC 0x460 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_LPUART8_TXD			0x1CC 0x3BC 0x564 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_XBAR_INOUT08			0x1CC 0x3BC 0x624 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_FLEXSPI_B_SS0_B			0x1CC 0x3BC 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_GPIO3_IO16			0x1CC 0x3BC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_04_CCM_CLKO1				0x1CC 0x3BC 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3			0x1D0 0x3C0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_FLEXPWM1_PWM2_B			0x1D0 0x3C0 0x470 0x1 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_LPUART8_RXD			0x1D0 0x3C0 0x560 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_XBAR_INOUT09			0x1D0 0x3C0 0x628 0x3 0x1
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_FLEXSPI_B_DQS			0x1D0 0x3C0 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_GPIO3_IO17			0x1D0 0x3C0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B0_05_CCM_CLKO2				0x1D0 0x3C0 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_00_USDHC2_DATA3			0x1D4 0x3C4 0x5F4 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_00_FLEXSPI_B_DATA3			0x1D4 0x3C4 0x4C4 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_00_FLEXPWM1_PWM3_A			0x1D4 0x3C4 0x454 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_00_SAI1_TX_DATA03			0x1D4 0x3C4 0x598 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_00_LPUART4_TXD			0x1D4 0x3C4 0x544 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_00_GPIO3_IO00			0x1D4 0x3C4 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_01_USDHC2_DATA2			0x1D8 0x3C8 0x5F0 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_01_FLEXSPI_B_DATA2			0x1D8 0x3C8 0x4C0 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_01_FLEXPWM1_PWM3_B			0x1D8 0x3C8 0x464 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_01_SAI1_TX_DATA02			0x1D8 0x3C8 0x59C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_01_LPUART4_RXD			0x1D8 0x3C8 0x540 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_01_GPIO3_IO01			0x1D8 0x3C8 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_USDHC2_DATA1			0x1DC 0x3CC 0x5EC 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_FLEXSPI_B_DATA1			0x1DC 0x3CC 0x4BC 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_FLEXPWM2_PWM3_A			0x1DC 0x3CC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_SAI1_TX_DATA01			0x1DC 0x3CC 0x5A0 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_FLEXCAN1_TX			0x1DC 0x3CC 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_GPIO3_IO02			0x1DC 0x3CC 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_02_CCM_WAIT				0x1DC 0x3CC 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_USDHC2_DATA0			0x1E0 0x3D0 0x5E8 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_FLEXSPI_B_DATA0			0x1E0 0x3D0 0x4B8 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_FLEXPWM2_PWM3_B			0x1E0 0x3D0 0x484 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_SAI1_MCLK				0x1E0 0x3D0 0x58C 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_FLEXCAN1_RX			0x1E0 0x3D0 0x44C 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_GPIO3_IO03			0x1E0 0x3D0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_03_CCM_PMIC_READY			0x1E0 0x3D0 0x3FC 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_USDHC2_CLK			0x1E4 0x3D4 0x5DC 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_FLEXSPI_B_SCLK			0x1E4 0x3D4 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_LPI2C1_SCL			0x1E4 0x3D4 0x4CC 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_SAI1_RX_SYNC			0x1E4 0x3D4 0x5A4 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_FLEXCAN1_A_SS1_B			0x1E4 0x3D4 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_GPIO3_IO04			0x1E4 0x3D4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_04_CCM_STOP				0x1E4 0x3D4 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_05_USDHC2_CMD			0x1E8 0x3D8 0x5E4 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_05_FLEXSPI_A_DQS			0x1E8 0x3D8 0x4A4 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_05_LPI2C1_SDA			0x1E8 0x3D8 0x4D0 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_05_SAI1_RX_BCLK			0x1E8 0x3D8 0x590 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_05_FLEXCAN1_B_SS0_B			0x1E8 0x3D8 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_05_GPIO3_IO05			0x1E8 0x3D8 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_06_USDHC2_RESET_B			0x1EC 0x3DC 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_06_FLEXSPI_A_SS0_B			0x1EC 0x3DC 0x000 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_06_LPUART7_CTS_B			0x1EC 0x3DC 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_06_SAI1_RX_DATA00			0x1EC 0x3DC 0x594 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_06_LPSPI2_PCS0			0x1EC 0x3DC 0x4FC 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_06_GPIO3_IO06			0x1EC 0x3DC 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_SEMC_CSX1				0x1F0 0x3E0 0x000 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_FLEXSPI_A_SCLK			0x1F0 0x3E0 0x4C8 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_LPUART7_RTS_B			0x1F0 0x3E0 0x000 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_SAI1_TX_DATA00			0x1F0 0x3E0 0x000 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_LPSPI2_SCK			0x1F0 0x3E0 0x500 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_GPIO3_IO07			0x1F0 0x3E0 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_07_CCM_REF_EN_B			0x1F0 0x3E0 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_USDHC2_DATA4			0x1F4 0x3E4 0x5F8 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_FLEXSPI_A_DATA0			0x1F4 0x3E4 0x4A8 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_LPUART7_TXD			0x1F4 0x3E4 0x55C 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_SAI1_TX_BLCK			0x1F4 0x3E4 0x5A8 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_LPSPI2_SDO			0x1F4 0x3E4 0x508 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_GPIO3_IO08			0x1F4 0x3E4 0x000 0x5 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_08_SEMC_CSX2				0x1F4 0x3E4 0x000 0x6 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_09_USDHC2_DATA5			0x1F8 0x3E8 0x5FC 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_09_FLEXSPI_A_DATA1			0x1F8 0x3E8 0x4AC 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_09_LPUART7_RXD			0x1F8 0x3E8 0x558 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_09_SAI1_TX_SYNC			0x1F8 0x3E8 0x5AC 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_09_LPSPI2_SDI			0x1F8 0x3E8 0x504 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_09_GPIO3_IO09			0x1F8 0x3E8 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_10_USDHC2_DATA6			0x1FC 0x3EC 0x600 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_10_FLEXSPI_A_DATA2			0x1FC 0x3EC 0x4B0 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_10_LPUART2_RXD			0x1FC 0x3EC 0x52C 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_10_LPI2C2_SDA			0x1FC 0x3EC 0x4D8 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_10_LPSPI2_PCS2			0x1FC 0x3EC 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_10_GPIO3_IO10			0x1FC 0x3EC 0x000 0x5 0x0
> -
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_11_USDHC2_DATA7			0x200 0x3F0 0x604 0x0 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_11_FLEXSPI_A_DATA3			0x200 0x3F0 0x4B4 0x1 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_11_LPUART2_TXD			0x200 0x3F0 0x530 0x2 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_11_LPI2C2_SCL			0x200 0x3F0 0x4D4 0x3 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_11_LPSPI2_PCS3			0x200 0x3F0 0x000 0x4 0x0
> -#define MXRT1050_IOMUXC_GPIO_SD_B1_11_GPIO3_IO11			0x200 0x3F0 0x000 0x5 0x0
> -
> -#endif /* _DT_BINDINGS_PINCTRL_IMXRT1050_PINFUNC_H */
> diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi b/arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
> deleted file mode 100644
> index b0bad0d1ba36..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi
> +++ /dev/null
> @@ -1,160 +0,0 @@
> -// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> -/*
> - * Copyright (C) 2019
> - * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
> - */
> -
> -#include "../../armv7-m.dtsi"
> -#include <dt-bindings/interrupt-controller/arm-gic.h>
> -#include <dt-bindings/clock/imxrt1050-clock.h>
> -#include <dt-bindings/gpio/gpio.h>
> -
> -/ {
> -	#address-cells = <1>;
> -	#size-cells = <1>;
> -
> -	clocks {
> -		osc: osc {
> -			compatible = "fixed-clock";
> -			#clock-cells = <0>;
> -			clock-frequency = <24000000>;
> -		};
> -
> -		osc3M: osc3M {
> -			compatible = "fixed-clock";
> -			#clock-cells = <0>;
> -			clock-frequency = <3000000>;
> -		};
> -	};
> -
> -	soc {
> -		lpuart1: serial@40184000 {
> -			compatible = "fsl,imxrt1050-lpuart", "fsl,imx7ulp-lpuart";
> -			reg = <0x40184000 0x4000>;
> -			interrupts = <20>;
> -			clocks = <&clks IMXRT1050_CLK_LPUART1>;
> -			clock-names = "ipg";
> -			status = "disabled";
> -		};
> -
> -		iomuxc: pinctrl@401f8000 {
> -			compatible = "fsl,imxrt1050-iomuxc";
> -			reg = <0x401f8000 0x4000>;
> -			fsl,mux_mask = <0x7>;
> -		};
> -
> -		anatop: anatop@400d8000 {
> -			compatible = "fsl,imxrt-anatop";
> -			reg = <0x400d8000 0x4000>;
> -		};
> -
> -		clks: clock-controller@400fc000 {
> -			compatible = "fsl,imxrt1050-ccm";
> -			reg = <0x400fc000 0x4000>;
> -			interrupts = <95>, <96>;
> -			clocks = <&osc>;
> -			clock-names = "osc";
> -			#clock-cells = <1>;
> -			assigned-clocks = <&clks IMXRT1050_CLK_PLL1_BYPASS>,
> -				<&clks IMXRT1050_CLK_PLL1_BYPASS>,
> -				<&clks IMXRT1050_CLK_PLL2_BYPASS>,
> -				<&clks IMXRT1050_CLK_PLL3_BYPASS>,
> -				<&clks IMXRT1050_CLK_PLL3_PFD1_664_62M>,
> -				<&clks IMXRT1050_CLK_PLL2_PFD2_396M>;
> -			assigned-clock-parents = <&clks IMXRT1050_CLK_PLL1_REF_SEL>,
> -				<&clks IMXRT1050_CLK_PLL1_ARM>,
> -				<&clks IMXRT1050_CLK_PLL2_SYS>,
> -				<&clks IMXRT1050_CLK_PLL3_USB_OTG>,
> -				<&clks IMXRT1050_CLK_PLL3_USB_OTG>,
> -				<&clks IMXRT1050_CLK_PLL2_SYS>;
> -		};
> -
> -		edma1: dma-controller@400e8000 {
> -			#dma-cells = <2>;
> -			compatible = "fsl,imx7ulp-edma";
> -			reg = <0x400e8000 0x4000>,
> -				<0x400ec000 0x4000>;
> -			dma-channels = <32>;
> -			interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>, <8>,
> -				<9>, <10>, <11>, <12>, <13>, <14>, <15>, <16>;
> -			clock-names = "dma", "dmamux0";
> -			clocks = <&clks IMXRT1050_CLK_DMA>,
> -				 <&clks IMXRT1050_CLK_DMA_MUX>;
> -		};
> -
> -		usdhc1: mmc@402c0000 {
> -			compatible = "fsl,imxrt1050-usdhc", "fsl,imx6sl-usdhc";
> -			reg = <0x402c0000 0x4000>;
> -			interrupts = <110>;
> -			clocks = <&clks IMXRT1050_CLK_IPG_PDOF>,
> -				<&clks IMXRT1050_CLK_AHB_PODF>,
> -				<&clks IMXRT1050_CLK_USDHC1>;
> -			clock-names = "ipg", "ahb", "per";
> -			bus-width = <4>;
> -			fsl,wp-controller;
> -			no-1-8-v;
> -			max-frequency = <200000000>;
> -			fsl,tuning-start-tap = <20>;
> -			fsl,tuning-step = <2>;
> -			status = "disabled";
> -		};
> -
> -		gpio1: gpio@401b8000 {
> -			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> -			reg = <0x401b8000 0x4000>;
> -			interrupts = <80>, <81>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -		};
> -
> -		gpio2: gpio@401bc000 {
> -			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> -			reg = <0x401bc000 0x4000>;
> -			interrupts = <82>, <83>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -		};
> -
> -		gpio3: gpio@401c0000 {
> -			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> -			reg = <0x401c0000 0x4000>;
> -			interrupts = <84>, <85>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -		};
> -
> -		gpio4: gpio@401c4000 {
> -			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> -			reg = <0x401c4000 0x4000>;
> -			interrupts = <86>, <87>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -		};
> -
> -		gpio5: gpio@400c0000 {
> -			compatible = "fsl,imxrt1050-gpio", "fsl,imx35-gpio";
> -			reg = <0x400c0000 0x4000>;
> -			interrupts = <88>, <89>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -		};
> -
> -		gpt: timer@401ec000 {
> -			compatible = "fsl,imxrt1050-gpt", "fsl,imx6dl-gpt", "fsl,imx6sl-gpt";
> -			reg = <0x401ec000 0x4000>;
> -			interrupts = <100>;
> -			clocks = <&osc3M>;
> -			clock-names = "per";
> -		};
> -	};
> -};
> diff --git a/arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h b/arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
> deleted file mode 100644
> index 3b9fff2f08e1..000000000000
> --- a/arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h
> +++ /dev/null
> @@ -1,1561 +0,0 @@
> -/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
> -/*
> - * Copyright (C) 2021
> - * Author(s): Jesse Taube <Mr.Bossman075@gmail.com>
> - */
> -
> -#ifndef _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H
> -#define _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H
> -
> -#define IMX_PAD_SION		0x40000000
> -
> -/*
> - * The pin function ID is a tuple of
> - * <mux_reg conf_reg input_reg mux_mode input_val>
> - */
> -
> -#define IOMUXC_GPIO_LPSR_00_FLEXCAN3_TX				0x000 0x040 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_00_MIC_CLK				0x000 0x040 0x0 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_00_MQS_RIGHT				0x000 0x040 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_00_ARM_CM4_EVENTO			0x000 0x040 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_00_GPIO_MUX6_IO00			0x000 0x040 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_00_LPUART12_TXD			0x000 0x040 0x0B0 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_00_SAI4_MCLK				0x000 0x040 0x0C8 0x7 0x0
> -#define IOMUXC_GPIO_LPSR_00_GPIO12_IO00				0x000 0x040 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_01_FLEXCAN3_RX				0x004 0x044 0x080 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_01_MIC_BITSTREAM0			0x004 0x044 0x0B4 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_01_MQS_LEFT				0x004 0x044 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_01_ARM_CM4_EVENTI			0x004 0x044 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_01_GPIO_MUX6_IO01			0x004 0x044 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_01_LPUART12_RXD			0x004 0x044 0x0AC 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_01_GPIO12_IO01				0x004 0x044 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_02_GPIO12_IO02				0x008 0x048 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_02_SRC_BOOT_MODE00			0x008 0x048 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_02_LPSPI5_SCK				0x008 0x048 0x098 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_02_SAI4_TX_DATA			0x008 0x048 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_02_MQS_RIGHT				0x008 0x048 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_02_GPIO_MUX6_IO02			0x008 0x048 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_LPSR_03_SRC_BOOT_MODE01			0x00C 0x04C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_03_LPSPI5_PCS0				0x00C 0x04C 0x094 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_03_SAI4_TX_SYNC			0x00C 0x04C 0x0DC 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_03_MQS_LEFT				0x00C 0x04C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_03_GPIO_MUX6_IO03			0x00C 0x04C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_03_GPIO12_IO03				0x00C 0x04C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_04_LPI2C5_SDA				0x010 0x050 0x088 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_04_LPSPI5_SOUT				0x010 0x050 0x0A0 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_04_SAI4_TX_BCLK			0x010 0x050 0x0D8 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_04_LPUART12_RTS_B			0x010 0x050 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_04_GPIO_MUX6_IO04			0x010 0x050 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_04_LPUART11_TXD			0x010 0x050 0x0A8 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_04_GPIO12_IO04				0x010 0x050 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_05_GPIO12_IO05				0x014 0x054 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_05_LPI2C5_SCL				0x014 0x054 0x084 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_05_LPSPI5_SIN				0x014 0x054 0x09C 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_05_SAI4_MCLK				0x014 0x054 0x0C8 0x2 0x1
> -#define IOMUXC_GPIO_LPSR_05_LPUART12_CTS_B			0x014 0x054 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_05_GPIO_MUX6_IO05			0x014 0x054 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_05_LPUART11_RXD			0x014 0x054 0x0A4 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_05_NMI_GLUE_NMI			0x014 0x054 0x0C4 0x7 0x0
> -
> -#define IOMUXC_GPIO_LPSR_06_LPI2C6_SDA				0x018 0x058 0x090 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_06_SAI4_RX_DATA			0x018 0x058 0x0D0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_06_LPUART12_TXD			0x018 0x058 0x0B0 0x3 0x1
> -#define IOMUXC_GPIO_LPSR_06_LPSPI6_PCS3				0x018 0x058 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_06_GPIO_MUX6_IO06			0x018 0x058 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_06_FLEXCAN3_TX				0x018 0x058 0x0 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_06_PIT2_TRIGGER3			0x018 0x058 0x0 0x7 0x0
> -#define IOMUXC_GPIO_LPSR_06_LPSPI5_PCS1				0x018 0x058 0x0 0x8 0x0
> -#define IOMUXC_GPIO_LPSR_06_GPIO12_IO06				0x018 0x058 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_07_LPI2C6_SCL				0x01C 0x05C 0x08C 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_07_SAI4_RX_BCLK			0x01C 0x05C 0x0CC 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_07_LPUART12_RXD			0x01C 0x05C 0x0AC 0x3 0x1
> -#define IOMUXC_GPIO_LPSR_07_LPSPI6_PCS2				0x01C 0x05C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_07_GPIO_MUX6_IO07			0x01C 0x05C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_07_FLEXCAN3_RX				0x01C 0x05C 0x080 0x6 0x1
> -#define IOMUXC_GPIO_LPSR_07_PIT2_TRIGGER2			0x01C 0x05C 0x0 0x7 0x0
> -#define IOMUXC_GPIO_LPSR_07_LPSPI5_PCS2				0x01C 0x05C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_LPSR_07_GPIO12_IO07				0x01C 0x05C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_08_GPIO12_IO08				0x020 0x060 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_08_LPUART11_TXD			0x020 0x060 0x0A8 0x0 0x1
> -#define IOMUXC_GPIO_LPSR_08_FLEXCAN3_TX				0x020 0x060 0x0 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_08_SAI4_RX_SYNC			0x020 0x060 0x0D4 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_08_MIC_CLK				0x020 0x060 0x0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_08_LPSPI6_PCS1				0x020 0x060 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_08_GPIO_MUX6_IO08			0x020 0x060 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_08_LPI2C5_SDA				0x020 0x060 0x088 0x6 0x1
> -#define IOMUXC_GPIO_LPSR_08_PIT2_TRIGGER1			0x020 0x060 0x0 0x7 0x0
> -#define IOMUXC_GPIO_LPSR_08_LPSPI5_PCS3				0x020 0x060 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_LPSR_09_GPIO12_IO09				0x024 0x064 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_09_LPUART11_RXD			0x024 0x064 0x0A4 0x0 0x1
> -#define IOMUXC_GPIO_LPSR_09_FLEXCAN3_RX				0x024 0x064 0x080 0x1 0x2
> -#define IOMUXC_GPIO_LPSR_09_PIT2_TRIGGER0			0x024 0x064 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_09_MIC_BITSTREAM0			0x024 0x064 0x0B4 0x3 0x1
> -#define IOMUXC_GPIO_LPSR_09_LPSPI6_PCS0				0x024 0x064 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_09_GPIO_MUX6_IO09			0x024 0x064 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_09_LPI2C5_SCL				0x024 0x064 0x084 0x6 0x1
> -#define IOMUXC_GPIO_LPSR_09_SAI4_TX_DATA			0x024 0x064 0x0 0x7 0x0
> -
> -#define IOMUXC_GPIO_LPSR_10_GPIO12_IO10				0x028 0x068 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_10_JTAG_MUX_TRSTB			0x028 0x068 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_10_LPUART11_CTS_B			0x028 0x068 0x0 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_10_LPI2C6_SDA				0x028 0x068 0x090 0x2 0x1
> -#define IOMUXC_GPIO_LPSR_10_MIC_BITSTREAM1			0x028 0x068 0x0B8 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_10_LPSPI6_SCK				0x028 0x068 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_10_GPIO_MUX6_IO10			0x028 0x068 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_10_LPI2C5_SCLS				0x028 0x068 0x0 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_10_SAI4_TX_SYNC			0x028 0x068 0x0DC 0x7 0x1
> -#define IOMUXC_GPIO_LPSR_10_LPUART12_TXD			0x028 0x068 0x0B0 0x8 0x2
> -
> -#define IOMUXC_GPIO_LPSR_11_JTAG_MUX_TDO			0x02C 0x06C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_11_LPUART11_RTS_B			0x02C 0x06C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_11_LPI2C6_SCL				0x02C 0x06C 0x08C 0x2 0x1
> -#define IOMUXC_GPIO_LPSR_11_MIC_BITSTREAM2			0x02C 0x06C 0x0BC 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_11_LPSPI6_SOUT				0x02C 0x06C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_11_GPIO_MUX6_IO11			0x02C 0x06C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_11_LPI2C5_SDAS				0x02C 0x06C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_11_ARM_TRACE_SWO			0x02C 0x06C 0x0 0x7 0x0
> -#define IOMUXC_GPIO_LPSR_11_LPUART12_RXD			0x02C 0x06C 0x0AC 0x8 0x2
> -#define IOMUXC_GPIO_LPSR_11_GPIO12_IO11				0x02C 0x06C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_12_GPIO12_IO12				0x030 0x070 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_12_JTAG_MUX_TDI			0x030 0x070 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_12_PIT2_TRIGGER0			0x030 0x070 0x0 0x1 0x0
> -#define IOMUXC_GPIO_LPSR_12_MIC_BITSTREAM3			0x030 0x070 0x0C0 0x3 0x0
> -#define IOMUXC_GPIO_LPSR_12_LPSPI6_SIN				0x030 0x070 0x0 0x4 0x0
> -#define IOMUXC_GPIO_LPSR_12_GPIO_MUX6_IO12			0x030 0x070 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_12_LPI2C5_HREQ				0x030 0x070 0x0 0x6 0x0
> -#define IOMUXC_GPIO_LPSR_12_SAI4_TX_BCLK			0x030 0x070 0x0D8 0x7 0x1
> -#define IOMUXC_GPIO_LPSR_12_LPSPI5_SCK				0x030 0x070 0x098 0x8 0x1
> -
> -#define IOMUXC_GPIO_LPSR_13_GPIO12_IO13				0x034 0x074 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_13_JTAG_MUX_MOD			0x034 0x074 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_13_MIC_BITSTREAM1			0x034 0x074 0x0B8 0x1 0x1
> -#define IOMUXC_GPIO_LPSR_13_PIT2_TRIGGER1			0x034 0x074 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_13_GPIO_MUX6_IO13			0x034 0x074 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_13_SAI4_RX_DATA			0x034 0x074 0x0D0 0x7 0x1
> -#define IOMUXC_GPIO_LPSR_13_LPSPI5_PCS0				0x034 0x074 0x094 0x8 0x1
> -
> -#define IOMUXC_GPIO_LPSR_14_JTAG_MUX_TCK			0x038 0x078 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_14_MIC_BITSTREAM2			0x038 0x078 0x0BC 0x1 0x1
> -#define IOMUXC_GPIO_LPSR_14_PIT2_TRIGGER2			0x038 0x078 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_14_GPIO_MUX6_IO14			0x038 0x078 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_14_SAI4_RX_BCLK			0x038 0x078 0x0CC 0x7 0x1
> -#define IOMUXC_GPIO_LPSR_14_LPSPI5_SOUT				0x038 0x078 0x0A0 0x8 0x1
> -#define IOMUXC_GPIO_LPSR_14_GPIO12_IO14				0x038 0x078 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_LPSR_15_GPIO12_IO15				0x03C 0x07C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_LPSR_15_JTAG_MUX_TMS			0x03C 0x07C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_LPSR_15_MIC_BITSTREAM3			0x03C 0x07C 0x0C0 0x1 0x1
> -#define IOMUXC_GPIO_LPSR_15_PIT2_TRIGGER3			0x03C 0x07C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_LPSR_15_GPIO_MUX6_IO15			0x03C 0x07C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_LPSR_15_SAI4_RX_SYNC			0x03C 0x07C 0x0D4 0x7 0x1
> -#define IOMUXC_GPIO_LPSR_15_LPSPI5_SIN				0x03C 0x07C 0x09C 0x8 0x1
> -
> -#define IOMUXC_WAKEUP_DIG_GPIO13_IO00				0x40C94000 0x40C94040 0x0 0x5 0x0
> -#define IOMUXC_WAKEUP_DIG_NMI_GLUE_NMI				0x40C94000 0x40C94040 0x0C4 0x7 0x1
> -
> -#define IOMUXC_PMIC_ON_REQ_DIG_SNVS_LP_PMIC_ON_REQ		0x40C94004 0x40C94044 0x0 0x0 0x0
> -#define IOMUXC_PMIC_ON_REQ_DIG_GPIO13_IO01			0x40C94004 0x40C94044 0x0 0x5 0x0
> -
> -#define IOMUXC_PMIC_STBY_REQ_DIG_CCM_PMIC_VSTBY_REQ		0x40C94008 0x40C94048 0x0 0x0 0x0
> -#define IOMUXC_PMIC_STBY_REQ_DIG_GPIO13_IO02			0x40C94008 0x40C94048 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_00_DIG_SNVS_TAMPER0			0x40C9400C 0x40C9404C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_00_DIG_GPIO13_IO03			0x40C9400C 0x40C9404C 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_01_DIG_SNVS_TAMPER1			0x40C94010 0x40C94050 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_01_DIG_GPIO13_IO04			0x40C94010 0x40C94050 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_02_DIG_SNVS_TAMPER2			0x40C94014 0x40C94054 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_02_DIG_GPIO13_IO05			0x40C94014 0x40C94054 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_03_DIG_SNVS_TAMPER3			0x40C94018 0x40C94058 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_03_DIG_GPIO13_IO06			0x40C94018 0x40C94058 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_04_DIG_SNVS_TAMPER4			0x40C9401C 0x40C9405C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_04_DIG_GPIO13_IO07			0x40C9401C 0x40C9405C 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_05_DIG_SNVS_TAMPER5			0x40C94020 0x40C94060 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_05_DIG_GPIO13_IO08			0x40C94020 0x40C94060 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_06_DIG_SNVS_TAMPER6			0x40C94024 0x40C94064 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_06_DIG_GPIO13_IO09			0x40C94024 0x40C94064 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_07_DIG_SNVS_TAMPER7			0x40C94028 0x40C94068 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_07_DIG_GPIO13_IO10			0x40C94028 0x40C94068 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_08_DIG_SNVS_TAMPER8			0x40C9402C 0x40C9406C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_08_DIG_GPIO13_IO11			0x40C9402C 0x40C9406C 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SNVS_09_DIG_SNVS_TAMPER9			0x40C94030 0x40C94070 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SNVS_09_DIG_GPIO13_IO12			0x40C94030 0x40C94070 0x0 0x5 0x0
> -
> -#define IOMUXC_TEST_MODE_DIG					0x0 0x40C94034 0x0 0x0 0x0
> -
> -#define IOMUXC_POR_B_DIG					0x0 0x40C94038 0x0 0x0 0x0
> -
> -#define IOMUXC_ONOFF_DIG					0x0 0x40C9403C 0x0 0x0 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_00_SEMC_DATA00			0x010 0x254 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_00_FLEXPWM4_PWM0_A			0x010 0x254 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_00_GPIO_MUX1_IO00			0x010 0x254 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_00_FLEXIO1_D00			0x010 0x254 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_00_GPIO7_IO00			0x010 0x254 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_01_GPIO7_IO01			0x014 0x258 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_01_SEMC_DATA01			0x014 0x258 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_01_FLEXPWM4_PWM0_B			0x014 0x258 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_01_GPIO_MUX1_IO01			0x014 0x258 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_01_FLEXIO1_D01			0x014 0x258 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_02_SEMC_DATA02			0x018 0x25C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_02_FLEXPWM4_PWM1_A			0x018 0x25C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_02_GPIO_MUX1_IO02			0x018 0x25C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_02_FLEXIO1_D02			0x018 0x25C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_02_GPIO7_IO02			0x018 0x25C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_03_SEMC_DATA03			0x01C 0x260 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_03_FLEXPWM4_PWM1_B			0x01C 0x260 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_03_GPIO_MUX1_IO03			0x01C 0x260 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_03_FLEXIO1_D03			0x01C 0x260 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_03_GPIO7_IO03			0x01C 0x260 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_04_GPIO7_IO04			0x020 0x264 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_04_SEMC_DATA04			0x020 0x264 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_04_FLEXPWM4_PWM2_A			0x020 0x264 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_04_GPIO_MUX1_IO04			0x020 0x264 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_04_FLEXIO1_D04			0x020 0x264 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_05_SEMC_DATA05			0x024 0x268 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_05_FLEXPWM4_PWM2_B			0x024 0x268 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_05_GPIO_MUX1_IO05			0x024 0x268 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_05_FLEXIO1_D05			0x024 0x268 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_05_GPIO7_IO05			0x024 0x268 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_06_SEMC_DATA06			0x028 0x26C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_06_FLEXPWM2_PWM0_A			0x028 0x26C 0x518 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_06_GPIO_MUX1_IO06			0x028 0x26C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_06_FLEXIO1_D06			0x028 0x26C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_06_GPIO7_IO06			0x028 0x26C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_07_GPIO7_IO07			0x02C 0x270 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_07_SEMC_DATA07			0x02C 0x270 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_07_FLEXPWM2_PWM0_B			0x02C 0x270 0x524 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_07_GPIO_MUX1_IO07			0x02C 0x270 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_07_FLEXIO1_D07			0x02C 0x270 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_08_SEMC_DM00				0x030 0x274 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_08_FLEXPWM2_PWM1_A			0x030 0x274 0x51C 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_08_GPIO_MUX1_IO08			0x030 0x274 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_08_FLEXIO1_D08			0x030 0x274 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_08_GPIO7_IO08			0x030 0x274 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_09_SEMC_ADDR00			0x034 0x278 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_09_FLEXPWM2_PWM1_B			0x034 0x278 0x528 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_09_GPT5_CAPTURE1			0x034 0x278 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_09_GPIO_MUX1_IO09			0x034 0x278 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_09_FLEXIO1_D09			0x034 0x278 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_09_GPIO7_IO09			0x034 0x278 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_10_SEMC_ADDR01			0x038 0x27C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_10_FLEXPWM2_PWM2_A			0x038 0x27C 0x520 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_10_GPT5_CAPTURE2			0x038 0x27C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_10_GPIO_MUX1_IO10			0x038 0x27C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_10_FLEXIO1_D10			0x038 0x27C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_10_GPIO7_IO10			0x038 0x27C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_11_GPIO7_IO11			0x03C 0x280 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_11_SEMC_ADDR02			0x03C 0x280 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_11_FLEXPWM2_PWM2_B			0x03C 0x280 0x52C 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_11_GPT5_COMPARE1			0x03C 0x280 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_11_GPIO_MUX1_IO11			0x03C 0x280 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_11_FLEXIO1_D11			0x03C 0x280 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_12_SEMC_ADDR03			0x040 0x284 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_12_XBAR1_INOUT04			0x040 0x284 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_12_GPT5_COMPARE2			0x040 0x284 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_12_GPIO_MUX1_IO12			0x040 0x284 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_12_FLEXIO1_D12			0x040 0x284 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_12_GPIO7_IO12			0x040 0x284 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_13_SEMC_ADDR04			0x044 0x288 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_13_XBAR1_INOUT05			0x044 0x288 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_13_GPT5_COMPARE3			0x044 0x288 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_13_GPIO_MUX1_IO13			0x044 0x288 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_13_FLEXIO1_D13			0x044 0x288 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_13_GPIO7_IO13			0x044 0x288 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_14_GPIO7_IO14			0x048 0x28C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_14_SEMC_ADDR05			0x048 0x28C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_14_XBAR1_INOUT06			0x048 0x28C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_14_GPT5_CLK				0x048 0x28C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_14_GPIO_MUX1_IO14			0x048 0x28C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_14_FLEXIO1_D14			0x048 0x28C 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_15_SEMC_ADDR06			0x04C 0x290 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_15_XBAR1_INOUT07			0x04C 0x290 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_15_GPIO_MUX1_IO15			0x04C 0x290 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_15_FLEXIO1_D15			0x04C 0x290 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_15_GPIO7_IO15			0x04C 0x290 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_16_SEMC_ADDR07			0x050 0x294 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_16_XBAR1_INOUT08			0x050 0x294 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_16_GPIO_MUX1_IO16			0x050 0x294 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_16_FLEXIO1_D16			0x050 0x294 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_16_GPIO7_IO16			0x050 0x294 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_17_GPIO7_IO17			0x054 0x298 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_17_SEMC_ADDR08			0x054 0x298 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_17_FLEXPWM4_PWM3_A			0x054 0x298 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_17_TMR1_TIMER0			0x054 0x298 0x63C 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_17_GPIO_MUX1_IO17			0x054 0x298 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_17_FLEXIO1_D17			0x054 0x298 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_18_SEMC_ADDR09			0x058 0x29C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_18_FLEXPWM4_PWM3_B			0x058 0x29C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_18_TMR2_TIMER0			0x058 0x29C 0x648 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_18_GPIO_MUX1_IO18			0x058 0x29C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_18_FLEXIO1_D18			0x058 0x29C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_18_GPIO7_IO18			0x058 0x29C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_19_SEMC_ADDR11			0x05C 0x2A0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_19_FLEXPWM2_PWM3_A			0x05C 0x2A0 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_19_TMR3_TIMER0			0x05C 0x2A0 0x654 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_19_GPIO_MUX1_IO19			0x05C 0x2A0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_19_FLEXIO1_D19			0x05C 0x2A0 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_19_GPIO7_IO19			0x05C 0x2A0 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_20_SEMC_ADDR12			0x060 0x2A4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_20_FLEXPWM2_PWM3_B			0x060 0x2A4 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_20_TMR4_TIMER0			0x060 0x2A4 0x660 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_20_GPIO_MUX1_IO20			0x060 0x2A4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_20_FLEXIO1_D20			0x060 0x2A4 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_20_GPIO7_IO20			0x060 0x2A4 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_21_GPIO7_IO21			0x064 0x2A8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_21_SEMC_BA0				0x064 0x2A8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_21_FLEXPWM3_PWM3_A			0x064 0x2A8 0x53C 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_21_GPIO_MUX1_IO21			0x064 0x2A8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_21_FLEXIO1_D21			0x064 0x2A8 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_22_GPIO7_IO22			0x068 0x2AC 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_22_SEMC_BA1				0x068 0x2AC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_22_FLEXPWM3_PWM3_B			0x068 0x2AC 0x54C 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_22_GPIO_MUX1_IO22			0x068 0x2AC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_22_FLEXIO1_D22			0x068 0x2AC 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_23_SEMC_ADDR10			0x06C 0x2B0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_23_FLEXPWM1_PWM0_A			0x06C 0x2B0 0x500 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_23_GPIO_MUX1_IO23			0x06C 0x2B0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_23_FLEXIO1_D23			0x06C 0x2B0 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_23_GPIO7_IO23			0x06C 0x2B0 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_24_GPIO7_IO24			0x070 0x2B4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_24_SEMC_CAS				0x070 0x2B4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_24_FLEXPWM1_PWM0_B			0x070 0x2B4 0x50C 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_24_GPIO_MUX1_IO24			0x070 0x2B4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_24_FLEXIO1_D24			0x070 0x2B4 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_25_GPIO7_IO25			0x074 0x2B8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_25_SEMC_RAS				0x074 0x2B8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_25_FLEXPWM1_PWM1_A			0x074 0x2B8 0x504 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_25_GPIO_MUX1_IO25			0x074 0x2B8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_25_FLEXIO1_D25			0x074 0x2B8 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_26_SEMC_CLK				0x078 0x2BC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_26_FLEXPWM1_PWM1_B			0x078 0x2BC 0x510 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_26_GPIO_MUX1_IO26			0x078 0x2BC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_26_FLEXIO1_D26			0x078 0x2BC 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_26_GPIO7_IO26			0x078 0x2BC 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_27_GPIO7_IO27			0x07C 0x2C0 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_27_SEMC_CKE				0x07C 0x2C0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_27_FLEXPWM1_PWM2_A			0x07C 0x2C0 0x508 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_27_GPIO_MUX1_IO27			0x07C 0x2C0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_27_FLEXIO1_D27			0x07C 0x2C0 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_28_GPIO7_IO28			0x080 0x2C4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_28_SEMC_WE				0x080 0x2C4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_28_FLEXPWM1_PWM2_B			0x080 0x2C4 0x514 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_28_GPIO_MUX1_IO28			0x080 0x2C4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_28_FLEXIO1_D28			0x080 0x2C4 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_29_SEMC_CS0				0x084 0x2C8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_29_FLEXPWM3_PWM0_A			0x084 0x2C8 0x530 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_29_GPIO_MUX1_IO29			0x084 0x2C8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_29_FLEXIO1_D29			0x084 0x2C8 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_29_GPIO7_IO29			0x084 0x2C8 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_30_SEMC_DATA08			0x088 0x2CC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_30_FLEXPWM3_PWM0_B			0x088 0x2CC 0x540 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_30_GPIO_MUX1_IO30			0x088 0x2CC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_30_FLEXIO1_D30			0x088 0x2CC 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B1_30_GPIO7_IO30			0x088 0x2CC 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_31_GPIO7_IO31			0x08C 0x2D0 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_31_SEMC_DATA09			0x08C 0x2D0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_31_FLEXPWM3_PWM1_A			0x08C 0x2D0 0x534 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_31_GPIO_MUX1_IO31			0x08C 0x2D0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_31_FLEXIO1_D31			0x08C 0x2D0 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_32_GPIO8_IO00			0x090 0x2D4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_32_SEMC_DATA10			0x090 0x2D4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_32_FLEXPWM3_PWM1_B			0x090 0x2D4 0x544 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_32_GPIO_MUX2_IO00			0x090 0x2D4 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_33_SEMC_DATA11			0x094 0x2D8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_33_FLEXPWM3_PWM2_A			0x094 0x2D8 0x538 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_33_GPIO_MUX2_IO01			0x094 0x2D8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_33_GPIO8_IO01			0x094 0x2D8 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_34_GPIO8_IO02			0x098 0x2DC 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_34_SEMC_DATA12			0x098 0x2DC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_34_FLEXPWM3_PWM2_B			0x098 0x2DC 0x548 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_34_GPIO_MUX2_IO02			0x098 0x2DC 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_35_GPIO8_IO03			0x09C 0x2E0 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_35_SEMC_DATA13			0x09C 0x2E0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_35_XBAR1_INOUT09			0x09C 0x2E0 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_35_GPIO_MUX2_IO03			0x09C 0x2E0 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_36_SEMC_DATA14			0x0A0 0x2E4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_36_XBAR1_INOUT10			0x0A0 0x2E4 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_36_GPIO_MUX2_IO04			0x0A0 0x2E4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_36_GPIO8_IO04			0x0A0 0x2E4 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_37_GPIO8_IO05			0x0A4 0x2E8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_37_SEMC_DATA15			0x0A4 0x2E8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_37_XBAR1_INOUT11			0x0A4 0x2E8 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_37_GPIO_MUX2_IO05			0x0A4 0x2E8 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_38_GPIO8_IO06			0x0A8 0x2EC 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_38_SEMC_DM01				0x0A8 0x2EC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_38_FLEXPWM1_PWM3_A			0x0A8 0x2EC 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_38_TMR1_TIMER1			0x0A8 0x2EC 0x640 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_38_GPIO_MUX2_IO06			0x0A8 0x2EC 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_39_SEMC_DQS				0x0AC 0x2F0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_39_FLEXPWM1_PWM3_B			0x0AC 0x2F0 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_39_TMR2_TIMER1			0x0AC 0x2F0 0x64C 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_39_GPIO_MUX2_IO07			0x0AC 0x2F0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_39_GPIO8_IO07			0x0AC 0x2F0 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_40_SEMC_RDY				0x0B0 0x2F4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_XBAR1_INOUT12			0x0B0 0x2F4 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_MQS_RIGHT				0x0B0 0x2F4 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_LPUART6_TXD			0x0B0 0x2F4 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_GPIO_MUX2_IO08			0x0B0 0x2F4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_ENET_1G_MDC			0x0B0 0x2F4 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_CCM_CLKO1				0x0B0 0x2F4 0x0 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B1_40_GPIO8_IO08			0x0B0 0x2F4 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B1_41_GPIO8_IO09			0x0B4 0x2F8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_SEMC_CSX00			0x0B4 0x2F8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_XBAR1_INOUT13			0x0B4 0x2F8 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_MQS_LEFT				0x0B4 0x2F8 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_LPUART6_RXD			0x0B4 0x2F8 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_FLEXSPI2_B_DATA07			0x0B4 0x2F8 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_GPIO_MUX2_IO09			0x0B4 0x2F8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_ENET_1G_MDIO			0x0B4 0x2F8 0x4C8 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B1_41_CCM_CLKO2				0x0B4 0x2F8 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_00_SEMC_DATA16			0x0B8 0x2FC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_CCM_ENET_REF_CLK_25M		0x0B8 0x2FC 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_TMR3_TIMER1			0x0B8 0x2FC 0x658 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_LPUART6_CTS_B			0x0B8 0x2FC 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_FLEXSPI2_B_DATA06			0x0B8 0x2FC 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_GPIO_MUX2_IO10			0x0B8 0x2FC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_XBAR1_INOUT20			0x0B8 0x2FC 0x6D8 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_ENET_QOS_1588_EVENT1_OUT		0x0B8 0x2FC 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_LPSPI1_SCK			0x0B8 0x2FC 0x5D0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_LPI2C2_SCL			0x0B8 0x2FC 0x5B4 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_GPIO8_IO10			0x0B8 0x2FC 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_00_FLEXPWM3_PWM0_A			0x0B8 0x2FC 0x530 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_01_SEMC_DATA17			0x0BC 0x300 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_USDHC2_CD_B			0x0BC 0x300 0x6D0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_TMR4_TIMER1			0x0BC 0x300 0x664 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_LPUART6_RTS_B			0x0BC 0x300 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_FLEXSPI2_B_DATA05			0x0BC 0x300 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_GPIO_MUX2_IO11			0x0BC 0x300 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_XBAR1_INOUT21			0x0BC 0x300 0x6DC 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_ENET_QOS_1588_EVENT1_IN		0x0BC 0x300 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_LPSPI1_PCS0			0x0BC 0x300 0x5CC 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_LPI2C2_SDA			0x0BC 0x300 0x5B8 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_GPIO8_IO11			0x0BC 0x300 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_01_FLEXPWM3_PWM0_B			0x0BC 0x300 0x540 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_02_SEMC_DATA18			0x0C0 0x304 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_USDHC2_WP				0x0C0 0x304 0x6D4 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_VIDEO_MUX_CSI_DATA23		0x0C0 0x304 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_FLEXSPI2_B_DATA04			0x0C0 0x304 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_GPIO_MUX2_IO12			0x0C0 0x304 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_XBAR1_INOUT22			0x0C0 0x304 0x6E0 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_ENET_QOS_1588_EVENT1_AUX_IN	0x0C0 0x304 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_LPSPI1_SOUT			0x0C0 0x304 0x5D8 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_GPIO8_IO12			0x0C0 0x304 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_02_FLEXPWM3_PWM1_A			0x0C0 0x304 0x534 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_03_SEMC_DATA19			0x0C4 0x308 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_USDHC2_VSELECT			0x0C4 0x308 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_VIDEO_MUX_CSI_DATA22		0x0C4 0x308 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_FLEXSPI2_B_DATA03			0x0C4 0x308 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_GPIO_MUX2_IO13			0x0C4 0x308 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_XBAR1_INOUT23			0x0C4 0x308 0x6E4 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_ENET_1G_TX_DATA03			0x0C4 0x308 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_LPSPI1_SIN			0x0C4 0x308 0x5D4 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_GPIO8_IO13			0x0C4 0x308 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_03_FLEXPWM3_PWM1_B			0x0C4 0x308 0x544 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_04_SEMC_DATA20			0x0C8 0x30C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_USDHC2_RESET_B			0x0C8 0x30C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_SAI2_MCLK				0x0C8 0x30C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_VIDEO_MUX_CSI_DATA21		0x0C8 0x30C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_FLEXSPI2_B_DATA02			0x0C8 0x30C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_GPIO_MUX2_IO14			0x0C8 0x30C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_XBAR1_INOUT24			0x0C8 0x30C 0x6E8 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_ENET_1G_TX_DATA02			0x0C8 0x30C 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_LPSPI3_SCK			0x0C8 0x30C 0x600 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_GPIO8_IO14			0x0C8 0x30C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_04_FLEXPWM3_PWM2_A			0x0C8 0x30C 0x538 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_05_SEMC_DATA21			0x0CC 0x310 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_GPT3_CLK				0x0CC 0x310 0x598 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_SAI2_RX_SYNC			0x0CC 0x310 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_VIDEO_MUX_CSI_DATA20		0x0CC 0x310 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_FLEXSPI2_B_DATA01			0x0CC 0x310 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_GPIO_MUX2_IO15			0x0CC 0x310 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_XBAR1_INOUT25			0x0CC 0x310 0x6EC 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_ENET_1G_RX_CLK			0x0CC 0x310 0x4CC 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_LPSPI3_PCS0			0x0CC 0x310 0x5F0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_PIT1_TRIGGER0			0x0CC 0x310 0x0 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_GPIO8_IO15			0x0CC 0x310 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_05_FLEXPWM3_PWM2_B			0x0CC 0x310 0x548 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_06_SEMC_DATA22			0x0D0 0x314 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_GPT3_CAPTURE1			0x0D0 0x314 0x590 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_GPIO8_IO16			0x0D0 0x314 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_SAI2_RX_BCLK			0x0D0 0x314 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_FLEXPWM3_PWM3_A			0x0D0 0x314 0x53C 0xB 0x1
> -#define IOMUXC_GPIO_EMC_B2_06_VIDEO_MUX_CSI_DATA19		0x0D0 0x314 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_FLEXSPI2_B_DATA00			0x0D0 0x314 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_GPIO_MUX2_IO16			0x0D0 0x314 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_XBAR1_INOUT26			0x0D0 0x314 0x6F0 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_ENET_1G_TX_ER			0x0D0 0x314 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_LPSPI3_SOUT			0x0D0 0x314 0x608 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_06_PIT1_TRIGGER1			0x0D0 0x314 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_07_SEMC_DATA23			0x0D4 0x318 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_GPT3_CAPTURE2			0x0D4 0x318 0x594 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_SAI2_RX_DATA			0x0D4 0x318 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_VIDEO_MUX_CSI_DATA18		0x0D4 0x318 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_FLEXSPI2_B_DQS			0x0D4 0x318 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_GPIO_MUX2_IO17			0x0D4 0x318 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_XBAR1_INOUT27			0x0D4 0x318 0x6F4 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_ENET_1G_RX_DATA03			0x0D4 0x318 0x4DC 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_LPSPI3_SIN			0x0D4 0x318 0x604 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_PIT1_TRIGGER2			0x0D4 0x318 0x0 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_GPIO8_IO17			0x0D4 0x318 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_07_FLEXPWM3_PWM3_B			0x0D4 0x318 0x54C 0xB 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_08_SEMC_DM02				0x0D8 0x31C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_GPT3_COMPARE1			0x0D8 0x31C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_SAI2_TX_DATA			0x0D8 0x31C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_VIDEO_MUX_CSI_DATA17		0x0D8 0x31C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_FLEXSPI2_B_SS0_B			0x0D8 0x31C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_GPIO_MUX2_IO18			0x0D8 0x31C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_XBAR1_INOUT28			0x0D8 0x31C 0x6F8 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_ENET_1G_RX_DATA02			0x0D8 0x31C 0x4D8 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_LPSPI3_PCS1			0x0D8 0x31C 0x5F4 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_PIT1_TRIGGER3			0x0D8 0x31C 0x0 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_08_GPIO8_IO18			0x0D8 0x31C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_09_GPIO8_IO19			0x0DC 0x320 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_SEMC_DATA24			0x0DC 0x320 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_GPT3_COMPARE2			0x0DC 0x320 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_SAI2_TX_BCLK			0x0DC 0x320 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_VIDEO_MUX_CSI_DATA16		0x0DC 0x320 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_FLEXSPI2_B_SCLK			0x0DC 0x320 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_GPIO_MUX2_IO19			0x0DC 0x320 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_XBAR1_INOUT29			0x0DC 0x320 0x6FC 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_ENET_1G_CRS			0x0DC 0x320 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_LPSPI3_PCS2			0x0DC 0x320 0x5F8 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_09_TMR1_TIMER0			0x0DC 0x320 0x63C 0x9 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_10_GPIO8_IO20			0x0E0 0x324 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_SEMC_DATA25			0x0E0 0x324 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_GPT3_COMPARE3			0x0E0 0x324 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_SAI2_TX_SYNC			0x0E0 0x324 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_VIDEO_MUX_CSI_FIELD		0x0E0 0x324 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_FLEXSPI2_A_SCLK			0x0E0 0x324 0x58C 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_GPIO_MUX2_IO20			0x0E0 0x324 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_XBAR1_INOUT30			0x0E0 0x324 0x700 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_ENET_1G_COL			0x0E0 0x324 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_LPSPI3_PCS3			0x0E0 0x324 0x5FC 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_10_TMR1_TIMER1			0x0E0 0x324 0x640 0x9 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_11_SEMC_DATA26			0x0E4 0x328 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_SPDIF_IN				0x0E4 0x328 0x6B4 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_ENET_1G_TX_DATA00			0x0E4 0x328 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_SAI3_RX_SYNC			0x0E4 0x328 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_FLEXSPI2_A_SS0_B			0x0E4 0x328 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_GPIO_MUX2_IO21			0x0E4 0x328 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_XBAR1_INOUT31			0x0E4 0x328 0x704 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_EMVSIM1_IO			0x0E4 0x328 0x69C 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_TMR1_TIMER2			0x0E4 0x328 0x644 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_11_GPIO8_IO21			0x0E4 0x328 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_12_SEMC_DATA27			0x0E8 0x32C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_SPDIF_OUT				0x0E8 0x32C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_ENET_1G_TX_DATA01			0x0E8 0x32C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_SAI3_RX_BCLK			0x0E8 0x32C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_FLEXSPI2_A_DQS			0x0E8 0x32C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_GPIO_MUX2_IO22			0x0E8 0x32C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_XBAR1_INOUT32			0x0E8 0x32C 0x708 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_EMVSIM1_CLK			0x0E8 0x32C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_TMR1_TIMER3			0x0E8 0x32C 0x0 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_12_GPIO8_IO22			0x0E8 0x32C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_13_GPIO8_IO23			0x0EC 0x330 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_SEMC_DATA28			0x0EC 0x330 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_ENET_1G_TX_EN			0x0EC 0x330 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_SAI3_RX_DATA			0x0EC 0x330 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_FLEXSPI2_A_DATA00			0x0EC 0x330 0x57C 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_GPIO_MUX2_IO23			0x0EC 0x330 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_XBAR1_INOUT33			0x0EC 0x330 0x70C 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_EMVSIM1_RST			0x0EC 0x330 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_13_TMR2_TIMER0			0x0EC 0x330 0x648 0x9 0x1
> -
> -#define IOMUXC_GPIO_EMC_B2_14_SEMC_DATA29			0x0F0 0x334 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_ENET_1G_TX_CLK_IO			0x0F0 0x334 0x4E8 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_SAI3_TX_DATA			0x0F0 0x334 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_FLEXSPI2_A_DATA01			0x0F0 0x334 0x580 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_GPIO_MUX2_IO24			0x0F0 0x334 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_XBAR1_INOUT34			0x0F0 0x334 0x710 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_SFA_ipp_do_atx_clk_under_test	0x0F0 0x334 0x0 0x7 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_EMVSIM1_SVEN			0x0F0 0x334 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_14_TMR2_TIMER1			0x0F0 0x334 0x64C 0x9 0x1
> -#define IOMUXC_GPIO_EMC_B2_14_GPIO8_IO24			0x0F0 0x334 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_15_SEMC_DATA30			0x0F4 0x338 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_ENET_1G_RX_DATA00			0x0F4 0x338 0x4D0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_SAI3_TX_BCLK			0x0F4 0x338 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_FLEXSPI2_A_DATA02			0x0F4 0x338 0x584 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_GPIO_MUX2_IO25			0x0F4 0x338 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_XBAR1_INOUT35			0x0F4 0x338 0x714 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_EMVSIM1_PD			0x0F4 0x338 0x6A0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_TMR2_TIMER2			0x0F4 0x338 0x650 0x9 0x0
> -#define IOMUXC_GPIO_EMC_B2_15_GPIO8_IO25			0x0F4 0x338 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_16_GPIO8_IO26			0x0F8 0x33C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_SEMC_DATA31			0x0F8 0x33C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_XBAR1_INOUT14			0x0F8 0x33C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_ENET_1G_RX_DATA01			0x0F8 0x33C 0x4D4 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_SAI3_TX_SYNC			0x0F8 0x33C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_FLEXSPI2_A_DATA03			0x0F8 0x33C 0x588 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_GPIO_MUX2_IO26			0x0F8 0x33C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_EMVSIM1_POWER_FAIL		0x0F8 0x33C 0x6A4 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_16_TMR2_TIMER3			0x0F8 0x33C 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_17_SEMC_DM03				0x0FC 0x340 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_XBAR1_INOUT15			0x0FC 0x340 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_ENET_1G_RX_EN			0x0FC 0x340 0x4E0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_SAI3_MCLK				0x0FC 0x340 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_FLEXSPI2_A_DATA04			0x0FC 0x340 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_GPIO_MUX2_IO27			0x0FC 0x340 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_WDOG1_ANY				0x0FC 0x340 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_17_TMR3_TIMER0			0x0FC 0x340 0x654 0x9 0x1
> -#define IOMUXC_GPIO_EMC_B2_17_GPIO8_IO27			0x0FC 0x340 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_18_SEMC_DQS4				0x100 0x344 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_XBAR1_INOUT16			0x100 0x344 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_ENET_1G_RX_ER			0x100 0x344 0x4E4 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_EWM_OUT_B				0x100 0x344 0x0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_FLEXSPI2_A_DATA05			0x100 0x344 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_GPIO_MUX2_IO28			0x100 0x344 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_FLEXSPI1_A_DQS			0x100 0x344 0x550 0x6 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_WDOG1_B				0x100 0x344 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_18_TMR3_TIMER1			0x100 0x344 0x658 0x9 0x1
> -#define IOMUXC_GPIO_EMC_B2_18_GPIO8_IO28			0x100 0x344 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_19_GPIO8_IO29			0x104 0x348 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_SEMC_CLKX00			0x104 0x348 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_ENET_MDC				0x104 0x348 0x0 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_ENET_1G_MDC			0x104 0x348 0x0 0x2 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_ENET_1G_REF_CLK			0x104 0x348 0x4C4 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_FLEXSPI2_A_DATA06			0x104 0x348 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_GPIO_MUX2_IO29			0x104 0x348 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_ENET_QOS_MDC			0x104 0x348 0x0 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_19_TMR3_TIMER2			0x104 0x348 0x65C 0x9 0x0
> -
> -#define IOMUXC_GPIO_EMC_B2_20_GPIO8_IO30			0x108 0x34C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_SEMC_CLKX01			0x108 0x34C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_ENET_MDIO				0x108 0x34C 0x4AC 0x1 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_ENET_1G_MDIO			0x108 0x34C 0x4C8 0x2 0x1
> -#define IOMUXC_GPIO_EMC_B2_20_ENET_QOS_REF_CLK			0x108 0x34C 0x4A0 0x3 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_FLEXSPI2_A_DATA07			0x108 0x34C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_GPIO_MUX2_IO30			0x108 0x34C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_ENET_QOS_MDIO			0x108 0x34C 0x4EC 0x8 0x0
> -#define IOMUXC_GPIO_EMC_B2_20_TMR3_TIMER3			0x108 0x34C 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_00_GPIO8_IO31				0x10C 0x350 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_00_EMVSIM1_IO				0x10C 0x350 0x69C 0x0 0x1
> -#define IOMUXC_GPIO_AD_00_FLEXCAN2_TX				0x10C 0x350 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_00_ENET_1G_1588_EVENT1_IN		0x10C 0x350 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_00_GPT2_CAPTURE1				0x10C 0x350 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_00_FLEXPWM1_PWM0_A			0x10C 0x350 0x500 0x4 0x1
> -#define IOMUXC_GPIO_AD_00_GPIO_MUX2_IO31			0x10C 0x350 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_00_LPUART7_TXD				0x10C 0x350 0x630 0x6 0x0
> -#define IOMUXC_GPIO_AD_00_FLEXIO2_D00				0x10C 0x350 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_00_FLEXSPI2_B_SS1_B			0x10C 0x350 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_01_GPIO9_IO00				0x110 0x354 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_01_EMVSIM1_CLK				0x110 0x354 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_01_FLEXCAN2_RX				0x110 0x354 0x49C 0x1 0x0
> -#define IOMUXC_GPIO_AD_01_ENET_1G_1588_EVENT1_OUT		0x110 0x354 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_01_GPT2_CAPTURE2				0x110 0x354 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_01_FLEXPWM1_PWM0_B			0x110 0x354 0x50C 0x4 0x1
> -#define IOMUXC_GPIO_AD_01_GPIO_MUX3_IO00			0x110 0x354 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_01_LPUART7_RXD				0x110 0x354 0x62C 0x6 0x0
> -#define IOMUXC_GPIO_AD_01_FLEXIO2_D01				0x110 0x354 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_01_FLEXSPI2_A_SS1_B			0x110 0x354 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_02_GPIO9_IO01				0x114 0x358 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_02_EMVSIM1_RST				0x114 0x358 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_02_LPUART7_CTS_B				0x114 0x358 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_02_ENET_1G_1588_EVENT2_IN		0x114 0x358 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_02_GPT2_COMPARE1				0x114 0x358 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_02_FLEXPWM1_PWM1_A			0x114 0x358 0x504 0x4 0x1
> -#define IOMUXC_GPIO_AD_02_GPIO_MUX3_IO01			0x114 0x358 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_02_LPUART8_TXD				0x114 0x358 0x638 0x6 0x0
> -#define IOMUXC_GPIO_AD_02_FLEXIO2_D02				0x114 0x358 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_02_VIDEO_MUX_EXT_DCIC1			0x114 0x358 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_03_GPIO9_IO02				0x118 0x35C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_03_EMVSIM1_SVEN				0x118 0x35C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_03_LPUART7_RTS_B				0x118 0x35C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_03_ENET_1G_1588_EVENT2_OUT		0x118 0x35C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_03_GPT2_COMPARE2				0x118 0x35C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_03_FLEXPWM1_PWM1_B			0x118 0x35C 0x510 0x4 0x1
> -#define IOMUXC_GPIO_AD_03_GPIO_MUX3_IO02			0x118 0x35C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_03_LPUART8_RXD				0x118 0x35C 0x634 0x6 0x0
> -#define IOMUXC_GPIO_AD_03_FLEXIO2_D03				0x118 0x35C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_03_VIDEO_MUX_EXT_DCIC2			0x118 0x35C 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_04_EMVSIM1_PD				0x11C 0x360 0x6A0 0x0 0x1
> -#define IOMUXC_GPIO_AD_04_LPUART8_CTS_B				0x11C 0x360 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_04_ENET_1G_1588_EVENT3_IN		0x11C 0x360 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_04_GPT2_COMPARE3				0x11C 0x360 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_04_FLEXPWM1_PWM2_A			0x11C 0x360 0x508 0x4 0x1
> -#define IOMUXC_GPIO_AD_04_GPIO_MUX3_IO03			0x11C 0x360 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_04_WDOG1_B				0x11C 0x360 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_04_FLEXIO2_D04				0x11C 0x360 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_04_TMR4_TIMER0				0x11C 0x360 0x660 0x9 0x1
> -#define IOMUXC_GPIO_AD_04_GPIO9_IO03				0x11C 0x360 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_05_EMVSIM1_POWER_FAIL			0x120 0x364 0x6A4 0x0 0x1
> -#define IOMUXC_GPIO_AD_05_LPUART8_RTS_B				0x120 0x364 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_05_ENET_1G_1588_EVENT3_OUT		0x120 0x364 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_05_GPT2_CLK				0x120 0x364 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_05_FLEXPWM1_PWM2_B			0x120 0x364 0x514 0x4 0x1
> -#define IOMUXC_GPIO_AD_05_GPIO_MUX3_IO04			0x120 0x364 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_05_WDOG2_B				0x120 0x364 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_05_FLEXIO2_D05				0x120 0x364 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_05_TMR4_TIMER1				0x120 0x364 0x664 0x9 0x1
> -#define IOMUXC_GPIO_AD_05_GPIO9_IO04				0x120 0x364 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_06_USB_OTG2_OC				0x124 0x368 0x6B8 0x0 0x0
> -#define IOMUXC_GPIO_AD_06_FLEXCAN1_TX				0x124 0x368 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_06_EMVSIM2_IO				0x124 0x368 0x6A8 0x2 0x0
> -#define IOMUXC_GPIO_AD_06_GPT3_CAPTURE1				0x124 0x368 0x590 0x3 0x1
> -#define IOMUXC_GPIO_AD_06_VIDEO_MUX_CSI_DATA15			0x124 0x368 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_06_GPIO_MUX3_IO05			0x124 0x368 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_06_ENET_1588_EVENT1_IN			0x124 0x368 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_06_FLEXIO2_D06				0x124 0x368 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_06_TMR4_TIMER2				0x124 0x368 0x668 0x9 0x0
> -#define IOMUXC_GPIO_AD_06_GPIO9_IO05				0x124 0x368 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_06_FLEXPWM1_PWM0_X			0x124 0x368 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_07_USB_OTG2_PWR				0x128 0x36C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_07_FLEXCAN1_RX				0x128 0x36C 0x498 0x1 0x0
> -#define IOMUXC_GPIO_AD_07_EMVSIM2_CLK				0x128 0x36C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_07_GPT3_CAPTURE2				0x128 0x36C 0x594 0x3 0x1
> -#define IOMUXC_GPIO_AD_07_VIDEO_MUX_CSI_DATA14			0x128 0x36C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_07_GPIO_MUX3_IO06			0x128 0x36C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_07_ENET_1588_EVENT1_OUT			0x128 0x36C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_07_FLEXIO2_D07				0x128 0x36C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_07_TMR4_TIMER3				0x128 0x36C 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_07_GPIO9_IO06				0x128 0x36C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_07_FLEXPWM1_PWM1_X			0x128 0x36C 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_08_USBPHY2_OTG_ID			0x12C 0x370 0x6C4 0x0 0x0
> -#define IOMUXC_GPIO_AD_08_LPI2C1_SCL				0x12C 0x370 0x5AC 0x1 0x0
> -#define IOMUXC_GPIO_AD_08_EMVSIM2_RST				0x12C 0x370 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_08_GPT3_COMPARE1				0x12C 0x370 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_08_VIDEO_MUX_CSI_DATA13			0x12C 0x370 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_08_GPIO_MUX3_IO07			0x12C 0x370 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_08_ENET_1588_EVENT2_IN			0x12C 0x370 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_08_FLEXIO2_D08				0x12C 0x370 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_08_GPIO9_IO07				0x12C 0x370 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_08_FLEXPWM1_PWM2_X			0x12C 0x370 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_09_USBPHY1_OTG_ID			0x130 0x374 0x6C0 0x0 0x0
> -#define IOMUXC_GPIO_AD_09_LPI2C1_SDA				0x130 0x374 0x5B0 0x1 0x0
> -#define IOMUXC_GPIO_AD_09_EMVSIM2_SVEN				0x130 0x374 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_09_GPT3_COMPARE2				0x130 0x374 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_09_VIDEO_MUX_CSI_DATA12			0x130 0x374 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_09_GPIO_MUX3_IO08			0x130 0x374 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_09_ENET_1588_EVENT2_OUT			0x130 0x374 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_09_FLEXIO2_D09				0x130 0x374 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_09_GPIO9_IO08				0x130 0x374 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_09_FLEXPWM1_PWM3_X			0x130 0x374 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_10_USB_OTG1_PWR				0x134 0x378 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_10_LPI2C1_SCLS				0x134 0x378 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_10_EMVSIM2_PD				0x134 0x378 0x6AC 0x2 0x0
> -#define IOMUXC_GPIO_AD_10_GPT3_COMPARE3				0x134 0x378 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_10_VIDEO_MUX_CSI_DATA11			0x134 0x378 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_10_GPIO_MUX3_IO09			0x134 0x378 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_10_ENET_1588_EVENT3_IN			0x134 0x378 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_10_FLEXIO2_D10				0x134 0x378 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_10_GPIO9_IO09				0x134 0x378 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_10_FLEXPWM2_PWM0_X			0x134 0x378 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_11_USB_OTG1_OC				0x138 0x37C 0x6BC 0x0 0x0
> -#define IOMUXC_GPIO_AD_11_LPI2C1_SDAS				0x138 0x37C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_11_EMVSIM2_POWER_FAIL			0x138 0x37C 0x6B0 0x2 0x0
> -#define IOMUXC_GPIO_AD_11_GPT3_CLK				0x138 0x37C 0x598 0x3 0x1
> -#define IOMUXC_GPIO_AD_11_VIDEO_MUX_CSI_DATA10			0x138 0x37C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_11_GPIO_MUX3_IO10			0x138 0x37C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_11_ENET_1588_EVENT3_OUT			0x138 0x37C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_11_FLEXIO2_D11				0x138 0x37C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_11_GPIO9_IO10				0x138 0x37C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_11_FLEXPWM2_PWM1_X			0x138 0x37C 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_12_SPDIF_LOCK				0x13C 0x380 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_12_LPI2C1_HREQ				0x13C 0x380 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_12_GPT1_CAPTURE1				0x13C 0x380 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_12_FLEXSPI1_B_DATA03			0x13C 0x380 0x570 0x3 0x0
> -#define IOMUXC_GPIO_AD_12_VIDEO_MUX_CSI_PIXCLK			0x13C 0x380 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_12_GPIO_MUX3_IO11			0x13C 0x380 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_12_ENET_TX_DATA03			0x13C 0x380 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_12_FLEXIO2_D12				0x13C 0x380 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_12_EWM_OUT_B				0x13C 0x380 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_12_GPIO9_IO11				0x13C 0x380 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_12_FLEXPWM2_PWM2_X			0x13C 0x380 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_13_SPDIF_SR_CLK				0x140 0x384 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_13_PIT1_TRIGGER0				0x140 0x384 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_13_GPT1_CAPTURE2				0x140 0x384 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_13_FLEXSPI1_B_DATA02			0x140 0x384 0x56C 0x3 0x0
> -#define IOMUXC_GPIO_AD_13_VIDEO_MUX_CSI_MCLK			0x140 0x384 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_13_GPIO_MUX3_IO12			0x140 0x384 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_13_ENET_TX_DATA02			0x140 0x384 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_13_FLEXIO2_D13				0x140 0x384 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_13_REF_CLK_32K				0x140 0x384 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_13_GPIO9_IO12				0x140 0x384 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_13_FLEXPWM2_PWM3_X			0x140 0x384 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_14_SPDIF_EXT_CLK				0x144 0x388 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_14_REF_CLK_24M				0x144 0x388 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_14_GPT1_COMPARE1				0x144 0x388 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_14_FLEXSPI1_B_DATA01			0x144 0x388 0x568 0x3 0x0
> -#define IOMUXC_GPIO_AD_14_VIDEO_MUX_CSI_VSYNC			0x144 0x388 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_14_GPIO_MUX3_IO13			0x144 0x388 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_14_ENET_RX_CLK				0x144 0x388 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_14_FLEXIO2_D14				0x144 0x388 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_14_CCM_ENET_REF_CLK_25M			0x144 0x388 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_14_GPIO9_IO13				0x144 0x388 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_14_FLEXPWM3_PWM0_X			0x144 0x388 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_15_GPIO9_IO14				0x148 0x38C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_15_FLEXPWM3_PWM1_X			0x148 0x38C 0x0 0xB 0x0
> -#define IOMUXC_GPIO_AD_15_SPDIF_IN				0x148 0x38C 0x6B4 0x0 0x1
> -#define IOMUXC_GPIO_AD_15_LPUART10_TXD				0x148 0x38C 0x628 0x1 0x0
> -#define IOMUXC_GPIO_AD_15_GPT1_COMPARE2				0x148 0x38C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_15_FLEXSPI1_B_DATA00			0x148 0x38C 0x564 0x3 0x0
> -#define IOMUXC_GPIO_AD_15_VIDEO_MUX_CSI_HSYNC			0x148 0x38C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_15_GPIO_MUX3_IO14			0x148 0x38C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_15_ENET_TX_ER				0x148 0x38C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_15_FLEXIO2_D15				0x148 0x38C 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_AD_16_SPDIF_OUT				0x14C 0x390 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_16_LPUART10_RXD				0x14C 0x390 0x624 0x1 0x0
> -#define IOMUXC_GPIO_AD_16_GPT1_COMPARE3				0x14C 0x390 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_16_FLEXSPI1_B_SCLK			0x14C 0x390 0x578 0x3 0x0
> -#define IOMUXC_GPIO_AD_16_VIDEO_MUX_CSI_DATA09			0x14C 0x390 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_16_GPIO_MUX3_IO15			0x14C 0x390 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_16_ENET_RX_DATA03			0x14C 0x390 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_16_FLEXIO2_D16				0x14C 0x390 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_16_ENET_1G_MDC				0x14C 0x390 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_16_GPIO9_IO15				0x14C 0x390 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_16_FLEXPWM3_PWM2_X			0x14C 0x390 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_17_SAI1_MCLK				0x150 0x394 0x66C 0x0 0x0
> -#define IOMUXC_GPIO_AD_17_ACMP1_OUT				0x150 0x394 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_17_GPT1_CLK				0x150 0x394 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_17_FLEXSPI1_A_DQS			0x150 0x394 0x550 0x3 0x1
> -#define IOMUXC_GPIO_AD_17_VIDEO_MUX_CSI_DATA08			0x150 0x394 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_17_GPIO_MUX3_IO16			0x150 0x394 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_17_ENET_RX_DATA02			0x150 0x394 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_17_FLEXIO2_D17				0x150 0x394 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_17_ENET_1G_MDIO				0x150 0x394 0x4C8 0x9 0x2
> -#define IOMUXC_GPIO_AD_17_GPIO9_IO16				0x150 0x394 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_17_FLEXPWM3_PWM3_X			0x150 0x394 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_18_GPIO9_IO17				0x154 0x398 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_18_FLEXPWM4_PWM0_X			0x154 0x398 0x0 0xB 0x0
> -#define IOMUXC_GPIO_AD_18_SAI1_RX_SYNC				0x154 0x398 0x678 0x0 0x0
> -#define IOMUXC_GPIO_AD_18_ACMP2_OUT				0x154 0x398 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_18_LPSPI1_PCS1				0x154 0x398 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_18_FLEXSPI1_A_SS0_B			0x154 0x398 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_18_VIDEO_MUX_CSI_DATA07			0x154 0x398 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_18_GPIO_MUX3_IO17			0x154 0x398 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_18_ENET_CRS				0x154 0x398 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_18_FLEXIO2_D18				0x154 0x398 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_18_LPI2C2_SCL				0x154 0x398 0x5B4 0x9 0x1
> -
> -#define IOMUXC_GPIO_AD_19_SAI1_RX_BCLK				0x158 0x39C 0x670 0x0 0x0
> -#define IOMUXC_GPIO_AD_19_ACMP3_OUT				0x158 0x39C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_19_LPSPI1_PCS2				0x158 0x39C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_19_FLEXSPI1_A_SCLK			0x158 0x39C 0x574 0x3 0x0
> -#define IOMUXC_GPIO_AD_19_VIDEO_MUX_CSI_DATA06			0x158 0x39C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_19_GPIO_MUX3_IO18			0x158 0x39C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_19_ENET_COL				0x158 0x39C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_19_FLEXIO2_D19				0x158 0x39C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_19_LPI2C2_SDA				0x158 0x39C 0x5B8 0x9 0x1
> -#define IOMUXC_GPIO_AD_19_GPIO9_IO18				0x158 0x39C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_19_FLEXPWM4_PWM1_X			0x158 0x39C 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_20_SAI1_RX_DATA00			0x15C 0x3A0 0x674 0x0 0x0
> -#define IOMUXC_GPIO_AD_20_ACMP4_OUT				0x15C 0x3A0 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_20_LPSPI1_PCS3				0x15C 0x3A0 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_20_FLEXSPI1_A_DATA00			0x15C 0x3A0 0x554 0x3 0x0
> -#define IOMUXC_GPIO_AD_20_VIDEO_MUX_CSI_DATA05			0x15C 0x3A0 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_20_GPIO_MUX3_IO19			0x15C 0x3A0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_20_KPP_ROW07				0x15C 0x3A0 0x5A8 0x6 0x0
> -#define IOMUXC_GPIO_AD_20_FLEXIO2_D20				0x15C 0x3A0 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_20_ENET_QOS_1588_EVENT2_OUT		0x15C 0x3A0 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_20_GPIO9_IO19				0x15C 0x3A0 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_20_FLEXPWM4_PWM2_X			0x15C 0x3A0 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_21_SAI1_TX_DATA00			0x160 0x3A4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_21_LPSPI2_PCS1				0x160 0x3A4 0x5E0 0x2 0x0
> -#define IOMUXC_GPIO_AD_21_FLEXSPI1_A_DATA01			0x160 0x3A4 0x558 0x3 0x0
> -#define IOMUXC_GPIO_AD_21_VIDEO_MUX_CSI_DATA04			0x160 0x3A4 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_21_GPIO_MUX3_IO20			0x160 0x3A4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_21_KPP_COL07				0x160 0x3A4 0x5A0 0x6 0x0
> -#define IOMUXC_GPIO_AD_21_FLEXIO2_D21				0x160 0x3A4 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_21_ENET_QOS_1588_EVENT2_IN		0x160 0x3A4 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_21_GPIO9_IO20				0x160 0x3A4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_21_FLEXPWM4_PWM3_X			0x160 0x3A4 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_22_GPIO9_IO21				0x164 0x3A8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_22_SAI1_TX_BCLK				0x164 0x3A8 0x67C 0x0 0x0
> -#define IOMUXC_GPIO_AD_22_LPSPI2_PCS2				0x164 0x3A8 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_22_FLEXSPI1_A_DATA02			0x164 0x3A8 0x55C 0x3 0x0
> -#define IOMUXC_GPIO_AD_22_VIDEO_MUX_CSI_DATA03			0x164 0x3A8 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_22_GPIO_MUX3_IO21			0x164 0x3A8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_22_KPP_ROW06				0x164 0x3A8 0x5A4 0x6 0x0
> -#define IOMUXC_GPIO_AD_22_FLEXIO2_D22				0x164 0x3A8 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_22_ENET_QOS_1588_EVENT3_OUT		0x164 0x3A8 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_23_SAI1_TX_SYNC				0x168 0x3AC 0x680 0x0 0x0
> -#define IOMUXC_GPIO_AD_23_LPSPI2_PCS3				0x168 0x3AC 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_23_FLEXSPI1_A_DATA03			0x168 0x3AC 0x560 0x3 0x0
> -#define IOMUXC_GPIO_AD_23_VIDEO_MUX_CSI_DATA02			0x168 0x3AC 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_23_GPIO_MUX3_IO22			0x168 0x3AC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_23_KPP_COL06				0x168 0x3AC 0x59C 0x6 0x0
> -#define IOMUXC_GPIO_AD_23_FLEXIO2_D23				0x168 0x3AC 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_23_ENET_QOS_1588_EVENT3_IN		0x168 0x3AC 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_23_GPIO9_IO22				0x168 0x3AC 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_24_LPUART1_TXD				0x16C 0x3B0 0x620 0x0 0x0
> -#define IOMUXC_GPIO_AD_24_LPSPI2_SCK				0x16C 0x3B0 0x5E4 0x1 0x0
> -#define IOMUXC_GPIO_AD_24_VIDEO_MUX_CSI_DATA00			0x16C 0x3B0 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_24_ENET_RX_EN				0x16C 0x3B0 0x4B8 0x3 0x0
> -#define IOMUXC_GPIO_AD_24_FLEXPWM2_PWM0_A			0x16C 0x3B0 0x518 0x4 0x1
> -#define IOMUXC_GPIO_AD_24_GPIO_MUX3_IO23			0x16C 0x3B0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_24_KPP_ROW05				0x16C 0x3B0 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_24_FLEXIO2_D24				0x16C 0x3B0 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_24_LPI2C4_SCL				0x16C 0x3B0 0x5C4 0x9 0x0
> -#define IOMUXC_GPIO_AD_24_GPIO9_IO23				0x16C 0x3B0 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_25_GPIO9_IO24				0x170 0x3B4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_25_LPUART1_RXD				0x170 0x3B4 0x61C 0x0 0x0
> -#define IOMUXC_GPIO_AD_25_LPSPI2_PCS0				0x170 0x3B4 0x5DC 0x1 0x0
> -#define IOMUXC_GPIO_AD_25_VIDEO_MUX_CSI_DATA01			0x170 0x3B4 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_25_ENET_RX_ER				0x170 0x3B4 0x4BC 0x3 0x0
> -#define IOMUXC_GPIO_AD_25_FLEXPWM2_PWM0_B			0x170 0x3B4 0x524 0x4 0x1
> -#define IOMUXC_GPIO_AD_25_GPIO_MUX3_IO24			0x170 0x3B4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_25_KPP_COL05				0x170 0x3B4 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_25_FLEXIO2_D25				0x170 0x3B4 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_25_LPI2C4_SDA				0x170 0x3B4 0x5C8 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_26_LPUART1_CTS_B				0x174 0x3B8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_26_LPSPI2_SOUT				0x174 0x3B8 0x5EC 0x1 0x0
> -#define IOMUXC_GPIO_AD_26_SEMC_CSX01				0x174 0x3B8 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_26_ENET_RX_DATA00			0x174 0x3B8 0x4B0 0x3 0x0
> -#define IOMUXC_GPIO_AD_26_FLEXPWM2_PWM1_A			0x174 0x3B8 0x51C 0x4 0x1
> -#define IOMUXC_GPIO_AD_26_GPIO_MUX3_IO25			0x174 0x3B8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_26_KPP_ROW04				0x174 0x3B8 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_26_FLEXIO2_D26				0x174 0x3B8 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_26_ENET_QOS_MDC				0x174 0x3B8 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_26_GPIO9_IO25				0x174 0x3B8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_26_USDHC2_CD_B				0x174 0x3B8 0x6D0 0xB 0x1
> -
> -#define IOMUXC_GPIO_AD_27_LPUART1_RTS_B				0x178 0x3BC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_27_LPSPI2_SIN				0x178 0x3BC 0x5E8 0x1 0x0
> -#define IOMUXC_GPIO_AD_27_SEMC_CSX02				0x178 0x3BC 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_27_ENET_RX_DATA01			0x178 0x3BC 0x4B4 0x3 0x0
> -#define IOMUXC_GPIO_AD_27_FLEXPWM2_PWM1_B			0x178 0x3BC 0x528 0x4 0x1
> -#define IOMUXC_GPIO_AD_27_GPIO_MUX3_IO26			0x178 0x3BC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_27_KPP_COL04				0x178 0x3BC 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_27_FLEXIO2_D27				0x178 0x3BC 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_27_ENET_QOS_MDIO				0x178 0x3BC 0x4EC 0x9 0x1
> -#define IOMUXC_GPIO_AD_27_GPIO9_IO26				0x178 0x3BC 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_27_USDHC2_WP				0x178 0x3BC 0x6D4 0xB 0x1
> -
> -#define IOMUXC_GPIO_AD_28_GPIO9_IO27				0x17C 0x3C0 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_28_USDHC2_VSELECT			0x17C 0x3C0 0x0 0xB 0x0
> -#define IOMUXC_GPIO_AD_28_LPSPI1_SCK				0x17C 0x3C0 0x5D0 0x0 0x1
> -#define IOMUXC_GPIO_AD_28_LPUART5_TXD				0x17C 0x3C0 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_28_SEMC_CSX03				0x17C 0x3C0 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_28_ENET_TX_EN				0x17C 0x3C0 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_28_FLEXPWM2_PWM2_A			0x17C 0x3C0 0x520 0x4 0x1
> -#define IOMUXC_GPIO_AD_28_GPIO_MUX3_IO27			0x17C 0x3C0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_28_KPP_ROW03				0x17C 0x3C0 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_28_FLEXIO2_D28				0x17C 0x3C0 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_28_VIDEO_MUX_EXT_DCIC1			0x17C 0x3C0 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_29_LPSPI1_PCS0				0x180 0x3C4 0x5CC 0x0 0x1
> -#define IOMUXC_GPIO_AD_29_LPUART5_RXD				0x180 0x3C4 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_29_ENET_REF_CLK				0x180 0x3C4 0x4A8 0x2 0x0
> -#define IOMUXC_GPIO_AD_29_ENET_TX_CLK				0x180 0x3C4 0x4C0 0x3 0x0
> -#define IOMUXC_GPIO_AD_29_FLEXPWM2_PWM2_B			0x180 0x3C4 0x52C 0x4 0x1
> -#define IOMUXC_GPIO_AD_29_GPIO_MUX3_IO28			0x180 0x3C4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_29_KPP_COL03				0x180 0x3C4 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_29_FLEXIO2_D29				0x180 0x3C4 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_29_VIDEO_MUX_EXT_DCIC2			0x180 0x3C4 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_29_GPIO9_IO28				0x180 0x3C4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_29_USDHC2_RESET_B			0x180 0x3C4 0x0 0xB 0x0
> -
> -#define IOMUXC_GPIO_AD_30_LPSPI1_SOUT				0x184 0x3C8 0x5D8 0x0 0x1
> -#define IOMUXC_GPIO_AD_30_USB_OTG2_OC				0x184 0x3C8 0x6B8 0x1 0x1
> -#define IOMUXC_GPIO_AD_30_FLEXCAN2_TX				0x184 0x3C8 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_30_ENET_TX_DATA00			0x184 0x3C8 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_30_LPUART3_TXD				0x184 0x3C8 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_30_GPIO_MUX3_IO29			0x184 0x3C8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_30_KPP_ROW02				0x184 0x3C8 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_30_FLEXIO2_D30				0x184 0x3C8 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_30_WDOG2_RESET_B_DEB			0x184 0x3C8 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_30_GPIO9_IO29				0x184 0x3C8 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_31_LPSPI1_SIN				0x188 0x3CC 0x5D4 0x0 0x1
> -#define IOMUXC_GPIO_AD_31_USB_OTG2_PWR				0x188 0x3CC 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_31_FLEXCAN2_RX				0x188 0x3CC 0x49C 0x2 0x1
> -#define IOMUXC_GPIO_AD_31_ENET_TX_DATA01			0x188 0x3CC 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_31_LPUART3_RXD				0x188 0x3CC 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_31_GPIO_MUX3_IO30			0x188 0x3CC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_31_KPP_COL02				0x188 0x3CC 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_31_FLEXIO2_D31				0x188 0x3CC 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_31_WDOG1_RESET_B_DEB			0x188 0x3CC 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_31_GPIO9_IO30				0x188 0x3CC 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_32_GPIO9_IO31				0x18C 0x3D0 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_32_LPI2C1_SCL				0x18C 0x3D0 0x5AC 0x0 0x1
> -#define IOMUXC_GPIO_AD_32_USBPHY2_OTG_ID			0x18C 0x3D0 0x6C4 0x1 0x1
> -#define IOMUXC_GPIO_AD_32_PGMC_PMIC_RDY				0x18C 0x3D0 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_32_ENET_MDC				0x18C 0x3D0 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_32_USDHC1_CD_B				0x18C 0x3D0 0x6C8 0x4 0x0
> -#define IOMUXC_GPIO_AD_32_GPIO_MUX3_IO31			0x18C 0x3D0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_32_KPP_ROW01				0x18C 0x3D0 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_32_LPUART10_TXD				0x18C 0x3D0 0x628 0x8 0x1
> -#define IOMUXC_GPIO_AD_32_ENET_1G_MDC				0x18C 0x3D0 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_AD_33_LPI2C1_SDA				0x190 0x3D4 0x5B0 0x0 0x1
> -#define IOMUXC_GPIO_AD_33_USBPHY1_OTG_ID			0x190 0x3D4 0x6C0 0x1 0x1
> -#define IOMUXC_GPIO_AD_33_XBAR1_INOUT17				0x190 0x3D4 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_33_ENET_MDIO				0x190 0x3D4 0x4AC 0x3 0x1
> -#define IOMUXC_GPIO_AD_33_USDHC1_WP				0x190 0x3D4 0x6CC 0x4 0x0
> -#define IOMUXC_GPIO_AD_33_GPIO_MUX4_IO00			0x190 0x3D4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_33_KPP_COL01				0x190 0x3D4 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_33_LPUART10_RXD				0x190 0x3D4 0x624 0x8 0x1
> -#define IOMUXC_GPIO_AD_33_ENET_1G_MDIO				0x190 0x3D4 0x4C8 0x9 0x3
> -#define IOMUXC_GPIO_AD_33_GPIO10_IO00				0x190 0x3D4 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_34_ENET_1G_1588_EVENT0_IN		0x194 0x3D8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_34_USB_OTG1_PWR				0x194 0x3D8 0x0 0x1 0x0
> -#define IOMUXC_GPIO_AD_34_XBAR1_INOUT18				0x194 0x3D8 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_34_ENET_1588_EVENT0_IN			0x194 0x3D8 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_34_USDHC1_VSELECT			0x194 0x3D8 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_34_GPIO_MUX4_IO01			0x194 0x3D8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_34_KPP_ROW00				0x194 0x3D8 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_34_LPUART10_CTS_B			0x194 0x3D8 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_34_WDOG1_ANY				0x194 0x3D8 0x0 0x9 0x0
> -#define IOMUXC_GPIO_AD_34_GPIO10_IO01				0x194 0x3D8 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_AD_35_GPIO10_IO02				0x198 0x3DC 0x0 0xA 0x0
> -#define IOMUXC_GPIO_AD_35_ENET_1G_1588_EVENT0_OUT		0x198 0x3DC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_AD_35_USB_OTG1_OC				0x198 0x3DC 0x6BC 0x1 0x1
> -#define IOMUXC_GPIO_AD_35_XBAR1_INOUT19				0x198 0x3DC 0x0 0x2 0x0
> -#define IOMUXC_GPIO_AD_35_ENET_1588_EVENT0_OUT			0x198 0x3DC 0x0 0x3 0x0
> -#define IOMUXC_GPIO_AD_35_USDHC1_RESET_B			0x198 0x3DC 0x0 0x4 0x0
> -#define IOMUXC_GPIO_AD_35_GPIO_MUX4_IO02			0x198 0x3DC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_AD_35_KPP_COL00				0x198 0x3DC 0x0 0x6 0x0
> -#define IOMUXC_GPIO_AD_35_LPUART10_RTS_B			0x198 0x3DC 0x0 0x8 0x0
> -#define IOMUXC_GPIO_AD_35_FLEXSPI1_B_SS1_B			0x198 0x3DC 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_SD_B1_00_USDHC1_CMD				0x19C 0x3E0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B1_00_XBAR1_INOUT20			0x19C 0x3E0 0x6D8 0x2 0x1
> -#define IOMUXC_GPIO_SD_B1_00_GPT4_CAPTURE1			0x19C 0x3E0 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B1_00_GPIO_MUX4_IO03			0x19C 0x3E0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B1_00_FLEXSPI2_A_SS0_B			0x19C 0x3E0 0x0 0x6 0x0
> -#define IOMUXC_GPIO_SD_B1_00_KPP_ROW07				0x19C 0x3E0 0x5A8 0x8 0x1
> -#define IOMUXC_GPIO_SD_B1_00_GPIO10_IO03			0x19C 0x3E0 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B1_01_USDHC1_CLK				0x1A0 0x3E4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B1_01_XBAR1_INOUT21			0x1A0 0x3E4 0x6DC 0x2 0x1
> -#define IOMUXC_GPIO_SD_B1_01_GPT4_CAPTURE2			0x1A0 0x3E4 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B1_01_GPIO_MUX4_IO04			0x1A0 0x3E4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B1_01_FLEXSPI2_A_SCLK			0x1A0 0x3E4 0x58C 0x6 0x1
> -#define IOMUXC_GPIO_SD_B1_01_KPP_COL07				0x1A0 0x3E4 0x5A0 0x8 0x1
> -#define IOMUXC_GPIO_SD_B1_01_GPIO10_IO04			0x1A0 0x3E4 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B1_02_GPIO10_IO05			0x1A4 0x3E8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B1_02_USDHC1_DATA0			0x1A4 0x3E8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B1_02_XBAR1_INOUT22			0x1A4 0x3E8 0x6E0 0x2 0x1
> -#define IOMUXC_GPIO_SD_B1_02_GPT4_COMPARE1			0x1A4 0x3E8 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B1_02_GPIO_MUX4_IO05			0x1A4 0x3E8 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B1_02_FLEXSPI2_A_DATA00			0x1A4 0x3E8 0x57C 0x6 0x1
> -#define IOMUXC_GPIO_SD_B1_02_KPP_ROW06				0x1A4 0x3E8 0x5A4 0x8 0x1
> -#define IOMUXC_GPIO_SD_B1_02_FLEXSPI1_A_SS1_B			0x1A4 0x3E8 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_SD_B1_03_USDHC1_DATA1			0x1A8 0x3EC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B1_03_XBAR1_INOUT23			0x1A8 0x3EC 0x6E4 0x2 0x1
> -#define IOMUXC_GPIO_SD_B1_03_GPT4_COMPARE2			0x1A8 0x3EC 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B1_03_GPIO_MUX4_IO06			0x1A8 0x3EC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B1_03_FLEXSPI2_A_DATA01			0x1A8 0x3EC 0x580 0x6 0x1
> -#define IOMUXC_GPIO_SD_B1_03_KPP_COL06				0x1A8 0x3EC 0x59C 0x8 0x1
> -#define IOMUXC_GPIO_SD_B1_03_FLEXSPI1_B_SS1_B			0x1A8 0x3EC 0x0 0x9 0x0
> -#define IOMUXC_GPIO_SD_B1_03_GPIO10_IO06			0x1A8 0x3EC 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B1_04_USDHC1_DATA2			0x1AC 0x3F0 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B1_04_XBAR1_INOUT24			0x1AC 0x3F0 0x6E8 0x2 0x1
> -#define IOMUXC_GPIO_SD_B1_04_GPT4_COMPARE3			0x1AC 0x3F0 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B1_04_GPIO_MUX4_IO07			0x1AC 0x3F0 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B1_04_FLEXSPI2_A_DATA02			0x1AC 0x3F0 0x584 0x6 0x1
> -#define IOMUXC_GPIO_SD_B1_04_FLEXSPI1_B_SS0_B			0x1AC 0x3F0 0x0 0x8 0x0
> -#define IOMUXC_GPIO_SD_B1_04_ENET_QOS_1588_EVENT2_AUX_IN	0x1AC 0x3F0 0x0 0x9 0x0
> -#define IOMUXC_GPIO_SD_B1_04_GPIO10_IO07			0x1AC 0x3F0 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B1_05_GPIO10_IO08			0x1B0 0x3F4 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B1_05_USDHC1_DATA3			0x1B0 0x3F4 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B1_05_XBAR1_INOUT25			0x1B0 0x3F4 0x6EC 0x2 0x1
> -#define IOMUXC_GPIO_SD_B1_05_GPT4_CLK				0x1B0 0x3F4 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B1_05_GPIO_MUX4_IO08			0x1B0 0x3F4 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B1_05_FLEXSPI2_A_DATA03			0x1B0 0x3F4 0x588 0x6 0x1
> -#define IOMUXC_GPIO_SD_B1_05_FLEXSPI1_B_DQS			0x1B0 0x3F4 0x0 0x8 0x0
> -#define IOMUXC_GPIO_SD_B1_05_ENET_QOS_1588_EVENT3_AUX_IN	0x1B0 0x3F4 0x0 0x9 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_00_GPIO10_IO09			0x1B4 0x3F8 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_00_USDHC2_DATA3			0x1B4 0x3F8 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_00_FLEXSPI1_B_DATA03			0x1B4 0x3F8 0x570 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_00_ENET_1G_RX_EN			0x1B4 0x3F8 0x4E0 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_00_LPUART9_TXD			0x1B4 0x3F8 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_00_LPSPI4_SCK				0x1B4 0x3F8 0x610 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_00_GPIO_MUX4_IO09			0x1B4 0x3F8 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_01_USDHC2_DATA2			0x1B8 0x3FC 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_01_FLEXSPI1_B_DATA02			0x1B8 0x3FC 0x56C 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_01_ENET_1G_RX_CLK			0x1B8 0x3FC 0x4CC 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_01_LPUART9_RXD			0x1B8 0x3FC 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_01_LPSPI4_PCS0			0x1B8 0x3FC 0x60C 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_01_GPIO_MUX4_IO10			0x1B8 0x3FC 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_01_GPIO10_IO10			0x1B8 0x3FC 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_02_GPIO10_IO11			0x1BC 0x400 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_02_USDHC2_DATA1			0x1BC 0x400 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_02_FLEXSPI1_B_DATA01			0x1BC 0x400 0x568 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_02_ENET_1G_RX_DATA00			0x1BC 0x400 0x4D0 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_02_LPUART9_CTS_B			0x1BC 0x400 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_02_LPSPI4_SOUT			0x1BC 0x400 0x618 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_02_GPIO_MUX4_IO11			0x1BC 0x400 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_03_GPIO10_IO12			0x1C0 0x404 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_03_USDHC2_DATA0			0x1C0 0x404 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_03_FLEXSPI1_B_DATA00			0x1C0 0x404 0x564 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_03_ENET_1G_RX_DATA01			0x1C0 0x404 0x4D4 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_03_LPUART9_RTS_B			0x1C0 0x404 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_03_LPSPI4_SIN				0x1C0 0x404 0x614 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_03_GPIO_MUX4_IO12			0x1C0 0x404 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_04_USDHC2_CLK				0x1C4 0x408 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_04_FLEXSPI1_B_SCLK			0x1C4 0x408 0x578 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_04_ENET_1G_RX_DATA02			0x1C4 0x408 0x4D8 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_04_FLEXSPI1_A_SS1_B			0x1C4 0x408 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_04_LPSPI4_PCS1			0x1C4 0x408 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_04_GPIO_MUX4_IO13			0x1C4 0x408 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_04_GPIO10_IO13			0x1C4 0x408 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_05_GPIO10_IO14			0x1C8 0x40C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_05_USDHC2_CMD				0x1C8 0x40C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_05_FLEXSPI1_A_DQS			0x1C8 0x40C 0x550 0x1 0x2
> -#define IOMUXC_GPIO_SD_B2_05_ENET_1G_RX_DATA03			0x1C8 0x40C 0x4DC 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_05_FLEXSPI1_B_SS0_B			0x1C8 0x40C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_05_LPSPI4_PCS2			0x1C8 0x40C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_05_GPIO_MUX4_IO14			0x1C8 0x40C 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_06_GPIO10_IO15			0x1CC 0x410 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_06_USDHC2_RESET_B			0x1CC 0x410 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_06_FLEXSPI1_A_SS0_B			0x1CC 0x410 0x0 0x1 0x0
> -#define IOMUXC_GPIO_SD_B2_06_ENET_1G_TX_DATA03			0x1CC 0x410 0x0 0x2 0x0
> -#define IOMUXC_GPIO_SD_B2_06_LPSPI4_PCS3			0x1CC 0x410 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_06_GPT6_CAPTURE1			0x1CC 0x410 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_06_GPIO_MUX4_IO15			0x1CC 0x410 0x0 0x5 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_07_USDHC2_STROBE			0x1D0 0x414 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_07_FLEXSPI1_A_SCLK			0x1D0 0x414 0x574 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_07_ENET_1G_TX_DATA02			0x1D0 0x414 0x0 0x2 0x0
> -#define IOMUXC_GPIO_SD_B2_07_LPUART3_CTS_B			0x1D0 0x414 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_07_GPT6_CAPTURE2			0x1D0 0x414 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_07_GPIO_MUX4_IO16			0x1D0 0x414 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_07_LPSPI2_SCK				0x1D0 0x414 0x5E4 0x6 0x1
> -#define IOMUXC_GPIO_SD_B2_07_ENET_TX_ER				0x1D0 0x414 0x0 0x8 0x0
> -#define IOMUXC_GPIO_SD_B2_07_ENET_QOS_REF_CLK			0x1D0 0x414 0x4A0 0x9 0x1
> -#define IOMUXC_GPIO_SD_B2_07_GPIO10_IO16			0x1D0 0x414 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_SD_B2_08_GPIO10_IO17			0x1D4 0x418 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_08_USDHC2_DATA4			0x1D4 0x418 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_08_FLEXSPI1_A_DATA00			0x1D4 0x418 0x554 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_08_ENET_1G_TX_DATA01			0x1D4 0x418 0x0 0x2 0x0
> -#define IOMUXC_GPIO_SD_B2_08_LPUART3_RTS_B			0x1D4 0x418 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_08_GPT6_COMPARE1			0x1D4 0x418 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_08_GPIO_MUX4_IO17			0x1D4 0x418 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_08_LPSPI2_PCS0			0x1D4 0x418 0x5DC 0x6 0x1
> -
> -#define IOMUXC_GPIO_SD_B2_09_GPIO10_IO18			0x1D8 0x41C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_09_USDHC2_DATA5			0x1D8 0x41C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_09_FLEXSPI1_A_DATA01			0x1D8 0x41C 0x558 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_09_ENET_1G_TX_DATA00			0x1D8 0x41C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_SD_B2_09_LPUART5_CTS_B			0x1D8 0x41C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_09_GPT6_COMPARE2			0x1D8 0x41C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_09_GPIO_MUX4_IO18			0x1D8 0x41C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_09_LPSPI2_SOUT			0x1D8 0x41C 0x5EC 0x6 0x1
> -
> -#define IOMUXC_GPIO_SD_B2_10_GPIO10_IO19			0x1DC 0x420 0x0 0xA 0x0
> -#define IOMUXC_GPIO_SD_B2_10_USDHC2_DATA6			0x1DC 0x420 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_10_FLEXSPI1_A_DATA02			0x1DC 0x420 0x55C 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_10_ENET_1G_TX_EN			0x1DC 0x420 0x0 0x2 0x0
> -#define IOMUXC_GPIO_SD_B2_10_LPUART5_RTS_B			0x1DC 0x420 0x0 0x3 0x0
> -#define IOMUXC_GPIO_SD_B2_10_GPT6_COMPARE3			0x1DC 0x420 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_10_GPIO_MUX4_IO19			0x1DC 0x420 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_10_LPSPI2_SIN				0x1DC 0x420 0x5E8 0x6 0x1
> -
> -#define IOMUXC_GPIO_SD_B2_11_USDHC2_DATA7			0x1E0 0x424 0x0 0x0 0x0
> -#define IOMUXC_GPIO_SD_B2_11_FLEXSPI1_A_DATA03			0x1E0 0x424 0x560 0x1 0x1
> -#define IOMUXC_GPIO_SD_B2_11_ENET_1G_TX_CLK_IO			0x1E0 0x424 0x4E8 0x2 0x1
> -#define IOMUXC_GPIO_SD_B2_11_ENET_1G_REF_CLK			0x1E0 0x424 0x4C4 0x3 0x1
> -#define IOMUXC_GPIO_SD_B2_11_GPT6_CLK				0x1E0 0x424 0x0 0x4 0x0
> -#define IOMUXC_GPIO_SD_B2_11_GPIO_MUX4_IO20			0x1E0 0x424 0x0 0x5 0x0
> -#define IOMUXC_GPIO_SD_B2_11_LPSPI2_PCS1			0x1E0 0x424 0x5E0 0x6 0x1
> -#define IOMUXC_GPIO_SD_B2_11_GPIO10_IO20			0x1E0 0x424 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_00_VIDEO_MUX_LCDIF_CLK		0x1E4 0x428 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_00_ENET_1G_RX_EN			0x1E4 0x428 0x4E0 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_00_TMR1_TIMER0			0x1E4 0x428 0x63C 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_00_XBAR1_INOUT26			0x1E4 0x428 0x6F0 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_00_GPIO_MUX4_IO21			0x1E4 0x428 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_00_ENET_QOS_RX_EN			0x1E4 0x428 0x4F8 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_00_GPIO10_IO21			0x1E4 0x428 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_01_VIDEO_MUX_LCDIF_ENABLE		0x1E8 0x42C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_01_ENET_1G_RX_CLK			0x1E8 0x42C 0x4CC 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_01_ENET_1G_RX_ER			0x1E8 0x42C 0x4E4 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B1_01_TMR1_TIMER1			0x1E8 0x42C 0x640 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_01_XBAR1_INOUT27			0x1E8 0x42C 0x6F4 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_01_GPIO_MUX4_IO22			0x1E8 0x42C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_01_ENET_QOS_RX_CLK			0x1E8 0x42C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_01_ENET_QOS_RX_ER			0x1E8 0x42C 0x4FC 0x9 0x0
> -#define IOMUXC_GPIO_DISP_B1_01_GPIO10_IO22			0x1E8 0x42C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_02_GPIO10_IO23			0x1EC 0x430 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B1_02_VIDEO_MUX_LCDIF_HSYNC		0x1EC 0x430 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_02_ENET_1G_RX_DATA00		0x1EC 0x430 0x4D0 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_02_LPI2C3_SCL			0x1EC 0x430 0x5BC 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_02_TMR1_TIMER2			0x1EC 0x430 0x644 0x3 0x1
> -#define IOMUXC_GPIO_DISP_B1_02_XBAR1_INOUT28			0x1EC 0x430 0x6F8 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_02_GPIO_MUX4_IO23			0x1EC 0x430 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_02_ENET_QOS_RX_DATA00		0x1EC 0x430 0x4F0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_02_LPUART1_TXD			0x1EC 0x430 0x620 0x9 0x1
> -
> -#define IOMUXC_GPIO_DISP_B1_03_VIDEO_MUX_LCDIF_VSYNC		0x1F0 0x434 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_03_ENET_1G_RX_DATA01		0x1F0 0x434 0x4D4 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_03_LPI2C3_SDA			0x1F0 0x434 0x5C0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_03_TMR2_TIMER0			0x1F0 0x434 0x648 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_03_XBAR1_INOUT29			0x1F0 0x434 0x6FC 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_03_GPIO_MUX4_IO24			0x1F0 0x434 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_03_ENET_QOS_RX_DATA01		0x1F0 0x434 0x4F4 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_03_LPUART1_RXD			0x1F0 0x434 0x61C 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B1_03_GPIO10_IO24			0x1F0 0x434 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_04_VIDEO_MUX_LCDIF_DATA00		0x1F4 0x438 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_04_ENET_1G_RX_DATA02		0x1F4 0x438 0x4D8 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_04_LPUART4_RXD			0x1F4 0x438 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_04_TMR2_TIMER1			0x1F4 0x438 0x64C 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_04_XBAR1_INOUT30			0x1F4 0x438 0x700 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_04_GPIO_MUX4_IO25			0x1F4 0x438 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_04_ENET_QOS_RX_DATA02		0x1F4 0x438 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_04_LPSPI3_SCK			0x1F4 0x438 0x600 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B1_04_GPIO10_IO25			0x1F4 0x438 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_05_GPIO10_IO26			0x1F8 0x43C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B1_05_VIDEO_MUX_LCDIF_DATA01		0x1F8 0x43C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_05_ENET_1G_RX_DATA03		0x1F8 0x43C 0x4DC 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_05_LPUART4_CTS_B			0x1F8 0x43C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_05_TMR2_TIMER2			0x1F8 0x43C 0x650 0x3 0x1
> -#define IOMUXC_GPIO_DISP_B1_05_XBAR1_INOUT31			0x1F8 0x43C 0x704 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_05_GPIO_MUX4_IO26			0x1F8 0x43C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_05_ENET_QOS_RX_DATA03		0x1F8 0x43C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_05_LPSPI3_SIN			0x1F8 0x43C 0x604 0x9 0x1
> -
> -#define IOMUXC_GPIO_DISP_B1_06_VIDEO_MUX_LCDIF_DATA02		0x1FC 0x440 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_06_ENET_1G_TX_DATA03		0x1FC 0x440 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B1_06_LPUART4_TXD			0x1FC 0x440 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_06_TMR3_TIMER0			0x1FC 0x440 0x654 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_06_XBAR1_INOUT32			0x1FC 0x440 0x708 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_06_GPIO_MUX4_IO27			0x1FC 0x440 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_06_SRC_BT_CFG00			0x1FC 0x440 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B1_06_ENET_QOS_TX_DATA03		0x1FC 0x440 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_06_LPSPI3_SOUT			0x1FC 0x440 0x608 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B1_06_GPIO10_IO27			0x1FC 0x440 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_07_VIDEO_MUX_LCDIF_DATA03		0x200 0x444 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_07_ENET_1G_TX_DATA02		0x200 0x444 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B1_07_LPUART4_RTS_B			0x200 0x444 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_07_TMR3_TIMER1			0x200 0x444 0x658 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_07_XBAR1_INOUT33			0x200 0x444 0x70C 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_07_GPIO_MUX4_IO28			0x200 0x444 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_07_SRC_BT_CFG01			0x200 0x444 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B1_07_ENET_QOS_TX_DATA02		0x200 0x444 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_07_LPSPI3_PCS0			0x200 0x444 0x5F0 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B1_07_GPIO10_IO28			0x200 0x444 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_08_GPIO10_IO29			0x204 0x448 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B1_08_VIDEO_MUX_LCDIF_DATA04		0x204 0x448 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_08_ENET_1G_TX_DATA01		0x204 0x448 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B1_08_USDHC1_CD_B			0x204 0x448 0x6C8 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B1_08_TMR3_TIMER2			0x204 0x448 0x65C 0x3 0x1
> -#define IOMUXC_GPIO_DISP_B1_08_XBAR1_INOUT34			0x204 0x448 0x710 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_08_GPIO_MUX4_IO29			0x204 0x448 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_08_SRC_BT_CFG02			0x204 0x448 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B1_08_ENET_QOS_TX_DATA01		0x204 0x448 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_08_LPSPI3_PCS1			0x204 0x448 0x5F4 0x9 0x1
> -
> -#define IOMUXC_GPIO_DISP_B1_09_VIDEO_MUX_LCDIF_DATA05		0x208 0x44C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_09_ENET_1G_TX_DATA00		0x208 0x44C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B1_09_USDHC1_WP			0x208 0x44C 0x6CC 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B1_09_TMR4_TIMER0			0x208 0x44C 0x660 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_09_XBAR1_INOUT35			0x208 0x44C 0x714 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B1_09_GPIO_MUX4_IO30			0x208 0x44C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_09_SRC_BT_CFG03			0x208 0x44C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B1_09_ENET_QOS_TX_DATA00		0x208 0x44C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_09_LPSPI3_PCS2			0x208 0x44C 0x5F8 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B1_09_GPIO10_IO30			0x208 0x44C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_10_VIDEO_MUX_LCDIF_DATA06		0x20C 0x450 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_ENET_1G_TX_EN			0x20C 0x450 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_USDHC1_RESET_B			0x20C 0x450 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_TMR4_TIMER1			0x20C 0x450 0x664 0x3 0x2
> -#define IOMUXC_GPIO_DISP_B1_10_XBAR1_INOUT36			0x20C 0x450 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_GPIO_MUX4_IO31			0x20C 0x450 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_SRC_BT_CFG04			0x20C 0x450 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_ENET_QOS_TX_EN			0x20C 0x450 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_10_LPSPI3_PCS3			0x20C 0x450 0x5FC 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B1_10_GPIO10_IO31			0x20C 0x450 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B1_11_VIDEO_MUX_LCDIF_DATA07		0x210 0x454 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B1_11_ENET_1G_TX_CLK_IO		0x210 0x454 0x4E8 0x1 0x2
> -#define IOMUXC_GPIO_DISP_B1_11_ENET_1G_REF_CLK			0x210 0x454 0x4C4 0x2 0x2
> -#define IOMUXC_GPIO_DISP_B1_11_TMR4_TIMER2			0x210 0x454 0x668 0x3 0x1
> -#define IOMUXC_GPIO_DISP_B1_11_XBAR1_INOUT37			0x210 0x454 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B1_11_GPIO_MUX5_IO00			0x210 0x454 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B1_11_SRC_BT_CFG05			0x210 0x454 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B1_11_ENET_QOS_TX_CLK			0x210 0x454 0x4A4 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B1_11_ENET_QOS_REF_CLK			0x210 0x454 0x4A0 0x9 0x2
> -#define IOMUXC_GPIO_DISP_B1_11_GPIO11_IO00			0x210 0x454 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_00_GPIO11_IO01			0x214 0x458 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_VIDEO_MUX_LCDIF_DATA08		0x214 0x458 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_WDOG1_B				0x214 0x458 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_MQS_RIGHT			0x214 0x458 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_ENET_1G_TX_ER			0x214 0x458 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_SAI1_TX_DATA03			0x214 0x458 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_GPIO_MUX5_IO01			0x214 0x458 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_SRC_BT_CFG06			0x214 0x458 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_00_ENET_QOS_TX_ER			0x214 0x458 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_01_VIDEO_MUX_LCDIF_DATA09		0x218 0x45C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_USDHC1_VSELECT			0x218 0x45C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_MQS_LEFT				0x218 0x45C 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_WDOG2_B				0x218 0x45C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_SAI1_TX_DATA02			0x218 0x45C 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_GPIO_MUX5_IO02			0x218 0x45C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_SRC_BT_CFG07			0x218 0x45C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_EWM_OUT_B			0x218 0x45C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_CCM_ENET_REF_CLK_25M		0x218 0x45C 0x0 0x9 0x0
> -#define IOMUXC_GPIO_DISP_B2_01_GPIO11_IO02			0x218 0x45C 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_02_GPIO11_IO03			0x21C 0x460 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_VIDEO_MUX_LCDIF_DATA10		0x21C 0x460 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_ENET_TX_DATA00			0x21C 0x460 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_PIT1_TRIGGER3			0x21C 0x460 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_ARM_TRACE00			0x21C 0x460 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_SAI1_TX_DATA01			0x21C 0x460 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_GPIO_MUX5_IO03			0x21C 0x460 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_SRC_BT_CFG08			0x21C 0x460 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_02_ENET_QOS_TX_DATA00		0x21C 0x460 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_03_GPIO11_IO04			0x220 0x464 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_VIDEO_MUX_LCDIF_DATA11		0x220 0x464 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_ENET_TX_DATA01			0x220 0x464 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_PIT1_TRIGGER2			0x220 0x464 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_ARM_TRACE01			0x220 0x464 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_SAI1_MCLK			0x220 0x464 0x66C 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B2_03_GPIO_MUX5_IO04			0x220 0x464 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_SRC_BT_CFG09			0x220 0x464 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_03_ENET_QOS_TX_DATA01		0x220 0x464 0x0 0x8 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_04_VIDEO_MUX_LCDIF_DATA12		0x224 0x468 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_ENET_TX_EN			0x224 0x468 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_PIT1_TRIGGER1			0x224 0x468 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_ARM_TRACE02			0x224 0x468 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_SAI1_RX_SYNC			0x224 0x468 0x678 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B2_04_GPIO_MUX5_IO05			0x224 0x468 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_SRC_BT_CFG10			0x224 0x468 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_ENET_QOS_TX_EN			0x224 0x468 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_04_GPIO11_IO05			0x224 0x468 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_05_GPIO11_IO06			0x228 0x46C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_05_VIDEO_MUX_LCDIF_DATA13		0x228 0x46C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_05_ENET_TX_CLK			0x228 0x46C 0x4C0 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_05_ENET_REF_CLK			0x228 0x46C 0x4A8 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B2_05_ARM_TRACE03			0x228 0x46C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_05_SAI1_RX_BCLK			0x228 0x46C 0x670 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B2_05_GPIO_MUX5_IO06			0x228 0x46C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_05_SRC_BT_CFG11			0x228 0x46C 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_05_ENET_QOS_TX_CLK			0x228 0x46C 0x4A4 0x8 0x1
> -
> -#define IOMUXC_GPIO_DISP_B2_06_GPIO11_IO07			0x22C 0x470 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_06_VIDEO_MUX_LCDIF_DATA14		0x22C 0x470 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_06_ENET_RX_DATA00			0x22C 0x470 0x4B0 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_06_LPUART7_TXD			0x22C 0x470 0x630 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B2_06_ARM_TRACE_CLK			0x22C 0x470 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_06_SAI1_RX_DATA00			0x22C 0x470 0x674 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B2_06_GPIO_MUX5_IO07			0x22C 0x470 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_06_ENET_QOS_RX_DATA00		0x22C 0x470 0x4F0 0x8 0x1
> -
> -#define IOMUXC_GPIO_DISP_B2_07_VIDEO_MUX_LCDIF_DATA15		0x230 0x474 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_07_ENET_RX_DATA01			0x230 0x474 0x4B4 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_07_LPUART7_RXD			0x230 0x474 0x62C 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B2_07_ARM_TRACE_SWO			0x230 0x474 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_07_SAI1_TX_DATA00			0x230 0x474 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_07_GPIO_MUX5_IO08			0x230 0x474 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_07_ENET_QOS_RX_DATA01		0x230 0x474 0x4F4 0x8 0x1
> -#define IOMUXC_GPIO_DISP_B2_07_GPIO11_IO08			0x230 0x474 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_08_GPIO11_IO09			0x234 0x478 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_08_VIDEO_MUX_LCDIF_DATA16		0x234 0x478 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_08_ENET_RX_EN			0x234 0x478 0x4B8 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_08_LPUART8_TXD			0x234 0x478 0x638 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B2_08_ARM_CM7_EVENTO			0x234 0x478 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_08_SAI1_TX_BCLK			0x234 0x478 0x67C 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B2_08_GPIO_MUX5_IO09			0x234 0x478 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_08_ENET_QOS_RX_EN			0x234 0x478 0x4F8 0x8 0x1
> -#define IOMUXC_GPIO_DISP_B2_08_LPUART1_TXD			0x234 0x478 0x620 0x9 0x2
> -
> -#define IOMUXC_GPIO_DISP_B2_09_GPIO11_IO10			0x238 0x47C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_09_VIDEO_MUX_LCDIF_DATA17		0x238 0x47C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_09_ENET_RX_ER			0x238 0x47C 0x4BC 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_09_LPUART8_RXD			0x238 0x47C 0x634 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B2_09_ARM_CM7_EVENTI			0x238 0x47C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_09_SAI1_TX_SYNC			0x238 0x47C 0x680 0x4 0x1
> -#define IOMUXC_GPIO_DISP_B2_09_GPIO_MUX5_IO10			0x238 0x47C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_09_ENET_QOS_RX_ER			0x238 0x47C 0x4FC 0x8 0x1
> -#define IOMUXC_GPIO_DISP_B2_09_LPUART1_RXD			0x238 0x47C 0x61C 0x9 0x2
> -
> -#define IOMUXC_GPIO_DISP_B2_10_GPIO11_IO11			0x23C 0x480 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_10_VIDEO_MUX_LCDIF_DATA18		0x23C 0x480 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_10_EMVSIM2_IO			0x23C 0x480 0x6A8 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_10_LPUART2_TXD			0x23C 0x480 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_10_WDOG2_RESET_B_DEB		0x23C 0x480 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_10_XBAR1_INOUT38			0x23C 0x480 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_10_GPIO_MUX5_IO11			0x23C 0x480 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_10_LPI2C3_SCL			0x23C 0x480 0x5BC 0x6 0x1
> -#define IOMUXC_GPIO_DISP_B2_10_ENET_QOS_RX_ER			0x23C 0x480 0x4FC 0x8 0x2
> -#define IOMUXC_GPIO_DISP_B2_10_SPDIF_IN				0x23C 0x480 0x6B4 0x9 0x2
> -
> -#define IOMUXC_GPIO_DISP_B2_11_VIDEO_MUX_LCDIF_DATA19		0x240 0x484 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_EMVSIM2_CLK			0x240 0x484 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_LPUART2_RXD			0x240 0x484 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_WDOG1_RESET_B_DEB		0x240 0x484 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_XBAR1_INOUT39			0x240 0x484 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_GPIO_MUX5_IO12			0x240 0x484 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_LPI2C3_SDA			0x240 0x484 0x5C0 0x6 0x1
> -#define IOMUXC_GPIO_DISP_B2_11_ENET_QOS_CRS			0x240 0x484 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_SPDIF_OUT			0x240 0x484 0x0 0x9 0x0
> -#define IOMUXC_GPIO_DISP_B2_11_GPIO11_IO12			0x240 0x484 0x0 0xA 0x0
> -
> -#define IOMUXC_GPIO_DISP_B2_12_GPIO11_IO13			0x244 0x488 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_VIDEO_MUX_LCDIF_DATA20		0x244 0x488 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_EMVSIM2_RST			0x244 0x488 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_FLEXCAN1_TX			0x244 0x488 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_LPUART2_CTS_B			0x244 0x488 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_XBAR1_INOUT40			0x244 0x488 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_GPIO_MUX5_IO13			0x244 0x488 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_LPI2C4_SCL			0x244 0x488 0x5C4 0x6 0x1
> -#define IOMUXC_GPIO_DISP_B2_12_ENET_QOS_COL			0x244 0x488 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_12_LPSPI4_SCK			0x244 0x488 0x610 0x9 0x1
> -
> -#define IOMUXC_GPIO_DISP_B2_13_GPIO11_IO14			0x248 0x48C 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_13_VIDEO_MUX_LCDIF_DATA21		0x248 0x48C 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_13_EMVSIM2_SVEN			0x248 0x48C 0x0 0x1 0x0
> -#define IOMUXC_GPIO_DISP_B2_13_FLEXCAN1_RX			0x248 0x48C 0x498 0x2 0x1
> -#define IOMUXC_GPIO_DISP_B2_13_LPUART2_RTS_B			0x248 0x48C 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_13_ENET_REF_CLK			0x248 0x48C 0x4A8 0x4 0x2
> -#define IOMUXC_GPIO_DISP_B2_13_GPIO_MUX5_IO14			0x248 0x48C 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_13_LPI2C4_SDA			0x248 0x48C 0x5C8 0x6 0x1
> -#define IOMUXC_GPIO_DISP_B2_13_ENET_QOS_1588_EVENT0_OUT		0x248 0x48C 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_13_LPSPI4_SIN			0x248 0x48C 0x614 0x9 0x1
> -
> -#define IOMUXC_GPIO_DISP_B2_14_GPIO_MUX5_IO15			0x24C 0x490 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_FLEXCAN1_TX			0x24C 0x490 0x0 0x6 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_ENET_QOS_1588_EVENT0_IN		0x24C 0x490 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_LPSPI4_SOUT			0x24C 0x490 0x618 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B2_14_GPIO11_IO15			0x24C 0x490 0x0 0xA 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_VIDEO_MUX_LCDIF_DATA22		0x24C 0x490 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_EMVSIM2_PD			0x24C 0x490 0x6AC 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_14_WDOG2_B				0x24C 0x490 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_VIDEO_MUX_EXT_DCIC1		0x24C 0x490 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_14_ENET_1G_REF_CLK			0x24C 0x490 0x4C4 0x4 0x3
> -
> -#define IOMUXC_GPIO_DISP_B2_15_VIDEO_MUX_LCDIF_DATA23		0x250 0x494 0x0 0x0 0x0
> -#define IOMUXC_GPIO_DISP_B2_15_EMVSIM2_POWER_FAIL		0x250 0x494 0x6B0 0x1 0x1
> -#define IOMUXC_GPIO_DISP_B2_15_WDOG1_B				0x250 0x494 0x0 0x2 0x0
> -#define IOMUXC_GPIO_DISP_B2_15_VIDEO_MUX_EXT_DCIC2		0x250 0x494 0x0 0x3 0x0
> -#define IOMUXC_GPIO_DISP_B2_15_PIT1_TRIGGER0			0x250 0x494 0x0 0x4 0x0
> -#define IOMUXC_GPIO_DISP_B2_15_GPIO_MUX5_IO16			0x250 0x494 0x0 0x5 0x0
> -#define IOMUXC_GPIO_DISP_B2_15_FLEXCAN1_RX			0x250 0x494 0x498 0x6 0x2
> -#define IOMUXC_GPIO_DISP_B2_15_ENET_QOS_1588_EVENT0_AUX_IN	0x250 0x494 0x0 0x8 0x0
> -#define IOMUXC_GPIO_DISP_B2_15_LPSPI4_PCS0			0x250 0x494 0x60C 0x9 0x1
> -#define IOMUXC_GPIO_DISP_B2_15_GPIO11_IO16			0x250 0x494 0x0 0xA 0x0
> -
> -#endif  /* _DT_BINDINGS_PINCTRL_IMXRT1170_PINFUNC_H */
> diff --git a/arch/arm/boot/dts/nxp/vf/Makefile b/arch/arm/boot/dts/nxp/vf/Makefile
> index 0a4a7f9dd43e..1733506c0c72 100644
> --- a/arch/arm/boot/dts/nxp/vf/Makefile
> +++ b/arch/arm/boot/dts/nxp/vf/Makefile
> @@ -3,9 +3,7 @@ dtb-$(CONFIG_SOC_VF610) += \
>  	vf500-colibri-eval-v3.dtb \
>  	vf610-bk4.dtb \
>  	vf610-colibri-eval-v3.dtb \
> -	vf610m4-colibri.dtb \
>  	vf610-cosmic.dtb \
> -	vf610m4-cosmic.dtb \
>  	vf610-twr.dtb \
>  	vf610-zii-cfu1.dtb \
>  	vf610-zii-dev-rev-b.dtb \
> diff --git a/arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts b/arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
> deleted file mode 100644
> index 86d32f54c250..000000000000
> --- a/arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0+ OR MIT
> -/*
> - * Device tree for Colibri VF61 Cortex-M4 support
> - *
> - * Copyright (C) 2015 Stefan Agner
> - */
> -
> -/dts-v1/;
> -#include "vf610m4.dtsi"
> -
> -/ {
> -	model = "VF610 Cortex-M4";
> -	compatible = "fsl,vf610m4";
> -
> -	chosen {
> -		bootargs = "clk_ignore_unused init=/linuxrc rw";
> -		stdout-path = "serial2:115200";
> -	};
> -
> -	memory@8c000000 {
> -		device_type = "memory";
> -		reg = <0x8c000000 0x3000000>;
> -	};
> -};
> -
> -&gpio0 {
> -	status = "disabled";
> -};
> -
> -&gpio1 {
> -	status = "disabled";
> -};
> -
> -&gpio2 {
> -	status = "disabled";
> -};
> -
> -&gpio3 {
> -	status = "disabled";
> -};
> -
> -&gpio4 {
> -	status = "disabled";
> -};
> -
> -&uart2 {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&pinctrl_uart2>;
> -	status = "okay";
> -};
> -
> -&iomuxc {
> -	pinctrl_uart2: uart2grp {
> -		fsl,pins = <
> -			VF610_PAD_PTD0__UART2_TX		0x21a2
> -			VF610_PAD_PTD1__UART2_RX		0x21a1
> -			VF610_PAD_PTD2__UART2_RTS		0x21a2
> -			VF610_PAD_PTD3__UART2_CTS		0x21a1
> -		>;
> -	};
> -};
> diff --git a/arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts b/arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
> deleted file mode 100644
> index 454b484368cb..000000000000
> --- a/arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -/*
> - * Device tree for Cosmic+ VF6xx Cortex-M4 support
> - *
> - * Copyright (C) 2015
> - *
> - * Based on vf610m4 Colibri
> - *
> - * This file is dual-licensed: you can use it either under the terms
> - * of the GPL or the X11 license, at your option. Note that this dual
> - * licensing only applies to this file, and not this project as a
> - * whole.
> - *
> - *  a) This file is free software; you can redistribute it and/or
> - *     modify it under the terms of the GNU General Public License as
> - *     published by the Free Software Foundation; either version 2 of the
> - *     License, or (at your option) any later version.
> - *
> - *     This file is distributed in the hope that it will be useful,
> - *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> - *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - *     GNU General Public License for more details.
> - *
> - * Or, alternatively,
> - *
> - *  b) Permission is hereby granted, free of charge, to any person
> - *     obtaining a copy of this software and associated documentation
> - *     files (the "Software"), to deal in the Software without
> - *     restriction, including without limitation the rights to use,
> - *     copy, modify, merge, publish, distribute, sublicense, and/or
> - *     sell copies of the Software, and to permit persons to whom the
> - *     Software is furnished to do so, subject to the following
> - *     conditions:
> - *
> - *     The above copyright notice and this permission notice shall be
> - *     included in all copies or substantial portions of the Software.
> - *
> - *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> - *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> - *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> - *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> - *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> - *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> - *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - *     OTHER DEALINGS IN THE SOFTWARE.
> - */
> -
> -/dts-v1/;
> -#include "vf610m4.dtsi"
> -
> -/ {
> -	model = "VF610 Cortex-M4";
> -	compatible = "fsl,vf610m4";
> -};
> -
> -&gpio0 {
> -	status = "disabled";
> -};
> -
> -&gpio1 {
> -	status = "disabled";
> -};
> -
> -&gpio2 {
> -	status = "disabled";
> -};
> -
> -&gpio3 {
> -	status = "disabled";
> -};
> -
> -&gpio4 {
> -	status = "disabled";
> -};
> -
> -&uart3 {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&pinctrl_uart3>;
> -	status = "okay";
> -};
> -
> -&iomuxc {
> -	pinctrl_uart3: uart3grp {
> -		fsl,pins = <
> -			VF610_PAD_PTA20__UART3_TX		0x21a2
> -			VF610_PAD_PTA21__UART3_RX		0x21a1
> -		>;
> -	};
> -};
> diff --git a/arch/arm/boot/dts/nxp/vf/vf610m4.dtsi b/arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
> deleted file mode 100644
> index 648d219e1d0e..000000000000
> --- a/arch/arm/boot/dts/nxp/vf/vf610m4.dtsi
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -/*
> - * Device tree for VF6xx Cortex-M4 support
> - *
> - * Copyright (C) 2015 Stefan Agner
> - *
> - * This file is dual-licensed: you can use it either under the terms
> - * of the GPL or the X11 license, at your option. Note that this dual
> - * licensing only applies to this file, and not this project as a
> - * whole.
> - *
> - *  a) This file is free software; you can redistribute it and/or
> - *     modify it under the terms of the GNU General Public License as
> - *     published by the Free Software Foundation; either version 2 of the
> - *     License, or (at your option) any later version.
> - *
> - *     This file is distributed in the hope that it will be useful,
> - *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> - *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - *     GNU General Public License for more details.
> - *
> - * Or, alternatively,
> - *
> - *  b) Permission is hereby granted, free of charge, to any person
> - *     obtaining a copy of this software and associated documentation
> - *     files (the "Software"), to deal in the Software without
> - *     restriction, including without limitation the rights to use,
> - *     copy, modify, merge, publish, distribute, sublicense, and/or
> - *     sell copies of the Software, and to permit persons to whom the
> - *     Software is furnished to do so, subject to the following
> - *     conditions:
> - *
> - *     The above copyright notice and this permission notice shall be
> - *     included in all copies or substantial portions of the Software.
> - *
> - *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> - *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> - *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> - *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> - *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> - *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> - *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> - *     OTHER DEALINGS IN THE SOFTWARE.
> - */
> -
> -#include "../../armv7-m.dtsi"
> -#include "vfxxx.dtsi"
> -
> -/ {
> -	#address-cells = <1>;
> -	#size-cells = <1>;
> -	chosen { };
> -	aliases { };
> -};
> -
> -&mscm_ir {
> -	interrupt-parent = <&nvic>;
> -};
> -
> -&nvic {
> -	arm,num-irq-priority-bits = <4>;
> -};
> diff --git a/arch/arm/configs/imxrt_defconfig b/arch/arm/configs/imxrt_defconfig
> deleted file mode 100644
> index 52dba3762996..000000000000
> --- a/arch/arm/configs/imxrt_defconfig
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -# CONFIG_LOCALVERSION_AUTO is not set
> -CONFIG_BPF_SYSCALL=y
> -CONFIG_SCHED_AUTOGROUP=y
> -# CONFIG_MMU is not set
> -CONFIG_ARCH_MXC=y
> -CONFIG_SOC_IMXRT=y
> -CONFIG_SET_MEM_PARAM=y
> -CONFIG_DRAM_BASE=0x80000000
> -CONFIG_DRAM_SIZE=0x02000000
> -CONFIG_BINFMT_FLAT=y
> -CONFIG_UEVENT_HELPER=y
> -CONFIG_DEVTMPFS=y
> -CONFIG_DEVTMPFS_MOUNT=y
> -CONFIG_IMX_WEIM=y
> -CONFIG_LEGACY_PTY_COUNT=2
> -CONFIG_SERIAL_FSL_LPUART=y
> -CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
> -CONFIG_SERIAL_DEV_BUS=y
> -CONFIG_PINCTRL_IMXRT1050=y
> -CONFIG_GPIO_MXC=y
> -CONFIG_MMC=y
> -CONFIG_MMC_SDHCI=y
> -CONFIG_MMC_SDHCI_PLTFM=y
> -CONFIG_MMC_SDHCI_ESDHC_IMX=y
> -CONFIG_DMADEVICES=y
> -CONFIG_FSL_EDMA=y
> -CONFIG_CLK_IMXRT1050=y
> -CONFIG_EXT4_FS=y
> -CONFIG_EXT4_FS_POSIX_ACL=y
> -CONFIG_EXT4_FS_SECURITY=y
> -CONFIG_VFAT_FS=y
> -CONFIG_FAT_DEFAULT_UTF8=y
> -CONFIG_EXFAT_FS=y
> -CONFIG_NLS_ASCII=y
> -CONFIG_NLS_UTF8=y
> diff --git a/arch/arm/configs/vf610m4_defconfig b/arch/arm/configs/vf610m4_defconfig
> deleted file mode 100644
> index a5609cbfdfb3..000000000000
> --- a/arch/arm/configs/vf610m4_defconfig
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -CONFIG_NAMESPACES=y
> -CONFIG_BLK_DEV_INITRD=y
> -# CONFIG_RD_BZIP2 is not set
> -# CONFIG_RD_LZMA is not set
> -# CONFIG_RD_XZ is not set
> -# CONFIG_RD_LZ4 is not set
> -CONFIG_EXPERT=y
> -CONFIG_KALLSYMS_ALL=y
> -# CONFIG_MMU is not set
> -CONFIG_ARCH_MXC=y
> -CONFIG_SOC_VF610=y
> -CONFIG_SET_MEM_PARAM=y
> -CONFIG_DRAM_BASE=0x8c000000
> -CONFIG_FLASH_MEM_BASE=0x8f000000
> -CONFIG_FLASH_SIZE=0x01000000
> -CONFIG_CMDLINE="console=/dev/ttyLP2"
> -CONFIG_XIP_KERNEL=y
> -CONFIG_XIP_PHYS_ADDR=0x0f000080
> -# CONFIG_SUSPEND is not set
> -CONFIG_BINFMT_FLAT=y
> -CONFIG_BINFMT_ZFLAT=y
> -# CONFIG_UEVENT_HELPER is not set
> -# CONFIG_STANDALONE is not set
> -# CONFIG_PREVENT_FIRMWARE_BUILD is not set
> -# CONFIG_ALLOW_DEV_COREDUMP is not set
> -CONFIG_BLK_DEV_RAM=y
> -CONFIG_BLK_DEV_RAM_COUNT=4
> -# CONFIG_INPUT_MOUSEDEV is not set
> -# CONFIG_KEYBOARD_ATKBD is not set
> -# CONFIG_INPUT_MOUSE is not set
> -# CONFIG_SERIO is not set
> -CONFIG_SERIAL_FSL_LPUART=y
> -CONFIG_SERIAL_FSL_LPUART_CONSOLE=y
> -# CONFIG_HW_RANDOM is not set
> -CONFIG_MFD_SYSCON=y
> -# CONFIG_HID is not set
> -# CONFIG_USB_SUPPORT is not set
> -CONFIG_EXT4_FS=y
> -# CONFIG_MISC_FILESYSTEMS is not set
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> index 77704c6a70ba..cdc1b31fe573 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -2,7 +2,7 @@
>  menuconfig ARCH_MXC
>  	bool "Freescale i.MX family"
>  	depends on ((ARCH_MULTI_V4T || ARCH_MULTI_V5) && CPU_LITTLE_ENDIAN) || \
> -		ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
> +		ARCH_MULTI_V6_V7
>  	select CLKSRC_IMX_GPT
>  	select GENERIC_IRQ_CHIP
>  	select GPIOLIB
> @@ -174,7 +174,7 @@ config SOC_LS1021A
>
>  endif
>
> -if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
> +if ARCH_MULTI_V7
>
>  comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
>
> @@ -187,38 +187,23 @@ config SOC_IMX7D_CA7
>  	select HAVE_IMX_SRC
>  	select IMX_GPCV2
>
> -config SOC_IMX7D_CM4
> -	bool
> -	select ARMV7M_SYSTICK
> -
>  config SOC_IMX7D
>  	bool "i.MX7 Dual support"
> -	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
> -	select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
> -	select ARM_ERRATA_814220 if ARCH_MULTI_V7
> +	select SOC_IMX7D_CA7
> +	select ARM_ERRATA_814220
>  	help
>  	  This enables support for Freescale i.MX7 Dual processor.
>
>  config SOC_IMX7ULP
>  	bool "i.MX7ULP support"
>  	select CLKSRC_IMX_TPM
> -	select SOC_IMX7D_CA7 if ARCH_MULTI_V7
> -	select SOC_IMX7D_CM4 if ARM_SINGLE_ARMV7M
> +	select SOC_IMX7D_CA7
>  	help
>  	  This enables support for Freescale i.MX7 Ultra Low Power processor.
>
> -config SOC_IMXRT
> -	bool "i.MXRT support (DEPRECATED)"
> -	depends on ARM_SINGLE_ARMV7M
> -	select ARMV7M_SYSTICK if ARM_SINGLE_ARMV7M
> -	help
> -	  This enables support for Freescale i.MXRT Crossover processor.
> -
> -	  This platform is scheduled for removal in early 2027
> -
>  config SOC_VF610
>  	bool "Vybrid Family VF610 support"
> -	select ARM_GIC if ARCH_MULTI_V7
> +	select ARM_GIC
>
>  	help
>  	  This enables support for Freescale Vybrid VF610 processor.
> diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
> index fa0144f0882d..135079340428 100644
> --- a/arch/arm/mach-imx/Makefile
> +++ b/arch/arm/mach-imx/Makefile
> @@ -42,7 +42,6 @@ obj-$(CONFIG_SOC_IMX6SLL) += mach-imx6sl.o
>  obj-$(CONFIG_SOC_IMX6SX) += mach-imx6sx.o
>  obj-$(CONFIG_SOC_IMX6UL) += mach-imx6ul.o
>  obj-$(CONFIG_SOC_IMX7D_CA7) += mach-imx7d.o
> -obj-$(CONFIG_SOC_IMX7D_CM4) += mach-imx7d-cm4.o
>  obj-$(CONFIG_SOC_IMX7ULP) += mach-imx7ulp.o pm-imx7ulp.o
>
>  ifeq ($(CONFIG_SUSPEND),y)
> @@ -59,8 +58,6 @@ obj-$(CONFIG_SOC_IMX50) += mach-imx50.o
>  obj-$(CONFIG_SOC_IMX51) += mach-imx51.o
>  obj-$(CONFIG_SOC_IMX53) += mach-imx53.o
>
> -obj-$(CONFIG_SOC_IMXRT) += mach-imxrt.o
> -
>  obj-$(CONFIG_SOC_VF610) += mach-vf610.o
>
>  obj-$(CONFIG_SOC_LS1021A) += mach-ls1021a.o
> diff --git a/arch/arm/mach-imx/mach-imx7d-cm4.c b/arch/arm/mach-imx/mach-imx7d-cm4.c
> deleted file mode 100644
> index 0800b5891d2a..000000000000
> --- a/arch/arm/mach-imx/mach-imx7d-cm4.c
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * Copyright (c) 2018 Pengutronix, Oleksij Rempel <o.rempel@pengutronix.de>
> - */
> -
> -#include <linux/kernel.h>
> -#include <asm/v7m.h>
> -#include <asm/mach/arch.h>
> -
> -static const char * const imx7d_cm4_dt_compat[] __initconst = {
> -	"fsl,imx7d-cm4",
> -	NULL,
> -};
> -
> -DT_MACHINE_START(IMX7D, "Freescale i.MX7 Dual Cortex-M4 (Device Tree)")
> -	.dt_compat = imx7d_cm4_dt_compat,
> -	.restart = armv7m_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-imx/mach-imxrt.c b/arch/arm/mach-imx/mach-imxrt.c
> deleted file mode 100644
> index 2063a3059c84..000000000000
> --- a/arch/arm/mach-imx/mach-imxrt.c
> +++ /dev/null
> @@ -1,19 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -/*
> - * Copyright (C) 2019
> - * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com>
> - */
> -
> -#include <linux/kernel.h>
> -#include <asm/mach/arch.h>
> -#include <asm/v7m.h>
> -
> -static const char *const imxrt_compat[] __initconst = {
> -	"fsl,imxrt1050",
> -	NULL
> -};
> -
> -DT_MACHINE_START(IMXRTDT, "IMXRT (Device Tree Support)")
> -	.dt_compat = imxrt_compat,
> -	.restart = armv7m_restart,
> -MACHINE_END
> diff --git a/arch/arm/mach-imx/mach-vf610.c b/arch/arm/mach-imx/mach-vf610.c
> index 208ff640698d..f77565381097 100644
> --- a/arch/arm/mach-imx/mach-vf610.c
> +++ b/arch/arm/mach-imx/mach-vf610.c
> @@ -59,7 +59,6 @@ static const char * const vf610_dt_compat[] __initconst = {
>  	"fsl,vf510",
>  	"fsl,vf600",
>  	"fsl,vf610",
> -	"fsl,vf610m4",
>  	NULL,
>  };
>
> --
> 2.53.0
>
>

^ permalink raw reply	[flat|nested] 70+ messages in thread

* Re: [PATCH 08/13] ARM: imx: remove nommu support
  2026-09-09 20:21   ` Fabio Estevam
  2026-09-10 13:08     ` Jesse T
@ 2026-09-10 16:08     ` Giulio Benetti
  1 sibling, 0 replies; 70+ messages in thread
From: Giulio Benetti @ 2026-09-10 16:08 UTC (permalink / raw)
  To: Fabio Estevam, Arnd Bergmann, Jesse Taube
  Cc: Krzysztof Kozlowski, Alexandre Belloni, Linus Walleij,
	Russell King, Drew Fustini, Arnd Bergmann, Rob Herring,
	Conor Dooley, Liviu Dudau, Sudeep Holla, Lorenzo Pieralisi,
	Frank Li, Sascha Hauer, Pengutronix Kernel Team,
	Vladimir Zapolskiy, Stefan Agner, Maxime Coquelin,
	Alexandre Torgue, Aaro Koskinen, Andreas Kemnade, Kevin Hilman,
	Roger Quadros, Tony Lindgren, Nicolas Ferre, Claudiu Beznea,
	Andrew Lunn, Sebastian Hesselbarth, Gregory Clement,
	Robert Jarzmik, Kristoffer Ericson, Ethan Nelson-Moore,
	Geert Uytterhoeven, Alexander Sverdlin, Shawn Guo,
	Karl Mehltretter, David Hildenbrand (Arm),
	Nicolas Pitre, linux-doc, linux-kernel, linux-arm-kernel,
	devicetree, imx, linux-stm32, linux-omap, Krzysztof Kozlowski

Hi Fabio, Arnd and Jesse,

On 9/9/26 10:21 PM, Fabio Estevam wrote:
> On Tue, Sep 8, 2026 at 12:29 PM Arnd Bergmann <arnd@kernel.org> wrote:
>>
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> The i.MX platform has grown support for three separate product
>> lines using Cortex-M based microcontrollers over the years:
>>
>>   - i.MX RT1050, a high-end microcontroller
>>   - Vybrid vf610 suppors running Linux on either the Cortex-A5
>>     CPU or the Cortex-M4 MCU
>>   - i.MX7D similarly can run Linux on the Cortex-A7 or the
>>     Cortex-M4
>>
>> There are no known upstream users of any of those three, so
>> drop support and simplify the platform to assume that an MMU
>> is present.
>>
>> Cc: Frank Li <Frank.Li@nxp.com>
>> Cc: Sascha Hauer <s.hauer@pengutronix.de>
>> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
>> Cc: Fabio Estevam <festevam@gmail.com>
>> Cc: Stefan Agner <stefan@agner.ch>
>> Cc: Rob Herring <robh@kernel.org>
>> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
>> Cc: Conor Dooley <conor+dt@kernel.org>
>> Cc: Vladimir Zapolskiy <vz@mleia.com>
>> Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
>> Cc: devicetree@vger.kernel.org
>> Cc: imx@lists.linux.dev
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> ---
>>   arch/arm/boot/dts/nxp/imx/Makefile            |    2 -
>>   arch/arm/boot/dts/nxp/imx/imxrt1050-evk.dts   |   72 -
>>   arch/arm/boot/dts/nxp/imx/imxrt1050-pinfunc.h |  993 -----------
>>   arch/arm/boot/dts/nxp/imx/imxrt1050.dtsi      |  160 --
>>   arch/arm/boot/dts/nxp/imx/imxrt1170-pinfunc.h | 1561 -----------------
>>   arch/arm/boot/dts/nxp/vf/Makefile             |    2 -
>>   arch/arm/boot/dts/nxp/vf/vf610m4-colibri.dts  |   61 -
>>   arch/arm/boot/dts/nxp/vf/vf610m4-cosmic.dts   |   88 -
>>   arch/arm/boot/dts/nxp/vf/vf610m4.dtsi         |   61 -
>>   arch/arm/configs/imxrt_defconfig              |   35 -
>>   arch/arm/configs/vf610m4_defconfig            |   39 -
>>   arch/arm/mach-imx/Kconfig                     |   27 +-
>>   arch/arm/mach-imx/Makefile                    |    3 -
>>   arch/arm/mach-imx/mach-imx7d-cm4.c            |   18 -
>>   arch/arm/mach-imx/mach-imxrt.c                |   19 -
> 
> The imxrt1050-evk dts is used in U-Boot.
> 
> Adding Jesse and Giulio, who use this platform in U-Boot.

MMU-less architecture never had a complete support, I agree that it's
time to drop it so:
Acked-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

Best regards
Giulio Benetti

^ permalink raw reply	[flat|nested] 70+ messages in thread

end of thread, other threads:[~2026-09-10 16:11 UTC | newest]

Thread overview: 70+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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-08 15:27 ` [PATCH 02/13] ARM: remove footbridge 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-09  8:04   ` Thomas Zimmermann
2026-09-09 16:42   ` Bart Van Assche
2026-09-09 20:09     ` Arnd Bergmann
2026-09-08 15:27 ` [PATCH 04/13] ARM: remove legacy pxa board files 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:12   ` 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-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-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-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 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 17:36   ` Linus Walleij
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 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 17:39   ` Linus Walleij
2026-09-08 19:58   ` Sverdlin, Alexander
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 17:40   ` Linus Walleij
2026-09-08 18:23   ` Krzysztof Kozlowski
2026-09-08 20:02   ` Sverdlin, Alexander
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®