ARM: deprecated platform removal
Subsystems (56)
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]
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.
--- 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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/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
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/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
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
Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/memory.h deleted +0 -37
Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/mtd-xip.h deleted +0 -23
Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/neponset.h deleted +0 -31
Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/reset.h deleted +0 -18
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
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.
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]>Signed-off-by Arnd Bergmann <[email protected]>---
Re: [PATCH 01/13] ARM: remove sa1100 platform
In reply to Arnd BergmannQuoted 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]>Signed-off-by Arnd Bergmann <[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
Re: [PATCH 01/13] ARM: remove sa1100 platform
In reply to Arnd BergmannQuoted 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
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_WATCHDOGdrivers/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_SA1100help 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
Re: [PATCH 01/13] ARM: remove sa1100 platform
In reply to Arnd BergmannQuoted 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]>Signed-off-by Arnd Bergmann <[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.cDocumentation/arch/arm/index.rst +0
-3@@ -48,9 +48,6 @@ SoC-specific documents pxa/mfp - - sa1100/index - stm32/stm32f746-overview stm32/overview stm32/stm32h743-overviewDocumentation/arch/arm/sa1100/assabet.rst deleted +0
-301@@ -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@@ -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@@ -1,13 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0 - -==================== -Intel StrongARM 1100 -==================== - -.. toctree:: - :maxdepth: 1 - - assabet - cerf - lart - serial_uartDocumentation/arch/arm/sa1100/lart.rst deleted +0
-15@@ -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@@ -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@@ -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@@ -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 addressarch/arm/Kconfig.debug +2
-11@@ -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_PRINTKarch/arm/Makefile +0
-6@@ -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@@ -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_OFFSETarch/arm/boot/compressed/Makefile +0
-4@@ -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 endifarch/arm/boot/compressed/head-sa1100.S deleted +0
-45@@ -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@@ -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,valarch/arm/common/Kconfig +0
-7@@ -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 boolarch/arm/common/Makefile +0
-2@@ -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.oarch/arm/common/locomo.c deleted +0
-886@@ -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@@ -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@@ -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=yLines of this file are not shown. View the raw message.
arch/arm/configs/collie_defconfig deleted +0
-87Lines of this file are not shown. View the raw message.
arch/arm/configs/h3600_defconfig deleted +0
-63Lines of this file are not shown. View the raw message.
arch/arm/configs/jornada720_defconfig deleted +0
-95Lines of this file are not shown. View the raw message.
arch/arm/configs/neponset_defconfig deleted +0
-88Lines of this file are not shown. View the raw message.
arch/arm/include/asm/hardware/locomo.h deleted +0
-217Lines of this file are not shown. View the raw message.
arch/arm/include/asm/hardware/sa1111.h deleted +0
-442Lines of this file are not shown. View the raw message.
arch/arm/include/asm/hardware/ssp.h deleted +0
-25Lines of this file are not shown. View the raw message.
arch/arm/include/debug/sa1100.S deleted +0
-67Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/assabet.c deleted +0
-770Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/collie.c deleted +0
-447Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/generic.c deleted +0
-470Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/generic.h deleted +0
-58Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/SA-1100.h deleted +0
-1798Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/assabet.h deleted +0
-99Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/bitfield.h deleted +0
-113Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/collie.h deleted +0
-94Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/generic.h deleted +0
-1Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/h3xxx.h deleted +0
-81Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/hardware.h deleted +0
-56Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/irqs.h deleted +0
-101Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/jornada720.h deleted +0
-28Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/memory.h deleted +0
-37Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/mtd-xip.h deleted +0
-23Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/neponset.h deleted +0
-31Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/reset.h deleted +0
-18Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/uncompress.h deleted +0
-52Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/jornada720.c deleted +0
-380Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/jornada720_ssp.c deleted +0
-202Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/neponset.c deleted +0
-438Lines 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.
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
Re: [PATCH 01/13] ARM: remove sa1100 platform
In reply to Nicolas PitreQuoted 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.
Acked-by Nicolas Pitre <[email protected]>
Thanks,
Arnd
Re: [PATCH 01/13] ARM: remove sa1100 platform
In reply to Arnd BergmannQuoted 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]>Signed-off-by Arnd Bergmann <[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.cDocumentation/arch/arm/index.rst +0
-3@@ -48,9 +48,6 @@ SoC-specific documents pxa/mfp - - sa1100/index - stm32/stm32f746-overview stm32/overview stm32/stm32h743-overviewDocumentation/arch/arm/sa1100/assabet.rst deleted +0
-301@@ -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@@ -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@@ -1,13 +0,0 @@ -.. SPDX-License-Identifier: GPL-2.0 - -==================== -Intel StrongARM 1100 -==================== - -.. toctree:: - :maxdepth: 1 - - assabet - cerf - lart - serial_uartDocumentation/arch/arm/sa1100/lart.rst deleted +0
-15@@ -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@@ -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@@ -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@@ -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 addressarch/arm/Kconfig.debug +2
-11@@ -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_PRINTKarch/arm/Makefile +0
-6@@ -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@@ -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_OFFSETarch/arm/boot/compressed/Makefile +0
-4@@ -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 endifarch/arm/boot/compressed/head-sa1100.S deleted +0
-45@@ -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@@ -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,valarch/arm/common/Kconfig +0
-7@@ -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 boolarch/arm/common/Makefile +0
-2@@ -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.oarch/arm/common/locomo.c deleted +0
-886@@ -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@@ -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@@ -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=yLines of this file are not shown. View the raw message.
arch/arm/configs/collie_defconfig deleted +0
-87Lines of this file are not shown. View the raw message.
arch/arm/configs/h3600_defconfig deleted +0
-63Lines of this file are not shown. View the raw message.
arch/arm/configs/jornada720_defconfig deleted +0
-95Lines of this file are not shown. View the raw message.
arch/arm/configs/neponset_defconfig deleted +0
-88Lines of this file are not shown. View the raw message.
arch/arm/include/asm/hardware/locomo.h deleted +0
-217Lines of this file are not shown. View the raw message.
arch/arm/include/asm/hardware/sa1111.h deleted +0
-442Lines of this file are not shown. View the raw message.
arch/arm/include/asm/hardware/ssp.h deleted +0
-25Lines of this file are not shown. View the raw message.
arch/arm/include/debug/sa1100.S deleted +0
-67Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/assabet.c deleted +0
-770Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/collie.c deleted +0
-447Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/generic.c deleted +0
-470Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/generic.h deleted +0
-58Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/SA-1100.h deleted +0
-1798Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/assabet.h deleted +0
-99Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/bitfield.h deleted +0
-113Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/collie.h deleted +0
-94Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/generic.h deleted +0
-1Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/h3xxx.h deleted +0
-81Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/hardware.h deleted +0
-56Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/irqs.h deleted +0
-101Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/jornada720.h deleted +0
-28Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/memory.h deleted +0
-37Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/mtd-xip.h deleted +0
-23Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/neponset.h deleted +0
-31Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/reset.h deleted +0
-18Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/include/mach/uncompress.h deleted +0
-52Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/jornada720.c deleted +0
-380Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/jornada720_ssp.c deleted +0
-202Lines of this file are not shown. View the raw message.
arch/arm/mach-sa1100/neponset.c deleted +0
-438Lines 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.
PATCH 2/13 ARM: remove footbridge
In reply to Arnd BergmannFrom: 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.
--- 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
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.
[email protected]
AI reviewRe: [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@@ -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@@ -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
[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
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 fromarch/arm/kernel/atags_compat.cas 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..0000000000000arch/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 andARCH_NETWINDERconfigs here, what happens to the drivers in other subsystems that still depend on them?
Quoted 3 lines
For example,
drivers/watchdog/Kconfigstill 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/Kconfighas symbols like DS1620, NWBUTTON, and NWFLASH that depend onARCH_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[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()indrivers/char/nwflash.candserial21285_init()indrivers/tty/serial/21285.cboth 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
Re: [PATCH 02/13] ARM: remove footbridge
In reply to Arnd BergmannQuoted 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]>Signed-off-by Arnd Bergmann <[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
Ralph Siemsen
Acked-byRe: [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]>Signed-off-by Arnd Bergmann <[email protected]>
Quoted 5 lines
Acked-by Linus Walleij <[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.
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
PATCH 3/13 ARM: remove riscpc
In reply to Arnd BergmannFrom: 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.
--- 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
Lines of this file are not shown. View the raw message.
arch/arm/mach-rpc/include/mach/memory.h deleted +0 -32
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/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
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.
[email protected]
AI reviewRe: [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
boolQuoted 4 lines
MAINTAINERS +0
-0
[ ... ]
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_HQuoted 4 lines
arch/arm/Kconfig +0
-0
[ ... ]
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@@ -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
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=armv3mAdditionally, 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_32v3config 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[ ... ]
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 fromMAINTAINERShere, 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
Makefilestill 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:
riscpcARCH_RPCRISCPC 1
This is intentional.
Quoted 5 lines
And the CPU selection still evaluates it:
arch/arm/mm/Kconfig:config
CPU_SA110
selectCPU_32v3ifARCH_RPC
selectCPU_32v4if !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