Skip to contentSkip to conversation

ARM: deprecated platform removal

PATCH Superseded Arnd Bergmann 36 participants 106 messages Sep 8 – Sep 13 Page 1 of 4

Subsystems (56)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover ARM: deprecated platform removal

From: Arnd Bergmann <[email protected]>

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/[email protected]/
[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
Signature · 45 lines
2.53.0

Cc: Krzysztof Kozlowski <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Conor Dooley <[email protected]>
Cc: Russell King <[email protected]>
Cc: Liviu Dudau <[email protected]>
Cc: Sudeep Holla <[email protected]>
Cc: Lorenzo Pieralisi <[email protected]>
Cc: Frank Li <[email protected]>
Cc: Sascha Hauer <[email protected]>
Cc: Pengutronix Kernel Team <[email protected]>
Cc: Fabio Estevam <[email protected]>
Cc: Vladimir Zapolskiy <[email protected]>
Cc: Stefan Agner <[email protected]>
Cc: Maxime Coquelin <[email protected]>
Cc: Alexandre Torgue <[email protected]>
Cc: Aaro Koskinen <[email protected]>
Cc: Andreas Kemnade <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: Roger Quadros <[email protected]>
Cc: Tony Lindgren <[email protected]>
Cc: Nicolas Ferre <[email protected]>
Cc: Alexandre Belloni <[email protected]>
Cc: Claudiu Beznea <[email protected]>
Cc: Andrew Lunn <[email protected]>
Cc: Sebastian Hesselbarth <[email protected]>
Cc: Gregory Clement <[email protected]>
Cc: Robert Jarzmik <[email protected]>
Cc: Kristoffer Ericson <[email protected]>
Cc: Linus Walleij <[email protected]>
Cc: Ethan Nelson-Moore <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Cc: Alexander Sverdlin <[email protected]>
Cc: Shawn Guo <[email protected]>
Cc: Karl Mehltretter <[email protected]>
Cc: "David Hildenbrand (Arm)" <[email protected]>
Cc: Nicolas Pitre <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
#1 lore raw

PATCH 1/13 ARM: remove sa1100 platform

From: Arnd Bergmann <[email protected]>

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 <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Kristoffer Ericson <[email protected]>
Cc Guenter Roeck <[email protected]>
Cc Ethan Nelson-Moore <[email protected]>
---
 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
Documentation/arch/arm/index.rst +0 -3
index b15621093f7a..a292b8ac41ce 100644
@@ -48,9 +48,6 @@ SoC-specific documents
 
    pxa/mfp
 
-
-   sa1100/index
-
    stm32/stm32f746-overview
    stm32/overview
    stm32/stm32h743-overview
Documentation/arch/arm/sa1100/assabet.rst deleted +0 -301

301 lines not on this page · raw message

Documentation/arch/arm/sa1100/cerf.rst deleted +0 -35
deleted file mode 100644
index 7fa71b609bf9..000000000000
@@ -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>
-
[email protected]
Documentation/arch/arm/sa1100/index.rst deleted +0 -13
deleted file mode 100644
index c9aed43280ff..000000000000
@@ -1,13 +0,0 @@
-.. SPDX-License-Identifier: GPL-2.0
-
-====================
-Intel StrongARM 1100
-====================
-
-.. toctree::
-    :maxdepth: 1
-
-    assabet
-    cerf
-    lart
-    serial_uart
Documentation/arch/arm/sa1100/lart.rst deleted +0 -15
deleted file mode 100644
index 94c0568d1095..000000000000
@@ -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.
Documentation/arch/arm/sa1100/serial_uart.rst deleted +0 -51

51 lines not on this page · raw message

MAINTAINERS +0 -8
index 6215fcb07770..fd213c4bc257 100644
@@ -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 <[email protected]>
-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 <[email protected]>
 M:	Nick Hawkins <[email protected]>
arch/arm/Kconfig +5 -11
index ffbc7f386131..7f4c2973d630 100644
@@ -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
arch/arm/Kconfig.debug +2 -11
index 366f162e147d..ad0feced4369 100644
@@ -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
arch/arm/Makefile +0 -6
index 573813ef5e77..ea3da21202c8 100644
@@ -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.
arch/arm/boot/bootp/Makefile +0 -1
index f3443f7d7b02..a1a1f4bec783 100644
@@ -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
arch/arm/boot/compressed/Makefile +0 -4
index e3f550d62857..d8d81ba741a2 100644
@@ -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
arch/arm/boot/compressed/head-sa1100.S deleted +0 -45

45 lines not on this page · raw message

arch/arm/boot/compressed/head.S +0 -7
index 9f406e9c0ea6..845abffbc2d6 100644
@@ -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
arch/arm/common/Kconfig +0 -7
index d2fdb1796f48..d72dccf6f3c2 100644
@@ -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
 
arch/arm/common/Makefile +0 -2
index 9733381074e0..e1bcc250874f 100644
@@ -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
arch/arm/common/locomo.c deleted +0 -886

886 lines not on this page · raw message

arch/arm/common/sa1111.c deleted +0 -1413

1,413 lines not on this page · raw message

arch/arm/configs/assabet_defconfig deleted +0 -57

36 lines not on this page · raw message

arch/arm/configs/collie_defconfig deleted +0 -87

87 lines not on this page · raw message

arch/arm/configs/h3600_defconfig deleted +0 -63

63 lines not on this page · raw message

arch/arm/configs/jornada720_defconfig deleted +0 -95

95 lines not on this page · raw message

arch/arm/configs/neponset_defconfig deleted +0 -88

88 lines not on this page · raw message

arch/arm/include/asm/cputype.h +0 -4
index 0163c3e78a67..d58f6b5c4c35 100644

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/locomo.h deleted +0 -217

217 lines not on this page · raw message

arch/arm/include/asm/hardware/sa1111.h deleted +0 -442

442 lines not on this page · raw message

arch/arm/include/asm/hardware/ssp.h deleted +0 -25
deleted file mode 100644
index 72d176790308..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/debug/sa1100.S deleted +0 -67

67 lines not on this page · raw message

arch/arm/mach-sa1100/Kconfig deleted +0 -92

92 lines not on this page · raw message

arch/arm/mach-sa1100/Makefile deleted +0 -20
deleted file mode 100644
index b5816d675152..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/assabet.c deleted +0 -770

770 lines not on this page · raw message

arch/arm/mach-sa1100/clock.c deleted +0 -145

145 lines not on this page · raw message

arch/arm/mach-sa1100/collie.c deleted +0 -447

447 lines not on this page · raw message

arch/arm/mach-sa1100/generic.c deleted +0 -470

470 lines not on this page · raw message

arch/arm/mach-sa1100/generic.h deleted +0 -58

58 lines not on this page · raw message

arch/arm/mach-sa1100/h3600.c deleted +0 -134

134 lines not on this page · raw message

arch/arm/mach-sa1100/h3xxx.c deleted +0 -305

305 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/SA-1100.h deleted +0 -1798

1,798 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/assabet.h deleted +0 -99

99 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/bitfield.h deleted +0 -113

113 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/collie.h deleted +0 -94

94 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/generic.h deleted +0 -1
deleted file mode 100644
index 665542e0c9e2..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/h3xxx.h deleted +0 -81

81 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/hardware.h deleted +0 -56

56 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/irqs.h deleted +0 -101

101 lines not on this page · raw message

arch/arm/mach-sa1100/include/mach/jornada720.h deleted +0 -28
deleted file mode 100644
index bb22fcab8c6c..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/memory.h deleted +0 -37
deleted file mode 100644
index 3b19296f5062..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/mtd-xip.h deleted +0 -23
deleted file mode 100644
index 85e6a79112d2..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/neponset.h deleted +0 -31
deleted file mode 100644
index 18411cfdfe8e..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/reset.h deleted +0 -18
deleted file mode 100644
index a6723d45ae2a..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/uncompress.h deleted +0 -52

52 lines not on this page · raw message

arch/arm/mach-sa1100/jornada720.c deleted +0 -380

380 lines not on this page · raw message

arch/arm/mach-sa1100/jornada720_ssp.c deleted +0 -202

202 lines not on this page · raw message

arch/arm/mach-sa1100/neponset.c deleted +0 -438

438 lines not on this page · raw message

arch/arm/mach-sa1100/pm.c deleted +0 -128

128 lines not on this page · raw message

arch/arm/mach-sa1100/sleep.S deleted +0 -143

143 lines not on this page · raw message

arch/arm/mach-sa1100/ssp.c deleted +0 -240

240 lines not on this page · raw message

arch/arm/mm/init.c +0 -5
index 0cc1bf04686d..bf94f2718293 100644

Lines of this file are not shown. View the raw message.

arch/arm/mm/mmu.c +0 -8
index 23b87b5ef7f1..350f6dcc24cc 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/Kconfig +2 -2
index 05b9233b9418..55ffee3d75ce 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-sa1100.c +4 -12
index 26b2f4184ecc..dc98484dbe27 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/Kconfig +6 -6
index f7d0a0c2c0ef..0ab0dcc6d27d 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.53.0

Part of the diff is not shown here. View the raw message.

maintainer Acked-by on v1 1/13
#2 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

Quoted 9 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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.

Quoted 7 lines
Cc Russell King <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Kristoffer Ericson <[email protected]>
Cc Guenter Roeck <[email protected]>
Cc Ethan Nelson-Moore <[email protected]>

---

maintainer Acked-by on v1 1/13
#3 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

In reply to Arnd Bergmann
Quoted 9 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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.

Quoted 6 lines
Cc Russell King <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Kristoffer Ericson <[email protected]>
Cc Guenter Roeck <[email protected]>
Cc Ethan Nelson-Moore <[email protected]>

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

#4 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

In reply to Arnd Bergmann
Quoted 1 line · Arnd Bergmann
 62 files changed, 19 insertions(+), 10501 deletions(-)

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

Quoted 8 lines
drivers/rtc/rtc-sa1100.c +0 -6
@@ -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;

drivers/rtc/rtc-sa1100.c static int sa1100_rtc_probe(struct platform_device *pdev) · line 278

Quoted 10 lines
drivers/rtc/rtc-sa1100.c +4 -6
-	} 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.

Quoted 5 lines
drivers/watchdog/Kconfig +0 -0
@@ -614,16 +614,16 @@ config S3C2410_WATCHDOG
 	  be called s3c2410_wdt.
 
 config SA1100_WATCHDOG

drivers/watchdog/Kconfig config S3C2410_WATCHDOG · line 622

Quoted 10 lines
drivers/watchdog/Kconfig +4 -4
-	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

#5 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

Quoted 21 lines · Karl Mehltretter
Quoted 1 line · Arnd Bergmann
 62 files changed, 19 insertions(+), 10501 deletions(-)

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

Quoted 15 lines
drivers/rtc/rtc-sa1100.c +1 -12
@@ -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;
Quoted 8 lines

drivers/rtc/rtc-sa1100.c static int sa1100_rtc_probe(struct platform_device *pdev) · line 281

Quoted 3 lines
drivers/rtc/rtc-sa1100.c +3 -0
+	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.

Quoted 18 lines
Quoted 5 lines
drivers/watchdog/Kconfig +0 -0
@@ -614,16 +614,16 @@ config S3C2410_WATCHDOG
 	  be called s3c2410_wdt.
 
 config SA1100_WATCHDOG

drivers/watchdog/Kconfig config S3C2410_WATCHDOG · line 622

Quoted 10 lines
drivers/watchdog/Kconfig +4 -4
-	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.

Quoted 2 lines

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

Acked-by on v1 1/13
#6 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

In reply to Arnd Bergmann
Quoted 8 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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.

Quoted 11,188 lines
Cc Russell King <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Kristoffer Ericson <[email protected]>
Cc Guenter Roeck <[email protected]>
Cc Ethan Nelson-Moore <[email protected]>
---
 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
Documentation/arch/arm/index.rst +0 -3
index b15621093f7a..a292b8ac41ce 100644
@@ -48,9 +48,6 @@ SoC-specific documents
 
    pxa/mfp
 
-
-   sa1100/index
-
    stm32/stm32f746-overview
    stm32/overview
    stm32/stm32h743-overview
Documentation/arch/arm/sa1100/assabet.rst deleted +0 -301
deleted file mode 100644
index a761e128fb08..000000000000
@@ -1,301 +0,0 @@
-============================================
-The Intel Assabet (SA-1110 evaluation) board
-============================================
-
-Please see:
-http://developer.intel.com
-
-Also some notes from John G Dorsey <[email protected]>:
-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
[email protected]
-
-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.
Documentation/arch/arm/sa1100/cerf.rst deleted +0 -35
deleted file mode 100644
index 7fa71b609bf9..000000000000
@@ -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>
-
[email protected]
Documentation/arch/arm/sa1100/index.rst deleted +0 -13
deleted file mode 100644
index c9aed43280ff..000000000000
@@ -1,13 +0,0 @@
-.. SPDX-License-Identifier: GPL-2.0
-
-====================
-Intel StrongARM 1100
-====================
-
-.. toctree::
-    :maxdepth: 1
-
-    assabet
-    cerf
-    lart
-    serial_uart
Documentation/arch/arm/sa1100/lart.rst deleted +0 -15
deleted file mode 100644
index 94c0568d1095..000000000000
@@ -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.
Documentation/arch/arm/sa1100/serial_uart.rst deleted +0 -51
deleted file mode 100644
index ea983642b9be..000000000000
@@ -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 <[email protected]>
-  > To: Nicolas Pitre <[email protected]>
-  > Cc: Device List Maintainer <[email protected]>
-  > 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.
MAINTAINERS +0 -8
index 6215fcb07770..fd213c4bc257 100644
@@ -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 <[email protected]>
-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 <[email protected]>
 M:	Nick Hawkins <[email protected]>
arch/arm/Kconfig +5 -11
index ffbc7f386131..7f4c2973d630 100644
@@ -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
arch/arm/Kconfig.debug +2 -11
index 366f162e147d..ad0feced4369 100644
@@ -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
arch/arm/Makefile +0 -6
index 573813ef5e77..ea3da21202c8 100644
@@ -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.
arch/arm/boot/bootp/Makefile +0 -1
index f3443f7d7b02..a1a1f4bec783 100644
@@ -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
arch/arm/boot/compressed/Makefile +0 -4
index e3f550d62857..d8d81ba741a2 100644
@@ -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
arch/arm/boot/compressed/head-sa1100.S deleted +0 -45
deleted file mode 100644
index 23eae1a65064..000000000000
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* 
- * linux/arch/arm/boot/compressed/head-sa1100.S
- * 
- * Copyright (C) 1999 Nicolas Pitre <[email protected]>
- * 
- * 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:
arch/arm/boot/compressed/head.S +0 -7
index 9f406e9c0ea6..845abffbc2d6 100644
@@ -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
arch/arm/common/Kconfig +0 -7
index d2fdb1796f48..d72dccf6f3c2 100644
@@ -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
 
arch/arm/common/Makefile +0 -2
index 9733381074e0..e1bcc250874f 100644
@@ -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
arch/arm/common/locomo.c deleted +0 -886
deleted file mode 100644
index 55e360452828..000000000000
@@ -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 <[email protected]>");
arch/arm/common/sa1111.c deleted +0 -1413
deleted file mode 100644
index a0f854cf4748..000000000000
@@ -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");
arch/arm/configs/assabet_defconfig deleted +0 -57
deleted file mode 100644
index e4264fdac2e5..000000000000
@@ -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
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

arch/arm/configs/collie_defconfig deleted +0 -87
deleted file mode 100644
index 570a5f8bc57b..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/configs/h3600_defconfig deleted +0 -63
deleted file mode 100644
index 3e8da62d959d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/configs/jornada720_defconfig deleted +0 -95
deleted file mode 100644
index a96cfb81aba5..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/configs/neponset_defconfig deleted +0 -88
deleted file mode 100644
index 164643f1b6c0..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/cputype.h +0 -4
index 0163c3e78a67..d58f6b5c4c35 100644

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/locomo.h deleted +0 -217
deleted file mode 100644
index 3190e1e5067a..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/sa1111.h deleted +0 -442
deleted file mode 100644
index 90b6a832108d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/ssp.h deleted +0 -25
deleted file mode 100644
index 72d176790308..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/debug/sa1100.S deleted +0 -67
deleted file mode 100644
index 7968ea52df3d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/Kconfig deleted +0 -92
deleted file mode 100644
index d50721e39641..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/Makefile deleted +0 -20
deleted file mode 100644
index b5816d675152..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/assabet.c deleted +0 -770
deleted file mode 100644
index b001f0b6a3fa..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/clock.c deleted +0 -145
deleted file mode 100644
index eafeb38502af..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/collie.c deleted +0 -447
deleted file mode 100644
index d1931f51c900..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/generic.c deleted +0 -470
deleted file mode 100644
index a995625ab1a0..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/generic.h deleted +0 -58
deleted file mode 100644
index 3cfe3b647711..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/h3600.c deleted +0 -134
deleted file mode 100644
index 59e9251a138e..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/h3xxx.c deleted +0 -305
deleted file mode 100644
index 6f4c5d2be569..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/SA-1100.h deleted +0 -1798
deleted file mode 100644
index 6e6ff3e18f0f..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/assabet.h deleted +0 -99
deleted file mode 100644
index 641a961653af..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/bitfield.h deleted +0 -113
deleted file mode 100644
index f1f0e3387d9c..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/collie.h deleted +0 -94
deleted file mode 100644
index c95273c9567b..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/generic.h deleted +0 -1
deleted file mode 100644
index 665542e0c9e2..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/h3xxx.h deleted +0 -81
deleted file mode 100644
index 0ee2578e0006..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/hardware.h deleted +0 -56
deleted file mode 100644
index 6f2dbdc28663..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/irqs.h deleted +0 -101
deleted file mode 100644
index f4a41e665262..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/jornada720.h deleted +0 -28
deleted file mode 100644
index bb22fcab8c6c..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/memory.h deleted +0 -37
deleted file mode 100644
index 3b19296f5062..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/mtd-xip.h deleted +0 -23
deleted file mode 100644
index 85e6a79112d2..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/neponset.h deleted +0 -31
deleted file mode 100644
index 18411cfdfe8e..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/reset.h deleted +0 -18
deleted file mode 100644
index a6723d45ae2a..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/uncompress.h deleted +0 -52
deleted file mode 100644
index f5eaa90a4576..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/jornada720.c deleted +0 -380
deleted file mode 100644
index e259298d9465..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/jornada720_ssp.c deleted +0 -202
deleted file mode 100644
index d94810217095..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/neponset.c deleted +0 -438
deleted file mode 100644
index 9e8a3284a6cf..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/pm.c deleted +0 -128
deleted file mode 100644
index 9495fc109baa..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/sleep.S deleted +0 -143
deleted file mode 100644
index 85863741ef8b..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/ssp.c deleted +0 -240
deleted file mode 100644
index 613fd767afcf..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mm/init.c +0 -5
index 0cc1bf04686d..bf94f2718293 100644

Lines of this file are not shown. View the raw message.

arch/arm/mm/mmu.c +0 -8
index 23b87b5ef7f1..350f6dcc24cc 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/Kconfig +2 -2
index 05b9233b9418..55ffee3d75ce 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-sa1100.c +4 -12
index 26b2f4184ecc..dc98484dbe27 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/Kconfig +6 -6
index f7d0a0c2c0ef..0ab0dcc6d27d 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.53.0

Part of the diff is not shown here. View the raw message.

#7 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

Quoted 7 lines · On Tue, 8 Sep 2026 16:36:47 -0400 (EDT) Nicolas Pitre <[email protected]> wrote:
Quoted 5 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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

Quoted 8 lines
Quoted 3 lines

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

#8 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

In reply to Nicolas Pitre
Quoted 7 lines · Nicolas Pitre
Quoted 5 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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

Quoted 6 lines
Quoted 3 lines

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.

Quoted 3 lines

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

Thanks,

Arnd

maintainer Acked-by on v1 1/13
#9 lore raw

Re: [PATCH 01/13] ARM: remove sa1100 platform

In reply to Arnd Bergmann
Quoted 9 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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.

Quoted 6 lines
Cc Russell King <[email protected]>
Cc Linus Walleij <[email protected]>
Cc Kristoffer Ericson <[email protected]>
Cc Guenter Roeck <[email protected]>
Cc Ethan Nelson-Moore <[email protected]>
Quoted 11,180 lines
---
 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
Documentation/arch/arm/index.rst +0 -3
index b15621093f7a..a292b8ac41ce 100644
@@ -48,9 +48,6 @@ SoC-specific documents
 
    pxa/mfp
 
-
-   sa1100/index
-
    stm32/stm32f746-overview
    stm32/overview
    stm32/stm32h743-overview
Documentation/arch/arm/sa1100/assabet.rst deleted +0 -301
deleted file mode 100644
index a761e128fb08..000000000000
@@ -1,301 +0,0 @@
-============================================
-The Intel Assabet (SA-1110 evaluation) board
-============================================
-
-Please see:
-http://developer.intel.com
-
-Also some notes from John G Dorsey <[email protected]>:
-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
[email protected]
-
-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.
Documentation/arch/arm/sa1100/cerf.rst deleted +0 -35
deleted file mode 100644
index 7fa71b609bf9..000000000000
@@ -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>
-
[email protected]
Documentation/arch/arm/sa1100/index.rst deleted +0 -13
deleted file mode 100644
index c9aed43280ff..000000000000
@@ -1,13 +0,0 @@
-.. SPDX-License-Identifier: GPL-2.0
-
-====================
-Intel StrongARM 1100
-====================
-
-.. toctree::
-    :maxdepth: 1
-
-    assabet
-    cerf
-    lart
-    serial_uart
Documentation/arch/arm/sa1100/lart.rst deleted +0 -15
deleted file mode 100644
index 94c0568d1095..000000000000
@@ -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.
Documentation/arch/arm/sa1100/serial_uart.rst deleted +0 -51
deleted file mode 100644
index ea983642b9be..000000000000
@@ -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 <[email protected]>
-  > To: Nicolas Pitre <[email protected]>
-  > Cc: Device List Maintainer <[email protected]>
-  > 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.
MAINTAINERS +0 -8
index 6215fcb07770..fd213c4bc257 100644
@@ -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 <[email protected]>
-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 <[email protected]>
 M:	Nick Hawkins <[email protected]>
arch/arm/Kconfig +5 -11
index ffbc7f386131..7f4c2973d630 100644
@@ -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
arch/arm/Kconfig.debug +2 -11
index 366f162e147d..ad0feced4369 100644
@@ -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
arch/arm/Makefile +0 -6
index 573813ef5e77..ea3da21202c8 100644
@@ -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.
arch/arm/boot/bootp/Makefile +0 -1
index f3443f7d7b02..a1a1f4bec783 100644
@@ -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
arch/arm/boot/compressed/Makefile +0 -4
index e3f550d62857..d8d81ba741a2 100644
@@ -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
arch/arm/boot/compressed/head-sa1100.S deleted +0 -45
deleted file mode 100644
index 23eae1a65064..000000000000
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* 
- * linux/arch/arm/boot/compressed/head-sa1100.S
- * 
- * Copyright (C) 1999 Nicolas Pitre <[email protected]>
- * 
- * 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:
arch/arm/boot/compressed/head.S +0 -7
index 9f406e9c0ea6..845abffbc2d6 100644
@@ -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
arch/arm/common/Kconfig +0 -7
index d2fdb1796f48..d72dccf6f3c2 100644
@@ -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
 
arch/arm/common/Makefile +0 -2
index 9733381074e0..e1bcc250874f 100644
@@ -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
arch/arm/common/locomo.c deleted +0 -886
deleted file mode 100644
index 55e360452828..000000000000
@@ -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 <[email protected]>");
arch/arm/common/sa1111.c deleted +0 -1413
deleted file mode 100644
index a0f854cf4748..000000000000
@@ -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");
arch/arm/configs/assabet_defconfig deleted +0 -57
deleted file mode 100644
index e4264fdac2e5..000000000000
@@ -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
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

arch/arm/configs/collie_defconfig deleted +0 -87
deleted file mode 100644
index 570a5f8bc57b..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/configs/h3600_defconfig deleted +0 -63
deleted file mode 100644
index 3e8da62d959d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/configs/jornada720_defconfig deleted +0 -95
deleted file mode 100644
index a96cfb81aba5..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/configs/neponset_defconfig deleted +0 -88
deleted file mode 100644
index 164643f1b6c0..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/cputype.h +0 -4
index 0163c3e78a67..d58f6b5c4c35 100644

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/locomo.h deleted +0 -217
deleted file mode 100644
index 3190e1e5067a..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/sa1111.h deleted +0 -442
deleted file mode 100644
index 90b6a832108d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/asm/hardware/ssp.h deleted +0 -25
deleted file mode 100644
index 72d176790308..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/include/debug/sa1100.S deleted +0 -67
deleted file mode 100644
index 7968ea52df3d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/Kconfig deleted +0 -92
deleted file mode 100644
index d50721e39641..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/Makefile deleted +0 -20
deleted file mode 100644
index b5816d675152..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/assabet.c deleted +0 -770
deleted file mode 100644
index b001f0b6a3fa..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/clock.c deleted +0 -145
deleted file mode 100644
index eafeb38502af..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/collie.c deleted +0 -447
deleted file mode 100644
index d1931f51c900..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/generic.c deleted +0 -470
deleted file mode 100644
index a995625ab1a0..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/generic.h deleted +0 -58
deleted file mode 100644
index 3cfe3b647711..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/h3600.c deleted +0 -134
deleted file mode 100644
index 59e9251a138e..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/h3xxx.c deleted +0 -305
deleted file mode 100644
index 6f4c5d2be569..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/SA-1100.h deleted +0 -1798
deleted file mode 100644
index 6e6ff3e18f0f..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/assabet.h deleted +0 -99
deleted file mode 100644
index 641a961653af..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/bitfield.h deleted +0 -113
deleted file mode 100644
index f1f0e3387d9c..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/collie.h deleted +0 -94
deleted file mode 100644
index c95273c9567b..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/generic.h deleted +0 -1
deleted file mode 100644
index 665542e0c9e2..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/h3xxx.h deleted +0 -81
deleted file mode 100644
index 0ee2578e0006..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/hardware.h deleted +0 -56
deleted file mode 100644
index 6f2dbdc28663..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/irqs.h deleted +0 -101
deleted file mode 100644
index f4a41e665262..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/jornada720.h deleted +0 -28
deleted file mode 100644
index bb22fcab8c6c..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/memory.h deleted +0 -37
deleted file mode 100644
index 3b19296f5062..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/mtd-xip.h deleted +0 -23
deleted file mode 100644
index 85e6a79112d2..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/neponset.h deleted +0 -31
deleted file mode 100644
index 18411cfdfe8e..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/reset.h deleted +0 -18
deleted file mode 100644
index a6723d45ae2a..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/include/mach/uncompress.h deleted +0 -52
deleted file mode 100644
index f5eaa90a4576..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/jornada720.c deleted +0 -380
deleted file mode 100644
index e259298d9465..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/jornada720_ssp.c deleted +0 -202
deleted file mode 100644
index d94810217095..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/neponset.c deleted +0 -438
deleted file mode 100644
index 9e8a3284a6cf..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/pm.c deleted +0 -128
deleted file mode 100644
index 9495fc109baa..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/sleep.S deleted +0 -143
deleted file mode 100644
index 85863741ef8b..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-sa1100/ssp.c deleted +0 -240
deleted file mode 100644
index 613fd767afcf..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mm/init.c +0 -5
index 0cc1bf04686d..bf94f2718293 100644

Lines of this file are not shown. View the raw message.

arch/arm/mm/mmu.c +0 -8
index 23b87b5ef7f1..350f6dcc24cc 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/Kconfig +2 -2
index 05b9233b9418..55ffee3d75ce 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-sa1100.c +4 -12
index 26b2f4184ecc..dc98484dbe27 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/Kconfig +6 -6
index f7d0a0c2c0ef..0ab0dcc6d27d 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.53.0
Signature · 3 lines
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

Part of the diff is not shown here. View the raw message.

#10 lore raw

PATCH 2/13 ARM: remove footbridge

In reply to Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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 <[email protected]>
Cc Ralph Siemsen <[email protected]>
Cc Helge Deller <[email protected]>
---
 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
Documentation/arch/arm/index.rst +0 -1
index a292b8ac41ce..17d6a5bbfc26 100644
@@ -38,7 +38,6 @@ SoC-specific documents
    marvell
    microchip
 
-   netwinder
    nwfpe/index
 
    keystone/overview
Documentation/arch/arm/netwinder.rst deleted +0 -85

85 lines not on this page · raw message

MAINTAINERS +0 -8
index fd213c4bc257..4380d5660402 100644
@@ -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 <[email protected]>
-L:	[email protected] (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 <[email protected]>
 M:	Sascha Hauer <[email protected]>
arch/arm/Kconfig +6 -11
index 7f4c2973d630..c3d6b8abc815 100644
@@ -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
arch/arm/Kconfig.debug +4 -23
index ad0feced4369..f2a80955b7a0 100644
@@ -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
arch/arm/Makefile +0 -2
index ea3da21202c8..f5bc9ad7f6f5 100644
@@ -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))
 
arch/arm/boot/bootp/Makefile +0 -1
index a1a1f4bec783..12c61684b97f 100644
@@ -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
arch/arm/configs/footbridge_defconfig deleted +0 -114

114 lines not on this page · raw message

arch/arm/configs/netwinder_defconfig deleted +0 -88

88 lines not on this page · raw message

arch/arm/include/asm/hardware/dec21285.h deleted +0 -138

138 lines not on this page · raw message

arch/arm/include/asm/mach/pci.h +0 -14
index ea9bd08895b7..78f2318ed000 100644
@@ -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 */
arch/arm/include/debug/dc21285.S deleted +0 -41

41 lines not on this page · raw message

arch/arm/kernel/atags_parse.c +0 -18
index 4ec591bde3df..9865ec7f90d9 100644
@@ -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)
 {
arch/arm/kernel/bios32.c +0 -12
index ac0e890510da..6256b75f8285 100644
@@ -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);
-}
arch/arm/kernel/head.S +0 -10
index f22c50d4bd41..b12fe41e579b 100644
@@ -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
arch/arm/mach-footbridge/Kconfig deleted +0 -57

57 lines not on this page · raw message

arch/arm/mach-footbridge/Makefile deleted +0 -18
deleted file mode 100644
index 1553cc01b45c..000000000000
@@ -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)
-
arch/arm/mach-footbridge/common.c deleted +0 -280

280 lines not on this page · raw message

arch/arm/mach-footbridge/common.h deleted +0 -15
deleted file mode 100644
index e12587db59c4..000000000000
@@ -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);
arch/arm/mach-footbridge/dc21285-timer.c deleted +0 -136

136 lines not on this page · raw message

arch/arm/mach-footbridge/dc21285.c deleted +0 -360

360 lines not on this page · raw message

arch/arm/mach-footbridge/dma-isa.c deleted +0 -230

230 lines not on this page · raw message

arch/arm/mach-footbridge/ebsa285-pci.c deleted +0 -48

48 lines not on this page · raw message

arch/arm/mach-footbridge/ebsa285.c deleted +0 -124

124 lines not on this page · raw message

arch/arm/mach-footbridge/include/mach/hardware.h deleted +0 -90

90 lines not on this page · raw message

arch/arm/mach-footbridge/include/mach/irqs.h deleted +0 -97

97 lines not on this page · raw message

arch/arm/mach-footbridge/include/mach/isa-dma.h deleted +0 -18
deleted file mode 100644
index b10731a1f66a..000000000000
@@ -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 */
arch/arm/mach-footbridge/include/mach/memory.h deleted +0 -26
deleted file mode 100644
index 9516877667d7..000000000000
@@ -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
arch/arm/mach-footbridge/include/mach/uncompress.h deleted +0 -34
deleted file mode 100644
index 28b577e29db3..000000000000
@@ -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()
arch/arm/mach-footbridge/isa-irq.c deleted +0 -177

177 lines not on this page · raw message

arch/arm/mach-footbridge/isa-rtc.c deleted +0 -57

57 lines not on this page · raw message

arch/arm/mach-footbridge/isa-timer.c deleted +0 -36
deleted file mode 100644
index 723e3eae995d..000000000000
@@ -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);
-}
arch/arm/mach-footbridge/isa.c deleted +0 -94

94 lines not on this page · raw message

arch/arm/mach-footbridge/netwinder-hw.c deleted +0 -772

367 lines not on this page · raw message

arch/arm/mach-footbridge/netwinder-pci.c deleted +0 -62

62 lines not on this page · raw message

drivers/video/console/Kconfig +2 -4
index 9f81af3506da..d8e3d307f50f 100644

Lines of this file are not shown. View the raw message.

drivers/video/console/dummycon.c +0 -6
index 7d02470f19b9..48ebbc5bf6a8 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/cyber2000fb.c +0 -10
index 5c7349722125..aa15c7be4fa5 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.53.0

Part of the diff is not shown here. View the raw message.

#11 lore raw

Re: [PATCH 02/13] ARM: remove footbridge

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] Dangling Kconfig dependencies and orphaned drivers reference removed Footbridge/NetWinder…

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Dangling Kconfig dependencies and orphaned drivers reference removed Footbridge/NetWinder symbols.
- [Medium] Dead code blocks conditionally compiled for deleted architectures remain in core ARM files. --

commit 5927fe5f70523467f7f940a2a1678e08472c6f67
Author: Arnd Bergmann <[email protected]>

ARM: remove footbridge

This commit removes the deprecated Footbridge platform, including the StrongARM EBSA285 and NetWinder machines. It deletes the associated architecture-specific Kconfig entries, makefiles, and source files.

Quoted 11 lines
arch/arm/kernel/atags_parse.c +0 -3
index 4ec591bde3dfa..9865ec7f90d98 100644
@@ -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)
-{

[ ... ]

arch/arm/kernel/atags_parse.c static int __init parse_tag_mem32(const struct tag *tag) · line 89

Quoted 3 lines
arch/arm/kernel/atags_parse.c +0 -3
-__tagtable(ATAG_VIDEOTEXT, parse_tag_videotext);
-#endif
-

[Severity: Medium]
Since this patch removes the footbridge architecture, should similar arch-specific dead code be removed from arch/arm/kernel/atags_compat.c as well?

For example, build_tag_list() in that file still retains conditional blocks for the removed configurations:

#ifdef CONFIG_ARCH_NETWINDER
    if (params->u1.s.nr_pages != 0x02000 &&
...
#ifdef CONFIG_FOOTBRIDGE
    if (params->u1.s.mem_fclk_21285) {
...
#ifdef CONFIG_ARCH_EBSA285
    if (machine_is_ebsa285()) {
Quoted 6 lines
arch/arm/mach-footbridge/Kconfig deleted +0 -0
deleted file mode 100644
index 96a74d447028d..0000000000000
@@ -1,57 +0,0 @@

[ ... ]

Quoted 2 lines
arch/arm/mach-footbridge/Kconfig deleted +0 -2
-config ARCH_NETWINDER
-	bool "NetWinder"

[ ... ]

arch/arm/mach-footbridge/Kconfig line 50

Quoted 2 lines
arch/arm/mach-footbridge/Kconfig deleted +0 -2
-config FOOTBRIDGE
-	def_bool y

[Severity: Medium]
By removing the FOOTBRIDGE and ARCH_NETWINDER configs here, what happens to the drivers in other subsystems that still depend on them?

For example, drivers/watchdog/Kconfig still contains dependencies like:
config 21285_WATCHDOG
depends on FOOTBRIDGE

And drivers/char/Kconfig has symbols like DS1620, NWBUTTON, and NWFLASH that depend on ARCH_NETWINDER. Will these be left permanently unbuildable since their configurations are orphaned?

Additionally, 977_WATCHDOG depends on:

    (FOOTBRIDGE && ARCH_NETWINDER) || (ARM && COMPILE_TEST)

If someone builds with COMPILE_TEST, won't this driver try to build but fail due to missing headers?

arch/arm/include/asm/hardware/dec21285.h

Quoted 5 lines
arch/arm/include/asm/hardware/dec21285.h deleted +0 -0
deleted file mode 100644
index 894f2a635cbbd..0000000000000

[Severity: Medium]
Will the removal of this header cause fatal build errors for the orphaned drivers mentioned above?

For example, if compilation is attempted (such as with COMPILE_TEST), nwflash_init() in drivers/char/nwflash.c and serial21285_init() in drivers/tty/serial/21285.c both still include <asm/hardware/dec21285.h>.

Does this patch need to remove those orphaned drivers as well to prevent build breakages?

Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
#12 lore raw

Re: [PATCH 02/13] ARM: remove footbridge

Quoted 6 lines · On Tue, Sep 8, 2026, at 17:55, [email protected] wrote:
Quoted 5 lines

__tagtable(ATAG_MEM, parse_tag_mem32);

arch/arm/kernel/atags_parse.c +0 -3
-#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_VGA_CONSOLE)
-static int __init parse_tag_videotext(const struct tag *tag)
-{

[ ... ]

Quoted 8 lines

arch/arm/kernel/atags_parse.c static int __init parse_tag_mem32(const struct tag *tag) · line 89

Quoted 3 lines
arch/arm/kernel/atags_parse.c +0 -3
-__tagtable(ATAG_VIDEOTEXT, parse_tag_videotext);
-#endif
-

[Severity: Medium]
Since this patch removes the footbridge architecture, should similar arch-specific dead code be removed from arch/arm/kernel/atags_compat.c as well?

I have a separate patch to remove that file entirely and chose not to remove the lines here to avoid a merge conflict.

Quoted 16 lines
Quoted 5 lines

deleted file mode 100644
index 96a74d447028d..0000000000000

arch/arm/mach-footbridge/Kconfig deleted +0 -0
@@ -1,57 +0,0 @@

[ ... ]

Quoted 2 lines
arch/arm/mach-footbridge/Kconfig deleted +0 -2
-config ARCH_NETWINDER
-	bool "NetWinder"

[ ... ]

arch/arm/mach-footbridge/Kconfig line 50

Quoted 2 lines
arch/arm/mach-footbridge/Kconfig deleted +0 -2
-config FOOTBRIDGE
-	def_bool y

[Severity: Medium]
By removing the FOOTBRIDGE and ARCH_NETWINDER configs here, what happens to the drivers in other subsystems that still depend on them?

Quoted 3 lines

For example, drivers/watchdog/Kconfig still contains dependencies like:
config 21285_WATCHDOG
depends on FOOTBRIDGE

See the longer series with the patches to remove this.

Quoted 9 lines

And drivers/char/Kconfig has symbols like DS1620, NWBUTTON, and NWFLASH that depend on ARCH_NETWINDER. Will these be left permanently unbuildable since their configurations are orphaned?

Additionally, 977_WATCHDOG depends on:

    (FOOTBRIDGE && ARCH_NETWINDER) || (ARM && COMPILE_TEST)

If someone builds with COMPILE_TEST, won't this driver try to build but fail due to missing headers?

I don't see any headers causing problems in 977_WATCHDOG, but I'll do some more build testing on the current series before I post the next version.

I did randconfig tests on a slightly older version of the longer series, but not on intermediate parts, so it's possible that I missed something there.

Quoted 10 lines

arch/arm/include/asm/hardware/dec21285.h

Quoted 5 lines
arch/arm/include/asm/hardware/dec21285.h deleted +0 -0
deleted file mode 100644
index 894f2a635cbbd..0000000000000

[Severity: Medium]
Will the removal of this header cause fatal build errors for the orphaned drivers mentioned above?

Quoted 6 lines

For example, if compilation is attempted (such as with COMPILE_TEST), nwflash_init() in drivers/char/nwflash.c and serial21285_init() in drivers/tty/serial/21285.c both still include <asm/hardware/dec21285.h>.

Does this patch need to remove those orphaned drivers as well to prevent build breakages?

The nwflash/nwbutton and dc21285_serial drivers have a hard dependency on ARCH_NETWINDER, so those should be fine.

Arnd

maintainer Acked-by on v1 2/13
#13 lore raw

Re: [PATCH 02/13] ARM: remove footbridge

In reply to Arnd Bergmann
Quoted 14 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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.

Quoted 5 lines
Cc Russell King <[email protected]>
Cc Ralph Siemsen <[email protected]>
Cc Helge Deller <[email protected]>

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

Acked-by
#14 lore raw

Re: [PATCH 02/13] ARM: remove footbridge

Quoted 22 lines · Linus Walleij
Quoted 14 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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.

Quoted 5 lines
Cc Russell King <[email protected]>
Cc Ralph Siemsen <[email protected]>
Cc Helge Deller <[email protected]>
Quoted 5 lines

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.

Regards,
-Ralph

#15 lore raw

PATCH 3/13 ARM: remove riscpc

In reply to Arnd Bergmann

From: Arnd Bergmann <[email protected]>

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 <[email protected]>
Cc Ian Molton <[email protected]>
Cc Jens Axboe <[email protected]>
Cc Helge Deller <[email protected]>
Cc Thomas Zimmermann <[email protected]>
Cc Karl Mehltretter <[email protected]>
Cc "Paul E. McKenney" <[email protected]>
---
 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
MAINTAINERS +0 -20
index 4380d5660402..6e8fe7640064 100644
@@ -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 <[email protected]>
-S:	Maintained
-F:	arch/arm/include/asm/floppy.h
-F:	arch/arm/mach-rpc/floppydma.S
-
 ARM PMU PROFILING AND DEBUGGING
 M:	Will Deacon <[email protected]>
 M:	Mark Rutland <[email protected]>
@@ -3494,20 +3488,6 @@ F:	include/linux/soc/renesas/
 N:	rcar
 K:	\brenesas,
 
-ARM/RISCPC ARCHITECTURE
-M:	Russell King <[email protected]>
-L:	[email protected] (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 <[email protected]>
 L:	[email protected] (moderated for non-subscribers)
arch/arm/Kconfig +7 -26
index c3d6b8abc815..5770deca136d 100644
@@ -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
arch/arm/Kconfig.debug +2 -6
index f2a80955b7a0..56c090840c5a 100644
@@ -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
arch/arm/boot/bootp/Makefile +0 -2
index 12c61684b97f..1e47bf10069d 100644
@@ -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
arch/arm/boot/compressed/Makefile +0 -4
index d8d81ba741a2..32def10f5e03 100644
@@ -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
arch/arm/boot/compressed/font.c deleted +0 -2
deleted file mode 100644
index 46a677649db4..000000000000
@@ -1,2 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-#include "../../../../lib/fonts/font_acorn_8x8.c"
arch/arm/boot/compressed/head.S +0 -8
index 845abffbc2d6..af579905b630 100644
@@ -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.
arch/arm/boot/compressed/ll_char_wr.S deleted +0 -131

131 lines not on this page · raw message

arch/arm/configs/rpc_defconfig deleted +0 -127

127 lines not on this page · raw message

arch/arm/include/asm/ecard.h deleted +0 -219

219 lines not on this page · raw message

arch/arm/include/asm/hardware/ioc.h deleted +0 -69

69 lines not on this page · raw message

arch/arm/include/asm/hardware/iomd.h deleted +0 -182

182 lines not on this page · raw message

arch/arm/include/asm/hardware/memc.h deleted +0 -23
deleted file mode 100644
index 1d4ebe0a9678..000000000000
@@ -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
arch/arm/include/asm/io.h +1 -4
index e6bd9e79737c..c3661af2ca2a 100644
@@ -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
arch/arm/include/asm/memory.h +0 -3
index 7c2fa7dcec6d..e10363ebdd1f 100644
@@ -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>
 
 /*
arch/arm/kernel/head-common.S +0 -13
index 42cae73fcc19..3cbbcdb63f7d 100644
@@ -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)
arch/arm/kernel/head.S +0 -12
index b12fe41e579b..2ffaea2c4c9b 100644
@@ -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
arch/arm/lib/delay-loop.S +0 -4
index 33b08ca1c242..56f9eea56268 100644
@@ -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
arch/arm/mach-rpc/Kconfig deleted +0 -24
deleted file mode 100644
index 60b3823b690c..000000000000
@@ -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.
arch/arm/mach-rpc/Makefile deleted +0 -9
deleted file mode 100644
index 90a645a18444..000000000000
@@ -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
arch/arm/mach-rpc/dma.c deleted +0 -393

393 lines not on this page · raw message

arch/arm/mach-rpc/ecard-loader.S deleted +0 -40
deleted file mode 100644
index eb8ac0412da6..000000000000
@@ -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}
-
arch/arm/mach-rpc/ecard.c deleted +0 -1146

1,146 lines not on this page · raw message

arch/arm/mach-rpc/ecard.h deleted +0 -66

66 lines not on this page · raw message

arch/arm/mach-rpc/fiq.S deleted +0 -18
deleted file mode 100644
index 087bdf4bc093..000000000000
@@ -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:
arch/arm/mach-rpc/floppydma.S deleted +0 -29
deleted file mode 100644
index 6698b83050dc..000000000000
@@ -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:
arch/arm/mach-rpc/include/mach/acornfb.h deleted +0 -137

137 lines not on this page · raw message

arch/arm/mach-rpc/include/mach/hardware.h deleted +0 -73

73 lines not on this page · raw message

arch/arm/mach-rpc/include/mach/io.h deleted +0 -28
deleted file mode 100644
index 8a8f28406691..000000000000
@@ -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
arch/arm/mach-rpc/include/mach/irqs.h deleted +0 -42

13 lines not on this page · raw message

arch/arm/mach-rpc/include/mach/isa-dma.h deleted +0 -26
deleted file mode 100644
index d9c3af1ef718..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-rpc/include/mach/memory.h deleted +0 -32
deleted file mode 100644
index a586eb31b18d..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-rpc/include/mach/uncompress.h deleted +0 -181

181 lines not on this page · raw message

arch/arm/mach-rpc/io-acorn.S deleted +0 -28
deleted file mode 100644
index aa9bf0d771c0..000000000000

Lines of this file are not shown. View the raw message.

arch/arm/mach-rpc/irq.c deleted +0 -226

226 lines not on this page · raw message

arch/arm/mach-rpc/riscpc.c deleted +0 -225

225 lines not on this page · raw message

arch/arm/mach-rpc/time.c deleted +0 -97

97 lines not on this page · raw message

arch/arm/mm/mmu.c +1 -1
index 350f6dcc24cc..07c2fda4d422 100644

Lines of this file are not shown. View the raw message.

block/partitions/Kconfig +0 -7
index ce17e41451af..94e7df547e7a 100644

Lines of this file are not shown. View the raw message.

drivers/tty/vt/keyboard.c +1 -1
index c41d850b29c6..9770c83aea74 100644

Lines of this file are not shown. View the raw message.

lib/fonts/font_acorn_8x8.c +0 -4
index 4ff52c79f8c4..ec2b1e463ab9 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.53.0

Part of the diff is not shown here. View the raw message.

#16 lore raw

Re: [PATCH 03/13] ARM: remove riscpc

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Incomplete removal of the ARCH_RPC platform and ARCH_ACORN config dependency, leaving orphaned…

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] Incomplete removal of the ARCH_RPC platform and ARCH_ACORN config dependency, leaving orphaned device drivers, Makefile/Kconfig references, and dead code. --

commit 90a4954ac0a5a6d8d3608046095747cf4673b8dd
Author: Arnd Bergmann <[email protected]>

ARM: remove riscpc

The Acorn Risc PC platform and its associated drivers, configurations, and board files are being removed as the required gcc-8 compiler and -march=armv3 option are no longer supported.

Quoted 3 lines

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.

[Severity: Low]
Since this compiler option is the explicitly stated reason for removal in the commit message, should we also delete the compiler flag from the tree?

arch/arm/Makefile:

    arch-$(CONFIG_CPU_32v3)         :=-march=armv3m

Additionally, the config symbol for this architecture version is now dead code because its only selector (ARCH_RPC) was removed:

arch/arm/mm/Kconfig:config CPU_32v3

    config CPU_32v3
        bool
Quoted 4 lines
MAINTAINERS +0 -0
index 81872f61b4317..fdd75b73bf293 100644

[ ... ]

MAINTAINERS F: Documentation/devicetree/bindings/display/arm,malidp.yaml · line 2358

Quoted 6 lines
MAINTAINERS +0 -6
-ARM MFM AND FLOPPY DRIVERS
-M:	Ian Molton <[email protected]>
-S:	Maintained
-F:	arch/arm/include/asm/floppy.h
-F:	arch/arm/mach-rpc/floppydma.S
-

[Severity: Low]
Does this leave the floppy header as dead code in the tree? It is removed from MAINTAINERS here, but the file itself was left in the tree:

arch/arm/include/asm/floppy.h:

    #ifndef __ASM_ARM_FLOPPY_H
    #define __ASM_ARM_FLOPPY_H
Quoted 4 lines
arch/arm/Kconfig +0 -0
index c3d6b8abc815f..5770deca136d3 100644

[ ... ]

arch/arm/Kconfig source "arch/arm/mach-qcom/Kconfig" · line 418

Quoted 7 lines
arch/arm/Kconfig +0 -2
@@ -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"

[Severity: Low]
Are there dangling references to the removed CONFIG_ARCH_RPC?

The Makefile still references it:

arch/arm/Makefile:

    machine-$(CONFIG_ARCH_RPC)              += rpc

The machine type registry still contains it:

arch/arm/tools/mach-types:
riscpc ARCH_RPC RISCPC 1

And the CPU selection still evaluates it:

arch/arm/mm/Kconfig:config CPU_SA110
select CPU_32v3 if ARCH_RPC
select CPU_32v4 if !ARCH_RPC

[ ... ]

arch/arm/Kconfig config ARCH_MPS2 · line 495

Quoted 7 lines
arch/arm/Kconfig +0 -3
@@ -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
-

[Severity: Low]
Does removing ARCH_ACORN leave orphaned device drivers in the tree?

All Acorn SCSI drivers depend on this removed config, leaving the entire directory as dead code:

drivers/scsi/arm/Kconfig:config SCSI_ACORN

    depends on ARCH_ACORN && SCSI

While these removed configs make the dependent drivers unselectable and thus don't break the build or introduce runtime issues, it leaves a significant amount of dead code. I have verified that this dead code is not removed in subsequent patches in the series.

Quoted 6 lines
arch/arm/include/asm/ecard.h deleted +0 -0
deleted file mode 100644
index 7cbe001bf9ccc..0000000000000
@@ -1,219 +0,0 @@

[ ... ]

arch/arm/include/asm/ecard.h line 17

Quoted 2 lines
arch/arm/include/asm/ecard.h deleted +0 -2
-#ifndef __ASM_ECARD_H
-#define __ASM_ECARD_H

[Severity: Low]
Does this leave behind unselectable drivers that still include this deleted header?

One of the remaining Risc PC drivers left in the tree still tries to include it:

drivers/ata/pata_icside.c:

    #include <asm/ecard.h>
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=3
#17 lore raw

Re: [PATCH 03/13] ARM: remove riscpc

Quoted 14 lines · On Tue, Sep 8, 2026, at 17:52, [email protected] wrote:

The Acorn Risc PC platform and its associated drivers, configurations, and board files are being removed as the required gcc-8 compiler and -march=armv3 option are no longer supported.

Quoted 3 lines

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.

[Severity: Low]
Since this compiler option is the explicitly stated reason for removal in the commit message, should we also delete the compiler flag from the tree?

arch/arm/Makefile:

Quoted 8 lines
    arch-$(CONFIG_CPU_32v3)         :=-march=armv3m

Additionally, the config symbol for this architecture version is now dead code because its only selector (ARCH_RPC) was removed:

arch/arm/mm/Kconfig:config CPU_32v3

    config CPU_32v3
        bool

I decided to remove these two as part of the later StrongARM removal patch that depends on this one.

Quoted 16 lines
Quoted 4 lines
MAINTAINERS +0 -0
index 81872f61b4317..fdd75b73bf293 100644

[ ... ]

MAINTAINERS F: Documentation/devicetree/bindings/display/arm,malidp.yaml · line 2358

Quoted 6 lines
MAINTAINERS +0 -6
-ARM MFM AND FLOPPY DRIVERS
-M:	Ian Molton <[email protected]>
-S:	Maintained
-F:	arch/arm/include/asm/floppy.h
-F:	arch/arm/mach-rpc/floppydma.S
-

[Severity: Low]
Does this leave the floppy header as dead code in the tree? It is removed from MAINTAINERS here, but the file itself was left in the tree:

Quoted 3 lines

arch/arm/include/asm/floppy.h:

    #ifndef __ASM_ARM_FLOPPY_H
    #define __ASM_ARM_FLOPPY_H

This is removed along with ISA bus support later, which also drops ARCH_MAY_HAVE_PC_FDC, ISA_DMA_API and GENERIC_ISA_DMA.

I could have split up the MAINTAINERS file change, but it seemed better to do it in one place. Maybe the other patch would have been better, but then I'd have another dangling reference to mach-rpc here.

Quoted 4 lines

The Makefile still references it:

arch/arm/Makefile:

    machine-$(CONFIG_ARCH_RPC)              += rpc

Fixed now, this ended up in the StrongARM patch by accident.

Quoted 4 lines

The machine type registry still contains it:

arch/arm/tools/mach-types:
riscpc ARCH_RPC RISCPC 1

This is intentional.

Quoted 5 lines

And the CPU selection still evaluates it:

arch/arm/mm/Kconfig:config CPU_SA110
select CPU_32v3 if ARCH_RPC
select CPU_32v4 if !ARCH_RPC

Again, this is part of the StrongARM removal. I had considered removing these two lines first, but then I'd have to split up the CPU_32v3 removal out from that.

Arnd