Merge tag 'arm-multiplatform-5.19-2' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Jun 2022 22:23:54 +0000 (15:23 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 2 Jun 2022 22:23:54 +0000 (15:23 -0700)
Pull more ARM multiplatform updates from Arnd Bergmann:
 "The second part of the multiplatform changes now converts the
  Intel/Marvell PXA platform along with the rest. The patches went
  through several rebases before the merge window as bugs were found, so
  they remained separate.

  This has to touch a lot of drivers, in particular the touchscreen,
  pcmcia, sound and clk bits, to detach the driver files from the
  platform and board specific header files"

* tag 'arm-multiplatform-5.19-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (48 commits)
  ARM: pxa/mmp: remove traces of plat-pxa
  ARM: pxa: convert to multiplatform
  ARM: pxa/sa1100: move I/O space to PCI_IOBASE
  ARM: pxa: remove support for MTD_XIP
  ARM: pxa: move mach/*.h to mach-pxa/
  ARM: PXA: fix multi-cpu build of xsc3
  ARM: pxa: move plat-pxa to drivers/soc/
  ARM: mmp: rename pxa_register_device
  ARM: mmp: remove tavorevb board support
  ARM: pxa: remove unused mach/bitfield.h
  ARM: pxa: move clk register definitions to driver
  ARM: pxa: move smemc register access from clk to platform
  cpufreq: pxa3: move clk register access to clk driver
  ARM: pxa: remove get_clk_frequency_khz()
  ARM: pxa: pcmcia: move smemc configuration back to arch
  ASoC: pxa: i2s: use normal MMIO accessors
  ASoC: pxa: ac97: use normal MMIO accessors
  ASoC: pxa: use pdev resource for FIFO regs
  Input: wm97xx - get rid of irq_enable method in wm97xx_mach_ops
  Input: wm97xx - switch to using threaded IRQ
  ...

286 files changed:
Documentation/arm/marvell.rst
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/common/locomo.c
arch/arm/common/sa1111.c
arch/arm/configs/am200epdkit_defconfig
arch/arm/configs/cm_x300_defconfig
arch/arm/configs/colibri_pxa270_defconfig
arch/arm/configs/colibri_pxa300_defconfig
arch/arm/configs/corgi_defconfig
arch/arm/configs/eseries_pxa_defconfig
arch/arm/configs/ezx_defconfig
arch/arm/configs/h5000_defconfig
arch/arm/configs/lpd270_defconfig
arch/arm/configs/lubbock_defconfig
arch/arm/configs/magician_defconfig
arch/arm/configs/mainstone_defconfig
arch/arm/configs/palmz72_defconfig
arch/arm/configs/pcm027_defconfig
arch/arm/configs/pxa255-idp_defconfig
arch/arm/configs/pxa3xx_defconfig
arch/arm/configs/pxa_defconfig
arch/arm/configs/spitz_defconfig
arch/arm/configs/trizeps4_defconfig
arch/arm/configs/viper_defconfig
arch/arm/configs/xcep_defconfig
arch/arm/configs/zeus_defconfig
arch/arm/include/asm/hardware/sa1111.h
arch/arm/include/asm/io.h
arch/arm/mach-mmp/Kconfig
arch/arm/mach-mmp/Makefile
arch/arm/mach-mmp/devices.c
arch/arm/mach-mmp/devices.h
arch/arm/mach-mmp/mfp.h
arch/arm/mach-mmp/mmp2.h
arch/arm/mach-mmp/pxa168.h
arch/arm/mach-mmp/pxa910.h
arch/arm/mach-mmp/tavorevb.c [deleted file]
arch/arm/mach-mmp/ttc_dkb.c
arch/arm/mach-pxa/Kconfig
arch/arm/mach-pxa/Makefile
arch/arm/mach-pxa/Makefile.boot [deleted file]
arch/arm/mach-pxa/addr-map.h [new file with mode: 0644]
arch/arm/mach-pxa/am300epd.c
arch/arm/mach-pxa/balloon3-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/balloon3.c
arch/arm/mach-pxa/balloon3.h [new file with mode: 0644]
arch/arm/mach-pxa/cm-x300.c
arch/arm/mach-pxa/colibri-evalboard.c
arch/arm/mach-pxa/colibri-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/colibri-pxa270-income.c
arch/arm/mach-pxa/colibri-pxa270.c
arch/arm/mach-pxa/colibri-pxa300.c
arch/arm/mach-pxa/colibri-pxa320.c
arch/arm/mach-pxa/colibri-pxa3xx.c
arch/arm/mach-pxa/colibri.h
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/corgi.h [new file with mode: 0644]
arch/arm/mach-pxa/corgi_pm.c
arch/arm/mach-pxa/csb726.c
arch/arm/mach-pxa/csb726.h
arch/arm/mach-pxa/devices.c
arch/arm/mach-pxa/e740-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/eseries-gpio.h [new file with mode: 0644]
arch/arm/mach-pxa/eseries.c
arch/arm/mach-pxa/ezx.c
arch/arm/mach-pxa/generic.c
arch/arm/mach-pxa/generic.h
arch/arm/mach-pxa/gumstix.c
arch/arm/mach-pxa/gumstix.h
arch/arm/mach-pxa/h5000.c
arch/arm/mach-pxa/hx4700-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/hx4700.c
arch/arm/mach-pxa/hx4700.h [new file with mode: 0644]
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/idp.h
arch/arm/mach-pxa/include/mach/addr-map.h [deleted file]
arch/arm/mach-pxa/include/mach/audio.h [deleted file]
arch/arm/mach-pxa/include/mach/balloon3.h [deleted file]
arch/arm/mach-pxa/include/mach/bitfield.h [deleted file]
arch/arm/mach-pxa/include/mach/corgi.h [deleted file]
arch/arm/mach-pxa/include/mach/dma.h [deleted file]
arch/arm/mach-pxa/include/mach/eseries-gpio.h [deleted file]
arch/arm/mach-pxa/include/mach/generic.h [deleted file]
arch/arm/mach-pxa/include/mach/hardware.h [deleted file]
arch/arm/mach-pxa/include/mach/hx4700.h [deleted file]
arch/arm/mach-pxa/include/mach/irqs.h [deleted file]
arch/arm/mach-pxa/include/mach/lubbock.h [deleted file]
arch/arm/mach-pxa/include/mach/magician.h [deleted file]
arch/arm/mach-pxa/include/mach/mainstone.h [deleted file]
arch/arm/mach-pxa/include/mach/mfp.h [deleted file]
arch/arm/mach-pxa/include/mach/mtd-xip.h [deleted file]
arch/arm/mach-pxa/include/mach/palmld.h [deleted file]
arch/arm/mach-pxa/include/mach/palmtc.h [deleted file]
arch/arm/mach-pxa/include/mach/palmtx.h [deleted file]
arch/arm/mach-pxa/include/mach/poodle.h [deleted file]
arch/arm/mach-pxa/include/mach/pxa2xx-regs.h [deleted file]
arch/arm/mach-pxa/include/mach/pxa3xx-regs.h [deleted file]
arch/arm/mach-pxa/include/mach/regs-ac97.h [deleted file]
arch/arm/mach-pxa/include/mach/regs-lcd.h [deleted file]
arch/arm/mach-pxa/include/mach/regs-ost.h [deleted file]
arch/arm/mach-pxa/include/mach/regs-uart.h [deleted file]
arch/arm/mach-pxa/include/mach/reset.h [deleted file]
arch/arm/mach-pxa/include/mach/smemc.h [deleted file]
arch/arm/mach-pxa/include/mach/spitz.h [deleted file]
arch/arm/mach-pxa/include/mach/tosa.h [deleted file]
arch/arm/mach-pxa/include/mach/trizeps4.h [deleted file]
arch/arm/mach-pxa/include/mach/uncompress.h [deleted file]
arch/arm/mach-pxa/include/mach/vpac270.h [deleted file]
arch/arm/mach-pxa/include/mach/z2.h [deleted file]
arch/arm/mach-pxa/irq.c
arch/arm/mach-pxa/irqs.h [new file with mode: 0644]
arch/arm/mach-pxa/littleton.c
arch/arm/mach-pxa/lpd270.c
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.h [new file with mode: 0644]
arch/arm/mach-pxa/magician.c
arch/arm/mach-pxa/magician.h [new file with mode: 0644]
arch/arm/mach-pxa/mainstone.c
arch/arm/mach-pxa/mainstone.h [new file with mode: 0644]
arch/arm/mach-pxa/mfp-pxa2xx.c
arch/arm/mach-pxa/mfp-pxa2xx.h
arch/arm/mach-pxa/mfp-pxa3xx.c
arch/arm/mach-pxa/mfp-pxa3xx.h
arch/arm/mach-pxa/mfp.h [new file with mode: 0644]
arch/arm/mach-pxa/mioa701.c
arch/arm/mach-pxa/mxm8x10.c
arch/arm/mach-pxa/palm27x.c
arch/arm/mach-pxa/palmld-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/palmld.c
arch/arm/mach-pxa/palmld.h [new file with mode: 0644]
arch/arm/mach-pxa/palmt5.c
arch/arm/mach-pxa/palmt5.h
arch/arm/mach-pxa/palmtc-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/palmtc.c
arch/arm/mach-pxa/palmtc.h [new file with mode: 0644]
arch/arm/mach-pxa/palmte2.c
arch/arm/mach-pxa/palmtreo.c
arch/arm/mach-pxa/palmtx-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/palmtx.c
arch/arm/mach-pxa/palmtx.h [new file with mode: 0644]
arch/arm/mach-pxa/palmz72.c
arch/arm/mach-pxa/pcm027.h
arch/arm/mach-pxa/pcm990-baseboard.c
arch/arm/mach-pxa/pcm990_baseboard.h
arch/arm/mach-pxa/poodle.c
arch/arm/mach-pxa/poodle.h [new file with mode: 0644]
arch/arm/mach-pxa/pxa-dt.c
arch/arm/mach-pxa/pxa-regs.h [new file with mode: 0644]
arch/arm/mach-pxa/pxa25x.c
arch/arm/mach-pxa/pxa25x.h
arch/arm/mach-pxa/pxa27x-udc.h
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-pxa/pxa27x.h
arch/arm/mach-pxa/pxa2xx-regs.h [new file with mode: 0644]
arch/arm/mach-pxa/pxa2xx.c
arch/arm/mach-pxa/pxa300.c
arch/arm/mach-pxa/pxa320.c
arch/arm/mach-pxa/pxa3xx-regs.h [new file with mode: 0644]
arch/arm/mach-pxa/pxa3xx-ulpi.c
arch/arm/mach-pxa/pxa3xx.c
arch/arm/mach-pxa/pxa3xx.h
arch/arm/mach-pxa/pxa930.c
arch/arm/mach-pxa/regs-ost.h [new file with mode: 0644]
arch/arm/mach-pxa/regs-rtc.h
arch/arm/mach-pxa/regs-u2d.h
arch/arm/mach-pxa/regs-uart.h [new file with mode: 0644]
arch/arm/mach-pxa/reset.c
arch/arm/mach-pxa/reset.h [new file with mode: 0644]
arch/arm/mach-pxa/sharpsl_pm.c
arch/arm/mach-pxa/sleep.S
arch/arm/mach-pxa/smemc.c
arch/arm/mach-pxa/smemc.h [new file with mode: 0644]
arch/arm/mach-pxa/spitz.c
arch/arm/mach-pxa/spitz.h [new file with mode: 0644]
arch/arm/mach-pxa/spitz_pm.c
arch/arm/mach-pxa/standby.S
arch/arm/mach-pxa/tosa.c
arch/arm/mach-pxa/tosa.h [new file with mode: 0644]
arch/arm/mach-pxa/trizeps4-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/trizeps4.c
arch/arm/mach-pxa/trizeps4.h [new file with mode: 0644]
arch/arm/mach-pxa/viper-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/viper-pcmcia.h [new file with mode: 0644]
arch/arm/mach-pxa/viper.c
arch/arm/mach-pxa/vpac270-pcmcia.c [new file with mode: 0644]
arch/arm/mach-pxa/vpac270.c
arch/arm/mach-pxa/vpac270.h [new file with mode: 0644]
arch/arm/mach-pxa/xcep.c
arch/arm/mach-pxa/z2.c
arch/arm/mach-pxa/z2.h [new file with mode: 0644]
arch/arm/mach-pxa/zeus.c
arch/arm/mach-pxa/zylonite.c
arch/arm/mach-pxa/zylonite.h
arch/arm/mach-pxa/zylonite_pxa300.c
arch/arm/mach-pxa/zylonite_pxa320.c
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/include/mach/reset.h
arch/arm/mm/copypage-xsc3.c
arch/arm/mm/ioremap.c
arch/arm/plat-pxa/Kconfig [deleted file]
arch/arm/plat-pxa/Makefile [deleted file]
arch/arm/plat-pxa/include/plat/mfp.h [deleted file]
arch/arm/plat-pxa/mfp.c [deleted file]
arch/arm/plat-pxa/ssp.c [deleted file]
arch/mips/alchemy/devboards/db1300.c
drivers/ata/pata_palmld.c
drivers/clk/pxa/clk-pxa.c
drivers/clk/pxa/clk-pxa.h
drivers/clk/pxa/clk-pxa25x.c
drivers/clk/pxa/clk-pxa27x.c
drivers/clk/pxa/clk-pxa2xx.h [new file with mode: 0644]
drivers/clk/pxa/clk-pxa3xx.c
drivers/cpufreq/pxa2xx-cpufreq.c
drivers/cpufreq/pxa3xx-cpufreq.c
drivers/input/mouse/pxa930_trkball.c
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/mainstone-wm97xx.c
drivers/input/touchscreen/wm97xx-core.c
drivers/input/touchscreen/zylonite-wm97xx.c
drivers/leds/leds-locomo.c
drivers/mfd/tc6393xb.c
drivers/mmc/host/pxamci.c
drivers/mtd/maps/pxa2xx-flash.c
drivers/pcmcia/Makefile
drivers/pcmcia/pxa2xx_balloon3.c [deleted file]
drivers/pcmcia/pxa2xx_base.c
drivers/pcmcia/pxa2xx_colibri.c [deleted file]
drivers/pcmcia/pxa2xx_e740.c [deleted file]
drivers/pcmcia/pxa2xx_hx4700.c [deleted file]
drivers/pcmcia/pxa2xx_palmld.c [deleted file]
drivers/pcmcia/pxa2xx_palmtc.c [deleted file]
drivers/pcmcia/pxa2xx_palmtx.c [deleted file]
drivers/pcmcia/pxa2xx_sharpsl.c
drivers/pcmcia/pxa2xx_trizeps4.c [deleted file]
drivers/pcmcia/pxa2xx_viper.c [deleted file]
drivers/pcmcia/pxa2xx_vpac270.c [deleted file]
drivers/pcmcia/sa1111_generic.c
drivers/pcmcia/sa1111_lubbock.c
drivers/pcmcia/soc_common.c
drivers/pcmcia/soc_common.h
drivers/power/supply/tosa_battery.c
drivers/rtc/rtc-pxa.c
drivers/soc/Kconfig
drivers/soc/Makefile
drivers/soc/pxa/Kconfig [new file with mode: 0644]
drivers/soc/pxa/Makefile [new file with mode: 0644]
drivers/soc/pxa/mfp.c [new file with mode: 0644]
drivers/soc/pxa/ssp.c [new file with mode: 0644]
drivers/usb/gadget/udc/pxa25x_udc.c
drivers/usb/gadget/udc/pxa25x_udc.h
drivers/usb/host/ohci-pxa27x.c
drivers/video/fbdev/pxa3xx-regs.h [new file with mode: 0644]
drivers/video/fbdev/pxafb.c
drivers/watchdog/sa1100_wdt.c
include/linux/clk/pxa.h [new file with mode: 0644]
include/linux/gpio/machine.h
include/linux/mfd/tc6393xb.h
include/linux/platform_data/asoc-poodle.h [new file with mode: 0644]
include/linux/platform_data/asoc-pxa.h [new file with mode: 0644]
include/linux/platform_data/pcmcia-pxa2xx_viper.h [deleted file]
include/linux/platform_data/video-pxafb.h
include/linux/soc/pxa/cpu.h [new file with mode: 0644]
include/linux/soc/pxa/mfp.h [new file with mode: 0644]
include/linux/soc/pxa/smemc.h [new file with mode: 0644]
include/linux/wm97xx.h
include/pcmcia/soc_common.h [new file with mode: 0644]
include/sound/pxa2xx-lib.h
sound/arm/pxa2xx-ac97-lib.c
sound/arm/pxa2xx-ac97-regs.h [new file with mode: 0644]
sound/arm/pxa2xx-ac97.c
sound/soc/pxa/corgi.c
sound/soc/pxa/e740_wm9705.c
sound/soc/pxa/e750_wm9705.c
sound/soc/pxa/e800_wm9712.c
sound/soc/pxa/em-x270.c
sound/soc/pxa/hx4700.c
sound/soc/pxa/magician.c
sound/soc/pxa/mioa701_wm9713.c
sound/soc/pxa/palm27x.c
sound/soc/pxa/poodle.c
sound/soc/pxa/pxa2xx-ac97.c
sound/soc/pxa/pxa2xx-i2s.c
sound/soc/pxa/spitz.c
sound/soc/pxa/tosa.c
sound/soc/pxa/z2.c

index 2f41caa0096c3c17d52e49f6f241e3f9b391e6d1..370721518987508253ce0d4bdfca576272e3c610 100644 (file)
@@ -374,8 +374,6 @@ PXA 2xx/3xx/93x/95x family
 
    Linux kernel mach directory:
        arch/arm/mach-pxa
-   Linux kernel plat directory:
-       arch/arm/plat-pxa
 
 MMP/MMP2/MMP3 family (communication processor)
 ----------------------------------------------
@@ -429,8 +427,6 @@ MMP/MMP2/MMP3 family (communication processor)
 
    Linux kernel mach directory:
        arch/arm/mach-mmp
-   Linux kernel plat directory:
-       arch/arm/plat-pxa
 
 Berlin family (Multimedia Solutions)
 -------------------------------------
@@ -518,9 +514,6 @@ Long-term plans
    Business Unit) in a single mach-<foo> directory. The plat-orion/
    would therefore disappear.
 
- * Unify the mach-mmp/ and mach-pxa/ into the same mach-pxa
-   directory. The plat-pxa/ would therefore disappear.
-
 Credits
 -------
 
index 903165a400a78f7f7d84a56b311d3d25d47b72f5..41b8b28b7a2dca906e18f3cfe7613ac377bb3085 100644 (file)
@@ -357,25 +357,6 @@ config ARCH_FOOTBRIDGE
          Support for systems based on the DC21285 companion chip
          ("FootBridge"), such as the Simtec CATS and the Rebel NetWinder.
 
-config ARCH_PXA
-       bool "PXA2xx/PXA3xx-based"
-       depends on CPU_LITTLE_ENDIAN
-       select ARCH_MTD_XIP
-       select ARM_CPU_SUSPEND if PM
-       select AUTO_ZRELADDR
-       select COMMON_CLK
-       select CLKSRC_PXA
-       select CLKSRC_MMIO
-       select TIMER_OF
-       select CPU_XSCALE if !CPU_XSC3
-       select GPIO_PXA
-       select GPIOLIB
-       select IRQ_DOMAIN
-       select PLAT_PXA
-       select SPARSE_IRQ
-       help
-         Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
-
 config ARCH_RPC
        bool "RiscPC"
        depends on !CC_IS_CLANG && GCC_VERSION < 90100 && GCC_VERSION >= 60000
@@ -593,7 +574,6 @@ source "arch/arm/mach-orion5x/Kconfig"
 source "arch/arm/mach-oxnas/Kconfig"
 
 source "arch/arm/mach-pxa/Kconfig"
-source "arch/arm/plat-pxa/Kconfig"
 
 source "arch/arm/mach-qcom/Kconfig"
 
@@ -672,9 +652,6 @@ config PLAT_ORION_LEGACY
        bool
        select PLAT_ORION
 
-config PLAT_PXA
-       bool
-
 config PLAT_VERSATILE
        bool
 
index 954ec707d18202f251277736de32ad6be86d8a2d..20242acb3f1258d160e78b2c38cb71a3895ef4c7 100644 (file)
@@ -225,7 +225,6 @@ machine-$(CONFIG_PLAT_SPEAR)                += spear
 # Platform directory name.  This list is sorted alphanumerically
 # by CONFIG_* macro name.
 plat-$(CONFIG_PLAT_ORION)      += orion
-plat-$(CONFIG_PLAT_PXA)                += pxa
 
 # The byte offset of the kernel image in RAM from the start of RAM.
 TEXT_OFFSET := $(textofs-y)
index 24d21ba630305447d0ba03d07ae58c599c6eebbe..da30a4d4f35cd0751da37d6dcae7592618df0543 100644 (file)
@@ -23,7 +23,6 @@
 #include <linux/spinlock.h>
 #include <linux/io.h>
 
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <asm/mach/irq.h>
 
index 5367f03beb4680c638505825c94ea32b64ae42df..2343e2b6214d7a39fe8b3a5e5429f87508fb7aa2 100644 (file)
 #include <linux/clk.h>
 #include <linux/io.h>
 
-#include <mach/hardware.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)
index 4e49d6cb2f62465142a9562f282d049a8db6c17b..9252ce0e722b9e6464e196e0dd75fb1bc63321a0 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_GUMSTIX=y
 CONFIG_PCCARD=y
index 45769d0ddd4efc90015e646385735a988453a5e8..bb0fcd82d2a7a1ad0c39efacd58bbae53f009066 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_GPIO_PCA953X=y
 CONFIG_MACH_CM_X300=y
index 52bad9a544a09405a7373305173f954cbd63e588..b29898fd6a12adc210cb4a3564ecf9acfe448d0c 100644 (file)
@@ -16,6 +16,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_COLIBRI=y
 CONFIG_PREEMPT=y
index 26e5a67f8e2d25cc28d38db76f25bdde43d72039..f9d110294644f0b41b3f63dc3aa83fe3b79e469f 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_COLIBRI300=y
 CONFIG_AEABI=y
index 15b749f6996d6026a62484d45ce57191ca264655..96c677c98bc714cfe7a19821f1260faad8d499e1 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_PXA_SHARPSL=y
 CONFIG_MACH_POODLE=y
index 046f4dc2e18e34de0de2dcdeb2b53fd2b68e8474..2146adc1825eead0c8c25873c8ae29967914b4eb 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_PXA_ESERIES=y
 # CONFIG_ARM_THUMB is not set
index 0788a892e160bc8c53a6611066d32b90c07e3b87..5d000c8be44e88fcccac634f9d1bec968c24d8b5 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_PXA_EZX=y
 CONFIG_NO_HZ=y
index f5a338fefda8ed34842f9ba3245ded25b2539ea8..a67d6020aee5c82aa6f471e438bf44f407c4fffc 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_H5000=y
 CONFIG_AEABI=y
index 3a4d0e64cd6e80b81224f4b3c4e0ef11eb7e0145..5c0a671ed294d12519edf99f473c3d311396f3b9 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_SLAB=y
 CONFIG_MODULES=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_LOGICPD_PXA270=y
 # CONFIG_ARM_THUMB is not set
index 4ce2da2e76fa250e4d3aab68070626520b53076e..cf49dc1629a761741fd8b9bf26cd5baecd4ba647 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_LUBBOCK=y
 # CONFIG_ARM_THUMB is not set
index abde1fb23b207e57f5d62ceecb709794e3692af8..13da808ffa133f068db9d00fa3cd445d8629246d 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_H4700=y
 CONFIG_MACH_MAGICIAN=y
index 26499b697f9fcfe13dddeb0a3f781edd6d23d93a..03b4c61bdaddb4a15673b1b223159a29182e62e2 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_MAINSTONE=y
 # CONFIG_ARM_THUMB is not set
index b47c8abe85bcc657759aaed0f28fb6e9869d825a..e6acb1d588e2111a4235d015c9e84eb730e4c7a0 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_PXA_PALM=y
 # CONFIG_MACH_PALMTX is not set
index e97a158081fc755abe281c75841581ad66002245..106d5bef48e2f326b686e0b08ad0442a9d538688 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_PCM027=y
 CONFIG_MACH_PCM990_BASEBOARD=y
index 4a383afa5e87c60e08feedb05b165197b96e628b..5663245e9534939dbb76e1eaf47e1b74a5f2f1e7 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_SYSVIPC=y
 CONFIG_LOG_BUF_SHIFT=14
 CONFIG_MODULES=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_PXA_IDP=y
 # CONFIG_ARM_THUMB is not set
index f0c34017f2aac1d17fcbef46d0b2e97149cdf548..228d4271748b3b00ca59c980c735c2912aa5220b 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_SLAB=y
 CONFIG_MODULES=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_LITTLETON=y
 CONFIG_MACH_TAVOREVB=y
index 29b1f192afbb3cf646a91751e693e3e1df866480..1db70dfd32d23de815b85cdac9de227ade466c9e 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_LDM_PARTITION=y
 CONFIG_CMDLINE_PARTITION=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_LUBBOCK=y
 CONFIG_MACH_MAINSTONE=y
index f42c7a502b6eef9b665d6e61fca2266d46bbbf1c..43d079ee342a76b0411d4286ab470e47496cc7b7 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_PXA_SHARPSL=y
 CONFIG_MACH_AKITA=y
index d66f0c287d415a3b9eb70522f2f8de814179522a..baeba4667e9b6411a14a2da57e9f8dbfbbff0db5 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_TRIZEPS_PXA=y
 CONFIG_MACH_TRIZEPS4=y
index c28539bfd12836befd8dea04cb7caa2dfbb62e24..7c1029716ea575357759986a2169ca160c001ccf 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SLAB=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_ARCH_VIPER=y
 CONFIG_IWMMXT=y
index 4d8e7f2eaef79e246ac5582d902758485413d726..3752672f980e3aeb7c165f65cfbc22ce08d13e81 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLOCK is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_XCEP=y
 CONFIG_IWMMXT=y
index 25bb6995f1055ddb40e43cf74fe06973e618043e..03a12fb51259f3b13f5b3bd385e174c0c1a7c973 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_LOG_BUF_SHIFT=13
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_PXA=y
 CONFIG_MACH_ARCOM_ZEUS=y
 CONFIG_PCCARD=m
index 2e70db6f22ea374b25e1684d25501d36b799168d..d8c6f8a99dfa157f0a479d6e9acdfc9d11841cac 100644 (file)
@@ -13,8 +13,6 @@
 #ifndef _ASM_ARCH_SA1111
 #define _ASM_ARCH_SA1111
 
-#include <mach/bitfield.h>
-
 /*
  * Don't ask the (SAC) DMA engines to move less than this amount.
  */
index 2a0739a2350bef8e2590f7b2d7464e9d60717568..eba7cbc93b86981b7bc5437f3ea3319a3bc44b4c 100644 (file)
@@ -174,7 +174,7 @@ static inline void __iomem *__typesafe_io(unsigned long addr)
 #define PCI_IO_VIRT_BASE       0xfee00000
 #define PCI_IOBASE             ((void __iomem *)PCI_IO_VIRT_BASE)
 
-#if defined(CONFIG_PCI)
+#if defined(CONFIG_PCI) || IS_ENABLED(CONFIG_PCMCIA)
 void pci_ioremap_set_mem_type(int mem_type);
 #else
 static inline void pci_ioremap_set_mem_type(int mem_type) {}
@@ -200,32 +200,13 @@ void __iomem *pci_remap_cfgspace(resource_size_t res_cookie, size_t size);
  */
 #ifdef CONFIG_NEED_MACH_IO_H
 #include <mach/io.h>
-#elif defined(CONFIG_PCI)
-#define IO_SPACE_LIMIT ((resource_size_t)0xfffff)
-#define __io(a)                __typesafe_io(PCI_IO_VIRT_BASE + ((a) & IO_SPACE_LIMIT))
 #else
-#define __io(a)                __typesafe_io((a) & IO_SPACE_LIMIT)
-#endif
-
-/*
- * This is the limit of PC card/PCI/ISA IO space, which is by default
- * 64K if we have PC card, PCI or ISA support.  Otherwise, default to
- * zero to prevent ISA/PCI drivers claiming IO space (and potentially
- * oopsing.)
- *
- * Only set this larger if you really need inb() et.al. to operate over
- * a larger address space.  Note that SOC_COMMON ioremaps each sockets
- * IO space area, and so inb() et.al. must be defined to operate as per
- * readb() et.al. on such platforms.
- */
-#ifndef IO_SPACE_LIMIT
-#if defined(CONFIG_PCMCIA_SOC_COMMON) || defined(CONFIG_PCMCIA_SOC_COMMON_MODULE)
-#define IO_SPACE_LIMIT ((resource_size_t)0xffffffff)
-#elif defined(CONFIG_PCI) || defined(CONFIG_ISA) || defined(CONFIG_PCCARD)
-#define IO_SPACE_LIMIT ((resource_size_t)0xffff)
+#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
 
 /*
index 9642e6663a526c0901be2accc753d093ebb0dc82..333229c65b28e33657a906cdf05b695572740695 100644 (file)
@@ -39,16 +39,8 @@ config MACH_AVENGERS_LITE
          Say 'Y' here if you want to support the Marvell PXA168-based
          Avengers Lite Development Board.
 
-config MACH_TAVOREVB
-       bool "Marvell's PXA910 TavorEVB Development Board"
-       depends on ARCH_MULTI_V5
-       select CPU_PXA910
-       help
-         Say 'Y' here if you want to support the Marvell PXA910-based
-         TavorEVB Development Board.
-
 config MACH_TTC_DKB
-       bool "Marvell's PXA910 TavorEVB Development Board"
+       bool "Marvell's PXA910 TavorEVB/TTC_DKB Development Board"
        depends on ARCH_MULTI_V5
        select CPU_PXA910
        help
index e3758f7e1fe7f5bd24dacb780eece24f04cf4d42..539d750aaf10ad3351b44d8ecd7f02d86f9cb2e0 100644 (file)
@@ -2,8 +2,6 @@
 #
 # Makefile for Marvell's PXA168 processors line
 #
-ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-pxa/include
-
 obj-y                          += common.o devices.o time.o
 
 # SoC support
@@ -24,7 +22,6 @@ endif
 obj-$(CONFIG_MACH_ASPENITE)    += aspenite.o
 obj-$(CONFIG_MACH_ZYLONITE2)   += aspenite.o
 obj-$(CONFIG_MACH_AVENGERS_LITE)+= avengers_lite.o
-obj-$(CONFIG_MACH_TAVOREVB)    += tavorevb.o
 obj-$(CONFIG_MACH_TTC_DKB)     += ttc_dkb.o
 obj-$(CONFIG_MACH_BROWNSTONE)  += brownstone.o
 obj-$(CONFIG_MACH_FLINT)       += flint.o
index 18bee66a671ffd99265f89fce84e284ce8648817..79f4a2aa5475dd3b3a4d01ff7c4e728e1225f13b 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/soc/mmp/cputype.h>
 #include "regs-usb.h"
 
-int __init pxa_register_device(struct pxa_device_desc *desc,
+int __init mmp_register_device(struct mmp_device_desc *desc,
                                void *data, size_t size)
 {
        struct platform_device *pdev;
index 4df596c5c201acd21c09f5cd24d71c41a97426c9..d4920ebfebc5548aaf2d5b8cf6b4d822caf4995f 100644 (file)
@@ -7,7 +7,7 @@
 #define MAX_RESOURCE_DMA       2
 
 /* structure for describing the on-chip devices */
-struct pxa_device_desc {
+struct mmp_device_desc {
        const char      *dev_name;
        const char      *drv_name;
        int             id;
@@ -18,7 +18,7 @@ struct pxa_device_desc {
 };
 
 #define PXA168_DEVICE(_name, _drv, _id, _irq, _start, _size, _dma...)  \
-struct pxa_device_desc pxa168_device_##_name __initdata = {            \
+struct mmp_device_desc pxa168_device_##_name __initdata = {            \
        .dev_name       = "pxa168-" #_name,                             \
        .drv_name       = _drv,                                         \
        .id             = _id,                                          \
@@ -29,7 +29,7 @@ struct pxa_device_desc pxa168_device_##_name __initdata = {           \
 };
 
 #define PXA910_DEVICE(_name, _drv, _id, _irq, _start, _size, _dma...)  \
-struct pxa_device_desc pxa910_device_##_name __initdata = {            \
+struct mmp_device_desc pxa910_device_##_name __initdata = {            \
        .dev_name       = "pxa910-" #_name,                             \
        .drv_name       = _drv,                                         \
        .id             = _id,                                          \
@@ -40,7 +40,7 @@ struct pxa_device_desc pxa910_device_##_name __initdata = {           \
 };
 
 #define MMP2_DEVICE(_name, _drv, _id, _irq, _start, _size, _dma...)    \
-struct pxa_device_desc mmp2_device_##_name __initdata = {              \
+struct mmp_device_desc mmp2_device_##_name __initdata = {              \
        .dev_name       = "mmp2-" #_name,                               \
        .drv_name       = _drv,                                         \
        .id             = _id,                                          \
@@ -50,7 +50,7 @@ struct pxa_device_desc mmp2_device_##_name __initdata = {             \
        .dma            = { _dma },                                     \
 }
 
-extern int pxa_register_device(struct pxa_device_desc *, void *, size_t);
+extern int mmp_register_device(struct mmp_device_desc *, void *, size_t);
 extern int pxa_usb_phy_init(void __iomem *phy_reg);
 extern void pxa_usb_phy_deinit(void __iomem *phy_reg);
 
index 75a4acb33b1b60def710dc0a2e1a29aeea6546ea..6f30579877567f903594a9a6d15327b8f3cf8fda 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __ASM_MACH_MFP_H
 #define __ASM_MACH_MFP_H
 
-#include <plat/mfp.h>
+#include <linux/soc/pxa/mfp.h>
 
 /*
  * NOTE: the MFPR register bit definitions on PXA168 processor lines are a
index adafc4fba8f4ba5aba608b1c4f64f916ede97b5e..3ebc1bb13f71f6d7d309ee148c9c4c4c1cb6f7ee 100644 (file)
@@ -15,28 +15,28 @@ extern void mmp2_clear_pmic_int(void);
 
 #include "devices.h"
 
-extern struct pxa_device_desc mmp2_device_uart1;
-extern struct pxa_device_desc mmp2_device_uart2;
-extern struct pxa_device_desc mmp2_device_uart3;
-extern struct pxa_device_desc mmp2_device_uart4;
-extern struct pxa_device_desc mmp2_device_twsi1;
-extern struct pxa_device_desc mmp2_device_twsi2;
-extern struct pxa_device_desc mmp2_device_twsi3;
-extern struct pxa_device_desc mmp2_device_twsi4;
-extern struct pxa_device_desc mmp2_device_twsi5;
-extern struct pxa_device_desc mmp2_device_twsi6;
-extern struct pxa_device_desc mmp2_device_sdh0;
-extern struct pxa_device_desc mmp2_device_sdh1;
-extern struct pxa_device_desc mmp2_device_sdh2;
-extern struct pxa_device_desc mmp2_device_sdh3;
-extern struct pxa_device_desc mmp2_device_asram;
-extern struct pxa_device_desc mmp2_device_isram;
+extern struct mmp_device_desc mmp2_device_uart1;
+extern struct mmp_device_desc mmp2_device_uart2;
+extern struct mmp_device_desc mmp2_device_uart3;
+extern struct mmp_device_desc mmp2_device_uart4;
+extern struct mmp_device_desc mmp2_device_twsi1;
+extern struct mmp_device_desc mmp2_device_twsi2;
+extern struct mmp_device_desc mmp2_device_twsi3;
+extern struct mmp_device_desc mmp2_device_twsi4;
+extern struct mmp_device_desc mmp2_device_twsi5;
+extern struct mmp_device_desc mmp2_device_twsi6;
+extern struct mmp_device_desc mmp2_device_sdh0;
+extern struct mmp_device_desc mmp2_device_sdh1;
+extern struct mmp_device_desc mmp2_device_sdh2;
+extern struct mmp_device_desc mmp2_device_sdh3;
+extern struct mmp_device_desc mmp2_device_asram;
+extern struct mmp_device_desc mmp2_device_isram;
 
 extern struct platform_device mmp2_device_gpio;
 
 static inline int mmp2_add_uart(int id)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 1: d = &mmp2_device_uart1; break;
@@ -47,13 +47,13 @@ static inline int mmp2_add_uart(int id)
                return -EINVAL;
        }
 
-       return pxa_register_device(d, NULL, 0);
+       return mmp_register_device(d, NULL, 0);
 }
 
 static inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data,
                                  struct i2c_board_info *info, unsigned size)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
        int ret;
 
        switch (id) {
@@ -71,12 +71,12 @@ static inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data,
        if (ret)
                return ret;
 
-       return pxa_register_device(d, data, sizeof(*data));
+       return mmp_register_device(d, data, sizeof(*data));
 }
 
 static inline int mmp2_add_sdhost(int id, struct sdhci_pxa_platdata *data)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 0: d = &mmp2_device_sdh0; break;
@@ -87,17 +87,17 @@ static inline int mmp2_add_sdhost(int id, struct sdhci_pxa_platdata *data)
                return -EINVAL;
        }
 
-       return pxa_register_device(d, data, sizeof(*data));
+       return mmp_register_device(d, data, sizeof(*data));
 }
 
 static inline int mmp2_add_asram(struct sram_platdata *data)
 {
-       return pxa_register_device(&mmp2_device_asram, data, sizeof(*data));
+       return mmp_register_device(&mmp2_device_asram, data, sizeof(*data));
 }
 
 static inline int mmp2_add_isram(struct sram_platdata *data)
 {
-       return pxa_register_device(&mmp2_device_isram, data, sizeof(*data));
+       return mmp_register_device(&mmp2_device_isram, data, sizeof(*data));
 }
 
 #endif /* __ASM_MACH_MMP2_H */
index dff651b9f252d4451dce883ec5fcd06d2129fda3..34f907cd165a8cbfcc608925405703ef5a65b565 100644 (file)
@@ -21,24 +21,24 @@ extern void pxa168_clear_keypad_wakeup(void);
 
 #include "devices.h"
 
-extern struct pxa_device_desc pxa168_device_uart1;
-extern struct pxa_device_desc pxa168_device_uart2;
-extern struct pxa_device_desc pxa168_device_uart3;
-extern struct pxa_device_desc pxa168_device_twsi0;
-extern struct pxa_device_desc pxa168_device_twsi1;
-extern struct pxa_device_desc pxa168_device_pwm1;
-extern struct pxa_device_desc pxa168_device_pwm2;
-extern struct pxa_device_desc pxa168_device_pwm3;
-extern struct pxa_device_desc pxa168_device_pwm4;
-extern struct pxa_device_desc pxa168_device_ssp1;
-extern struct pxa_device_desc pxa168_device_ssp2;
-extern struct pxa_device_desc pxa168_device_ssp3;
-extern struct pxa_device_desc pxa168_device_ssp4;
-extern struct pxa_device_desc pxa168_device_ssp5;
-extern struct pxa_device_desc pxa168_device_nand;
-extern struct pxa_device_desc pxa168_device_fb;
-extern struct pxa_device_desc pxa168_device_keypad;
-extern struct pxa_device_desc pxa168_device_eth;
+extern struct mmp_device_desc pxa168_device_uart1;
+extern struct mmp_device_desc pxa168_device_uart2;
+extern struct mmp_device_desc pxa168_device_uart3;
+extern struct mmp_device_desc pxa168_device_twsi0;
+extern struct mmp_device_desc pxa168_device_twsi1;
+extern struct mmp_device_desc pxa168_device_pwm1;
+extern struct mmp_device_desc pxa168_device_pwm2;
+extern struct mmp_device_desc pxa168_device_pwm3;
+extern struct mmp_device_desc pxa168_device_pwm4;
+extern struct mmp_device_desc pxa168_device_ssp1;
+extern struct mmp_device_desc pxa168_device_ssp2;
+extern struct mmp_device_desc pxa168_device_ssp3;
+extern struct mmp_device_desc pxa168_device_ssp4;
+extern struct mmp_device_desc pxa168_device_ssp5;
+extern struct mmp_device_desc pxa168_device_nand;
+extern struct mmp_device_desc pxa168_device_fb;
+extern struct mmp_device_desc pxa168_device_keypad;
+extern struct mmp_device_desc pxa168_device_eth;
 
 /* pdata can be NULL */
 extern int __init pxa168_add_usb_host(struct mv_usb_platform_data *pdata);
@@ -48,7 +48,7 @@ extern struct platform_device pxa168_device_gpio;
 
 static inline int pxa168_add_uart(int id)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 1: d = &pxa168_device_uart1; break;
@@ -59,13 +59,13 @@ static inline int pxa168_add_uart(int id)
        if (d == NULL)
                return -EINVAL;
 
-       return pxa_register_device(d, NULL, 0);
+       return mmp_register_device(d, NULL, 0);
 }
 
 static inline int pxa168_add_twsi(int id, struct i2c_pxa_platform_data *data,
                                  struct i2c_board_info *info, unsigned size)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
        int ret;
 
        switch (id) {
@@ -79,12 +79,12 @@ static inline int pxa168_add_twsi(int id, struct i2c_pxa_platform_data *data,
        if (ret)
                return ret;
 
-       return pxa_register_device(d, data, sizeof(*data));
+       return mmp_register_device(d, data, sizeof(*data));
 }
 
 static inline int pxa168_add_pwm(int id)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 1: d = &pxa168_device_pwm1; break;
@@ -95,12 +95,12 @@ static inline int pxa168_add_pwm(int id)
                return -EINVAL;
        }
 
-       return pxa_register_device(d, NULL, 0);
+       return mmp_register_device(d, NULL, 0);
 }
 
 static inline int pxa168_add_ssp(int id)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 1: d = &pxa168_device_ssp1; break;
@@ -111,17 +111,17 @@ static inline int pxa168_add_ssp(int id)
        default:
                return -EINVAL;
        }
-       return pxa_register_device(d, NULL, 0);
+       return mmp_register_device(d, NULL, 0);
 }
 
 static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info)
 {
-       return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
+       return mmp_register_device(&pxa168_device_nand, info, sizeof(*info));
 }
 
 static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi)
 {
-       return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi));
+       return mmp_register_device(&pxa168_device_fb, mi, sizeof(*mi));
 }
 
 static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
@@ -129,11 +129,11 @@ static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
        if (cpu_is_pxa168())
                data->clear_wakeup_event = pxa168_clear_keypad_wakeup;
 
-       return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data));
+       return mmp_register_device(&pxa168_device_keypad, data, sizeof(*data));
 }
 
 static inline int pxa168_add_eth(struct pxa168_eth_platform_data *data)
 {
-       return pxa_register_device(&pxa168_device_eth, data, sizeof(*data));
+       return mmp_register_device(&pxa168_device_eth, data, sizeof(*data));
 }
 #endif /* __ASM_MACH_PXA168_H */
index 2dfe38e4acc13ab5afd2647fac52ccbdf96e9cb6..6ace5a8aa15b909469ce2156c12e8e7f8723c116 100644 (file)
@@ -13,28 +13,28 @@ extern void __init pxa910_init_irq(void);
 
 #include "devices.h"
 
-extern struct pxa_device_desc pxa910_device_uart1;
-extern struct pxa_device_desc pxa910_device_uart2;
-extern struct pxa_device_desc pxa910_device_twsi0;
-extern struct pxa_device_desc pxa910_device_twsi1;
-extern struct pxa_device_desc pxa910_device_pwm1;
-extern struct pxa_device_desc pxa910_device_pwm2;
-extern struct pxa_device_desc pxa910_device_pwm3;
-extern struct pxa_device_desc pxa910_device_pwm4;
-extern struct pxa_device_desc pxa910_device_nand;
+extern struct mmp_device_desc pxa910_device_uart1;
+extern struct mmp_device_desc pxa910_device_uart2;
+extern struct mmp_device_desc pxa910_device_twsi0;
+extern struct mmp_device_desc pxa910_device_twsi1;
+extern struct mmp_device_desc pxa910_device_pwm1;
+extern struct mmp_device_desc pxa910_device_pwm2;
+extern struct mmp_device_desc pxa910_device_pwm3;
+extern struct mmp_device_desc pxa910_device_pwm4;
+extern struct mmp_device_desc pxa910_device_nand;
 extern struct platform_device pxa168_device_usb_phy;
 extern struct platform_device pxa168_device_u2o;
 extern struct platform_device pxa168_device_u2ootg;
 extern struct platform_device pxa168_device_u2oehci;
-extern struct pxa_device_desc pxa910_device_disp;
-extern struct pxa_device_desc pxa910_device_fb;
-extern struct pxa_device_desc pxa910_device_panel;
+extern struct mmp_device_desc pxa910_device_disp;
+extern struct mmp_device_desc pxa910_device_fb;
+extern struct mmp_device_desc pxa910_device_panel;
 extern struct platform_device pxa910_device_gpio;
 extern struct platform_device pxa910_device_rtc;
 
 static inline int pxa910_add_uart(int id)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 1: d = &pxa910_device_uart1; break;
@@ -44,13 +44,13 @@ static inline int pxa910_add_uart(int id)
        if (d == NULL)
                return -EINVAL;
 
-       return pxa_register_device(d, NULL, 0);
+       return mmp_register_device(d, NULL, 0);
 }
 
 static inline int pxa910_add_twsi(int id, struct i2c_pxa_platform_data *data,
                                  struct i2c_board_info *info, unsigned size)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
        int ret;
 
        switch (id) {
@@ -64,12 +64,12 @@ static inline int pxa910_add_twsi(int id, struct i2c_pxa_platform_data *data,
        if (ret)
                return ret;
 
-       return pxa_register_device(d, data, sizeof(*data));
+       return mmp_register_device(d, data, sizeof(*data));
 }
 
 static inline int pxa910_add_pwm(int id)
 {
-       struct pxa_device_desc *d = NULL;
+       struct mmp_device_desc *d = NULL;
 
        switch (id) {
        case 1: d = &pxa910_device_pwm1; break;
@@ -80,11 +80,11 @@ static inline int pxa910_add_pwm(int id)
                return -EINVAL;
        }
 
-       return pxa_register_device(d, NULL, 0);
+       return mmp_register_device(d, NULL, 0);
 }
 
 static inline int pxa910_add_nand(struct pxa3xx_nand_platform_data *info)
 {
-       return pxa_register_device(&pxa910_device_nand, info, sizeof(*info));
+       return mmp_register_device(&pxa910_device_nand, info, sizeof(*info));
 }
 #endif /* __ASM_MACH_PXA910_H */
diff --git a/arch/arm/mach-mmp/tavorevb.c b/arch/arm/mach-mmp/tavorevb.c
deleted file mode 100644 (file)
index 3261d23..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-mmp/tavorevb.c
- *
- *  Support for the Marvell PXA910-based TavorEVB Development Platform.
- */
-#include <linux/gpio.h>
-#include <linux/gpio-pxa.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/smc91x.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include "addr-map.h"
-#include "mfp-pxa910.h"
-#include "pxa910.h"
-#include "irqs.h"
-
-#include "common.h"
-
-static unsigned long tavorevb_pin_config[] __initdata = {
-       /* UART2 */
-       GPIO47_UART2_RXD,
-       GPIO48_UART2_TXD,
-
-       /* SMC */
-       SM_nCS0_nCS0,
-       SM_ADV_SM_ADV,
-       SM_SCLK_SM_SCLK,
-       SM_SCLK_SM_SCLK,
-       SM_BE0_SM_BE0,
-       SM_BE1_SM_BE1,
-
-       /* DFI */
-       DF_IO0_ND_IO0,
-       DF_IO1_ND_IO1,
-       DF_IO2_ND_IO2,
-       DF_IO3_ND_IO3,
-       DF_IO4_ND_IO4,
-       DF_IO5_ND_IO5,
-       DF_IO6_ND_IO6,
-       DF_IO7_ND_IO7,
-       DF_IO8_ND_IO8,
-       DF_IO9_ND_IO9,
-       DF_IO10_ND_IO10,
-       DF_IO11_ND_IO11,
-       DF_IO12_ND_IO12,
-       DF_IO13_ND_IO13,
-       DF_IO14_ND_IO14,
-       DF_IO15_ND_IO15,
-       DF_nCS0_SM_nCS2_nCS0,
-       DF_ALE_SM_WEn_ND_ALE,
-       DF_CLE_SM_OEn_ND_CLE,
-       DF_WEn_DF_WEn,
-       DF_REn_DF_REn,
-       DF_RDY0_DF_RDY0,
-};
-
-static struct pxa_gpio_platform_data pxa910_gpio_pdata = {
-       .irq_base       = MMP_GPIO_TO_IRQ(0),
-};
-
-static struct smc91x_platdata tavorevb_smc91x_info = {
-       .flags  = SMC91X_USE_16BIT | SMC91X_NOWAIT,
-};
-
-static struct resource smc91x_resources[] = {
-       [0] = {
-               .start  = SMC_CS1_PHYS_BASE + 0x300,
-               .end    = SMC_CS1_PHYS_BASE + 0xfffff,
-               .flags  = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start  = MMP_GPIO_TO_IRQ(80),
-               .end    = MMP_GPIO_TO_IRQ(80),
-               .flags  = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
-       }
-};
-
-static struct platform_device smc91x_device = {
-       .name           = "smc91x",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &tavorevb_smc91x_info,
-       },
-       .num_resources  = ARRAY_SIZE(smc91x_resources),
-       .resource       = smc91x_resources,
-};
-
-static void __init tavorevb_init(void)
-{
-       mfp_config(ARRAY_AND_SIZE(tavorevb_pin_config));
-
-       /* on-chip devices */
-       pxa910_add_uart(1);
-       platform_device_add_data(&pxa910_device_gpio, &pxa910_gpio_pdata,
-                                sizeof(struct pxa_gpio_platform_data));
-       platform_device_register(&pxa910_device_gpio);
-
-       /* off-chip devices */
-       platform_device_register(&smc91x_device);
-}
-
-MACHINE_START(TAVOREVB, "PXA910 Evaluation Board (aka TavorEVB)")
-       .map_io         = mmp_map_io,
-       .nr_irqs        = MMP_NR_IRQS,
-       .init_irq       = pxa910_init_irq,
-       .init_time      = pxa910_timer_init,
-       .init_machine   = tavorevb_init,
-       .restart        = mmp_restart,
-MACHINE_END
index 4f240760d4aa0c1a9a8c6955849f644584aea646..345b2e6d5c7ebd373ba90710f73b20b1c3460158 100644 (file)
@@ -253,12 +253,12 @@ static struct spi_board_info spi_board_info[] __initdata = {
 
 static void __init add_disp(void)
 {
-       pxa_register_device(&pxa910_device_disp,
+       mmp_register_device(&pxa910_device_disp,
                &dkb_disp_info, sizeof(dkb_disp_info));
        spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
-       pxa_register_device(&pxa910_device_fb,
+       mmp_register_device(&pxa910_device_fb,
                &dkb_fb_info, sizeof(dkb_fb_info));
-       pxa_register_device(&pxa910_device_panel,
+       mmp_register_device(&pxa910_device_panel,
                &dkb_tpo_panel_info, sizeof(dkb_tpo_panel_info));
 }
 #endif
index 57f0be4065c109493bea3130a62bda8f2faec260..a5df1d9f336005411c97af76234012e8435cf9ab 100644 (file)
@@ -1,4 +1,19 @@
 # SPDX-License-Identifier: GPL-2.0-only
+menuconfig ARCH_PXA
+       bool "PXA2xx/PXA3xx-based"
+       depends on ARCH_MULTI_V5
+       depends on CPU_LITTLE_ENDIAN
+       select ARM_CPU_SUSPEND if PM
+       select CLKSRC_PXA
+       select CLKSRC_MMIO
+       select TIMER_OF
+       select CPU_XSCALE if !CPU_XSC3
+       select GPIO_PXA
+       select GPIOLIB
+       select PLAT_PXA
+       help
+         Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
+
 if ARCH_PXA
 
 menu "Intel PXA2xx/PXA3xx Implementations"
index 68730ceb8b7cca90d174ae9f8c638855a49c8443..0aec36e67dc1139648f1ae29793b329b42c1c9e4 100644 (file)
@@ -37,7 +37,8 @@ obj-$(CONFIG_MACH_SAAR)               += saar.o
 obj-$(CONFIG_ARCH_PXA_IDP)     += idp.o
 obj-$(CONFIG_ARCH_VIPER)       += viper.o
 obj-$(CONFIG_MACH_ARCOM_ZEUS)  += zeus.o
-obj-$(CONFIG_MACH_BALLOON3)    += balloon3.o
+obj-$(CONFIG_ARCOM_PCMCIA)     += viper-pcmcia.o
+obj-$(CONFIG_MACH_BALLOON3)    += balloon3.o balloon3-pcmcia.o
 obj-$(CONFIG_MACH_CSB726)      += csb726.o
 obj-$(CONFIG_CSB726_CSB701)    += csb701.o
 obj-$(CONFIG_MACH_CM_X300)      += cm-x300.o
@@ -47,18 +48,20 @@ obj-$(CONFIG_GUMSTIX_AM200EPD)      += am200epd.o
 obj-$(CONFIG_GUMSTIX_AM300EPD) += am300epd.o
 obj-$(CONFIG_MACH_XCEP)         += xcep.o
 obj-$(CONFIG_MACH_TRIZEPS4)    += trizeps4.o
+obj-$(CONFIG_TRIZEPS_PCMCIA)   += trizeps4-pcmcia.o
 obj-$(CONFIG_MACH_LOGICPD_PXA270)      += lpd270.o
 obj-$(CONFIG_MACH_PCM027)              += pcm027.o
 obj-$(CONFIG_MACH_PCM990_BASEBOARD)    += pcm990-baseboard.o
-obj-$(CONFIG_MACH_COLIBRI)                     += colibri-pxa270.o
+obj-$(CONFIG_MACH_COLIBRI)             += colibri-pxa270.o colibri-pcmcia.o
 obj-$(CONFIG_MACH_COLIBRI_EVALBOARD)   += colibri-evalboard.o
 obj-$(CONFIG_MACH_COLIBRI_PXA270_INCOME)       += colibri-pxa270-income.o
 obj-$(CONFIG_MACH_COLIBRI300)  += colibri-pxa3xx.o colibri-pxa300.o
-obj-$(CONFIG_MACH_COLIBRI320)  += colibri-pxa3xx.o colibri-pxa320.o
-obj-$(CONFIG_MACH_VPAC270)     += vpac270.o
+obj-$(CONFIG_MACH_COLIBRI320)  += colibri-pxa3xx.o colibri-pxa320.o colibri-pcmcia.o
+obj-$(CONFIG_MACH_VPAC270)     += vpac270.o vpac270-pcmcia.o
 
 # End-user Products
 obj-$(CONFIG_MACH_H4700)       += hx4700.o
+obj-$(CONFIG_MACH_H4700)       += hx4700-pcmcia.o
 obj-$(CONFIG_MACH_H5000)       += h5000.o
 obj-$(CONFIG_MACH_HIMALAYA)    += himalaya.o
 obj-$(CONFIG_MACH_MAGICIAN)    += magician.o
@@ -66,12 +69,12 @@ obj-$(CONFIG_MACH_MIOA701)  += mioa701.o mioa701_bootresume.o
 obj-$(CONFIG_PXA_EZX)           += ezx.o
 obj-$(CONFIG_MACH_MP900C)      += mp900.o
 obj-$(CONFIG_MACH_PALMTE2)     += palmte2.o
-obj-$(CONFIG_MACH_PALMTC)      += palmtc.o
+obj-$(CONFIG_MACH_PALMTC)      += palmtc.o palmtc-pcmcia.o
 obj-$(CONFIG_MACH_PALM27X)     += palm27x.o
 obj-$(CONFIG_MACH_PALMT5)      += palmt5.o
-obj-$(CONFIG_MACH_PALMTX)      += palmtx.o
+obj-$(CONFIG_MACH_PALMTX)      += palmtx.o palmtx-pcmcia.o
 obj-$(CONFIG_MACH_PALMZ72)     += palmz72.o
-obj-$(CONFIG_MACH_PALMLD)      += palmld.o
+obj-$(CONFIG_MACH_PALMLD)      += palmld.o palmld-pcmcia.o
 obj-$(CONFIG_PALM_TREO)                += palmtreo.o
 obj-$(CONFIG_PXA_SHARP_C7xx)   += corgi.o sharpsl_pm.o corgi_pm.o
 obj-$(CONFIG_PXA_SHARP_Cxx00)  += spitz.o sharpsl_pm.o spitz_pm.o
@@ -79,6 +82,7 @@ obj-$(CONFIG_MACH_POODLE)     += poodle.o
 obj-$(CONFIG_MACH_TOSA)                += tosa.o
 obj-$(CONFIG_MACH_ICONTROL)     += icontrol.o mxm8x10.o
 obj-$(CONFIG_ARCH_PXA_ESERIES) += eseries.o
+obj-$(CONFIG_MACH_E740)                += e740-pcmcia.o
 obj-$(CONFIG_MACH_ZIPIT2)      += z2.o
 
 obj-$(CONFIG_PXA_SYSTEMS_CPLDS)        += pxa_cplds_irqs.o
diff --git a/arch/arm/mach-pxa/Makefile.boot b/arch/arm/mach-pxa/Makefile.boot
deleted file mode 100644 (file)
index bb6e353..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-   zreladdr-y  += 0xa0008000
-
diff --git a/arch/arm/mach-pxa/addr-map.h b/arch/arm/mach-pxa/addr-map.h
new file mode 100644 (file)
index 0000000..93cfe7d
--- /dev/null
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_MACH_ADDR_MAP_H
+#define __ASM_MACH_ADDR_MAP_H
+
+/*
+ * Chip Selects
+ */
+#define PXA_CS0_PHYS           0x00000000
+#define PXA_CS1_PHYS           0x04000000
+#define PXA_CS2_PHYS           0x08000000
+#define PXA_CS3_PHYS           0x0C000000
+#define PXA_CS4_PHYS           0x10000000
+#define PXA_CS5_PHYS           0x14000000
+
+#define PXA300_CS0_PHYS                0x00000000      /* PXA300/PXA310 _only_ */
+#define PXA300_CS1_PHYS                0x30000000      /* PXA300/PXA310 _only_ */
+#define PXA3xx_CS2_PHYS                0x10000000
+#define PXA3xx_CS3_PHYS                0x14000000
+
+/*
+ * Peripheral Bus
+ */
+#define PERIPH_PHYS            0x40000000
+#define PERIPH_VIRT            IOMEM(0xf2000000)
+#define PERIPH_SIZE            0x02000000
+
+/*
+ * Static Memory Controller (w/ SDRAM controls on PXA25x/PXA27x)
+ */
+#define PXA2XX_SMEMC_PHYS      0x48000000
+#define PXA3XX_SMEMC_PHYS      0x4a000000
+#define SMEMC_VIRT             IOMEM(0xf6000000)
+#define SMEMC_SIZE             0x00100000
+
+/*
+ * Dynamic Memory Controller (only on PXA3xx)
+ */
+#define DMEMC_PHYS             0x48100000
+#define DMEMC_VIRT             IOMEM(0xf6100000)
+#define DMEMC_SIZE             0x00100000
+
+/*
+ * Reserved space for low level debug virtual addresses within
+ * 0xf6200000..0xf6201000
+ */
+
+/*
+ * DFI Bus for NAND, PXA3xx only
+ */
+#define NAND_PHYS              0x43100000
+#define NAND_VIRT              IOMEM(0xf6300000)
+#define NAND_SIZE              0x00100000
+
+/*
+ * Internal Memory Controller (PXA27x and later)
+ */
+#define IMEMC_PHYS             0x58000000
+#define IMEMC_VIRT             IOMEM(0xfe000000)
+#define IMEMC_SIZE             0x00100000
+
+#endif /* __ASM_MACH_ADDR_MAP_H */
index 17d08abeeb1795f4f885d6e11ebca63bfa0212cc..4b55bc89db8fd7e8d5cf7154a1b129606958ca60 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "gumstix.h"
 #include "mfp-pxa25x.h"
-#include <mach/irqs.h>
+#include "irqs.h"
 #include <linux/platform_data/video-pxafb.h>
 
 #include "generic.h"
diff --git a/arch/arm/mach-pxa/balloon3-pcmcia.c b/arch/arm/mach-pxa/balloon3-pcmcia.c
new file mode 100644 (file)
index 0000000..6a27b76
--- /dev/null
@@ -0,0 +1,137 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_balloon3.c
+ *
+ * Balloon3 PCMCIA specific routines.
+ *
+ *  Author:    Nick Bane
+ *  Created:   June, 2006
+ *  Copyright: Toby Churchill Ltd
+ *  Derived from pxa2xx_mainstone.c, by Nico Pitre
+ *
+ * Various modification by Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#include <linux/module.h>
+#include <linux/gpio.h>
+#include <linux/errno.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/irq.h>
+#include <linux/io.h>
+
+#include "balloon3.h"
+
+#include <asm/mach-types.h>
+
+#include <pcmcia/soc_common.h>
+
+static int balloon3_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       uint16_t ver;
+
+       ver = __raw_readw(BALLOON3_FPGA_VER);
+       if (ver < 0x4f08)
+               pr_warn("The FPGA code, version 0x%04x, is too old. "
+                       "PCMCIA/CF support might be broken in this version!",
+                       ver);
+
+       skt->socket.pci_irq = BALLOON3_BP_CF_NRDY_IRQ;
+       skt->stat[SOC_STAT_CD].gpio = BALLOON3_GPIO_S0_CD;
+       skt->stat[SOC_STAT_CD].name = "PCMCIA0 CD";
+       skt->stat[SOC_STAT_BVD1].irq = BALLOON3_BP_NSTSCHG_IRQ;
+       skt->stat[SOC_STAT_BVD1].name = "PCMCIA0 STSCHG";
+
+       return 0;
+}
+
+static unsigned long balloon3_pcmcia_status[2] = {
+       BALLOON3_CF_nSTSCHG_BVD1,
+       BALLOON3_CF_nSTSCHG_BVD1
+};
+
+static void balloon3_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                   struct pcmcia_state *state)
+{
+       uint16_t status;
+       int flip;
+
+       /* This actually reads the STATUS register */
+       status = __raw_readw(BALLOON3_CF_STATUS_REG);
+       flip = (status ^ balloon3_pcmcia_status[skt->nr])
+               & BALLOON3_CF_nSTSCHG_BVD1;
+       /*
+        * Workaround for STSCHG which can't be deasserted:
+        * We therefore disable/enable corresponding IRQs
+        * as needed to avoid IRQ locks.
+        */
+       if (flip) {
+               balloon3_pcmcia_status[skt->nr] = status;
+               if (status & BALLOON3_CF_nSTSCHG_BVD1)
+                       enable_irq(BALLOON3_BP_NSTSCHG_IRQ);
+               else
+                       disable_irq(BALLOON3_BP_NSTSCHG_IRQ);
+       }
+
+       state->ready    = !!(status & BALLOON3_CF_nIRQ);
+       state->bvd1     = !!(status & BALLOON3_CF_nSTSCHG_BVD1);
+       state->bvd2     = 0;    /* not available */
+       state->vs_3v    = 1;    /* Always true its a CF card */
+       state->vs_Xv    = 0;    /* not available */
+}
+
+static int balloon3_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                                      const socket_state_t *state)
+{
+       __raw_writew(BALLOON3_CF_RESET, BALLOON3_CF_CONTROL_REG +
+                       ((state->flags & SS_RESET) ?
+                       BALLOON3_FPGA_SETnCLR : 0));
+       return 0;
+}
+
+static struct pcmcia_low_level balloon3_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+       .hw_init                = balloon3_pcmcia_hw_init,
+       .socket_state           = balloon3_pcmcia_socket_state,
+       .configure_socket       = balloon3_pcmcia_configure_socket,
+       .first                  = 0,
+       .nr                     = 1,
+};
+
+static struct platform_device *balloon3_pcmcia_device;
+
+static int __init balloon3_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_balloon3())
+               return -ENODEV;
+
+       balloon3_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!balloon3_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(balloon3_pcmcia_device,
+                       &balloon3_pcmcia_ops, sizeof(balloon3_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(balloon3_pcmcia_device);
+
+       if (ret)
+               platform_device_put(balloon3_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit balloon3_pcmcia_exit(void)
+{
+       platform_device_unregister(balloon3_pcmcia_device);
+}
+
+module_init(balloon3_pcmcia_init);
+module_exit(balloon3_pcmcia_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Nick Bane <nick@cecomputing.co.uk>");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_DESCRIPTION("Balloon3 board CF/PCMCIA driver");
index 26140249c7845274979be0c9d8386738208e8374..896d47d9a8dc081b654bc089aea360bed7a3bdb0 100644 (file)
@@ -40,8 +40,8 @@
 #include <asm/mach/flash.h>
 
 #include "pxa27x.h"
-#include <mach/balloon3.h>
-#include <mach/audio.h>
+#include "balloon3.h"
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include "udc.h"
diff --git a/arch/arm/mach-pxa/balloon3.h b/arch/arm/mach-pxa/balloon3.h
new file mode 100644 (file)
index 0000000..04f3639
--- /dev/null
@@ -0,0 +1,181 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  linux/include/asm-arm/arch-pxa/balloon3.h
+ *
+ *  Authors:   Nick Bane and Wookey
+ *  Created:   Oct, 2005
+ *  Copyright: Toby Churchill Ltd
+ *  Cribbed from mainstone.c, by Nicholas Pitre
+ */
+
+#ifndef ASM_ARCH_BALLOON3_H
+#define ASM_ARCH_BALLOON3_H
+
+#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
+
+enum balloon3_features {
+       BALLOON3_FEATURE_OHCI,
+       BALLOON3_FEATURE_MMC,
+       BALLOON3_FEATURE_CF,
+       BALLOON3_FEATURE_AUDIO,
+       BALLOON3_FEATURE_TOPPOLY,
+};
+
+#define BALLOON3_FPGA_PHYS     PXA_CS4_PHYS
+#define BALLOON3_FPGA_VIRT     IOMEM(0xf1000000)       /* as per balloon2 */
+#define BALLOON3_FPGA_LENGTH   0x01000000
+
+#define        BALLOON3_FPGA_SETnCLR           (0x1000)
+
+/* FPGA / CPLD registers for CF socket */
+#define        BALLOON3_CF_STATUS_REG          (BALLOON3_FPGA_VIRT + 0x00e00008)
+#define        BALLOON3_CF_CONTROL_REG         (BALLOON3_FPGA_VIRT + 0x00e00008)
+/* FPGA / CPLD version register */
+#define        BALLOON3_FPGA_VER               (BALLOON3_FPGA_VIRT + 0x00e0001c)
+/* FPGA / CPLD registers for NAND flash */
+#define        BALLOON3_NAND_BASE              (PXA_CS4_PHYS + 0x00e00000)
+#define        BALLOON3_NAND_IO_REG            (BALLOON3_FPGA_VIRT + 0x00e00000)
+#define        BALLOON3_NAND_CONTROL2_REG      (BALLOON3_FPGA_VIRT + 0x00e00010)
+#define        BALLOON3_NAND_STAT_REG          (BALLOON3_FPGA_VIRT + 0x00e00014)
+#define        BALLOON3_NAND_CONTROL_REG       (BALLOON3_FPGA_VIRT + 0x00e00014)
+
+/* fpga/cpld interrupt control register */
+#define BALLOON3_INT_CONTROL_REG       (BALLOON3_FPGA_VIRT + 0x00e0000C)
+#define BALLOON3_VERSION_REG           (BALLOON3_FPGA_VIRT + 0x00e0001c)
+
+#define BALLOON3_SAMOSA_ADDR_REG       (BALLOON3_FPGA_VIRT + 0x00c00000)
+#define BALLOON3_SAMOSA_DATA_REG       (BALLOON3_FPGA_VIRT + 0x00c00004)
+#define BALLOON3_SAMOSA_STATUS_REG     (BALLOON3_FPGA_VIRT + 0x00c0001c)
+
+/* CF Status Register bits (read-only) bits */
+#define BALLOON3_CF_nIRQ               (1 << 0)
+#define BALLOON3_CF_nSTSCHG_BVD1       (1 << 1)
+
+/* CF Control Set Register bits / CF Control Clear Register bits (write-only) */
+#define BALLOON3_CF_RESET              (1 << 0)
+#define BALLOON3_CF_ENABLE             (1 << 1)
+#define BALLOON3_CF_ADD_ENABLE         (1 << 2)
+
+/* CF Interrupt sources */
+#define BALLOON3_BP_CF_NRDY_IRQ                BALLOON3_IRQ(0)
+#define BALLOON3_BP_NSTSCHG_IRQ                BALLOON3_IRQ(1)
+
+/* NAND Control register */
+#define        BALLOON3_NAND_CONTROL_FLWP      (1 << 7)
+#define        BALLOON3_NAND_CONTROL_FLSE      (1 << 6)
+#define        BALLOON3_NAND_CONTROL_FLCE3     (1 << 5)
+#define        BALLOON3_NAND_CONTROL_FLCE2     (1 << 4)
+#define        BALLOON3_NAND_CONTROL_FLCE1     (1 << 3)
+#define        BALLOON3_NAND_CONTROL_FLCE0     (1 << 2)
+#define        BALLOON3_NAND_CONTROL_FLALE     (1 << 1)
+#define        BALLOON3_NAND_CONTROL_FLCLE     (1 << 0)
+
+/* NAND Status register */
+#define        BALLOON3_NAND_STAT_RNB          (1 << 0)
+
+/* NAND Control2 register */
+#define        BALLOON3_NAND_CONTROL2_16BIT    (1 << 0)
+
+/* GPIOs for irqs */
+#define BALLOON3_GPIO_AUX_NIRQ         (94)
+#define BALLOON3_GPIO_CODEC_IRQ                (95)
+
+/* Timer and Idle LED locations */
+#define BALLOON3_GPIO_LED_NAND         (9)
+#define BALLOON3_GPIO_LED_IDLE         (10)
+
+/* backlight control */
+#define BALLOON3_GPIO_RUN_BACKLIGHT    (99)
+
+#define BALLOON3_GPIO_S0_CD            (105)
+
+/* NAND */
+#define BALLOON3_GPIO_RUN_NAND         (102)
+
+/* PCF8574A Leds */
+#define        BALLOON3_PCF_GPIO_BASE          160
+#define        BALLOON3_PCF_GPIO_LED0          (BALLOON3_PCF_GPIO_BASE + 0)
+#define        BALLOON3_PCF_GPIO_LED1          (BALLOON3_PCF_GPIO_BASE + 1)
+#define        BALLOON3_PCF_GPIO_LED2          (BALLOON3_PCF_GPIO_BASE + 2)
+#define        BALLOON3_PCF_GPIO_LED3          (BALLOON3_PCF_GPIO_BASE + 3)
+#define        BALLOON3_PCF_GPIO_LED4          (BALLOON3_PCF_GPIO_BASE + 4)
+#define        BALLOON3_PCF_GPIO_LED5          (BALLOON3_PCF_GPIO_BASE + 5)
+#define        BALLOON3_PCF_GPIO_LED6          (BALLOON3_PCF_GPIO_BASE + 6)
+#define        BALLOON3_PCF_GPIO_LED7          (BALLOON3_PCF_GPIO_BASE + 7)
+
+/* FPGA Interrupt Mask/Acknowledge Register */
+#define BALLOON3_INT_S0_IRQ            (1 << 0)  /* PCMCIA 0 IRQ */
+#define BALLOON3_INT_S0_STSCHG         (1 << 1)  /* PCMCIA 0 status changed */
+
+/* CPLD (and FPGA) interface definitions */
+#define CPLD_LCD0_DATA_SET             0x00
+#define CPLD_LCD0_DATA_CLR             0x10
+#define CPLD_LCD0_COMMAND_SET          0x01
+#define CPLD_LCD0_COMMAND_CLR          0x11
+#define CPLD_LCD1_DATA_SET             0x02
+#define CPLD_LCD1_DATA_CLR             0x12
+#define CPLD_LCD1_COMMAND_SET          0x03
+#define CPLD_LCD1_COMMAND_CLR          0x13
+
+#define CPLD_MISC_SET                  0x07
+#define CPLD_MISC_CLR                  0x17
+#define CPLD_MISC_LOON_NRESET_BIT      0
+#define CPLD_MISC_LOON_UNSUSP_BIT      1
+#define CPLD_MISC_RUN_5V_BIT           2
+#define CPLD_MISC_CHG_D0_BIT           3
+#define CPLD_MISC_CHG_D1_BIT           4
+#define CPLD_MISC_DAC_NCS_BIT          5
+
+#define CPLD_LCD_SET                   0x08
+#define CPLD_LCD_CLR                   0x18
+#define CPLD_LCD_BACKLIGHT_EN_0_BIT    0
+#define CPLD_LCD_BACKLIGHT_EN_1_BIT    1
+#define CPLD_LCD_LED_RED_BIT           4
+#define CPLD_LCD_LED_GREEN_BIT         5
+#define CPLD_LCD_NRESET_BIT            7
+
+#define CPLD_LCD_RO_SET                0x09
+#define CPLD_LCD_RO_CLR                0x19
+#define CPLD_LCD_RO_LCD0_nWAIT_BIT     0
+#define CPLD_LCD_RO_LCD1_nWAIT_BIT     1
+
+#define CPLD_SERIAL_SET                0x0a
+#define CPLD_SERIAL_CLR                0x1a
+#define CPLD_SERIAL_GSM_RI_BIT         0
+#define CPLD_SERIAL_GSM_CTS_BIT        1
+#define CPLD_SERIAL_GSM_DTR_BIT        2
+#define CPLD_SERIAL_LPR_CTS_BIT        3
+#define CPLD_SERIAL_TC232_CTS_BIT      4
+#define CPLD_SERIAL_TC232_DSR_BIT      5
+
+#define CPLD_SROUTING_SET              0x0b
+#define CPLD_SROUTING_CLR              0x1b
+#define CPLD_SROUTING_MSP430_LPR       0
+#define CPLD_SROUTING_MSP430_TC232     1
+#define CPLD_SROUTING_MSP430_GSM       2
+#define CPLD_SROUTING_LOON_LPR         (0 << 4)
+#define CPLD_SROUTING_LOON_TC232       (1 << 4)
+#define CPLD_SROUTING_LOON_GSM         (2 << 4)
+
+#define CPLD_AROUTING_SET              0x0c
+#define CPLD_AROUTING_CLR              0x1c
+#define CPLD_AROUTING_MIC2PHONE_BIT    0
+#define CPLD_AROUTING_PHONE2INT_BIT    1
+#define CPLD_AROUTING_PHONE2EXT_BIT    2
+#define CPLD_AROUTING_LOONL2INT_BIT    3
+#define CPLD_AROUTING_LOONL2EXT_BIT    4
+#define CPLD_AROUTING_LOONR2PHONE_BIT  5
+#define CPLD_AROUTING_LOONR2INT_BIT    6
+#define CPLD_AROUTING_LOONR2EXT_BIT    7
+
+/* Balloon3 Interrupts */
+#define BALLOON3_IRQ(x)                (IRQ_BOARD_START + (x))
+
+#define BALLOON3_AUX_NIRQ      PXA_GPIO_TO_IRQ(BALLOON3_GPIO_AUX_NIRQ)
+#define BALLOON3_CODEC_IRQ     PXA_GPIO_TO_IRQ(BALLOON3_GPIO_CODEC_IRQ)
+
+#define BALLOON3_NR_IRQS       (IRQ_BOARD_START + 16)
+
+extern int balloon3_has(enum balloon3_features feature);
+
+#endif
index 2e35354b61f56436745af60a67e2143e816cbdde..01f364a664468a85d9f7c1eb662d544b82179bc9 100644 (file)
@@ -40,6 +40,8 @@
 #include <linux/spi/spi_gpio.h>
 #include <linux/spi/tdo24m.h>
 
+#include <linux/soc/pxa/cpu.h>
+
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/setup.h>
@@ -51,7 +53,7 @@
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/mtd-nand-pxa3xx.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/usb-pxa3xx-ulpi.h>
 
 #include <asm/mach/map.h>
@@ -354,13 +356,13 @@ static struct platform_device cm_x300_spi_gpio = {
 static struct gpiod_lookup_table cm_x300_spi_gpiod_table = {
        .dev_id         = "spi_gpio",
        .table          = {
-               GPIO_LOOKUP("gpio-pxa", GPIO_LCD_SCL,
+               GPIO_LOOKUP("pca9555.1", GPIO_LCD_SCL - GPIO_LCD_BASE,
                            "sck", GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP("gpio-pxa", GPIO_LCD_DIN,
+               GPIO_LOOKUP("pca9555.1", GPIO_LCD_DIN - GPIO_LCD_BASE,
                            "mosi", GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP("gpio-pxa", GPIO_LCD_DOUT,
+               GPIO_LOOKUP("pca9555.1", GPIO_LCD_DOUT - GPIO_LCD_BASE,
                            "miso", GPIO_ACTIVE_HIGH),
-               GPIO_LOOKUP("gpio-pxa", GPIO_LCD_CS,
+               GPIO_LOOKUP("pca9555.1", GPIO_LCD_CS - GPIO_LCD_BASE,
                            "cs", GPIO_ACTIVE_HIGH),
                { },
        },
index b9c173ede891eb88fc4d68f76f4c1daec154e49d..b62af07b8f96c4d594aa2ac46b729f572d4d4bbf 100644 (file)
@@ -13,7 +13,6 @@
 #include <linux/interrupt.h>
 #include <linux/gpio/machine.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/mach/arch.h>
 #include <linux/i2c.h>
 #include <linux/platform_data/i2c-pxa.h>
diff --git a/arch/arm/mach-pxa/colibri-pcmcia.c b/arch/arm/mach-pxa/colibri-pcmcia.c
new file mode 100644 (file)
index 0000000..9da7b47
--- /dev/null
@@ -0,0 +1,165 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_colibri.c
+ *
+ * Driver for Toradex Colibri PXA270 CF socket
+ *
+ * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+#include <linux/gpio.h>
+
+#include <asm/mach-types.h>
+
+#include <pcmcia/soc_common.h>
+
+#define        COLIBRI270_RESET_GPIO   53
+#define        COLIBRI270_PPEN_GPIO    107
+#define        COLIBRI270_BVD1_GPIO    83
+#define        COLIBRI270_BVD2_GPIO    82
+#define        COLIBRI270_DETECT_GPIO  84
+#define        COLIBRI270_READY_GPIO   1
+
+#define        COLIBRI320_RESET_GPIO   77
+#define        COLIBRI320_PPEN_GPIO    57
+#define        COLIBRI320_BVD1_GPIO    53
+#define        COLIBRI320_BVD2_GPIO    79
+#define        COLIBRI320_DETECT_GPIO  81
+#define        COLIBRI320_READY_GPIO   29
+
+enum {
+       DETECT = 0,
+       READY = 1,
+       BVD1 = 2,
+       BVD2 = 3,
+       PPEN = 4,
+       RESET = 5,
+};
+
+/* Contents of this array are configured on-the-fly in init function */
+static struct gpio colibri_pcmcia_gpios[] = {
+       { 0,    GPIOF_IN,       "PCMCIA Detect" },
+       { 0,    GPIOF_IN,       "PCMCIA Ready" },
+       { 0,    GPIOF_IN,       "PCMCIA BVD1" },
+       { 0,    GPIOF_IN,       "PCMCIA BVD2" },
+       { 0,    GPIOF_INIT_LOW, "PCMCIA PPEN" },
+       { 0,    GPIOF_INIT_HIGH,"PCMCIA Reset" },
+};
+
+static int colibri_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       int ret;
+
+       ret = gpio_request_array(colibri_pcmcia_gpios,
+                               ARRAY_SIZE(colibri_pcmcia_gpios));
+       if (ret)
+               goto err1;
+
+       skt->socket.pci_irq = gpio_to_irq(colibri_pcmcia_gpios[READY].gpio);
+       skt->stat[SOC_STAT_CD].irq = gpio_to_irq(colibri_pcmcia_gpios[DETECT].gpio);
+       skt->stat[SOC_STAT_CD].name = "PCMCIA CD";
+
+err1:
+       return ret;
+}
+
+static void colibri_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       gpio_free_array(colibri_pcmcia_gpios,
+                       ARRAY_SIZE(colibri_pcmcia_gpios));
+}
+
+static void colibri_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                       struct pcmcia_state *state)
+{
+
+       state->detect = !!gpio_get_value(colibri_pcmcia_gpios[DETECT].gpio);
+       state->ready  = !!gpio_get_value(colibri_pcmcia_gpios[READY].gpio);
+       state->bvd1   = !!gpio_get_value(colibri_pcmcia_gpios[BVD1].gpio);
+       state->bvd2   = !!gpio_get_value(colibri_pcmcia_gpios[BVD2].gpio);
+       state->vs_3v  = 1;
+       state->vs_Xv  = 0;
+}
+
+static int
+colibri_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                               const socket_state_t *state)
+{
+       gpio_set_value(colibri_pcmcia_gpios[PPEN].gpio,
+                       !(state->Vcc == 33 && state->Vpp < 50));
+       gpio_set_value(colibri_pcmcia_gpios[RESET].gpio,
+                       state->flags & SS_RESET);
+       return 0;
+}
+
+static struct pcmcia_low_level colibri_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+
+       .first                  = 0,
+       .nr                     = 1,
+
+       .hw_init                = colibri_pcmcia_hw_init,
+       .hw_shutdown            = colibri_pcmcia_hw_shutdown,
+
+       .socket_state           = colibri_pcmcia_socket_state,
+       .configure_socket       = colibri_pcmcia_configure_socket,
+};
+
+static struct platform_device *colibri_pcmcia_device;
+
+static int __init colibri_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_colibri() && !machine_is_colibri320())
+               return -ENODEV;
+
+       colibri_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!colibri_pcmcia_device)
+               return -ENOMEM;
+
+       /* Colibri PXA270 */
+       if (machine_is_colibri()) {
+               colibri_pcmcia_gpios[RESET].gpio        = COLIBRI270_RESET_GPIO;
+               colibri_pcmcia_gpios[PPEN].gpio         = COLIBRI270_PPEN_GPIO;
+               colibri_pcmcia_gpios[BVD1].gpio         = COLIBRI270_BVD1_GPIO;
+               colibri_pcmcia_gpios[BVD2].gpio         = COLIBRI270_BVD2_GPIO;
+               colibri_pcmcia_gpios[DETECT].gpio       = COLIBRI270_DETECT_GPIO;
+               colibri_pcmcia_gpios[READY].gpio        = COLIBRI270_READY_GPIO;
+       /* Colibri PXA320 */
+       } else if (machine_is_colibri320()) {
+               colibri_pcmcia_gpios[RESET].gpio        = COLIBRI320_RESET_GPIO;
+               colibri_pcmcia_gpios[PPEN].gpio         = COLIBRI320_PPEN_GPIO;
+               colibri_pcmcia_gpios[BVD1].gpio         = COLIBRI320_BVD1_GPIO;
+               colibri_pcmcia_gpios[BVD2].gpio         = COLIBRI320_BVD2_GPIO;
+               colibri_pcmcia_gpios[DETECT].gpio       = COLIBRI320_DETECT_GPIO;
+               colibri_pcmcia_gpios[READY].gpio        = COLIBRI320_READY_GPIO;
+       }
+
+       ret = platform_device_add_data(colibri_pcmcia_device,
+               &colibri_pcmcia_ops, sizeof(colibri_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(colibri_pcmcia_device);
+
+       if (ret)
+               platform_device_put(colibri_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit colibri_pcmcia_exit(void)
+{
+       platform_device_unregister(colibri_pcmcia_device);
+}
+
+module_init(colibri_pcmcia_init);
+module_exit(colibri_pcmcia_exit);
+
+MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
+MODULE_DESCRIPTION("PCMCIA support for Toradex Colibri PXA270/PXA320");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_LICENSE("GPL");
index e5879e8b068243eca8357226d58bc429c66a5cff..f6eaf464ca8361a2054a07cabce8beda7cb0a6ae 100644 (file)
@@ -25,7 +25,6 @@
 #include <asm/irq.h>
 #include <asm/mach-types.h>
 
-#include <mach/hardware.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include "pxa27x.h"
index 2f2cd2ae4187e6b6b23ea6e7eccaca643ef1bcb7..5dc66975283683bdb95103a22df7e8ddd1c938b6 100644 (file)
@@ -23,7 +23,7 @@
 #include <asm/mach-types.h>
 #include <linux/sizes.h>
 
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "colibri.h"
 #include "pxa27x.h"
 
index 82052dfd96b69e27a1527dfda23689fd6c3a72de..11ca6c4795e7456a1f478d50e244518d99438277 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/platform_device.h>
 #include <linux/gpio.h>
 #include <linux/interrupt.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <asm/mach-types.h>
 #include <linux/sizes.h>
@@ -23,7 +24,7 @@
 #include "colibri.h"
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/video-pxafb.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include "generic.h"
 #include "devices.h"
index 35dd3adb7712e57d5db57f90dc5f67af55e9e692..1a59056e181e64f98d20b7bc017f3bddbe004f08 100644 (file)
@@ -24,7 +24,7 @@
 #include "colibri.h"
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "pxa27x-udc.h"
 #include "udc.h"
 
index 3cead80a2b3720e96faf17ec31d6d14d6499f3d7..77d6ef5fa42d3c4b9a416d8ef5107800e23c345a 100644 (file)
 #include <linux/gpio.h>
 #include <linux/etherdevice.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <linux/sizes.h>
 #include <asm/system_info.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/irq.h>
-#include <mach/pxa3xx-regs.h>
+#include "pxa3xx-regs.h"
 #include "mfp-pxa300.h"
 #include "colibri.h"
 #include <linux/platform_data/mmc-pxamci.h>
index 85525d49e321bc7983559435e8ea60a14ae4a47d..01a46f36cc1f68d2abc3a647ad5d3f6970bdbb01 100644 (file)
@@ -3,7 +3,7 @@
 #define _COLIBRI_H_
 
 #include <net/ax88796.h>
-#include <mach/mfp.h>
+#include "mfp.h"
 
 /*
  * base board glue for PXA270 module
index 44659fbc37bab8e8f7f31622fb2b5cf4cda9ef74..c546356d0f0214e45fef57d86bba7326dcde67c9 100644 (file)
@@ -39,7 +39,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 
 #include <asm/mach/arch.h>
@@ -50,7 +49,7 @@
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include "udc.h"
-#include <mach/corgi.h>
+#include "corgi.h"
 #include "sharpsl_pm.h"
 
 #include <asm/mach/sharpsl_param.h>
@@ -473,6 +472,25 @@ static struct platform_device corgiled_device = {
        },
 };
 
+static struct gpiod_lookup_table corgi_audio_gpio_table = {
+       .dev_id = "corgi-audio",
+       .table = {
+               GPIO_LOOKUP("sharp-scoop",
+                           CORGI_GPIO_MUTE_L - CORGI_SCOOP_GPIO_BASE,
+                           "mute-l", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("sharp-scoop",
+                           CORGI_GPIO_MUTE_R - CORGI_SCOOP_GPIO_BASE,
+                           "mute-r", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("sharp-scoop",
+                           CORGI_GPIO_APM_ON - CORGI_SCOOP_GPIO_BASE,
+                           "apm-on", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("sharp-scoop",
+                           CORGI_GPIO_MIC_BIAS - CORGI_SCOOP_GPIO_BASE,
+                           "mic-bias", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 /*
  * Corgi Audio
  */
@@ -745,6 +763,7 @@ static void __init corgi_init(void)
 
        pxa_set_udc_info(&udc_info);
        gpiod_add_lookup_table(&corgi_mci_gpio_table);
+       gpiod_add_lookup_table(&corgi_audio_gpio_table);
        pxa_set_mci_info(&corgi_mci_platform_data);
        pxa_set_ficp_info(&corgi_ficp_platform_data);
        pxa_set_i2c_info(NULL);
diff --git a/arch/arm/mach-pxa/corgi.h b/arch/arm/mach-pxa/corgi.h
new file mode 100644 (file)
index 0000000..b565ca7
--- /dev/null
@@ -0,0 +1,110 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Hardware specific definitions for SL-C7xx series of PDAs
+ *
+ * Copyright (c) 2004-2005 Richard Purdie
+ *
+ * Based on Sharp's 2.4 kernel patches
+ */
+#ifndef __ASM_ARCH_CORGI_H
+#define __ASM_ARCH_CORGI_H  1
+
+#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
+
+/*
+ * Corgi (Non Standard) GPIO Definitions
+ */
+#define CORGI_GPIO_KEY_INT                     (0)     /* Keyboard Interrupt */
+#define CORGI_GPIO_AC_IN                       (1) /* Charger Detection */
+#define CORGI_GPIO_WAKEUP                      (3) /* System wakeup notification? */
+#define CORGI_GPIO_AK_INT                      (4)     /* Headphone Jack Control Interrupt */
+#define CORGI_GPIO_TP_INT                      (5)     /* Touch Panel Interrupt */
+#define CORGI_GPIO_nSD_WP                      (7) /* SD Write Protect? */
+#define CORGI_GPIO_nSD_DETECT          (9) /* MMC/SD Card Detect */
+#define CORGI_GPIO_nSD_INT                     (10) /* SD Interrupt for SDIO? */
+#define CORGI_GPIO_MAIN_BAT_LOW                (11) /* Main Battery Low Notification */
+#define CORGI_GPIO_BAT_COVER           (11) /* Battery Cover Detect */
+#define CORGI_GPIO_LED_ORANGE          (13) /* Orange LED Control */
+#define CORGI_GPIO_CF_CD                       (14) /* Compact Flash Card Detect */
+#define CORGI_GPIO_CHRG_FULL           (16) /* Charging Complete Notification */
+#define CORGI_GPIO_CF_IRQ                      (17) /* Compact Flash Interrupt */
+#define CORGI_GPIO_LCDCON_CS           (19) /* LCD Control Chip Select */
+#define CORGI_GPIO_MAX1111_CS          (20) /* MAX1111 Chip Select */
+#define CORGI_GPIO_ADC_TEMP_ON         (21) /* Select battery voltage or temperature */
+#define CORGI_GPIO_IR_ON                       (22) /* Enable IR Transceiver */
+#define CORGI_GPIO_ADS7846_CS          (24) /* ADS7846 Chip Select */
+#define CORGI_GPIO_SD_PWR                      (33) /* MMC/SD Power */
+#define CORGI_GPIO_CHRG_ON                     (38) /* Enable battery Charging */
+#define CORGI_GPIO_DISCHARGE_ON                (42) /* Enable battery Discharge */
+#define CORGI_GPIO_CHRG_UKN                    (43) /* Unknown Charging (Bypass Control?) */
+#define CORGI_GPIO_HSYNC                       (44) /* LCD HSync Pulse */
+#define CORGI_GPIO_USB_PULLUP          (45) /* USB show presence to host */
+
+
+/*
+ * Corgi Keyboard Definitions
+ */
+#define CORGI_KEY_STROBE_NUM           (12)
+#define CORGI_KEY_SENSE_NUM                    (8)
+#define CORGI_GPIO_ALL_STROBE_BIT      (0x00003ffc)
+#define CORGI_GPIO_HIGH_SENSE_BIT      (0xfc000000)
+#define CORGI_GPIO_HIGH_SENSE_RSHIFT   (26)
+#define CORGI_GPIO_LOW_SENSE_BIT       (0x00000003)
+#define CORGI_GPIO_LOW_SENSE_LSHIFT    (6)
+#define CORGI_GPIO_STROBE_BIT(a)       GPIO_bit(66+(a))
+#define CORGI_GPIO_SENSE_BIT(a)                GPIO_bit(58+(a))
+#define CORGI_GAFR_ALL_STROBE_BIT      (0x0ffffff0)
+#define CORGI_GAFR_HIGH_SENSE_BIT      (0xfff00000)
+#define CORGI_GAFR_LOW_SENSE_BIT       (0x0000000f)
+#define CORGI_GPIO_KEY_SENSE(a)                (58+(a))
+#define CORGI_GPIO_KEY_STROBE(a)       (66+(a))
+
+
+/*
+ * Corgi Interrupts
+ */
+#define CORGI_IRQ_GPIO_KEY_INT         PXA_GPIO_TO_IRQ(0)
+#define CORGI_IRQ_GPIO_AC_IN           PXA_GPIO_TO_IRQ(1)
+#define CORGI_IRQ_GPIO_WAKEUP          PXA_GPIO_TO_IRQ(3)
+#define CORGI_IRQ_GPIO_AK_INT          PXA_GPIO_TO_IRQ(4)
+#define CORGI_IRQ_GPIO_TP_INT          PXA_GPIO_TO_IRQ(5)
+#define CORGI_IRQ_GPIO_nSD_DETECT      PXA_GPIO_TO_IRQ(9)
+#define CORGI_IRQ_GPIO_nSD_INT         PXA_GPIO_TO_IRQ(10)
+#define CORGI_IRQ_GPIO_MAIN_BAT_LOW    PXA_GPIO_TO_IRQ(11)
+#define CORGI_IRQ_GPIO_CF_CD           PXA_GPIO_TO_IRQ(14)
+#define CORGI_IRQ_GPIO_CHRG_FULL       PXA_GPIO_TO_IRQ(16)     /* Battery fully charged */
+#define CORGI_IRQ_GPIO_CF_IRQ          PXA_GPIO_TO_IRQ(17)
+#define CORGI_IRQ_GPIO_KEY_SENSE(a)    PXA_GPIO_TO_IRQ(58+(a)) /* Keyboard Sense lines */
+
+
+/*
+ * Corgi SCOOP GPIOs and Config
+ */
+#define CORGI_SCP_LED_GREEN            SCOOP_GPCR_PA11
+#define CORGI_SCP_SWA                  SCOOP_GPCR_PA12  /* Hinge Switch A */
+#define CORGI_SCP_SWB                  SCOOP_GPCR_PA13  /* Hinge Switch B */
+#define CORGI_SCP_MUTE_L               SCOOP_GPCR_PA14
+#define CORGI_SCP_MUTE_R               SCOOP_GPCR_PA15
+#define CORGI_SCP_AKIN_PULLUP  SCOOP_GPCR_PA16
+#define CORGI_SCP_APM_ON               SCOOP_GPCR_PA17
+#define CORGI_SCP_BACKLIGHT_CONT       SCOOP_GPCR_PA18
+#define CORGI_SCP_MIC_BIAS             SCOOP_GPCR_PA19
+
+#define CORGI_SCOOP_IO_DIR     ( CORGI_SCP_LED_GREEN | CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R | \
+                       CORGI_SCP_AKIN_PULLUP | CORGI_SCP_APM_ON | CORGI_SCP_BACKLIGHT_CONT | \
+                       CORGI_SCP_MIC_BIAS )
+#define CORGI_SCOOP_IO_OUT     ( CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R )
+
+#define CORGI_SCOOP_GPIO_BASE          (PXA_NR_BUILTIN_GPIO)
+#define CORGI_GPIO_LED_GREEN           (CORGI_SCOOP_GPIO_BASE + 0)
+#define CORGI_GPIO_SWA                 (CORGI_SCOOP_GPIO_BASE + 1)  /* Hinge Switch A */
+#define CORGI_GPIO_SWB                 (CORGI_SCOOP_GPIO_BASE + 2)  /* Hinge Switch B */
+#define CORGI_GPIO_MUTE_L              (CORGI_SCOOP_GPIO_BASE + 3)
+#define CORGI_GPIO_MUTE_R              (CORGI_SCOOP_GPIO_BASE + 4)
+#define CORGI_GPIO_AKIN_PULLUP         (CORGI_SCOOP_GPIO_BASE + 5)
+#define CORGI_GPIO_APM_ON              (CORGI_SCOOP_GPIO_BASE + 6)
+#define CORGI_GPIO_BACKLIGHT_CONT      (CORGI_SCOOP_GPIO_BASE + 7)
+#define CORGI_GPIO_MIC_BIAS            (CORGI_SCOOP_GPIO_BASE + 8)
+
+#endif /* __ASM_ARCH_CORGI_H  */
+
index 092dcb9fced5feb9efc0e7458998679edbdbb29e..555a5c1afd9664eee6cc1fedc69b5a67b387b782 100644 (file)
 
 #include <asm/irq.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 
-#include <mach/corgi.h>
-#include <mach/pxa2xx-regs.h>
+#include "corgi.h"
+#include "pxa2xx-regs.h"
 #include "sharpsl_pm.h"
 
 #include "generic.h"
index 98fcdc6e2944ecf9c9c7a188132a4cea024af5f8..410b1af87d55bc70411b63450b365f80f689312a 100644 (file)
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
+
 #include "csb726.h"
 #include "pxa27x.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <mach/audio.h>
-#include <mach/smemc.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
index 30d7cf926b8432425db5e350df3cc94b2f5b661c..628928743bd58799a69c77f8c0e46877c22d0c47 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef CSB726_H
 #define CSB726_H
 
-#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 
 #define CSB726_GPIO_IRQ_LAN    52
 #define CSB726_GPIO_IRQ_SM501  53
index 09b8495f3fd91b5bd603b82d86ee27f5d4f21e53..a7b92dd1ca9e98fb567fa5fd1f5b4c05806102c0 100644 (file)
@@ -9,21 +9,23 @@
 #include <linux/dmaengine.h>
 #include <linux/spi/pxa2xx_spi.h>
 #include <linux/platform_data/i2c-pxa.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "udc.h"
 #include <linux/platform_data/usb-pxa3xx-ulpi.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/irda-pxaficp.h>
-#include <mach/irqs.h>
+#include "irqs.h"
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/keypad-pxa27x.h>
 #include <linux/platform_data/media/camera-pxa.h>
-#include <mach/audio.h>
-#include <mach/hardware.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/mmp_dma.h>
 #include <linux/platform_data/mtd-nand-pxa3xx.h>
 
+#include "regs-ost.h"
+#include "reset.h"
 #include "devices.h"
 #include "generic.h"
 
@@ -1118,3 +1120,12 @@ void __init pxa2xx_set_dmac_info(struct mmp_dma_platdata *dma_pdata)
 {
        pxa_register_device(&pxa2xx_pxa_dma, dma_pdata);
 }
+
+void __init pxa_register_wdt(unsigned int reset_status)
+{
+       struct resource res = DEFINE_RES_MEM(OST_PHYS, OST_LEN);
+
+       reset_status &= RESET_STATUS_WATCHDOG;
+       platform_device_register_resndata(NULL, "sa1100_wdt", -1, &res, 1,
+                                         &reset_status, sizeof(reset_status));
+}
diff --git a/arch/arm/mach-pxa/e740-pcmcia.c b/arch/arm/mach-pxa/e740-pcmcia.c
new file mode 100644 (file)
index 0000000..11a2c5d
--- /dev/null
@@ -0,0 +1,127 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Toshiba e740 PCMCIA specific routines.
+ *
+ * (c) 2004 Ian Molton <spyro@f2s.com>
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/gpio.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+
+#include "eseries-gpio.h"
+
+#include <asm/irq.h>
+#include <asm/mach-types.h>
+
+#include <pcmcia/soc_common.h>
+
+static int e740_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       if (skt->nr == 0) {
+               skt->stat[SOC_STAT_CD].gpio = GPIO_E740_PCMCIA_CD0;
+               skt->stat[SOC_STAT_CD].name = "CF card detect";
+               skt->stat[SOC_STAT_RDY].gpio = GPIO_E740_PCMCIA_RDY0;
+               skt->stat[SOC_STAT_RDY].name = "CF ready";
+       } else {
+               skt->stat[SOC_STAT_CD].gpio = GPIO_E740_PCMCIA_CD1;
+               skt->stat[SOC_STAT_CD].name = "Wifi switch";
+               skt->stat[SOC_STAT_RDY].gpio = GPIO_E740_PCMCIA_RDY1;
+               skt->stat[SOC_STAT_RDY].name = "Wifi ready";
+       }
+
+       return 0;
+}
+
+static void e740_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                       struct pcmcia_state *state)
+{
+       state->vs_3v  = 1;
+       state->vs_Xv  = 0;
+}
+
+static int e740_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                                       const socket_state_t *state)
+{
+       if (state->flags & SS_RESET) {
+               if (skt->nr == 0)
+                       gpio_set_value(GPIO_E740_PCMCIA_RST0, 1);
+               else
+                       gpio_set_value(GPIO_E740_PCMCIA_RST1, 1);
+       } else {
+               if (skt->nr == 0)
+                       gpio_set_value(GPIO_E740_PCMCIA_RST0, 0);
+               else
+                       gpio_set_value(GPIO_E740_PCMCIA_RST1, 0);
+       }
+
+       switch (state->Vcc) {
+       case 0: /* Socket off */
+               if (skt->nr == 0)
+                       gpio_set_value(GPIO_E740_PCMCIA_PWR0, 0);
+               else
+                       gpio_set_value(GPIO_E740_PCMCIA_PWR1, 1);
+               break;
+       case 50:
+       case 33: /* socket on */
+               if (skt->nr == 0)
+                       gpio_set_value(GPIO_E740_PCMCIA_PWR0, 1);
+               else
+                       gpio_set_value(GPIO_E740_PCMCIA_PWR1, 0);
+               break;
+       default:
+               printk(KERN_ERR "e740_cs: Unsupported Vcc: %d\n", state->Vcc);
+       }
+
+       return 0;
+}
+
+static struct pcmcia_low_level e740_pcmcia_ops = {
+       .owner            = THIS_MODULE,
+       .hw_init          = e740_pcmcia_hw_init,
+       .socket_state     = e740_pcmcia_socket_state,
+       .configure_socket = e740_pcmcia_configure_socket,
+       .nr               = 2,
+};
+
+static struct platform_device *e740_pcmcia_device;
+
+static int __init e740_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_e740())
+               return -ENODEV;
+
+       e740_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!e740_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(e740_pcmcia_device, &e740_pcmcia_ops,
+                                       sizeof(e740_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(e740_pcmcia_device);
+
+       if (ret)
+               platform_device_put(e740_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit e740_pcmcia_exit(void)
+{
+       platform_device_unregister(e740_pcmcia_device);
+}
+
+module_init(e740_pcmcia_init);
+module_exit(e740_pcmcia_exit);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Ian Molton <spyro@f2s.com>");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_DESCRIPTION("e740 PCMCIA platform support");
diff --git a/arch/arm/mach-pxa/eseries-gpio.h b/arch/arm/mach-pxa/eseries-gpio.h
new file mode 100644 (file)
index 0000000..5c64560
--- /dev/null
@@ -0,0 +1,63 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  eseries-gpio.h
+ *
+ *  Copyright (C) Ian Molton <spyro@f2s.com>
+ */
+
+/* e-series power button */
+#define GPIO_ESERIES_POWERBTN     0
+
+/* UDC GPIO definitions */
+#define GPIO_E7XX_USB_DISC       13
+#define GPIO_E7XX_USB_PULLUP      3
+
+#define GPIO_E800_USB_DISC        4
+#define GPIO_E800_USB_PULLUP     84
+
+/* e740 PCMCIA GPIO definitions */
+/* Note: PWR1 seems to be inverted */
+#define GPIO_E740_PCMCIA_CD0      8
+#define GPIO_E740_PCMCIA_CD1     44
+#define GPIO_E740_PCMCIA_RDY0    11
+#define GPIO_E740_PCMCIA_RDY1     6
+#define GPIO_E740_PCMCIA_RST0    27
+#define GPIO_E740_PCMCIA_RST1    24
+#define GPIO_E740_PCMCIA_PWR0    20
+#define GPIO_E740_PCMCIA_PWR1    23
+
+/* e750 PCMCIA GPIO definitions */
+#define GPIO_E750_PCMCIA_CD0      8
+#define GPIO_E750_PCMCIA_RDY0    12
+#define GPIO_E750_PCMCIA_RST0    27
+#define GPIO_E750_PCMCIA_PWR0    20
+
+/* e800 PCMCIA GPIO definitions */
+#define GPIO_E800_PCMCIA_RST0    69
+#define GPIO_E800_PCMCIA_RST1    72
+#define GPIO_E800_PCMCIA_PWR0    20
+#define GPIO_E800_PCMCIA_PWR1    73
+
+/* e7xx IrDA power control */
+#define GPIO_E7XX_IR_OFF         38
+
+/* e740 audio control GPIOs */
+#define GPIO_E740_WM9705_nAVDD2  16
+#define GPIO_E740_MIC_ON         40
+#define GPIO_E740_AMP_ON         41
+
+/* e750 audio control GPIOs */
+#define GPIO_E750_HP_AMP_OFF      4
+#define GPIO_E750_SPK_AMP_OFF     7
+#define GPIO_E750_HP_DETECT      37
+
+/* e800 audio control GPIOs */
+#define GPIO_E800_HP_DETECT      81
+#define GPIO_E800_HP_AMP_OFF     82
+#define GPIO_E800_SPK_AMP_ON     83
+
+/* ASIC related GPIOs */
+#define GPIO_ESERIES_TMIO_IRQ        5
+#define GPIO_ESERIES_TMIO_PCLR      19
+#define GPIO_ESERIES_TMIO_SUSPEND   45
+#define GPIO_E800_ANGELX_IRQ      8
index f37c44b6139d7df265a3867cf00ae0584eeaff7f..08f8737aa8fd53bd7e1b6a64ff5b203864f83d9f 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/mtd/rawnand.h>
 #include <linux/mtd/partitions.h>
 #include <linux/memblock.h>
+#include <linux/gpio/machine.h>
 
 #include <video/w100fb.h>
 
@@ -32,9 +33,9 @@
 #include <asm/mach-types.h>
 
 #include "pxa25x.h"
-#include <mach/eseries-gpio.h>
+#include "eseries-gpio.h"
 #include "eseries-irq.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
 #include "udc.h"
 #include <linux/platform_data/irda-pxaficp.h>
@@ -520,6 +521,16 @@ static struct platform_device e740_audio_device = {
        .id             = -1,
 };
 
+static struct gpiod_lookup_table e740_audio_gpio_table = {
+       .dev_id = "e740-audio",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E740_WM9705_nAVDD2, "Audio power",  GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E740_AMP_ON, "Output amp",  GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E740_MIC_ON, "Mic amp", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 /* ----------------------------------------------------------------------- */
 
 static struct platform_device *e740_devices[] __initdata = {
@@ -540,6 +551,7 @@ static void __init e740_init(void)
                        "UDCCLK", &pxa25x_device_udc.dev),
        eseries_get_tmio_gpios();
        gpiod_add_lookup_table(&e7xx_gpio_vbus_gpiod_table);
+       gpiod_add_lookup_table(&e740_audio_gpio_table);
        platform_add_devices(ARRAY_AND_SIZE(e740_devices));
        pxa_set_ac97_info(NULL);
        pxa_set_ficp_info(&e7xx_ficp_platform_data);
@@ -699,7 +711,6 @@ static struct tc6393xb_platform_data e750_tc6393xb_info = {
        .irq_base       = IRQ_BOARD_START,
        .scr_pll2cr     = 0x0cc1,
        .scr_gper       = 0,
-       .gpio_base      = -1,
        .suspend        = &eseries_tmio_suspend,
        .resume         = &eseries_tmio_resume,
        .enable         = &eseries_tmio_enable,
@@ -716,6 +727,15 @@ static struct platform_device e750_tc6393xb_device = {
        .resource      = eseries_tmio_resources,
 };
 
+static struct gpiod_lookup_table e750_audio_gpio_table = {
+       .dev_id = "e750-audio",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E750_HP_AMP_OFF, "Output amp",  GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E750_SPK_AMP_OFF, "Mic amp", GPIO_ACTIVE_LOW),
+               { },
+       },
+};
+
 static struct platform_device e750_audio_device = {
        .name           = "e750-audio",
        .id             = -1,
@@ -740,6 +760,7 @@ static void __init e750_init(void)
                        "GPIO11_CLK", NULL),
        eseries_get_tmio_gpios();
        gpiod_add_lookup_table(&e7xx_gpio_vbus_gpiod_table);
+       gpiod_add_lookup_table(&e750_audio_gpio_table);
        platform_add_devices(ARRAY_AND_SIZE(e750_devices));
        pxa_set_ac97_info(NULL);
        pxa_set_ficp_info(&e7xx_ficp_platform_data);
@@ -918,7 +939,6 @@ static struct tc6393xb_platform_data e800_tc6393xb_info = {
        .irq_base       = IRQ_BOARD_START,
        .scr_pll2cr     = 0x0cc1,
        .scr_gper       = 0,
-       .gpio_base      = -1,
        .suspend        = &eseries_tmio_suspend,
        .resume         = &eseries_tmio_resume,
        .enable         = &eseries_tmio_enable,
@@ -935,6 +955,15 @@ static struct platform_device e800_tc6393xb_device = {
        .resource      = eseries_tmio_resources,
 };
 
+static struct gpiod_lookup_table e800_audio_gpio_table = {
+       .dev_id = "e800-audio",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E800_HP_AMP_OFF, "Output amp",  GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP("gpio-pxa",  GPIO_E800_SPK_AMP_ON, "Mic amp", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 static struct platform_device e800_audio_device = {
        .name           = "e800-audio",
        .id             = -1,
@@ -959,6 +988,7 @@ static void __init e800_init(void)
                        "GPIO11_CLK", NULL),
        eseries_get_tmio_gpios();
        gpiod_add_lookup_table(&e800_gpio_vbus_gpiod_table);
+       gpiod_add_lookup_table(&e800_audio_gpio_table);
        platform_add_devices(ARRAY_AND_SIZE(e800_devices));
        pxa_set_ac97_info(NULL);
 }
index eb85950e7c0e8afef641b5f6dc94e727d6010aff..69c2ec02a16c7fc3a6f88e6d3aa3b8e94bf1b489 100644 (file)
@@ -29,7 +29,6 @@
 #include "pxa27x.h"
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <mach/hardware.h>
 #include <linux/platform_data/keypad-pxa27x.h>
 #include <linux/platform_data/media/camera-pxa.h>
 
index ab7cdffd7ea807c09a0289c35a0e7b6460f3d6fd..02fdde7e3e342d3367c0488f75d296c523e4b2cc 100644 (file)
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
+#include <linux/soc/pxa/cpu.h>
+#include <linux/soc/pxa/smemc.h>
+#include <linux/clk/pxa.h>
 
-#include <mach/hardware.h>
 #include <asm/mach/map.h>
 #include <asm/mach-types.h>
 
-#include <mach/irqs.h>
-#include <mach/reset.h>
-#include <mach/smemc.h>
-#include <mach/pxa3xx-regs.h>
+#include "addr-map.h"
+#include "irqs.h"
+#include "reset.h"
+#include "smemc.h"
+#include "pxa3xx-regs.h"
 
 #include "generic.h"
 #include <clocksource/pxa.h>
@@ -46,28 +49,47 @@ void clear_reset_status(unsigned int mask)
 void __init pxa_timer_init(void)
 {
        if (cpu_is_pxa25x())
-               pxa25x_clocks_init();
+               pxa25x_clocks_init(io_p2v(0x41300000));
        if (cpu_is_pxa27x())
-               pxa27x_clocks_init();
+               pxa27x_clocks_init(io_p2v(0x41300000));
        if (cpu_is_pxa3xx())
-               pxa3xx_clocks_init();
+               pxa3xx_clocks_init(io_p2v(0x41340000), io_p2v(0x41350000));
        pxa_timer_nodt_init(IRQ_OST0, io_p2v(0x40a00000));
 }
 
-/*
- * Get the clock frequency as reflected by CCCR and the turbo flag.
- * We assume these values have been applied via a fcs.
- * If info is not 0 we also display the current settings.
- */
-unsigned int get_clk_frequency_khz(int info)
+void pxa_smemc_set_pcmcia_timing(int sock, u32 mcmem, u32 mcatt, u32 mcio)
 {
-       if (cpu_is_pxa25x())
-               return pxa25x_get_clk_frequency_khz(info);
-       else if (cpu_is_pxa27x())
-               return pxa27x_get_clk_frequency_khz(info);
-       return 0;
+       __raw_writel(mcmem, MCMEM(sock));
+       __raw_writel(mcatt, MCATT(sock));
+       __raw_writel(mcio, MCIO(sock));
+}
+EXPORT_SYMBOL_GPL(pxa_smemc_set_pcmcia_timing);
+
+void pxa_smemc_set_pcmcia_socket(int nr)
+{
+       switch (nr) {
+       case 0:
+               __raw_writel(0, MECR);
+               break;
+       case 1:
+               /*
+                * We have at least one socket, so set MECR:CIT
+                * (Card Is There)
+                */
+               __raw_writel(MECR_CIT, MECR);
+               break;
+       case 2:
+               /* Set CIT and MECR:NOS (Number Of Sockets) */
+               __raw_writel(MECR_CIT | MECR_NOS, MECR);
+               break;
+       }
+}
+EXPORT_SYMBOL_GPL(pxa_smemc_set_pcmcia_socket);
+
+void __iomem *pxa_smemc_get_mdrefr(void)
+{
+       return MDREFR;
 }
-EXPORT_SYMBOL(get_clk_frequency_khz);
 
 /*
  * Intel PXA2xx internal register mapping.
index 3b7873f8e1f8c5709fb444b4db28f6e7fd263ac9..7bb1499de4c5d8d88acba4babd4699e92917fddb 100644 (file)
@@ -10,7 +10,6 @@
 
 struct irq_data;
 
-extern unsigned int get_clk_frequency_khz(int info);
 extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *,
                                             unsigned int));
 extern void __init pxa_map_io(void);
@@ -23,19 +22,16 @@ extern void pxa_timer_init(void);
 #define ARRAY_AND_SIZE(x)      (x), ARRAY_SIZE(x)
 
 #define pxa25x_handle_irq icip_handle_irq
-extern int __init pxa25x_clocks_init(void);
 extern void __init pxa25x_init_irq(void);
 extern void __init pxa25x_map_io(void);
 extern void __init pxa26x_init_irq(void);
 
 #define pxa27x_handle_irq ichp_handle_irq
-extern int __init pxa27x_clocks_init(void);
 extern unsigned        pxa27x_get_clk_frequency_khz(int);
 extern void __init pxa27x_init_irq(void);
 extern void __init pxa27x_map_io(void);
 
 #define pxa3xx_handle_irq ichp_handle_irq
-extern int __init pxa3xx_clocks_init(void);
 extern void __init pxa3xx_init_irq(void);
 extern void __init pxa3xx_map_io(void);
 
@@ -71,8 +67,3 @@ extern unsigned pxa25x_get_clk_frequency_khz(int);
 #define pxa27x_get_clk_frequency_khz(x)                (0)
 #endif
 
-#ifdef CONFIG_PXA3xx
-extern unsigned        pxa3xx_get_clk_frequency_khz(int);
-#else
-#define pxa3xx_get_clk_frequency_khz(x)                (0)
-#endif
index 49dd618b10f7ef742fee5f996ca1ff6cc73ebf24..72b08a9bf0fd2a70962c4e943d3acfed851567a5 100644 (file)
@@ -28,7 +28,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <linux/sizes.h>
 
index 470250cdee165e0dcd0c3bee19a49417c870068c..9005b3c0aabdef9028031a1466f782a3a1774814 100644 (file)
@@ -3,7 +3,7 @@
  *  arch/arm/mach-pxa/include/mach/gumstix.h
  */
 
-#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 
 /* BTRESET - Reset line to Bluetooth module, active low signal. */
 #define GPIO_GUMSTIX_BTRESET          7
index ece1e71c90a919f267b99dd3eb9a2914921ee564..212efe24aedb221e0bf3b30847cbcefc6086c26b 100644 (file)
@@ -29,7 +29,7 @@
 #include "pxa25x.h"
 #include "h5000.h"
 #include "udc.h"
-#include <mach/smemc.h>
+#include "smemc.h"
 
 #include "generic.h"
 
diff --git a/arch/arm/mach-pxa/hx4700-pcmcia.c b/arch/arm/mach-pxa/hx4700-pcmcia.c
new file mode 100644 (file)
index 0000000..e2331df
--- /dev/null
@@ -0,0 +1,118 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ *  Copyright (C) 2012 Paul Parsons <lost.distance@yahoo.com>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/err.h>
+#include <linux/gpio.h>
+#include <linux/irq.h>
+
+#include <asm/mach-types.h>
+#include "hx4700.h"
+
+#include <pcmcia/soc_common.h>
+
+static struct gpio gpios[] = {
+       { GPIO114_HX4700_CF_RESET,    GPIOF_OUT_INIT_LOW,   "CF reset"        },
+       { EGPIO4_CF_3V3_ON,           GPIOF_OUT_INIT_LOW,   "CF 3.3V enable"  },
+};
+
+static int hx4700_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       int ret;
+
+       ret = gpio_request_array(gpios, ARRAY_SIZE(gpios));
+       if (ret)
+               goto out;
+
+       /*
+        * IRQ type must be set before soc_pcmcia_hw_init() calls request_irq().
+        * The asic3 default IRQ type is level trigger low level detect, exactly
+        * the the signal present on GPIOD4_CF_nCD when a CF card is inserted.
+        * If the IRQ type is not changed, the asic3 interrupt handler will loop
+        * repeatedly because it is unable to clear the level trigger interrupt.
+        */
+       irq_set_irq_type(gpio_to_irq(GPIOD4_CF_nCD), IRQ_TYPE_EDGE_BOTH);
+
+       skt->stat[SOC_STAT_CD].gpio = GPIOD4_CF_nCD;
+       skt->stat[SOC_STAT_CD].name = "PCMCIA CD";
+       skt->stat[SOC_STAT_RDY].gpio = GPIO60_HX4700_CF_RNB;
+       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
+
+out:
+       return ret;
+}
+
+static void hx4700_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       gpio_free_array(gpios, ARRAY_SIZE(gpios));
+}
+
+static void hx4700_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+       struct pcmcia_state *state)
+{
+       state->vs_3v = 1;
+       state->vs_Xv = 0;
+}
+
+static int hx4700_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+       const socket_state_t *state)
+{
+       switch (state->Vcc) {
+       case 0:
+               gpio_set_value(EGPIO4_CF_3V3_ON, 0);
+               break;
+       case 33:
+               gpio_set_value(EGPIO4_CF_3V3_ON, 1);
+               break;
+       default:
+               printk(KERN_ERR "pcmcia: Unsupported Vcc: %d\n", state->Vcc);
+               return -EINVAL;
+       }
+
+       gpio_set_value(GPIO114_HX4700_CF_RESET, (state->flags & SS_RESET) != 0);
+
+       return 0;
+}
+
+static struct pcmcia_low_level hx4700_pcmcia_ops = {
+       .owner          = THIS_MODULE,
+       .nr             = 1,
+       .hw_init        = hx4700_pcmcia_hw_init,
+       .hw_shutdown    = hx4700_pcmcia_hw_shutdown,
+       .socket_state   = hx4700_pcmcia_socket_state,
+       .configure_socket = hx4700_pcmcia_configure_socket,
+};
+
+static struct platform_device *hx4700_pcmcia_device;
+
+static int __init hx4700_pcmcia_init(void)
+{
+       struct platform_device *pdev;
+
+       if (!machine_is_h4700())
+               return -ENODEV;
+
+       pdev = platform_device_register_data(NULL, "pxa2xx-pcmcia", -1,
+               &hx4700_pcmcia_ops, sizeof(hx4700_pcmcia_ops));
+       if (IS_ERR(pdev))
+               return PTR_ERR(pdev);
+
+       hx4700_pcmcia_device = pdev;
+
+       return 0;
+}
+
+static void __exit hx4700_pcmcia_exit(void)
+{
+       platform_device_unregister(hx4700_pcmcia_device);
+}
+
+module_init(hx4700_pcmcia_init);
+module_exit(hx4700_pcmcia_exit);
+
+MODULE_AUTHOR("Paul Parsons <lost.distance@yahoo.com>");
+MODULE_DESCRIPTION("HP iPAQ hx4700 PCMCIA driver");
+MODULE_LICENSE("GPL");
index e1870fbb19e7e933641a2c53c4ec46fd2bad5318..2ae06edf413cf81f31079b148bf5ee7c8c1487b0 100644 (file)
 #include <linux/spi/pxa2xx_spi.h>
 #include <linux/platform_data/i2c-pxa.h>
 
-#include <mach/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
 #include "pxa27x.h"
-#include <mach/hx4700.h>
+#include "addr-map.h"
+#include "hx4700.h"
 #include <linux/platform_data/irda-pxaficp.h>
 
 #include <sound/ak4641.h>
@@ -834,6 +834,19 @@ static struct i2c_board_info i2c_board_info[] __initdata = {
        },
 };
 
+static struct gpiod_lookup_table hx4700_audio_gpio_table = {
+       .dev_id = "hx4700-audio",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", GPIO75_HX4700_EARPHONE_nDET,
+                           "earphone-det", GPIO_ACTIVE_LOW),
+               GPIO_LOOKUP("gpio-pxa", GPIO92_HX4700_HP_DRIVER,
+                           "hp-driver", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa", GPIO107_HX4700_SPK_nSD,
+                           "spk-sd", GPIO_ACTIVE_LOW),
+               { },
+       },
+};
+
 static struct platform_device audio = {
        .name   = "hx4700-audio",
        .id     = -1,
@@ -895,6 +908,7 @@ static void __init hx4700_init(void)
 
        gpiod_add_lookup_table(&bq24022_gpiod_table);
        gpiod_add_lookup_table(&gpio_vbus_gpiod_table);
+       gpiod_add_lookup_table(&hx4700_audio_gpio_table);
        platform_add_devices(devices, ARRAY_SIZE(devices));
        pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup));
 
diff --git a/arch/arm/mach-pxa/hx4700.h b/arch/arm/mach-pxa/hx4700.h
new file mode 100644 (file)
index 0000000..0c30e6d
--- /dev/null
@@ -0,0 +1,129 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * GPIO and IRQ definitions for HP iPAQ hx4700
+ *
+ * Copyright (c) 2008 Philipp Zabel
+ */
+
+#ifndef _HX4700_H_
+#define _HX4700_H_
+
+#include <linux/gpio.h>
+#include <linux/mfd/asic3.h>
+#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
+
+#define HX4700_ASIC3_GPIO_BASE PXA_NR_BUILTIN_GPIO
+#define HX4700_EGPIO_BASE      (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS)
+#define HX4700_NR_IRQS         (IRQ_BOARD_START + 70)
+
+/*
+ * PXA GPIOs
+ */
+
+#define GPIO0_HX4700_nKEY_POWER                        0
+#define GPIO12_HX4700_ASIC3_IRQ                        12
+#define GPIO13_HX4700_W3220_IRQ                        13
+#define GPIO14_HX4700_nWLAN_IRQ                        14
+#define GPIO18_HX4700_RDY                      18
+#define GPIO22_HX4700_LCD_RL                   22
+#define GPIO27_HX4700_CODEC_ON                 27
+#define GPIO32_HX4700_RS232_ON                 32
+#define GPIO52_HX4700_CPU_nBATT_FAULT          52
+#define GPIO58_HX4700_TSC2046_nPENIRQ          58
+#define GPIO59_HX4700_LCD_PC1                  59
+#define GPIO60_HX4700_CF_RNB                   60
+#define GPIO61_HX4700_W3220_nRESET             61
+#define GPIO62_HX4700_LCD_nRESET               62
+#define GPIO63_HX4700_CPU_SS_nRESET            63
+#define GPIO65_HX4700_TSC2046_PEN_PU           65
+#define GPIO66_HX4700_ASIC3_nSDIO_IRQ          66
+#define GPIO67_HX4700_EUART_PS                 67
+#define GPIO70_HX4700_LCD_SLIN1                        70
+#define GPIO71_HX4700_ASIC3_nRESET             71
+#define GPIO72_HX4700_BQ24022_nCHARGE_EN       72
+#define GPIO73_HX4700_LCD_UD_1                 73
+#define GPIO75_HX4700_EARPHONE_nDET            75
+#define GPIO76_HX4700_USBC_PUEN                        76
+#define GPIO81_HX4700_CPU_GP_nRESET            81
+#define GPIO82_HX4700_EUART_RESET              82
+#define GPIO83_HX4700_WLAN_nRESET              83
+#define GPIO84_HX4700_LCD_SQN                  84
+#define GPIO85_HX4700_nPCE1                    85
+#define GPIO88_HX4700_TSC2046_CS               88
+#define GPIO91_HX4700_FLASH_VPEN               91
+#define GPIO92_HX4700_HP_DRIVER                        92
+#define GPIO93_HX4700_EUART_INT                        93
+#define GPIO94_HX4700_KEY_MAIL                 94
+#define GPIO95_HX4700_BATT_OFF                 95
+#define GPIO96_HX4700_BQ24022_ISET2            96
+#define GPIO97_HX4700_nBL_DETECT               97
+#define GPIO99_HX4700_KEY_CONTACTS             99
+#define GPIO100_HX4700_AUTO_SENSE              100 /* BL auto brightness */
+#define GPIO102_HX4700_SYNAPTICS_POWER_ON      102
+#define GPIO103_HX4700_SYNAPTICS_INT           103
+#define GPIO105_HX4700_nIR_ON                  105
+#define GPIO106_HX4700_CPU_BT_nRESET           106
+#define GPIO107_HX4700_SPK_nSD                 107
+#define GPIO109_HX4700_CODEC_nPDN              109
+#define GPIO110_HX4700_LCD_LVDD_3V3_ON         110
+#define GPIO111_HX4700_LCD_AVDD_3V3_ON         111
+#define GPIO112_HX4700_LCD_N2V7_7V3_ON         112
+#define GPIO114_HX4700_CF_RESET                        114
+#define GPIO116_HX4700_CPU_HW_nRESET           116
+
+/*
+ * ASIC3 GPIOs
+ */
+
+#define GPIOC_BASE             (HX4700_ASIC3_GPIO_BASE + 32)
+#define GPIOD_BASE             (HX4700_ASIC3_GPIO_BASE + 48)
+
+#define GPIOC0_LED_RED         (GPIOC_BASE + 0)
+#define GPIOC1_LED_GREEN       (GPIOC_BASE + 1)
+#define GPIOC2_LED_BLUE                (GPIOC_BASE + 2)
+#define GPIOC3_nSD_CS          (GPIOC_BASE + 3)
+#define GPIOC4_CF_nCD          (GPIOC_BASE + 4)        /* Input */
+#define GPIOC5_nCIOW           (GPIOC_BASE + 5)        /* Output, to CF */
+#define GPIOC6_nCIOR           (GPIOC_BASE + 6)        /* Output, to CF */
+#define GPIOC7_nPCE1           (GPIOC_BASE + 7)        /* Input, from CPU */
+#define GPIOC8_nPCE2           (GPIOC_BASE + 8)        /* Input, from CPU */
+#define GPIOC9_nPOE            (GPIOC_BASE + 9)        /* Input, from CPU */
+#define GPIOC10_CF_nPWE                (GPIOC_BASE + 10)       /* Input */
+#define GPIOC11_PSKTSEL                (GPIOC_BASE + 11)       /* Input, from CPU */
+#define GPIOC12_nPREG          (GPIOC_BASE + 12)       /* Input, from CPU */
+#define GPIOC13_nPWAIT         (GPIOC_BASE + 13)       /* Output, to CPU */
+#define GPIOC14_nPIOIS16       (GPIOC_BASE + 14)       /* Output, to CPU */
+#define GPIOC15_nPIOR          (GPIOC_BASE + 15)       /* Input, from CPU */
+
+#define GPIOD0_CPU_SS_INT      (GPIOD_BASE + 0)        /* Input */
+#define GPIOD1_nKEY_CALENDAR   (GPIOD_BASE + 1)
+#define GPIOD2_BLUETOOTH_WAKEUP        (GPIOD_BASE + 2)
+#define GPIOD3_nKEY_HOME       (GPIOD_BASE + 3)
+#define GPIOD4_CF_nCD          (GPIOD_BASE + 4)        /* Input, from CF */
+#define GPIOD5_nPIO            (GPIOD_BASE + 5)        /* Input */
+#define GPIOD6_nKEY_RECORD     (GPIOD_BASE + 6)
+#define GPIOD7_nSDIO_DETECT    (GPIOD_BASE + 7)
+#define GPIOD8_COM_DCD         (GPIOD_BASE + 8)        /* Input */
+#define GPIOD9_nAC_IN          (GPIOD_BASE + 9)
+#define GPIOD10_nSDIO_IRQ      (GPIOD_BASE + 10)       /* Input */
+#define GPIOD11_nCIOIS16       (GPIOD_BASE + 11)       /* Input, from CF */
+#define GPIOD12_nCWAIT         (GPIOD_BASE + 12)       /* Input, from CF */
+#define GPIOD13_CF_RNB         (GPIOD_BASE + 13)       /* Input */
+#define GPIOD14_nUSBC_DETECT   (GPIOD_BASE + 14)
+#define GPIOD15_nPIOW          (GPIOD_BASE + 15)       /* Input, from CPU */
+
+/*
+ * EGPIOs
+ */
+
+#define EGPIO0_VCC_3V3_EN      (HX4700_EGPIO_BASE + 0) /* WLAN support chip */
+#define EGPIO1_WL_VREG_EN      (HX4700_EGPIO_BASE + 1) /* WLAN power */
+#define EGPIO2_VCC_2V1_WL_EN   (HX4700_EGPIO_BASE + 2) /* unused */
+#define EGPIO3_SS_PWR_ON       (HX4700_EGPIO_BASE + 3) /* smart slot power */
+#define EGPIO4_CF_3V3_ON       (HX4700_EGPIO_BASE + 4) /* CF 3.3V enable */
+#define EGPIO5_BT_3V3_ON       (HX4700_EGPIO_BASE + 5) /* BT 3.3V enable */
+#define EGPIO6_WL1V8_EN                (HX4700_EGPIO_BASE + 6) /* WLAN 1.8V enable */
+#define EGPIO7_VCC_3V3_WL_EN   (HX4700_EGPIO_BASE + 7) /* WLAN 3.3V enable */
+#define EGPIO8_USB_3V3_ON      (HX4700_EGPIO_BASE + 8) /* unused */
+
+#endif /* _HX4700_H_ */
index fb0850af84968a792e273161e6b0e0699f0ebc35..525d01ddfbbb4ce651e7370b8c95ad92d91c301d 100644 (file)
@@ -22,7 +22,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 
 #include <asm/mach/arch.h>
@@ -31,7 +30,6 @@
 #include "pxa25x.h"
 #include "idp.h"
 #include <linux/platform_data/video-pxafb.h>
-#include <mach/bitfield.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/smc91x.h>
 
index a89e6723b1a10071625f61f5e518a0181243c52d..81b9bd9ba75481bae1b5f553f37bcad08eaa5ad5 100644 (file)
@@ -20,7 +20,7 @@
  * IDP hardware.
  */
 
-#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 
 #define IDP_FLASH_PHYS         (PXA_CS0_PHYS)
 #define IDP_ALT_FLASH_PHYS     (PXA_CS1_PHYS)
diff --git a/arch/arm/mach-pxa/include/mach/addr-map.h b/arch/arm/mach-pxa/include/mach/addr-map.h
deleted file mode 100644 (file)
index 93cfe7d..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_MACH_ADDR_MAP_H
-#define __ASM_MACH_ADDR_MAP_H
-
-/*
- * Chip Selects
- */
-#define PXA_CS0_PHYS           0x00000000
-#define PXA_CS1_PHYS           0x04000000
-#define PXA_CS2_PHYS           0x08000000
-#define PXA_CS3_PHYS           0x0C000000
-#define PXA_CS4_PHYS           0x10000000
-#define PXA_CS5_PHYS           0x14000000
-
-#define PXA300_CS0_PHYS                0x00000000      /* PXA300/PXA310 _only_ */
-#define PXA300_CS1_PHYS                0x30000000      /* PXA300/PXA310 _only_ */
-#define PXA3xx_CS2_PHYS                0x10000000
-#define PXA3xx_CS3_PHYS                0x14000000
-
-/*
- * Peripheral Bus
- */
-#define PERIPH_PHYS            0x40000000
-#define PERIPH_VIRT            IOMEM(0xf2000000)
-#define PERIPH_SIZE            0x02000000
-
-/*
- * Static Memory Controller (w/ SDRAM controls on PXA25x/PXA27x)
- */
-#define PXA2XX_SMEMC_PHYS      0x48000000
-#define PXA3XX_SMEMC_PHYS      0x4a000000
-#define SMEMC_VIRT             IOMEM(0xf6000000)
-#define SMEMC_SIZE             0x00100000
-
-/*
- * Dynamic Memory Controller (only on PXA3xx)
- */
-#define DMEMC_PHYS             0x48100000
-#define DMEMC_VIRT             IOMEM(0xf6100000)
-#define DMEMC_SIZE             0x00100000
-
-/*
- * Reserved space for low level debug virtual addresses within
- * 0xf6200000..0xf6201000
- */
-
-/*
- * DFI Bus for NAND, PXA3xx only
- */
-#define NAND_PHYS              0x43100000
-#define NAND_VIRT              IOMEM(0xf6300000)
-#define NAND_SIZE              0x00100000
-
-/*
- * Internal Memory Controller (PXA27x and later)
- */
-#define IMEMC_PHYS             0x58000000
-#define IMEMC_VIRT             IOMEM(0xfe000000)
-#define IMEMC_SIZE             0x00100000
-
-#endif /* __ASM_MACH_ADDR_MAP_H */
diff --git a/arch/arm/mach-pxa/include/mach/audio.h b/arch/arm/mach-pxa/include/mach/audio.h
deleted file mode 100644 (file)
index 7beebf7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_ARCH_AUDIO_H__
-#define __ASM_ARCH_AUDIO_H__
-
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/ac97_codec.h>
-
-/*
- * @reset_gpio: AC97 reset gpio (normally gpio113 or gpio95)
- *              a -1 value means no gpio will be used for reset
- * @codec_pdata: AC97 codec platform_data
-
- * reset_gpio should only be specified for pxa27x CPUs where a silicon
- * bug prevents correct operation of the reset line. If not specified,
- * the default behaviour on these CPUs is to consider gpio 113 as the
- * AC97 reset line, which is the default on most boards.
- */
-typedef struct {
-       int (*startup)(struct snd_pcm_substream *, void *);
-       void (*shutdown)(struct snd_pcm_substream *, void *);
-       void (*suspend)(void *);
-       void (*resume)(void *);
-       void *priv;
-       int reset_gpio;
-       void *codec_pdata[AC97_BUS_MAX_DEVICES];
-} pxa2xx_audio_ops_t;
-
-extern void pxa_set_ac97_info(pxa2xx_audio_ops_t *ops);
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/balloon3.h b/arch/arm/mach-pxa/include/mach/balloon3.h
deleted file mode 100644 (file)
index 04f3639..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  linux/include/asm-arm/arch-pxa/balloon3.h
- *
- *  Authors:   Nick Bane and Wookey
- *  Created:   Oct, 2005
- *  Copyright: Toby Churchill Ltd
- *  Cribbed from mainstone.c, by Nicholas Pitre
- */
-
-#ifndef ASM_ARCH_BALLOON3_H
-#define ASM_ARCH_BALLOON3_H
-
-#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
-
-enum balloon3_features {
-       BALLOON3_FEATURE_OHCI,
-       BALLOON3_FEATURE_MMC,
-       BALLOON3_FEATURE_CF,
-       BALLOON3_FEATURE_AUDIO,
-       BALLOON3_FEATURE_TOPPOLY,
-};
-
-#define BALLOON3_FPGA_PHYS     PXA_CS4_PHYS
-#define BALLOON3_FPGA_VIRT     IOMEM(0xf1000000)       /* as per balloon2 */
-#define BALLOON3_FPGA_LENGTH   0x01000000
-
-#define        BALLOON3_FPGA_SETnCLR           (0x1000)
-
-/* FPGA / CPLD registers for CF socket */
-#define        BALLOON3_CF_STATUS_REG          (BALLOON3_FPGA_VIRT + 0x00e00008)
-#define        BALLOON3_CF_CONTROL_REG         (BALLOON3_FPGA_VIRT + 0x00e00008)
-/* FPGA / CPLD version register */
-#define        BALLOON3_FPGA_VER               (BALLOON3_FPGA_VIRT + 0x00e0001c)
-/* FPGA / CPLD registers for NAND flash */
-#define        BALLOON3_NAND_BASE              (PXA_CS4_PHYS + 0x00e00000)
-#define        BALLOON3_NAND_IO_REG            (BALLOON3_FPGA_VIRT + 0x00e00000)
-#define        BALLOON3_NAND_CONTROL2_REG      (BALLOON3_FPGA_VIRT + 0x00e00010)
-#define        BALLOON3_NAND_STAT_REG          (BALLOON3_FPGA_VIRT + 0x00e00014)
-#define        BALLOON3_NAND_CONTROL_REG       (BALLOON3_FPGA_VIRT + 0x00e00014)
-
-/* fpga/cpld interrupt control register */
-#define BALLOON3_INT_CONTROL_REG       (BALLOON3_FPGA_VIRT + 0x00e0000C)
-#define BALLOON3_VERSION_REG           (BALLOON3_FPGA_VIRT + 0x00e0001c)
-
-#define BALLOON3_SAMOSA_ADDR_REG       (BALLOON3_FPGA_VIRT + 0x00c00000)
-#define BALLOON3_SAMOSA_DATA_REG       (BALLOON3_FPGA_VIRT + 0x00c00004)
-#define BALLOON3_SAMOSA_STATUS_REG     (BALLOON3_FPGA_VIRT + 0x00c0001c)
-
-/* CF Status Register bits (read-only) bits */
-#define BALLOON3_CF_nIRQ               (1 << 0)
-#define BALLOON3_CF_nSTSCHG_BVD1       (1 << 1)
-
-/* CF Control Set Register bits / CF Control Clear Register bits (write-only) */
-#define BALLOON3_CF_RESET              (1 << 0)
-#define BALLOON3_CF_ENABLE             (1 << 1)
-#define BALLOON3_CF_ADD_ENABLE         (1 << 2)
-
-/* CF Interrupt sources */
-#define BALLOON3_BP_CF_NRDY_IRQ                BALLOON3_IRQ(0)
-#define BALLOON3_BP_NSTSCHG_IRQ                BALLOON3_IRQ(1)
-
-/* NAND Control register */
-#define        BALLOON3_NAND_CONTROL_FLWP      (1 << 7)
-#define        BALLOON3_NAND_CONTROL_FLSE      (1 << 6)
-#define        BALLOON3_NAND_CONTROL_FLCE3     (1 << 5)
-#define        BALLOON3_NAND_CONTROL_FLCE2     (1 << 4)
-#define        BALLOON3_NAND_CONTROL_FLCE1     (1 << 3)
-#define        BALLOON3_NAND_CONTROL_FLCE0     (1 << 2)
-#define        BALLOON3_NAND_CONTROL_FLALE     (1 << 1)
-#define        BALLOON3_NAND_CONTROL_FLCLE     (1 << 0)
-
-/* NAND Status register */
-#define        BALLOON3_NAND_STAT_RNB          (1 << 0)
-
-/* NAND Control2 register */
-#define        BALLOON3_NAND_CONTROL2_16BIT    (1 << 0)
-
-/* GPIOs for irqs */
-#define BALLOON3_GPIO_AUX_NIRQ         (94)
-#define BALLOON3_GPIO_CODEC_IRQ                (95)
-
-/* Timer and Idle LED locations */
-#define BALLOON3_GPIO_LED_NAND         (9)
-#define BALLOON3_GPIO_LED_IDLE         (10)
-
-/* backlight control */
-#define BALLOON3_GPIO_RUN_BACKLIGHT    (99)
-
-#define BALLOON3_GPIO_S0_CD            (105)
-
-/* NAND */
-#define BALLOON3_GPIO_RUN_NAND         (102)
-
-/* PCF8574A Leds */
-#define        BALLOON3_PCF_GPIO_BASE          160
-#define        BALLOON3_PCF_GPIO_LED0          (BALLOON3_PCF_GPIO_BASE + 0)
-#define        BALLOON3_PCF_GPIO_LED1          (BALLOON3_PCF_GPIO_BASE + 1)
-#define        BALLOON3_PCF_GPIO_LED2          (BALLOON3_PCF_GPIO_BASE + 2)
-#define        BALLOON3_PCF_GPIO_LED3          (BALLOON3_PCF_GPIO_BASE + 3)
-#define        BALLOON3_PCF_GPIO_LED4          (BALLOON3_PCF_GPIO_BASE + 4)
-#define        BALLOON3_PCF_GPIO_LED5          (BALLOON3_PCF_GPIO_BASE + 5)
-#define        BALLOON3_PCF_GPIO_LED6          (BALLOON3_PCF_GPIO_BASE + 6)
-#define        BALLOON3_PCF_GPIO_LED7          (BALLOON3_PCF_GPIO_BASE + 7)
-
-/* FPGA Interrupt Mask/Acknowledge Register */
-#define BALLOON3_INT_S0_IRQ            (1 << 0)  /* PCMCIA 0 IRQ */
-#define BALLOON3_INT_S0_STSCHG         (1 << 1)  /* PCMCIA 0 status changed */
-
-/* CPLD (and FPGA) interface definitions */
-#define CPLD_LCD0_DATA_SET             0x00
-#define CPLD_LCD0_DATA_CLR             0x10
-#define CPLD_LCD0_COMMAND_SET          0x01
-#define CPLD_LCD0_COMMAND_CLR          0x11
-#define CPLD_LCD1_DATA_SET             0x02
-#define CPLD_LCD1_DATA_CLR             0x12
-#define CPLD_LCD1_COMMAND_SET          0x03
-#define CPLD_LCD1_COMMAND_CLR          0x13
-
-#define CPLD_MISC_SET                  0x07
-#define CPLD_MISC_CLR                  0x17
-#define CPLD_MISC_LOON_NRESET_BIT      0
-#define CPLD_MISC_LOON_UNSUSP_BIT      1
-#define CPLD_MISC_RUN_5V_BIT           2
-#define CPLD_MISC_CHG_D0_BIT           3
-#define CPLD_MISC_CHG_D1_BIT           4
-#define CPLD_MISC_DAC_NCS_BIT          5
-
-#define CPLD_LCD_SET                   0x08
-#define CPLD_LCD_CLR                   0x18
-#define CPLD_LCD_BACKLIGHT_EN_0_BIT    0
-#define CPLD_LCD_BACKLIGHT_EN_1_BIT    1
-#define CPLD_LCD_LED_RED_BIT           4
-#define CPLD_LCD_LED_GREEN_BIT         5
-#define CPLD_LCD_NRESET_BIT            7
-
-#define CPLD_LCD_RO_SET                0x09
-#define CPLD_LCD_RO_CLR                0x19
-#define CPLD_LCD_RO_LCD0_nWAIT_BIT     0
-#define CPLD_LCD_RO_LCD1_nWAIT_BIT     1
-
-#define CPLD_SERIAL_SET                0x0a
-#define CPLD_SERIAL_CLR                0x1a
-#define CPLD_SERIAL_GSM_RI_BIT         0
-#define CPLD_SERIAL_GSM_CTS_BIT        1
-#define CPLD_SERIAL_GSM_DTR_BIT        2
-#define CPLD_SERIAL_LPR_CTS_BIT        3
-#define CPLD_SERIAL_TC232_CTS_BIT      4
-#define CPLD_SERIAL_TC232_DSR_BIT      5
-
-#define CPLD_SROUTING_SET              0x0b
-#define CPLD_SROUTING_CLR              0x1b
-#define CPLD_SROUTING_MSP430_LPR       0
-#define CPLD_SROUTING_MSP430_TC232     1
-#define CPLD_SROUTING_MSP430_GSM       2
-#define CPLD_SROUTING_LOON_LPR         (0 << 4)
-#define CPLD_SROUTING_LOON_TC232       (1 << 4)
-#define CPLD_SROUTING_LOON_GSM         (2 << 4)
-
-#define CPLD_AROUTING_SET              0x0c
-#define CPLD_AROUTING_CLR              0x1c
-#define CPLD_AROUTING_MIC2PHONE_BIT    0
-#define CPLD_AROUTING_PHONE2INT_BIT    1
-#define CPLD_AROUTING_PHONE2EXT_BIT    2
-#define CPLD_AROUTING_LOONL2INT_BIT    3
-#define CPLD_AROUTING_LOONL2EXT_BIT    4
-#define CPLD_AROUTING_LOONR2PHONE_BIT  5
-#define CPLD_AROUTING_LOONR2INT_BIT    6
-#define CPLD_AROUTING_LOONR2EXT_BIT    7
-
-/* Balloon3 Interrupts */
-#define BALLOON3_IRQ(x)                (IRQ_BOARD_START + (x))
-
-#define BALLOON3_AUX_NIRQ      PXA_GPIO_TO_IRQ(BALLOON3_GPIO_AUX_NIRQ)
-#define BALLOON3_CODEC_IRQ     PXA_GPIO_TO_IRQ(BALLOON3_GPIO_CODEC_IRQ)
-
-#define BALLOON3_NR_IRQS       (IRQ_BOARD_START + 16)
-
-extern int balloon3_has(enum balloon3_features feature);
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/bitfield.h b/arch/arm/mach-pxa/include/mach/bitfield.h
deleted file mode 100644 (file)
index fe2ca44..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- *     FILE            bitfield.h
- *
- *     Version         1.1
- *     Author          Copyright (c) Marc A. Viredaz, 1998
- *                     DEC Western Research Laboratory, Palo Alto, CA
- *     Date            April 1998 (April 1997)
- *     System          Advanced RISC Machine (ARM)
- *     Language        C or ARM Assembly
- *     Purpose         Definition of macros to operate on bit fields.
- */
-
-
-
-#ifndef __BITFIELD_H
-#define __BITFIELD_H
-
-#ifndef __ASSEMBLY__
-#define UData(Data)    ((unsigned long) (Data))
-#else
-#define UData(Data)    (Data)
-#endif
-
-
-/*
- * MACRO: Fld
- *
- * Purpose
- *    The macro "Fld" encodes a bit field, given its size and its shift value
- *    with respect to bit 0.
- *
- * Note
- *    A more intuitive way to encode bit fields would have been to use their
- *    mask. However, extracting size and shift value information from a bit
- *    field's mask is cumbersome and might break the assembler (255-character
- *    line-size limit).
- *
- * Input
- *    Size             Size of the bit field, in number of bits.
- *    Shft             Shift value of the bit field with respect to bit 0.
- *
- * Output
- *    Fld              Encoded bit field.
- */
-
-#define Fld(Size, Shft)        (((Size) << 16) + (Shft))
-
-
-/*
- * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
- *
- * Purpose
- *    The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
- *    the size, shift value, mask, aligned mask, and first bit of a
- *    bit field.
- *
- * Input
- *    Field            Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FSize            Size of the bit field, in number of bits.
- *    FShft            Shift value of the bit field with respect to bit 0.
- *    FMsk             Mask for the bit field.
- *    FAlnMsk          Mask for the bit field, aligned on bit 0.
- *    F1stBit          First bit of the bit field.
- */
-
-#define FSize(Field)   ((Field) >> 16)
-#define FShft(Field)   ((Field) & 0x0000FFFF)
-#define FMsk(Field)    (((UData (1) << FSize (Field)) - 1) << FShft (Field))
-#define FAlnMsk(Field) ((UData (1) << FSize (Field)) - 1)
-#define F1stBit(Field) (UData (1) << FShft (Field))
-
-
-/*
- * MACRO: FInsrt
- *
- * Purpose
- *    The macro "FInsrt" inserts a value into a bit field by shifting the
- *    former appropriately.
- *
- * Input
- *    Value            Bit-field value.
- *    Field            Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FInsrt           Bit-field value positioned appropriately.
- */
-
-#define FInsrt(Value, Field) \
-                       (UData (Value) << FShft (Field))
-
-
-/*
- * MACRO: FExtr
- *
- * Purpose
- *    The macro "FExtr" extracts the value of a bit field by masking and
- *    shifting it appropriately.
- *
- * Input
- *    Data             Data containing the bit-field to be extracted.
- *    Field            Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FExtr            Bit-field value.
- */
-
-#define FExtr(Data, Field) \
-                       ((UData (Data) >> FShft (Field)) & FAlnMsk (Field))
-
-
-#endif /* __BITFIELD_H */
diff --git a/arch/arm/mach-pxa/include/mach/corgi.h b/arch/arm/mach-pxa/include/mach/corgi.h
deleted file mode 100644 (file)
index b565ca7..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Hardware specific definitions for SL-C7xx series of PDAs
- *
- * Copyright (c) 2004-2005 Richard Purdie
- *
- * Based on Sharp's 2.4 kernel patches
- */
-#ifndef __ASM_ARCH_CORGI_H
-#define __ASM_ARCH_CORGI_H  1
-
-#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
-
-/*
- * Corgi (Non Standard) GPIO Definitions
- */
-#define CORGI_GPIO_KEY_INT                     (0)     /* Keyboard Interrupt */
-#define CORGI_GPIO_AC_IN                       (1) /* Charger Detection */
-#define CORGI_GPIO_WAKEUP                      (3) /* System wakeup notification? */
-#define CORGI_GPIO_AK_INT                      (4)     /* Headphone Jack Control Interrupt */
-#define CORGI_GPIO_TP_INT                      (5)     /* Touch Panel Interrupt */
-#define CORGI_GPIO_nSD_WP                      (7) /* SD Write Protect? */
-#define CORGI_GPIO_nSD_DETECT          (9) /* MMC/SD Card Detect */
-#define CORGI_GPIO_nSD_INT                     (10) /* SD Interrupt for SDIO? */
-#define CORGI_GPIO_MAIN_BAT_LOW                (11) /* Main Battery Low Notification */
-#define CORGI_GPIO_BAT_COVER           (11) /* Battery Cover Detect */
-#define CORGI_GPIO_LED_ORANGE          (13) /* Orange LED Control */
-#define CORGI_GPIO_CF_CD                       (14) /* Compact Flash Card Detect */
-#define CORGI_GPIO_CHRG_FULL           (16) /* Charging Complete Notification */
-#define CORGI_GPIO_CF_IRQ                      (17) /* Compact Flash Interrupt */
-#define CORGI_GPIO_LCDCON_CS           (19) /* LCD Control Chip Select */
-#define CORGI_GPIO_MAX1111_CS          (20) /* MAX1111 Chip Select */
-#define CORGI_GPIO_ADC_TEMP_ON         (21) /* Select battery voltage or temperature */
-#define CORGI_GPIO_IR_ON                       (22) /* Enable IR Transceiver */
-#define CORGI_GPIO_ADS7846_CS          (24) /* ADS7846 Chip Select */
-#define CORGI_GPIO_SD_PWR                      (33) /* MMC/SD Power */
-#define CORGI_GPIO_CHRG_ON                     (38) /* Enable battery Charging */
-#define CORGI_GPIO_DISCHARGE_ON                (42) /* Enable battery Discharge */
-#define CORGI_GPIO_CHRG_UKN                    (43) /* Unknown Charging (Bypass Control?) */
-#define CORGI_GPIO_HSYNC                       (44) /* LCD HSync Pulse */
-#define CORGI_GPIO_USB_PULLUP          (45) /* USB show presence to host */
-
-
-/*
- * Corgi Keyboard Definitions
- */
-#define CORGI_KEY_STROBE_NUM           (12)
-#define CORGI_KEY_SENSE_NUM                    (8)
-#define CORGI_GPIO_ALL_STROBE_BIT      (0x00003ffc)
-#define CORGI_GPIO_HIGH_SENSE_BIT      (0xfc000000)
-#define CORGI_GPIO_HIGH_SENSE_RSHIFT   (26)
-#define CORGI_GPIO_LOW_SENSE_BIT       (0x00000003)
-#define CORGI_GPIO_LOW_SENSE_LSHIFT    (6)
-#define CORGI_GPIO_STROBE_BIT(a)       GPIO_bit(66+(a))
-#define CORGI_GPIO_SENSE_BIT(a)                GPIO_bit(58+(a))
-#define CORGI_GAFR_ALL_STROBE_BIT      (0x0ffffff0)
-#define CORGI_GAFR_HIGH_SENSE_BIT      (0xfff00000)
-#define CORGI_GAFR_LOW_SENSE_BIT       (0x0000000f)
-#define CORGI_GPIO_KEY_SENSE(a)                (58+(a))
-#define CORGI_GPIO_KEY_STROBE(a)       (66+(a))
-
-
-/*
- * Corgi Interrupts
- */
-#define CORGI_IRQ_GPIO_KEY_INT         PXA_GPIO_TO_IRQ(0)
-#define CORGI_IRQ_GPIO_AC_IN           PXA_GPIO_TO_IRQ(1)
-#define CORGI_IRQ_GPIO_WAKEUP          PXA_GPIO_TO_IRQ(3)
-#define CORGI_IRQ_GPIO_AK_INT          PXA_GPIO_TO_IRQ(4)
-#define CORGI_IRQ_GPIO_TP_INT          PXA_GPIO_TO_IRQ(5)
-#define CORGI_IRQ_GPIO_nSD_DETECT      PXA_GPIO_TO_IRQ(9)
-#define CORGI_IRQ_GPIO_nSD_INT         PXA_GPIO_TO_IRQ(10)
-#define CORGI_IRQ_GPIO_MAIN_BAT_LOW    PXA_GPIO_TO_IRQ(11)
-#define CORGI_IRQ_GPIO_CF_CD           PXA_GPIO_TO_IRQ(14)
-#define CORGI_IRQ_GPIO_CHRG_FULL       PXA_GPIO_TO_IRQ(16)     /* Battery fully charged */
-#define CORGI_IRQ_GPIO_CF_IRQ          PXA_GPIO_TO_IRQ(17)
-#define CORGI_IRQ_GPIO_KEY_SENSE(a)    PXA_GPIO_TO_IRQ(58+(a)) /* Keyboard Sense lines */
-
-
-/*
- * Corgi SCOOP GPIOs and Config
- */
-#define CORGI_SCP_LED_GREEN            SCOOP_GPCR_PA11
-#define CORGI_SCP_SWA                  SCOOP_GPCR_PA12  /* Hinge Switch A */
-#define CORGI_SCP_SWB                  SCOOP_GPCR_PA13  /* Hinge Switch B */
-#define CORGI_SCP_MUTE_L               SCOOP_GPCR_PA14
-#define CORGI_SCP_MUTE_R               SCOOP_GPCR_PA15
-#define CORGI_SCP_AKIN_PULLUP  SCOOP_GPCR_PA16
-#define CORGI_SCP_APM_ON               SCOOP_GPCR_PA17
-#define CORGI_SCP_BACKLIGHT_CONT       SCOOP_GPCR_PA18
-#define CORGI_SCP_MIC_BIAS             SCOOP_GPCR_PA19
-
-#define CORGI_SCOOP_IO_DIR     ( CORGI_SCP_LED_GREEN | CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R | \
-                       CORGI_SCP_AKIN_PULLUP | CORGI_SCP_APM_ON | CORGI_SCP_BACKLIGHT_CONT | \
-                       CORGI_SCP_MIC_BIAS )
-#define CORGI_SCOOP_IO_OUT     ( CORGI_SCP_MUTE_L | CORGI_SCP_MUTE_R )
-
-#define CORGI_SCOOP_GPIO_BASE          (PXA_NR_BUILTIN_GPIO)
-#define CORGI_GPIO_LED_GREEN           (CORGI_SCOOP_GPIO_BASE + 0)
-#define CORGI_GPIO_SWA                 (CORGI_SCOOP_GPIO_BASE + 1)  /* Hinge Switch A */
-#define CORGI_GPIO_SWB                 (CORGI_SCOOP_GPIO_BASE + 2)  /* Hinge Switch B */
-#define CORGI_GPIO_MUTE_L              (CORGI_SCOOP_GPIO_BASE + 3)
-#define CORGI_GPIO_MUTE_R              (CORGI_SCOOP_GPIO_BASE + 4)
-#define CORGI_GPIO_AKIN_PULLUP         (CORGI_SCOOP_GPIO_BASE + 5)
-#define CORGI_GPIO_APM_ON              (CORGI_SCOOP_GPIO_BASE + 6)
-#define CORGI_GPIO_BACKLIGHT_CONT      (CORGI_SCOOP_GPIO_BASE + 7)
-#define CORGI_GPIO_MIC_BIAS            (CORGI_SCOOP_GPIO_BASE + 8)
-
-#endif /* __ASM_ARCH_CORGI_H  */
-
diff --git a/arch/arm/mach-pxa/include/mach/dma.h b/arch/arm/mach-pxa/include/mach/dma.h
deleted file mode 100644 (file)
index 79f9842..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/dma.h
- *
- *  Author:    Nicolas Pitre
- *  Created:   Jun 15, 2001
- *  Copyright: MontaVista Software, Inc.
- */
-#ifndef __ASM_ARCH_DMA_H
-#define __ASM_ARCH_DMA_H
-
-#include <mach/hardware.h>
-
-/* DMA Controller Registers Definitions */
-#define DMAC_REGS_VIRT io_p2v(0x40000000)
-
-#endif /* _ASM_ARCH_DMA_H */
diff --git a/arch/arm/mach-pxa/include/mach/eseries-gpio.h b/arch/arm/mach-pxa/include/mach/eseries-gpio.h
deleted file mode 100644 (file)
index 5c64560..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  eseries-gpio.h
- *
- *  Copyright (C) Ian Molton <spyro@f2s.com>
- */
-
-/* e-series power button */
-#define GPIO_ESERIES_POWERBTN     0
-
-/* UDC GPIO definitions */
-#define GPIO_E7XX_USB_DISC       13
-#define GPIO_E7XX_USB_PULLUP      3
-
-#define GPIO_E800_USB_DISC        4
-#define GPIO_E800_USB_PULLUP     84
-
-/* e740 PCMCIA GPIO definitions */
-/* Note: PWR1 seems to be inverted */
-#define GPIO_E740_PCMCIA_CD0      8
-#define GPIO_E740_PCMCIA_CD1     44
-#define GPIO_E740_PCMCIA_RDY0    11
-#define GPIO_E740_PCMCIA_RDY1     6
-#define GPIO_E740_PCMCIA_RST0    27
-#define GPIO_E740_PCMCIA_RST1    24
-#define GPIO_E740_PCMCIA_PWR0    20
-#define GPIO_E740_PCMCIA_PWR1    23
-
-/* e750 PCMCIA GPIO definitions */
-#define GPIO_E750_PCMCIA_CD0      8
-#define GPIO_E750_PCMCIA_RDY0    12
-#define GPIO_E750_PCMCIA_RST0    27
-#define GPIO_E750_PCMCIA_PWR0    20
-
-/* e800 PCMCIA GPIO definitions */
-#define GPIO_E800_PCMCIA_RST0    69
-#define GPIO_E800_PCMCIA_RST1    72
-#define GPIO_E800_PCMCIA_PWR0    20
-#define GPIO_E800_PCMCIA_PWR1    73
-
-/* e7xx IrDA power control */
-#define GPIO_E7XX_IR_OFF         38
-
-/* e740 audio control GPIOs */
-#define GPIO_E740_WM9705_nAVDD2  16
-#define GPIO_E740_MIC_ON         40
-#define GPIO_E740_AMP_ON         41
-
-/* e750 audio control GPIOs */
-#define GPIO_E750_HP_AMP_OFF      4
-#define GPIO_E750_SPK_AMP_OFF     7
-#define GPIO_E750_HP_DETECT      37
-
-/* e800 audio control GPIOs */
-#define GPIO_E800_HP_DETECT      81
-#define GPIO_E800_HP_AMP_OFF     82
-#define GPIO_E800_SPK_AMP_ON     83
-
-/* ASIC related GPIOs */
-#define GPIO_ESERIES_TMIO_IRQ        5
-#define GPIO_ESERIES_TMIO_PCLR      19
-#define GPIO_ESERIES_TMIO_SUSPEND   45
-#define GPIO_E800_ANGELX_IRQ      8
diff --git a/arch/arm/mach-pxa/include/mach/generic.h b/arch/arm/mach-pxa/include/mach/generic.h
deleted file mode 100644 (file)
index 665542e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../generic.h"
diff --git a/arch/arm/mach-pxa/include/mach/hardware.h b/arch/arm/mach-pxa/include/mach/hardware.h
deleted file mode 100644 (file)
index ee7eab1..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/hardware.h
- *
- *  Author:    Nicolas Pitre
- *  Created:   Jun 15, 2001
- *  Copyright: MontaVista Software Inc.
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-#include <mach/addr-map.h>
-
-/*
- * Workarounds for at least 2 errata so far require this.
- * The mapping is set in mach-pxa/generic.c.
- */
-#define UNCACHED_PHYS_0                0xfe000000
-#define UNCACHED_PHYS_0_SIZE   0x00100000
-
-/*
- * Intel PXA2xx internal register mapping:
- *
- * 0x40000000 - 0x41ffffff <--> 0xf2000000 - 0xf3ffffff
- * 0x44000000 - 0x45ffffff <--> 0xf4000000 - 0xf5ffffff
- * 0x48000000 - 0x49ffffff <--> 0xf6000000 - 0xf7ffffff
- * 0x4c000000 - 0x4dffffff <--> 0xf8000000 - 0xf9ffffff
- * 0x50000000 - 0x51ffffff <--> 0xfa000000 - 0xfbffffff
- * 0x54000000 - 0x55ffffff <--> 0xfc000000 - 0xfdffffff
- * 0x58000000 - 0x59ffffff <--> 0xfe000000 - 0xffffffff
- *
- * Note that not all PXA2xx chips implement all those addresses, and the
- * kernel only maps the minimum needed range of this mapping.
- */
-#define io_v2p(x) (0x3c000000 + ((x) & 0x01ffffff) + (((x) & 0x0e000000) << 1))
-#define io_p2v(x) IOMEM(0xf2000000 + ((x) & 0x01ffffff) + (((x) & 0x1c000000) >> 1))
-
-#ifndef __ASSEMBLY__
-# define __REG(x)      (*((volatile u32 __iomem *)io_p2v(x)))
-
-/* With indexed regs we don't want to feed the index through io_p2v()
-   especially if it is a variable, otherwise horrible code will result. */
-# define __REG2(x,y)   \
-       (*(volatile u32 __iomem*)((u32)&__REG(x) + (y)))
-
-# define __PREG(x)     (io_v2p((u32)&(x)))
-
-#else
-
-# define __REG(x)      io_p2v(x)
-# define __PREG(x)     io_v2p(x)
-
-#endif
-
-#ifndef __ASSEMBLY__
-
-#include <asm/cputype.h>
-
-/*
- *   CPU     Stepping     CPU_ID         JTAG_ID
- *
- *  PXA210     B0      0x69052922      0x2926C013
- *  PXA210     B1      0x69052923      0x3926C013
- *  PXA210     B2      0x69052924      0x4926C013
- *  PXA210     C0      0x69052D25      0x5926C013
- *
- *  PXA250     A0      0x69052100      0x09264013
- *  PXA250     A1      0x69052101      0x19264013
- *  PXA250     B0      0x69052902      0x29264013
- *  PXA250     B1      0x69052903      0x39264013
- *  PXA250     B2      0x69052904      0x49264013
- *  PXA250     C0      0x69052D05      0x59264013
- *
- *  PXA255     A0      0x69052D06      0x69264013
- *
- *  PXA26x     A0      0x69052903      0x39264013
- *  PXA26x     B0      0x69052D05      0x59264013
- *
- *  PXA27x     A0      0x69054110      0x09265013
- *  PXA27x     A1      0x69054111      0x19265013
- *  PXA27x     B0      0x69054112      0x29265013
- *  PXA27x     B1      0x69054113      0x39265013
- *  PXA27x     C0      0x69054114      0x49265013
- *  PXA27x     C5      0x69054117      0x79265013
- *
- *  PXA30x     A0      0x69056880      0x0E648013
- *  PXA30x     A1      0x69056881      0x1E648013
- *  PXA31x     A0      0x69056890      0x0E649013
- *  PXA31x     A1      0x69056891      0x1E649013
- *  PXA31x     A2      0x69056892      0x2E649013
- *  PXA32x     B1      0x69056825      0x5E642013
- *  PXA32x     B2      0x69056826      0x6E642013
- *
- *  PXA930     B0      0x69056835      0x5E643013
- *  PXA930     B1      0x69056837      0x7E643013
- *  PXA930     B2      0x69056838      0x8E643013
- *
- *  PXA935     A0      0x56056931      0x1E653013
- *  PXA935     B0      0x56056936      0x6E653013
- *  PXA935     B1      0x56056938      0x8E653013
- */
-#ifdef CONFIG_PXA25x
-#define __cpu_is_pxa210(id)                            \
-       ({                                              \
-               unsigned int _id = (id) & 0xf3f0;       \
-               _id == 0x2120;                          \
-       })
-
-#define __cpu_is_pxa250(id)                            \
-       ({                                              \
-               unsigned int _id = (id) & 0xf3ff;       \
-               _id <= 0x2105;                          \
-       })
-
-#define __cpu_is_pxa255(id)                            \
-       ({                                              \
-               unsigned int _id = (id) & 0xffff;       \
-               _id == 0x2d06;                          \
-       })
-
-#define __cpu_is_pxa25x(id)                            \
-       ({                                              \
-               unsigned int _id = (id) & 0xf300;       \
-               _id == 0x2100;                          \
-       })
-#else
-#define __cpu_is_pxa210(id)    (0)
-#define __cpu_is_pxa250(id)    (0)
-#define __cpu_is_pxa255(id)    (0)
-#define __cpu_is_pxa25x(id)    (0)
-#endif
-
-#ifdef CONFIG_PXA27x
-#define __cpu_is_pxa27x(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 4 & 0xfff;   \
-               _id == 0x411;                           \
-       })
-#else
-#define __cpu_is_pxa27x(id)    (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA300
-#define __cpu_is_pxa300(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 4 & 0xfff;   \
-               _id == 0x688;                           \
-        })
-#else
-#define __cpu_is_pxa300(id)    (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA310
-#define __cpu_is_pxa310(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 4 & 0xfff;   \
-               _id == 0x689;                           \
-        })
-#else
-#define __cpu_is_pxa310(id)    (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA320
-#define __cpu_is_pxa320(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 4 & 0xfff;   \
-               _id == 0x603 || _id == 0x682;           \
-        })
-#else
-#define __cpu_is_pxa320(id)    (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA930
-#define __cpu_is_pxa930(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 4 & 0xfff;   \
-               _id == 0x683;                           \
-        })
-#else
-#define __cpu_is_pxa930(id)    (0)
-#endif
-
-#ifdef CONFIG_CPU_PXA935
-#define __cpu_is_pxa935(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 4 & 0xfff;   \
-               _id == 0x693;                           \
-        })
-#else
-#define __cpu_is_pxa935(id)    (0)
-#endif
-
-#define cpu_is_pxa210()                                        \
-       ({                                              \
-               __cpu_is_pxa210(read_cpuid_id());       \
-       })
-
-#define cpu_is_pxa250()                                        \
-       ({                                              \
-               __cpu_is_pxa250(read_cpuid_id());       \
-       })
-
-#define cpu_is_pxa255()                                 \
-       ({                                              \
-               __cpu_is_pxa255(read_cpuid_id());       \
-       })
-
-#define cpu_is_pxa25x()                                        \
-       ({                                              \
-               __cpu_is_pxa25x(read_cpuid_id());       \
-       })
-
-#define cpu_is_pxa27x()                                        \
-       ({                                              \
-               __cpu_is_pxa27x(read_cpuid_id());       \
-       })
-
-#define cpu_is_pxa300()                                        \
-       ({                                              \
-               __cpu_is_pxa300(read_cpuid_id());       \
-        })
-
-#define cpu_is_pxa310()                                        \
-       ({                                              \
-               __cpu_is_pxa310(read_cpuid_id());       \
-        })
-
-#define cpu_is_pxa320()                                        \
-       ({                                              \
-               __cpu_is_pxa320(read_cpuid_id());       \
-        })
-
-#define cpu_is_pxa930()                                        \
-       ({                                              \
-               __cpu_is_pxa930(read_cpuid_id());       \
-        })
-
-#define cpu_is_pxa935()                                        \
-       ({                                              \
-               __cpu_is_pxa935(read_cpuid_id());       \
-        })
-
-
-
-/*
- * CPUID Core Generation Bit
- * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
- */
-#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
-#define __cpu_is_pxa2xx(id)                            \
-       ({                                              \
-               unsigned int _id = (id) >> 13 & 0x7;    \
-               _id <= 0x2;                             \
-        })
-#else
-#define __cpu_is_pxa2xx(id)    (0)
-#endif
-
-#ifdef CONFIG_PXA3xx
-#define __cpu_is_pxa3xx(id)                            \
-       ({                                              \
-               __cpu_is_pxa300(id)                     \
-                       || __cpu_is_pxa310(id)          \
-                       || __cpu_is_pxa320(id)          \
-                       || __cpu_is_pxa93x(id);         \
-        })
-#else
-#define __cpu_is_pxa3xx(id)    (0)
-#endif
-
-#if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935)
-#define __cpu_is_pxa93x(id)                            \
-       ({                                              \
-               __cpu_is_pxa930(id)                     \
-                       || __cpu_is_pxa935(id);         \
-        })
-#else
-#define __cpu_is_pxa93x(id)    (0)
-#endif
-
-#define cpu_is_pxa2xx()                                        \
-       ({                                              \
-               __cpu_is_pxa2xx(read_cpuid_id());       \
-        })
-
-#define cpu_is_pxa3xx()                                        \
-       ({                                              \
-               __cpu_is_pxa3xx(read_cpuid_id());       \
-        })
-
-#define cpu_is_pxa93x()                                        \
-       ({                                              \
-               __cpu_is_pxa93x(read_cpuid_id());       \
-        })
-
-
-/*
- * return current memory and LCD clock frequency in units of 10kHz
- */
-extern unsigned int get_memclk_frequency_10khz(void);
-
-#endif
-
-#endif  /* _ASM_ARCH_HARDWARE_H */
diff --git a/arch/arm/mach-pxa/include/mach/hx4700.h b/arch/arm/mach-pxa/include/mach/hx4700.h
deleted file mode 100644 (file)
index 0c30e6d..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * GPIO and IRQ definitions for HP iPAQ hx4700
- *
- * Copyright (c) 2008 Philipp Zabel
- */
-
-#ifndef _HX4700_H_
-#define _HX4700_H_
-
-#include <linux/gpio.h>
-#include <linux/mfd/asic3.h>
-#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
-
-#define HX4700_ASIC3_GPIO_BASE PXA_NR_BUILTIN_GPIO
-#define HX4700_EGPIO_BASE      (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS)
-#define HX4700_NR_IRQS         (IRQ_BOARD_START + 70)
-
-/*
- * PXA GPIOs
- */
-
-#define GPIO0_HX4700_nKEY_POWER                        0
-#define GPIO12_HX4700_ASIC3_IRQ                        12
-#define GPIO13_HX4700_W3220_IRQ                        13
-#define GPIO14_HX4700_nWLAN_IRQ                        14
-#define GPIO18_HX4700_RDY                      18
-#define GPIO22_HX4700_LCD_RL                   22
-#define GPIO27_HX4700_CODEC_ON                 27
-#define GPIO32_HX4700_RS232_ON                 32
-#define GPIO52_HX4700_CPU_nBATT_FAULT          52
-#define GPIO58_HX4700_TSC2046_nPENIRQ          58
-#define GPIO59_HX4700_LCD_PC1                  59
-#define GPIO60_HX4700_CF_RNB                   60
-#define GPIO61_HX4700_W3220_nRESET             61
-#define GPIO62_HX4700_LCD_nRESET               62
-#define GPIO63_HX4700_CPU_SS_nRESET            63
-#define GPIO65_HX4700_TSC2046_PEN_PU           65
-#define GPIO66_HX4700_ASIC3_nSDIO_IRQ          66
-#define GPIO67_HX4700_EUART_PS                 67
-#define GPIO70_HX4700_LCD_SLIN1                        70
-#define GPIO71_HX4700_ASIC3_nRESET             71
-#define GPIO72_HX4700_BQ24022_nCHARGE_EN       72
-#define GPIO73_HX4700_LCD_UD_1                 73
-#define GPIO75_HX4700_EARPHONE_nDET            75
-#define GPIO76_HX4700_USBC_PUEN                        76
-#define GPIO81_HX4700_CPU_GP_nRESET            81
-#define GPIO82_HX4700_EUART_RESET              82
-#define GPIO83_HX4700_WLAN_nRESET              83
-#define GPIO84_HX4700_LCD_SQN                  84
-#define GPIO85_HX4700_nPCE1                    85
-#define GPIO88_HX4700_TSC2046_CS               88
-#define GPIO91_HX4700_FLASH_VPEN               91
-#define GPIO92_HX4700_HP_DRIVER                        92
-#define GPIO93_HX4700_EUART_INT                        93
-#define GPIO94_HX4700_KEY_MAIL                 94
-#define GPIO95_HX4700_BATT_OFF                 95
-#define GPIO96_HX4700_BQ24022_ISET2            96
-#define GPIO97_HX4700_nBL_DETECT               97
-#define GPIO99_HX4700_KEY_CONTACTS             99
-#define GPIO100_HX4700_AUTO_SENSE              100 /* BL auto brightness */
-#define GPIO102_HX4700_SYNAPTICS_POWER_ON      102
-#define GPIO103_HX4700_SYNAPTICS_INT           103
-#define GPIO105_HX4700_nIR_ON                  105
-#define GPIO106_HX4700_CPU_BT_nRESET           106
-#define GPIO107_HX4700_SPK_nSD                 107
-#define GPIO109_HX4700_CODEC_nPDN              109
-#define GPIO110_HX4700_LCD_LVDD_3V3_ON         110
-#define GPIO111_HX4700_LCD_AVDD_3V3_ON         111
-#define GPIO112_HX4700_LCD_N2V7_7V3_ON         112
-#define GPIO114_HX4700_CF_RESET                        114
-#define GPIO116_HX4700_CPU_HW_nRESET           116
-
-/*
- * ASIC3 GPIOs
- */
-
-#define GPIOC_BASE             (HX4700_ASIC3_GPIO_BASE + 32)
-#define GPIOD_BASE             (HX4700_ASIC3_GPIO_BASE + 48)
-
-#define GPIOC0_LED_RED         (GPIOC_BASE + 0)
-#define GPIOC1_LED_GREEN       (GPIOC_BASE + 1)
-#define GPIOC2_LED_BLUE                (GPIOC_BASE + 2)
-#define GPIOC3_nSD_CS          (GPIOC_BASE + 3)
-#define GPIOC4_CF_nCD          (GPIOC_BASE + 4)        /* Input */
-#define GPIOC5_nCIOW           (GPIOC_BASE + 5)        /* Output, to CF */
-#define GPIOC6_nCIOR           (GPIOC_BASE + 6)        /* Output, to CF */
-#define GPIOC7_nPCE1           (GPIOC_BASE + 7)        /* Input, from CPU */
-#define GPIOC8_nPCE2           (GPIOC_BASE + 8)        /* Input, from CPU */
-#define GPIOC9_nPOE            (GPIOC_BASE + 9)        /* Input, from CPU */
-#define GPIOC10_CF_nPWE                (GPIOC_BASE + 10)       /* Input */
-#define GPIOC11_PSKTSEL                (GPIOC_BASE + 11)       /* Input, from CPU */
-#define GPIOC12_nPREG          (GPIOC_BASE + 12)       /* Input, from CPU */
-#define GPIOC13_nPWAIT         (GPIOC_BASE + 13)       /* Output, to CPU */
-#define GPIOC14_nPIOIS16       (GPIOC_BASE + 14)       /* Output, to CPU */
-#define GPIOC15_nPIOR          (GPIOC_BASE + 15)       /* Input, from CPU */
-
-#define GPIOD0_CPU_SS_INT      (GPIOD_BASE + 0)        /* Input */
-#define GPIOD1_nKEY_CALENDAR   (GPIOD_BASE + 1)
-#define GPIOD2_BLUETOOTH_WAKEUP        (GPIOD_BASE + 2)
-#define GPIOD3_nKEY_HOME       (GPIOD_BASE + 3)
-#define GPIOD4_CF_nCD          (GPIOD_BASE + 4)        /* Input, from CF */
-#define GPIOD5_nPIO            (GPIOD_BASE + 5)        /* Input */
-#define GPIOD6_nKEY_RECORD     (GPIOD_BASE + 6)
-#define GPIOD7_nSDIO_DETECT    (GPIOD_BASE + 7)
-#define GPIOD8_COM_DCD         (GPIOD_BASE + 8)        /* Input */
-#define GPIOD9_nAC_IN          (GPIOD_BASE + 9)
-#define GPIOD10_nSDIO_IRQ      (GPIOD_BASE + 10)       /* Input */
-#define GPIOD11_nCIOIS16       (GPIOD_BASE + 11)       /* Input, from CF */
-#define GPIOD12_nCWAIT         (GPIOD_BASE + 12)       /* Input, from CF */
-#define GPIOD13_CF_RNB         (GPIOD_BASE + 13)       /* Input */
-#define GPIOD14_nUSBC_DETECT   (GPIOD_BASE + 14)
-#define GPIOD15_nPIOW          (GPIOD_BASE + 15)       /* Input, from CPU */
-
-/*
- * EGPIOs
- */
-
-#define EGPIO0_VCC_3V3_EN      (HX4700_EGPIO_BASE + 0) /* WLAN support chip */
-#define EGPIO1_WL_VREG_EN      (HX4700_EGPIO_BASE + 1) /* WLAN power */
-#define EGPIO2_VCC_2V1_WL_EN   (HX4700_EGPIO_BASE + 2) /* unused */
-#define EGPIO3_SS_PWR_ON       (HX4700_EGPIO_BASE + 3) /* smart slot power */
-#define EGPIO4_CF_3V3_ON       (HX4700_EGPIO_BASE + 4) /* CF 3.3V enable */
-#define EGPIO5_BT_3V3_ON       (HX4700_EGPIO_BASE + 5) /* BT 3.3V enable */
-#define EGPIO6_WL1V8_EN                (HX4700_EGPIO_BASE + 6) /* WLAN 1.8V enable */
-#define EGPIO7_VCC_3V3_WL_EN   (HX4700_EGPIO_BASE + 7) /* WLAN 3.3V enable */
-#define EGPIO8_USB_3V3_ON      (HX4700_EGPIO_BASE + 8) /* unused */
-
-#endif /* _HX4700_H_ */
diff --git a/arch/arm/mach-pxa/include/mach/irqs.h b/arch/arm/mach-pxa/include/mach/irqs.h
deleted file mode 100644 (file)
index 22bf536..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/irqs.h
- *
- *  Author:    Nicolas Pitre
- *  Created:   Jun 15, 2001
- *  Copyright: MontaVista Software Inc.
- */
-#ifndef __ASM_MACH_IRQS_H
-#define __ASM_MACH_IRQS_H
-
-#include <asm/irq.h>
-
-#define PXA_ISA_IRQ(x) (x)
-#define PXA_IRQ(x)     (NR_IRQS_LEGACY + (x))
-
-#define IRQ_SSP3       PXA_IRQ(0)      /* SSP3 service request */
-#define IRQ_MSL                PXA_IRQ(1)      /* MSL Interface interrupt */
-#define IRQ_USBH2      PXA_IRQ(2)      /* USB Host interrupt 1 (OHCI,PXA27x) */
-#define IRQ_USBH1      PXA_IRQ(3)      /* USB Host interrupt 2 (non-OHCI,PXA27x) */
-#define IRQ_KEYPAD     PXA_IRQ(4)      /* Key pad controller */
-#define IRQ_MEMSTK     PXA_IRQ(5)      /* Memory Stick interrupt (PXA27x) */
-#define IRQ_ACIPC0     PXA_IRQ(5)      /* AP-CP Communication (PXA930) */
-#define IRQ_PWRI2C     PXA_IRQ(6)      /* Power I2C interrupt */
-#define IRQ_HWUART     PXA_IRQ(7)      /* HWUART Transmit/Receive/Error (PXA26x) */
-#define IRQ_OST_4_11   PXA_IRQ(7)      /* OS timer 4-11 matches (PXA27x) */
-#define        IRQ_GPIO0       PXA_IRQ(8)      /* GPIO0 Edge Detect */
-#define        IRQ_GPIO1       PXA_IRQ(9)      /* GPIO1 Edge Detect */
-#define        IRQ_GPIO_2_x    PXA_IRQ(10)     /* GPIO[2-x] Edge Detect */
-#define        IRQ_USB         PXA_IRQ(11)     /* USB Service */
-#define        IRQ_PMU         PXA_IRQ(12)     /* Performance Monitoring Unit */
-#define        IRQ_I2S         PXA_IRQ(13)     /* I2S Interrupt (PXA27x) */
-#define IRQ_SSP4       PXA_IRQ(13)     /* SSP4 service request (PXA3xx) */
-#define        IRQ_AC97        PXA_IRQ(14)     /* AC97 Interrupt */
-#define IRQ_ASSP       PXA_IRQ(15)     /* Audio SSP Service Request (PXA25x) */
-#define IRQ_USIM       PXA_IRQ(15)     /* Smart Card interface interrupt (PXA27x) */
-#define IRQ_NSSP       PXA_IRQ(16)     /* Network SSP Service Request (PXA25x) */
-#define IRQ_SSP2       PXA_IRQ(16)     /* SSP2 interrupt (PXA27x) */
-#define        IRQ_LCD         PXA_IRQ(17)     /* LCD Controller Service Request */
-#define        IRQ_I2C         PXA_IRQ(18)     /* I2C Service Request */
-#define        IRQ_ICP         PXA_IRQ(19)     /* ICP Transmit/Receive/Error */
-#define IRQ_ACIPC2     PXA_IRQ(19)     /* AP-CP Communication (PXA930) */
-#define        IRQ_STUART      PXA_IRQ(20)     /* STUART Transmit/Receive/Error */
-#define        IRQ_BTUART      PXA_IRQ(21)     /* BTUART Transmit/Receive/Error */
-#define        IRQ_FFUART      PXA_IRQ(22)     /* FFUART Transmit/Receive/Error*/
-#define        IRQ_MMC         PXA_IRQ(23)     /* MMC Status/Error Detection */
-#define        IRQ_SSP         PXA_IRQ(24)     /* SSP Service Request */
-#define        IRQ_DMA         PXA_IRQ(25)     /* DMA Channel Service Request */
-#define        IRQ_OST0        PXA_IRQ(26)     /* OS Timer match 0 */
-#define        IRQ_OST1        PXA_IRQ(27)     /* OS Timer match 1 */
-#define        IRQ_OST2        PXA_IRQ(28)     /* OS Timer match 2 */
-#define        IRQ_OST3        PXA_IRQ(29)     /* OS Timer match 3 */
-#define        IRQ_RTC1Hz      PXA_IRQ(30)     /* RTC HZ Clock Tick */
-#define        IRQ_RTCAlrm     PXA_IRQ(31)     /* RTC Alarm */
-
-#define IRQ_TPM                PXA_IRQ(32)     /* TPM interrupt */
-#define IRQ_CAMERA     PXA_IRQ(33)     /* Camera Interface */
-#define IRQ_CIR                PXA_IRQ(34)     /* Consumer IR */
-#define IRQ_COMM_WDT   PXA_IRQ(35)     /* Comm WDT interrupt */
-#define IRQ_TSI                PXA_IRQ(36)     /* Touch Screen Interface (PXA320) */
-#define IRQ_ENHROT     PXA_IRQ(37)     /* Enhanced Rotary (PXA930) */
-#define IRQ_USIM2      PXA_IRQ(38)     /* USIM2 Controller */
-#define IRQ_GCU                PXA_IRQ(39)     /* Graphics Controller (PXA3xx) */
-#define IRQ_ACIPC1     PXA_IRQ(40)     /* AP-CP Communication (PXA930) */
-#define IRQ_MMC2       PXA_IRQ(41)     /* MMC2 Controller */
-#define IRQ_TRKBALL    PXA_IRQ(43)     /* Track Ball (PXA930) */
-#define IRQ_1WIRE      PXA_IRQ(44)     /* 1-Wire Controller */
-#define IRQ_NAND       PXA_IRQ(45)     /* NAND Controller */
-#define IRQ_USB2       PXA_IRQ(46)     /* USB 2.0 Device Controller */
-#define IRQ_WAKEUP0    PXA_IRQ(49)     /* EXT_WAKEUP0 */
-#define IRQ_WAKEUP1    PXA_IRQ(50)     /* EXT_WAKEUP1 */
-#define IRQ_DMEMC      PXA_IRQ(51)     /* Dynamic Memory Controller */
-#define IRQ_MMC3       PXA_IRQ(55)     /* MMC3 Controller (PXA310) */
-
-#define IRQ_U2O                PXA_IRQ(64)     /* USB OTG 2.0 Controller (PXA935) */
-#define IRQ_U2H                PXA_IRQ(65)     /* USB Host 2.0 Controller (PXA935) */
-#define IRQ_PXA935_MMC0        PXA_IRQ(72)     /* MMC0 Controller (PXA935) */
-#define IRQ_PXA935_MMC1        PXA_IRQ(73)     /* MMC1 Controller (PXA935) */
-#define IRQ_PXA935_MMC2        PXA_IRQ(74)     /* MMC2 Controller (PXA935) */
-#define IRQ_U2P                PXA_IRQ(93)     /* USB PHY D+/D- Lines (PXA935) */
-
-#define PXA_GPIO_IRQ_BASE      PXA_IRQ(96)
-#define PXA_NR_BUILTIN_GPIO    (192)
-#define PXA_GPIO_TO_IRQ(x)     (PXA_GPIO_IRQ_BASE + (x))
-
-/*
- * The following interrupts are for board specific purposes. Since
- * the kernel can only run on one machine at a time, we can re-use
- * these.
- * By default, no board IRQ is reserved. It should be finished in
- * custom board since sparse IRQ is already enabled.
- */
-#define IRQ_BOARD_START                (PXA_GPIO_IRQ_BASE + PXA_NR_BUILTIN_GPIO)
-
-#define PXA_NR_IRQS            (IRQ_BOARD_START)
-
-#ifndef __ASSEMBLY__
-struct irq_data;
-struct pt_regs;
-
-void pxa_mask_irq(struct irq_data *);
-void pxa_unmask_irq(struct irq_data *);
-void icip_handle_irq(struct pt_regs *);
-void ichp_handle_irq(struct pt_regs *);
-
-void pxa_init_irq(int irq_nr, int (*set_wake)(struct irq_data *, unsigned int));
-#endif
-
-#endif /* __ASM_MACH_IRQS_H */
diff --git a/arch/arm/mach-pxa/include/mach/lubbock.h b/arch/arm/mach-pxa/include/mach/lubbock.h
deleted file mode 100644 (file)
index a3af4a2..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/lubbock.h
- *
- *  Author:    Nicolas Pitre
- *  Created:   Jun 15, 2001
- *  Copyright: MontaVista Software Inc.
- */
-
-#include <mach/irqs.h>
-
-#define LUBBOCK_ETH_PHYS       PXA_CS3_PHYS
-
-#define LUBBOCK_FPGA_PHYS      PXA_CS2_PHYS
-#define LUBBOCK_FPGA_VIRT      (0xf0000000)
-#define LUB_P2V(x)             ((x) - LUBBOCK_FPGA_PHYS + LUBBOCK_FPGA_VIRT)
-#define LUB_V2P(x)             ((x) - LUBBOCK_FPGA_VIRT + LUBBOCK_FPGA_PHYS)
-
-#ifndef __ASSEMBLY__
-#  define __LUB_REG(x)         (*((volatile unsigned long *)LUB_P2V(x)))
-#else
-#  define __LUB_REG(x)         LUB_P2V(x)
-#endif
-
-/* FPGA register virtual addresses */
-#define LUB_WHOAMI             __LUB_REG(LUBBOCK_FPGA_PHYS + 0x000)
-#define LUB_DISC_BLNK_LED      __LUB_REG(LUBBOCK_FPGA_PHYS + 0x040)
-#define LUB_CONF_SWITCHES      __LUB_REG(LUBBOCK_FPGA_PHYS + 0x050)
-#define LUB_USER_SWITCHES      __LUB_REG(LUBBOCK_FPGA_PHYS + 0x060)
-#define LUB_MISC_WR            __LUB_REG(LUBBOCK_FPGA_PHYS + 0x080)
-#define LUB_MISC_RD            __LUB_REG(LUBBOCK_FPGA_PHYS + 0x090)
-#define LUB_IRQ_MASK_EN                __LUB_REG(LUBBOCK_FPGA_PHYS + 0x0c0)
-#define LUB_IRQ_SET_CLR                __LUB_REG(LUBBOCK_FPGA_PHYS + 0x0d0)
-#define LUB_GP                 __LUB_REG(LUBBOCK_FPGA_PHYS + 0x100)
-
-/* Board specific IRQs */
-#define LUBBOCK_NR_IRQS                IRQ_BOARD_START
-
-#define LUBBOCK_IRQ(x)         (LUBBOCK_NR_IRQS + (x))
-#define LUBBOCK_SD_IRQ         LUBBOCK_IRQ(0)
-#define LUBBOCK_SA1111_IRQ     LUBBOCK_IRQ(1)
-#define LUBBOCK_USB_IRQ                LUBBOCK_IRQ(2)  /* usb connect */
-#define LUBBOCK_ETH_IRQ                LUBBOCK_IRQ(3)
-#define LUBBOCK_UCB1400_IRQ    LUBBOCK_IRQ(4)
-#define LUBBOCK_BB_IRQ         LUBBOCK_IRQ(5)
-#define LUBBOCK_USB_DISC_IRQ   LUBBOCK_IRQ(6)  /* usb disconnect */
-#define LUBBOCK_LAST_IRQ       LUBBOCK_IRQ(6)
-
-#define LUBBOCK_SA1111_IRQ_BASE        (LUBBOCK_NR_IRQS + 32)
diff --git a/arch/arm/mach-pxa/include/mach/magician.h b/arch/arm/mach-pxa/include/mach/magician.h
deleted file mode 100644 (file)
index 7d3af56..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * GPIO and IRQ definitions for HTC Magician PDA phones
- *
- * Copyright (c) 2007 Philipp Zabel
- */
-
-#ifndef _MAGICIAN_H_
-#define _MAGICIAN_H_
-
-#include <linux/gpio.h>
-#include <mach/irqs.h>
-
-/*
- * PXA GPIOs
- */
-
-#define GPIO0_MAGICIAN_KEY_POWER               0
-#define GPIO9_MAGICIAN_UNKNOWN                 9
-#define GPIO10_MAGICIAN_GSM_IRQ                        10
-#define GPIO11_MAGICIAN_GSM_OUT1               11
-#define GPIO13_MAGICIAN_CPLD_IRQ               13
-#define GPIO14_MAGICIAN_TSC2046_CS             14
-#define GPIO18_MAGICIAN_UNKNOWN                        18
-#define GPIO22_MAGICIAN_VIBRA_EN               22
-#define GPIO26_MAGICIAN_GSM_POWER              26
-#define GPIO27_MAGICIAN_USBC_PUEN              27
-#define GPIO30_MAGICIAN_BQ24022_nCHARGE_EN     30
-#define GPIO37_MAGICIAN_KEY_HANGUP             37
-#define GPIO38_MAGICIAN_KEY_CONTACTS           38
-#define GPIO40_MAGICIAN_GSM_OUT2               40
-#define GPIO48_MAGICIAN_UNKNOWN                        48
-#define GPIO56_MAGICIAN_UNKNOWN                        56
-#define GPIO57_MAGICIAN_CAM_RESET              57
-#define GPIO75_MAGICIAN_SAMSUNG_POWER          75
-#define GPIO83_MAGICIAN_nIR_EN                 83
-#define GPIO86_MAGICIAN_GSM_RESET              86
-#define GPIO87_MAGICIAN_GSM_SELECT             87
-#define GPIO90_MAGICIAN_KEY_CALENDAR           90
-#define GPIO91_MAGICIAN_KEY_CAMERA             91
-#define GPIO93_MAGICIAN_KEY_UP                 93
-#define GPIO94_MAGICIAN_KEY_DOWN               94
-#define GPIO95_MAGICIAN_KEY_LEFT               95
-#define GPIO96_MAGICIAN_KEY_RIGHT              96
-#define GPIO97_MAGICIAN_KEY_ENTER              97
-#define GPIO98_MAGICIAN_KEY_RECORD             98
-#define GPIO99_MAGICIAN_HEADPHONE_IN           99
-#define GPIO100_MAGICIAN_KEY_VOL_UP            100
-#define GPIO101_MAGICIAN_KEY_VOL_DOWN          101
-#define GPIO102_MAGICIAN_KEY_PHONE             102
-#define GPIO103_MAGICIAN_LED_KP                        103
-#define GPIO104_MAGICIAN_LCD_VOFF_EN           104
-#define GPIO105_MAGICIAN_LCD_VON_EN            105
-#define GPIO106_MAGICIAN_LCD_DCDC_NRESET       106
-#define GPIO107_MAGICIAN_DS1WM_IRQ             107
-#define GPIO108_MAGICIAN_GSM_READY             108
-#define GPIO114_MAGICIAN_UNKNOWN               114
-#define GPIO115_MAGICIAN_nPEN_IRQ              115
-#define GPIO116_MAGICIAN_nCAM_EN               116
-#define GPIO119_MAGICIAN_UNKNOWN               119
-#define GPIO120_MAGICIAN_UNKNOWN               120
-
-/*
- * CPLD IRQs
- */
-
-#define IRQ_MAGICIAN_SD                (IRQ_BOARD_START + 0)
-#define IRQ_MAGICIAN_EP                (IRQ_BOARD_START + 1)
-#define IRQ_MAGICIAN_BT                (IRQ_BOARD_START + 2)
-#define IRQ_MAGICIAN_VBUS      (IRQ_BOARD_START + 3)
-
-#define MAGICIAN_NR_IRQS       (IRQ_BOARD_START + 8)
-
-/*
- * CPLD EGPIOs
- */
-
-#define MAGICIAN_EGPIO_BASE            PXA_NR_BUILTIN_GPIO
-#define MAGICIAN_EGPIO(reg,bit) \
-       (MAGICIAN_EGPIO_BASE + 8*reg + bit)
-
-/* output */
-
-#define EGPIO_MAGICIAN_TOPPOLY_POWER   MAGICIAN_EGPIO(0, 2)
-#define EGPIO_MAGICIAN_LED_POWER       MAGICIAN_EGPIO(0, 5)
-#define EGPIO_MAGICIAN_GSM_RESET       MAGICIAN_EGPIO(0, 6)
-#define EGPIO_MAGICIAN_LCD_POWER       MAGICIAN_EGPIO(0, 7)
-#define EGPIO_MAGICIAN_SPK_POWER       MAGICIAN_EGPIO(1, 0)
-#define EGPIO_MAGICIAN_EP_POWER                MAGICIAN_EGPIO(1, 1)
-#define EGPIO_MAGICIAN_IN_SEL0         MAGICIAN_EGPIO(1, 2)
-#define EGPIO_MAGICIAN_IN_SEL1         MAGICIAN_EGPIO(1, 3)
-#define EGPIO_MAGICIAN_MIC_POWER       MAGICIAN_EGPIO(1, 4)
-#define EGPIO_MAGICIAN_CODEC_RESET     MAGICIAN_EGPIO(1, 5)
-#define EGPIO_MAGICIAN_CODEC_POWER     MAGICIAN_EGPIO(1, 6)
-#define EGPIO_MAGICIAN_BL_POWER                MAGICIAN_EGPIO(1, 7)
-#define EGPIO_MAGICIAN_SD_POWER                MAGICIAN_EGPIO(2, 0)
-#define EGPIO_MAGICIAN_CARKIT_MIC      MAGICIAN_EGPIO(2, 1)
-#define EGPIO_MAGICIAN_IR_RX_SHUTDOWN  MAGICIAN_EGPIO(2, 2)
-#define EGPIO_MAGICIAN_FLASH_VPP       MAGICIAN_EGPIO(2, 3)
-#define EGPIO_MAGICIAN_BL_POWER2       MAGICIAN_EGPIO(2, 4)
-#define EGPIO_MAGICIAN_BQ24022_ISET2   MAGICIAN_EGPIO(2, 5)
-#define EGPIO_MAGICIAN_NICD_CHARGE     MAGICIAN_EGPIO(2, 6)
-#define EGPIO_MAGICIAN_GSM_POWER       MAGICIAN_EGPIO(2, 7)
-
-/* input */
-
-/* USB or AC charger type */
-#define EGPIO_MAGICIAN_CABLE_TYPE      MAGICIAN_EGPIO(4, 0)
-/*
- * Vbus is detected
- * FIXME behaves like (6,3), may differ for host/device
- */
-#define EGPIO_MAGICIAN_CABLE_VBUS      MAGICIAN_EGPIO(4, 1)
-
-#define EGPIO_MAGICIAN_BOARD_ID0       MAGICIAN_EGPIO(5, 0)
-#define EGPIO_MAGICIAN_BOARD_ID1       MAGICIAN_EGPIO(5, 1)
-#define EGPIO_MAGICIAN_BOARD_ID2       MAGICIAN_EGPIO(5, 2)
-#define EGPIO_MAGICIAN_LCD_SELECT      MAGICIAN_EGPIO(5, 3)
-#define EGPIO_MAGICIAN_nSD_READONLY    MAGICIAN_EGPIO(5, 4)
-
-#define EGPIO_MAGICIAN_EP_INSERT       MAGICIAN_EGPIO(6, 1)
-/* FIXME behaves like (4,1), may differ for host/device */
-#define EGPIO_MAGICIAN_CABLE_INSERTED  MAGICIAN_EGPIO(6, 3)
-
-#endif /* _MAGICIAN_H_ */
diff --git a/arch/arm/mach-pxa/include/mach/mainstone.h b/arch/arm/mach-pxa/include/mach/mainstone.h
deleted file mode 100644 (file)
index 1698f2f..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/mainstone.h
- *
- *  Author:    Nicolas Pitre
- *  Created:   Nov 14, 2002
- *  Copyright: MontaVista Software Inc.
- */
-
-#ifndef ASM_ARCH_MAINSTONE_H
-#define ASM_ARCH_MAINSTONE_H
-
-#include <mach/irqs.h>
-
-#define MST_ETH_PHYS           PXA_CS4_PHYS
-
-#define MST_FPGA_PHYS          PXA_CS2_PHYS
-#define MST_FPGA_VIRT          (0xf0000000)
-#define MST_P2V(x)             ((x) - MST_FPGA_PHYS + MST_FPGA_VIRT)
-#define MST_V2P(x)             ((x) - MST_FPGA_VIRT + MST_FPGA_PHYS)
-
-#ifndef __ASSEMBLY__
-# define __MST_REG(x)          (*((volatile unsigned long *)MST_P2V(x)))
-#else
-# define __MST_REG(x)          MST_P2V(x)
-#endif
-
-/* board level registers in the FPGA */
-
-#define MST_LEDDAT1            __MST_REG(0x08000010)
-#define MST_LEDDAT2            __MST_REG(0x08000014)
-#define MST_LEDCTRL            __MST_REG(0x08000040)
-#define MST_GPSWR              __MST_REG(0x08000060)
-#define MST_MSCWR1             __MST_REG(0x08000080)
-#define MST_MSCWR2             __MST_REG(0x08000084)
-#define MST_MSCWR3             __MST_REG(0x08000088)
-#define MST_MSCRD              __MST_REG(0x08000090)
-#define MST_INTMSKENA          __MST_REG(0x080000c0)
-#define MST_INTSETCLR          __MST_REG(0x080000d0)
-#define MST_PCMCIA0            __MST_REG(0x080000e0)
-#define MST_PCMCIA1            __MST_REG(0x080000e4)
-
-#define MST_MSCWR1_CAMERA_ON   (1 << 15)  /* Camera interface power control */
-#define MST_MSCWR1_CAMERA_SEL  (1 << 14)  /* Camera interface mux control */
-#define MST_MSCWR1_LCD_CTL     (1 << 13)  /* General-purpose LCD control */
-#define MST_MSCWR1_MS_ON       (1 << 12)  /* Memory Stick power control */
-#define MST_MSCWR1_MMC_ON      (1 << 11)  /* MultiMediaCard* power control */
-#define MST_MSCWR1_MS_SEL      (1 << 10)  /* SD/MS multiplexer control */
-#define MST_MSCWR1_BB_SEL      (1 << 9)   /* PCMCIA/Baseband multiplexer */
-#define MST_MSCWR1_BT_ON       (1 << 8)   /* Bluetooth UART transceiver */
-#define MST_MSCWR1_BTDTR       (1 << 7)   /* Bluetooth UART DTR */
-
-#define MST_MSCWR1_IRDA_MASK   (3 << 5)   /* IrDA transceiver mode */
-#define MST_MSCWR1_IRDA_FULL   (0 << 5)   /* full distance power */
-#define MST_MSCWR1_IRDA_OFF    (1 << 5)   /* shutdown */
-#define MST_MSCWR1_IRDA_MED    (2 << 5)   /* 2/3 distance power */
-#define MST_MSCWR1_IRDA_LOW    (3 << 5)   /* 1/3 distance power */
-
-#define MST_MSCWR1_IRDA_FIR    (1 << 4)   /* IrDA transceiver SIR/FIR */
-#define MST_MSCWR1_GREENLED    (1 << 3)   /* LED D1 control */
-#define MST_MSCWR1_PDC_CTL     (1 << 2)   /* reserved */
-#define MST_MSCWR1_MTR_ON      (1 << 1)   /* Silent alert motor */
-#define MST_MSCWR1_SYSRESET    (1 << 0)   /* System reset */
-
-#define MST_MSCWR2_USB_OTG_RST (1 << 6)   /* USB On The Go reset */
-#define MST_MSCWR2_USB_OTG_SEL (1 << 5)   /* USB On The Go control */
-#define MST_MSCWR2_nUSBC_SC    (1 << 4)   /* USB client soft connect control */
-#define MST_MSCWR2_I2S_SPKROFF (1 << 3)   /* I2S CODEC amplifier control */
-#define MST_MSCWR2_AC97_SPKROFF        (1 << 2)   /* AC97 CODEC amplifier control */
-#define MST_MSCWR2_RADIO_PWR   (1 << 1)   /* Radio module power control */
-#define MST_MSCWR2_RADIO_WAKE  (1 << 0)   /* Radio module wake-up signal */
-
-#define MST_MSCWR3_GPIO_RESET_EN       (1 << 2) /* Enable GPIO Reset */
-#define MST_MSCWR3_GPIO_RESET          (1 << 1) /* Initiate a GPIO Reset */
-#define MST_MSCWR3_COMMS_SW_RESET      (1 << 0) /* Communications Processor Reset Control */
-
-#define MST_MSCRD_nPENIRQ      (1 << 9)   /* ADI7873* nPENIRQ signal */
-#define MST_MSCRD_nMEMSTK_CD   (1 << 8)   /* Memory Stick detection signal */
-#define MST_MSCRD_nMMC_CD      (1 << 7)   /* SD/MMC card detection signal */
-#define MST_MSCRD_nUSIM_CD     (1 << 6)   /* USIM card detection signal */
-#define MST_MSCRD_USB_CBL      (1 << 5)   /* USB client cable status */
-#define MST_MSCRD_TS_BUSY      (1 << 4)   /* ADI7873 busy */
-#define MST_MSCRD_BTDSR                (1 << 3)   /* Bluetooth UART DSR */
-#define MST_MSCRD_BTRI         (1 << 2)   /* Bluetooth UART Ring Indicator */
-#define MST_MSCRD_BTDCD                (1 << 1)   /* Bluetooth UART DCD */
-#define MST_MSCRD_nMMC_WP      (1 << 0)   /* SD/MMC write-protect status */
-
-#define MST_INT_S1_IRQ         (1 << 15)  /* PCMCIA socket 1 IRQ */
-#define MST_INT_S1_STSCHG      (1 << 14)  /* PCMCIA socket 1 status changed */
-#define MST_INT_S1_CD          (1 << 13)  /* PCMCIA socket 1 card detection */
-#define MST_INT_S0_IRQ         (1 << 11)  /* PCMCIA socket 0 IRQ */
-#define MST_INT_S0_STSCHG      (1 << 10)  /* PCMCIA socket 0 status changed */
-#define MST_INT_S0_CD          (1 << 9)   /* PCMCIA socket 0 card detection */
-#define MST_INT_nEXBRD_INT     (1 << 7)   /* Expansion board IRQ */
-#define MST_INT_MSINS          (1 << 6)   /* Memory Stick* detection */
-#define MST_INT_PENIRQ         (1 << 5)   /* ADI7873* touch-screen IRQ */
-#define MST_INT_AC97           (1 << 4)   /* AC'97 CODEC IRQ */
-#define MST_INT_ETHERNET       (1 << 3)   /* Ethernet controller IRQ */
-#define MST_INT_USBC           (1 << 2)   /* USB client cable detection IRQ */
-#define MST_INT_USIM           (1 << 1)   /* USIM card detection IRQ */
-#define MST_INT_MMC            (1 << 0)   /* MMC/SD card detection IRQ */
-
-#define MST_PCMCIA_nIRQ                (1 << 10)  /* IRQ / ready signal */
-#define MST_PCMCIA_nSPKR_BVD2  (1 << 9)   /* VDD sense / digital speaker */
-#define MST_PCMCIA_nSTSCHG_BVD1        (1 << 8)   /* VDD sense / card status changed */
-#define MST_PCMCIA_nVS2                (1 << 7)   /* VSS voltage sense */
-#define MST_PCMCIA_nVS1                (1 << 6)   /* VSS voltage sense */
-#define MST_PCMCIA_nCD         (1 << 5)   /* Card detection signal */
-#define MST_PCMCIA_RESET       (1 << 4)   /* Card reset signal */
-#define MST_PCMCIA_PWR_MASK    (0x000f)   /* MAX1602 power-supply controls */
-
-#define MST_PCMCIA_PWR_VPP_0    0x0       /* voltage VPP = 0V */
-#define MST_PCMCIA_PWR_VPP_120  0x2       /* voltage VPP = 12V*/
-#define MST_PCMCIA_PWR_VPP_VCC  0x1       /* voltage VPP = VCC */
-#define MST_PCMCIA_PWR_VCC_0    0x0       /* voltage VCC = 0V */
-#define MST_PCMCIA_PWR_VCC_33   0x8       /* voltage VCC = 3.3V */
-#define MST_PCMCIA_PWR_VCC_50   0x4       /* voltage VCC = 5.0V */
-
-#define MST_PCMCIA_INPUTS \
-       (MST_PCMCIA_nIRQ | MST_PCMCIA_nSPKR_BVD2 | MST_PCMCIA_nSTSCHG_BVD1 | \
-        MST_PCMCIA_nVS2 | MST_PCMCIA_nVS1 | MST_PCMCIA_nCD)
-
-/* board specific IRQs */
-#define MAINSTONE_NR_IRQS      IRQ_BOARD_START
-
-#define MAINSTONE_IRQ(x)       (MAINSTONE_NR_IRQS + (x))
-#define MAINSTONE_MMC_IRQ      MAINSTONE_IRQ(0)
-#define MAINSTONE_USIM_IRQ     MAINSTONE_IRQ(1)
-#define MAINSTONE_USBC_IRQ     MAINSTONE_IRQ(2)
-#define MAINSTONE_ETHERNET_IRQ MAINSTONE_IRQ(3)
-#define MAINSTONE_AC97_IRQ     MAINSTONE_IRQ(4)
-#define MAINSTONE_PEN_IRQ      MAINSTONE_IRQ(5)
-#define MAINSTONE_MSINS_IRQ    MAINSTONE_IRQ(6)
-#define MAINSTONE_EXBRD_IRQ    MAINSTONE_IRQ(7)
-#define MAINSTONE_S0_CD_IRQ    MAINSTONE_IRQ(9)
-#define MAINSTONE_S0_STSCHG_IRQ        MAINSTONE_IRQ(10)
-#define MAINSTONE_S0_IRQ       MAINSTONE_IRQ(11)
-#define MAINSTONE_S1_CD_IRQ    MAINSTONE_IRQ(13)
-#define MAINSTONE_S1_STSCHG_IRQ        MAINSTONE_IRQ(14)
-#define MAINSTONE_S1_IRQ       MAINSTONE_IRQ(15)
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/mfp.h b/arch/arm/mach-pxa/include/mach/mfp.h
deleted file mode 100644 (file)
index dbb961f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/mach-pxa/include/mach/mfp.h
- *
- * Multi-Function Pin Definitions
- *
- * Copyright (C) 2007 Marvell International Ltd.
- *
- * 2007-8-21: eric miao <eric.miao@marvell.com>
- *            initial version
- */
-
-#ifndef __ASM_ARCH_MFP_H
-#define __ASM_ARCH_MFP_H
-
-#include <plat/mfp.h>
-
-#endif /* __ASM_ARCH_MFP_H */
diff --git a/arch/arm/mach-pxa/include/mach/mtd-xip.h b/arch/arm/mach-pxa/include/mach/mtd-xip.h
deleted file mode 100644 (file)
index 4b31bef..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * MTD primitives for XIP support. Architecture specific functions
- *
- * Do not include this file directly. It's included from linux/mtd/xip.h
- * 
- * Author:     Nicolas Pitre
- * Created:    Nov 2, 2004
- * Copyright:  (C) 2004 MontaVista Software, Inc.
- */
-
-#ifndef __ARCH_PXA_MTD_XIP_H__
-#define __ARCH_PXA_MTD_XIP_H__
-
-#include <mach/regs-ost.h>
-
-/* restored July 2017, this did not build since 2011! */
-
-#define ICIP                   io_p2v(0x40d00000)
-#define ICMR                   io_p2v(0x40d00004)
-#define xip_irqpending()       (readl(ICIP) & readl(ICMR))
-
-/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
-#define xip_currtime()         readl(OSCR)
-#define xip_elapsed_since(x)   (signed)((readl(OSCR) - (x)) / 4)
-
-/*
- * xip_cpu_idle() is used when waiting for a delay equal or larger than
- * the system timer tick period.  This should put the CPU into idle mode
- * to save power and to be woken up only when some interrupts are pending.
- * As above, this should not rely upon standard kernel code.
- */
-
-#define xip_cpu_idle()  asm volatile ("mcr p14, 0, %0, c7, c0, 0" :: "r" (1))
-
-#endif /* __ARCH_PXA_MTD_XIP_H__ */
diff --git a/arch/arm/mach-pxa/include/mach/palmld.h b/arch/arm/mach-pxa/include/mach/palmld.h
deleted file mode 100644 (file)
index 99a6d8b..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * GPIOs and interrupts for Palm LifeDrive Handheld Computer
- *
- * Authors:    Alex Osborne <ato@meshy.org>
- *             Marek Vasut <marek.vasut@gmail.com>
- */
-
-#ifndef _INCLUDE_PALMLD_H_
-#define _INCLUDE_PALMLD_H_
-
-#include "irqs.h" /* PXA_GPIO_TO_IRQ */
-
-/** HERE ARE GPIOs **/
-
-/* GPIOs */
-#define GPIO_NR_PALMLD_GPIO_RESET      1
-#define GPIO_NR_PALMLD_POWER_DETECT    4
-#define GPIO_NR_PALMLD_HOTSYNC_BUTTON_N        10
-#define GPIO_NR_PALMLD_POWER_SWITCH    12
-#define GPIO_NR_PALMLD_EARPHONE_DETECT         13
-#define GPIO_NR_PALMLD_LOCK_SWITCH     15
-
-/* SD/MMC */
-#define GPIO_NR_PALMLD_SD_DETECT_N     14
-#define GPIO_NR_PALMLD_SD_POWER                114
-#define GPIO_NR_PALMLD_SD_READONLY     116
-
-/* TOUCHSCREEN */
-#define GPIO_NR_PALMLD_WM9712_IRQ      27
-
-/* IRDA */
-#define GPIO_NR_PALMLD_IR_DISABLE      108
-
-/* LCD/BACKLIGHT */
-#define GPIO_NR_PALMLD_BL_POWER                19
-#define GPIO_NR_PALMLD_LCD_POWER       96
-
-/* LCD BORDER */
-#define GPIO_NR_PALMLD_BORDER_SWITCH   21
-#define GPIO_NR_PALMLD_BORDER_SELECT   22
-
-/* BLUETOOTH */
-#define GPIO_NR_PALMLD_BT_POWER                17
-#define GPIO_NR_PALMLD_BT_RESET                83
-
-/* PCMCIA (WiFi) */
-#define GPIO_NR_PALMLD_PCMCIA_READY    38
-#define GPIO_NR_PALMLD_PCMCIA_POWER    36
-#define GPIO_NR_PALMLD_PCMCIA_RESET    81
-
-/* LEDs */
-#define GPIO_NR_PALMLD_LED_GREEN       52
-#define GPIO_NR_PALMLD_LED_AMBER       94
-
-/* IDE */
-#define GPIO_NR_PALMLD_IDE_RESET       98
-#define GPIO_NR_PALMLD_IDE_PWEN                115
-
-/* USB */
-#define GPIO_NR_PALMLD_USB_DETECT_N    3
-#define GPIO_NR_PALMLD_USB_READY       86
-#define GPIO_NR_PALMLD_USB_RESET       88
-#define GPIO_NR_PALMLD_USB_INT         106
-#define GPIO_NR_PALMLD_USB_POWER       118
-/* 20, 53 and 86 are usb related too */
-
-/* INTERRUPTS */
-#define IRQ_GPIO_PALMLD_GPIO_RESET     PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_GPIO_RESET)
-#define IRQ_GPIO_PALMLD_SD_DETECT_N    PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_SD_DETECT_N)
-#define IRQ_GPIO_PALMLD_WM9712_IRQ     PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_WM9712_IRQ)
-#define IRQ_GPIO_PALMLD_IDE_IRQ                PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_IDE_IRQ)
-
-
-/** HERE ARE INIT VALUES **/
-
-/* IO mappings */
-#define PALMLD_USB_PHYS                PXA_CS2_PHYS
-#define PALMLD_USB_VIRT                0xf0000000
-#define PALMLD_USB_SIZE                0x00100000
-
-#define PALMLD_IDE_PHYS                0x20000000
-#define PALMLD_IDE_VIRT                0xf1000000
-#define PALMLD_IDE_SIZE                0x00100000
-
-#define PALMLD_PHYS_IO_START   0x40000000
-#define PALMLD_STR_BASE                0xa0200000
-
-/* BATTERY */
-#define PALMLD_BAT_MAX_VOLTAGE         4000    /* 4.00V maximum voltage */
-#define PALMLD_BAT_MIN_VOLTAGE         3550    /* 3.55V critical voltage */
-#define PALMLD_BAT_MAX_CURRENT         0       /* unknown */
-#define PALMLD_BAT_MIN_CURRENT         0       /* unknown */
-#define PALMLD_BAT_MAX_CHARGE          1       /* unknown */
-#define PALMLD_BAT_MIN_CHARGE          1       /* unknown */
-#define PALMLD_MAX_LIFE_MINS           240     /* on-life in minutes */
-
-#define PALMLD_BAT_MEASURE_DELAY       (HZ * 1)
-
-/* BACKLIGHT */
-#define PALMLD_MAX_INTENSITY           0xFE
-#define PALMLD_DEFAULT_INTENSITY       0x7E
-#define PALMLD_LIMIT_MASK              0x7F
-#define PALMLD_PRESCALER               0x3F
-#define PALMLD_PERIOD_NS               3500
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/palmtc.h b/arch/arm/mach-pxa/include/mach/palmtc.h
deleted file mode 100644 (file)
index 9257a02..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * linux/include/asm-arm/arch-pxa/palmtc-gpio.h
- *
- * GPIOs and interrupts for Palm Tungsten|C Handheld Computer
- *
- * Authors:    Alex Osborne <bobofdoom@gmail.com>
- *             Marek Vasut <marek.vasut@gmail.com>
- *             Holger Bocklet <bitz.email@gmx.net>
- */
-
-#ifndef _INCLUDE_PALMTC_H_
-#define _INCLUDE_PALMTC_H_
-
-#include "irqs.h" /* PXA_GPIO_TO_IRQ */
-
-/** HERE ARE GPIOs **/
-
-/* GPIOs */
-#define GPIO_NR_PALMTC_EARPHONE_DETECT 2
-#define GPIO_NR_PALMTC_CRADLE_DETECT   5
-#define GPIO_NR_PALMTC_HOTSYNC_BUTTON  7
-
-/* SD/MMC */
-#define GPIO_NR_PALMTC_SD_DETECT_N     12
-#define GPIO_NR_PALMTC_SD_POWER                32
-#define GPIO_NR_PALMTC_SD_READONLY     54
-
-/* WLAN */
-#define GPIO_NR_PALMTC_PCMCIA_READY    13
-#define GPIO_NR_PALMTC_PCMCIA_PWRREADY 14
-#define GPIO_NR_PALMTC_PCMCIA_POWER1   15
-#define GPIO_NR_PALMTC_PCMCIA_POWER2   33
-#define GPIO_NR_PALMTC_PCMCIA_POWER3   55
-#define GPIO_NR_PALMTC_PCMCIA_RESET    78
-
-/* UDC */
-#define GPIO_NR_PALMTC_USB_DETECT_N    4
-#define GPIO_NR_PALMTC_USB_POWER       36
-
-/* LCD/BACKLIGHT */
-#define GPIO_NR_PALMTC_BL_POWER                16
-#define GPIO_NR_PALMTC_LCD_POWER       44
-#define GPIO_NR_PALMTC_LCD_BLANK       38
-
-/* UART */
-#define GPIO_NR_PALMTC_RS232_POWER     37
-
-/* IRDA */
-#define GPIO_NR_PALMTC_IR_DISABLE      45
-
-/* IRQs */
-#define IRQ_GPIO_PALMTC_SD_DETECT_N    PXA_GPIO_TO_IRQ(GPIO_NR_PALMTC_SD_DETECT_N)
-#define IRQ_GPIO_PALMTC_WLAN_READY     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTC_WLAN_READY)
-
-/* UCB1400 GPIOs */
-#define GPIO_NR_PALMTC_POWER_DETECT    (0x80 | 0x00)
-#define GPIO_NR_PALMTC_HEADPHONE_DETECT        (0x80 | 0x01)
-#define GPIO_NR_PALMTC_SPEAKER_ENABLE  (0x80 | 0x03)
-#define GPIO_NR_PALMTC_VIBRA_POWER     (0x80 | 0x05)
-#define GPIO_NR_PALMTC_LED_POWER       (0x80 | 0x07)
-
-/** HERE ARE INIT VALUES **/
-#define PALMTC_UCB1400_GPIO_OFFSET     0x80
-
-/* BATTERY */
-#define PALMTC_BAT_MAX_VOLTAGE         4000    /* 4.00V maximum voltage */
-#define PALMTC_BAT_MIN_VOLTAGE         3550    /* 3.55V critical voltage */
-#define PALMTC_BAT_MAX_CURRENT         0       /* unknown */
-#define PALMTC_BAT_MIN_CURRENT         0       /* unknown */
-#define PALMTC_BAT_MAX_CHARGE          1       /* unknown */
-#define PALMTC_BAT_MIN_CHARGE          1       /* unknown */
-#define PALMTC_MAX_LIFE_MINS           240     /* on-life in minutes */
-
-#define PALMTC_BAT_MEASURE_DELAY       (HZ * 1)
-
-/* BACKLIGHT */
-#define PALMTC_MAX_INTENSITY           0xFE
-#define PALMTC_DEFAULT_INTENSITY       0x7E
-#define PALMTC_LIMIT_MASK              0x7F
-#define PALMTC_PRESCALER               0x3F
-#define PALMTC_PERIOD_NS               3500
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/palmtx.h b/arch/arm/mach-pxa/include/mach/palmtx.h
deleted file mode 100644 (file)
index ec88abf..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * GPIOs and interrupts for Palm T|X Handheld Computer
- *
- * Based on palmld-gpio.h by Alex Osborne
- *
- * Authors:    Marek Vasut <marek.vasut@gmail.com>
- *             Cristiano P. <cristianop@users.sourceforge.net>
- *             Jan Herman <2hp@seznam.cz>
- */
-
-#ifndef _INCLUDE_PALMTX_H_
-#define _INCLUDE_PALMTX_H_
-
-#include "irqs.h" /* PXA_GPIO_TO_IRQ */
-
-/** HERE ARE GPIOs **/
-
-/* GPIOs */
-#define GPIO_NR_PALMTX_GPIO_RESET              1
-
-#define GPIO_NR_PALMTX_POWER_DETECT            12 /* 90 */
-#define GPIO_NR_PALMTX_HOTSYNC_BUTTON_N                10
-#define GPIO_NR_PALMTX_EARPHONE_DETECT         107
-
-/* SD/MMC */
-#define GPIO_NR_PALMTX_SD_DETECT_N             14
-#define GPIO_NR_PALMTX_SD_POWER                        114 /* probably */
-#define GPIO_NR_PALMTX_SD_READONLY             115 /* probably */
-
-/* TOUCHSCREEN */
-#define GPIO_NR_PALMTX_WM9712_IRQ              27
-
-/* IRDA -  disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */
-#define GPIO_NR_PALMTX_IR_DISABLE              40
-
-/* USB */
-#define GPIO_NR_PALMTX_USB_DETECT_N            13
-#define GPIO_NR_PALMTX_USB_PULLUP              93
-
-/* LCD/BACKLIGHT */
-#define GPIO_NR_PALMTX_BL_POWER                        84
-#define GPIO_NR_PALMTX_LCD_POWER               96
-
-/* LCD BORDER */
-#define GPIO_NR_PALMTX_BORDER_SWITCH           98
-#define GPIO_NR_PALMTX_BORDER_SELECT           22
-
-/* BLUETOOTH */
-#define GPIO_NR_PALMTX_BT_POWER                        17
-#define GPIO_NR_PALMTX_BT_RESET                        83
-
-/* PCMCIA (WiFi) */
-#define GPIO_NR_PALMTX_PCMCIA_POWER1           94
-#define GPIO_NR_PALMTX_PCMCIA_POWER2           108
-#define GPIO_NR_PALMTX_PCMCIA_RESET            79
-#define GPIO_NR_PALMTX_PCMCIA_READY            116
-
-/* NAND Flash ... this GPIO may be incorrect! */
-#define GPIO_NR_PALMTX_NAND_BUFFER_DIR         79
-
-/* INTERRUPTS */
-#define IRQ_GPIO_PALMTX_SD_DETECT_N    PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_SD_DETECT_N)
-#define IRQ_GPIO_PALMTX_WM9712_IRQ     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_WM9712_IRQ)
-#define IRQ_GPIO_PALMTX_USB_DETECT     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_USB_DETECT)
-#define IRQ_GPIO_PALMTX_GPIO_RESET     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_GPIO_RESET)
-
-/** HERE ARE INIT VALUES **/
-
-/* Various addresses  */
-#define PALMTX_PCMCIA_PHYS     0x28000000
-#define PALMTX_PCMCIA_VIRT     IOMEM(0xf0000000)
-#define PALMTX_PCMCIA_SIZE     0x100000
-
-#define PALMTX_PHYS_RAM_START  0xa0000000
-#define PALMTX_PHYS_IO_START   0x40000000
-
-#define PALMTX_STR_BASE                0xa0200000
-
-#define PALMTX_PHYS_FLASH_START        PXA_CS0_PHYS    /* ChipSelect 0 */
-#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS    /* ChipSelect 1 */
-
-#define PALMTX_NAND_ALE_PHYS   (PALMTX_PHYS_NAND_START | (1 << 24))
-#define PALMTX_NAND_CLE_PHYS   (PALMTX_PHYS_NAND_START | (1 << 25))
-#define PALMTX_NAND_ALE_VIRT   IOMEM(0xff100000)
-#define PALMTX_NAND_CLE_VIRT   IOMEM(0xff200000)
-
-/* TOUCHSCREEN */
-#define AC97_LINK_FRAME                        21
-
-
-/* BATTERY */
-#define PALMTX_BAT_MAX_VOLTAGE         4000    /* 4.00v current voltage */
-#define PALMTX_BAT_MIN_VOLTAGE         3550    /* 3.55v critical voltage */
-#define PALMTX_BAT_MAX_CURRENT         0       /* unknown */
-#define PALMTX_BAT_MIN_CURRENT         0       /* unknown */
-#define PALMTX_BAT_MAX_CHARGE          1       /* unknown */
-#define PALMTX_BAT_MIN_CHARGE          1       /* unknown */
-#define PALMTX_MAX_LIFE_MINS           360     /* on-life in minutes */
-
-#define PALMTX_BAT_MEASURE_DELAY       (HZ * 1)
-
-/* BACKLIGHT */
-#define PALMTX_MAX_INTENSITY           0xFE
-#define PALMTX_DEFAULT_INTENSITY       0x7E
-#define PALMTX_LIMIT_MASK              0x7F
-#define PALMTX_PRESCALER               0x3F
-#define PALMTX_PERIOD_NS               3500
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/poodle.h b/arch/arm/mach-pxa/include/mach/poodle.h
deleted file mode 100644 (file)
index b56b193..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * arch/arm/mach-pxa/include/mach/poodle.h
- *
- * May be copied or modified under the terms of the GNU General Public
- * License.  See linux/COPYING for more information.
- *
- * Based on:
- *   arch/arm/mach-sa1100/include/mach/collie.h
- *
- * ChangeLog:
- *   04-06-2001 Lineo Japan, Inc.
- *   04-16-2001 SHARP Corporation
- *   Update to 2.6 John Lenz
- */
-#ifndef __ASM_ARCH_POODLE_H
-#define __ASM_ARCH_POODLE_H  1
-
-#include "irqs.h" /* PXA_GPIO_TO_IRQ */
-
-/*
- * GPIOs
- */
-/* PXA GPIOs */
-#define POODLE_GPIO_ON_KEY             (0)
-#define POODLE_GPIO_AC_IN              (1)
-#define POODLE_GPIO_CO                 16
-#define POODLE_GPIO_TP_INT             (5)
-#define POODLE_GPIO_TP_CS              (24)
-#define POODLE_GPIO_WAKEUP             (11)    /* change battery */
-#define POODLE_GPIO_GA_INT             (10)
-#define POODLE_GPIO_IR_ON              (22)
-#define POODLE_GPIO_HP_IN              (4)
-#define POODLE_GPIO_CF_IRQ             (17)
-#define POODLE_GPIO_CF_CD              (14)
-#define POODLE_GPIO_CF_STSCHG          (14)
-#define POODLE_GPIO_SD_PWR             (33)
-#define POODLE_GPIO_SD_PWR1            (3)
-#define POODLE_GPIO_nSD_CLK            (6)
-#define POODLE_GPIO_nSD_WP             (7)
-#define POODLE_GPIO_nSD_INT            (8)
-#define POODLE_GPIO_nSD_DETECT         (9)
-#define POODLE_GPIO_MAIN_BAT_LOW       (13)
-#define POODLE_GPIO_BAT_COVER          (13)
-#define POODLE_GPIO_USB_PULLUP         (20)
-#define POODLE_GPIO_ADC_TEMP_ON                (21)
-#define POODLE_GPIO_BYPASS_ON          (36)
-#define POODLE_GPIO_CHRG_ON            (38)
-#define POODLE_GPIO_CHRG_FULL          (16)
-#define POODLE_GPIO_DISCHARGE_ON        (42) /* Enable battery discharge */
-
-/* PXA GPIOs */
-#define POODLE_IRQ_GPIO_ON_KEY         PXA_GPIO_TO_IRQ(0)
-#define POODLE_IRQ_GPIO_AC_IN          PXA_GPIO_TO_IRQ(1)
-#define POODLE_IRQ_GPIO_HP_IN          PXA_GPIO_TO_IRQ(4)
-#define POODLE_IRQ_GPIO_CO             PXA_GPIO_TO_IRQ(16)
-#define POODLE_IRQ_GPIO_TP_INT         PXA_GPIO_TO_IRQ(5)
-#define POODLE_IRQ_GPIO_WAKEUP         PXA_GPIO_TO_IRQ(11)
-#define POODLE_IRQ_GPIO_GA_INT         PXA_GPIO_TO_IRQ(10)
-#define POODLE_IRQ_GPIO_CF_IRQ         PXA_GPIO_TO_IRQ(17)
-#define POODLE_IRQ_GPIO_CF_CD          PXA_GPIO_TO_IRQ(14)
-#define POODLE_IRQ_GPIO_nSD_INT                PXA_GPIO_TO_IRQ(8)
-#define POODLE_IRQ_GPIO_nSD_DETECT     PXA_GPIO_TO_IRQ(9)
-#define POODLE_IRQ_GPIO_MAIN_BAT_LOW   PXA_GPIO_TO_IRQ(13)
-
-/* SCOOP GPIOs */
-#define POODLE_SCOOP_CHARGE_ON SCOOP_GPCR_PA11
-#define POODLE_SCOOP_CP401     SCOOP_GPCR_PA13
-#define POODLE_SCOOP_VPEN      SCOOP_GPCR_PA18
-#define POODLE_SCOOP_L_PCLK    SCOOP_GPCR_PA20
-#define POODLE_SCOOP_L_LCLK    SCOOP_GPCR_PA21
-#define POODLE_SCOOP_HS_OUT    SCOOP_GPCR_PA22
-
-#define POODLE_SCOOP_IO_DIR    ( POODLE_SCOOP_VPEN | POODLE_SCOOP_HS_OUT )
-#define POODLE_SCOOP_IO_OUT    ( 0 )
-
-#define POODLE_SCOOP_GPIO_BASE (PXA_NR_BUILTIN_GPIO)
-#define POODLE_GPIO_CHARGE_ON  (POODLE_SCOOP_GPIO_BASE + 0)
-#define POODLE_GPIO_CP401      (POODLE_SCOOP_GPIO_BASE + 2)
-#define POODLE_GPIO_VPEN       (POODLE_SCOOP_GPIO_BASE + 7)
-#define POODLE_GPIO_L_PCLK     (POODLE_SCOOP_GPIO_BASE + 9)
-#define POODLE_GPIO_L_LCLK     (POODLE_SCOOP_GPIO_BASE + 10)
-#define POODLE_GPIO_HS_OUT     (POODLE_SCOOP_GPIO_BASE + 11)
-
-#define POODLE_LOCOMO_GPIO_AMP_ON      LOCOMO_GPIO(8)
-#define POODLE_LOCOMO_GPIO_MUTE_L      LOCOMO_GPIO(10)
-#define POODLE_LOCOMO_GPIO_MUTE_R      LOCOMO_GPIO(11)
-#define POODLE_LOCOMO_GPIO_232VCC_ON   LOCOMO_GPIO(12)
-#define POODLE_LOCOMO_GPIO_JK_B        LOCOMO_GPIO(13)
-
-#define POODLE_NR_IRQS         (IRQ_BOARD_START + 4)   /* 4 for LoCoMo */
-
-extern struct platform_device poodle_locomo_device;
-
-#endif /* __ASM_ARCH_POODLE_H  */
diff --git a/arch/arm/mach-pxa/include/mach/pxa2xx-regs.h b/arch/arm/mach-pxa/include/mach/pxa2xx-regs.h
deleted file mode 100644 (file)
index fa121e1..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/pxa2xx-regs.h
- *
- *  Taken from pxa-regs.h by Russell King
- *
- *  Author:    Nicolas Pitre
- *  Copyright: MontaVista Software Inc.
- */
-
-#ifndef __PXA2XX_REGS_H
-#define __PXA2XX_REGS_H
-
-#include <mach/hardware.h>
-
-/*
- * Power Manager
- */
-
-#define PMCR           __REG(0x40F00000)  /* Power Manager Control Register */
-#define PSSR           __REG(0x40F00004)  /* Power Manager Sleep Status Register */
-#define PSPR           __REG(0x40F00008)  /* Power Manager Scratch Pad Register */
-#define PWER           __REG(0x40F0000C)  /* Power Manager Wake-up Enable Register */
-#define PRER           __REG(0x40F00010)  /* Power Manager GPIO Rising-Edge Detect Enable Register */
-#define PFER           __REG(0x40F00014)  /* Power Manager GPIO Falling-Edge Detect Enable Register */
-#define PEDR           __REG(0x40F00018)  /* Power Manager GPIO Edge Detect Status Register */
-#define PCFR           __REG(0x40F0001C)  /* Power Manager General Configuration Register */
-#define PGSR0          __REG(0x40F00020)  /* Power Manager GPIO Sleep State Register for GP[31-0] */
-#define PGSR1          __REG(0x40F00024)  /* Power Manager GPIO Sleep State Register for GP[63-32] */
-#define PGSR2          __REG(0x40F00028)  /* Power Manager GPIO Sleep State Register for GP[84-64] */
-#define PGSR3          __REG(0x40F0002C)  /* Power Manager GPIO Sleep State Register for GP[118-96] */
-#define RCSR           __REG(0x40F00030)  /* Reset Controller Status Register */
-
-#define PSLR           __REG(0x40F00034)       /* Power Manager Sleep Config Register */
-#define PSTR           __REG(0x40F00038)       /* Power Manager Standby Config Register */
-#define PSNR           __REG(0x40F0003C)       /* Power Manager Sense Config Register */
-#define PVCR           __REG(0x40F00040)       /* Power Manager VoltageControl Register */
-#define PKWR           __REG(0x40F00050)       /* Power Manager KB Wake-up Enable Reg */
-#define PKSR           __REG(0x40F00054)       /* Power Manager KB Level-Detect Register */
-#define PCMD(x)        __REG2(0x40F00080, (x)<<2)
-#define PCMD0  __REG(0x40F00080 + 0 * 4)
-#define PCMD1  __REG(0x40F00080 + 1 * 4)
-#define PCMD2  __REG(0x40F00080 + 2 * 4)
-#define PCMD3  __REG(0x40F00080 + 3 * 4)
-#define PCMD4  __REG(0x40F00080 + 4 * 4)
-#define PCMD5  __REG(0x40F00080 + 5 * 4)
-#define PCMD6  __REG(0x40F00080 + 6 * 4)
-#define PCMD7  __REG(0x40F00080 + 7 * 4)
-#define PCMD8  __REG(0x40F00080 + 8 * 4)
-#define PCMD9  __REG(0x40F00080 + 9 * 4)
-#define PCMD10 __REG(0x40F00080 + 10 * 4)
-#define PCMD11 __REG(0x40F00080 + 11 * 4)
-#define PCMD12 __REG(0x40F00080 + 12 * 4)
-#define PCMD13 __REG(0x40F00080 + 13 * 4)
-#define PCMD14 __REG(0x40F00080 + 14 * 4)
-#define PCMD15 __REG(0x40F00080 + 15 * 4)
-#define PCMD16 __REG(0x40F00080 + 16 * 4)
-#define PCMD17 __REG(0x40F00080 + 17 * 4)
-#define PCMD18 __REG(0x40F00080 + 18 * 4)
-#define PCMD19 __REG(0x40F00080 + 19 * 4)
-#define PCMD20 __REG(0x40F00080 + 20 * 4)
-#define PCMD21 __REG(0x40F00080 + 21 * 4)
-#define PCMD22 __REG(0x40F00080 + 22 * 4)
-#define PCMD23 __REG(0x40F00080 + 23 * 4)
-#define PCMD24 __REG(0x40F00080 + 24 * 4)
-#define PCMD25 __REG(0x40F00080 + 25 * 4)
-#define PCMD26 __REG(0x40F00080 + 26 * 4)
-#define PCMD27 __REG(0x40F00080 + 27 * 4)
-#define PCMD28 __REG(0x40F00080 + 28 * 4)
-#define PCMD29 __REG(0x40F00080 + 29 * 4)
-#define PCMD30 __REG(0x40F00080 + 30 * 4)
-#define PCMD31 __REG(0x40F00080 + 31 * 4)
-
-#define PCMD_MBC       (1<<12)
-#define PCMD_DCE       (1<<11)
-#define PCMD_LC        (1<<10)
-/* FIXME:  PCMD_SQC need be checked.   */
-#define PCMD_SQC       (3<<8)  /* currently only bit 8 is changeable,
-                                  bit 9 should be 0 all day. */
-#define PVCR_VCSA      (0x1<<14)
-#define PVCR_CommandDelay (0xf80)
-#define PCFR_PI2C_EN   (0x1 << 6)
-
-#define PSSR_OTGPH     (1 << 6)        /* OTG Peripheral control Hold */
-#define PSSR_RDH       (1 << 5)        /* Read Disable Hold */
-#define PSSR_PH                (1 << 4)        /* Peripheral Control Hold */
-#define PSSR_STS       (1 << 3)        /* Standby Mode Status */
-#define PSSR_VFS       (1 << 2)        /* VDD Fault Status */
-#define PSSR_BFS       (1 << 1)        /* Battery Fault Status */
-#define PSSR_SSS       (1 << 0)        /* Software Sleep Status */
-
-#define PSLR_SL_ROD    (1 << 20)       /* Sleep-Mode/Depp-Sleep Mode nRESET_OUT Disable */
-
-#define PCFR_RO                (1 << 15)       /* RDH Override */
-#define PCFR_PO                (1 << 14)       /* PH Override */
-#define PCFR_GPROD     (1 << 12)       /* GPIO nRESET_OUT Disable */
-#define PCFR_L1_EN     (1 << 11)       /* Sleep Mode L1 converter Enable */
-#define PCFR_FVC       (1 << 10)       /* Frequency/Voltage Change */
-#define PCFR_DC_EN     (1 << 7)        /* Sleep/deep-sleep DC-DC Converter Enable */
-#define PCFR_PI2CEN    (1 << 6)        /* Enable PI2C controller */
-#define PCFR_GPR_EN    (1 << 4)        /* nRESET_GPIO Pin Enable */
-#define PCFR_DS                (1 << 3)        /* Deep Sleep Mode */
-#define PCFR_FS                (1 << 2)        /* Float Static Chip Selects */
-#define PCFR_FP                (1 << 1)        /* Float PCMCIA controls */
-#define PCFR_OPDE      (1 << 0)        /* 3.6864 MHz oscillator power-down enable */
-
-#define RCSR_GPR       (1 << 3)        /* GPIO Reset */
-#define RCSR_SMR       (1 << 2)        /* Sleep Mode */
-#define RCSR_WDR       (1 << 1)        /* Watchdog Reset */
-#define RCSR_HWR       (1 << 0)        /* Hardware Reset */
-
-#define PWER_GPIO(Nb)  (1 << Nb)       /* GPIO [0..15] wake-up enable     */
-#define PWER_GPIO0     PWER_GPIO (0)   /* GPIO  [0] wake-up enable        */
-#define PWER_GPIO1     PWER_GPIO (1)   /* GPIO  [1] wake-up enable        */
-#define PWER_GPIO2     PWER_GPIO (2)   /* GPIO  [2] wake-up enable        */
-#define PWER_GPIO3     PWER_GPIO (3)   /* GPIO  [3] wake-up enable        */
-#define PWER_GPIO4     PWER_GPIO (4)   /* GPIO  [4] wake-up enable        */
-#define PWER_GPIO5     PWER_GPIO (5)   /* GPIO  [5] wake-up enable        */
-#define PWER_GPIO6     PWER_GPIO (6)   /* GPIO  [6] wake-up enable        */
-#define PWER_GPIO7     PWER_GPIO (7)   /* GPIO  [7] wake-up enable        */
-#define PWER_GPIO8     PWER_GPIO (8)   /* GPIO  [8] wake-up enable        */
-#define PWER_GPIO9     PWER_GPIO (9)   /* GPIO  [9] wake-up enable        */
-#define PWER_GPIO10    PWER_GPIO (10)  /* GPIO [10] wake-up enable        */
-#define PWER_GPIO11    PWER_GPIO (11)  /* GPIO [11] wake-up enable        */
-#define PWER_GPIO12    PWER_GPIO (12)  /* GPIO [12] wake-up enable        */
-#define PWER_GPIO13    PWER_GPIO (13)  /* GPIO [13] wake-up enable        */
-#define PWER_GPIO14    PWER_GPIO (14)  /* GPIO [14] wake-up enable        */
-#define PWER_GPIO15    PWER_GPIO (15)  /* GPIO [15] wake-up enable        */
-#define PWER_RTC       0x80000000      /* RTC alarm wake-up enable        */
-
-/*
- * PXA2xx specific Core clock definitions
- */
-#define CCCR           io_p2v(0x41300000)  /* Core Clock Configuration Register */
-#define CCSR           io_p2v(0x4130000C)  /* Core Clock Status Register */
-#define CKEN           io_p2v(0x41300004)  /* Clock Enable Register */
-#define OSCC           io_p2v(0x41300008)  /* Oscillator Configuration Register */
-
-#define CCCR_N_MASK    0x0380  /* Run Mode Frequency to Turbo Mode Frequency Multiplier */
-#define CCCR_M_MASK    0x0060  /* Memory Frequency to Run Mode Frequency Multiplier */
-#define CCCR_L_MASK    0x001f  /* Crystal Frequency to Memory Frequency Multiplier */
-
-#define CCCR_CPDIS_BIT (31)
-#define CCCR_PPDIS_BIT (30)
-#define CCCR_LCD_26_BIT        (27)
-#define CCCR_A_BIT     (25)
-
-#define CCSR_N2_MASK   CCCR_N_MASK
-#define CCSR_M_MASK    CCCR_M_MASK
-#define CCSR_L_MASK    CCCR_L_MASK
-#define CCSR_N2_SHIFT  7
-
-#define CKEN_AC97CONF   (31)    /* AC97 Controller Configuration */
-#define CKEN_CAMERA    (24)    /* Camera Interface Clock Enable */
-#define CKEN_SSP1      (23)    /* SSP1 Unit Clock Enable */
-#define CKEN_MEMC      (22)    /* Memory Controller Clock Enable */
-#define CKEN_MEMSTK    (21)    /* Memory Stick Host Controller */
-#define CKEN_IM                (20)    /* Internal Memory Clock Enable */
-#define CKEN_KEYPAD    (19)    /* Keypad Interface Clock Enable */
-#define CKEN_USIM      (18)    /* USIM Unit Clock Enable */
-#define CKEN_MSL       (17)    /* MSL Unit Clock Enable */
-#define CKEN_LCD       (16)    /* LCD Unit Clock Enable */
-#define CKEN_PWRI2C    (15)    /* PWR I2C Unit Clock Enable */
-#define CKEN_I2C       (14)    /* I2C Unit Clock Enable */
-#define CKEN_FICP      (13)    /* FICP Unit Clock Enable */
-#define CKEN_MMC       (12)    /* MMC Unit Clock Enable */
-#define CKEN_USB       (11)    /* USB Unit Clock Enable */
-#define CKEN_ASSP      (10)    /* ASSP (SSP3) Clock Enable */
-#define CKEN_USBHOST   (10)    /* USB Host Unit Clock Enable */
-#define CKEN_OSTIMER   (9)     /* OS Timer Unit Clock Enable */
-#define CKEN_NSSP      (9)     /* NSSP (SSP2) Clock Enable */
-#define CKEN_I2S       (8)     /* I2S Unit Clock Enable */
-#define CKEN_BTUART    (7)     /* BTUART Unit Clock Enable */
-#define CKEN_FFUART    (6)     /* FFUART Unit Clock Enable */
-#define CKEN_STUART    (5)     /* STUART Unit Clock Enable */
-#define CKEN_HWUART    (4)     /* HWUART Unit Clock Enable */
-#define CKEN_SSP3      (4)     /* SSP3 Unit Clock Enable */
-#define CKEN_SSP       (3)     /* SSP Unit Clock Enable */
-#define CKEN_SSP2      (3)     /* SSP2 Unit Clock Enable */
-#define CKEN_AC97      (2)     /* AC97 Unit Clock Enable */
-#define CKEN_PWM1      (1)     /* PWM1 Clock Enable */
-#define CKEN_PWM0      (0)     /* PWM0 Clock Enable */
-
-#define OSCC_OON       (1 << 1)        /* 32.768kHz OON (write-once only bit) */
-#define OSCC_OOK       (1 << 0)        /* 32.768kHz OOK (read-only bit) */
-
-/* PWRMODE register M field values */
-
-#define PWRMODE_IDLE           0x1
-#define PWRMODE_STANDBY                0x2
-#define PWRMODE_SLEEP          0x3
-#define PWRMODE_DEEPSLEEP      0x7
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h b/arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
deleted file mode 100644 (file)
index 070f6c7..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
- *
- * PXA3xx specific register definitions
- *
- * Copyright (C) 2007 Marvell International Ltd.
- */
-
-#ifndef __ASM_ARCH_PXA3XX_REGS_H
-#define __ASM_ARCH_PXA3XX_REGS_H
-
-#include <mach/hardware.h>
-
-/*
- * Oscillator Configuration Register (OSCC)
- */
-#define OSCC           io_p2v(0x41350000)  /* Oscillator Configuration Register */
-
-#define OSCC_PEN       (1 << 11)       /* 13MHz POUT */
-
-
-/*
- * Service Power Management Unit (MPMU)
- */
-#define PMCR           __REG(0x40F50000)       /* Power Manager Control Register */
-#define PSR            __REG(0x40F50004)       /* Power Manager S2 Status Register */
-#define PSPR           __REG(0x40F50008)       /* Power Manager Scratch Pad Register */
-#define PCFR           __REG(0x40F5000C)       /* Power Manager General Configuration Register */
-#define PWER           __REG(0x40F50010)       /* Power Manager Wake-up Enable Register */
-#define PWSR           __REG(0x40F50014)       /* Power Manager Wake-up Status Register */
-#define PECR           __REG(0x40F50018)       /* Power Manager EXT_WAKEUP[1:0] Control Register */
-#define DCDCSR         __REG(0x40F50080)       /* DC-DC Controller Status Register */
-#define PVCR           __REG(0x40F50100)       /* Power Manager Voltage Change Control Register */
-#define PCMD(x)                __REG(0x40F50110 + ((x) << 2))
-
-/*
- * Slave Power Management Unit
- */
-#define ASCR           __REG(0x40f40000)       /* Application Subsystem Power Status/Configuration */
-#define ARSR           __REG(0x40f40004)       /* Application Subsystem Reset Status */
-#define AD3ER          __REG(0x40f40008)       /* Application Subsystem Wake-Up from D3 Enable */
-#define AD3SR          __REG(0x40f4000c)       /* Application Subsystem Wake-Up from D3 Status */
-#define AD2D0ER                __REG(0x40f40010)       /* Application Subsystem Wake-Up from D2 to D0 Enable */
-#define AD2D0SR                __REG(0x40f40014)       /* Application Subsystem Wake-Up from D2 to D0 Status */
-#define AD2D1ER                __REG(0x40f40018)       /* Application Subsystem Wake-Up from D2 to D1 Enable */
-#define AD2D1SR                __REG(0x40f4001c)       /* Application Subsystem Wake-Up from D2 to D1 Status */
-#define AD1D0ER                __REG(0x40f40020)       /* Application Subsystem Wake-Up from D1 to D0 Enable */
-#define AD1D0SR                __REG(0x40f40024)       /* Application Subsystem Wake-Up from D1 to D0 Status */
-#define AGENP          __REG(0x40f4002c)       /* Application Subsystem General Purpose */
-#define AD3R           __REG(0x40f40030)       /* Application Subsystem D3 Configuration */
-#define AD2R           __REG(0x40f40034)       /* Application Subsystem D2 Configuration */
-#define AD1R           __REG(0x40f40038)       /* Application Subsystem D1 Configuration */
-
-/*
- * Application Subsystem Configuration bits.
- */
-#define ASCR_RDH               (1 << 31)
-#define ASCR_D1S               (1 << 2)
-#define ASCR_D2S               (1 << 1)
-#define ASCR_D3S               (1 << 0)
-
-/*
- * Application Reset Status bits.
- */
-#define ARSR_GPR               (1 << 3)
-#define ARSR_LPMR              (1 << 2)
-#define ARSR_WDT               (1 << 1)
-#define ARSR_HWR               (1 << 0)
-
-/*
- * Application Subsystem Wake-Up bits.
- */
-#define ADXER_WRTC             (1 << 31)       /* RTC */
-#define ADXER_WOST             (1 << 30)       /* OS Timer */
-#define ADXER_WTSI             (1 << 29)       /* Touchscreen */
-#define ADXER_WUSBH            (1 << 28)       /* USB host */
-#define ADXER_WUSB2            (1 << 26)       /* USB client 2.0 */
-#define ADXER_WMSL0            (1 << 24)       /* MSL port 0*/
-#define ADXER_WDMUX3           (1 << 23)       /* USB EDMUX3 */
-#define ADXER_WDMUX2           (1 << 22)       /* USB EDMUX2 */
-#define ADXER_WKP              (1 << 21)       /* Keypad */
-#define ADXER_WUSIM1           (1 << 20)       /* USIM Port 1 */
-#define ADXER_WUSIM0           (1 << 19)       /* USIM Port 0 */
-#define ADXER_WOTG             (1 << 16)       /* USBOTG input */
-#define ADXER_MFP_WFLASH       (1 << 15)       /* MFP: Data flash busy */
-#define ADXER_MFP_GEN12                (1 << 14)       /* MFP: MMC3/GPIO/OST inputs */
-#define ADXER_MFP_WMMC2                (1 << 13)       /* MFP: MMC2 */
-#define ADXER_MFP_WMMC1                (1 << 12)       /* MFP: MMC1 */
-#define ADXER_MFP_WI2C         (1 << 11)       /* MFP: I2C */
-#define ADXER_MFP_WSSP4                (1 << 10)       /* MFP: SSP4 */
-#define ADXER_MFP_WSSP3                (1 << 9)        /* MFP: SSP3 */
-#define ADXER_MFP_WMAXTRIX     (1 << 8)        /* MFP: matrix keypad */
-#define ADXER_MFP_WUART3       (1 << 7)        /* MFP: UART3 */
-#define ADXER_MFP_WUART2       (1 << 6)        /* MFP: UART2 */
-#define ADXER_MFP_WUART1       (1 << 5)        /* MFP: UART1 */
-#define ADXER_MFP_WSSP2                (1 << 4)        /* MFP: SSP2 */
-#define ADXER_MFP_WSSP1                (1 << 3)        /* MFP: SSP1 */
-#define ADXER_MFP_WAC97                (1 << 2)        /* MFP: AC97 */
-#define ADXER_WEXTWAKE1                (1 << 1)        /* External Wake 1 */
-#define ADXER_WEXTWAKE0                (1 << 0)        /* External Wake 0 */
-
-/*
- * AD3R/AD2R/AD1R bits.  R2-R5 are only defined for PXA320.
- */
-#define ADXR_L2                        (1 << 8)
-#define ADXR_R5                        (1 << 5)
-#define ADXR_R4                        (1 << 4)
-#define ADXR_R3                        (1 << 3)
-#define ADXR_R2                        (1 << 2)
-#define ADXR_R1                        (1 << 1)
-#define ADXR_R0                        (1 << 0)
-
-/*
- * Values for PWRMODE CP15 register
- */
-#define PXA3xx_PM_S3D4C4       0x07    /* aka deep sleep */
-#define PXA3xx_PM_S2D3C4       0x06    /* aka sleep */
-#define PXA3xx_PM_S0D2C2       0x03    /* aka standby */
-#define PXA3xx_PM_S0D1C2       0x02    /* aka LCD refresh */
-#define PXA3xx_PM_S0D0C1       0x01
-
-/*
- * Application Subsystem Clock
- */
-#define ACCR           __REG(0x41340000)       /* Application Subsystem Clock Configuration Register */
-#define ACSR           __REG(0x41340004)       /* Application Subsystem Clock Status Register */
-#define AICSR          __REG(0x41340008)       /* Application Subsystem Interrupt Control/Status Register */
-#define CKENA          __REG(0x4134000C)       /* A Clock Enable Register */
-#define CKENB          __REG(0x41340010)       /* B Clock Enable Register */
-#define CKENC          __REG(0x41340024)       /* C Clock Enable Register */
-#define AC97_DIV       __REG(0x41340014)       /* AC97 clock divisor value register */
-
-#define ACCR_XPDIS             (1 << 31)       /* Core PLL Output Disable */
-#define ACCR_SPDIS             (1 << 30)       /* System PLL Output Disable */
-#define ACCR_D0CS              (1 << 26)       /* D0 Mode Clock Select */
-#define ACCR_PCCE              (1 << 11)       /* Power Mode Change Clock Enable */
-#define ACCR_DDR_D0CS          (1 << 7)        /* DDR SDRAM clock frequency in D0CS (PXA31x only) */
-
-#define ACCR_SMCFS_MASK                (0x7 << 23)     /* Static Memory Controller Frequency Select */
-#define ACCR_SFLFS_MASK                (0x3 << 18)     /* Frequency Select for Internal Memory Controller */
-#define ACCR_XSPCLK_MASK       (0x3 << 16)     /* Core Frequency during Frequency Change */
-#define ACCR_HSS_MASK          (0x3 << 14)     /* System Bus-Clock Frequency Select */
-#define ACCR_DMCFS_MASK                (0x3 << 12)     /* Dynamic Memory Controller Clock Frequency Select */
-#define ACCR_XN_MASK           (0x7 << 8)      /* Core PLL Turbo-Mode-to-Run-Mode Ratio */
-#define ACCR_XL_MASK           (0x1f)          /* Core PLL Run-Mode-to-Oscillator Ratio */
-
-#define ACCR_SMCFS(x)          (((x) & 0x7) << 23)
-#define ACCR_SFLFS(x)          (((x) & 0x3) << 18)
-#define ACCR_XSPCLK(x)         (((x) & 0x3) << 16)
-#define ACCR_HSS(x)            (((x) & 0x3) << 14)
-#define ACCR_DMCFS(x)          (((x) & 0x3) << 12)
-#define ACCR_XN(x)             (((x) & 0x7) << 8)
-#define ACCR_XL(x)             ((x) & 0x1f)
-
-/*
- * Clock Enable Bit
- */
-#define CKEN_LCD       1       /* < LCD Clock Enable */
-#define CKEN_USBH      2       /* < USB host clock enable */
-#define CKEN_CAMERA    3       /* < Camera interface clock enable */
-#define CKEN_NAND      4       /* < NAND Flash Controller Clock Enable */
-#define CKEN_USB2      6       /* < USB 2.0 client clock enable. */
-#define CKEN_DMC       8       /* < Dynamic Memory Controller clock enable */
-#define CKEN_SMC       9       /* < Static Memory Controller clock enable */
-#define CKEN_ISC       10      /* < Internal SRAM Controller clock enable */
-#define CKEN_BOOT      11      /* < Boot rom clock enable */
-#define CKEN_MMC1      12      /* < MMC1 Clock enable */
-#define CKEN_MMC2      13      /* < MMC2 clock enable */
-#define CKEN_KEYPAD    14      /* < Keypand Controller Clock Enable */
-#define CKEN_CIR       15      /* < Consumer IR Clock Enable */
-#define CKEN_USIM0     17      /* < USIM[0] Clock Enable */
-#define CKEN_USIM1     18      /* < USIM[1] Clock Enable */
-#define CKEN_TPM       19      /* < TPM clock enable */
-#define CKEN_UDC       20      /* < UDC clock enable */
-#define CKEN_BTUART    21      /* < BTUART clock enable */
-#define CKEN_FFUART    22      /* < FFUART clock enable */
-#define CKEN_STUART    23      /* < STUART clock enable */
-#define CKEN_AC97      24      /* < AC97 clock enable */
-#define CKEN_TOUCH     25      /* < Touch screen Interface Clock Enable */
-#define CKEN_SSP1      26      /* < SSP1 clock enable */
-#define CKEN_SSP2      27      /* < SSP2 clock enable */
-#define CKEN_SSP3      28      /* < SSP3 clock enable */
-#define CKEN_SSP4      29      /* < SSP4 clock enable */
-#define CKEN_MSL0      30      /* < MSL0 clock enable */
-#define CKEN_PWM0      32      /* < PWM[0] clock enable */
-#define CKEN_PWM1      33      /* < PWM[1] clock enable */
-#define CKEN_I2C       36      /* < I2C clock enable */
-#define CKEN_INTC      38      /* < Interrupt controller clock enable */
-#define CKEN_GPIO      39      /* < GPIO clock enable */
-#define CKEN_1WIRE     40      /* < 1-wire clock enable */
-#define CKEN_HSIO2     41      /* < HSIO2 clock enable */
-#define CKEN_MINI_IM   48      /* < Mini-IM */
-#define CKEN_MINI_LCD  49      /* < Mini LCD */
-
-#define CKEN_MMC3      5       /* < MMC3 Clock Enable */
-#define CKEN_MVED      43      /* < MVED clock enable */
-
-/* Note: GCU clock enable bit differs on PXA300/PXA310 and PXA320 */
-#define CKEN_PXA300_GCU                42      /* Graphics controller clock enable */
-#define CKEN_PXA320_GCU                7       /* Graphics controller clock enable */
-
-#endif /* __ASM_ARCH_PXA3XX_REGS_H */
diff --git a/arch/arm/mach-pxa/include/mach/regs-ac97.h b/arch/arm/mach-pxa/include/mach/regs-ac97.h
deleted file mode 100644 (file)
index 1db96fd..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_ARCH_REGS_AC97_H
-#define __ASM_ARCH_REGS_AC97_H
-
-#include <mach/hardware.h>
-
-/*
- * AC97 Controller registers
- */
-
-#define POCR           __REG(0x40500000)  /* PCM Out Control Register */
-#define POCR_FEIE      (1 << 3)        /* FIFO Error Interrupt Enable */
-#define POCR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
-
-#define PICR           __REG(0x40500004)  /* PCM In Control Register */
-#define PICR_FEIE      (1 << 3)        /* FIFO Error Interrupt Enable */
-#define PICR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
-
-#define MCCR           __REG(0x40500008)  /* Mic In Control Register */
-#define MCCR_FEIE      (1 << 3)        /* FIFO Error Interrupt Enable */
-#define MCCR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
-
-#define GCR            __REG(0x4050000C)  /* Global Control Register */
-#ifdef CONFIG_PXA3xx
-#define GCR_CLKBPB     (1 << 31)       /* Internal clock enable */
-#endif
-#define GCR_nDMAEN     (1 << 24)       /* non DMA Enable */
-#define GCR_CDONE_IE   (1 << 19)       /* Command Done Interrupt Enable */
-#define GCR_SDONE_IE   (1 << 18)       /* Status Done Interrupt Enable */
-#define GCR_SECRDY_IEN (1 << 9)        /* Secondary Ready Interrupt Enable */
-#define GCR_PRIRDY_IEN (1 << 8)        /* Primary Ready Interrupt Enable */
-#define GCR_SECRES_IEN (1 << 5)        /* Secondary Resume Interrupt Enable */
-#define GCR_PRIRES_IEN (1 << 4)        /* Primary Resume Interrupt Enable */
-#define GCR_ACLINK_OFF (1 << 3)        /* AC-link Shut Off */
-#define GCR_WARM_RST   (1 << 2)        /* AC97 Warm Reset */
-#define GCR_COLD_RST   (1 << 1)        /* AC'97 Cold Reset (0 = active) */
-#define GCR_GIE                (1 << 0)        /* Codec GPI Interrupt Enable */
-
-#define POSR           __REG(0x40500010)  /* PCM Out Status Register */
-#define POSR_FIFOE     (1 << 4)        /* FIFO error */
-#define POSR_FSR       (1 << 2)        /* FIFO Service Request */
-
-#define PISR           __REG(0x40500014)  /* PCM In Status Register */
-#define PISR_FIFOE     (1 << 4)        /* FIFO error */
-#define PISR_EOC       (1 << 3)        /* DMA End-of-Chain (exclusive clear) */
-#define PISR_FSR       (1 << 2)        /* FIFO Service Request */
-
-#define MCSR           __REG(0x40500018)  /* Mic In Status Register */
-#define MCSR_FIFOE     (1 << 4)        /* FIFO error */
-#define MCSR_EOC       (1 << 3)        /* DMA End-of-Chain (exclusive clear) */
-#define MCSR_FSR       (1 << 2)        /* FIFO Service Request */
-
-#define GSR            __REG(0x4050001C)  /* Global Status Register */
-#define GSR_CDONE      (1 << 19)       /* Command Done */
-#define GSR_SDONE      (1 << 18)       /* Status Done */
-#define GSR_RDCS       (1 << 15)       /* Read Completion Status */
-#define GSR_BIT3SLT12  (1 << 14)       /* Bit 3 of slot 12 */
-#define GSR_BIT2SLT12  (1 << 13)       /* Bit 2 of slot 12 */
-#define GSR_BIT1SLT12  (1 << 12)       /* Bit 1 of slot 12 */
-#define GSR_SECRES     (1 << 11)       /* Secondary Resume Interrupt */
-#define GSR_PRIRES     (1 << 10)       /* Primary Resume Interrupt */
-#define GSR_SCR                (1 << 9)        /* Secondary Codec Ready */
-#define GSR_PCR                (1 << 8)        /*  Primary Codec Ready */
-#define GSR_MCINT      (1 << 7)        /* Mic In Interrupt */
-#define GSR_POINT      (1 << 6)        /* PCM Out Interrupt */
-#define GSR_PIINT      (1 << 5)        /* PCM In Interrupt */
-#define GSR_ACOFFD     (1 << 3)        /* AC-link Shut Off Done */
-#define GSR_MOINT      (1 << 2)        /* Modem Out Interrupt */
-#define GSR_MIINT      (1 << 1)        /* Modem In Interrupt */
-#define GSR_GSCI       (1 << 0)        /* Codec GPI Status Change Interrupt */
-
-#define CAR            __REG(0x40500020)  /* CODEC Access Register */
-#define CAR_CAIP       (1 << 0)        /* Codec Access In Progress */
-
-#define PCDR           __REG(0x40500040)  /* PCM FIFO Data Register */
-#define MCDR           __REG(0x40500060)  /* Mic-in FIFO Data Register */
-
-#define MOCR           __REG(0x40500100)  /* Modem Out Control Register */
-#define MOCR_FEIE      (1 << 3)        /* FIFO Error */
-#define MOCR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
-
-#define MICR           __REG(0x40500108)  /* Modem In Control Register */
-#define MICR_FEIE      (1 << 3)        /* FIFO Error */
-#define MICR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
-
-#define MOSR           __REG(0x40500110)  /* Modem Out Status Register */
-#define MOSR_FIFOE     (1 << 4)        /* FIFO error */
-#define MOSR_FSR       (1 << 2)        /* FIFO Service Request */
-
-#define MISR           __REG(0x40500118)  /* Modem In Status Register */
-#define MISR_FIFOE     (1 << 4)        /* FIFO error */
-#define MISR_EOC       (1 << 3)        /* DMA End-of-Chain (exclusive clear) */
-#define MISR_FSR       (1 << 2)        /* FIFO Service Request */
-
-#define MODR           __REG(0x40500140)  /* Modem FIFO Data Register */
-
-#define PAC_REG_BASE   __REG(0x40500200)  /* Primary Audio Codec */
-#define SAC_REG_BASE   __REG(0x40500300)  /* Secondary Audio Codec */
-#define PMC_REG_BASE   __REG(0x40500400)  /* Primary Modem Codec */
-#define SMC_REG_BASE   __REG(0x40500500)  /* Secondary Modem Codec */
-
-#endif /* __ASM_ARCH_REGS_AC97_H */
diff --git a/arch/arm/mach-pxa/include/mach/regs-lcd.h b/arch/arm/mach-pxa/include/mach/regs-lcd.h
deleted file mode 100644 (file)
index e2b6e3d..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_ARCH_REGS_LCD_H
-#define __ASM_ARCH_REGS_LCD_H
-
-#include <mach/bitfield.h>
-
-/*
- * LCD Controller Registers and Bits Definitions
- */
-#define LCCR0          (0x000) /* LCD Controller Control Register 0 */
-#define LCCR1          (0x004) /* LCD Controller Control Register 1 */
-#define LCCR2          (0x008) /* LCD Controller Control Register 2 */
-#define LCCR3          (0x00C) /* LCD Controller Control Register 3 */
-#define LCCR4          (0x010) /* LCD Controller Control Register 4 */
-#define LCCR5          (0x014) /* LCD Controller Control Register 5 */
-#define LCSR           (0x038) /* LCD Controller Status Register 0 */
-#define LCSR1          (0x034) /* LCD Controller Status Register 1 */
-#define LIIDR          (0x03C) /* LCD Controller Interrupt ID Register */
-#define TMEDRGBR       (0x040) /* TMED RGB Seed Register */
-#define TMEDCR         (0x044) /* TMED Control Register */
-
-#define FBR0           (0x020) /* DMA Channel 0 Frame Branch Register */
-#define FBR1           (0x024) /* DMA Channel 1 Frame Branch Register */
-#define FBR2           (0x028) /* DMA Channel 2 Frame Branch Register */
-#define FBR3           (0x02C) /* DMA Channel 2 Frame Branch Register */
-#define FBR4           (0x030) /* DMA Channel 2 Frame Branch Register */
-#define FBR5           (0x110) /* DMA Channel 2 Frame Branch Register */
-#define FBR6           (0x114) /* DMA Channel 2 Frame Branch Register */
-
-#define OVL1C1         (0x050) /* Overlay 1 Control Register 1 */
-#define OVL1C2         (0x060) /* Overlay 1 Control Register 2 */
-#define OVL2C1         (0x070) /* Overlay 2 Control Register 1 */
-#define OVL2C2         (0x080) /* Overlay 2 Control Register 2 */
-
-#define CMDCR          (0x100) /* Command Control Register */
-#define PRSR           (0x104) /* Panel Read Status Register */
-
-#define LCCR3_BPP(x)   ((((x) & 0x7) << 24) | (((x) & 0x8) ? (1 << 29) : 0))
-
-#define LCCR3_PDFOR_0  (0 << 30)
-#define LCCR3_PDFOR_1  (1 << 30)
-#define LCCR3_PDFOR_2  (2 << 30)
-#define LCCR3_PDFOR_3  (3 << 30)
-
-#define LCCR4_PAL_FOR_0        (0 << 15)
-#define LCCR4_PAL_FOR_1        (1 << 15)
-#define LCCR4_PAL_FOR_2        (2 << 15)
-#define LCCR4_PAL_FOR_3        (3 << 15)
-#define LCCR4_PAL_FOR_MASK     (3 << 15)
-
-#define FDADR0         (0x200) /* DMA Channel 0 Frame Descriptor Address Register */
-#define FDADR1         (0x210) /* DMA Channel 1 Frame Descriptor Address Register */
-#define FDADR2         (0x220) /* DMA Channel 2 Frame Descriptor Address Register */
-#define FDADR3         (0x230) /* DMA Channel 3 Frame Descriptor Address Register */
-#define FDADR4         (0x240) /* DMA Channel 4 Frame Descriptor Address Register */
-#define FDADR5         (0x250) /* DMA Channel 5 Frame Descriptor Address Register */
-#define FDADR6         (0x260) /* DMA Channel 6 Frame Descriptor Address Register */
-
-#define LCCR0_ENB      (1 << 0)        /* LCD Controller enable */
-#define LCCR0_CMS      (1 << 1)        /* Color/Monochrome Display Select */
-#define LCCR0_Color    (LCCR0_CMS*0)   /*  Color display */
-#define LCCR0_Mono     (LCCR0_CMS*1)   /*  Monochrome display */
-#define LCCR0_SDS      (1 << 2)        /* Single/Dual Panel Display Select */
-#define LCCR0_Sngl     (LCCR0_SDS*0)   /*  Single panel display */
-#define LCCR0_Dual     (LCCR0_SDS*1)   /*  Dual panel display */
-
-#define LCCR0_LDM      (1 << 3)        /* LCD Disable Done Mask */
-#define LCCR0_SFM      (1 << 4)        /* Start of frame mask */
-#define LCCR0_IUM      (1 << 5)        /* Input FIFO underrun mask */
-#define LCCR0_EFM      (1 << 6)        /* End of Frame mask */
-#define LCCR0_PAS      (1 << 7)        /* Passive/Active display Select */
-#define LCCR0_Pas      (LCCR0_PAS*0)   /*  Passive display (STN) */
-#define LCCR0_Act      (LCCR0_PAS*1)   /*  Active display (TFT) */
-#define LCCR0_DPD      (1 << 9)        /* Double Pixel Data (monochrome) */
-#define LCCR0_4PixMono (LCCR0_DPD*0)   /*  4-Pixel/clock Monochrome display */
-#define LCCR0_8PixMono (LCCR0_DPD*1)   /*  8-Pixel/clock Monochrome display */
-#define LCCR0_DIS      (1 << 10)       /* LCD Disable */
-#define LCCR0_QDM      (1 << 11)       /* LCD Quick Disable mask */
-#define LCCR0_PDD      (0xff << 12)    /* Palette DMA request delay */
-#define LCCR0_PDD_S    12
-#define LCCR0_BM       (1 << 20)       /* Branch mask */
-#define LCCR0_OUM      (1 << 21)       /* Output FIFO underrun mask */
-#define LCCR0_LCDT     (1 << 22)       /* LCD panel type */
-#define LCCR0_RDSTM    (1 << 23)       /* Read status interrupt mask */
-#define LCCR0_CMDIM    (1 << 24)       /* Command interrupt mask */
-#define LCCR0_OUC      (1 << 25)       /* Overlay Underlay control bit */
-#define LCCR0_LDDALT   (1 << 26)       /* LDD alternate mapping control */
-
-#define LCCR1_PPL      Fld (10, 0)     /* Pixels Per Line - 1 */
-#define LCCR1_DisWdth(Pixel)   (((Pixel) - 1) << FShft (LCCR1_PPL))
-
-#define LCCR1_HSW      Fld (6, 10)     /* Horizontal Synchronization */
-#define LCCR1_HorSnchWdth(Tpix)        (((Tpix) - 1) << FShft (LCCR1_HSW))
-
-#define LCCR1_ELW      Fld (8, 16)     /* End-of-Line pixel clock Wait - 1 */
-#define LCCR1_EndLnDel(Tpix)   (((Tpix) - 1) << FShft (LCCR1_ELW))
-
-#define LCCR1_BLW      Fld (8, 24)     /* Beginning-of-Line pixel clock */
-#define LCCR1_BegLnDel(Tpix)   (((Tpix) - 1) << FShft (LCCR1_BLW))
-
-#define LCCR2_LPP      Fld (10, 0)     /* Line Per Panel - 1 */
-#define LCCR2_DisHght(Line)    (((Line) - 1) << FShft (LCCR2_LPP))
-
-#define LCCR2_VSW      Fld (6, 10)     /* Vertical Synchronization pulse - 1 */
-#define LCCR2_VrtSnchWdth(Tln) (((Tln) - 1) << FShft (LCCR2_VSW))
-
-#define LCCR2_EFW      Fld (8, 16)     /* End-of-Frame line clock Wait */
-#define LCCR2_EndFrmDel(Tln)   ((Tln) << FShft (LCCR2_EFW))
-
-#define LCCR2_BFW      Fld (8, 24)     /* Beginning-of-Frame line clock */
-#define LCCR2_BegFrmDel(Tln)   ((Tln) << FShft (LCCR2_BFW))
-
-#define LCCR3_API      (0xf << 16)     /* AC Bias pin trasitions per interrupt */
-#define LCCR3_API_S    16
-#define LCCR3_VSP      (1 << 20)       /* vertical sync polarity */
-#define LCCR3_HSP      (1 << 21)       /* horizontal sync polarity */
-#define LCCR3_PCP      (1 << 22)       /* Pixel Clock Polarity (L_PCLK) */
-#define LCCR3_PixRsEdg (LCCR3_PCP*0)   /*  Pixel clock Rising-Edge */
-#define LCCR3_PixFlEdg (LCCR3_PCP*1)   /*  Pixel clock Falling-Edge */
-
-#define LCCR3_OEP      (1 << 23)       /* Output Enable Polarity */
-#define LCCR3_OutEnH   (LCCR3_OEP*0)   /*  Output Enable active High */
-#define LCCR3_OutEnL   (LCCR3_OEP*1)   /*  Output Enable active Low */
-
-#define LCCR3_DPC      (1 << 27)       /* double pixel clock mode */
-#define LCCR3_PCD      Fld (8, 0)      /* Pixel Clock Divisor */
-#define LCCR3_PixClkDiv(Div)   (((Div) << FShft (LCCR3_PCD)))
-
-#define LCCR3_ACB      Fld (8, 8)      /* AC Bias */
-#define LCCR3_Acb(Acb) (((Acb) << FShft (LCCR3_ACB)))
-
-#define LCCR3_HorSnchH (LCCR3_HSP*0)   /*  HSP Active High */
-#define LCCR3_HorSnchL (LCCR3_HSP*1)   /*  HSP Active Low */
-
-#define LCCR3_VrtSnchH (LCCR3_VSP*0)   /*  VSP Active High */
-#define LCCR3_VrtSnchL (LCCR3_VSP*1)   /*  VSP Active Low */
-
-#define LCCR5_IUM(x)   (1 << ((x) + 23)) /* input underrun mask */
-#define LCCR5_BSM(x)   (1 << ((x) + 15)) /* branch mask */
-#define LCCR5_EOFM(x)  (1 << ((x) + 7))  /* end of frame mask */
-#define LCCR5_SOFM(x)  (1 << ((x) + 0))  /* start of frame mask */
-
-#define LCSR_LDD       (1 << 0)        /* LCD Disable Done */
-#define LCSR_SOF       (1 << 1)        /* Start of frame */
-#define LCSR_BER       (1 << 2)        /* Bus error */
-#define LCSR_ABC       (1 << 3)        /* AC Bias count */
-#define LCSR_IUL       (1 << 4)        /* input FIFO underrun Lower panel */
-#define LCSR_IUU       (1 << 5)        /* input FIFO underrun Upper panel */
-#define LCSR_OU                (1 << 6)        /* output FIFO underrun */
-#define LCSR_QD                (1 << 7)        /* quick disable */
-#define LCSR_EOF       (1 << 8)        /* end of frame */
-#define LCSR_BS                (1 << 9)        /* branch status */
-#define LCSR_SINT      (1 << 10)       /* subsequent interrupt */
-#define LCSR_RD_ST     (1 << 11)       /* read status */
-#define LCSR_CMD_INT   (1 << 12)       /* command interrupt */
-
-#define LCSR1_IU(x)    (1 << ((x) + 23)) /* Input FIFO underrun */
-#define LCSR1_BS(x)    (1 << ((x) + 15)) /* Branch Status */
-#define LCSR1_EOF(x)   (1 << ((x) + 7))  /* End of Frame Status */
-#define LCSR1_SOF(x)   (1 << ((x) - 1))  /* Start of Frame Status */
-
-#define LDCMD_PAL      (1 << 26)       /* instructs DMA to load palette buffer */
-
-/* overlay control registers */
-#define OVLxC1_PPL(x)  ((((x) - 1) & 0x3ff) << 0)      /* Pixels Per Line */
-#define OVLxC1_LPO(x)  ((((x) - 1) & 0x3ff) << 10)     /* Number of Lines */
-#define OVLxC1_BPP(x)  (((x) & 0xf) << 20)     /* Bits Per Pixel */
-#define OVLxC1_OEN     (1 << 31)               /* Enable bit for Overlay */
-#define OVLxC2_XPOS(x) (((x) & 0x3ff) << 0)    /* Horizontal Position */
-#define OVLxC2_YPOS(x) (((x) & 0x3ff) << 10)   /* Vertical Position */
-#define OVL2C2_PFOR(x) (((x) & 0x7) << 20)     /* Pixel Format */
-
-/* smartpanel related */
-#define PRSR_DATA(x)   ((x) & 0xff)    /* Panel Data */
-#define PRSR_A0                (1 << 8)        /* Read Data Source */
-#define PRSR_ST_OK     (1 << 9)        /* Status OK */
-#define PRSR_CON_NT    (1 << 10)       /* Continue to Next Command */
-
-#define SMART_CMD_A0                    (0x1 << 8)
-#define SMART_CMD_READ_STATUS_REG       (0x0 << 9)
-#define SMART_CMD_READ_FRAME_BUFFER    ((0x0 << 9) | SMART_CMD_A0)
-#define SMART_CMD_WRITE_COMMAND                 (0x1 << 9)
-#define SMART_CMD_WRITE_DATA           ((0x1 << 9) | SMART_CMD_A0)
-#define SMART_CMD_WRITE_FRAME          ((0x2 << 9) | SMART_CMD_A0)
-#define SMART_CMD_WAIT_FOR_VSYNC        (0x3 << 9)
-#define SMART_CMD_NOOP                  (0x4 << 9)
-#define SMART_CMD_INTERRUPT             (0x5 << 9)
-
-#define SMART_CMD(x)   (SMART_CMD_WRITE_COMMAND | ((x) & 0xff))
-#define SMART_DAT(x)   (SMART_CMD_WRITE_DATA | ((x) & 0xff))
-
-/* SMART_DELAY() is introduced for software controlled delay primitive which
- * can be inserted between command sequences, unused command 0x6 is used here
- * and delay ranges from 0ms ~ 255ms
- */
-#define SMART_CMD_DELAY                (0x6 << 9)
-#define SMART_DELAY(ms)                (SMART_CMD_DELAY | ((ms) & 0xff))
-#endif /* __ASM_ARCH_REGS_LCD_H */
diff --git a/arch/arm/mach-pxa/include/mach/regs-ost.h b/arch/arm/mach-pxa/include/mach/regs-ost.h
deleted file mode 100644 (file)
index deb564e..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_MACH_REGS_OST_H
-#define __ASM_MACH_REGS_OST_H
-
-#include <mach/hardware.h>
-
-/*
- * OS Timer & Match Registers
- */
-
-#define OSMR0          io_p2v(0x40A00000)  /* */
-#define OSMR1          io_p2v(0x40A00004)  /* */
-#define OSMR2          io_p2v(0x40A00008)  /* */
-#define OSMR3          io_p2v(0x40A0000C)  /* */
-#define OSMR4          io_p2v(0x40A00080)  /* */
-#define OSCR           io_p2v(0x40A00010)  /* OS Timer Counter Register */
-#define OSCR4          io_p2v(0x40A00040)  /* OS Timer Counter Register */
-#define OMCR4          io_p2v(0x40A000C0)  /* */
-#define OSSR           io_p2v(0x40A00014)  /* OS Timer Status Register */
-#define OWER           io_p2v(0x40A00018)  /* OS Timer Watchdog Enable Register */
-#define OIER           io_p2v(0x40A0001C)  /* OS Timer Interrupt Enable Register */
-
-#define OSSR_M3                (1 << 3)        /* Match status channel 3 */
-#define OSSR_M2                (1 << 2)        /* Match status channel 2 */
-#define OSSR_M1                (1 << 1)        /* Match status channel 1 */
-#define OSSR_M0                (1 << 0)        /* Match status channel 0 */
-
-#define OWER_WME       (1 << 0)        /* Watchdog Match Enable */
-
-#define OIER_E3                (1 << 3)        /* Interrupt enable channel 3 */
-#define OIER_E2                (1 << 2)        /* Interrupt enable channel 2 */
-#define OIER_E1                (1 << 1)        /* Interrupt enable channel 1 */
-#define OIER_E0                (1 << 0)        /* Interrupt enable channel 0 */
-
-#endif /* __ASM_MACH_REGS_OST_H */
diff --git a/arch/arm/mach-pxa/include/mach/regs-uart.h b/arch/arm/mach-pxa/include/mach/regs-uart.h
deleted file mode 100644 (file)
index 9a168f8..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_ARCH_REGS_UART_H
-#define __ASM_ARCH_REGS_UART_H
-
-/*
- * UARTs
- */
-
-/* Full Function UART (FFUART) */
-#define FFUART         FFRBR
-#define FFRBR          __REG(0x40100000)  /* Receive Buffer Register (read only) */
-#define FFTHR          __REG(0x40100000)  /* Transmit Holding Register (write only) */
-#define FFIER          __REG(0x40100004)  /* Interrupt Enable Register (read/write) */
-#define FFIIR          __REG(0x40100008)  /* Interrupt ID Register (read only) */
-#define FFFCR          __REG(0x40100008)  /* FIFO Control Register (write only) */
-#define FFLCR          __REG(0x4010000C)  /* Line Control Register (read/write) */
-#define FFMCR          __REG(0x40100010)  /* Modem Control Register (read/write) */
-#define FFLSR          __REG(0x40100014)  /* Line Status Register (read only) */
-#define FFMSR          __REG(0x40100018)  /* Modem Status Register (read only) */
-#define FFSPR          __REG(0x4010001C)  /* Scratch Pad Register (read/write) */
-#define FFISR          __REG(0x40100020)  /* Infrared Selection Register (read/write) */
-#define FFDLL          __REG(0x40100000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
-#define FFDLH          __REG(0x40100004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
-
-/* Bluetooth UART (BTUART) */
-#define BTUART         BTRBR
-#define BTRBR          __REG(0x40200000)  /* Receive Buffer Register (read only) */
-#define BTTHR          __REG(0x40200000)  /* Transmit Holding Register (write only) */
-#define BTIER          __REG(0x40200004)  /* Interrupt Enable Register (read/write) */
-#define BTIIR          __REG(0x40200008)  /* Interrupt ID Register (read only) */
-#define BTFCR          __REG(0x40200008)  /* FIFO Control Register (write only) */
-#define BTLCR          __REG(0x4020000C)  /* Line Control Register (read/write) */
-#define BTMCR          __REG(0x40200010)  /* Modem Control Register (read/write) */
-#define BTLSR          __REG(0x40200014)  /* Line Status Register (read only) */
-#define BTMSR          __REG(0x40200018)  /* Modem Status Register (read only) */
-#define BTSPR          __REG(0x4020001C)  /* Scratch Pad Register (read/write) */
-#define BTISR          __REG(0x40200020)  /* Infrared Selection Register (read/write) */
-#define BTDLL          __REG(0x40200000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
-#define BTDLH          __REG(0x40200004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
-
-/* Standard UART (STUART) */
-#define STUART         STRBR
-#define STRBR          __REG(0x40700000)  /* Receive Buffer Register (read only) */
-#define STTHR          __REG(0x40700000)  /* Transmit Holding Register (write only) */
-#define STIER          __REG(0x40700004)  /* Interrupt Enable Register (read/write) */
-#define STIIR          __REG(0x40700008)  /* Interrupt ID Register (read only) */
-#define STFCR          __REG(0x40700008)  /* FIFO Control Register (write only) */
-#define STLCR          __REG(0x4070000C)  /* Line Control Register (read/write) */
-#define STMCR          __REG(0x40700010)  /* Modem Control Register (read/write) */
-#define STLSR          __REG(0x40700014)  /* Line Status Register (read only) */
-#define STMSR          __REG(0x40700018)  /* Reserved */
-#define STSPR          __REG(0x4070001C)  /* Scratch Pad Register (read/write) */
-#define STISR          __REG(0x40700020)  /* Infrared Selection Register (read/write) */
-#define STDLL          __REG(0x40700000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
-#define STDLH          __REG(0x40700004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
-
-/* Hardware UART (HWUART) */
-#define HWUART         HWRBR
-#define HWRBR          __REG(0x41600000)  /* Receive Buffer Register (read only) */
-#define HWTHR          __REG(0x41600000)  /* Transmit Holding Register (write only) */
-#define HWIER          __REG(0x41600004)  /* Interrupt Enable Register (read/write) */
-#define HWIIR          __REG(0x41600008)  /* Interrupt ID Register (read only) */
-#define HWFCR          __REG(0x41600008)  /* FIFO Control Register (write only) */
-#define HWLCR          __REG(0x4160000C)  /* Line Control Register (read/write) */
-#define HWMCR          __REG(0x41600010)  /* Modem Control Register (read/write) */
-#define HWLSR          __REG(0x41600014)  /* Line Status Register (read only) */
-#define HWMSR          __REG(0x41600018)  /* Modem Status Register (read only) */
-#define HWSPR          __REG(0x4160001C)  /* Scratch Pad Register (read/write) */
-#define HWISR          __REG(0x41600020)  /* Infrared Selection Register (read/write) */
-#define HWFOR          __REG(0x41600024)  /* Receive FIFO Occupancy Register (read only) */
-#define HWABR          __REG(0x41600028)  /* Auto-Baud Control Register (read/write) */
-#define HWACR          __REG(0x4160002C)  /* Auto-Baud Count Register (read only) */
-#define HWDLL          __REG(0x41600000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
-#define HWDLH          __REG(0x41600004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
-
-#define IER_DMAE       (1 << 7)        /* DMA Requests Enable */
-#define IER_UUE                (1 << 6)        /* UART Unit Enable */
-#define IER_NRZE       (1 << 5)        /* NRZ coding Enable */
-#define IER_RTIOE      (1 << 4)        /* Receiver Time Out Interrupt Enable */
-#define IER_MIE                (1 << 3)        /* Modem Interrupt Enable */
-#define IER_RLSE       (1 << 2)        /* Receiver Line Status Interrupt Enable */
-#define IER_TIE                (1 << 1)        /* Transmit Data request Interrupt Enable */
-#define IER_RAVIE      (1 << 0)        /* Receiver Data Available Interrupt Enable */
-
-#define IIR_FIFOES1    (1 << 7)        /* FIFO Mode Enable Status */
-#define IIR_FIFOES0    (1 << 6)        /* FIFO Mode Enable Status */
-#define IIR_TOD                (1 << 3)        /* Time Out Detected */
-#define IIR_IID2       (1 << 2)        /* Interrupt Source Encoded */
-#define IIR_IID1       (1 << 1)        /* Interrupt Source Encoded */
-#define IIR_IP         (1 << 0)        /* Interrupt Pending (active low) */
-
-#define FCR_ITL2       (1 << 7)        /* Interrupt Trigger Level */
-#define FCR_ITL1       (1 << 6)        /* Interrupt Trigger Level */
-#define FCR_RESETTF    (1 << 2)        /* Reset Transmitter FIFO */
-#define FCR_RESETRF    (1 << 1)        /* Reset Receiver FIFO */
-#define FCR_TRFIFOE    (1 << 0)        /* Transmit and Receive FIFO Enable */
-#define FCR_ITL_1      (0)
-#define FCR_ITL_8      (FCR_ITL1)
-#define FCR_ITL_16     (FCR_ITL2)
-#define FCR_ITL_32     (FCR_ITL2|FCR_ITL1)
-
-#define LCR_DLAB       (1 << 7)        /* Divisor Latch Access Bit */
-#define LCR_SB         (1 << 6)        /* Set Break */
-#define LCR_STKYP      (1 << 5)        /* Sticky Parity */
-#define LCR_EPS                (1 << 4)        /* Even Parity Select */
-#define LCR_PEN                (1 << 3)        /* Parity Enable */
-#define LCR_STB                (1 << 2)        /* Stop Bit */
-#define LCR_WLS1       (1 << 1)        /* Word Length Select */
-#define LCR_WLS0       (1 << 0)        /* Word Length Select */
-
-#define LSR_FIFOE      (1 << 7)        /* FIFO Error Status */
-#define LSR_TEMT       (1 << 6)        /* Transmitter Empty */
-#define LSR_TDRQ       (1 << 5)        /* Transmit Data Request */
-#define LSR_BI         (1 << 4)        /* Break Interrupt */
-#define LSR_FE         (1 << 3)        /* Framing Error */
-#define LSR_PE         (1 << 2)        /* Parity Error */
-#define LSR_OE         (1 << 1)        /* Overrun Error */
-#define LSR_DR         (1 << 0)        /* Data Ready */
-
-#define MCR_LOOP       (1 << 4)
-#define MCR_OUT2       (1 << 3)        /* force MSR_DCD in loopback mode */
-#define MCR_OUT1       (1 << 2)        /* force MSR_RI in loopback mode */
-#define MCR_RTS                (1 << 1)        /* Request to Send */
-#define MCR_DTR                (1 << 0)        /* Data Terminal Ready */
-
-#define MSR_DCD                (1 << 7)        /* Data Carrier Detect */
-#define MSR_RI         (1 << 6)        /* Ring Indicator */
-#define MSR_DSR                (1 << 5)        /* Data Set Ready */
-#define MSR_CTS                (1 << 4)        /* Clear To Send */
-#define MSR_DDCD       (1 << 3)        /* Delta Data Carrier Detect */
-#define MSR_TERI       (1 << 2)        /* Trailing Edge Ring Indicator */
-#define MSR_DDSR       (1 << 1)        /* Delta Data Set Ready */
-#define MSR_DCTS       (1 << 0)        /* Delta Clear To Send */
-
-/*
- * IrSR (Infrared Selection Register)
- */
-#define STISR_RXPL      (1 << 4)        /* Receive Data Polarity */
-#define STISR_TXPL      (1 << 3)        /* Transmit Data Polarity */
-#define STISR_XMODE     (1 << 2)        /* Transmit Pulse Width Select */
-#define STISR_RCVEIR    (1 << 1)        /* Receiver SIR Enable */
-#define STISR_XMITIR    (1 << 0)        /* Transmitter SIR Enable */
-
-#endif /* __ASM_ARCH_REGS_UART_H */
diff --git a/arch/arm/mach-pxa/include/mach/reset.h b/arch/arm/mach-pxa/include/mach/reset.h
deleted file mode 100644 (file)
index e1c4d10..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ASM_ARCH_RESET_H
-#define __ASM_ARCH_RESET_H
-
-#define RESET_STATUS_HARDWARE  (1 << 0)        /* Hardware Reset */
-#define RESET_STATUS_WATCHDOG  (1 << 1)        /* Watchdog Reset */
-#define RESET_STATUS_LOWPOWER  (1 << 2)        /* Low Power/Sleep Exit */
-#define RESET_STATUS_GPIO      (1 << 3)        /* GPIO Reset */
-#define RESET_STATUS_ALL       (0xf)
-
-extern unsigned int reset_status;
-extern void clear_reset_status(unsigned int mask);
-
-/**
- * init_gpio_reset() - register GPIO as reset generator
- * @gpio: gpio nr
- * @output: set gpio as output instead of input during normal work
- * @level: output level
- */
-extern int init_gpio_reset(int gpio, int output, int level);
-
-#endif /* __ASM_ARCH_RESET_H */
diff --git a/arch/arm/mach-pxa/include/mach/smemc.h b/arch/arm/mach-pxa/include/mach/smemc.h
deleted file mode 100644 (file)
index 9b2453a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Static memory controller register definitions for PXA CPUs
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- */
-
-#ifndef __SMEMC_REGS_H
-#define __SMEMC_REGS_H
-
-#define PXA2XX_SMEMC_BASE      0x48000000
-#define PXA3XX_SMEMC_BASE      0x4a000000
-#define SMEMC_VIRT             IOMEM(0xf6000000)
-
-#define MDCNFG         (SMEMC_VIRT + 0x00)  /* SDRAM Configuration Register 0 */
-#define MDREFR         (SMEMC_VIRT + 0x04)  /* SDRAM Refresh Control Register */
-#define MSC0           (SMEMC_VIRT + 0x08)  /* Static Memory Control Register 0 */
-#define MSC1           (SMEMC_VIRT + 0x0C)  /* Static Memory Control Register 1 */
-#define MSC2           (SMEMC_VIRT + 0x10)  /* Static Memory Control Register 2 */
-#define MECR           (SMEMC_VIRT + 0x14)  /* Expansion Memory (PCMCIA/Compact Flash) Bus Configuration */
-#define SXLCR          (SMEMC_VIRT + 0x18)  /* LCR value to be written to SDRAM-Timing Synchronous Flash */
-#define SXCNFG         (SMEMC_VIRT + 0x1C)  /* Synchronous Static Memory Control Register */
-#define SXMRS          (SMEMC_VIRT + 0x24)  /* MRS value to be written to Synchronous Flash or SMROM */
-#define MCMEM0         (SMEMC_VIRT + 0x28)  /* Card interface Common Memory Space Socket 0 Timing */
-#define MCMEM1         (SMEMC_VIRT + 0x2C)  /* Card interface Common Memory Space Socket 1 Timing */
-#define MCATT0         (SMEMC_VIRT + 0x30)  /* Card interface Attribute Space Socket 0 Timing Configuration */
-#define MCATT1         (SMEMC_VIRT + 0x34)  /* Card interface Attribute Space Socket 1 Timing Configuration */
-#define MCIO0          (SMEMC_VIRT + 0x38)  /* Card interface I/O Space Socket 0 Timing Configuration */
-#define MCIO1          (SMEMC_VIRT + 0x3C)  /* Card interface I/O Space Socket 1 Timing Configuration */
-#define MDMRS          (SMEMC_VIRT + 0x40)  /* MRS value to be written to SDRAM */
-#define BOOT_DEF       (SMEMC_VIRT + 0x44)  /* Read-Only Boot-Time Register. Contains BOOT_SEL and PKG_SEL */
-#define MEMCLKCFG      (SMEMC_VIRT + 0x68)  /* Clock Configuration */
-#define CSADRCFG0      (SMEMC_VIRT + 0x80)  /* Address Configuration Register for CS0 */
-#define CSADRCFG1      (SMEMC_VIRT + 0x84)  /* Address Configuration Register for CS1 */
-#define CSADRCFG2      (SMEMC_VIRT + 0x88)  /* Address Configuration Register for CS2 */
-#define CSADRCFG3      (SMEMC_VIRT + 0x8C)  /* Address Configuration Register for CS3 */
-#define CSMSADRCFG     (SMEMC_VIRT + 0xA0)  /* Chip Select Configuration Register */
-
-/*
- * More handy macros for PCMCIA
- *
- * Arg is socket number
- */
-#define MCMEM(s)       (SMEMC_VIRT + 0x28 + ((s)<<2))  /* Card interface Common Memory Space Socket s Timing */
-#define MCATT(s)       (SMEMC_VIRT + 0x30 + ((s)<<2))  /* Card interface Attribute Space Socket s Timing Configuration */
-#define MCIO(s)                (SMEMC_VIRT + 0x38 + ((s)<<2))  /* Card interface I/O Space Socket s Timing Configuration */
-
-/* MECR register defines */
-#define MECR_NOS       (1 << 0)        /* Number Of Sockets: 0 -> 1 sock, 1 -> 2 sock */
-#define MECR_CIT       (1 << 1)        /* Card Is There: 0 -> no card, 1 -> card inserted */
-
-#define MDCNFG_DE0     (1 << 0)        /* SDRAM Bank 0 Enable */
-#define MDCNFG_DE1     (1 << 1)        /* SDRAM Bank 1 Enable */
-#define MDCNFG_DE2     (1 << 16)       /* SDRAM Bank 2 Enable */
-#define MDCNFG_DE3     (1 << 17)       /* SDRAM Bank 3 Enable */
-
-#define MDREFR_K0DB4   (1 << 29)       /* SDCLK0 Divide by 4 Control/Status */
-#define MDREFR_K2FREE  (1 << 25)       /* SDRAM Free-Running Control */
-#define MDREFR_K1FREE  (1 << 24)       /* SDRAM Free-Running Control */
-#define MDREFR_K0FREE  (1 << 23)       /* SDRAM Free-Running Control */
-#define MDREFR_SLFRSH  (1 << 22)       /* SDRAM Self-Refresh Control/Status */
-#define MDREFR_APD     (1 << 20)       /* SDRAM/SSRAM Auto-Power-Down Enable */
-#define MDREFR_K2DB2   (1 << 19)       /* SDCLK2 Divide by 2 Control/Status */
-#define MDREFR_K2RUN   (1 << 18)       /* SDCLK2 Run Control/Status */
-#define MDREFR_K1DB2   (1 << 17)       /* SDCLK1 Divide by 2 Control/Status */
-#define MDREFR_K1RUN   (1 << 16)       /* SDCLK1 Run Control/Status */
-#define MDREFR_E1PIN   (1 << 15)       /* SDCKE1 Level Control/Status */
-#define MDREFR_K0DB2   (1 << 14)       /* SDCLK0 Divide by 2 Control/Status */
-#define MDREFR_K0RUN   (1 << 13)       /* SDCLK0 Run Control/Status */
-#define MDREFR_E0PIN   (1 << 12)       /* SDCKE0 Level Control/Status */
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/spitz.h b/arch/arm/mach-pxa/include/mach/spitz.h
deleted file mode 100644 (file)
index 04828d8..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Hardware specific definitions for SL-Cx000 series of PDAs
- *
- * Copyright (c) 2005 Alexander Wykes
- * Copyright (c) 2005 Richard Purdie
- *
- * Based on Sharp's 2.4 kernel patches
- */
-#ifndef __ASM_ARCH_SPITZ_H
-#define __ASM_ARCH_SPITZ_H  1
-#endif
-
-#include "irqs.h" /* PXA_NR_BUILTIN_GPIO, PXA_GPIO_TO_IRQ */
-#include <linux/fb.h>
-
-/* Spitz/Akita GPIOs */
-
-#define SPITZ_GPIO_KEY_INT         (0) /* Key Interrupt */
-#define SPITZ_GPIO_RESET           (1)
-#define SPITZ_GPIO_nSD_DETECT      (9)
-#define SPITZ_GPIO_TP_INT          (11) /* Touch Panel interrupt */
-#define SPITZ_GPIO_AK_INT          (13) /* Remote Control */
-#define SPITZ_GPIO_ADS7846_CS      (14)
-#define SPITZ_GPIO_SYNC            (16)
-#define SPITZ_GPIO_MAX1111_CS      (20)
-#define SPITZ_GPIO_FATAL_BAT       (21)
-#define SPITZ_GPIO_HSYNC           (22)
-#define SPITZ_GPIO_nSD_CLK         (32)
-#define SPITZ_GPIO_USB_DEVICE      (35)
-#define SPITZ_GPIO_USB_HOST        (37)
-#define SPITZ_GPIO_USB_CONNECT     (41)
-#define SPITZ_GPIO_LCDCON_CS       (53)
-#define SPITZ_GPIO_nPCE            (54)
-#define SPITZ_GPIO_nSD_WP          (81)
-#define SPITZ_GPIO_ON_RESET        (89)
-#define SPITZ_GPIO_BAT_COVER       (90)
-#define SPITZ_GPIO_CF_CD           (94)
-#define SPITZ_GPIO_ON_KEY          (95)
-#define SPITZ_GPIO_SWA             (97)
-#define SPITZ_GPIO_SWB             (96)
-#define SPITZ_GPIO_CHRG_FULL       (101)
-#define SPITZ_GPIO_CO              (101)
-#define SPITZ_GPIO_CF_IRQ          (105)
-#define SPITZ_GPIO_AC_IN           (115)
-#define SPITZ_GPIO_HP_IN           (116)
-
-/* Spitz Only GPIOs */
-
-#define SPITZ_GPIO_CF2_IRQ         (106) /* CF slot1 Ready */
-#define SPITZ_GPIO_CF2_CD          (93)
-
-
-/* Spitz/Akita Keyboard Definitions */
-
-#define SPITZ_KEY_STROBE_NUM         (11)
-#define SPITZ_KEY_SENSE_NUM          (7)
-#define SPITZ_GPIO_G0_STROBE_BIT     0x0f800000
-#define SPITZ_GPIO_G1_STROBE_BIT     0x00100000
-#define SPITZ_GPIO_G2_STROBE_BIT     0x01000000
-#define SPITZ_GPIO_G3_STROBE_BIT     0x00041880
-#define SPITZ_GPIO_G0_SENSE_BIT      0x00021000
-#define SPITZ_GPIO_G1_SENSE_BIT      0x000000d4
-#define SPITZ_GPIO_G2_SENSE_BIT      0x08000000
-#define SPITZ_GPIO_G3_SENSE_BIT      0x00000000
-
-#define SPITZ_GPIO_KEY_STROBE0       88
-#define SPITZ_GPIO_KEY_STROBE1       23
-#define SPITZ_GPIO_KEY_STROBE2       24
-#define SPITZ_GPIO_KEY_STROBE3       25
-#define SPITZ_GPIO_KEY_STROBE4       26
-#define SPITZ_GPIO_KEY_STROBE5       27
-#define SPITZ_GPIO_KEY_STROBE6       52
-#define SPITZ_GPIO_KEY_STROBE7       103
-#define SPITZ_GPIO_KEY_STROBE8       107
-#define SPITZ_GPIO_KEY_STROBE9       108
-#define SPITZ_GPIO_KEY_STROBE10      114
-
-#define SPITZ_GPIO_KEY_SENSE0        12
-#define SPITZ_GPIO_KEY_SENSE1        17
-#define SPITZ_GPIO_KEY_SENSE2        91
-#define SPITZ_GPIO_KEY_SENSE3        34
-#define SPITZ_GPIO_KEY_SENSE4        36
-#define SPITZ_GPIO_KEY_SENSE5        38
-#define SPITZ_GPIO_KEY_SENSE6        39
-
-
-/* Spitz Scoop Device (No. 1) GPIOs */
-/* Suspend States in comments */
-#define SPITZ_SCP_LED_GREEN     SCOOP_GPCR_PA11  /* Keep */
-#define SPITZ_SCP_JK_B          SCOOP_GPCR_PA12  /* Keep */
-#define SPITZ_SCP_CHRG_ON       SCOOP_GPCR_PA13  /* Keep */
-#define SPITZ_SCP_MUTE_L        SCOOP_GPCR_PA14  /* Low */
-#define SPITZ_SCP_MUTE_R        SCOOP_GPCR_PA15  /* Low */
-#define SPITZ_SCP_CF_POWER      SCOOP_GPCR_PA16  /* Keep */
-#define SPITZ_SCP_LED_ORANGE    SCOOP_GPCR_PA17  /* Keep */
-#define SPITZ_SCP_JK_A          SCOOP_GPCR_PA18  /* Low */
-#define SPITZ_SCP_ADC_TEMP_ON   SCOOP_GPCR_PA19  /* Low */
-
-#define SPITZ_SCP_IO_DIR      (SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \
-                               SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | \
-                               SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
-#define SPITZ_SCP_IO_OUT      (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R)
-#define SPITZ_SCP_SUS_CLR     (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
-#define SPITZ_SCP_SUS_SET     0
-
-#define SPITZ_SCP_GPIO_BASE    (PXA_NR_BUILTIN_GPIO)
-#define SPITZ_GPIO_LED_GREEN   (SPITZ_SCP_GPIO_BASE + 0)
-#define SPITZ_GPIO_JK_B                (SPITZ_SCP_GPIO_BASE + 1)
-#define SPITZ_GPIO_CHRG_ON     (SPITZ_SCP_GPIO_BASE + 2)
-#define SPITZ_GPIO_MUTE_L      (SPITZ_SCP_GPIO_BASE + 3)
-#define SPITZ_GPIO_MUTE_R      (SPITZ_SCP_GPIO_BASE + 4)
-#define SPITZ_GPIO_CF_POWER    (SPITZ_SCP_GPIO_BASE + 5)
-#define SPITZ_GPIO_LED_ORANGE  (SPITZ_SCP_GPIO_BASE + 6)
-#define SPITZ_GPIO_JK_A                (SPITZ_SCP_GPIO_BASE + 7)
-#define SPITZ_GPIO_ADC_TEMP_ON (SPITZ_SCP_GPIO_BASE + 8)
-
-/* Spitz Scoop Device (No. 2) GPIOs */
-/* Suspend States in comments */
-#define SPITZ_SCP2_IR_ON           SCOOP_GPCR_PA11  /* High */
-#define SPITZ_SCP2_AKIN_PULLUP     SCOOP_GPCR_PA12  /* Keep */
-#define SPITZ_SCP2_RESERVED_1      SCOOP_GPCR_PA13  /* High */
-#define SPITZ_SCP2_RESERVED_2      SCOOP_GPCR_PA14  /* Low */
-#define SPITZ_SCP2_RESERVED_3      SCOOP_GPCR_PA15  /* Low */
-#define SPITZ_SCP2_RESERVED_4      SCOOP_GPCR_PA16  /* Low */
-#define SPITZ_SCP2_BACKLIGHT_CONT  SCOOP_GPCR_PA17  /* Low */
-#define SPITZ_SCP2_BACKLIGHT_ON    SCOOP_GPCR_PA18  /* Low */
-#define SPITZ_SCP2_MIC_BIAS        SCOOP_GPCR_PA19  /* Low */
-
-#define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \
-                           SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
-                           SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
-
-#define SPITZ_SCP2_IO_OUT   (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1)
-#define SPITZ_SCP2_SUS_CLR  (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
-                             SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
-#define SPITZ_SCP2_SUS_SET  (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1)
-
-#define SPITZ_SCP2_GPIO_BASE           (PXA_NR_BUILTIN_GPIO + 12)
-#define SPITZ_GPIO_IR_ON               (SPITZ_SCP2_GPIO_BASE + 0)
-#define SPITZ_GPIO_AKIN_PULLUP         (SPITZ_SCP2_GPIO_BASE + 1)
-#define SPITZ_GPIO_RESERVED_1          (SPITZ_SCP2_GPIO_BASE + 2)
-#define SPITZ_GPIO_RESERVED_2          (SPITZ_SCP2_GPIO_BASE + 3)
-#define SPITZ_GPIO_RESERVED_3          (SPITZ_SCP2_GPIO_BASE + 4)
-#define SPITZ_GPIO_RESERVED_4          (SPITZ_SCP2_GPIO_BASE + 5)
-#define SPITZ_GPIO_BACKLIGHT_CONT      (SPITZ_SCP2_GPIO_BASE + 6)
-#define SPITZ_GPIO_BACKLIGHT_ON                (SPITZ_SCP2_GPIO_BASE + 7)
-#define SPITZ_GPIO_MIC_BIAS            (SPITZ_SCP2_GPIO_BASE + 8)
-
-/* Akita IO Expander GPIOs */
-#define AKITA_IOEXP_GPIO_BASE          (PXA_NR_BUILTIN_GPIO + 12)
-#define AKITA_GPIO_RESERVED_0          (AKITA_IOEXP_GPIO_BASE + 0)
-#define AKITA_GPIO_RESERVED_1          (AKITA_IOEXP_GPIO_BASE + 1)
-#define AKITA_GPIO_MIC_BIAS            (AKITA_IOEXP_GPIO_BASE + 2)
-#define AKITA_GPIO_BACKLIGHT_ON                (AKITA_IOEXP_GPIO_BASE + 3)
-#define AKITA_GPIO_BACKLIGHT_CONT      (AKITA_IOEXP_GPIO_BASE + 4)
-#define AKITA_GPIO_AKIN_PULLUP         (AKITA_IOEXP_GPIO_BASE + 5)
-#define AKITA_GPIO_IR_ON               (AKITA_IOEXP_GPIO_BASE + 6)
-#define AKITA_GPIO_RESERVED_7          (AKITA_IOEXP_GPIO_BASE + 7)
-
-/* Spitz IRQ Definitions */
-
-#define SPITZ_IRQ_GPIO_KEY_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_KEY_INT)
-#define SPITZ_IRQ_GPIO_AC_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_AC_IN)
-#define SPITZ_IRQ_GPIO_AK_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_AK_INT)
-#define SPITZ_IRQ_GPIO_HP_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_HP_IN)
-#define SPITZ_IRQ_GPIO_TP_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT)
-#define SPITZ_IRQ_GPIO_SYNC           PXA_GPIO_TO_IRQ(SPITZ_GPIO_SYNC)
-#define SPITZ_IRQ_GPIO_ON_KEY         PXA_GPIO_TO_IRQ(SPITZ_GPIO_ON_KEY)
-#define SPITZ_IRQ_GPIO_SWA            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWA)
-#define SPITZ_IRQ_GPIO_SWB            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWB)
-#define SPITZ_IRQ_GPIO_BAT_COVER      PXA_GPIO_TO_IRQ(SPITZ_GPIO_BAT_COVER)
-#define SPITZ_IRQ_GPIO_FATAL_BAT      PXA_GPIO_TO_IRQ(SPITZ_GPIO_FATAL_BAT)
-#define SPITZ_IRQ_GPIO_CO             PXA_GPIO_TO_IRQ(SPITZ_GPIO_CO)
-#define SPITZ_IRQ_GPIO_CF_IRQ         PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_IRQ)
-#define SPITZ_IRQ_GPIO_CF_CD          PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_CD)
-#define SPITZ_IRQ_GPIO_CF2_IRQ        PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF2_IRQ)
-#define SPITZ_IRQ_GPIO_nSD_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_INT)
-#define SPITZ_IRQ_GPIO_nSD_DETECT     PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_DETECT)
-
-/*
- * Shared data structures
- */
-extern struct platform_device spitzssp_device;
-extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
diff --git a/arch/arm/mach-pxa/include/mach/tosa.h b/arch/arm/mach-pxa/include/mach/tosa.h
deleted file mode 100644 (file)
index 8bfaca3..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Hardware specific definitions for Sharp SL-C6000x series of PDAs
- *
- * Copyright (c) 2005 Dirk Opfer
- *
- * Based on Sharp's 2.4 kernel patches
- */
-#ifndef _ASM_ARCH_TOSA_H_
-#define _ASM_ARCH_TOSA_H_ 1
-
-#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
-
-/*  TOSA Chip selects  */
-#define TOSA_LCDC_PHYS         PXA_CS4_PHYS
-/* Internel Scoop */
-#define TOSA_CF_PHYS           (PXA_CS2_PHYS + 0x00800000)
-/* Jacket Scoop */
-#define TOSA_SCOOP_PHYS        (PXA_CS5_PHYS + 0x00800000)
-
-#define TOSA_NR_IRQS           (IRQ_BOARD_START + TC6393XB_NR_IRQS)
-/*
- * SCOOP2 internal GPIOs
- */
-#define TOSA_SCOOP_GPIO_BASE           PXA_NR_BUILTIN_GPIO
-#define TOSA_SCOOP_PXA_VCORE1          SCOOP_GPCR_PA11
-#define TOSA_GPIO_TC6393XB_REST_IN     (TOSA_SCOOP_GPIO_BASE + 1)
-#define TOSA_GPIO_IR_POWERDWN          (TOSA_SCOOP_GPIO_BASE + 2)
-#define TOSA_GPIO_SD_WP                        (TOSA_SCOOP_GPIO_BASE + 3)
-#define TOSA_GPIO_PWR_ON               (TOSA_SCOOP_GPIO_BASE + 4)
-#define TOSA_SCOOP_AUD_PWR_ON          SCOOP_GPCR_PA16
-#define TOSA_GPIO_BT_RESET             (TOSA_SCOOP_GPIO_BASE + 6)
-#define TOSA_GPIO_BT_PWR_EN            (TOSA_SCOOP_GPIO_BASE + 7)
-#define TOSA_SCOOP_AC_IN_OL            SCOOP_GPCR_PA19
-
-/* GPIO Direction   1 : output mode / 0:input mode */
-#define TOSA_SCOOP_IO_DIR     (TOSA_SCOOP_PXA_VCORE1 | \
-               TOSA_SCOOP_AUD_PWR_ON)
-
-/*
- * SCOOP2 jacket GPIOs
- */
-#define TOSA_SCOOP_JC_GPIO_BASE                (PXA_NR_BUILTIN_GPIO + 12)
-#define TOSA_GPIO_BT_LED               (TOSA_SCOOP_JC_GPIO_BASE + 0)
-#define TOSA_GPIO_NOTE_LED             (TOSA_SCOOP_JC_GPIO_BASE + 1)
-#define TOSA_GPIO_CHRG_ERR_LED         (TOSA_SCOOP_JC_GPIO_BASE + 2)
-#define TOSA_GPIO_USB_PULLUP           (TOSA_SCOOP_JC_GPIO_BASE + 3)
-#define TOSA_GPIO_TC6393XB_SUSPEND     (TOSA_SCOOP_JC_GPIO_BASE + 4)
-#define TOSA_GPIO_TC6393XB_L3V_ON      (TOSA_SCOOP_JC_GPIO_BASE + 5)
-#define TOSA_SCOOP_JC_WLAN_DETECT      SCOOP_GPCR_PA17
-#define TOSA_GPIO_WLAN_LED             (TOSA_SCOOP_JC_GPIO_BASE + 7)
-#define TOSA_SCOOP_JC_CARD_LIMIT_SEL   SCOOP_GPCR_PA19
-
-/* GPIO Direction   1 : output mode / 0:input mode */
-#define TOSA_SCOOP_JC_IO_DIR (TOSA_SCOOP_JC_CARD_LIMIT_SEL)
-
-/*
- * TC6393XB GPIOs
- */
-#define TOSA_TC6393XB_GPIO_BASE                (PXA_NR_BUILTIN_GPIO + 2 * 12)
-
-#define TOSA_GPIO_TG_ON                        (TOSA_TC6393XB_GPIO_BASE + 0)
-#define TOSA_GPIO_L_MUTE               (TOSA_TC6393XB_GPIO_BASE + 1)
-#define TOSA_GPIO_BL_C20MA             (TOSA_TC6393XB_GPIO_BASE + 3)
-#define TOSA_GPIO_CARD_VCC_ON          (TOSA_TC6393XB_GPIO_BASE + 4)
-#define TOSA_GPIO_CHARGE_OFF           (TOSA_TC6393XB_GPIO_BASE + 6)
-#define TOSA_GPIO_CHARGE_OFF_JC                (TOSA_TC6393XB_GPIO_BASE + 7)
-#define TOSA_GPIO_BAT0_V_ON            (TOSA_TC6393XB_GPIO_BASE + 9)
-#define TOSA_GPIO_BAT1_V_ON            (TOSA_TC6393XB_GPIO_BASE + 10)
-#define TOSA_GPIO_BU_CHRG_ON           (TOSA_TC6393XB_GPIO_BASE + 11)
-#define TOSA_GPIO_BAT_SW_ON            (TOSA_TC6393XB_GPIO_BASE + 12)
-#define TOSA_GPIO_BAT0_TH_ON           (TOSA_TC6393XB_GPIO_BASE + 14)
-#define TOSA_GPIO_BAT1_TH_ON           (TOSA_TC6393XB_GPIO_BASE + 15)
-
-/*
- * PXA GPIOs
- */
-#define TOSA_GPIO_POWERON              (0)
-#define TOSA_GPIO_RESET                        (1)
-#define TOSA_GPIO_AC_IN                        (2)
-#define TOSA_GPIO_RECORD_BTN           (3)
-#define TOSA_GPIO_SYNC                 (4)     /* Cradle SYNC Button */
-#define TOSA_GPIO_USB_IN               (5)
-#define TOSA_GPIO_JACKET_DETECT                (7)
-#define TOSA_GPIO_nSD_DETECT           (9)
-#define TOSA_GPIO_nSD_INT              (10)
-#define TOSA_GPIO_TC6393XB_CLK         (11)
-#define TOSA_GPIO_BAT1_CRG             (12)
-#define TOSA_GPIO_CF_CD                        (13)
-#define TOSA_GPIO_BAT0_CRG             (14)
-#define TOSA_GPIO_TC6393XB_INT         (15)
-#define TOSA_GPIO_BAT0_LOW             (17)
-#define TOSA_GPIO_TC6393XB_RDY         (18)
-#define TOSA_GPIO_ON_RESET             (19)
-#define TOSA_GPIO_EAR_IN               (20)
-#define TOSA_GPIO_CF_IRQ               (21)    /* CF slot0 Ready */
-#define TOSA_GPIO_ON_KEY               (22)
-#define TOSA_GPIO_VGA_LINE             (27)
-#define TOSA_GPIO_TP_INT               (32)    /* Touch Panel pen down interrupt */
-#define TOSA_GPIO_JC_CF_IRQ            (36)    /* CF slot1 Ready */
-#define TOSA_GPIO_BAT_LOCKED           (38)    /* Battery locked */
-#define TOSA_GPIO_IRDA_TX              (47)
-#define TOSA_GPIO_TG_SPI_SCLK          (81)
-#define TOSA_GPIO_TG_SPI_CS            (82)
-#define TOSA_GPIO_TG_SPI_MOSI          (83)
-#define TOSA_GPIO_BAT1_LOW             (84)
-
-#define TOSA_GPIO_HP_IN                        GPIO_EAR_IN
-
-#define TOSA_GPIO_MAIN_BAT_LOW         GPIO_BAT0_LOW
-
-#define TOSA_KEY_STROBE_NUM            (11)
-#define TOSA_KEY_SENSE_NUM             (7)
-
-#define TOSA_GPIO_HIGH_STROBE_BIT      (0xfc000000)
-#define TOSA_GPIO_LOW_STROBE_BIT       (0x0000001f)
-#define TOSA_GPIO_ALL_SENSE_BIT                (0x00000fe0)
-#define TOSA_GPIO_ALL_SENSE_RSHIFT     (5)
-#define TOSA_GPIO_STROBE_BIT(a)                GPIO_bit(58+(a))
-#define TOSA_GPIO_SENSE_BIT(a)         GPIO_bit(69+(a))
-#define TOSA_GAFR_HIGH_STROBE_BIT      (0xfff00000)
-#define TOSA_GAFR_LOW_STROBE_BIT       (0x000003ff)
-#define TOSA_GAFR_ALL_SENSE_BIT                (0x00fffc00)
-#define TOSA_GPIO_KEY_SENSE(a)                 (69+(a))
-#define TOSA_GPIO_KEY_STROBE(a)                (58+(a))
-
-/*
- * Interrupts
- */
-#define TOSA_IRQ_GPIO_WAKEUP           PXA_GPIO_TO_IRQ(TOSA_GPIO_WAKEUP)
-#define TOSA_IRQ_GPIO_AC_IN            PXA_GPIO_TO_IRQ(TOSA_GPIO_AC_IN)
-#define TOSA_IRQ_GPIO_RECORD_BTN       PXA_GPIO_TO_IRQ(TOSA_GPIO_RECORD_BTN)
-#define TOSA_IRQ_GPIO_SYNC             PXA_GPIO_TO_IRQ(TOSA_GPIO_SYNC)
-#define TOSA_IRQ_GPIO_USB_IN           PXA_GPIO_TO_IRQ(TOSA_GPIO_USB_IN)
-#define TOSA_IRQ_GPIO_JACKET_DETECT    PXA_GPIO_TO_IRQ(TOSA_GPIO_JACKET_DETECT)
-#define TOSA_IRQ_GPIO_nSD_INT          PXA_GPIO_TO_IRQ(TOSA_GPIO_nSD_INT)
-#define TOSA_IRQ_GPIO_nSD_DETECT       PXA_GPIO_TO_IRQ(TOSA_GPIO_nSD_DETECT)
-#define TOSA_IRQ_GPIO_BAT1_CRG         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT1_CRG)
-#define TOSA_IRQ_GPIO_CF_CD            PXA_GPIO_TO_IRQ(TOSA_GPIO_CF_CD)
-#define TOSA_IRQ_GPIO_BAT0_CRG         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT0_CRG)
-#define TOSA_IRQ_GPIO_TC6393XB_INT     PXA_GPIO_TO_IRQ(TOSA_GPIO_TC6393XB_INT)
-#define TOSA_IRQ_GPIO_BAT0_LOW         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT0_LOW)
-#define TOSA_IRQ_GPIO_EAR_IN           PXA_GPIO_TO_IRQ(TOSA_GPIO_EAR_IN)
-#define TOSA_IRQ_GPIO_CF_IRQ           PXA_GPIO_TO_IRQ(TOSA_GPIO_CF_IRQ)
-#define TOSA_IRQ_GPIO_ON_KEY           PXA_GPIO_TO_IRQ(TOSA_GPIO_ON_KEY)
-#define TOSA_IRQ_GPIO_VGA_LINE         PXA_GPIO_TO_IRQ(TOSA_GPIO_VGA_LINE)
-#define TOSA_IRQ_GPIO_TP_INT           PXA_GPIO_TO_IRQ(TOSA_GPIO_TP_INT)
-#define TOSA_IRQ_GPIO_JC_CF_IRQ        PXA_GPIO_TO_IRQ(TOSA_GPIO_JC_CF_IRQ)
-#define TOSA_IRQ_GPIO_BAT_LOCKED       PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT_LOCKED)
-#define TOSA_IRQ_GPIO_BAT1_LOW         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT1_LOW)
-#define TOSA_IRQ_GPIO_KEY_SENSE(a)     PXA_GPIO_TO_IRQ(69+(a))
-
-#define TOSA_IRQ_GPIO_MAIN_BAT_LOW     PXA_GPIO_TO_IRQ(TOSA_GPIO_MAIN_BAT_LOW)
-
-#define TOSA_KEY_SYNC          KEY_102ND /* ??? */
-
-#ifndef CONFIG_TOSA_USE_EXT_KEYCODES
-#define TOSA_KEY_RECORD                KEY_YEN
-#define TOSA_KEY_ADDRESSBOOK   KEY_KATAKANA
-#define TOSA_KEY_CANCEL                KEY_ESC
-#define TOSA_KEY_CENTER                KEY_HIRAGANA
-#define TOSA_KEY_OK            KEY_HENKAN
-#define TOSA_KEY_CALENDAR      KEY_KATAKANAHIRAGANA
-#define TOSA_KEY_HOMEPAGE      KEY_HANGEUL
-#define TOSA_KEY_LIGHT         KEY_MUHENKAN
-#define TOSA_KEY_MENU          KEY_HANJA
-#define TOSA_KEY_FN            KEY_RIGHTALT
-#define TOSA_KEY_MAIL          KEY_ZENKAKUHANKAKU
-#else
-#define TOSA_KEY_RECORD                KEY_RECORD
-#define TOSA_KEY_ADDRESSBOOK   KEY_ADDRESSBOOK
-#define TOSA_KEY_CANCEL                KEY_CANCEL
-#define TOSA_KEY_CENTER                KEY_SELECT /* ??? */
-#define TOSA_KEY_OK            KEY_OK
-#define TOSA_KEY_CALENDAR      KEY_CALENDAR
-#define TOSA_KEY_HOMEPAGE      KEY_HOMEPAGE
-#define TOSA_KEY_LIGHT         KEY_KBDILLUMTOGGLE
-#define TOSA_KEY_MENU          KEY_MENU
-#define TOSA_KEY_FN            KEY_FN
-#define TOSA_KEY_MAIL          KEY_MAIL
-#endif
-
-#endif /* _ASM_ARCH_TOSA_H_ */
diff --git a/arch/arm/mach-pxa/include/mach/trizeps4.h b/arch/arm/mach-pxa/include/mach/trizeps4.h
deleted file mode 100644 (file)
index 3cddb14..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/************************************************************************
- * Include file for TRIZEPS4 SoM and ConXS eval-board
- * Copyright (c) Jürgen Schindele
- * 2006
- ************************************************************************/
-
-/*
- * Includes/Defines
- */
-#ifndef _TRIPEPS4_H_
-#define _TRIPEPS4_H_
-
-#include "irqs.h" /* PXA_GPIO_TO_IRQ */
-
-/* physical memory regions */
-#define TRIZEPS4_FLASH_PHYS    (PXA_CS0_PHYS)  /* Flash region */
-#define TRIZEPS4_DISK_PHYS     (PXA_CS1_PHYS)  /* Disk On Chip region */
-#define TRIZEPS4_ETH_PHYS      (PXA_CS2_PHYS)  /* Ethernet DM9000 region */
-#define TRIZEPS4_PIC_PHYS      (PXA_CS3_PHYS)  /* Logic chip on ConXS-Board */
-#define TRIZEPS4_SDRAM_BASE    0xa0000000      /* SDRAM region */
-
-                               /* Logic on ConXS-board CSFR register*/
-#define TRIZEPS4_CFSR_PHYS     (PXA_CS3_PHYS)
-                               /* Logic on ConXS-board BOCR register*/
-#define TRIZEPS4_BOCR_PHYS     (PXA_CS3_PHYS+0x02000000)
-                               /* Logic on ConXS-board IRCR register*/
-#define TRIZEPS4_IRCR_PHYS     (PXA_CS3_PHYS+0x02400000)
-                               /* Logic on ConXS-board UPSR register*/
-#define TRIZEPS4_UPSR_PHYS     (PXA_CS3_PHYS+0x02800000)
-                               /* Logic on ConXS-board DICR register*/
-#define TRIZEPS4_DICR_PHYS     (PXA_CS3_PHYS+0x03800000)
-
-/* virtual memory regions */
-#define TRIZEPS4_DISK_VIRT     0xF0000000      /* Disk On Chip region */
-
-#define TRIZEPS4_PIC_VIRT      0xF0100000      /* not used */
-#define TRIZEPS4_CFSR_VIRT     0xF0100000
-#define TRIZEPS4_BOCR_VIRT     0xF0200000
-#define TRIZEPS4_DICR_VIRT     0xF0300000
-#define TRIZEPS4_IRCR_VIRT     0xF0400000
-#define TRIZEPS4_UPSR_VIRT     0xF0500000
-
-/* size of flash */
-#define TRIZEPS4_FLASH_SIZE    0x02000000      /* Flash size 32 MB */
-
-/* Ethernet Controller Davicom DM9000 */
-#define GPIO_DM9000            101
-#define TRIZEPS4_ETH_IRQ       PXA_GPIO_TO_IRQ(GPIO_DM9000)
-
-/* UCB1400 audio / TS-controller */
-#define GPIO_UCB1400           1
-#define TRIZEPS4_UCB1400_IRQ   PXA_GPIO_TO_IRQ(GPIO_UCB1400)
-
-/* PCMCIA socket Compact Flash */
-#define GPIO_PCD               11              /* PCMCIA Card Detect */
-#define TRIZEPS4_CD_IRQ                PXA_GPIO_TO_IRQ(GPIO_PCD)
-#define GPIO_PRDY              13              /* READY / nINT */
-#define TRIZEPS4_READY_NINT    PXA_GPIO_TO_IRQ(GPIO_PRDY)
-
-/* MMC socket */
-#define GPIO_MMC_DET           12
-#define TRIZEPS4_MMC_IRQ       PXA_GPIO_TO_IRQ(GPIO_MMC_DET)
-
-/* DOC NAND chip */
-#define GPIO_DOC_LOCK           94
-#define GPIO_DOC_IRQ            93
-#define TRIZEPS4_DOC_IRQ        PXA_GPIO_TO_IRQ(GPIO_DOC_IRQ)
-
-/* SPI interface */
-#define GPIO_SPI                53
-#define TRIZEPS4_SPI_IRQ        PXA_GPIO_TO_IRQ(GPIO_SPI)
-
-/* LEDS using tx2 / rx2 */
-#define GPIO_SYS_BUSY_LED      46
-#define GPIO_HEARTBEAT_LED     47
-
-/* Off-module PIC on ConXS board */
-#define GPIO_PIC               0
-#define TRIZEPS4_PIC_IRQ       PXA_GPIO_TO_IRQ(GPIO_PIC)
-
-#ifdef CONFIG_MACH_TRIZEPS_CONXS
-/* for CONXS base board define these registers */
-#define CFSR_P2V(x)    ((x) - TRIZEPS4_CFSR_PHYS + TRIZEPS4_CFSR_VIRT)
-#define CFSR_V2P(x)    ((x) - TRIZEPS4_CFSR_VIRT + TRIZEPS4_CFSR_PHYS)
-
-#define BCR_P2V(x)     ((x) - TRIZEPS4_BOCR_PHYS + TRIZEPS4_BOCR_VIRT)
-#define BCR_V2P(x)     ((x) - TRIZEPS4_BOCR_VIRT + TRIZEPS4_BOCR_PHYS)
-
-#define DCR_P2V(x)     ((x) - TRIZEPS4_DICR_PHYS + TRIZEPS4_DICR_VIRT)
-#define DCR_V2P(x)     ((x) - TRIZEPS4_DICR_VIRT + TRIZEPS4_DICR_PHYS)
-
-#define IRCR_P2V(x)    ((x) - TRIZEPS4_IRCR_PHYS + TRIZEPS4_IRCR_VIRT)
-#define IRCR_V2P(x)    ((x) - TRIZEPS4_IRCR_VIRT + TRIZEPS4_IRCR_PHYS)
-
-#ifndef __ASSEMBLY__
-static inline unsigned short CFSR_readw(void)
-{
-       /* [Compact Flash Status Register] is read only */
-       return *((unsigned short *)CFSR_P2V(0x0C000000));
-}
-static inline void BCR_writew(unsigned short value)
-{
-       /* [Board Control Regsiter] is write only */
-       *((unsigned short *)BCR_P2V(0x0E000000)) = value;
-}
-static inline void DCR_writew(unsigned short value)
-{
-       /* [Display Control Register] is write only */
-       *((unsigned short *)DCR_P2V(0x0E000000)) = value;
-}
-static inline void IRCR_writew(unsigned short value)
-{
-       /* [InfraRed data Control Register] is write only */
-       *((unsigned short *)IRCR_P2V(0x0E000000)) = value;
-}
-#else
-#define ConXS_CFSR             CFSR_P2V(0x0C000000)
-#define ConXS_BCR              BCR_P2V(0x0E000000)
-#define ConXS_DCR              DCR_P2V(0x0F800000)
-#define ConXS_IRCR             IRCR_P2V(0x0F800000)
-#endif
-#else
-/* for whatever baseboard define function registers */
-static inline unsigned short CFSR_readw(void)
-{
-       return 0;
-}
-static inline void BCR_writew(unsigned short value)
-{
-       ;
-}
-static inline void DCR_writew(unsigned short value)
-{
-       ;
-}
-static inline void IRCR_writew(unsigned short value)
-{
-       ;
-}
-#endif /* CONFIG_MACH_TRIZEPS_CONXS */
-
-#define ConXS_CFSR_BVD_MASK    0x0003
-#define ConXS_CFSR_BVD1                (1 << 0)
-#define ConXS_CFSR_BVD2                (1 << 1)
-#define ConXS_CFSR_VS_MASK     0x000C
-#define ConXS_CFSR_VS1         (1 << 2)
-#define ConXS_CFSR_VS2         (1 << 3)
-#define ConXS_CFSR_VS_5V       (0x3 << 2)
-#define ConXS_CFSR_VS_3V3      0x0
-
-#define ConXS_BCR_S0_POW_EN0   (1 << 0)
-#define ConXS_BCR_S0_POW_EN1   (1 << 1)
-#define ConXS_BCR_L_DISP       (1 << 4)
-#define ConXS_BCR_CF_BUF_EN    (1 << 5)
-#define ConXS_BCR_CF_RESET     (1 << 7)
-#define ConXS_BCR_S0_VCC_3V3   0x1
-#define ConXS_BCR_S0_VCC_5V0   0x2
-#define ConXS_BCR_S0_VPP_12V   0x4
-#define ConXS_BCR_S0_VPP_3V3   0x8
-
-#define ConXS_IRCR_MODE                (1 << 0)
-#define ConXS_IRCR_SD          (1 << 1)
-
-#endif /* _TRIPEPS4_H_ */
diff --git a/arch/arm/mach-pxa/include/mach/uncompress.h b/arch/arm/mach-pxa/include/mach/uncompress.h
deleted file mode 100644 (file)
index 1ed629e..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/mach-pxa/include/mach/uncompress.h
- *
- * Author:     Nicolas Pitre
- * Copyright:  (C) 2001 MontaVista Software Inc.
- */
-
-#include <linux/serial_reg.h>
-#include <asm/mach-types.h>
-
-#define FFUART_BASE    (0x40100000)
-#define BTUART_BASE    (0x40200000)
-#define STUART_BASE    (0x40700000)
-
-unsigned long uart_base;
-unsigned int uart_shift;
-unsigned int uart_is_pxa;
-
-static inline unsigned char uart_read(int offset)
-{
-       return *(volatile unsigned char *)(uart_base + (offset << uart_shift));
-}
-
-static inline void uart_write(unsigned char val, int offset)
-{
-       *(volatile unsigned char *)(uart_base + (offset << uart_shift)) = val;
-}
-
-static inline int uart_is_enabled(void)
-{
-       /* assume enabled by default for non-PXA uarts */
-       return uart_is_pxa ? uart_read(UART_IER) & UART_IER_UUE : 1;
-}
-
-static inline void putc(char c)
-{
-       if (!uart_is_enabled())
-               return;
-
-       while (!(uart_read(UART_LSR) & UART_LSR_THRE))
-               barrier();
-
-       uart_write(c, UART_TX);
-}
-
-/*
- * This does not append a newline
- */
-static inline void flush(void)
-{
-}
-
-static inline void arch_decomp_setup(void)
-{
-       /* initialize to default */
-       uart_base = FFUART_BASE;
-       uart_shift = 2;
-       uart_is_pxa = 1;
-
-       if (machine_is_littleton() ||  machine_is_csb726() ||
-           machine_is_cm_x300() || machine_is_balloon3())
-               uart_base = STUART_BASE;
-
-       if (machine_is_arcom_zeus()) {
-               uart_base = 0x10000000; /* nCS4 */
-               uart_shift = 1;
-               uart_is_pxa = 0;
-       }
-}
diff --git a/arch/arm/mach-pxa/include/mach/vpac270.h b/arch/arm/mach-pxa/include/mach/vpac270.h
deleted file mode 100644 (file)
index 0cd094d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * GPIOs and interrupts for Voipac PXA270
- *
- * Copyright (C) 2010
- * Marek Vasut <marek.vasut@gmail.com>
- */
-
-#ifndef _INCLUDE_VPAC270_H_
-#define _INCLUDE_VPAC270_H_
-
-#define        GPIO1_VPAC270_USER_BTN          1
-
-#define        GPIO15_VPAC270_LED_ORANGE       15
-
-#define        GPIO81_VPAC270_BKL_ON           81
-#define        GPIO83_VPAC270_NL_ON            83
-
-#define        GPIO52_VPAC270_SD_READONLY      52
-#define        GPIO53_VPAC270_SD_DETECT_N      53
-
-#define        GPIO84_VPAC270_PCMCIA_CD        84
-#define        GPIO35_VPAC270_PCMCIA_RDY       35
-#define        GPIO107_VPAC270_PCMCIA_PPEN     107
-#define        GPIO11_VPAC270_PCMCIA_RESET     11
-#define        GPIO17_VPAC270_CF_CD            17
-#define        GPIO12_VPAC270_CF_RDY           12
-#define        GPIO16_VPAC270_CF_RESET         16
-
-#define        GPIO41_VPAC270_UDC_DETECT       41
-
-#define        GPIO114_VPAC270_ETH_IRQ         114
-
-#define        GPIO36_VPAC270_IDE_IRQ          36
-
-#define        GPIO113_VPAC270_TS_IRQ          113
-
-#endif
diff --git a/arch/arm/mach-pxa/include/mach/z2.h b/arch/arm/mach-pxa/include/mach/z2.h
deleted file mode 100644 (file)
index a78b2e2..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- *  arch/arm/mach-pxa/include/mach/z2.h
- *
- *  Author: Ken McGuire
- *  Created: Feb 6, 2009
- */
-
-#ifndef ASM_ARCH_ZIPIT2_H
-#define ASM_ARCH_ZIPIT2_H
-
-/* LEDs */
-#define        GPIO10_ZIPITZ2_LED_WIFI         10
-#define        GPIO85_ZIPITZ2_LED_CHARGED      85
-#define        GPIO83_ZIPITZ2_LED_CHARGING     83
-
-/* SD/MMC */
-#define        GPIO96_ZIPITZ2_SD_DETECT        96
-
-/* GPIO Buttons */
-#define        GPIO1_ZIPITZ2_POWER_BUTTON      1
-#define        GPIO98_ZIPITZ2_LID_BUTTON       98
-
-/* Libertas GSPI8686 WiFi */
-#define        GPIO14_ZIPITZ2_WIFI_POWER       14
-#define        GPIO24_ZIPITZ2_WIFI_CS          24
-#define        GPIO36_ZIPITZ2_WIFI_IRQ         36
-
-/* LCD */
-#define        GPIO19_ZIPITZ2_LCD_RESET        19
-#define        GPIO88_ZIPITZ2_LCD_CS           88
-
-/* MISC GPIOs */
-#define        GPIO0_ZIPITZ2_AC_DETECT         0
-#define GPIO37_ZIPITZ2_HEADSET_DETECT  37
-
-#endif
index 74efc3ab595fde4fe1e3befc1021b4ef0f0460b2..96f33ef1d9ea283e7e316d80777e60eb674dba0a 100644 (file)
 #include <linux/irq.h>
 #include <linux/of_address.h>
 #include <linux/of_irq.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <asm/exception.h>
 
-#include <mach/hardware.h>
-#include <mach/irqs.h>
+#include "irqs.h"
 
 #include "generic.h"
+#include "pxa-regs.h"
 
 #define ICIP                   (0x000)
 #define ICMR                   (0x004)
diff --git a/arch/arm/mach-pxa/irqs.h b/arch/arm/mach-pxa/irqs.h
new file mode 100644 (file)
index 0000000..22bf536
--- /dev/null
@@ -0,0 +1,109 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  arch/arm/mach-pxa/include/mach/irqs.h
+ *
+ *  Author:    Nicolas Pitre
+ *  Created:   Jun 15, 2001
+ *  Copyright: MontaVista Software Inc.
+ */
+#ifndef __ASM_MACH_IRQS_H
+#define __ASM_MACH_IRQS_H
+
+#include <asm/irq.h>
+
+#define PXA_ISA_IRQ(x) (x)
+#define PXA_IRQ(x)     (NR_IRQS_LEGACY + (x))
+
+#define IRQ_SSP3       PXA_IRQ(0)      /* SSP3 service request */
+#define IRQ_MSL                PXA_IRQ(1)      /* MSL Interface interrupt */
+#define IRQ_USBH2      PXA_IRQ(2)      /* USB Host interrupt 1 (OHCI,PXA27x) */
+#define IRQ_USBH1      PXA_IRQ(3)      /* USB Host interrupt 2 (non-OHCI,PXA27x) */
+#define IRQ_KEYPAD     PXA_IRQ(4)      /* Key pad controller */
+#define IRQ_MEMSTK     PXA_IRQ(5)      /* Memory Stick interrupt (PXA27x) */
+#define IRQ_ACIPC0     PXA_IRQ(5)      /* AP-CP Communication (PXA930) */
+#define IRQ_PWRI2C     PXA_IRQ(6)      /* Power I2C interrupt */
+#define IRQ_HWUART     PXA_IRQ(7)      /* HWUART Transmit/Receive/Error (PXA26x) */
+#define IRQ_OST_4_11   PXA_IRQ(7)      /* OS timer 4-11 matches (PXA27x) */
+#define        IRQ_GPIO0       PXA_IRQ(8)      /* GPIO0 Edge Detect */
+#define        IRQ_GPIO1       PXA_IRQ(9)      /* GPIO1 Edge Detect */
+#define        IRQ_GPIO_2_x    PXA_IRQ(10)     /* GPIO[2-x] Edge Detect */
+#define        IRQ_USB         PXA_IRQ(11)     /* USB Service */
+#define        IRQ_PMU         PXA_IRQ(12)     /* Performance Monitoring Unit */
+#define        IRQ_I2S         PXA_IRQ(13)     /* I2S Interrupt (PXA27x) */
+#define IRQ_SSP4       PXA_IRQ(13)     /* SSP4 service request (PXA3xx) */
+#define        IRQ_AC97        PXA_IRQ(14)     /* AC97 Interrupt */
+#define IRQ_ASSP       PXA_IRQ(15)     /* Audio SSP Service Request (PXA25x) */
+#define IRQ_USIM       PXA_IRQ(15)     /* Smart Card interface interrupt (PXA27x) */
+#define IRQ_NSSP       PXA_IRQ(16)     /* Network SSP Service Request (PXA25x) */
+#define IRQ_SSP2       PXA_IRQ(16)     /* SSP2 interrupt (PXA27x) */
+#define        IRQ_LCD         PXA_IRQ(17)     /* LCD Controller Service Request */
+#define        IRQ_I2C         PXA_IRQ(18)     /* I2C Service Request */
+#define        IRQ_ICP         PXA_IRQ(19)     /* ICP Transmit/Receive/Error */
+#define IRQ_ACIPC2     PXA_IRQ(19)     /* AP-CP Communication (PXA930) */
+#define        IRQ_STUART      PXA_IRQ(20)     /* STUART Transmit/Receive/Error */
+#define        IRQ_BTUART      PXA_IRQ(21)     /* BTUART Transmit/Receive/Error */
+#define        IRQ_FFUART      PXA_IRQ(22)     /* FFUART Transmit/Receive/Error*/
+#define        IRQ_MMC         PXA_IRQ(23)     /* MMC Status/Error Detection */
+#define        IRQ_SSP         PXA_IRQ(24)     /* SSP Service Request */
+#define        IRQ_DMA         PXA_IRQ(25)     /* DMA Channel Service Request */
+#define        IRQ_OST0        PXA_IRQ(26)     /* OS Timer match 0 */
+#define        IRQ_OST1        PXA_IRQ(27)     /* OS Timer match 1 */
+#define        IRQ_OST2        PXA_IRQ(28)     /* OS Timer match 2 */
+#define        IRQ_OST3        PXA_IRQ(29)     /* OS Timer match 3 */
+#define        IRQ_RTC1Hz      PXA_IRQ(30)     /* RTC HZ Clock Tick */
+#define        IRQ_RTCAlrm     PXA_IRQ(31)     /* RTC Alarm */
+
+#define IRQ_TPM                PXA_IRQ(32)     /* TPM interrupt */
+#define IRQ_CAMERA     PXA_IRQ(33)     /* Camera Interface */
+#define IRQ_CIR                PXA_IRQ(34)     /* Consumer IR */
+#define IRQ_COMM_WDT   PXA_IRQ(35)     /* Comm WDT interrupt */
+#define IRQ_TSI                PXA_IRQ(36)     /* Touch Screen Interface (PXA320) */
+#define IRQ_ENHROT     PXA_IRQ(37)     /* Enhanced Rotary (PXA930) */
+#define IRQ_USIM2      PXA_IRQ(38)     /* USIM2 Controller */
+#define IRQ_GCU                PXA_IRQ(39)     /* Graphics Controller (PXA3xx) */
+#define IRQ_ACIPC1     PXA_IRQ(40)     /* AP-CP Communication (PXA930) */
+#define IRQ_MMC2       PXA_IRQ(41)     /* MMC2 Controller */
+#define IRQ_TRKBALL    PXA_IRQ(43)     /* Track Ball (PXA930) */
+#define IRQ_1WIRE      PXA_IRQ(44)     /* 1-Wire Controller */
+#define IRQ_NAND       PXA_IRQ(45)     /* NAND Controller */
+#define IRQ_USB2       PXA_IRQ(46)     /* USB 2.0 Device Controller */
+#define IRQ_WAKEUP0    PXA_IRQ(49)     /* EXT_WAKEUP0 */
+#define IRQ_WAKEUP1    PXA_IRQ(50)     /* EXT_WAKEUP1 */
+#define IRQ_DMEMC      PXA_IRQ(51)     /* Dynamic Memory Controller */
+#define IRQ_MMC3       PXA_IRQ(55)     /* MMC3 Controller (PXA310) */
+
+#define IRQ_U2O                PXA_IRQ(64)     /* USB OTG 2.0 Controller (PXA935) */
+#define IRQ_U2H                PXA_IRQ(65)     /* USB Host 2.0 Controller (PXA935) */
+#define IRQ_PXA935_MMC0        PXA_IRQ(72)     /* MMC0 Controller (PXA935) */
+#define IRQ_PXA935_MMC1        PXA_IRQ(73)     /* MMC1 Controller (PXA935) */
+#define IRQ_PXA935_MMC2        PXA_IRQ(74)     /* MMC2 Controller (PXA935) */
+#define IRQ_U2P                PXA_IRQ(93)     /* USB PHY D+/D- Lines (PXA935) */
+
+#define PXA_GPIO_IRQ_BASE      PXA_IRQ(96)
+#define PXA_NR_BUILTIN_GPIO    (192)
+#define PXA_GPIO_TO_IRQ(x)     (PXA_GPIO_IRQ_BASE + (x))
+
+/*
+ * The following interrupts are for board specific purposes. Since
+ * the kernel can only run on one machine at a time, we can re-use
+ * these.
+ * By default, no board IRQ is reserved. It should be finished in
+ * custom board since sparse IRQ is already enabled.
+ */
+#define IRQ_BOARD_START                (PXA_GPIO_IRQ_BASE + PXA_NR_BUILTIN_GPIO)
+
+#define PXA_NR_IRQS            (IRQ_BOARD_START)
+
+#ifndef __ASSEMBLY__
+struct irq_data;
+struct pt_regs;
+
+void pxa_mask_irq(struct irq_data *);
+void pxa_unmask_irq(struct irq_data *);
+void icip_handle_irq(struct pt_regs *);
+void ichp_handle_irq(struct pt_regs *);
+
+void pxa_init_irq(int irq_nr, int (*set_wake)(struct irq_data *, unsigned int));
+#endif
+
+#endif /* __ASM_MACH_IRQS_H */
index 73f5953b3bb6b07d59d146853c4b452ea122f957..f98dc61e87afbd412d6dc9e4f26f27537933149b 100644 (file)
@@ -31,7 +31,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 
 #include <asm/mach/arch.h>
index 6fc40bc06910478afd9200aaf97dbbe7ae620af3..0e4123c5fd42141b48d7791c1cc97b9b34a44414 100644 (file)
@@ -28,7 +28,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <linux/sizes.h>
 
 
 #include "pxa27x.h"
 #include "lpd270.h"
-#include <mach/audio.h>
+#include "addr-map.h"
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <mach/smemc.h>
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
index e2411971422d7be2f13a903610106a75cd881613..4f0944f3b2620d496368af93e7796a3ab6d0dd10 100644 (file)
@@ -34,7 +34,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <linux/sizes.h>
 
 #include <asm/hardware/sa1111.h>
 
 #include "pxa25x.h"
-#include <mach/audio.h>
-#include <mach/lubbock.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "lubbock.h"
 #include "udc.h"
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include "pm.h"
-#include <mach/smemc.h>
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
@@ -132,6 +131,13 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
        // no D+ pullup; lubbock can't connect/disconnect in software
 };
 
+static struct resource lubbock_udc_resources[] = {
+       DEFINE_RES_MEM(0x40600000, 0x10000),
+       DEFINE_RES_IRQ(IRQ_USB),
+       DEFINE_RES_IRQ(LUBBOCK_USB_IRQ),
+       DEFINE_RES_IRQ(LUBBOCK_USB_DISC_IRQ),
+};
+
 /* GPIOs for SA1111 PCMCIA */
 static struct gpiod_lookup_table sa1111_pcmcia_gpio_table = {
        .dev_id = "1800",
@@ -497,6 +503,9 @@ static void __init lubbock_init(void)
        lubbock_init_pcmcia();
 
        clk_add_alias("SA1111_CLK", NULL, "GPIO11_CLK", NULL);
+       /* lubbock has two extra IRQs */
+       pxa25x_device_udc.resource = lubbock_udc_resources;
+       pxa25x_device_udc.num_resources = ARRAY_SIZE(lubbock_udc_resources);
        pxa_set_udc_info(&udc_info);
        pxa_set_fb_info(NULL, &sharp_lm8v31);
        pxa_set_mci_info(&lubbock_mci_platform_data);
diff --git a/arch/arm/mach-pxa/lubbock.h b/arch/arm/mach-pxa/lubbock.h
new file mode 100644 (file)
index 0000000..55cf91e
--- /dev/null
@@ -0,0 +1,47 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  Author:    Nicolas Pitre
+ *  Created:   Jun 15, 2001
+ *  Copyright: MontaVista Software Inc.
+ */
+
+#include "irqs.h"
+
+#define LUBBOCK_ETH_PHYS       PXA_CS3_PHYS
+
+#define LUBBOCK_FPGA_PHYS      PXA_CS2_PHYS
+#define LUBBOCK_FPGA_VIRT      (0xf0000000)
+#define LUB_P2V(x)             ((x) - LUBBOCK_FPGA_PHYS + LUBBOCK_FPGA_VIRT)
+#define LUB_V2P(x)             ((x) - LUBBOCK_FPGA_VIRT + LUBBOCK_FPGA_PHYS)
+
+#ifndef __ASSEMBLY__
+#  define __LUB_REG(x)         (*((volatile unsigned long *)LUB_P2V(x)))
+#else
+#  define __LUB_REG(x)         LUB_P2V(x)
+#endif
+
+/* FPGA register virtual addresses */
+#define LUB_WHOAMI             __LUB_REG(LUBBOCK_FPGA_PHYS + 0x000)
+#define LUB_DISC_BLNK_LED      __LUB_REG(LUBBOCK_FPGA_PHYS + 0x040)
+#define LUB_CONF_SWITCHES      __LUB_REG(LUBBOCK_FPGA_PHYS + 0x050)
+#define LUB_USER_SWITCHES      __LUB_REG(LUBBOCK_FPGA_PHYS + 0x060)
+#define LUB_MISC_WR            __LUB_REG(LUBBOCK_FPGA_PHYS + 0x080)
+#define LUB_MISC_RD            __LUB_REG(LUBBOCK_FPGA_PHYS + 0x090)
+#define LUB_IRQ_MASK_EN                __LUB_REG(LUBBOCK_FPGA_PHYS + 0x0c0)
+#define LUB_IRQ_SET_CLR                __LUB_REG(LUBBOCK_FPGA_PHYS + 0x0d0)
+#define LUB_GP                 __LUB_REG(LUBBOCK_FPGA_PHYS + 0x100)
+
+/* Board specific IRQs */
+#define LUBBOCK_NR_IRQS                IRQ_BOARD_START
+
+#define LUBBOCK_IRQ(x)         (LUBBOCK_NR_IRQS + (x))
+#define LUBBOCK_SD_IRQ         LUBBOCK_IRQ(0)
+#define LUBBOCK_SA1111_IRQ     LUBBOCK_IRQ(1)
+#define LUBBOCK_USB_IRQ                LUBBOCK_IRQ(2)  /* usb connect */
+#define LUBBOCK_ETH_IRQ                LUBBOCK_IRQ(3)
+#define LUBBOCK_UCB1400_IRQ    LUBBOCK_IRQ(4)
+#define LUBBOCK_BB_IRQ         LUBBOCK_IRQ(5)
+#define LUBBOCK_USB_DISC_IRQ   LUBBOCK_IRQ(6)  /* usb disconnect */
+#define LUBBOCK_LAST_IRQ       LUBBOCK_IRQ(6)
+
+#define LUBBOCK_SA1111_IRQ_BASE        (LUBBOCK_NR_IRQS + 32)
index 200fd35168e050fdbe7db9e73846a2b3941de454..20456a55c4c5d5af4e74acebcaba3824d0264b58 100644 (file)
 #include <linux/regulator/machine.h>
 #include <linux/platform_data/i2c-pxa.h>
 
-#include <mach/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/system_info.h>
 
 #include "pxa27x.h"
-#include <mach/magician.h>
+#include "addr-map.h"
+#include "magician.h"
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/irda-pxaficp.h>
@@ -53,6 +53,7 @@
 #include <linux/spi/spi.h>
 #include <linux/spi/pxa2xx_spi.h>
 #include <linux/spi/ads7846.h>
+#include <sound/uda1380.h>
 
 static unsigned long magician_pin_config[] __initdata = {
 
@@ -681,7 +682,7 @@ static struct platform_device bq24022 = {
 static struct gpiod_lookup_table bq24022_gpiod_table = {
        .dev_id = "gpio-regulator",
        .table = {
-               GPIO_LOOKUP("gpio-pxa", EGPIO_MAGICIAN_BQ24022_ISET2,
+               GPIO_LOOKUP("htc-egpio-0", EGPIO_MAGICIAN_BQ24022_ISET2 - MAGICIAN_EGPIO_BASE,
                            NULL, GPIO_ACTIVE_HIGH),
                GPIO_LOOKUP("gpio-pxa", GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
                            "enable", GPIO_ACTIVE_LOW),
@@ -898,6 +899,53 @@ static struct platform_device strataflash = {
        },
 };
 
+/*
+ * audio support
+ */
+static struct uda1380_platform_data uda1380_info = {
+       .gpio_power = EGPIO_MAGICIAN_CODEC_POWER,
+       .gpio_reset = EGPIO_MAGICIAN_CODEC_RESET,
+       .dac_clk    = UDA1380_DAC_CLK_WSPLL,
+};
+
+static struct i2c_board_info magician_audio_i2c_board_info[] = {
+       {
+               I2C_BOARD_INFO("uda1380", 0x18),
+               .platform_data = &uda1380_info,
+       },
+};
+
+static struct gpiod_lookup_table magician_audio_gpio_table = {
+       .dev_id = "magician-audio",
+       .table = {
+               GPIO_LOOKUP("htc-egpio-0",
+                           EGPIO_MAGICIAN_SPK_POWER - MAGICIAN_EGPIO_BASE,
+                           "SPK_POWER", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("htc-egpio-0",
+                           EGPIO_MAGICIAN_EP_POWER - MAGICIAN_EGPIO_BASE,
+                           "EP_POWER", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("htc-egpio-0",
+                           EGPIO_MAGICIAN_MIC_POWER - MAGICIAN_EGPIO_BASE,
+                           "MIC_POWER", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("htc-egpio-0",
+                           EGPIO_MAGICIAN_IN_SEL0 - MAGICIAN_EGPIO_BASE,
+                           "IN_SEL0", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("htc-egpio-0",
+                           EGPIO_MAGICIAN_IN_SEL1 - MAGICIAN_EGPIO_BASE,
+                           "IN_SEL1", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
+static void magician_audio_init(void)
+{
+       i2c_register_board_info(0,
+               ARRAY_AND_SIZE(magician_audio_i2c_board_info));
+
+       gpiod_add_lookup_table(&magician_audio_gpio_table);
+       platform_device_register_simple("magician-audio", -1, NULL, 0);
+}
+
 /*
  * PXA I2C main controller
  */
@@ -1048,6 +1096,8 @@ static void __init magician_init(void)
        gpiod_add_lookup_table(&bq24022_gpiod_table);
        gpiod_add_lookup_table(&gpio_vbus_gpiod_table);
        platform_add_devices(ARRAY_AND_SIZE(devices));
+
+       magician_audio_init();
 }
 
 MACHINE_START(MAGICIAN, "HTC Magician")
diff --git a/arch/arm/mach-pxa/magician.h b/arch/arm/mach-pxa/magician.h
new file mode 100644 (file)
index 0000000..e1e4f9f
--- /dev/null
@@ -0,0 +1,125 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * GPIO and IRQ definitions for HTC Magician PDA phones
+ *
+ * Copyright (c) 2007 Philipp Zabel
+ */
+
+#ifndef _MAGICIAN_H_
+#define _MAGICIAN_H_
+
+#include <linux/gpio.h>
+#include "irqs.h"
+
+/*
+ * PXA GPIOs
+ */
+
+#define GPIO0_MAGICIAN_KEY_POWER               0
+#define GPIO9_MAGICIAN_UNKNOWN                 9
+#define GPIO10_MAGICIAN_GSM_IRQ                        10
+#define GPIO11_MAGICIAN_GSM_OUT1               11
+#define GPIO13_MAGICIAN_CPLD_IRQ               13
+#define GPIO14_MAGICIAN_TSC2046_CS             14
+#define GPIO18_MAGICIAN_UNKNOWN                        18
+#define GPIO22_MAGICIAN_VIBRA_EN               22
+#define GPIO26_MAGICIAN_GSM_POWER              26
+#define GPIO27_MAGICIAN_USBC_PUEN              27
+#define GPIO30_MAGICIAN_BQ24022_nCHARGE_EN     30
+#define GPIO37_MAGICIAN_KEY_HANGUP             37
+#define GPIO38_MAGICIAN_KEY_CONTACTS           38
+#define GPIO40_MAGICIAN_GSM_OUT2               40
+#define GPIO48_MAGICIAN_UNKNOWN                        48
+#define GPIO56_MAGICIAN_UNKNOWN                        56
+#define GPIO57_MAGICIAN_CAM_RESET              57
+#define GPIO75_MAGICIAN_SAMSUNG_POWER          75
+#define GPIO83_MAGICIAN_nIR_EN                 83
+#define GPIO86_MAGICIAN_GSM_RESET              86
+#define GPIO87_MAGICIAN_GSM_SELECT             87
+#define GPIO90_MAGICIAN_KEY_CALENDAR           90
+#define GPIO91_MAGICIAN_KEY_CAMERA             91
+#define GPIO93_MAGICIAN_KEY_UP                 93
+#define GPIO94_MAGICIAN_KEY_DOWN               94
+#define GPIO95_MAGICIAN_KEY_LEFT               95
+#define GPIO96_MAGICIAN_KEY_RIGHT              96
+#define GPIO97_MAGICIAN_KEY_ENTER              97
+#define GPIO98_MAGICIAN_KEY_RECORD             98
+#define GPIO99_MAGICIAN_HEADPHONE_IN           99
+#define GPIO100_MAGICIAN_KEY_VOL_UP            100
+#define GPIO101_MAGICIAN_KEY_VOL_DOWN          101
+#define GPIO102_MAGICIAN_KEY_PHONE             102
+#define GPIO103_MAGICIAN_LED_KP                        103
+#define GPIO104_MAGICIAN_LCD_VOFF_EN           104
+#define GPIO105_MAGICIAN_LCD_VON_EN            105
+#define GPIO106_MAGICIAN_LCD_DCDC_NRESET       106
+#define GPIO107_MAGICIAN_DS1WM_IRQ             107
+#define GPIO108_MAGICIAN_GSM_READY             108
+#define GPIO114_MAGICIAN_UNKNOWN               114
+#define GPIO115_MAGICIAN_nPEN_IRQ              115
+#define GPIO116_MAGICIAN_nCAM_EN               116
+#define GPIO119_MAGICIAN_UNKNOWN               119
+#define GPIO120_MAGICIAN_UNKNOWN               120
+
+/*
+ * CPLD IRQs
+ */
+
+#define IRQ_MAGICIAN_SD                (IRQ_BOARD_START + 0)
+#define IRQ_MAGICIAN_EP                (IRQ_BOARD_START + 1)
+#define IRQ_MAGICIAN_BT                (IRQ_BOARD_START + 2)
+#define IRQ_MAGICIAN_VBUS      (IRQ_BOARD_START + 3)
+
+#define MAGICIAN_NR_IRQS       (IRQ_BOARD_START + 8)
+
+/*
+ * CPLD EGPIOs
+ */
+
+#define MAGICIAN_EGPIO_BASE            PXA_NR_BUILTIN_GPIO
+#define MAGICIAN_EGPIO(reg,bit) \
+       (MAGICIAN_EGPIO_BASE + 8*reg + bit)
+
+/* output */
+
+#define EGPIO_MAGICIAN_TOPPOLY_POWER   MAGICIAN_EGPIO(0, 2)
+#define EGPIO_MAGICIAN_LED_POWER       MAGICIAN_EGPIO(0, 5)
+#define EGPIO_MAGICIAN_GSM_RESET       MAGICIAN_EGPIO(0, 6)
+#define EGPIO_MAGICIAN_LCD_POWER       MAGICIAN_EGPIO(0, 7)
+#define EGPIO_MAGICIAN_SPK_POWER       MAGICIAN_EGPIO(1, 0)
+#define EGPIO_MAGICIAN_EP_POWER                MAGICIAN_EGPIO(1, 1)
+#define EGPIO_MAGICIAN_IN_SEL0         MAGICIAN_EGPIO(1, 2)
+#define EGPIO_MAGICIAN_IN_SEL1         MAGICIAN_EGPIO(1, 3)
+#define EGPIO_MAGICIAN_MIC_POWER       MAGICIAN_EGPIO(1, 4)
+#define EGPIO_MAGICIAN_CODEC_RESET     MAGICIAN_EGPIO(1, 5)
+#define EGPIO_MAGICIAN_CODEC_POWER     MAGICIAN_EGPIO(1, 6)
+#define EGPIO_MAGICIAN_BL_POWER                MAGICIAN_EGPIO(1, 7)
+#define EGPIO_MAGICIAN_SD_POWER                MAGICIAN_EGPIO(2, 0)
+#define EGPIO_MAGICIAN_CARKIT_MIC      MAGICIAN_EGPIO(2, 1)
+#define EGPIO_MAGICIAN_IR_RX_SHUTDOWN  MAGICIAN_EGPIO(2, 2)
+#define EGPIO_MAGICIAN_FLASH_VPP       MAGICIAN_EGPIO(2, 3)
+#define EGPIO_MAGICIAN_BL_POWER2       MAGICIAN_EGPIO(2, 4)
+#define EGPIO_MAGICIAN_BQ24022_ISET2   MAGICIAN_EGPIO(2, 5)
+#define EGPIO_MAGICIAN_NICD_CHARGE     MAGICIAN_EGPIO(2, 6)
+#define EGPIO_MAGICIAN_GSM_POWER       MAGICIAN_EGPIO(2, 7)
+
+/* input */
+
+/* USB or AC charger type */
+#define EGPIO_MAGICIAN_CABLE_TYPE      MAGICIAN_EGPIO(4, 0)
+/*
+ * Vbus is detected
+ * FIXME behaves like (6,3), may differ for host/device
+ */
+#define EGPIO_MAGICIAN_CABLE_VBUS      MAGICIAN_EGPIO(4, 1)
+
+#define EGPIO_MAGICIAN_BOARD_ID0       MAGICIAN_EGPIO(5, 0)
+#define EGPIO_MAGICIAN_BOARD_ID1       MAGICIAN_EGPIO(5, 1)
+#define EGPIO_MAGICIAN_BOARD_ID2       MAGICIAN_EGPIO(5, 2)
+#define EGPIO_MAGICIAN_LCD_SELECT      MAGICIAN_EGPIO(5, 3)
+#define EGPIO_MAGICIAN_nSD_READONLY    MAGICIAN_EGPIO(5, 4)
+
+#define EGPIO_MAGICIAN_EP_INSERT       MAGICIAN_EGPIO(6, 1)
+/* FIXME behaves like (4,1), may differ for host/device */
+#define EGPIO_MAGICIAN_CABLE_INSERTED  MAGICIAN_EGPIO(6, 3)
+
+#endif /* _MAGICIAN_H_ */
index d237bd030238148049442252d4492449ba6f34ce..fd386f1c414c945bd07b07e2d9c6d8d7d268b50c 100644 (file)
@@ -35,7 +35,6 @@
 #include <asm/setup.h>
 #include <asm/memory.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <linux/sizes.h>
 
 #include <asm/mach/flash.h>
 
 #include "pxa27x.h"
-#include <mach/mainstone.h>
-#include <mach/audio.h>
+#include "mainstone.h"
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/keypad-pxa27x.h>
-#include <mach/smemc.h>
+#include "addr-map.h"
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
@@ -548,6 +548,14 @@ static struct gpiod_lookup_table mainstone_pcmcia_gpio_table = {
        },
 };
 
+static struct gpiod_lookup_table mainstone_wm97xx_gpio_table = {
+       .dev_id = "wm97xx-touch",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", 4, "touch", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 static void __init mainstone_init(void)
 {
        int SW7 = 0;  /* FIXME: get from SCR (Mst doc section 3.2.1.1) */
@@ -562,6 +570,7 @@ static void __init mainstone_init(void)
                      "mst-pcmcia1", MST_PCMCIA_INPUTS, 0, NULL,
                      NULL, mst_pcmcia1_irqs);
        gpiod_add_lookup_table(&mainstone_pcmcia_gpio_table);
+       gpiod_add_lookup_table(&mainstone_wm97xx_gpio_table);
 
        pxa_set_ffuart_info(NULL);
        pxa_set_btuart_info(NULL);
diff --git a/arch/arm/mach-pxa/mainstone.h b/arch/arm/mach-pxa/mainstone.h
new file mode 100644 (file)
index 0000000..f116c56
--- /dev/null
@@ -0,0 +1,140 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  Author:    Nicolas Pitre
+ *  Created:   Nov 14, 2002
+ *  Copyright: MontaVista Software Inc.
+ */
+
+#ifndef ASM_ARCH_MAINSTONE_H
+#define ASM_ARCH_MAINSTONE_H
+
+#include "irqs.h"
+
+#define MST_ETH_PHYS           PXA_CS4_PHYS
+
+#define MST_FPGA_PHYS          PXA_CS2_PHYS
+#define MST_FPGA_VIRT          (0xf0000000)
+#define MST_P2V(x)             ((x) - MST_FPGA_PHYS + MST_FPGA_VIRT)
+#define MST_V2P(x)             ((x) - MST_FPGA_VIRT + MST_FPGA_PHYS)
+
+#ifndef __ASSEMBLY__
+# define __MST_REG(x)          (*((volatile unsigned long *)MST_P2V(x)))
+#else
+# define __MST_REG(x)          MST_P2V(x)
+#endif
+
+/* board level registers in the FPGA */
+
+#define MST_LEDDAT1            __MST_REG(0x08000010)
+#define MST_LEDDAT2            __MST_REG(0x08000014)
+#define MST_LEDCTRL            __MST_REG(0x08000040)
+#define MST_GPSWR              __MST_REG(0x08000060)
+#define MST_MSCWR1             __MST_REG(0x08000080)
+#define MST_MSCWR2             __MST_REG(0x08000084)
+#define MST_MSCWR3             __MST_REG(0x08000088)
+#define MST_MSCRD              __MST_REG(0x08000090)
+#define MST_INTMSKENA          __MST_REG(0x080000c0)
+#define MST_INTSETCLR          __MST_REG(0x080000d0)
+#define MST_PCMCIA0            __MST_REG(0x080000e0)
+#define MST_PCMCIA1            __MST_REG(0x080000e4)
+
+#define MST_MSCWR1_CAMERA_ON   (1 << 15)  /* Camera interface power control */
+#define MST_MSCWR1_CAMERA_SEL  (1 << 14)  /* Camera interface mux control */
+#define MST_MSCWR1_LCD_CTL     (1 << 13)  /* General-purpose LCD control */
+#define MST_MSCWR1_MS_ON       (1 << 12)  /* Memory Stick power control */
+#define MST_MSCWR1_MMC_ON      (1 << 11)  /* MultiMediaCard* power control */
+#define MST_MSCWR1_MS_SEL      (1 << 10)  /* SD/MS multiplexer control */
+#define MST_MSCWR1_BB_SEL      (1 << 9)   /* PCMCIA/Baseband multiplexer */
+#define MST_MSCWR1_BT_ON       (1 << 8)   /* Bluetooth UART transceiver */
+#define MST_MSCWR1_BTDTR       (1 << 7)   /* Bluetooth UART DTR */
+
+#define MST_MSCWR1_IRDA_MASK   (3 << 5)   /* IrDA transceiver mode */
+#define MST_MSCWR1_IRDA_FULL   (0 << 5)   /* full distance power */
+#define MST_MSCWR1_IRDA_OFF    (1 << 5)   /* shutdown */
+#define MST_MSCWR1_IRDA_MED    (2 << 5)   /* 2/3 distance power */
+#define MST_MSCWR1_IRDA_LOW    (3 << 5)   /* 1/3 distance power */
+
+#define MST_MSCWR1_IRDA_FIR    (1 << 4)   /* IrDA transceiver SIR/FIR */
+#define MST_MSCWR1_GREENLED    (1 << 3)   /* LED D1 control */
+#define MST_MSCWR1_PDC_CTL     (1 << 2)   /* reserved */
+#define MST_MSCWR1_MTR_ON      (1 << 1)   /* Silent alert motor */
+#define MST_MSCWR1_SYSRESET    (1 << 0)   /* System reset */
+
+#define MST_MSCWR2_USB_OTG_RST (1 << 6)   /* USB On The Go reset */
+#define MST_MSCWR2_USB_OTG_SEL (1 << 5)   /* USB On The Go control */
+#define MST_MSCWR2_nUSBC_SC    (1 << 4)   /* USB client soft connect control */
+#define MST_MSCWR2_I2S_SPKROFF (1 << 3)   /* I2S CODEC amplifier control */
+#define MST_MSCWR2_AC97_SPKROFF        (1 << 2)   /* AC97 CODEC amplifier control */
+#define MST_MSCWR2_RADIO_PWR   (1 << 1)   /* Radio module power control */
+#define MST_MSCWR2_RADIO_WAKE  (1 << 0)   /* Radio module wake-up signal */
+
+#define MST_MSCWR3_GPIO_RESET_EN       (1 << 2) /* Enable GPIO Reset */
+#define MST_MSCWR3_GPIO_RESET          (1 << 1) /* Initiate a GPIO Reset */
+#define MST_MSCWR3_COMMS_SW_RESET      (1 << 0) /* Communications Processor Reset Control */
+
+#define MST_MSCRD_nPENIRQ      (1 << 9)   /* ADI7873* nPENIRQ signal */
+#define MST_MSCRD_nMEMSTK_CD   (1 << 8)   /* Memory Stick detection signal */
+#define MST_MSCRD_nMMC_CD      (1 << 7)   /* SD/MMC card detection signal */
+#define MST_MSCRD_nUSIM_CD     (1 << 6)   /* USIM card detection signal */
+#define MST_MSCRD_USB_CBL      (1 << 5)   /* USB client cable status */
+#define MST_MSCRD_TS_BUSY      (1 << 4)   /* ADI7873 busy */
+#define MST_MSCRD_BTDSR                (1 << 3)   /* Bluetooth UART DSR */
+#define MST_MSCRD_BTRI         (1 << 2)   /* Bluetooth UART Ring Indicator */
+#define MST_MSCRD_BTDCD                (1 << 1)   /* Bluetooth UART DCD */
+#define MST_MSCRD_nMMC_WP      (1 << 0)   /* SD/MMC write-protect status */
+
+#define MST_INT_S1_IRQ         (1 << 15)  /* PCMCIA socket 1 IRQ */
+#define MST_INT_S1_STSCHG      (1 << 14)  /* PCMCIA socket 1 status changed */
+#define MST_INT_S1_CD          (1 << 13)  /* PCMCIA socket 1 card detection */
+#define MST_INT_S0_IRQ         (1 << 11)  /* PCMCIA socket 0 IRQ */
+#define MST_INT_S0_STSCHG      (1 << 10)  /* PCMCIA socket 0 status changed */
+#define MST_INT_S0_CD          (1 << 9)   /* PCMCIA socket 0 card detection */
+#define MST_INT_nEXBRD_INT     (1 << 7)   /* Expansion board IRQ */
+#define MST_INT_MSINS          (1 << 6)   /* Memory Stick* detection */
+#define MST_INT_PENIRQ         (1 << 5)   /* ADI7873* touch-screen IRQ */
+#define MST_INT_AC97           (1 << 4)   /* AC'97 CODEC IRQ */
+#define MST_INT_ETHERNET       (1 << 3)   /* Ethernet controller IRQ */
+#define MST_INT_USBC           (1 << 2)   /* USB client cable detection IRQ */
+#define MST_INT_USIM           (1 << 1)   /* USIM card detection IRQ */
+#define MST_INT_MMC            (1 << 0)   /* MMC/SD card detection IRQ */
+
+#define MST_PCMCIA_nIRQ                (1 << 10)  /* IRQ / ready signal */
+#define MST_PCMCIA_nSPKR_BVD2  (1 << 9)   /* VDD sense / digital speaker */
+#define MST_PCMCIA_nSTSCHG_BVD1        (1 << 8)   /* VDD sense / card status changed */
+#define MST_PCMCIA_nVS2                (1 << 7)   /* VSS voltage sense */
+#define MST_PCMCIA_nVS1                (1 << 6)   /* VSS voltage sense */
+#define MST_PCMCIA_nCD         (1 << 5)   /* Card detection signal */
+#define MST_PCMCIA_RESET       (1 << 4)   /* Card reset signal */
+#define MST_PCMCIA_PWR_MASK    (0x000f)   /* MAX1602 power-supply controls */
+
+#define MST_PCMCIA_PWR_VPP_0    0x0       /* voltage VPP = 0V */
+#define MST_PCMCIA_PWR_VPP_120  0x2       /* voltage VPP = 12V*/
+#define MST_PCMCIA_PWR_VPP_VCC  0x1       /* voltage VPP = VCC */
+#define MST_PCMCIA_PWR_VCC_0    0x0       /* voltage VCC = 0V */
+#define MST_PCMCIA_PWR_VCC_33   0x8       /* voltage VCC = 3.3V */
+#define MST_PCMCIA_PWR_VCC_50   0x4       /* voltage VCC = 5.0V */
+
+#define MST_PCMCIA_INPUTS \
+       (MST_PCMCIA_nIRQ | MST_PCMCIA_nSPKR_BVD2 | MST_PCMCIA_nSTSCHG_BVD1 | \
+        MST_PCMCIA_nVS2 | MST_PCMCIA_nVS1 | MST_PCMCIA_nCD)
+
+/* board specific IRQs */
+#define MAINSTONE_NR_IRQS      IRQ_BOARD_START
+
+#define MAINSTONE_IRQ(x)       (MAINSTONE_NR_IRQS + (x))
+#define MAINSTONE_MMC_IRQ      MAINSTONE_IRQ(0)
+#define MAINSTONE_USIM_IRQ     MAINSTONE_IRQ(1)
+#define MAINSTONE_USBC_IRQ     MAINSTONE_IRQ(2)
+#define MAINSTONE_ETHERNET_IRQ MAINSTONE_IRQ(3)
+#define MAINSTONE_AC97_IRQ     MAINSTONE_IRQ(4)
+#define MAINSTONE_PEN_IRQ      MAINSTONE_IRQ(5)
+#define MAINSTONE_MSINS_IRQ    MAINSTONE_IRQ(6)
+#define MAINSTONE_EXBRD_IRQ    MAINSTONE_IRQ(7)
+#define MAINSTONE_S0_CD_IRQ    MAINSTONE_IRQ(9)
+#define MAINSTONE_S0_STSCHG_IRQ        MAINSTONE_IRQ(10)
+#define MAINSTONE_S0_IRQ       MAINSTONE_IRQ(11)
+#define MAINSTONE_S1_CD_IRQ    MAINSTONE_IRQ(13)
+#define MAINSTONE_S1_STSCHG_IRQ        MAINSTONE_IRQ(14)
+#define MAINSTONE_S1_IRQ       MAINSTONE_IRQ(15)
+
+#endif
index 6a5451b186c2eecc4f5ea572ced5b77eac6a03f5..57b0782880dee6cec30accca0d83881f38b9b71a 100644 (file)
@@ -16,8 +16,9 @@
 #include <linux/init.h>
 #include <linux/io.h>
 #include <linux/syscore_ops.h>
+#include <linux/soc/pxa/cpu.h>
 
-#include <mach/pxa2xx-regs.h>
+#include "pxa2xx-regs.h"
 #include "mfp-pxa2xx.h"
 
 #include "generic.h"
index 980145e7ee99dcb5b505e51535c12dd3abb765ab..683a3ea5f15443692c8e50a7a9856227e1ab2ec5 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __ASM_ARCH_MFP_PXA2XX_H
 #define __ASM_ARCH_MFP_PXA2XX_H
 
-#include <plat/mfp.h>
+#include <linux/soc/pxa/mfp.h>
 
 /*
  * the following MFP_xxx bit definitions in mfp.h are re-used for pxa2xx:
index 56114df9700dd38cfa099f2eb48f6f731be6d0ad..d16ab7451efefceb7f9349f9ce87910cd22ebb26 100644 (file)
@@ -16,9 +16,8 @@
 #include <linux/io.h>
 #include <linux/syscore_ops.h>
 
-#include <mach/hardware.h>
 #include "mfp-pxa3xx.h"
-#include <mach/pxa3xx-regs.h>
+#include "pxa3xx-regs.h"
 
 #ifdef CONFIG_PM
 /*
index cdd830926d1c7358a1d4c82ec2961d749e87b531..81fec4fa5a0f74e4fd06bd7b478901edf94b4b8f 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __ASM_ARCH_MFP_PXA3XX_H
 #define __ASM_ARCH_MFP_PXA3XX_H
 
-#include <plat/mfp.h>
+#include <linux/soc/pxa/mfp.h>
 
 #define MFPR_BASE      (0x40e10000)
 
diff --git a/arch/arm/mach-pxa/mfp.h b/arch/arm/mach-pxa/mfp.h
new file mode 100644 (file)
index 0000000..7e0879b
--- /dev/null
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * arch/arm/mach-pxa/include/mach/mfp.h
+ *
+ * Multi-Function Pin Definitions
+ *
+ * Copyright (C) 2007 Marvell International Ltd.
+ *
+ * 2007-8-21: eric miao <eric.miao@marvell.com>
+ *            initial version
+ */
+
+#ifndef __ASM_ARCH_MFP_H
+#define __ASM_ARCH_MFP_H
+
+#include <linux/soc/pxa/mfp.h>
+
+#endif /* __ASM_ARCH_MFP_H */
index a79f296e81e029b0c0ad1a4c8280dc80779587db..d08f962ffb045113459198cc3baef4d385bdf447 100644 (file)
@@ -41,8 +41,8 @@
 #include "udc.h"
 #include "pxa27x-udc.h"
 #include <linux/platform_data/media/camera-pxa.h>
-#include <mach/audio.h>
-#include <mach/smemc.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "smemc.h"
 
 #include "mioa701.h"
 
index fde386f6cffe4b4a9f558906abc075b9307c2d4a..35546b59c88e3695b15d940345ee37424d2d6463 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "pxa320.h"
 
 #include "mxm8x10.h"
@@ -356,14 +357,9 @@ void __init mxm_8x10_usb_host_init(void)
        pxa_set_ohci_info(&mxm_8x10_ohci_platform_data);
 }
 
-/* AC97 Sound Support */
-static struct platform_device mxm_8x10_ac97_device = {
-       .name = "pxa2xx-ac97"
-};
-
 void __init mxm_8x10_ac97_init(void)
 {
-       platform_device_register(&mxm_8x10_ac97_device);
+       pxa_set_ac97_info(NULL);
 }
 
 /* NAND flash Support */
index 6230381a7ca0ca4f1c13f3d8839b601160602fbc..1a8d25eecac39f10b5d2657e52ae4f81f1b465d8 100644 (file)
@@ -25,7 +25,7 @@
 #include <asm/mach/map.h>
 
 #include "pxa27x.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/irda-pxaficp.h>
diff --git a/arch/arm/mach-pxa/palmld-pcmcia.c b/arch/arm/mach-pxa/palmld-pcmcia.c
new file mode 100644 (file)
index 0000000..720294a
--- /dev/null
@@ -0,0 +1,111 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_palmld.c
+ *
+ * Driver for Palm LifeDrive PCMCIA
+ *
+ * Copyright (C) 2006 Alex Osborne <ato@meshy.org>
+ * Copyright (C) 2007-2011 Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+
+#include <asm/mach-types.h>
+#include <pcmcia/soc_common.h>
+
+#include "palmld.h"
+
+static struct gpio palmld_pcmcia_gpios[] = {
+       { GPIO_NR_PALMLD_PCMCIA_POWER,  GPIOF_INIT_LOW, "PCMCIA Power" },
+       { GPIO_NR_PALMLD_PCMCIA_RESET,  GPIOF_INIT_HIGH,"PCMCIA Reset" },
+};
+
+static int palmld_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       int ret;
+
+       ret = gpio_request_array(palmld_pcmcia_gpios,
+                               ARRAY_SIZE(palmld_pcmcia_gpios));
+
+       skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMLD_PCMCIA_READY;
+       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
+
+       return ret;
+}
+
+static void palmld_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       gpio_free_array(palmld_pcmcia_gpios, ARRAY_SIZE(palmld_pcmcia_gpios));
+}
+
+static void palmld_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                       struct pcmcia_state *state)
+{
+       state->detect = 1; /* always inserted */
+       state->vs_3v  = 1;
+       state->vs_Xv  = 0;
+}
+
+static int palmld_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                                       const socket_state_t *state)
+{
+       gpio_set_value(GPIO_NR_PALMLD_PCMCIA_POWER, 1);
+       gpio_set_value(GPIO_NR_PALMLD_PCMCIA_RESET,
+                       !!(state->flags & SS_RESET));
+
+       return 0;
+}
+
+static struct pcmcia_low_level palmld_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+
+       .first                  = 1,
+       .nr                     = 1,
+
+       .hw_init                = palmld_pcmcia_hw_init,
+       .hw_shutdown            = palmld_pcmcia_hw_shutdown,
+
+       .socket_state           = palmld_pcmcia_socket_state,
+       .configure_socket       = palmld_pcmcia_configure_socket,
+};
+
+static struct platform_device *palmld_pcmcia_device;
+
+static int __init palmld_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_palmld())
+               return -ENODEV;
+
+       palmld_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!palmld_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(palmld_pcmcia_device, &palmld_pcmcia_ops,
+                                       sizeof(palmld_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(palmld_pcmcia_device);
+
+       if (ret)
+               platform_device_put(palmld_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit palmld_pcmcia_exit(void)
+{
+       platform_device_unregister(palmld_pcmcia_device);
+}
+
+module_init(palmld_pcmcia_init);
+module_exit(palmld_pcmcia_exit);
+
+MODULE_AUTHOR("Alex Osborne <ato@meshy.org>,"
+           " Marek Vasut <marek.vasut@gmail.com>");
+MODULE_DESCRIPTION("PCMCIA support for Palm LifeDrive");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_LICENSE("GPL");
index 5f73716a77f0d8580a80c4ac74842669c5bf35fd..32308c63884e9a3605ec4d43767a3e955311e44c 100644 (file)
@@ -29,8 +29,8 @@
 #include <asm/mach/map.h>
 
 #include "pxa27x.h"
-#include <mach/audio.h>
-#include <mach/palmld.h>
+#include "palmld.h"
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/irda-pxaficp.h>
@@ -279,9 +279,15 @@ static inline void palmld_leds_init(void) {}
  * HDD
  ******************************************************************************/
 #if defined(CONFIG_PATA_PALMLD) || defined(CONFIG_PATA_PALMLD_MODULE)
+static struct resource palmld_ide_resources[] = {
+       DEFINE_RES_MEM(PALMLD_IDE_PHYS, 0x1000),
+};
+
 static struct platform_device palmld_ide_device = {
-       .name   = "pata_palmld",
-       .id     = -1,
+       .name           = "pata_palmld",
+       .id             = -1,
+       .resource       = palmld_ide_resources,
+       .num_resources  = ARRAY_SIZE(palmld_ide_resources),
 };
 
 static struct gpiod_lookup_table palmld_ide_gpio_table = {
@@ -341,6 +347,14 @@ static struct gpiod_lookup_table palmld_mci_gpio_table = {
        },
 };
 
+static struct gpiod_lookup_table palmld_wm97xx_touch_gpio_table = {
+       .dev_id = "wm97xx-touch",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", 27, "touch", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 static void __init palmld_init(void)
 {
        pxa2xx_mfp_config(ARRAY_AND_SIZE(palmld_pin_config));
@@ -349,6 +363,7 @@ static void __init palmld_init(void)
        pxa_set_stuart_info(NULL);
 
        palm27x_mmc_init(&palmld_mci_gpio_table);
+       gpiod_add_lookup_table(&palmld_wm97xx_touch_gpio_table);
        palm27x_pm_init(PALMLD_STR_BASE);
        palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
        palm27x_irda_init(GPIO_NR_PALMLD_IR_DISABLE);
diff --git a/arch/arm/mach-pxa/palmld.h b/arch/arm/mach-pxa/palmld.h
new file mode 100644 (file)
index 0000000..99a6d8b
--- /dev/null
@@ -0,0 +1,107 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * GPIOs and interrupts for Palm LifeDrive Handheld Computer
+ *
+ * Authors:    Alex Osborne <ato@meshy.org>
+ *             Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#ifndef _INCLUDE_PALMLD_H_
+#define _INCLUDE_PALMLD_H_
+
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
+
+/** HERE ARE GPIOs **/
+
+/* GPIOs */
+#define GPIO_NR_PALMLD_GPIO_RESET      1
+#define GPIO_NR_PALMLD_POWER_DETECT    4
+#define GPIO_NR_PALMLD_HOTSYNC_BUTTON_N        10
+#define GPIO_NR_PALMLD_POWER_SWITCH    12
+#define GPIO_NR_PALMLD_EARPHONE_DETECT         13
+#define GPIO_NR_PALMLD_LOCK_SWITCH     15
+
+/* SD/MMC */
+#define GPIO_NR_PALMLD_SD_DETECT_N     14
+#define GPIO_NR_PALMLD_SD_POWER                114
+#define GPIO_NR_PALMLD_SD_READONLY     116
+
+/* TOUCHSCREEN */
+#define GPIO_NR_PALMLD_WM9712_IRQ      27
+
+/* IRDA */
+#define GPIO_NR_PALMLD_IR_DISABLE      108
+
+/* LCD/BACKLIGHT */
+#define GPIO_NR_PALMLD_BL_POWER                19
+#define GPIO_NR_PALMLD_LCD_POWER       96
+
+/* LCD BORDER */
+#define GPIO_NR_PALMLD_BORDER_SWITCH   21
+#define GPIO_NR_PALMLD_BORDER_SELECT   22
+
+/* BLUETOOTH */
+#define GPIO_NR_PALMLD_BT_POWER                17
+#define GPIO_NR_PALMLD_BT_RESET                83
+
+/* PCMCIA (WiFi) */
+#define GPIO_NR_PALMLD_PCMCIA_READY    38
+#define GPIO_NR_PALMLD_PCMCIA_POWER    36
+#define GPIO_NR_PALMLD_PCMCIA_RESET    81
+
+/* LEDs */
+#define GPIO_NR_PALMLD_LED_GREEN       52
+#define GPIO_NR_PALMLD_LED_AMBER       94
+
+/* IDE */
+#define GPIO_NR_PALMLD_IDE_RESET       98
+#define GPIO_NR_PALMLD_IDE_PWEN                115
+
+/* USB */
+#define GPIO_NR_PALMLD_USB_DETECT_N    3
+#define GPIO_NR_PALMLD_USB_READY       86
+#define GPIO_NR_PALMLD_USB_RESET       88
+#define GPIO_NR_PALMLD_USB_INT         106
+#define GPIO_NR_PALMLD_USB_POWER       118
+/* 20, 53 and 86 are usb related too */
+
+/* INTERRUPTS */
+#define IRQ_GPIO_PALMLD_GPIO_RESET     PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_GPIO_RESET)
+#define IRQ_GPIO_PALMLD_SD_DETECT_N    PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_SD_DETECT_N)
+#define IRQ_GPIO_PALMLD_WM9712_IRQ     PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_WM9712_IRQ)
+#define IRQ_GPIO_PALMLD_IDE_IRQ                PXA_GPIO_TO_IRQ(GPIO_NR_PALMLD_IDE_IRQ)
+
+
+/** HERE ARE INIT VALUES **/
+
+/* IO mappings */
+#define PALMLD_USB_PHYS                PXA_CS2_PHYS
+#define PALMLD_USB_VIRT                0xf0000000
+#define PALMLD_USB_SIZE                0x00100000
+
+#define PALMLD_IDE_PHYS                0x20000000
+#define PALMLD_IDE_VIRT                0xf1000000
+#define PALMLD_IDE_SIZE                0x00100000
+
+#define PALMLD_PHYS_IO_START   0x40000000
+#define PALMLD_STR_BASE                0xa0200000
+
+/* BATTERY */
+#define PALMLD_BAT_MAX_VOLTAGE         4000    /* 4.00V maximum voltage */
+#define PALMLD_BAT_MIN_VOLTAGE         3550    /* 3.55V critical voltage */
+#define PALMLD_BAT_MAX_CURRENT         0       /* unknown */
+#define PALMLD_BAT_MIN_CURRENT         0       /* unknown */
+#define PALMLD_BAT_MAX_CHARGE          1       /* unknown */
+#define PALMLD_BAT_MIN_CHARGE          1       /* unknown */
+#define PALMLD_MAX_LIFE_MINS           240     /* on-life in minutes */
+
+#define PALMLD_BAT_MEASURE_DELAY       (HZ * 1)
+
+/* BACKLIGHT */
+#define PALMLD_MAX_INTENSITY           0xFE
+#define PALMLD_DEFAULT_INTENSITY       0x7E
+#define PALMLD_LIMIT_MASK              0x7F
+#define PALMLD_PRESCALER               0x3F
+#define PALMLD_PERIOD_NS               3500
+
+#endif
index 7c7cbb4e677efe957dbc45da83938e8353bbb940..463b62ec1b012694c4f5b4140298ff2223b2883d 100644 (file)
@@ -29,7 +29,7 @@
 #include <asm/mach/map.h>
 
 #include "pxa27x.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "palmt5.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
@@ -190,6 +190,14 @@ static struct gpiod_lookup_table palmt5_mci_gpio_table = {
        },
 };
 
+static struct gpiod_lookup_table palmt5_wm97xx_touch_gpio_table = {
+       .dev_id = "wm97xx-touch",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", 27, "touch", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 static void __init palmt5_init(void)
 {
        pxa2xx_mfp_config(ARRAY_AND_SIZE(palmt5_pin_config));
@@ -198,6 +206,7 @@ static void __init palmt5_init(void)
        pxa_set_stuart_info(NULL);
 
        palm27x_mmc_init(&palmt5_mci_gpio_table);
+       gpiod_add_lookup_table(&palmt5_wm97xx_touch_gpio_table);
        palm27x_pm_init(PALMT5_STR_BASE);
        palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
        palm27x_udc_init(GPIO_NR_PALMT5_USB_DETECT_N,
index 1fb1da7c8da3bab7e7b14e2c5e1b9fdb283f6b97..cf84aedca7173b09b4aa21d33820087aa04b615a 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef _INCLUDE_PALMT5_H_
 #define _INCLUDE_PALMT5_H_
 
-#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 
 /** HERE ARE GPIOs **/
 
diff --git a/arch/arm/mach-pxa/palmtc-pcmcia.c b/arch/arm/mach-pxa/palmtc-pcmcia.c
new file mode 100644 (file)
index 0000000..8e3f382
--- /dev/null
@@ -0,0 +1,162 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_palmtc.c
+ *
+ * Driver for Palm Tungsten|C PCMCIA
+ *
+ * Copyright (C) 2008 Alex Osborne <ato@meshy.org>
+ * Copyright (C) 2009-2011 Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+#include <linux/delay.h>
+
+#include <asm/mach-types.h>
+#include "palmtc.h"
+#include <pcmcia/soc_common.h>
+
+static struct gpio palmtc_pcmcia_gpios[] = {
+       { GPIO_NR_PALMTC_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" },
+       { GPIO_NR_PALMTC_PCMCIA_POWER2, GPIOF_INIT_LOW, "PCMCIA Power 2" },
+       { GPIO_NR_PALMTC_PCMCIA_POWER3, GPIOF_INIT_LOW, "PCMCIA Power 3" },
+       { GPIO_NR_PALMTC_PCMCIA_RESET,  GPIOF_INIT_HIGH,"PCMCIA Reset" },
+       { GPIO_NR_PALMTC_PCMCIA_PWRREADY, GPIOF_IN,     "PCMCIA Power Ready" },
+};
+
+static int palmtc_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       int ret;
+
+       ret = gpio_request_array(palmtc_pcmcia_gpios,
+                               ARRAY_SIZE(palmtc_pcmcia_gpios));
+
+       skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMTC_PCMCIA_READY;
+       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
+
+       return ret;
+}
+
+static void palmtc_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       gpio_free_array(palmtc_pcmcia_gpios, ARRAY_SIZE(palmtc_pcmcia_gpios));
+}
+
+static void palmtc_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                       struct pcmcia_state *state)
+{
+       state->detect = 1; /* always inserted */
+       state->vs_3v  = 1;
+       state->vs_Xv  = 0;
+}
+
+static int palmtc_wifi_powerdown(void)
+{
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER2, 0);
+       mdelay(40);
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER1, 0);
+       return 0;
+}
+
+static int palmtc_wifi_powerup(void)
+{
+       int timeout = 50;
+
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER3, 1);
+       mdelay(50);
+
+       /* Power up the card, 1.8V first, after a while 3.3V */
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER1, 1);
+       mdelay(100);
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER2, 1);
+
+       /* Wait till the card is ready */
+       while (!gpio_get_value(GPIO_NR_PALMTC_PCMCIA_PWRREADY) &&
+               timeout) {
+               mdelay(1);
+               timeout--;
+       }
+
+       /* Power down the WiFi in case of error */
+       if (!timeout) {
+               palmtc_wifi_powerdown();
+               return 1;
+       }
+
+       /* Reset the card */
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
+       mdelay(20);
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 0);
+       mdelay(25);
+
+       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER3, 0);
+
+       return 0;
+}
+
+static int palmtc_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                                       const socket_state_t *state)
+{
+       int ret = 1;
+
+       if (state->Vcc == 0)
+               ret = palmtc_wifi_powerdown();
+       else if (state->Vcc == 33)
+               ret = palmtc_wifi_powerup();
+
+       return ret;
+}
+
+static struct pcmcia_low_level palmtc_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+
+       .first                  = 0,
+       .nr                     = 1,
+
+       .hw_init                = palmtc_pcmcia_hw_init,
+       .hw_shutdown            = palmtc_pcmcia_hw_shutdown,
+
+       .socket_state           = palmtc_pcmcia_socket_state,
+       .configure_socket       = palmtc_pcmcia_configure_socket,
+};
+
+static struct platform_device *palmtc_pcmcia_device;
+
+static int __init palmtc_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_palmtc())
+               return -ENODEV;
+
+       palmtc_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!palmtc_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(palmtc_pcmcia_device, &palmtc_pcmcia_ops,
+                                       sizeof(palmtc_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(palmtc_pcmcia_device);
+
+       if (ret)
+               platform_device_put(palmtc_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit palmtc_pcmcia_exit(void)
+{
+       platform_device_unregister(palmtc_pcmcia_device);
+}
+
+module_init(palmtc_pcmcia_init);
+module_exit(palmtc_pcmcia_exit);
+
+MODULE_AUTHOR("Alex Osborne <ato@meshy.org>,"
+           " Marek Vasut <marek.vasut@gmail.com>");
+MODULE_DESCRIPTION("PCMCIA support for Palm Tungsten|C");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_LICENSE("GPL");
index 455cb8ccaf26f85ac4f46915b328908a5016e7a8..3054ffa397ad5e8b19da2f4858845d1298a45dd3 100644 (file)
@@ -29,8 +29,8 @@
 #include <asm/mach/map.h>
 
 #include "pxa25x.h"
-#include <mach/audio.h>
-#include <mach/palmtc.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "palmtc.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/irda-pxaficp.h>
diff --git a/arch/arm/mach-pxa/palmtc.h b/arch/arm/mach-pxa/palmtc.h
new file mode 100644 (file)
index 0000000..9257a02
--- /dev/null
@@ -0,0 +1,84 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * linux/include/asm-arm/arch-pxa/palmtc-gpio.h
+ *
+ * GPIOs and interrupts for Palm Tungsten|C Handheld Computer
+ *
+ * Authors:    Alex Osborne <bobofdoom@gmail.com>
+ *             Marek Vasut <marek.vasut@gmail.com>
+ *             Holger Bocklet <bitz.email@gmx.net>
+ */
+
+#ifndef _INCLUDE_PALMTC_H_
+#define _INCLUDE_PALMTC_H_
+
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
+
+/** HERE ARE GPIOs **/
+
+/* GPIOs */
+#define GPIO_NR_PALMTC_EARPHONE_DETECT 2
+#define GPIO_NR_PALMTC_CRADLE_DETECT   5
+#define GPIO_NR_PALMTC_HOTSYNC_BUTTON  7
+
+/* SD/MMC */
+#define GPIO_NR_PALMTC_SD_DETECT_N     12
+#define GPIO_NR_PALMTC_SD_POWER                32
+#define GPIO_NR_PALMTC_SD_READONLY     54
+
+/* WLAN */
+#define GPIO_NR_PALMTC_PCMCIA_READY    13
+#define GPIO_NR_PALMTC_PCMCIA_PWRREADY 14
+#define GPIO_NR_PALMTC_PCMCIA_POWER1   15
+#define GPIO_NR_PALMTC_PCMCIA_POWER2   33
+#define GPIO_NR_PALMTC_PCMCIA_POWER3   55
+#define GPIO_NR_PALMTC_PCMCIA_RESET    78
+
+/* UDC */
+#define GPIO_NR_PALMTC_USB_DETECT_N    4
+#define GPIO_NR_PALMTC_USB_POWER       36
+
+/* LCD/BACKLIGHT */
+#define GPIO_NR_PALMTC_BL_POWER                16
+#define GPIO_NR_PALMTC_LCD_POWER       44
+#define GPIO_NR_PALMTC_LCD_BLANK       38
+
+/* UART */
+#define GPIO_NR_PALMTC_RS232_POWER     37
+
+/* IRDA */
+#define GPIO_NR_PALMTC_IR_DISABLE      45
+
+/* IRQs */
+#define IRQ_GPIO_PALMTC_SD_DETECT_N    PXA_GPIO_TO_IRQ(GPIO_NR_PALMTC_SD_DETECT_N)
+#define IRQ_GPIO_PALMTC_WLAN_READY     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTC_WLAN_READY)
+
+/* UCB1400 GPIOs */
+#define GPIO_NR_PALMTC_POWER_DETECT    (0x80 | 0x00)
+#define GPIO_NR_PALMTC_HEADPHONE_DETECT        (0x80 | 0x01)
+#define GPIO_NR_PALMTC_SPEAKER_ENABLE  (0x80 | 0x03)
+#define GPIO_NR_PALMTC_VIBRA_POWER     (0x80 | 0x05)
+#define GPIO_NR_PALMTC_LED_POWER       (0x80 | 0x07)
+
+/** HERE ARE INIT VALUES **/
+#define PALMTC_UCB1400_GPIO_OFFSET     0x80
+
+/* BATTERY */
+#define PALMTC_BAT_MAX_VOLTAGE         4000    /* 4.00V maximum voltage */
+#define PALMTC_BAT_MIN_VOLTAGE         3550    /* 3.55V critical voltage */
+#define PALMTC_BAT_MAX_CURRENT         0       /* unknown */
+#define PALMTC_BAT_MIN_CURRENT         0       /* unknown */
+#define PALMTC_BAT_MAX_CHARGE          1       /* unknown */
+#define PALMTC_BAT_MIN_CHARGE          1       /* unknown */
+#define PALMTC_MAX_LIFE_MINS           240     /* on-life in minutes */
+
+#define PALMTC_BAT_MEASURE_DELAY       (HZ * 1)
+
+/* BACKLIGHT */
+#define PALMTC_MAX_INTENSITY           0xFE
+#define PALMTC_DEFAULT_INTENSITY       0x7E
+#define PALMTC_LIMIT_MASK              0x7F
+#define PALMTC_PRESCALER               0x3F
+#define PALMTC_PERIOD_NS               3500
+
+#endif
index a2b10db4aacc4605f25d8cdd31516a64cb49ae53..fedac670a8afc1cca4a4d6980aceae854ccda29d 100644 (file)
@@ -29,7 +29,7 @@
 #include <asm/mach/map.h>
 
 #include "pxa25x.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "palmte2.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
index 2bf0f7f3ea241ee733c05eddedf9d9783ff183fd..238a31f32cbada94236b257ac0e9ff2e76e6bb46 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "pxa27x.h"
 #include "pxa27x-udc.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "palmtreo.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
@@ -37,7 +37,7 @@
 #include <linux/platform_data/keypad-pxa27x.h>
 #include "udc.h"
 #include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <mach/pxa2xx-regs.h>
+#include "pxa2xx-regs.h"
 #include <linux/platform_data/asoc-palm27x.h>
 #include <linux/platform_data/media/camera-pxa.h>
 #include "palm27x.h"
diff --git a/arch/arm/mach-pxa/palmtx-pcmcia.c b/arch/arm/mach-pxa/palmtx-pcmcia.c
new file mode 100644 (file)
index 0000000..8c2aaad
--- /dev/null
@@ -0,0 +1,111 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_palmtx.c
+ *
+ * Driver for Palm T|X PCMCIA
+ *
+ * Copyright (C) 2007-2011 Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+
+#include <asm/mach-types.h>
+#include "palmtx.h"
+#include <pcmcia/soc_common.h>
+
+static struct gpio palmtx_pcmcia_gpios[] = {
+       { GPIO_NR_PALMTX_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" },
+       { GPIO_NR_PALMTX_PCMCIA_POWER2, GPIOF_INIT_LOW, "PCMCIA Power 2" },
+       { GPIO_NR_PALMTX_PCMCIA_RESET,  GPIOF_INIT_HIGH,"PCMCIA Reset" },
+};
+
+static int palmtx_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       int ret;
+
+       ret = gpio_request_array(palmtx_pcmcia_gpios,
+                               ARRAY_SIZE(palmtx_pcmcia_gpios));
+
+       skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMTX_PCMCIA_READY;
+       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
+
+       return ret;
+}
+
+static void palmtx_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       gpio_free_array(palmtx_pcmcia_gpios, ARRAY_SIZE(palmtx_pcmcia_gpios));
+}
+
+static void palmtx_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                       struct pcmcia_state *state)
+{
+       state->detect = 1; /* always inserted */
+       state->vs_3v  = 1;
+       state->vs_Xv  = 0;
+}
+
+static int
+palmtx_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                               const socket_state_t *state)
+{
+       gpio_set_value(GPIO_NR_PALMTX_PCMCIA_POWER1, 1);
+       gpio_set_value(GPIO_NR_PALMTX_PCMCIA_POWER2, 1);
+       gpio_set_value(GPIO_NR_PALMTX_PCMCIA_RESET,
+                       !!(state->flags & SS_RESET));
+
+       return 0;
+}
+
+static struct pcmcia_low_level palmtx_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+
+       .first                  = 0,
+       .nr                     = 1,
+
+       .hw_init                = palmtx_pcmcia_hw_init,
+       .hw_shutdown            = palmtx_pcmcia_hw_shutdown,
+
+       .socket_state           = palmtx_pcmcia_socket_state,
+       .configure_socket       = palmtx_pcmcia_configure_socket,
+};
+
+static struct platform_device *palmtx_pcmcia_device;
+
+static int __init palmtx_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_palmtx())
+               return -ENODEV;
+
+       palmtx_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!palmtx_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(palmtx_pcmcia_device, &palmtx_pcmcia_ops,
+                                       sizeof(palmtx_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(palmtx_pcmcia_device);
+
+       if (ret)
+               platform_device_put(palmtx_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit palmtx_pcmcia_exit(void)
+{
+       platform_device_unregister(palmtx_pcmcia_device);
+}
+
+module_init(palmtx_pcmcia_init);
+module_exit(palmtx_pcmcia_exit);
+
+MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
+MODULE_DESCRIPTION("PCMCIA support for Palm T|X");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_LICENSE("GPL");
index 07332c92c9f7d1092b57c123b4105885dfad706c..c0d0762540abb04a0c18a1e45a8129885c3a188a 100644 (file)
@@ -32,8 +32,8 @@
 #include <asm/mach/map.h>
 
 #include "pxa27x.h"
-#include <mach/audio.h>
-#include <mach/palmtx.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "palmtx.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/irda-pxaficp.h>
@@ -345,6 +345,14 @@ static struct gpiod_lookup_table palmtx_mci_gpio_table = {
        },
 };
 
+static struct gpiod_lookup_table palmtx_wm97xx_touch_gpio_table = {
+       .dev_id = "wm97xx-touch",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", 27, "touch", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 static void __init palmtx_init(void)
 {
        pxa2xx_mfp_config(ARRAY_AND_SIZE(palmtx_pin_config));
@@ -353,6 +361,7 @@ static void __init palmtx_init(void)
        pxa_set_stuart_info(NULL);
 
        palm27x_mmc_init(&palmtx_mci_gpio_table);
+       gpiod_add_lookup_table(&palmtx_wm97xx_touch_gpio_table);
        palm27x_pm_init(PALMTX_STR_BASE);
        palm27x_lcd_init(-1, &palm_320x480_lcd_mode);
        palm27x_udc_init(GPIO_NR_PALMTX_USB_DETECT_N,
diff --git a/arch/arm/mach-pxa/palmtx.h b/arch/arm/mach-pxa/palmtx.h
new file mode 100644 (file)
index 0000000..ec88abf
--- /dev/null
@@ -0,0 +1,110 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * GPIOs and interrupts for Palm T|X Handheld Computer
+ *
+ * Based on palmld-gpio.h by Alex Osborne
+ *
+ * Authors:    Marek Vasut <marek.vasut@gmail.com>
+ *             Cristiano P. <cristianop@users.sourceforge.net>
+ *             Jan Herman <2hp@seznam.cz>
+ */
+
+#ifndef _INCLUDE_PALMTX_H_
+#define _INCLUDE_PALMTX_H_
+
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
+
+/** HERE ARE GPIOs **/
+
+/* GPIOs */
+#define GPIO_NR_PALMTX_GPIO_RESET              1
+
+#define GPIO_NR_PALMTX_POWER_DETECT            12 /* 90 */
+#define GPIO_NR_PALMTX_HOTSYNC_BUTTON_N                10
+#define GPIO_NR_PALMTX_EARPHONE_DETECT         107
+
+/* SD/MMC */
+#define GPIO_NR_PALMTX_SD_DETECT_N             14
+#define GPIO_NR_PALMTX_SD_POWER                        114 /* probably */
+#define GPIO_NR_PALMTX_SD_READONLY             115 /* probably */
+
+/* TOUCHSCREEN */
+#define GPIO_NR_PALMTX_WM9712_IRQ              27
+
+/* IRDA -  disable GPIO connected to SD pin of tranceiver (TFBS4710?) ? */
+#define GPIO_NR_PALMTX_IR_DISABLE              40
+
+/* USB */
+#define GPIO_NR_PALMTX_USB_DETECT_N            13
+#define GPIO_NR_PALMTX_USB_PULLUP              93
+
+/* LCD/BACKLIGHT */
+#define GPIO_NR_PALMTX_BL_POWER                        84
+#define GPIO_NR_PALMTX_LCD_POWER               96
+
+/* LCD BORDER */
+#define GPIO_NR_PALMTX_BORDER_SWITCH           98
+#define GPIO_NR_PALMTX_BORDER_SELECT           22
+
+/* BLUETOOTH */
+#define GPIO_NR_PALMTX_BT_POWER                        17
+#define GPIO_NR_PALMTX_BT_RESET                        83
+
+/* PCMCIA (WiFi) */
+#define GPIO_NR_PALMTX_PCMCIA_POWER1           94
+#define GPIO_NR_PALMTX_PCMCIA_POWER2           108
+#define GPIO_NR_PALMTX_PCMCIA_RESET            79
+#define GPIO_NR_PALMTX_PCMCIA_READY            116
+
+/* NAND Flash ... this GPIO may be incorrect! */
+#define GPIO_NR_PALMTX_NAND_BUFFER_DIR         79
+
+/* INTERRUPTS */
+#define IRQ_GPIO_PALMTX_SD_DETECT_N    PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_SD_DETECT_N)
+#define IRQ_GPIO_PALMTX_WM9712_IRQ     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_WM9712_IRQ)
+#define IRQ_GPIO_PALMTX_USB_DETECT     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_USB_DETECT)
+#define IRQ_GPIO_PALMTX_GPIO_RESET     PXA_GPIO_TO_IRQ(GPIO_NR_PALMTX_GPIO_RESET)
+
+/** HERE ARE INIT VALUES **/
+
+/* Various addresses  */
+#define PALMTX_PCMCIA_PHYS     0x28000000
+#define PALMTX_PCMCIA_VIRT     IOMEM(0xf0000000)
+#define PALMTX_PCMCIA_SIZE     0x100000
+
+#define PALMTX_PHYS_RAM_START  0xa0000000
+#define PALMTX_PHYS_IO_START   0x40000000
+
+#define PALMTX_STR_BASE                0xa0200000
+
+#define PALMTX_PHYS_FLASH_START        PXA_CS0_PHYS    /* ChipSelect 0 */
+#define PALMTX_PHYS_NAND_START PXA_CS1_PHYS    /* ChipSelect 1 */
+
+#define PALMTX_NAND_ALE_PHYS   (PALMTX_PHYS_NAND_START | (1 << 24))
+#define PALMTX_NAND_CLE_PHYS   (PALMTX_PHYS_NAND_START | (1 << 25))
+#define PALMTX_NAND_ALE_VIRT   IOMEM(0xff100000)
+#define PALMTX_NAND_CLE_VIRT   IOMEM(0xff200000)
+
+/* TOUCHSCREEN */
+#define AC97_LINK_FRAME                        21
+
+
+/* BATTERY */
+#define PALMTX_BAT_MAX_VOLTAGE         4000    /* 4.00v current voltage */
+#define PALMTX_BAT_MIN_VOLTAGE         3550    /* 3.55v critical voltage */
+#define PALMTX_BAT_MAX_CURRENT         0       /* unknown */
+#define PALMTX_BAT_MIN_CURRENT         0       /* unknown */
+#define PALMTX_BAT_MAX_CHARGE          1       /* unknown */
+#define PALMTX_BAT_MIN_CHARGE          1       /* unknown */
+#define PALMTX_MAX_LIFE_MINS           360     /* on-life in minutes */
+
+#define PALMTX_BAT_MEASURE_DELAY       (HZ * 1)
+
+/* BACKLIGHT */
+#define PALMTX_MAX_INTENSITY           0xFE
+#define PALMTX_DEFAULT_INTENSITY       0x7E
+#define PALMTX_LIMIT_MASK              0x7F
+#define PALMTX_PRESCALER               0x3F
+#define PALMTX_PERIOD_NS               3500
+
+#endif
index b4a5fe02a0af1b87de40eb0737ee43b91b160ed2..66e8fe6f1661d7221b2f50fba399403eaec2feb4 100644 (file)
@@ -34,7 +34,7 @@
 #include <asm/mach/map.h>
 
 #include "pxa27x.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include "palmz72.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
index 0c4ab636ce4e04365ae1d5ea120b22e7686cbd1c..58ade4ad6ba3cf58800c121d4d9a404e34bc2ace 100644 (file)
@@ -10,7 +10,7 @@
  * Definitions of CPU card resources only
  */
 
-#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 
 /* phyCORE-PXA270 (PCM027) Interrupts */
 #define PCM027_IRQ(x)          (IRQ_BOARD_START + (x))
index 8dfcc366d0fe93938b4361f745c4891187ae9bfd..33a9d2eeca1c2c1283b366ffb32f52ebe2ccdf60 100644 (file)
@@ -26,7 +26,7 @@
 
 #include <asm/mach/map.h>
 #include "pxa27x.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include "pcm990_baseboard.h"
index 5be11d1b7019ea07c59d6196a925cf93254750ff..18cf71decb03eb506fed2f01f0c850b15dc4b0a0 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #include "pcm027.h"
-#include <mach/irqs.h> /* PXA_GPIO_TO_IRQ */
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
 
 /*
  * definitions relevant only when the PCM-990
index 58cfa434afdebc0031bb1e2c449bc8d32514e28f..7772a39430ed1b03a3315dd1860b7aec5574e78b 100644 (file)
@@ -30,7 +30,6 @@
 #include <linux/mtd/sharpsl.h>
 #include <linux/memblock.h>
 
-#include <mach/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/irq.h>
 #include <asm/setup.h>
 #include <asm/mach/irq.h>
 
 #include "pxa25x.h"
-#include <linux/platform_data/mmc-pxamci.h>
 #include "udc.h"
+#include "poodle.h"
+
+#include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/irda-pxaficp.h>
-#include <mach/poodle.h>
 #include <linux/platform_data/video-pxafb.h>
+#include <linux/platform_data/asoc-poodle.h>
 
 #include <asm/hardware/scoop.h>
 #include <asm/hardware/locomo.h>
@@ -156,12 +157,6 @@ static struct scoop_pcmcia_config poodle_pcmcia_config = {
 
 EXPORT_SYMBOL(poodle_scoop_device);
 
-
-static struct platform_device poodle_audio_device = {
-       .name   = "poodle-audio",
-       .id     = -1,
-};
-
 /* LoCoMo device */
 static struct resource locomo_resources[] = {
        [0] = {
@@ -180,7 +175,7 @@ static struct locomo_platform_data locomo_info = {
        .irq_base       = IRQ_BOARD_START,
 };
 
-struct platform_device poodle_locomo_device = {
+static struct platform_device poodle_locomo_device = {
        .name           = "locomo",
        .id             = 0,
        .num_resources  = ARRAY_SIZE(locomo_resources),
@@ -190,7 +185,21 @@ struct platform_device poodle_locomo_device = {
        },
 };
 
-EXPORT_SYMBOL(poodle_locomo_device);
+static struct poodle_audio_platform_data poodle_audio_pdata = {
+       .locomo_dev     = &poodle_locomo_device.dev,
+
+       .gpio_amp_on    = POODLE_LOCOMO_GPIO_AMP_ON,
+       .gpio_mute_l    = POODLE_LOCOMO_GPIO_MUTE_L,
+       .gpio_mute_r    = POODLE_LOCOMO_GPIO_MUTE_R,
+       .gpio_232vcc_on = POODLE_LOCOMO_GPIO_232VCC_ON,
+       .gpio_jk_b      = POODLE_LOCOMO_GPIO_JK_B,
+};
+
+static struct platform_device poodle_audio_device = {
+       .name   = "poodle-audio",
+       .id     = -1,
+       .dev.platform_data = &poodle_audio_pdata,
+};
 
 #if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
 static struct pxa2xx_spi_controller poodle_spi_info = {
diff --git a/arch/arm/mach-pxa/poodle.h b/arch/arm/mach-pxa/poodle.h
new file mode 100644 (file)
index 0000000..00798b4
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * arch/arm/mach-pxa/include/mach/poodle.h
+ *
+ * May be copied or modified under the terms of the GNU General Public
+ * License.  See linux/COPYING for more information.
+ *
+ * Based on:
+ *   arch/arm/mach-sa1100/include/mach/collie.h
+ *
+ * ChangeLog:
+ *   04-06-2001 Lineo Japan, Inc.
+ *   04-16-2001 SHARP Corporation
+ *   Update to 2.6 John Lenz
+ */
+#ifndef __ASM_ARCH_POODLE_H
+#define __ASM_ARCH_POODLE_H  1
+
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
+
+/*
+ * GPIOs
+ */
+/* PXA GPIOs */
+#define POODLE_GPIO_ON_KEY             (0)
+#define POODLE_GPIO_AC_IN              (1)
+#define POODLE_GPIO_CO                 16
+#define POODLE_GPIO_TP_INT             (5)
+#define POODLE_GPIO_TP_CS              (24)
+#define POODLE_GPIO_WAKEUP             (11)    /* change battery */
+#define POODLE_GPIO_GA_INT             (10)
+#define POODLE_GPIO_IR_ON              (22)
+#define POODLE_GPIO_HP_IN              (4)
+#define POODLE_GPIO_CF_IRQ             (17)
+#define POODLE_GPIO_CF_CD              (14)
+#define POODLE_GPIO_CF_STSCHG          (14)
+#define POODLE_GPIO_SD_PWR             (33)
+#define POODLE_GPIO_SD_PWR1            (3)
+#define POODLE_GPIO_nSD_CLK            (6)
+#define POODLE_GPIO_nSD_WP             (7)
+#define POODLE_GPIO_nSD_INT            (8)
+#define POODLE_GPIO_nSD_DETECT         (9)
+#define POODLE_GPIO_MAIN_BAT_LOW       (13)
+#define POODLE_GPIO_BAT_COVER          (13)
+#define POODLE_GPIO_USB_PULLUP         (20)
+#define POODLE_GPIO_ADC_TEMP_ON                (21)
+#define POODLE_GPIO_BYPASS_ON          (36)
+#define POODLE_GPIO_CHRG_ON            (38)
+#define POODLE_GPIO_CHRG_FULL          (16)
+#define POODLE_GPIO_DISCHARGE_ON        (42) /* Enable battery discharge */
+
+/* PXA GPIOs */
+#define POODLE_IRQ_GPIO_ON_KEY         PXA_GPIO_TO_IRQ(0)
+#define POODLE_IRQ_GPIO_AC_IN          PXA_GPIO_TO_IRQ(1)
+#define POODLE_IRQ_GPIO_HP_IN          PXA_GPIO_TO_IRQ(4)
+#define POODLE_IRQ_GPIO_CO             PXA_GPIO_TO_IRQ(16)
+#define POODLE_IRQ_GPIO_TP_INT         PXA_GPIO_TO_IRQ(5)
+#define POODLE_IRQ_GPIO_WAKEUP         PXA_GPIO_TO_IRQ(11)
+#define POODLE_IRQ_GPIO_GA_INT         PXA_GPIO_TO_IRQ(10)
+#define POODLE_IRQ_GPIO_CF_IRQ         PXA_GPIO_TO_IRQ(17)
+#define POODLE_IRQ_GPIO_CF_CD          PXA_GPIO_TO_IRQ(14)
+#define POODLE_IRQ_GPIO_nSD_INT                PXA_GPIO_TO_IRQ(8)
+#define POODLE_IRQ_GPIO_nSD_DETECT     PXA_GPIO_TO_IRQ(9)
+#define POODLE_IRQ_GPIO_MAIN_BAT_LOW   PXA_GPIO_TO_IRQ(13)
+
+/* SCOOP GPIOs */
+#define POODLE_SCOOP_CHARGE_ON SCOOP_GPCR_PA11
+#define POODLE_SCOOP_CP401     SCOOP_GPCR_PA13
+#define POODLE_SCOOP_VPEN      SCOOP_GPCR_PA18
+#define POODLE_SCOOP_L_PCLK    SCOOP_GPCR_PA20
+#define POODLE_SCOOP_L_LCLK    SCOOP_GPCR_PA21
+#define POODLE_SCOOP_HS_OUT    SCOOP_GPCR_PA22
+
+#define POODLE_SCOOP_IO_DIR    ( POODLE_SCOOP_VPEN | POODLE_SCOOP_HS_OUT )
+#define POODLE_SCOOP_IO_OUT    ( 0 )
+
+#define POODLE_SCOOP_GPIO_BASE (PXA_NR_BUILTIN_GPIO)
+#define POODLE_GPIO_CHARGE_ON  (POODLE_SCOOP_GPIO_BASE + 0)
+#define POODLE_GPIO_CP401      (POODLE_SCOOP_GPIO_BASE + 2)
+#define POODLE_GPIO_VPEN       (POODLE_SCOOP_GPIO_BASE + 7)
+#define POODLE_GPIO_L_PCLK     (POODLE_SCOOP_GPIO_BASE + 9)
+#define POODLE_GPIO_L_LCLK     (POODLE_SCOOP_GPIO_BASE + 10)
+#define POODLE_GPIO_HS_OUT     (POODLE_SCOOP_GPIO_BASE + 11)
+
+#define POODLE_LOCOMO_GPIO_AMP_ON      LOCOMO_GPIO(8)
+#define POODLE_LOCOMO_GPIO_MUTE_L      LOCOMO_GPIO(10)
+#define POODLE_LOCOMO_GPIO_MUTE_R      LOCOMO_GPIO(11)
+#define POODLE_LOCOMO_GPIO_232VCC_ON   LOCOMO_GPIO(12)
+#define POODLE_LOCOMO_GPIO_JK_B        LOCOMO_GPIO(13)
+
+#define POODLE_NR_IRQS         (IRQ_BOARD_START + 4)   /* 4 for LoCoMo */
+
+#endif /* __ASM_ARCH_POODLE_H  */
index d32d5c8e966f60960462ecee07a4fcd68b674b05..5e5d543fdf468c93f95b4e563317403bdb9ef1b2 100644 (file)
@@ -11,7 +11,7 @@
 #include <linux/of_platform.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
-#include <mach/irqs.h>
+#include "irqs.h"
 
 #include "generic.h"
 
diff --git a/arch/arm/mach-pxa/pxa-regs.h b/arch/arm/mach-pxa/pxa-regs.h
new file mode 100644 (file)
index 0000000..ba5120c
--- /dev/null
@@ -0,0 +1,52 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ *  Author:    Nicolas Pitre
+ *  Created:   Jun 15, 2001
+ *  Copyright: MontaVista Software Inc.
+ */
+#ifndef __ASM_MACH_PXA_REGS_H
+#define __ASM_MACH_PXA_REGS_H
+
+/*
+ * Workarounds for at least 2 errata so far require this.
+ * The mapping is set in mach-pxa/generic.c.
+ */
+#define UNCACHED_PHYS_0                0xfe000000
+#define UNCACHED_PHYS_0_SIZE   0x00100000
+
+/*
+ * Intel PXA2xx internal register mapping:
+ *
+ * 0x40000000 - 0x41ffffff <--> 0xf2000000 - 0xf3ffffff
+ * 0x44000000 - 0x45ffffff <--> 0xf4000000 - 0xf5ffffff
+ * 0x48000000 - 0x49ffffff <--> 0xf6000000 - 0xf7ffffff
+ * 0x4c000000 - 0x4dffffff <--> 0xf8000000 - 0xf9ffffff
+ * 0x50000000 - 0x51ffffff <--> 0xfa000000 - 0xfbffffff
+ * 0x54000000 - 0x55ffffff <--> 0xfc000000 - 0xfdffffff
+ * 0x58000000 - 0x59ffffff <--> 0xfe000000 - 0xffffffff
+ *
+ * Note that not all PXA2xx chips implement all those addresses, and the
+ * kernel only maps the minimum needed range of this mapping.
+ */
+#define io_v2p(x) (0x3c000000 + ((x) & 0x01ffffff) + (((x) & 0x0e000000) << 1))
+#define io_p2v(x) IOMEM(0xf2000000 + ((x) & 0x01ffffff) + (((x) & 0x1c000000) >> 1))
+
+#ifndef __ASSEMBLY__
+# define __REG(x)      (*((volatile u32 __iomem *)io_p2v(x)))
+
+/* With indexed regs we don't want to feed the index through io_p2v()
+   especially if it is a variable, otherwise horrible code will result. */
+# define __REG2(x,y)   \
+       (*(volatile u32 __iomem*)((u32)&__REG(x) + (y)))
+
+# define __PREG(x)     (io_v2p((u32)&(x)))
+
+#else
+
+# define __REG(x)      io_p2v(x)
+# define __PREG(x)     io_v2p(x)
+
+#endif
+
+
+#endif
index 678641ab46e54ceed77ade42105d141f7de68230..6b34d7c169ea0f3ef547a0696b1c7cc92ade307b 100644 (file)
 #include <linux/irq.h>
 #include <linux/irqchip.h>
 #include <linux/platform_data/mmp_dma.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <asm/mach/map.h>
 #include <asm/suspend.h>
-#include <mach/hardware.h>
-#include <mach/irqs.h>
+#include "irqs.h"
 #include "pxa25x.h"
-#include <mach/reset.h>
+#include "reset.h"
 #include "pm.h"
-#include <mach/dma.h>
-#include <mach/smemc.h>
+#include "addr-map.h"
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
@@ -240,7 +240,7 @@ static int __init pxa25x_init(void)
 
        if (cpu_is_pxa25x()) {
 
-               reset_status = RCSR;
+               pxa_register_wdt(RCSR);
 
                pxa25x_init_pm();
 
index b58d0fbdb4db9a2b7d2e87d4f02ee383b4a869b6..eaaa87666324e731057182bb523541e9360809c2 100644 (file)
@@ -2,9 +2,9 @@
 #ifndef __MACH_PXA25x_H
 #define __MACH_PXA25x_H
 
-#include <mach/hardware.h>
-#include <mach/pxa2xx-regs.h>
+#include "addr-map.h"
+#include "pxa2xx-regs.h"
 #include "mfp-pxa25x.h"
-#include <mach/irqs.h>
+#include "irqs.h"
 
 #endif /* __MACH_PXA25x_H */
index faf73804697f52f2971a64f63130289061601f60..2d3df3b1cb68a2e59cf1836ca22b5102a6918b13 100644 (file)
@@ -2,6 +2,8 @@
 #ifndef _ASM_ARCH_PXA27X_UDC_H
 #define _ASM_ARCH_PXA27X_UDC_H
 
+#include "pxa-regs.h"
+
 #ifdef _ASM_ARCH_PXA25X_UDC_H
 #error You cannot include both PXA25x and PXA27x UDC support
 #endif
index f0ba7ed24cb69adf54efd6cb275e59f9fb3d0c82..afbf6ace954fee1c0bf2faaab889864ee47d01f5 100644 (file)
 #include <linux/irq.h>
 #include <linux/platform_data/i2c-pxa.h>
 #include <linux/platform_data/mmp_dma.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <asm/mach/map.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <asm/suspend.h>
-#include <mach/irqs.h>
+#include "irqs.h"
 #include "pxa27x.h"
-#include <mach/reset.h>
+#include "reset.h"
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include "pm.h"
-#include <mach/dma.h>
-#include <mach/smemc.h>
+#include "addr-map.h"
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
@@ -337,7 +337,7 @@ static int __init pxa27x_init(void)
 
        if (cpu_is_pxa27x()) {
 
-               reset_status = RCSR;
+               pxa_register_wdt(RCSR);
 
                pxa27x_init_pm();
 
index abdc02fb4f031d3abbbc23c6dc250b1ba54c7853..ede96f3f7214715bdb658bbc505d7fc5e2dc195b 100644 (file)
@@ -3,10 +3,10 @@
 #define __MACH_PXA27x_H
 
 #include <linux/suspend.h>
-#include <mach/hardware.h>
-#include <mach/pxa2xx-regs.h>
+#include "addr-map.h"
+#include "pxa2xx-regs.h"
 #include "mfp-pxa27x.h"
-#include <mach/irqs.h>
+#include "irqs.h"
 
 #define ARB_CNTRL      __REG(0x48000048)  /* Arbiter Control Register */
 
diff --git a/arch/arm/mach-pxa/pxa2xx-regs.h b/arch/arm/mach-pxa/pxa2xx-regs.h
new file mode 100644 (file)
index 0000000..0b7eaf6
--- /dev/null
@@ -0,0 +1,149 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  arch/arm/mach-pxa/include/mach/pxa2xx-regs.h
+ *
+ *  Taken from pxa-regs.h by Russell King
+ *
+ *  Author:    Nicolas Pitre
+ *  Copyright: MontaVista Software Inc.
+ */
+
+#ifndef __PXA2XX_REGS_H
+#define __PXA2XX_REGS_H
+
+#include "pxa-regs.h"
+
+/*
+ * Power Manager
+ */
+
+#define PMCR           __REG(0x40F00000)  /* Power Manager Control Register */
+#define PSSR           __REG(0x40F00004)  /* Power Manager Sleep Status Register */
+#define PSPR           __REG(0x40F00008)  /* Power Manager Scratch Pad Register */
+#define PWER           __REG(0x40F0000C)  /* Power Manager Wake-up Enable Register */
+#define PRER           __REG(0x40F00010)  /* Power Manager GPIO Rising-Edge Detect Enable Register */
+#define PFER           __REG(0x40F00014)  /* Power Manager GPIO Falling-Edge Detect Enable Register */
+#define PEDR           __REG(0x40F00018)  /* Power Manager GPIO Edge Detect Status Register */
+#define PCFR           __REG(0x40F0001C)  /* Power Manager General Configuration Register */
+#define PGSR0          __REG(0x40F00020)  /* Power Manager GPIO Sleep State Register for GP[31-0] */
+#define PGSR1          __REG(0x40F00024)  /* Power Manager GPIO Sleep State Register for GP[63-32] */
+#define PGSR2          __REG(0x40F00028)  /* Power Manager GPIO Sleep State Register for GP[84-64] */
+#define PGSR3          __REG(0x40F0002C)  /* Power Manager GPIO Sleep State Register for GP[118-96] */
+#define RCSR           __REG(0x40F00030)  /* Reset Controller Status Register */
+
+#define PSLR           __REG(0x40F00034)       /* Power Manager Sleep Config Register */
+#define PSTR           __REG(0x40F00038)       /* Power Manager Standby Config Register */
+#define PSNR           __REG(0x40F0003C)       /* Power Manager Sense Config Register */
+#define PVCR           __REG(0x40F00040)       /* Power Manager VoltageControl Register */
+#define PKWR           __REG(0x40F00050)       /* Power Manager KB Wake-up Enable Reg */
+#define PKSR           __REG(0x40F00054)       /* Power Manager KB Level-Detect Register */
+#define PCMD(x)        __REG2(0x40F00080, (x)<<2)
+#define PCMD0  __REG(0x40F00080 + 0 * 4)
+#define PCMD1  __REG(0x40F00080 + 1 * 4)
+#define PCMD2  __REG(0x40F00080 + 2 * 4)
+#define PCMD3  __REG(0x40F00080 + 3 * 4)
+#define PCMD4  __REG(0x40F00080 + 4 * 4)
+#define PCMD5  __REG(0x40F00080 + 5 * 4)
+#define PCMD6  __REG(0x40F00080 + 6 * 4)
+#define PCMD7  __REG(0x40F00080 + 7 * 4)
+#define PCMD8  __REG(0x40F00080 + 8 * 4)
+#define PCMD9  __REG(0x40F00080 + 9 * 4)
+#define PCMD10 __REG(0x40F00080 + 10 * 4)
+#define PCMD11 __REG(0x40F00080 + 11 * 4)
+#define PCMD12 __REG(0x40F00080 + 12 * 4)
+#define PCMD13 __REG(0x40F00080 + 13 * 4)
+#define PCMD14 __REG(0x40F00080 + 14 * 4)
+#define PCMD15 __REG(0x40F00080 + 15 * 4)
+#define PCMD16 __REG(0x40F00080 + 16 * 4)
+#define PCMD17 __REG(0x40F00080 + 17 * 4)
+#define PCMD18 __REG(0x40F00080 + 18 * 4)
+#define PCMD19 __REG(0x40F00080 + 19 * 4)
+#define PCMD20 __REG(0x40F00080 + 20 * 4)
+#define PCMD21 __REG(0x40F00080 + 21 * 4)
+#define PCMD22 __REG(0x40F00080 + 22 * 4)
+#define PCMD23 __REG(0x40F00080 + 23 * 4)
+#define PCMD24 __REG(0x40F00080 + 24 * 4)
+#define PCMD25 __REG(0x40F00080 + 25 * 4)
+#define PCMD26 __REG(0x40F00080 + 26 * 4)
+#define PCMD27 __REG(0x40F00080 + 27 * 4)
+#define PCMD28 __REG(0x40F00080 + 28 * 4)
+#define PCMD29 __REG(0x40F00080 + 29 * 4)
+#define PCMD30 __REG(0x40F00080 + 30 * 4)
+#define PCMD31 __REG(0x40F00080 + 31 * 4)
+
+#define PCMD_MBC       (1<<12)
+#define PCMD_DCE       (1<<11)
+#define PCMD_LC        (1<<10)
+/* FIXME:  PCMD_SQC need be checked.   */
+#define PCMD_SQC       (3<<8)  /* currently only bit 8 is changeable,
+                                  bit 9 should be 0 all day. */
+#define PVCR_VCSA      (0x1<<14)
+#define PVCR_CommandDelay (0xf80)
+#define PCFR_PI2C_EN   (0x1 << 6)
+
+#define PSSR_OTGPH     (1 << 6)        /* OTG Peripheral control Hold */
+#define PSSR_RDH       (1 << 5)        /* Read Disable Hold */
+#define PSSR_PH                (1 << 4)        /* Peripheral Control Hold */
+#define PSSR_STS       (1 << 3)        /* Standby Mode Status */
+#define PSSR_VFS       (1 << 2)        /* VDD Fault Status */
+#define PSSR_BFS       (1 << 1)        /* Battery Fault Status */
+#define PSSR_SSS       (1 << 0)        /* Software Sleep Status */
+
+#define PSLR_SL_ROD    (1 << 20)       /* Sleep-Mode/Depp-Sleep Mode nRESET_OUT Disable */
+
+#define PCFR_RO                (1 << 15)       /* RDH Override */
+#define PCFR_PO                (1 << 14)       /* PH Override */
+#define PCFR_GPROD     (1 << 12)       /* GPIO nRESET_OUT Disable */
+#define PCFR_L1_EN     (1 << 11)       /* Sleep Mode L1 converter Enable */
+#define PCFR_FVC       (1 << 10)       /* Frequency/Voltage Change */
+#define PCFR_DC_EN     (1 << 7)        /* Sleep/deep-sleep DC-DC Converter Enable */
+#define PCFR_PI2CEN    (1 << 6)        /* Enable PI2C controller */
+#define PCFR_GPR_EN    (1 << 4)        /* nRESET_GPIO Pin Enable */
+#define PCFR_DS                (1 << 3)        /* Deep Sleep Mode */
+#define PCFR_FS                (1 << 2)        /* Float Static Chip Selects */
+#define PCFR_FP                (1 << 1)        /* Float PCMCIA controls */
+#define PCFR_OPDE      (1 << 0)        /* 3.6864 MHz oscillator power-down enable */
+
+#define RCSR_GPR       (1 << 3)        /* GPIO Reset */
+#define RCSR_SMR       (1 << 2)        /* Sleep Mode */
+#define RCSR_WDR       (1 << 1)        /* Watchdog Reset */
+#define RCSR_HWR       (1 << 0)        /* Hardware Reset */
+
+#define PWER_GPIO(Nb)  (1 << Nb)       /* GPIO [0..15] wake-up enable     */
+#define PWER_GPIO0     PWER_GPIO (0)   /* GPIO  [0] wake-up enable        */
+#define PWER_GPIO1     PWER_GPIO (1)   /* GPIO  [1] wake-up enable        */
+#define PWER_GPIO2     PWER_GPIO (2)   /* GPIO  [2] wake-up enable        */
+#define PWER_GPIO3     PWER_GPIO (3)   /* GPIO  [3] wake-up enable        */
+#define PWER_GPIO4     PWER_GPIO (4)   /* GPIO  [4] wake-up enable        */
+#define PWER_GPIO5     PWER_GPIO (5)   /* GPIO  [5] wake-up enable        */
+#define PWER_GPIO6     PWER_GPIO (6)   /* GPIO  [6] wake-up enable        */
+#define PWER_GPIO7     PWER_GPIO (7)   /* GPIO  [7] wake-up enable        */
+#define PWER_GPIO8     PWER_GPIO (8)   /* GPIO  [8] wake-up enable        */
+#define PWER_GPIO9     PWER_GPIO (9)   /* GPIO  [9] wake-up enable        */
+#define PWER_GPIO10    PWER_GPIO (10)  /* GPIO [10] wake-up enable        */
+#define PWER_GPIO11    PWER_GPIO (11)  /* GPIO [11] wake-up enable        */
+#define PWER_GPIO12    PWER_GPIO (12)  /* GPIO [12] wake-up enable        */
+#define PWER_GPIO13    PWER_GPIO (13)  /* GPIO [13] wake-up enable        */
+#define PWER_GPIO14    PWER_GPIO (14)  /* GPIO [14] wake-up enable        */
+#define PWER_GPIO15    PWER_GPIO (15)  /* GPIO [15] wake-up enable        */
+#define PWER_RTC       0x80000000      /* RTC alarm wake-up enable        */
+
+/*
+ * PXA2xx specific Core clock definitions
+ */
+#define CCCR           io_p2v(0x41300000)  /* Core Clock Configuration Register */
+#define CCSR           io_p2v(0x4130000C)  /* Core Clock Status Register */
+#define CKEN           io_p2v(0x41300004)  /* Clock Enable Register */
+#define OSCC           io_p2v(0x41300008)  /* Oscillator Configuration Register */
+
+#define OSCC_OON       (1 << 1)        /* 32.768kHz OON (write-once only bit) */
+#define OSCC_OOK       (1 << 0)        /* 32.768kHz OOK (read-only bit) */
+
+/* PWRMODE register M field values */
+
+#define PWRMODE_IDLE           0x1
+#define PWRMODE_STANDBY                0x2
+#define PWRMODE_SLEEP          0x3
+#define PWRMODE_DEEPSLEEP      0x7
+
+#endif
index 2d26cd2afbf35872074e8eb66b462e973b8ff393..4aafd692c1e846a90a564140e29b09de499f157d 100644 (file)
 #include <linux/device.h>
 #include <linux/io.h>
 
-#include <mach/hardware.h>
-#include <mach/pxa2xx-regs.h>
+#include "pxa2xx-regs.h"
 #include "mfp-pxa25x.h"
-#include <mach/reset.h>
+#include "generic.h"
+#include "reset.h"
+#include "smemc.h"
+#include <linux/soc/pxa/smemc.h>
 #include <linux/platform_data/irda-pxaficp.h>
 
 void pxa2xx_clear_reset_status(unsigned int mask)
@@ -51,3 +53,27 @@ void pxa2xx_transceiver_mode(struct device *dev, int mode)
                BUG();
 }
 EXPORT_SYMBOL_GPL(pxa2xx_transceiver_mode);
+
+#define MDCNFG_DRAC2(mdcnfg)   (((mdcnfg) >> 21) & 0x3)
+#define MDCNFG_DRAC0(mdcnfg)   (((mdcnfg) >> 5) & 0x3)
+
+int pxa2xx_smemc_get_sdram_rows(void)
+{
+       static int sdram_rows;
+       unsigned int drac2 = 0, drac0 = 0;
+       u32 mdcnfg;
+
+       if (sdram_rows)
+               return sdram_rows;
+
+       mdcnfg = readl_relaxed(MDCNFG);
+
+       if (mdcnfg & (MDCNFG_DE2 | MDCNFG_DE3))
+               drac2 = MDCNFG_DRAC2(mdcnfg);
+
+       if (mdcnfg & (MDCNFG_DE0 | MDCNFG_DE1))
+               drac0 = MDCNFG_DRAC0(mdcnfg);
+
+       sdram_rows = 1 << (11 + max(drac0, drac2));
+       return sdram_rows;
+}
index 7f2f5a6a2263d52a37792c84b6e9f13f1d7bf8bf..f77ec118d5b9fe6113a23483aaf33248fcc9653a 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "pxa300.h"
 
index 78abcc741df77afc1693825512a7784c7f807c91..e372e6c118de3f01a29851153740364da40906b0 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "pxa320.h"
 
diff --git a/arch/arm/mach-pxa/pxa3xx-regs.h b/arch/arm/mach-pxa/pxa3xx-regs.h
new file mode 100644 (file)
index 0000000..4b11cf8
--- /dev/null
@@ -0,0 +1,134 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * arch/arm/mach-pxa/include/mach/pxa3xx-regs.h
+ *
+ * PXA3xx specific register definitions
+ *
+ * Copyright (C) 2007 Marvell International Ltd.
+ */
+
+#ifndef __ASM_ARCH_PXA3XX_REGS_H
+#define __ASM_ARCH_PXA3XX_REGS_H
+
+#include "pxa-regs.h"
+
+/*
+ * Oscillator Configuration Register (OSCC)
+ */
+#define OSCC           io_p2v(0x41350000)  /* Oscillator Configuration Register */
+
+#define OSCC_PEN       (1 << 11)       /* 13MHz POUT */
+
+
+/*
+ * Service Power Management Unit (MPMU)
+ */
+#define PMCR           __REG(0x40F50000)       /* Power Manager Control Register */
+#define PSR            __REG(0x40F50004)       /* Power Manager S2 Status Register */
+#define PSPR           __REG(0x40F50008)       /* Power Manager Scratch Pad Register */
+#define PCFR           __REG(0x40F5000C)       /* Power Manager General Configuration Register */
+#define PWER           __REG(0x40F50010)       /* Power Manager Wake-up Enable Register */
+#define PWSR           __REG(0x40F50014)       /* Power Manager Wake-up Status Register */
+#define PECR           __REG(0x40F50018)       /* Power Manager EXT_WAKEUP[1:0] Control Register */
+#define DCDCSR         __REG(0x40F50080)       /* DC-DC Controller Status Register */
+#define PVCR           __REG(0x40F50100)       /* Power Manager Voltage Change Control Register */
+#define PCMD(x)                __REG(0x40F50110 + ((x) << 2))
+
+/*
+ * Slave Power Management Unit
+ */
+#define ASCR           __REG(0x40f40000)       /* Application Subsystem Power Status/Configuration */
+#define ARSR           __REG(0x40f40004)       /* Application Subsystem Reset Status */
+#define AD3ER          __REG(0x40f40008)       /* Application Subsystem Wake-Up from D3 Enable */
+#define AD3SR          __REG(0x40f4000c)       /* Application Subsystem Wake-Up from D3 Status */
+#define AD2D0ER                __REG(0x40f40010)       /* Application Subsystem Wake-Up from D2 to D0 Enable */
+#define AD2D0SR                __REG(0x40f40014)       /* Application Subsystem Wake-Up from D2 to D0 Status */
+#define AD2D1ER                __REG(0x40f40018)       /* Application Subsystem Wake-Up from D2 to D1 Enable */
+#define AD2D1SR                __REG(0x40f4001c)       /* Application Subsystem Wake-Up from D2 to D1 Status */
+#define AD1D0ER                __REG(0x40f40020)       /* Application Subsystem Wake-Up from D1 to D0 Enable */
+#define AD1D0SR                __REG(0x40f40024)       /* Application Subsystem Wake-Up from D1 to D0 Status */
+#define AGENP          __REG(0x40f4002c)       /* Application Subsystem General Purpose */
+#define AD3R           __REG(0x40f40030)       /* Application Subsystem D3 Configuration */
+#define AD2R           __REG(0x40f40034)       /* Application Subsystem D2 Configuration */
+#define AD1R           __REG(0x40f40038)       /* Application Subsystem D1 Configuration */
+
+/*
+ * Application Subsystem Configuration bits.
+ */
+#define ASCR_RDH               (1 << 31)
+#define ASCR_D1S               (1 << 2)
+#define ASCR_D2S               (1 << 1)
+#define ASCR_D3S               (1 << 0)
+
+/*
+ * Application Reset Status bits.
+ */
+#define ARSR_GPR               (1 << 3)
+#define ARSR_LPMR              (1 << 2)
+#define ARSR_WDT               (1 << 1)
+#define ARSR_HWR               (1 << 0)
+
+/*
+ * Application Subsystem Wake-Up bits.
+ */
+#define ADXER_WRTC             (1 << 31)       /* RTC */
+#define ADXER_WOST             (1 << 30)       /* OS Timer */
+#define ADXER_WTSI             (1 << 29)       /* Touchscreen */
+#define ADXER_WUSBH            (1 << 28)       /* USB host */
+#define ADXER_WUSB2            (1 << 26)       /* USB client 2.0 */
+#define ADXER_WMSL0            (1 << 24)       /* MSL port 0*/
+#define ADXER_WDMUX3           (1 << 23)       /* USB EDMUX3 */
+#define ADXER_WDMUX2           (1 << 22)       /* USB EDMUX2 */
+#define ADXER_WKP              (1 << 21)       /* Keypad */
+#define ADXER_WUSIM1           (1 << 20)       /* USIM Port 1 */
+#define ADXER_WUSIM0           (1 << 19)       /* USIM Port 0 */
+#define ADXER_WOTG             (1 << 16)       /* USBOTG input */
+#define ADXER_MFP_WFLASH       (1 << 15)       /* MFP: Data flash busy */
+#define ADXER_MFP_GEN12                (1 << 14)       /* MFP: MMC3/GPIO/OST inputs */
+#define ADXER_MFP_WMMC2                (1 << 13)       /* MFP: MMC2 */
+#define ADXER_MFP_WMMC1                (1 << 12)       /* MFP: MMC1 */
+#define ADXER_MFP_WI2C         (1 << 11)       /* MFP: I2C */
+#define ADXER_MFP_WSSP4                (1 << 10)       /* MFP: SSP4 */
+#define ADXER_MFP_WSSP3                (1 << 9)        /* MFP: SSP3 */
+#define ADXER_MFP_WMAXTRIX     (1 << 8)        /* MFP: matrix keypad */
+#define ADXER_MFP_WUART3       (1 << 7)        /* MFP: UART3 */
+#define ADXER_MFP_WUART2       (1 << 6)        /* MFP: UART2 */
+#define ADXER_MFP_WUART1       (1 << 5)        /* MFP: UART1 */
+#define ADXER_MFP_WSSP2                (1 << 4)        /* MFP: SSP2 */
+#define ADXER_MFP_WSSP1                (1 << 3)        /* MFP: SSP1 */
+#define ADXER_MFP_WAC97                (1 << 2)        /* MFP: AC97 */
+#define ADXER_WEXTWAKE1                (1 << 1)        /* External Wake 1 */
+#define ADXER_WEXTWAKE0                (1 << 0)        /* External Wake 0 */
+
+/*
+ * AD3R/AD2R/AD1R bits.  R2-R5 are only defined for PXA320.
+ */
+#define ADXR_L2                        (1 << 8)
+#define ADXR_R5                        (1 << 5)
+#define ADXR_R4                        (1 << 4)
+#define ADXR_R3                        (1 << 3)
+#define ADXR_R2                        (1 << 2)
+#define ADXR_R1                        (1 << 1)
+#define ADXR_R0                        (1 << 0)
+
+/*
+ * Values for PWRMODE CP15 register
+ */
+#define PXA3xx_PM_S3D4C4       0x07    /* aka deep sleep */
+#define PXA3xx_PM_S2D3C4       0x06    /* aka sleep */
+#define PXA3xx_PM_S0D2C2       0x03    /* aka standby */
+#define PXA3xx_PM_S0D1C2       0x02    /* aka LCD refresh */
+#define PXA3xx_PM_S0D0C1       0x01
+
+/*
+ * Application Subsystem Clock
+ */
+#define ACCR           __REG(0x41340000)       /* Application Subsystem Clock Configuration Register */
+#define ACSR           __REG(0x41340004)       /* Application Subsystem Clock Status Register */
+#define AICSR          __REG(0x41340008)       /* Application Subsystem Interrupt Control/Status Register */
+#define CKENA          __REG(0x4134000C)       /* A Clock Enable Register */
+#define CKENB          __REG(0x41340010)       /* B Clock Enable Register */
+#define CKENC          __REG(0x41340024)       /* C Clock Enable Register */
+#define AC97_DIV       __REG(0x41340014)       /* AC97 clock divisor value register */
+
+#endif /* __ASM_ARCH_PXA3XX_REGS_H */
index 4bd7da1f8657323af93fb6183d9604e994ed5c49..c29a7f0fa1b0987dde2901e3ca74c7331084839d 100644 (file)
@@ -21,8 +21,8 @@
 #include <linux/clk.h>
 #include <linux/usb.h>
 #include <linux/usb/otg.h>
+#include <linux/soc/pxa/cpu.h>
 
-#include <mach/hardware.h>
 #include "regs-u2d.h"
 #include <linux/platform_data/usb-pxa3xx-ulpi.h>
 
index 560160682df6e1bfb228ab56707b51c62ff14584..979642aa7ffe01e29f516ac9c15d3ceb7797af8e 100644 (file)
 #include <linux/syscore_ops.h>
 #include <linux/platform_data/i2c-pxa.h>
 #include <linux/platform_data/mmp_dma.h>
+#include <linux/soc/pxa/cpu.h>
+#include <linux/clk/pxa.h>
 
 #include <asm/mach/map.h>
 #include <asm/suspend.h>
-#include <mach/hardware.h>
-#include <mach/pxa3xx-regs.h>
-#include <mach/reset.h>
+#include "pxa3xx-regs.h"
+#include "reset.h"
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include "pm.h"
-#include <mach/dma.h>
-#include <mach/smemc.h>
-#include <mach/irqs.h>
+#include "addr-map.h"
+#include "smemc.h"
+#include "irqs.h"
 
 #include "generic.h"
 #include "devices.h"
@@ -51,6 +52,10 @@ extern void __init pxa_dt_irq_init(int (*fn)(struct irq_data *, unsigned int));
 #define NDCR_ND_ARB_EN         (1 << 12)
 #define NDCR_ND_ARB_CNTL       (1 << 19)
 
+#define CKEN_BOOT              11      /* < Boot rom clock enable */
+#define CKEN_TPM               19      /* < TPM clock enable */
+#define CKEN_HSIO2             41      /* < HSIO2 clock enable */
+
 #ifdef CONFIG_PM
 
 #define ISRAM_START    0x5c000000
@@ -463,7 +468,7 @@ static int __init pxa3xx_init(void)
 
        if (cpu_is_pxa3xx()) {
 
-               reset_status = ARSR;
+               pxa_register_wdt(ARSR);
 
                /*
                 * clear RDH bit every time after reset
index 6d4502aa9d067d38327f8ac944d8ff6365c46a24..81825f7ad258ea17e5a231e9cc44b6ad016c7ceb 100644 (file)
@@ -2,8 +2,8 @@
 #ifndef __MACH_PXA3XX_H        
 #define __MACH_PXA3XX_H
 
-#include <mach/hardware.h>
-#include <mach/pxa3xx-regs.h>
-#include <mach/irqs.h>
+#include "addr-map.h"
+#include "pxa3xx-regs.h"
+#include "irqs.h"
 
 #endif /* __MACH_PXA3XX_H */
index bf91de4267e58b9166d81a920091b0e243e47979..b9021a40cbd17c9e2398eccb6145577d9721e2a3 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/irq.h>
 #include <linux/gpio-pxa.h>
 #include <linux/platform_device.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "pxa930.h"
 
diff --git a/arch/arm/mach-pxa/regs-ost.h b/arch/arm/mach-pxa/regs-ost.h
new file mode 100644 (file)
index 0000000..c8001cf
--- /dev/null
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_MACH_REGS_OST_H
+#define __ASM_MACH_REGS_OST_H
+
+#include "pxa-regs.h"
+
+/*
+ * OS Timer & Match Registers
+ */
+#define OST_PHYS       0x40A00000
+#define OST_LEN                0x00000020
+
+#define OSMR0          io_p2v(0x40A00000)  /* */
+#define OSMR1          io_p2v(0x40A00004)  /* */
+#define OSMR2          io_p2v(0x40A00008)  /* */
+#define OSMR3          io_p2v(0x40A0000C)  /* */
+#define OSMR4          io_p2v(0x40A00080)  /* */
+#define OSCR           io_p2v(0x40A00010)  /* OS Timer Counter Register */
+#define OSCR4          io_p2v(0x40A00040)  /* OS Timer Counter Register */
+#define OMCR4          io_p2v(0x40A000C0)  /* */
+#define OSSR           io_p2v(0x40A00014)  /* OS Timer Status Register */
+#define OWER           io_p2v(0x40A00018)  /* OS Timer Watchdog Enable Register */
+#define OIER           io_p2v(0x40A0001C)  /* OS Timer Interrupt Enable Register */
+
+#define OSSR_M3                (1 << 3)        /* Match status channel 3 */
+#define OSSR_M2                (1 << 2)        /* Match status channel 2 */
+#define OSSR_M1                (1 << 1)        /* Match status channel 1 */
+#define OSSR_M0                (1 << 0)        /* Match status channel 0 */
+
+#define OWER_WME       (1 << 0)        /* Watchdog Match Enable */
+
+#define OIER_E3                (1 << 3)        /* Interrupt enable channel 3 */
+#define OIER_E2                (1 << 2)        /* Interrupt enable channel 2 */
+#define OIER_E1                (1 << 1)        /* Interrupt enable channel 1 */
+#define OIER_E0                (1 << 0)        /* Interrupt enable channel 0 */
+
+#endif /* __ASM_MACH_REGS_OST_H */
index b1f9ff14e335937ada78be595f803683c05c826d..96255a0f595e91fdaa94b24fff574eccb16f5e2b 100644 (file)
@@ -2,7 +2,7 @@
 #ifndef __ASM_MACH_REGS_RTC_H
 #define __ASM_MACH_REGS_RTC_H
 
-#include <mach/hardware.h>
+#include "pxa-regs.h"
 
 /*
  * Real Time Clock
index fe4c80ad87ec5ffb87df61dce4d90b7aa45b1cd9..ab517ba62c9af4a98d16d49e071e8f6d5bf923a9 100644 (file)
@@ -2,8 +2,6 @@
 #ifndef __ASM_ARCH_PXA3xx_U2D_H
 #define __ASM_ARCH_PXA3xx_U2D_H
 
-#include <mach/bitfield.h>
-
 /*
  * USB2 device controller registers and bits definitions
  */
diff --git a/arch/arm/mach-pxa/regs-uart.h b/arch/arm/mach-pxa/regs-uart.h
new file mode 100644 (file)
index 0000000..490e9ca
--- /dev/null
@@ -0,0 +1,146 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_ARCH_REGS_UART_H
+#define __ASM_ARCH_REGS_UART_H
+
+#include "pxa-regs.h"
+
+/*
+ * UARTs
+ */
+
+/* Full Function UART (FFUART) */
+#define FFUART         FFRBR
+#define FFRBR          __REG(0x40100000)  /* Receive Buffer Register (read only) */
+#define FFTHR          __REG(0x40100000)  /* Transmit Holding Register (write only) */
+#define FFIER          __REG(0x40100004)  /* Interrupt Enable Register (read/write) */
+#define FFIIR          __REG(0x40100008)  /* Interrupt ID Register (read only) */
+#define FFFCR          __REG(0x40100008)  /* FIFO Control Register (write only) */
+#define FFLCR          __REG(0x4010000C)  /* Line Control Register (read/write) */
+#define FFMCR          __REG(0x40100010)  /* Modem Control Register (read/write) */
+#define FFLSR          __REG(0x40100014)  /* Line Status Register (read only) */
+#define FFMSR          __REG(0x40100018)  /* Modem Status Register (read only) */
+#define FFSPR          __REG(0x4010001C)  /* Scratch Pad Register (read/write) */
+#define FFISR          __REG(0x40100020)  /* Infrared Selection Register (read/write) */
+#define FFDLL          __REG(0x40100000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
+#define FFDLH          __REG(0x40100004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
+
+/* Bluetooth UART (BTUART) */
+#define BTUART         BTRBR
+#define BTRBR          __REG(0x40200000)  /* Receive Buffer Register (read only) */
+#define BTTHR          __REG(0x40200000)  /* Transmit Holding Register (write only) */
+#define BTIER          __REG(0x40200004)  /* Interrupt Enable Register (read/write) */
+#define BTIIR          __REG(0x40200008)  /* Interrupt ID Register (read only) */
+#define BTFCR          __REG(0x40200008)  /* FIFO Control Register (write only) */
+#define BTLCR          __REG(0x4020000C)  /* Line Control Register (read/write) */
+#define BTMCR          __REG(0x40200010)  /* Modem Control Register (read/write) */
+#define BTLSR          __REG(0x40200014)  /* Line Status Register (read only) */
+#define BTMSR          __REG(0x40200018)  /* Modem Status Register (read only) */
+#define BTSPR          __REG(0x4020001C)  /* Scratch Pad Register (read/write) */
+#define BTISR          __REG(0x40200020)  /* Infrared Selection Register (read/write) */
+#define BTDLL          __REG(0x40200000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
+#define BTDLH          __REG(0x40200004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
+
+/* Standard UART (STUART) */
+#define STUART         STRBR
+#define STRBR          __REG(0x40700000)  /* Receive Buffer Register (read only) */
+#define STTHR          __REG(0x40700000)  /* Transmit Holding Register (write only) */
+#define STIER          __REG(0x40700004)  /* Interrupt Enable Register (read/write) */
+#define STIIR          __REG(0x40700008)  /* Interrupt ID Register (read only) */
+#define STFCR          __REG(0x40700008)  /* FIFO Control Register (write only) */
+#define STLCR          __REG(0x4070000C)  /* Line Control Register (read/write) */
+#define STMCR          __REG(0x40700010)  /* Modem Control Register (read/write) */
+#define STLSR          __REG(0x40700014)  /* Line Status Register (read only) */
+#define STMSR          __REG(0x40700018)  /* Reserved */
+#define STSPR          __REG(0x4070001C)  /* Scratch Pad Register (read/write) */
+#define STISR          __REG(0x40700020)  /* Infrared Selection Register (read/write) */
+#define STDLL          __REG(0x40700000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
+#define STDLH          __REG(0x40700004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
+
+/* Hardware UART (HWUART) */
+#define HWUART         HWRBR
+#define HWRBR          __REG(0x41600000)  /* Receive Buffer Register (read only) */
+#define HWTHR          __REG(0x41600000)  /* Transmit Holding Register (write only) */
+#define HWIER          __REG(0x41600004)  /* Interrupt Enable Register (read/write) */
+#define HWIIR          __REG(0x41600008)  /* Interrupt ID Register (read only) */
+#define HWFCR          __REG(0x41600008)  /* FIFO Control Register (write only) */
+#define HWLCR          __REG(0x4160000C)  /* Line Control Register (read/write) */
+#define HWMCR          __REG(0x41600010)  /* Modem Control Register (read/write) */
+#define HWLSR          __REG(0x41600014)  /* Line Status Register (read only) */
+#define HWMSR          __REG(0x41600018)  /* Modem Status Register (read only) */
+#define HWSPR          __REG(0x4160001C)  /* Scratch Pad Register (read/write) */
+#define HWISR          __REG(0x41600020)  /* Infrared Selection Register (read/write) */
+#define HWFOR          __REG(0x41600024)  /* Receive FIFO Occupancy Register (read only) */
+#define HWABR          __REG(0x41600028)  /* Auto-Baud Control Register (read/write) */
+#define HWACR          __REG(0x4160002C)  /* Auto-Baud Count Register (read only) */
+#define HWDLL          __REG(0x41600000)  /* Divisor Latch Low Register (DLAB = 1) (read/write) */
+#define HWDLH          __REG(0x41600004)  /* Divisor Latch High Register (DLAB = 1) (read/write) */
+
+#define IER_DMAE       (1 << 7)        /* DMA Requests Enable */
+#define IER_UUE                (1 << 6)        /* UART Unit Enable */
+#define IER_NRZE       (1 << 5)        /* NRZ coding Enable */
+#define IER_RTIOE      (1 << 4)        /* Receiver Time Out Interrupt Enable */
+#define IER_MIE                (1 << 3)        /* Modem Interrupt Enable */
+#define IER_RLSE       (1 << 2)        /* Receiver Line Status Interrupt Enable */
+#define IER_TIE                (1 << 1)        /* Transmit Data request Interrupt Enable */
+#define IER_RAVIE      (1 << 0)        /* Receiver Data Available Interrupt Enable */
+
+#define IIR_FIFOES1    (1 << 7)        /* FIFO Mode Enable Status */
+#define IIR_FIFOES0    (1 << 6)        /* FIFO Mode Enable Status */
+#define IIR_TOD                (1 << 3)        /* Time Out Detected */
+#define IIR_IID2       (1 << 2)        /* Interrupt Source Encoded */
+#define IIR_IID1       (1 << 1)        /* Interrupt Source Encoded */
+#define IIR_IP         (1 << 0)        /* Interrupt Pending (active low) */
+
+#define FCR_ITL2       (1 << 7)        /* Interrupt Trigger Level */
+#define FCR_ITL1       (1 << 6)        /* Interrupt Trigger Level */
+#define FCR_RESETTF    (1 << 2)        /* Reset Transmitter FIFO */
+#define FCR_RESETRF    (1 << 1)        /* Reset Receiver FIFO */
+#define FCR_TRFIFOE    (1 << 0)        /* Transmit and Receive FIFO Enable */
+#define FCR_ITL_1      (0)
+#define FCR_ITL_8      (FCR_ITL1)
+#define FCR_ITL_16     (FCR_ITL2)
+#define FCR_ITL_32     (FCR_ITL2|FCR_ITL1)
+
+#define LCR_DLAB       (1 << 7)        /* Divisor Latch Access Bit */
+#define LCR_SB         (1 << 6)        /* Set Break */
+#define LCR_STKYP      (1 << 5)        /* Sticky Parity */
+#define LCR_EPS                (1 << 4)        /* Even Parity Select */
+#define LCR_PEN                (1 << 3)        /* Parity Enable */
+#define LCR_STB                (1 << 2)        /* Stop Bit */
+#define LCR_WLS1       (1 << 1)        /* Word Length Select */
+#define LCR_WLS0       (1 << 0)        /* Word Length Select */
+
+#define LSR_FIFOE      (1 << 7)        /* FIFO Error Status */
+#define LSR_TEMT       (1 << 6)        /* Transmitter Empty */
+#define LSR_TDRQ       (1 << 5)        /* Transmit Data Request */
+#define LSR_BI         (1 << 4)        /* Break Interrupt */
+#define LSR_FE         (1 << 3)        /* Framing Error */
+#define LSR_PE         (1 << 2)        /* Parity Error */
+#define LSR_OE         (1 << 1)        /* Overrun Error */
+#define LSR_DR         (1 << 0)        /* Data Ready */
+
+#define MCR_LOOP       (1 << 4)
+#define MCR_OUT2       (1 << 3)        /* force MSR_DCD in loopback mode */
+#define MCR_OUT1       (1 << 2)        /* force MSR_RI in loopback mode */
+#define MCR_RTS                (1 << 1)        /* Request to Send */
+#define MCR_DTR                (1 << 0)        /* Data Terminal Ready */
+
+#define MSR_DCD                (1 << 7)        /* Data Carrier Detect */
+#define MSR_RI         (1 << 6)        /* Ring Indicator */
+#define MSR_DSR                (1 << 5)        /* Data Set Ready */
+#define MSR_CTS                (1 << 4)        /* Clear To Send */
+#define MSR_DDCD       (1 << 3)        /* Delta Data Carrier Detect */
+#define MSR_TERI       (1 << 2)        /* Trailing Edge Ring Indicator */
+#define MSR_DDSR       (1 << 1)        /* Delta Data Set Ready */
+#define MSR_DCTS       (1 << 0)        /* Delta Clear To Send */
+
+/*
+ * IrSR (Infrared Selection Register)
+ */
+#define STISR_RXPL      (1 << 4)        /* Receive Data Polarity */
+#define STISR_TXPL      (1 << 3)        /* Transmit Data Polarity */
+#define STISR_XMODE     (1 << 2)        /* Transmit Pulse Width Select */
+#define STISR_RCVEIR    (1 << 1)        /* Receiver SIR Enable */
+#define STISR_XMITIR    (1 << 0)        /* Transmitter SIR Enable */
+
+#endif /* __ASM_ARCH_REGS_UART_H */
index af78405aa4e976b1cdc5a94a8ba7212f51c465af..f0be90573ad3248cbfe7fc1e0acd6fd361cc8ea8 100644 (file)
@@ -7,12 +7,9 @@
 #include <asm/proc-fns.h>
 #include <asm/system_misc.h>
 
-#include <mach/regs-ost.h>
-#include <mach/reset.h>
-#include <mach/smemc.h>
-
-unsigned int reset_status;
-EXPORT_SYMBOL(reset_status);
+#include "regs-ost.h"
+#include "reset.h"
+#include "smemc.h"
 
 static void do_hw_reset(void);
 
diff --git a/arch/arm/mach-pxa/reset.h b/arch/arm/mach-pxa/reset.h
new file mode 100644 (file)
index 0000000..963dd19
--- /dev/null
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_ARCH_RESET_H
+#define __ASM_ARCH_RESET_H
+
+#define RESET_STATUS_HARDWARE  (1 << 0)        /* Hardware Reset */
+#define RESET_STATUS_WATCHDOG  (1 << 1)        /* Watchdog Reset */
+#define RESET_STATUS_LOWPOWER  (1 << 2)        /* Low Power/Sleep Exit */
+#define RESET_STATUS_GPIO      (1 << 3)        /* GPIO Reset */
+#define RESET_STATUS_ALL       (0xf)
+
+extern void clear_reset_status(unsigned int mask);
+extern void pxa_register_wdt(unsigned int reset_status);
+
+/**
+ * init_gpio_reset() - register GPIO as reset generator
+ * @gpio: gpio nr
+ * @output: set gpio as output instead of input during normal work
+ * @level: output level
+ */
+extern int init_gpio_reset(int gpio, int output, int level);
+
+#endif /* __ASM_ARCH_RESET_H */
index 83cfbb882a2d48178ae79eb6c4df8768ee1f42c3..a829baf8d92261442c50860661e6080151548dd7 100644 (file)
@@ -24,7 +24,7 @@
 
 #include <asm/mach-types.h>
 #include "pm.h"
-#include <mach/pxa2xx-regs.h>
+#include "pxa2xx-regs.h"
 #include "regs-rtc.h"
 #include "sharpsl_pm.h"
 
index 6c5b3ffd2cd3f53900a4106696566dee2a2b9c5f..d58cf52e3848fa6b707a0fe2002c8766245faff9 100644 (file)
 
 #include <linux/linkage.h>
 #include <asm/assembler.h>
-#include <mach/hardware.h>
-#include <mach/smemc.h>
-#include <mach/pxa2xx-regs.h>
+#include "smemc.h"
+#include "pxa2xx-regs.h"
 
 #define MDREFR_KDIV    0x200a4000      // all banks
 #define CCCR_SLEEP     0x00000107      // L=7 2N=2 A=0 PPDIS=0 CPDIS=0
-
+#define CCCR_N_MASK     0x00000380
+#define CCCR_M_MASK     0x00000060
+#define CCCR_L_MASK     0x0000001f
                .text
 
 #ifdef CONFIG_PXA3xx
index 32e82cc92ea57de64b5d8152308c8e80ca062381..2d2a321d82f8169c3370f93bb859f19c3019bf64 100644 (file)
@@ -8,9 +8,10 @@
 #include <linux/init.h>
 #include <linux/io.h>
 #include <linux/syscore_ops.h>
+#include <linux/soc/pxa/cpu.h>
 
-#include <mach/hardware.h>
-#include <mach/smemc.h>
+#include "smemc.h"
+#include <linux/soc/pxa/smemc.h>
 
 #ifdef CONFIG_PM
 static unsigned long msc[2];
@@ -70,3 +71,11 @@ static int __init smemc_init(void)
 }
 subsys_initcall(smemc_init);
 #endif
+
+static const unsigned int df_clkdiv[4] = { 1, 2, 4, 1 };
+unsigned int pxa3xx_smemc_get_memclkdiv(void)
+{
+       unsigned long memclkcfg = __raw_readl(MEMCLKCFG);
+
+       return  df_clkdiv[(memclkcfg >> 16) & 0x3];
+}
diff --git a/arch/arm/mach-pxa/smemc.h b/arch/arm/mach-pxa/smemc.h
new file mode 100644 (file)
index 0000000..9b2453a
--- /dev/null
@@ -0,0 +1,72 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Static memory controller register definitions for PXA CPUs
+ *
+ * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#ifndef __SMEMC_REGS_H
+#define __SMEMC_REGS_H
+
+#define PXA2XX_SMEMC_BASE      0x48000000
+#define PXA3XX_SMEMC_BASE      0x4a000000
+#define SMEMC_VIRT             IOMEM(0xf6000000)
+
+#define MDCNFG         (SMEMC_VIRT + 0x00)  /* SDRAM Configuration Register 0 */
+#define MDREFR         (SMEMC_VIRT + 0x04)  /* SDRAM Refresh Control Register */
+#define MSC0           (SMEMC_VIRT + 0x08)  /* Static Memory Control Register 0 */
+#define MSC1           (SMEMC_VIRT + 0x0C)  /* Static Memory Control Register 1 */
+#define MSC2           (SMEMC_VIRT + 0x10)  /* Static Memory Control Register 2 */
+#define MECR           (SMEMC_VIRT + 0x14)  /* Expansion Memory (PCMCIA/Compact Flash) Bus Configuration */
+#define SXLCR          (SMEMC_VIRT + 0x18)  /* LCR value to be written to SDRAM-Timing Synchronous Flash */
+#define SXCNFG         (SMEMC_VIRT + 0x1C)  /* Synchronous Static Memory Control Register */
+#define SXMRS          (SMEMC_VIRT + 0x24)  /* MRS value to be written to Synchronous Flash or SMROM */
+#define MCMEM0         (SMEMC_VIRT + 0x28)  /* Card interface Common Memory Space Socket 0 Timing */
+#define MCMEM1         (SMEMC_VIRT + 0x2C)  /* Card interface Common Memory Space Socket 1 Timing */
+#define MCATT0         (SMEMC_VIRT + 0x30)  /* Card interface Attribute Space Socket 0 Timing Configuration */
+#define MCATT1         (SMEMC_VIRT + 0x34)  /* Card interface Attribute Space Socket 1 Timing Configuration */
+#define MCIO0          (SMEMC_VIRT + 0x38)  /* Card interface I/O Space Socket 0 Timing Configuration */
+#define MCIO1          (SMEMC_VIRT + 0x3C)  /* Card interface I/O Space Socket 1 Timing Configuration */
+#define MDMRS          (SMEMC_VIRT + 0x40)  /* MRS value to be written to SDRAM */
+#define BOOT_DEF       (SMEMC_VIRT + 0x44)  /* Read-Only Boot-Time Register. Contains BOOT_SEL and PKG_SEL */
+#define MEMCLKCFG      (SMEMC_VIRT + 0x68)  /* Clock Configuration */
+#define CSADRCFG0      (SMEMC_VIRT + 0x80)  /* Address Configuration Register for CS0 */
+#define CSADRCFG1      (SMEMC_VIRT + 0x84)  /* Address Configuration Register for CS1 */
+#define CSADRCFG2      (SMEMC_VIRT + 0x88)  /* Address Configuration Register for CS2 */
+#define CSADRCFG3      (SMEMC_VIRT + 0x8C)  /* Address Configuration Register for CS3 */
+#define CSMSADRCFG     (SMEMC_VIRT + 0xA0)  /* Chip Select Configuration Register */
+
+/*
+ * More handy macros for PCMCIA
+ *
+ * Arg is socket number
+ */
+#define MCMEM(s)       (SMEMC_VIRT + 0x28 + ((s)<<2))  /* Card interface Common Memory Space Socket s Timing */
+#define MCATT(s)       (SMEMC_VIRT + 0x30 + ((s)<<2))  /* Card interface Attribute Space Socket s Timing Configuration */
+#define MCIO(s)                (SMEMC_VIRT + 0x38 + ((s)<<2))  /* Card interface I/O Space Socket s Timing Configuration */
+
+/* MECR register defines */
+#define MECR_NOS       (1 << 0)        /* Number Of Sockets: 0 -> 1 sock, 1 -> 2 sock */
+#define MECR_CIT       (1 << 1)        /* Card Is There: 0 -> no card, 1 -> card inserted */
+
+#define MDCNFG_DE0     (1 << 0)        /* SDRAM Bank 0 Enable */
+#define MDCNFG_DE1     (1 << 1)        /* SDRAM Bank 1 Enable */
+#define MDCNFG_DE2     (1 << 16)       /* SDRAM Bank 2 Enable */
+#define MDCNFG_DE3     (1 << 17)       /* SDRAM Bank 3 Enable */
+
+#define MDREFR_K0DB4   (1 << 29)       /* SDCLK0 Divide by 4 Control/Status */
+#define MDREFR_K2FREE  (1 << 25)       /* SDRAM Free-Running Control */
+#define MDREFR_K1FREE  (1 << 24)       /* SDRAM Free-Running Control */
+#define MDREFR_K0FREE  (1 << 23)       /* SDRAM Free-Running Control */
+#define MDREFR_SLFRSH  (1 << 22)       /* SDRAM Self-Refresh Control/Status */
+#define MDREFR_APD     (1 << 20)       /* SDRAM/SSRAM Auto-Power-Down Enable */
+#define MDREFR_K2DB2   (1 << 19)       /* SDCLK2 Divide by 2 Control/Status */
+#define MDREFR_K2RUN   (1 << 18)       /* SDCLK2 Run Control/Status */
+#define MDREFR_K1DB2   (1 << 17)       /* SDCLK1 Divide by 2 Control/Status */
+#define MDREFR_K1RUN   (1 << 16)       /* SDCLK1 Run Control/Status */
+#define MDREFR_E1PIN   (1 << 15)       /* SDCKE1 Level Control/Status */
+#define MDREFR_K0DB2   (1 << 14)       /* SDCLK0 Divide by 2 Control/Status */
+#define MDREFR_K0RUN   (1 << 13)       /* SDCLK0 Run Control/Status */
+#define MDREFR_E0PIN   (1 << 12)       /* SDCKE0 Level Control/Status */
+
+#endif
index a648e7094e84e5ab44a41d7a078f90e584f1206c..dd88953adc9d2f202a098ee842b99816d0daf922 100644 (file)
 
 #include "pxa27x.h"
 #include "pxa27x-udc.h"
-#include <mach/reset.h>
+#include "reset.h"
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/video-pxafb.h>
-#include <mach/spitz.h>
+#include "spitz.h"
 #include "sharpsl_pm.h"
-#include <mach/smemc.h>
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
@@ -962,11 +962,42 @@ static void __init spitz_i2c_init(void)
 static inline void spitz_i2c_init(void) {}
 #endif
 
+static struct gpiod_lookup_table spitz_audio_gpio_table = {
+       .dev_id = "spitz-audio",
+       .table = {
+               GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_L - SPITZ_SCP_GPIO_BASE,
+                           "mute-l", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_R - SPITZ_SCP_GPIO_BASE,
+                           "mute-r", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("sharp-scoop.1", SPITZ_GPIO_MIC_BIAS - SPITZ_SCP2_GPIO_BASE,
+                           "mic", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
+static struct gpiod_lookup_table akita_audio_gpio_table = {
+       .dev_id = "spitz-audio",
+       .table = {
+               GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_L - SPITZ_SCP_GPIO_BASE,
+                           "mute-l", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("sharp-scoop.0", SPITZ_GPIO_MUTE_R - SPITZ_SCP_GPIO_BASE,
+                           "mute-r", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("i2c-max7310", AKITA_GPIO_MIC_BIAS - AKITA_IOEXP_GPIO_BASE,
+                           "mic", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 /******************************************************************************
  * Audio devices
  ******************************************************************************/
 static inline void spitz_audio_init(void)
 {
+       if (machine_is_akita())
+               gpiod_add_lookup_table(&akita_audio_gpio_table);
+       else
+               gpiod_add_lookup_table(&spitz_audio_gpio_table);
+
        platform_device_register_simple("spitz-audio", -1, NULL, 0);
 }
 
diff --git a/arch/arm/mach-pxa/spitz.h b/arch/arm/mach-pxa/spitz.h
new file mode 100644 (file)
index 0000000..04828d8
--- /dev/null
@@ -0,0 +1,185 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Hardware specific definitions for SL-Cx000 series of PDAs
+ *
+ * Copyright (c) 2005 Alexander Wykes
+ * Copyright (c) 2005 Richard Purdie
+ *
+ * Based on Sharp's 2.4 kernel patches
+ */
+#ifndef __ASM_ARCH_SPITZ_H
+#define __ASM_ARCH_SPITZ_H  1
+#endif
+
+#include "irqs.h" /* PXA_NR_BUILTIN_GPIO, PXA_GPIO_TO_IRQ */
+#include <linux/fb.h>
+
+/* Spitz/Akita GPIOs */
+
+#define SPITZ_GPIO_KEY_INT         (0) /* Key Interrupt */
+#define SPITZ_GPIO_RESET           (1)
+#define SPITZ_GPIO_nSD_DETECT      (9)
+#define SPITZ_GPIO_TP_INT          (11) /* Touch Panel interrupt */
+#define SPITZ_GPIO_AK_INT          (13) /* Remote Control */
+#define SPITZ_GPIO_ADS7846_CS      (14)
+#define SPITZ_GPIO_SYNC            (16)
+#define SPITZ_GPIO_MAX1111_CS      (20)
+#define SPITZ_GPIO_FATAL_BAT       (21)
+#define SPITZ_GPIO_HSYNC           (22)
+#define SPITZ_GPIO_nSD_CLK         (32)
+#define SPITZ_GPIO_USB_DEVICE      (35)
+#define SPITZ_GPIO_USB_HOST        (37)
+#define SPITZ_GPIO_USB_CONNECT     (41)
+#define SPITZ_GPIO_LCDCON_CS       (53)
+#define SPITZ_GPIO_nPCE            (54)
+#define SPITZ_GPIO_nSD_WP          (81)
+#define SPITZ_GPIO_ON_RESET        (89)
+#define SPITZ_GPIO_BAT_COVER       (90)
+#define SPITZ_GPIO_CF_CD           (94)
+#define SPITZ_GPIO_ON_KEY          (95)
+#define SPITZ_GPIO_SWA             (97)
+#define SPITZ_GPIO_SWB             (96)
+#define SPITZ_GPIO_CHRG_FULL       (101)
+#define SPITZ_GPIO_CO              (101)
+#define SPITZ_GPIO_CF_IRQ          (105)
+#define SPITZ_GPIO_AC_IN           (115)
+#define SPITZ_GPIO_HP_IN           (116)
+
+/* Spitz Only GPIOs */
+
+#define SPITZ_GPIO_CF2_IRQ         (106) /* CF slot1 Ready */
+#define SPITZ_GPIO_CF2_CD          (93)
+
+
+/* Spitz/Akita Keyboard Definitions */
+
+#define SPITZ_KEY_STROBE_NUM         (11)
+#define SPITZ_KEY_SENSE_NUM          (7)
+#define SPITZ_GPIO_G0_STROBE_BIT     0x0f800000
+#define SPITZ_GPIO_G1_STROBE_BIT     0x00100000
+#define SPITZ_GPIO_G2_STROBE_BIT     0x01000000
+#define SPITZ_GPIO_G3_STROBE_BIT     0x00041880
+#define SPITZ_GPIO_G0_SENSE_BIT      0x00021000
+#define SPITZ_GPIO_G1_SENSE_BIT      0x000000d4
+#define SPITZ_GPIO_G2_SENSE_BIT      0x08000000
+#define SPITZ_GPIO_G3_SENSE_BIT      0x00000000
+
+#define SPITZ_GPIO_KEY_STROBE0       88
+#define SPITZ_GPIO_KEY_STROBE1       23
+#define SPITZ_GPIO_KEY_STROBE2       24
+#define SPITZ_GPIO_KEY_STROBE3       25
+#define SPITZ_GPIO_KEY_STROBE4       26
+#define SPITZ_GPIO_KEY_STROBE5       27
+#define SPITZ_GPIO_KEY_STROBE6       52
+#define SPITZ_GPIO_KEY_STROBE7       103
+#define SPITZ_GPIO_KEY_STROBE8       107
+#define SPITZ_GPIO_KEY_STROBE9       108
+#define SPITZ_GPIO_KEY_STROBE10      114
+
+#define SPITZ_GPIO_KEY_SENSE0        12
+#define SPITZ_GPIO_KEY_SENSE1        17
+#define SPITZ_GPIO_KEY_SENSE2        91
+#define SPITZ_GPIO_KEY_SENSE3        34
+#define SPITZ_GPIO_KEY_SENSE4        36
+#define SPITZ_GPIO_KEY_SENSE5        38
+#define SPITZ_GPIO_KEY_SENSE6        39
+
+
+/* Spitz Scoop Device (No. 1) GPIOs */
+/* Suspend States in comments */
+#define SPITZ_SCP_LED_GREEN     SCOOP_GPCR_PA11  /* Keep */
+#define SPITZ_SCP_JK_B          SCOOP_GPCR_PA12  /* Keep */
+#define SPITZ_SCP_CHRG_ON       SCOOP_GPCR_PA13  /* Keep */
+#define SPITZ_SCP_MUTE_L        SCOOP_GPCR_PA14  /* Low */
+#define SPITZ_SCP_MUTE_R        SCOOP_GPCR_PA15  /* Low */
+#define SPITZ_SCP_CF_POWER      SCOOP_GPCR_PA16  /* Keep */
+#define SPITZ_SCP_LED_ORANGE    SCOOP_GPCR_PA17  /* Keep */
+#define SPITZ_SCP_JK_A          SCOOP_GPCR_PA18  /* Low */
+#define SPITZ_SCP_ADC_TEMP_ON   SCOOP_GPCR_PA19  /* Low */
+
+#define SPITZ_SCP_IO_DIR      (SPITZ_SCP_JK_B | SPITZ_SCP_CHRG_ON | \
+                               SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | \
+                               SPITZ_SCP_CF_POWER | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
+#define SPITZ_SCP_IO_OUT      (SPITZ_SCP_CHRG_ON | SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R)
+#define SPITZ_SCP_SUS_CLR     (SPITZ_SCP_MUTE_L | SPITZ_SCP_MUTE_R | SPITZ_SCP_JK_A | SPITZ_SCP_ADC_TEMP_ON)
+#define SPITZ_SCP_SUS_SET     0
+
+#define SPITZ_SCP_GPIO_BASE    (PXA_NR_BUILTIN_GPIO)
+#define SPITZ_GPIO_LED_GREEN   (SPITZ_SCP_GPIO_BASE + 0)
+#define SPITZ_GPIO_JK_B                (SPITZ_SCP_GPIO_BASE + 1)
+#define SPITZ_GPIO_CHRG_ON     (SPITZ_SCP_GPIO_BASE + 2)
+#define SPITZ_GPIO_MUTE_L      (SPITZ_SCP_GPIO_BASE + 3)
+#define SPITZ_GPIO_MUTE_R      (SPITZ_SCP_GPIO_BASE + 4)
+#define SPITZ_GPIO_CF_POWER    (SPITZ_SCP_GPIO_BASE + 5)
+#define SPITZ_GPIO_LED_ORANGE  (SPITZ_SCP_GPIO_BASE + 6)
+#define SPITZ_GPIO_JK_A                (SPITZ_SCP_GPIO_BASE + 7)
+#define SPITZ_GPIO_ADC_TEMP_ON (SPITZ_SCP_GPIO_BASE + 8)
+
+/* Spitz Scoop Device (No. 2) GPIOs */
+/* Suspend States in comments */
+#define SPITZ_SCP2_IR_ON           SCOOP_GPCR_PA11  /* High */
+#define SPITZ_SCP2_AKIN_PULLUP     SCOOP_GPCR_PA12  /* Keep */
+#define SPITZ_SCP2_RESERVED_1      SCOOP_GPCR_PA13  /* High */
+#define SPITZ_SCP2_RESERVED_2      SCOOP_GPCR_PA14  /* Low */
+#define SPITZ_SCP2_RESERVED_3      SCOOP_GPCR_PA15  /* Low */
+#define SPITZ_SCP2_RESERVED_4      SCOOP_GPCR_PA16  /* Low */
+#define SPITZ_SCP2_BACKLIGHT_CONT  SCOOP_GPCR_PA17  /* Low */
+#define SPITZ_SCP2_BACKLIGHT_ON    SCOOP_GPCR_PA18  /* Low */
+#define SPITZ_SCP2_MIC_BIAS        SCOOP_GPCR_PA19  /* Low */
+
+#define SPITZ_SCP2_IO_DIR (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1 | \
+                           SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
+                           SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
+
+#define SPITZ_SCP2_IO_OUT   (SPITZ_SCP2_AKIN_PULLUP | SPITZ_SCP2_RESERVED_1)
+#define SPITZ_SCP2_SUS_CLR  (SPITZ_SCP2_RESERVED_2 | SPITZ_SCP2_RESERVED_3 | SPITZ_SCP2_RESERVED_4 | \
+                             SPITZ_SCP2_BACKLIGHT_CONT | SPITZ_SCP2_BACKLIGHT_ON | SPITZ_SCP2_MIC_BIAS)
+#define SPITZ_SCP2_SUS_SET  (SPITZ_SCP2_IR_ON | SPITZ_SCP2_RESERVED_1)
+
+#define SPITZ_SCP2_GPIO_BASE           (PXA_NR_BUILTIN_GPIO + 12)
+#define SPITZ_GPIO_IR_ON               (SPITZ_SCP2_GPIO_BASE + 0)
+#define SPITZ_GPIO_AKIN_PULLUP         (SPITZ_SCP2_GPIO_BASE + 1)
+#define SPITZ_GPIO_RESERVED_1          (SPITZ_SCP2_GPIO_BASE + 2)
+#define SPITZ_GPIO_RESERVED_2          (SPITZ_SCP2_GPIO_BASE + 3)
+#define SPITZ_GPIO_RESERVED_3          (SPITZ_SCP2_GPIO_BASE + 4)
+#define SPITZ_GPIO_RESERVED_4          (SPITZ_SCP2_GPIO_BASE + 5)
+#define SPITZ_GPIO_BACKLIGHT_CONT      (SPITZ_SCP2_GPIO_BASE + 6)
+#define SPITZ_GPIO_BACKLIGHT_ON                (SPITZ_SCP2_GPIO_BASE + 7)
+#define SPITZ_GPIO_MIC_BIAS            (SPITZ_SCP2_GPIO_BASE + 8)
+
+/* Akita IO Expander GPIOs */
+#define AKITA_IOEXP_GPIO_BASE          (PXA_NR_BUILTIN_GPIO + 12)
+#define AKITA_GPIO_RESERVED_0          (AKITA_IOEXP_GPIO_BASE + 0)
+#define AKITA_GPIO_RESERVED_1          (AKITA_IOEXP_GPIO_BASE + 1)
+#define AKITA_GPIO_MIC_BIAS            (AKITA_IOEXP_GPIO_BASE + 2)
+#define AKITA_GPIO_BACKLIGHT_ON                (AKITA_IOEXP_GPIO_BASE + 3)
+#define AKITA_GPIO_BACKLIGHT_CONT      (AKITA_IOEXP_GPIO_BASE + 4)
+#define AKITA_GPIO_AKIN_PULLUP         (AKITA_IOEXP_GPIO_BASE + 5)
+#define AKITA_GPIO_IR_ON               (AKITA_IOEXP_GPIO_BASE + 6)
+#define AKITA_GPIO_RESERVED_7          (AKITA_IOEXP_GPIO_BASE + 7)
+
+/* Spitz IRQ Definitions */
+
+#define SPITZ_IRQ_GPIO_KEY_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_KEY_INT)
+#define SPITZ_IRQ_GPIO_AC_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_AC_IN)
+#define SPITZ_IRQ_GPIO_AK_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_AK_INT)
+#define SPITZ_IRQ_GPIO_HP_IN          PXA_GPIO_TO_IRQ(SPITZ_GPIO_HP_IN)
+#define SPITZ_IRQ_GPIO_TP_INT         PXA_GPIO_TO_IRQ(SPITZ_GPIO_TP_INT)
+#define SPITZ_IRQ_GPIO_SYNC           PXA_GPIO_TO_IRQ(SPITZ_GPIO_SYNC)
+#define SPITZ_IRQ_GPIO_ON_KEY         PXA_GPIO_TO_IRQ(SPITZ_GPIO_ON_KEY)
+#define SPITZ_IRQ_GPIO_SWA            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWA)
+#define SPITZ_IRQ_GPIO_SWB            PXA_GPIO_TO_IRQ(SPITZ_GPIO_SWB)
+#define SPITZ_IRQ_GPIO_BAT_COVER      PXA_GPIO_TO_IRQ(SPITZ_GPIO_BAT_COVER)
+#define SPITZ_IRQ_GPIO_FATAL_BAT      PXA_GPIO_TO_IRQ(SPITZ_GPIO_FATAL_BAT)
+#define SPITZ_IRQ_GPIO_CO             PXA_GPIO_TO_IRQ(SPITZ_GPIO_CO)
+#define SPITZ_IRQ_GPIO_CF_IRQ         PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_IRQ)
+#define SPITZ_IRQ_GPIO_CF_CD          PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF_CD)
+#define SPITZ_IRQ_GPIO_CF2_IRQ        PXA_GPIO_TO_IRQ(SPITZ_GPIO_CF2_IRQ)
+#define SPITZ_IRQ_GPIO_nSD_INT        PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_INT)
+#define SPITZ_IRQ_GPIO_nSD_DETECT     PXA_GPIO_TO_IRQ(SPITZ_GPIO_nSD_DETECT)
+
+/*
+ * Shared data structures
+ */
+extern struct platform_device spitzssp_device;
+extern struct sharpsl_charger_machinfo spitz_pm_machinfo;
index 25a1f8c5a7382d505207f12b7f0b07e548c32f54..6689b67f9ce5ad400a66f1f6f3cfca9acb408ac9 100644 (file)
@@ -18,9 +18,8 @@
 
 #include <asm/irq.h>
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 
-#include <mach/spitz.h>
+#include "spitz.h"
 #include "pxa27x.h"
 #include "sharpsl_pm.h"
 
index eab1645bb4adb93a37108dc30f6c335dc75f31e1..938310b708a024e66060bbbb8af67fe131e92b0b 100644 (file)
@@ -11,9 +11,8 @@
 
 #include <linux/linkage.h>
 #include <asm/assembler.h>
-#include <mach/hardware.h>
 
-#include <mach/pxa2xx-regs.h>
+#include "pxa2xx-regs.h"
 
                .text
 
index 431709725d02bbd5878502f5f17b147e8fa0c341..6af8bc4048253acc5e1ae1589773a79dbf9f5474 100644 (file)
 #include <asm/mach-types.h>
 
 #include "pxa25x.h"
-#include <mach/reset.h>
+#include "reset.h"
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include "udc.h"
 #include "tosa_bt.h"
-#include <mach/audio.h>
-#include <mach/smemc.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "smemc.h"
 
 #include <asm/mach/arch.h>
-#include <mach/tosa.h>
+#include "tosa.h"
 
 #include <asm/hardware/scoop.h>
 #include <asm/mach/sharpsl_param.h>
@@ -296,9 +296,9 @@ static struct gpiod_lookup_table tosa_mci_gpio_table = {
        .table = {
                GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_nSD_DETECT,
                            "cd", GPIO_ACTIVE_LOW),
-               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_SD_WP,
+               GPIO_LOOKUP("sharp-scoop.0", TOSA_GPIO_SD_WP - TOSA_SCOOP_GPIO_BASE,
                            "wp", GPIO_ACTIVE_LOW),
-               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_PWR_ON,
+               GPIO_LOOKUP("sharp-scoop.0", TOSA_GPIO_PWR_ON - TOSA_SCOOP_GPIO_BASE,
                            "power", GPIO_ACTIVE_HIGH),
                { },
        },
@@ -616,6 +616,22 @@ static struct resource tc6393xb_resources[] = {
        },
 };
 
+static struct gpiod_lookup_table tosa_battery_gpio_table = {
+       .dev_id = "wm97xx-battery",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_BAT0_CRG,
+                           "main battery full", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_BAT1_CRG,
+                           "jacket battery full", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_BAT0_LOW,
+                           "main battery low", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_BAT1_LOW,
+                           "jacket battery low", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("gpio-pxa", TOSA_GPIO_JACKET_DETECT,
+                           "jacket detect", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
 
 static int tosa_tc6393xb_enable(struct platform_device *dev)
 {
@@ -709,31 +725,6 @@ static struct tmio_nand_data tosa_tc6393xb_nand_config = {
        .part_parsers = probes,
 };
 
-static int tosa_tc6393xb_setup(struct platform_device *dev)
-{
-       int rc;
-
-       rc = gpio_request(TOSA_GPIO_CARD_VCC_ON, "CARD_VCC_ON");
-       if (rc)
-               goto err_req;
-
-       rc = gpio_direction_output(TOSA_GPIO_CARD_VCC_ON, 1);
-       if (rc)
-               goto err_dir;
-
-       return rc;
-
-err_dir:
-       gpio_free(TOSA_GPIO_CARD_VCC_ON);
-err_req:
-       return rc;
-}
-
-static void tosa_tc6393xb_teardown(struct platform_device *dev)
-{
-       gpio_free(TOSA_GPIO_CARD_VCC_ON);
-}
-
 #ifdef CONFIG_MFD_TC6393XB
 static struct fb_videomode tosa_tc6393xb_lcd_mode[] = {
        {
@@ -778,9 +769,6 @@ static struct tc6393xb_platform_data tosa_tc6393xb_data = {
        .scr_gper       = 0x3300,
 
        .irq_base       = IRQ_BOARD_START,
-       .gpio_base      = TOSA_TC6393XB_GPIO_BASE,
-       .setup          = tosa_tc6393xb_setup,
-       .teardown       = tosa_tc6393xb_teardown,
 
        .enable         = tosa_tc6393xb_enable,
        .disable        = tosa_tc6393xb_disable,
@@ -821,26 +809,6 @@ static struct pxa2xx_spi_controller pxa_ssp_master_info = {
        .num_chipselect = 1,
 };
 
-static struct gpiod_lookup_table tosa_lcd_gpio_table = {
-       .dev_id = "spi2.0",
-       .table = {
-               GPIO_LOOKUP("tc6393xb",
-                           TOSA_GPIO_TG_ON - TOSA_TC6393XB_GPIO_BASE,
-                           "tg #pwr", GPIO_ACTIVE_HIGH),
-               { },
-       },
-};
-
-static struct gpiod_lookup_table tosa_lcd_bl_gpio_table = {
-       .dev_id = "i2c-tosa-bl",
-       .table = {
-               GPIO_LOOKUP("tc6393xb",
-                           TOSA_GPIO_BL_C20MA - TOSA_TC6393XB_GPIO_BASE,
-                           "backlight", GPIO_ACTIVE_HIGH),
-               { },
-       },
-};
-
 static struct spi_board_info spi_board_info[] __initdata = {
        {
                .modalias       = "tosa-lcd",
@@ -943,6 +911,8 @@ static void __init tosa_init(void)
        /* enable batt_fault */
        PMCR = 0x01;
 
+       gpiod_add_lookup_table(&tosa_battery_gpio_table);
+
        gpiod_add_lookup_table(&tosa_mci_gpio_table);
        pxa_set_mci_info(&tosa_mci_platform_data);
        pxa_set_ficp_info(&tosa_ficp_platform_data);
@@ -951,8 +921,6 @@ static void __init tosa_init(void)
        platform_scoop_config = &tosa_pcmcia_config;
 
        pxa2xx_set_spi_info(2, &pxa_ssp_master_info);
-       gpiod_add_lookup_table(&tosa_lcd_gpio_table);
-       gpiod_add_lookup_table(&tosa_lcd_bl_gpio_table);
        spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info));
 
        clk_add_alias("CLK_CK3P6MI", tc6393xb_device.name, "GPIO11_CLK", NULL);
diff --git a/arch/arm/mach-pxa/tosa.h b/arch/arm/mach-pxa/tosa.h
new file mode 100644 (file)
index 0000000..3b3efa0
--- /dev/null
@@ -0,0 +1,165 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Hardware specific definitions for Sharp SL-C6000x series of PDAs
+ *
+ * Copyright (c) 2005 Dirk Opfer
+ *
+ * Based on Sharp's 2.4 kernel patches
+ */
+#ifndef _ASM_ARCH_TOSA_H_
+#define _ASM_ARCH_TOSA_H_ 1
+
+#include "irqs.h" /* PXA_NR_BUILTIN_GPIO */
+
+/*  TOSA Chip selects  */
+#define TOSA_LCDC_PHYS         PXA_CS4_PHYS
+/* Internel Scoop */
+#define TOSA_CF_PHYS           (PXA_CS2_PHYS + 0x00800000)
+/* Jacket Scoop */
+#define TOSA_SCOOP_PHYS        (PXA_CS5_PHYS + 0x00800000)
+
+#define TOSA_NR_IRQS           (IRQ_BOARD_START + TC6393XB_NR_IRQS)
+/*
+ * SCOOP2 internal GPIOs
+ */
+#define TOSA_SCOOP_GPIO_BASE           PXA_NR_BUILTIN_GPIO
+#define TOSA_SCOOP_PXA_VCORE1          SCOOP_GPCR_PA11
+#define TOSA_GPIO_TC6393XB_REST_IN     (TOSA_SCOOP_GPIO_BASE + 1)
+#define TOSA_GPIO_IR_POWERDWN          (TOSA_SCOOP_GPIO_BASE + 2)
+#define TOSA_GPIO_SD_WP                        (TOSA_SCOOP_GPIO_BASE + 3)
+#define TOSA_GPIO_PWR_ON               (TOSA_SCOOP_GPIO_BASE + 4)
+#define TOSA_SCOOP_AUD_PWR_ON          SCOOP_GPCR_PA16
+#define TOSA_GPIO_BT_RESET             (TOSA_SCOOP_GPIO_BASE + 6)
+#define TOSA_GPIO_BT_PWR_EN            (TOSA_SCOOP_GPIO_BASE + 7)
+#define TOSA_SCOOP_AC_IN_OL            SCOOP_GPCR_PA19
+
+/* GPIO Direction   1 : output mode / 0:input mode */
+#define TOSA_SCOOP_IO_DIR     (TOSA_SCOOP_PXA_VCORE1 | \
+               TOSA_SCOOP_AUD_PWR_ON)
+
+/*
+ * SCOOP2 jacket GPIOs
+ */
+#define TOSA_SCOOP_JC_GPIO_BASE                (PXA_NR_BUILTIN_GPIO + 12)
+#define TOSA_GPIO_BT_LED               (TOSA_SCOOP_JC_GPIO_BASE + 0)
+#define TOSA_GPIO_NOTE_LED             (TOSA_SCOOP_JC_GPIO_BASE + 1)
+#define TOSA_GPIO_CHRG_ERR_LED         (TOSA_SCOOP_JC_GPIO_BASE + 2)
+#define TOSA_GPIO_USB_PULLUP           (TOSA_SCOOP_JC_GPIO_BASE + 3)
+#define TOSA_GPIO_TC6393XB_SUSPEND     (TOSA_SCOOP_JC_GPIO_BASE + 4)
+#define TOSA_GPIO_TC6393XB_L3V_ON      (TOSA_SCOOP_JC_GPIO_BASE + 5)
+#define TOSA_SCOOP_JC_WLAN_DETECT      SCOOP_GPCR_PA17
+#define TOSA_GPIO_WLAN_LED             (TOSA_SCOOP_JC_GPIO_BASE + 7)
+#define TOSA_SCOOP_JC_CARD_LIMIT_SEL   SCOOP_GPCR_PA19
+
+/* GPIO Direction   1 : output mode / 0:input mode */
+#define TOSA_SCOOP_JC_IO_DIR (TOSA_SCOOP_JC_CARD_LIMIT_SEL)
+
+/*
+ * PXA GPIOs
+ */
+#define TOSA_GPIO_POWERON              (0)
+#define TOSA_GPIO_RESET                        (1)
+#define TOSA_GPIO_AC_IN                        (2)
+#define TOSA_GPIO_RECORD_BTN           (3)
+#define TOSA_GPIO_SYNC                 (4)     /* Cradle SYNC Button */
+#define TOSA_GPIO_USB_IN               (5)
+#define TOSA_GPIO_JACKET_DETECT                (7)
+#define TOSA_GPIO_nSD_DETECT           (9)
+#define TOSA_GPIO_nSD_INT              (10)
+#define TOSA_GPIO_TC6393XB_CLK         (11)
+#define TOSA_GPIO_BAT1_CRG             (12)
+#define TOSA_GPIO_CF_CD                        (13)
+#define TOSA_GPIO_BAT0_CRG             (14)
+#define TOSA_GPIO_TC6393XB_INT         (15)
+#define TOSA_GPIO_BAT0_LOW             (17)
+#define TOSA_GPIO_TC6393XB_RDY         (18)
+#define TOSA_GPIO_ON_RESET             (19)
+#define TOSA_GPIO_EAR_IN               (20)
+#define TOSA_GPIO_CF_IRQ               (21)    /* CF slot0 Ready */
+#define TOSA_GPIO_ON_KEY               (22)
+#define TOSA_GPIO_VGA_LINE             (27)
+#define TOSA_GPIO_TP_INT               (32)    /* Touch Panel pen down interrupt */
+#define TOSA_GPIO_JC_CF_IRQ            (36)    /* CF slot1 Ready */
+#define TOSA_GPIO_BAT_LOCKED           (38)    /* Battery locked */
+#define TOSA_GPIO_IRDA_TX              (47)
+#define TOSA_GPIO_TG_SPI_SCLK          (81)
+#define TOSA_GPIO_TG_SPI_CS            (82)
+#define TOSA_GPIO_TG_SPI_MOSI          (83)
+#define TOSA_GPIO_BAT1_LOW             (84)
+
+#define TOSA_GPIO_HP_IN                        GPIO_EAR_IN
+
+#define TOSA_GPIO_MAIN_BAT_LOW         GPIO_BAT0_LOW
+
+#define TOSA_KEY_STROBE_NUM            (11)
+#define TOSA_KEY_SENSE_NUM             (7)
+
+#define TOSA_GPIO_HIGH_STROBE_BIT      (0xfc000000)
+#define TOSA_GPIO_LOW_STROBE_BIT       (0x0000001f)
+#define TOSA_GPIO_ALL_SENSE_BIT                (0x00000fe0)
+#define TOSA_GPIO_ALL_SENSE_RSHIFT     (5)
+#define TOSA_GPIO_STROBE_BIT(a)                GPIO_bit(58+(a))
+#define TOSA_GPIO_SENSE_BIT(a)         GPIO_bit(69+(a))
+#define TOSA_GAFR_HIGH_STROBE_BIT      (0xfff00000)
+#define TOSA_GAFR_LOW_STROBE_BIT       (0x000003ff)
+#define TOSA_GAFR_ALL_SENSE_BIT                (0x00fffc00)
+#define TOSA_GPIO_KEY_SENSE(a)                 (69+(a))
+#define TOSA_GPIO_KEY_STROBE(a)                (58+(a))
+
+/*
+ * Interrupts
+ */
+#define TOSA_IRQ_GPIO_WAKEUP           PXA_GPIO_TO_IRQ(TOSA_GPIO_WAKEUP)
+#define TOSA_IRQ_GPIO_AC_IN            PXA_GPIO_TO_IRQ(TOSA_GPIO_AC_IN)
+#define TOSA_IRQ_GPIO_RECORD_BTN       PXA_GPIO_TO_IRQ(TOSA_GPIO_RECORD_BTN)
+#define TOSA_IRQ_GPIO_SYNC             PXA_GPIO_TO_IRQ(TOSA_GPIO_SYNC)
+#define TOSA_IRQ_GPIO_USB_IN           PXA_GPIO_TO_IRQ(TOSA_GPIO_USB_IN)
+#define TOSA_IRQ_GPIO_JACKET_DETECT    PXA_GPIO_TO_IRQ(TOSA_GPIO_JACKET_DETECT)
+#define TOSA_IRQ_GPIO_nSD_INT          PXA_GPIO_TO_IRQ(TOSA_GPIO_nSD_INT)
+#define TOSA_IRQ_GPIO_nSD_DETECT       PXA_GPIO_TO_IRQ(TOSA_GPIO_nSD_DETECT)
+#define TOSA_IRQ_GPIO_BAT1_CRG         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT1_CRG)
+#define TOSA_IRQ_GPIO_CF_CD            PXA_GPIO_TO_IRQ(TOSA_GPIO_CF_CD)
+#define TOSA_IRQ_GPIO_BAT0_CRG         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT0_CRG)
+#define TOSA_IRQ_GPIO_TC6393XB_INT     PXA_GPIO_TO_IRQ(TOSA_GPIO_TC6393XB_INT)
+#define TOSA_IRQ_GPIO_BAT0_LOW         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT0_LOW)
+#define TOSA_IRQ_GPIO_EAR_IN           PXA_GPIO_TO_IRQ(TOSA_GPIO_EAR_IN)
+#define TOSA_IRQ_GPIO_CF_IRQ           PXA_GPIO_TO_IRQ(TOSA_GPIO_CF_IRQ)
+#define TOSA_IRQ_GPIO_ON_KEY           PXA_GPIO_TO_IRQ(TOSA_GPIO_ON_KEY)
+#define TOSA_IRQ_GPIO_VGA_LINE         PXA_GPIO_TO_IRQ(TOSA_GPIO_VGA_LINE)
+#define TOSA_IRQ_GPIO_TP_INT           PXA_GPIO_TO_IRQ(TOSA_GPIO_TP_INT)
+#define TOSA_IRQ_GPIO_JC_CF_IRQ        PXA_GPIO_TO_IRQ(TOSA_GPIO_JC_CF_IRQ)
+#define TOSA_IRQ_GPIO_BAT_LOCKED       PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT_LOCKED)
+#define TOSA_IRQ_GPIO_BAT1_LOW         PXA_GPIO_TO_IRQ(TOSA_GPIO_BAT1_LOW)
+#define TOSA_IRQ_GPIO_KEY_SENSE(a)     PXA_GPIO_TO_IRQ(69+(a))
+
+#define TOSA_IRQ_GPIO_MAIN_BAT_LOW     PXA_GPIO_TO_IRQ(TOSA_GPIO_MAIN_BAT_LOW)
+
+#define TOSA_KEY_SYNC          KEY_102ND /* ??? */
+
+#ifndef CONFIG_TOSA_USE_EXT_KEYCODES
+#define TOSA_KEY_RECORD                KEY_YEN
+#define TOSA_KEY_ADDRESSBOOK   KEY_KATAKANA
+#define TOSA_KEY_CANCEL                KEY_ESC
+#define TOSA_KEY_CENTER                KEY_HIRAGANA
+#define TOSA_KEY_OK            KEY_HENKAN
+#define TOSA_KEY_CALENDAR      KEY_KATAKANAHIRAGANA
+#define TOSA_KEY_HOMEPAGE      KEY_HANGEUL
+#define TOSA_KEY_LIGHT         KEY_MUHENKAN
+#define TOSA_KEY_MENU          KEY_HANJA
+#define TOSA_KEY_FN            KEY_RIGHTALT
+#define TOSA_KEY_MAIL          KEY_ZENKAKUHANKAKU
+#else
+#define TOSA_KEY_RECORD                KEY_RECORD
+#define TOSA_KEY_ADDRESSBOOK   KEY_ADDRESSBOOK
+#define TOSA_KEY_CANCEL                KEY_CANCEL
+#define TOSA_KEY_CENTER                KEY_SELECT /* ??? */
+#define TOSA_KEY_OK            KEY_OK
+#define TOSA_KEY_CALENDAR      KEY_CALENDAR
+#define TOSA_KEY_HOMEPAGE      KEY_HOMEPAGE
+#define TOSA_KEY_LIGHT         KEY_KBDILLUMTOGGLE
+#define TOSA_KEY_MENU          KEY_MENU
+#define TOSA_KEY_FN            KEY_FN
+#define TOSA_KEY_MAIL          KEY_MAIL
+#endif
+
+#endif /* _ASM_ARCH_TOSA_H_ */
diff --git a/arch/arm/mach-pxa/trizeps4-pcmcia.c b/arch/arm/mach-pxa/trizeps4-pcmcia.c
new file mode 100644 (file)
index 0000000..25e3637
--- /dev/null
@@ -0,0 +1,200 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_trizeps4.c
+ *
+ * TRIZEPS PCMCIA specific routines.
+ *
+ * Author:     Jürgen Schindele
+ * Created:    20 02, 2006
+ * Copyright:  Jürgen Schindele
+ */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/gpio.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+
+#include <asm/mach-types.h>
+#include <asm/irq.h>
+
+#include "pxa2xx-regs.h"
+#include "trizeps4.h"
+
+#include <pcmcia/soc_common.h>
+
+extern void board_pcmcia_power(int power);
+
+static int trizeps_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       /* we dont have voltage/card/ready detection
+        * so we dont need interrupts for it
+        */
+       switch (skt->nr) {
+       case 0:
+               skt->stat[SOC_STAT_CD].gpio = GPIO_PCD;
+               skt->stat[SOC_STAT_CD].name = "cs0_cd";
+               skt->stat[SOC_STAT_RDY].gpio = GPIO_PRDY;
+               skt->stat[SOC_STAT_RDY].name = "cs0_rdy";
+               break;
+       default:
+               break;
+       }
+       /* release the reset of this card */
+       pr_debug("%s: sock %d irq %d\n", __func__, skt->nr, skt->socket.pci_irq);
+
+       return 0;
+}
+
+static unsigned long trizeps_pcmcia_status[2];
+
+static void trizeps_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                               struct pcmcia_state *state)
+{
+       unsigned short status = 0, change;
+       status = CFSR_readw();
+       change = (status ^ trizeps_pcmcia_status[skt->nr]) &
+                               ConXS_CFSR_BVD_MASK;
+       if (change) {
+               trizeps_pcmcia_status[skt->nr] = status;
+               if (status & ConXS_CFSR_BVD1) {
+                       /* enable_irq empty */
+               } else {
+                       /* disable_irq empty */
+               }
+       }
+
+       switch (skt->nr) {
+       case 0:
+               /* just fill in fix states */
+               state->bvd1   = (status & ConXS_CFSR_BVD1) ? 1 : 0;
+               state->bvd2   = (status & ConXS_CFSR_BVD2) ? 1 : 0;
+               state->vs_3v  = (status & ConXS_CFSR_VS1) ? 0 : 1;
+               state->vs_Xv  = (status & ConXS_CFSR_VS2) ? 0 : 1;
+               break;
+
+#ifndef CONFIG_MACH_TRIZEPS_CONXS
+       /* on ConXS we only have one slot. Second is inactive */
+       case 1:
+               state->detect = 0;
+               state->ready  = 0;
+               state->bvd1   = 0;
+               state->bvd2   = 0;
+               state->vs_3v  = 0;
+               state->vs_Xv  = 0;
+               break;
+
+#endif
+       }
+}
+
+static int trizeps_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                               const socket_state_t *state)
+{
+       int ret = 0;
+       unsigned short power = 0;
+
+       /* we do nothing here just check a bit */
+       switch (state->Vcc) {
+       case 0:  power &= 0xfc; break;
+       case 33: power |= ConXS_BCR_S0_VCC_3V3; break;
+       case 50:
+               pr_err("%s(): Vcc 5V not supported in socket\n", __func__);
+               break;
+       default:
+               pr_err("%s(): bad Vcc %u\n", __func__, state->Vcc);
+               ret = -1;
+       }
+
+       switch (state->Vpp) {
+       case 0:  power &= 0xf3; break;
+       case 33: power |= ConXS_BCR_S0_VPP_3V3; break;
+       case 120:
+               pr_err("%s(): Vpp 12V not supported in socket\n", __func__);
+               break;
+       default:
+               if (state->Vpp != state->Vcc) {
+                       pr_err("%s(): bad Vpp %u\n", __func__, state->Vpp);
+                       ret = -1;
+               }
+       }
+
+       switch (skt->nr) {
+       case 0:                  /* we only have 3.3V */
+               board_pcmcia_power(power);
+               break;
+
+#ifndef CONFIG_MACH_TRIZEPS_CONXS
+       /* on ConXS we only have one slot. Second is inactive */
+       case 1:
+#endif
+       default:
+               break;
+       }
+
+       return ret;
+}
+
+static void trizeps_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
+{
+       /* default is on */
+       board_pcmcia_power(0x9);
+}
+
+static void trizeps_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
+{
+       board_pcmcia_power(0x0);
+}
+
+static struct pcmcia_low_level trizeps_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+       .hw_init                = trizeps_pcmcia_hw_init,
+       .socket_state           = trizeps_pcmcia_socket_state,
+       .configure_socket       = trizeps_pcmcia_configure_socket,
+       .socket_init            = trizeps_pcmcia_socket_init,
+       .socket_suspend         = trizeps_pcmcia_socket_suspend,
+#ifdef CONFIG_MACH_TRIZEPS_CONXS
+       .nr                     = 1,
+#else
+       .nr                     = 2,
+#endif
+       .first                  = 0,
+};
+
+static struct platform_device *trizeps_pcmcia_device;
+
+static int __init trizeps_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_trizeps4() && !machine_is_trizeps4wl())
+               return -ENODEV;
+
+       trizeps_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!trizeps_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(trizeps_pcmcia_device,
+                       &trizeps_pcmcia_ops, sizeof(trizeps_pcmcia_ops));
+
+       if (ret == 0)
+               ret = platform_device_add(trizeps_pcmcia_device);
+
+       if (ret)
+               platform_device_put(trizeps_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit trizeps_pcmcia_exit(void)
+{
+       platform_device_unregister(trizeps_pcmcia_device);
+}
+
+fs_initcall(trizeps_pcmcia_init);
+module_exit(trizeps_pcmcia_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Juergen Schindele");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
index f76f8be0955448cef5c13a1650d49c441f11f9fb..716cce885379a958298479bd2e3eb514b6dbd3b0 100644 (file)
 #include <asm/mach/flash.h>
 
 #include "pxa27x.h"
-#include <mach/trizeps4.h>
-#include <mach/audio.h>
+#include "trizeps4.h"
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/irda-pxaficp.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
-#include <mach/smemc.h>
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
diff --git a/arch/arm/mach-pxa/trizeps4.h b/arch/arm/mach-pxa/trizeps4.h
new file mode 100644 (file)
index 0000000..b6c19d1
--- /dev/null
@@ -0,0 +1,166 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/************************************************************************
+ * Include file for TRIZEPS4 SoM and ConXS eval-board
+ * Copyright (c) Jürgen Schindele
+ * 2006
+ ************************************************************************/
+
+/*
+ * Includes/Defines
+ */
+#ifndef _TRIPEPS4_H_
+#define _TRIPEPS4_H_
+
+#include "addr-map.h"
+#include "irqs.h" /* PXA_GPIO_TO_IRQ */
+
+/* physical memory regions */
+#define TRIZEPS4_FLASH_PHYS    (PXA_CS0_PHYS)  /* Flash region */
+#define TRIZEPS4_DISK_PHYS     (PXA_CS1_PHYS)  /* Disk On Chip region */
+#define TRIZEPS4_ETH_PHYS      (PXA_CS2_PHYS)  /* Ethernet DM9000 region */
+#define TRIZEPS4_PIC_PHYS      (PXA_CS3_PHYS)  /* Logic chip on ConXS-Board */
+#define TRIZEPS4_SDRAM_BASE    0xa0000000      /* SDRAM region */
+
+                               /* Logic on ConXS-board CSFR register*/
+#define TRIZEPS4_CFSR_PHYS     (PXA_CS3_PHYS)
+                               /* Logic on ConXS-board BOCR register*/
+#define TRIZEPS4_BOCR_PHYS     (PXA_CS3_PHYS+0x02000000)
+                               /* Logic on ConXS-board IRCR register*/
+#define TRIZEPS4_IRCR_PHYS     (PXA_CS3_PHYS+0x02400000)
+                               /* Logic on ConXS-board UPSR register*/
+#define TRIZEPS4_UPSR_PHYS     (PXA_CS3_PHYS+0x02800000)
+                               /* Logic on ConXS-board DICR register*/
+#define TRIZEPS4_DICR_PHYS     (PXA_CS3_PHYS+0x03800000)
+
+/* virtual memory regions */
+#define TRIZEPS4_DISK_VIRT     0xF0000000      /* Disk On Chip region */
+
+#define TRIZEPS4_PIC_VIRT      0xF0100000      /* not used */
+#define TRIZEPS4_CFSR_VIRT     0xF0100000
+#define TRIZEPS4_BOCR_VIRT     0xF0200000
+#define TRIZEPS4_DICR_VIRT     0xF0300000
+#define TRIZEPS4_IRCR_VIRT     0xF0400000
+#define TRIZEPS4_UPSR_VIRT     0xF0500000
+
+/* size of flash */
+#define TRIZEPS4_FLASH_SIZE    0x02000000      /* Flash size 32 MB */
+
+/* Ethernet Controller Davicom DM9000 */
+#define GPIO_DM9000            101
+#define TRIZEPS4_ETH_IRQ       PXA_GPIO_TO_IRQ(GPIO_DM9000)
+
+/* UCB1400 audio / TS-controller */
+#define GPIO_UCB1400           1
+#define TRIZEPS4_UCB1400_IRQ   PXA_GPIO_TO_IRQ(GPIO_UCB1400)
+
+/* PCMCIA socket Compact Flash */
+#define GPIO_PCD               11              /* PCMCIA Card Detect */
+#define TRIZEPS4_CD_IRQ                PXA_GPIO_TO_IRQ(GPIO_PCD)
+#define GPIO_PRDY              13              /* READY / nINT */
+#define TRIZEPS4_READY_NINT    PXA_GPIO_TO_IRQ(GPIO_PRDY)
+
+/* MMC socket */
+#define GPIO_MMC_DET           12
+#define TRIZEPS4_MMC_IRQ       PXA_GPIO_TO_IRQ(GPIO_MMC_DET)
+
+/* DOC NAND chip */
+#define GPIO_DOC_LOCK           94
+#define GPIO_DOC_IRQ            93
+#define TRIZEPS4_DOC_IRQ        PXA_GPIO_TO_IRQ(GPIO_DOC_IRQ)
+
+/* SPI interface */
+#define GPIO_SPI                53
+#define TRIZEPS4_SPI_IRQ        PXA_GPIO_TO_IRQ(GPIO_SPI)
+
+/* LEDS using tx2 / rx2 */
+#define GPIO_SYS_BUSY_LED      46
+#define GPIO_HEARTBEAT_LED     47
+
+/* Off-module PIC on ConXS board */
+#define GPIO_PIC               0
+#define TRIZEPS4_PIC_IRQ       PXA_GPIO_TO_IRQ(GPIO_PIC)
+
+#ifdef CONFIG_MACH_TRIZEPS_CONXS
+/* for CONXS base board define these registers */
+#define CFSR_P2V(x)    ((x) - TRIZEPS4_CFSR_PHYS + TRIZEPS4_CFSR_VIRT)
+#define CFSR_V2P(x)    ((x) - TRIZEPS4_CFSR_VIRT + TRIZEPS4_CFSR_PHYS)
+
+#define BCR_P2V(x)     ((x) - TRIZEPS4_BOCR_PHYS + TRIZEPS4_BOCR_VIRT)
+#define BCR_V2P(x)     ((x) - TRIZEPS4_BOCR_VIRT + TRIZEPS4_BOCR_PHYS)
+
+#define DCR_P2V(x)     ((x) - TRIZEPS4_DICR_PHYS + TRIZEPS4_DICR_VIRT)
+#define DCR_V2P(x)     ((x) - TRIZEPS4_DICR_VIRT + TRIZEPS4_DICR_PHYS)
+
+#define IRCR_P2V(x)    ((x) - TRIZEPS4_IRCR_PHYS + TRIZEPS4_IRCR_VIRT)
+#define IRCR_V2P(x)    ((x) - TRIZEPS4_IRCR_VIRT + TRIZEPS4_IRCR_PHYS)
+
+#ifndef __ASSEMBLY__
+static inline unsigned short CFSR_readw(void)
+{
+       /* [Compact Flash Status Register] is read only */
+       return *((unsigned short *)CFSR_P2V(0x0C000000));
+}
+static inline void BCR_writew(unsigned short value)
+{
+       /* [Board Control Regsiter] is write only */
+       *((unsigned short *)BCR_P2V(0x0E000000)) = value;
+}
+static inline void DCR_writew(unsigned short value)
+{
+       /* [Display Control Register] is write only */
+       *((unsigned short *)DCR_P2V(0x0E000000)) = value;
+}
+static inline void IRCR_writew(unsigned short value)
+{
+       /* [InfraRed data Control Register] is write only */
+       *((unsigned short *)IRCR_P2V(0x0E000000)) = value;
+}
+#else
+#define ConXS_CFSR             CFSR_P2V(0x0C000000)
+#define ConXS_BCR              BCR_P2V(0x0E000000)
+#define ConXS_DCR              DCR_P2V(0x0F800000)
+#define ConXS_IRCR             IRCR_P2V(0x0F800000)
+#endif
+#else
+/* for whatever baseboard define function registers */
+static inline unsigned short CFSR_readw(void)
+{
+       return 0;
+}
+static inline void BCR_writew(unsigned short value)
+{
+       ;
+}
+static inline void DCR_writew(unsigned short value)
+{
+       ;
+}
+static inline void IRCR_writew(unsigned short value)
+{
+       ;
+}
+#endif /* CONFIG_MACH_TRIZEPS_CONXS */
+
+#define ConXS_CFSR_BVD_MASK    0x0003
+#define ConXS_CFSR_BVD1                (1 << 0)
+#define ConXS_CFSR_BVD2                (1 << 1)
+#define ConXS_CFSR_VS_MASK     0x000C
+#define ConXS_CFSR_VS1         (1 << 2)
+#define ConXS_CFSR_VS2         (1 << 3)
+#define ConXS_CFSR_VS_5V       (0x3 << 2)
+#define ConXS_CFSR_VS_3V3      0x0
+
+#define ConXS_BCR_S0_POW_EN0   (1 << 0)
+#define ConXS_BCR_S0_POW_EN1   (1 << 1)
+#define ConXS_BCR_L_DISP       (1 << 4)
+#define ConXS_BCR_CF_BUF_EN    (1 << 5)
+#define ConXS_BCR_CF_RESET     (1 << 7)
+#define ConXS_BCR_S0_VCC_3V3   0x1
+#define ConXS_BCR_S0_VCC_5V0   0x2
+#define ConXS_BCR_S0_VPP_12V   0x4
+#define ConXS_BCR_S0_VPP_3V3   0x8
+
+#define ConXS_IRCR_MODE                (1 << 0)
+#define ConXS_IRCR_SD          (1 << 1)
+
+#endif /* _TRIPEPS4_H_ */
diff --git a/arch/arm/mach-pxa/viper-pcmcia.c b/arch/arm/mach-pxa/viper-pcmcia.c
new file mode 100644 (file)
index 0000000..26599dc
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Viper/Zeus PCMCIA support
+ *   Copyright 2004 Arcom Control Systems
+ *
+ * Maintained by Marc Zyngier <maz@misterjones.org>
+ *
+ * Based on:
+ *   iPAQ h2200 PCMCIA support
+ *   Copyright 2004 Koen Kooi <koen@vestingbar.nl>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file COPYING in the main directory of this archive for
+ * more details.
+ */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/interrupt.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+
+#include <pcmcia/ss.h>
+#include <pcmcia/soc_common.h>
+
+#include <asm/irq.h>
+
+#include "viper-pcmcia.h"
+
+static struct platform_device *arcom_pcmcia_dev;
+
+static inline struct arcom_pcmcia_pdata *viper_get_pdata(void)
+{
+       return arcom_pcmcia_dev->dev.platform_data;
+}
+
+static int viper_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
+       unsigned long flags;
+
+       skt->stat[SOC_STAT_CD].gpio = pdata->cd_gpio;
+       skt->stat[SOC_STAT_CD].name = "PCMCIA_CD";
+       skt->stat[SOC_STAT_RDY].gpio = pdata->rdy_gpio;
+       skt->stat[SOC_STAT_RDY].name = "CF ready";
+
+       if (gpio_request(pdata->pwr_gpio, "CF power"))
+               goto err_request_pwr;
+
+       local_irq_save(flags);
+
+       if (gpio_direction_output(pdata->pwr_gpio, 0)) {
+               local_irq_restore(flags);
+               goto err_dir;
+       }
+
+       local_irq_restore(flags);
+
+       return 0;
+
+err_dir:
+       gpio_free(pdata->pwr_gpio);
+err_request_pwr:
+       dev_err(&arcom_pcmcia_dev->dev, "Failed to setup PCMCIA GPIOs\n");
+       return -1;
+}
+
+/*
+ * Release all resources.
+ */
+static void viper_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
+
+       gpio_free(pdata->pwr_gpio);
+}
+
+static void viper_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                     struct pcmcia_state *state)
+{
+       state->vs_3v  = 1; /* Can only apply 3.3V */
+       state->vs_Xv  = 0;
+}
+
+static int viper_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                                        const socket_state_t *state)
+{
+       struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
+
+       /* Silently ignore Vpp, output enable, speaker enable. */
+       pdata->reset(state->flags & SS_RESET);
+
+       /* Apply socket voltage */
+       switch (state->Vcc) {
+       case 0:
+               gpio_set_value(pdata->pwr_gpio, 0);
+               break;
+       case 33:
+               gpio_set_value(pdata->pwr_gpio, 1);
+               break;
+       default:
+               dev_err(&arcom_pcmcia_dev->dev, "Unsupported Vcc:%d\n", state->Vcc);
+               return -1;
+       }
+
+       return 0;
+}
+
+static struct pcmcia_low_level viper_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+       .hw_init                = viper_pcmcia_hw_init,
+       .hw_shutdown            = viper_pcmcia_hw_shutdown,
+       .socket_state           = viper_pcmcia_socket_state,
+       .configure_socket       = viper_pcmcia_configure_socket,
+       .nr                     = 1,
+};
+
+static struct platform_device *viper_pcmcia_device;
+
+static int viper_pcmcia_probe(struct platform_device *pdev)
+{
+       int ret;
+
+       /* I can't imagine more than one device, but you never know... */
+       if (arcom_pcmcia_dev)
+               return -EEXIST;
+
+       if (!pdev->dev.platform_data)
+               return -EINVAL;
+
+       viper_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!viper_pcmcia_device)
+               return -ENOMEM;
+
+       arcom_pcmcia_dev = pdev;
+
+       viper_pcmcia_device->dev.parent = &pdev->dev;
+
+       ret = platform_device_add_data(viper_pcmcia_device,
+                                      &viper_pcmcia_ops,
+                                      sizeof(viper_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(viper_pcmcia_device);
+
+       if (ret) {
+               platform_device_put(viper_pcmcia_device);
+               arcom_pcmcia_dev = NULL;
+       }
+
+       return ret;
+}
+
+static int viper_pcmcia_remove(struct platform_device *pdev)
+{
+       platform_device_unregister(viper_pcmcia_device);
+       arcom_pcmcia_dev = NULL;
+       return 0;
+}
+
+static struct platform_device_id viper_pcmcia_id_table[] = {
+       { .name = "viper-pcmcia", },
+       { .name = "zeus-pcmcia",  },
+       { },
+};
+
+static struct platform_driver viper_pcmcia_driver = {
+       .probe          = viper_pcmcia_probe,
+       .remove         = viper_pcmcia_remove,
+       .driver         = {
+               .name   = "arcom-pcmcia",
+       },
+       .id_table       = viper_pcmcia_id_table,
+};
+
+module_platform_driver(viper_pcmcia_driver);
+
+MODULE_DEVICE_TABLE(platform, viper_pcmcia_id_table);
+MODULE_LICENSE("GPL");
diff --git a/arch/arm/mach-pxa/viper-pcmcia.h b/arch/arm/mach-pxa/viper-pcmcia.h
new file mode 100644 (file)
index 0000000..a23b58a
--- /dev/null
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ARCOM_PCMCIA_H
+#define __ARCOM_PCMCIA_H
+
+struct arcom_pcmcia_pdata {
+       int     cd_gpio;
+       int     rdy_gpio;
+       int     pwr_gpio;
+       void    (*reset)(int state);
+};
+
+#endif
index 3aa34e9a15d3b01fe6e97c752d2ae09d33adac3c..5b43351ee84080eb761c987b0f7560d4860d19a4 100644 (file)
 #include <linux/syscore_ops.h>
 
 #include "pxa25x.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
-#include <mach/regs-uart.h>
-#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
+#include "regs-uart.h"
+#include "viper-pcmcia.h"
 #include "viper.h"
 
 #include <asm/setup.h>
@@ -851,7 +851,7 @@ static void __init viper_init_vcore_gpios(void)
                goto err_dir;
 
        /* c/should assume redboot set the correct level ??? */
-       viper_set_core_cpu_voltage(get_clk_frequency_khz(0), 1);
+       viper_set_core_cpu_voltage(pxa25x_get_clk_frequency_khz(0), 1);
 
        return;
 
@@ -998,6 +998,18 @@ static struct map_desc viper_io_desc[] __initdata = {
                .length  = 0x00800000,
                .type    = MT_DEVICE,
        },
+       {
+               /*
+                * ISA I/O space mapping:
+                * -  ports 0x0000-0x0fff are PC/104
+                * -  ports 0x10000-0x10fff are PCMCIA slot 1
+                * -  ports 0x11000-0x11fff are PC/104
+                */
+               .virtual = PCI_IO_VIRT_BASE,
+               .pfn     = __phys_to_pfn(0x30000000),
+               .length  = 0x1000,
+               .type    = MT_DEVICE,
+       },
 };
 
 static void __init viper_map_io(void)
diff --git a/arch/arm/mach-pxa/vpac270-pcmcia.c b/arch/arm/mach-pxa/vpac270-pcmcia.c
new file mode 100644 (file)
index 0000000..9fd990c
--- /dev/null
@@ -0,0 +1,137 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/drivers/pcmcia/pxa2xx_vpac270.c
+ *
+ * Driver for Voipac PXA270 PCMCIA and CF sockets
+ *
+ * Copyright (C) 2010-2011 Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#include <linux/gpio.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+
+#include <asm/mach-types.h>
+
+#include "vpac270.h"
+
+#include <pcmcia/soc_common.h>
+
+static struct gpio vpac270_pcmcia_gpios[] = {
+       { GPIO107_VPAC270_PCMCIA_PPEN,  GPIOF_INIT_LOW, "PCMCIA PPEN" },
+       { GPIO11_VPAC270_PCMCIA_RESET,  GPIOF_INIT_LOW, "PCMCIA Reset" },
+};
+
+static struct gpio vpac270_cf_gpios[] = {
+       { GPIO16_VPAC270_CF_RESET,      GPIOF_INIT_LOW, "CF Reset" },
+};
+
+static int vpac270_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
+{
+       int ret;
+
+       if (skt->nr == 0) {
+               ret = gpio_request_array(vpac270_pcmcia_gpios,
+                               ARRAY_SIZE(vpac270_pcmcia_gpios));
+
+               skt->stat[SOC_STAT_CD].gpio = GPIO84_VPAC270_PCMCIA_CD;
+               skt->stat[SOC_STAT_CD].name = "PCMCIA CD";
+               skt->stat[SOC_STAT_RDY].gpio = GPIO35_VPAC270_PCMCIA_RDY;
+               skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
+       } else {
+               ret = gpio_request_array(vpac270_cf_gpios,
+                               ARRAY_SIZE(vpac270_cf_gpios));
+
+               skt->stat[SOC_STAT_CD].gpio = GPIO17_VPAC270_CF_CD;
+               skt->stat[SOC_STAT_CD].name = "CF CD";
+               skt->stat[SOC_STAT_RDY].gpio = GPIO12_VPAC270_CF_RDY;
+               skt->stat[SOC_STAT_RDY].name = "CF Ready";
+       }
+
+       return ret;
+}
+
+static void vpac270_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
+{
+       if (skt->nr == 0)
+               gpio_free_array(vpac270_pcmcia_gpios,
+                                       ARRAY_SIZE(vpac270_pcmcia_gpios));
+       else
+               gpio_free_array(vpac270_cf_gpios,
+                                       ARRAY_SIZE(vpac270_cf_gpios));
+}
+
+static void vpac270_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
+                                       struct pcmcia_state *state)
+{
+       state->vs_3v  = 1;
+       state->vs_Xv  = 0;
+}
+
+static int
+vpac270_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
+                               const socket_state_t *state)
+{
+       if (skt->nr == 0) {
+               gpio_set_value(GPIO11_VPAC270_PCMCIA_RESET,
+                       (state->flags & SS_RESET));
+               gpio_set_value(GPIO107_VPAC270_PCMCIA_PPEN,
+                       !(state->Vcc == 33 || state->Vcc == 50));
+       } else {
+               gpio_set_value(GPIO16_VPAC270_CF_RESET,
+                       (state->flags & SS_RESET));
+       }
+
+       return 0;
+}
+
+static struct pcmcia_low_level vpac270_pcmcia_ops = {
+       .owner                  = THIS_MODULE,
+
+       .first                  = 0,
+       .nr                     = 2,
+
+       .hw_init                = vpac270_pcmcia_hw_init,
+       .hw_shutdown            = vpac270_pcmcia_hw_shutdown,
+
+       .socket_state           = vpac270_pcmcia_socket_state,
+       .configure_socket       = vpac270_pcmcia_configure_socket,
+};
+
+static struct platform_device *vpac270_pcmcia_device;
+
+static int __init vpac270_pcmcia_init(void)
+{
+       int ret;
+
+       if (!machine_is_vpac270())
+               return -ENODEV;
+
+       vpac270_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
+       if (!vpac270_pcmcia_device)
+               return -ENOMEM;
+
+       ret = platform_device_add_data(vpac270_pcmcia_device,
+               &vpac270_pcmcia_ops, sizeof(vpac270_pcmcia_ops));
+
+       if (!ret)
+               ret = platform_device_add(vpac270_pcmcia_device);
+
+       if (ret)
+               platform_device_put(vpac270_pcmcia_device);
+
+       return ret;
+}
+
+static void __exit vpac270_pcmcia_exit(void)
+{
+       platform_device_unregister(vpac270_pcmcia_device);
+}
+
+module_init(vpac270_pcmcia_init);
+module_exit(vpac270_pcmcia_exit);
+
+MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
+MODULE_DESCRIPTION("PCMCIA support for Voipac PXA270");
+MODULE_ALIAS("platform:pxa2xx-pcmcia");
+MODULE_LICENSE("GPL");
index 14505e83479e8d1cb5e884e6160d5b1e667f27fa..8f74bafcf1f9eb8c435f3a3de2197afb4af69570 100644 (file)
@@ -29,8 +29,8 @@
 #include <asm/mach/arch.h>
 
 #include "pxa27x.h"
-#include <mach/audio.h>
-#include <mach/vpac270.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "vpac270.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
diff --git a/arch/arm/mach-pxa/vpac270.h b/arch/arm/mach-pxa/vpac270.h
new file mode 100644 (file)
index 0000000..0cd094d
--- /dev/null
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * GPIOs and interrupts for Voipac PXA270
+ *
+ * Copyright (C) 2010
+ * Marek Vasut <marek.vasut@gmail.com>
+ */
+
+#ifndef _INCLUDE_VPAC270_H_
+#define _INCLUDE_VPAC270_H_
+
+#define        GPIO1_VPAC270_USER_BTN          1
+
+#define        GPIO15_VPAC270_LED_ORANGE       15
+
+#define        GPIO81_VPAC270_BKL_ON           81
+#define        GPIO83_VPAC270_NL_ON            83
+
+#define        GPIO52_VPAC270_SD_READONLY      52
+#define        GPIO53_VPAC270_SD_DETECT_N      53
+
+#define        GPIO84_VPAC270_PCMCIA_CD        84
+#define        GPIO35_VPAC270_PCMCIA_RDY       35
+#define        GPIO107_VPAC270_PCMCIA_PPEN     107
+#define        GPIO11_VPAC270_PCMCIA_RESET     11
+#define        GPIO17_VPAC270_CF_CD            17
+#define        GPIO12_VPAC270_CF_RDY           12
+#define        GPIO16_VPAC270_CF_RESET         16
+
+#define        GPIO41_VPAC270_UDC_DETECT       41
+
+#define        GPIO114_VPAC270_ETH_IRQ         114
+
+#define        GPIO36_VPAC270_IDE_IRQ          36
+
+#define        GPIO113_VPAC270_TS_IRQ          113
+
+#endif
index f485146b899fb335c12de4029e1a63d3b891168b..6bb02b65fb828319433301fb844cde5cb6c3190a 100644 (file)
@@ -24,9 +24,9 @@
 #include <asm/mach/irq.h>
 #include <asm/mach/map.h>
 
-#include <mach/hardware.h>
 #include "pxa25x.h"
-#include <mach/smemc.h>
+#include "addr-map.h"
+#include "smemc.h"
 
 #include "generic.h"
 #include "devices.h"
index 7eaeda2699270184127060189f6da0ddd5b0ea66..d03520555497015a53af7a228dded6757494bc85 100644 (file)
@@ -34,7 +34,7 @@
 
 #include "pxa27x.h"
 #include "mfp-pxa27x.h"
-#include <mach/z2.h>
+#include "z2.h"
 #include <linux/platform_data/video-pxafb.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/keypad-pxa27x.h>
@@ -651,6 +651,15 @@ static void __init z2_spi_init(void)
 static inline void z2_spi_init(void) {}
 #endif
 
+static struct gpiod_lookup_table z2_audio_gpio_table = {
+       .dev_id = "soc-audio",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", GPIO37_ZIPITZ2_HEADSET_DETECT,
+                           "hsdet-gpio", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
 /******************************************************************************
  * Core power regulator
  ******************************************************************************/
@@ -755,6 +764,8 @@ static void __init z2_init(void)
        z2_keys_init();
        z2_pmic_init();
 
+       gpiod_add_lookup_table(&z2_audio_gpio_table);
+
        pm_power_off = z2_power_off;
 }
 
diff --git a/arch/arm/mach-pxa/z2.h b/arch/arm/mach-pxa/z2.h
new file mode 100644 (file)
index 0000000..a78b2e2
--- /dev/null
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  arch/arm/mach-pxa/include/mach/z2.h
+ *
+ *  Author: Ken McGuire
+ *  Created: Feb 6, 2009
+ */
+
+#ifndef ASM_ARCH_ZIPIT2_H
+#define ASM_ARCH_ZIPIT2_H
+
+/* LEDs */
+#define        GPIO10_ZIPITZ2_LED_WIFI         10
+#define        GPIO85_ZIPITZ2_LED_CHARGED      85
+#define        GPIO83_ZIPITZ2_LED_CHARGING     83
+
+/* SD/MMC */
+#define        GPIO96_ZIPITZ2_SD_DETECT        96
+
+/* GPIO Buttons */
+#define        GPIO1_ZIPITZ2_POWER_BUTTON      1
+#define        GPIO98_ZIPITZ2_LID_BUTTON       98
+
+/* Libertas GSPI8686 WiFi */
+#define        GPIO14_ZIPITZ2_WIFI_POWER       14
+#define        GPIO24_ZIPITZ2_WIFI_CS          24
+#define        GPIO36_ZIPITZ2_WIFI_IRQ         36
+
+/* LCD */
+#define        GPIO19_ZIPITZ2_LCD_RESET        19
+#define        GPIO88_ZIPITZ2_LCD_CS           88
+
+/* MISC GPIOs */
+#define        GPIO0_ZIPITZ2_AC_DETECT         0
+#define GPIO37_ZIPITZ2_HEADSET_DETECT  37
+
+#endif
index 97700429633ee6ac0a408f3aefc81d51fb98049f..ff0d8bb9f55792a5b37561108fb45cda0e72273f 100644 (file)
 
 #include "pxa27x.h"
 #include "devices.h"
-#include <mach/regs-uart.h>
+#include "regs-uart.h"
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/mmc-pxamci.h>
 #include "pxa27x-udc.h"
 #include "udc.h"
 #include <linux/platform_data/video-pxafb.h>
 #include "pm.h"
-#include <mach/audio.h>
-#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include "viper-pcmcia.h"
 #include "zeus.h"
-#include <mach/smemc.h>
+#include "smemc.h"
 
 #include "generic.h"
 
@@ -929,6 +929,18 @@ static struct map_desc zeus_io_desc[] __initdata = {
                .length  = 0x00800000,
                .type    = MT_DEVICE,
        },
+       {
+               /*
+                * ISA I/O space mapping:
+                * -  ports 0x0000-0x0fff are PC/104
+                * -  ports 0x10000-0x10fff are PCMCIA slot 1
+                * -  ports 0x11000-0x11fff are PC/104
+                */
+               .virtual = PCI_IO_VIRT_BASE,
+               .pfn     = __phys_to_pfn(ZEUS_PC104IO_PHYS),
+               .length  = 0x1000,
+               .type    = MT_DEVICE,
+       },
 };
 
 static void __init zeus_map_io(void)
index 79f0025fa17a5c5fe621707d4cf922ab6e296db3..8ed75ac29b1a90f43dbc935a5849e6928076b491 100644 (file)
 #include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/smc91x.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include "pxa3xx.h"
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/video-pxafb.h>
 #include "zylonite.h"
 #include <linux/platform_data/mmc-pxamci.h>
 #include <linux/platform_data/usb-ohci-pxa27x.h>
 #include <linux/platform_data/keypad-pxa27x.h>
 #include <linux/platform_data/mtd-nand-pxa3xx.h>
+#include "mfp.h"
 
 #include "devices.h"
 #include "generic.h"
@@ -424,6 +426,35 @@ static void __init zylonite_init_ohci(void)
 static inline void zylonite_init_ohci(void) {}
 #endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULE */
 
+static struct gpiod_lookup_table zylonite_wm97xx_touch_gpio15_table = {
+       .dev_id = "wm97xx-touch.0",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", mfp_to_gpio(MFP_PIN_GPIO15),
+                           "touch", GPIO_ACTIVE_LOW),
+               { },
+       },
+};
+
+static struct gpiod_lookup_table zylonite_wm97xx_touch_gpio26_table = {
+       .dev_id = "wm97xx-touch.0",
+       .table = {
+               GPIO_LOOKUP("gpio-pxa", mfp_to_gpio(MFP_PIN_GPIO26),
+                           "touch", GPIO_ACTIVE_LOW),
+               { },
+       },
+};
+
+static void __init zylonite_init_wm97xx_touch(void)
+{
+       if (!IS_ENABLED(CONFIG_TOUCHSCREEN_WM97XX_ZYLONITE))
+               return;
+
+       if (cpu_is_pxa320())
+               gpiod_add_lookup_table(&zylonite_wm97xx_touch_gpio15_table);
+       else
+               gpiod_add_lookup_table(&zylonite_wm97xx_touch_gpio26_table);
+}
+
 static void __init zylonite_init(void)
 {
        pxa_set_ffuart_info(NULL);
@@ -449,6 +480,7 @@ static void __init zylonite_init(void)
        zylonite_init_nand();
        zylonite_init_leds();
        zylonite_init_ohci();
+       zylonite_init_wm97xx_touch();
 }
 
 MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
index 7300ec2aac0d43b8944aaa36ee6d36170c3b6452..afe3efcb8e04b74a24857dda7f0e82d28b988e07 100644 (file)
@@ -2,6 +2,8 @@
 #ifndef __ASM_ARCH_ZYLONITE_H
 #define __ASM_ARCH_ZYLONITE_H
 
+#include <linux/soc/pxa/cpu.h>
+
 #define ZYLONITE_ETH_PHYS      0x14000000
 
 #define EXT_GPIO(x)            (128 + (x))
index 956fec1c4940647545367598848743efb8d5d40d..50a8a3547dbc86d484b1182a2c2a37b0b4f917a4 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/platform_data/i2c-pxa.h>
 #include <linux/platform_data/pca953x.h>
 #include <linux/gpio.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "pxa300.h"
 #include "devices.h"
index 94cb834f36cda35bff6f5ce86ea0384d5cd7a73e..67cab4f1194bb071a40403e6cdd8303ad3fdc9fe 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/gpio.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "pxa320.h"
 #include "zylonite.h"
index 4dfb7554649d98fc81fed17f6be95ced3fd148bf..6c21f214cd609cb359a0c4351393a9e6d41a44c9 100644 (file)
@@ -39,9 +39,6 @@
 #include "generic.h"
 #include <clocksource/pxa.h>
 
-unsigned int reset_status;
-EXPORT_SYMBOL(reset_status);
-
 #define NR_FREQS       16
 
 /*
@@ -319,10 +316,13 @@ static struct platform_device *sa11x0_devices[] __initdata = {
 
 static int __init sa1100_init(void)
 {
+       struct resource wdt_res = DEFINE_RES_MEM(0x90000000, 0x20);
        pm_power_off = sa1100_power_off;
 
        regulator_has_full_constraints();
 
+       platform_device_register_simple("sa1100_wdt", -1, &wdt_res, 1);
+
        return platform_add_devices(sa11x0_devices, ARRAY_SIZE(sa11x0_devices));
 }
 
index 27695650a567f65c52d792a782be44001061aadd..a6723d45ae2adb573593ec285efe4c6b23274a0d 100644 (file)
@@ -10,7 +10,6 @@
 #define RESET_STATUS_GPIO      (1 << 3)        /* GPIO Reset */
 #define RESET_STATUS_ALL       (0xf)
 
-extern unsigned int reset_status;
 static inline void clear_reset_status(unsigned int mask)
 {
        RCSR = mask;
index 6f0909dda2f991f5210fbdd0d24743e95c41a05f..c86e79677ff902bedea1ad95a25990838f2d2d27 100644 (file)
@@ -29,6 +29,7 @@ static void xsc3_mc_copy_user_page(void *kto, const void *kfrom)
        int tmp;
 
        asm volatile ("\
+.arch xscale                                   \n\
        pld     [%1, #0]                        \n\
        pld     [%1, #32]                       \n\
 1:     pld     [%1, #64]                       \n\
@@ -80,6 +81,7 @@ void xsc3_mc_clear_user_highpage(struct page *page, unsigned long vaddr)
 {
        void *ptr, *kaddr = kmap_atomic(page);
        asm volatile ("\
+.arch xscale                                   \n\
        mov     r1, %2                          \n\
        mov     r2, #0                          \n\
        mov     r3, #0                          \n\
index 290702328a33704f1f1ee552b599231a2c58f122..576c0e6c92fca68cf4cb8f45ca7d491cabf38d9f 100644 (file)
@@ -455,7 +455,7 @@ void iounmap(volatile void __iomem *cookie)
 }
 EXPORT_SYMBOL(iounmap);
 
-#ifdef CONFIG_PCI
+#if defined(CONFIG_PCI) || IS_ENABLED(CONFIG_PCMCIA)
 static int pci_ioremap_mem_type = MT_DEVICE;
 
 void pci_ioremap_set_mem_type(int mem_type)
diff --git a/arch/arm/plat-pxa/Kconfig b/arch/arm/plat-pxa/Kconfig
deleted file mode 100644 (file)
index 6f7a0a3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-if PLAT_PXA
-
-config PXA_SSP
-       tristate
-       help
-         Enable support for PXA2xx SSP ports
-
-endif
diff --git a/arch/arm/plat-pxa/Makefile b/arch/arm/plat-pxa/Makefile
deleted file mode 100644 (file)
index 349ea0a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0-only
-#
-# Makefile for code common across different PXA processor families
-#
-ccflags-$(CONFIG_ARCH_MMP) := -I$(srctree)/$(src)/include
-
-obj-$(CONFIG_PXA3xx)           += mfp.o
-obj-$(CONFIG_ARCH_MMP)         += mfp.o
-
-obj-$(CONFIG_PXA_SSP)          += ssp.o
diff --git a/arch/arm/plat-pxa/include/plat/mfp.h b/arch/arm/plat-pxa/include/plat/mfp.h
deleted file mode 100644 (file)
index 3accaa9..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * arch/arm/plat-pxa/include/plat/mfp.h
- *
- *   Common Multi-Function Pin Definitions
- *
- * Copyright (C) 2007 Marvell International Ltd.
- *
- * 2007-8-21: eric miao <eric.miao@marvell.com>
- *            initial version
- */
-
-#ifndef __ASM_PLAT_MFP_H
-#define __ASM_PLAT_MFP_H
-
-#define mfp_to_gpio(m) ((m) % 256)
-
-/* list of all the configurable MFP pins */
-enum {
-       MFP_PIN_INVALID = -1,
-
-       MFP_PIN_GPIO0 = 0,
-       MFP_PIN_GPIO1,
-       MFP_PIN_GPIO2,
-       MFP_PIN_GPIO3,
-       MFP_PIN_GPIO4,
-       MFP_PIN_GPIO5,
-       MFP_PIN_GPIO6,
-       MFP_PIN_GPIO7,
-       MFP_PIN_GPIO8,
-       MFP_PIN_GPIO9,
-       MFP_PIN_GPIO10,
-       MFP_PIN_GPIO11,
-       MFP_PIN_GPIO12,
-       MFP_PIN_GPIO13,
-       MFP_PIN_GPIO14,
-       MFP_PIN_GPIO15,
-       MFP_PIN_GPIO16,
-       MFP_PIN_GPIO17,
-       MFP_PIN_GPIO18,
-       MFP_PIN_GPIO19,
-       MFP_PIN_GPIO20,
-       MFP_PIN_GPIO21,
-       MFP_PIN_GPIO22,
-       MFP_PIN_GPIO23,
-       MFP_PIN_GPIO24,
-       MFP_PIN_GPIO25,
-       MFP_PIN_GPIO26,
-       MFP_PIN_GPIO27,
-       MFP_PIN_GPIO28,
-       MFP_PIN_GPIO29,
-       MFP_PIN_GPIO30,
-       MFP_PIN_GPIO31,
-       MFP_PIN_GPIO32,
-       MFP_PIN_GPIO33,
-       MFP_PIN_GPIO34,
-       MFP_PIN_GPIO35,
-       MFP_PIN_GPIO36,
-       MFP_PIN_GPIO37,
-       MFP_PIN_GPIO38,
-       MFP_PIN_GPIO39,
-       MFP_PIN_GPIO40,
-       MFP_PIN_GPIO41,
-       MFP_PIN_GPIO42,
-       MFP_PIN_GPIO43,
-       MFP_PIN_GPIO44,
-       MFP_PIN_GPIO45,
-       MFP_PIN_GPIO46,
-       MFP_PIN_GPIO47,
-       MFP_PIN_GPIO48,
-       MFP_PIN_GPIO49,
-       MFP_PIN_GPIO50,
-       MFP_PIN_GPIO51,
-       MFP_PIN_GPIO52,
-       MFP_PIN_GPIO53,
-       MFP_PIN_GPIO54,
-       MFP_PIN_GPIO55,
-       MFP_PIN_GPIO56,
-       MFP_PIN_GPIO57,
-       MFP_PIN_GPIO58,
-       MFP_PIN_GPIO59,
-       MFP_PIN_GPIO60,
-       MFP_PIN_GPIO61,
-       MFP_PIN_GPIO62,
-       MFP_PIN_GPIO63,
-       MFP_PIN_GPIO64,
-       MFP_PIN_GPIO65,
-       MFP_PIN_GPIO66,
-       MFP_PIN_GPIO67,
-       MFP_PIN_GPIO68,
-       MFP_PIN_GPIO69,
-       MFP_PIN_GPIO70,
-       MFP_PIN_GPIO71,
-       MFP_PIN_GPIO72,
-       MFP_PIN_GPIO73,
-       MFP_PIN_GPIO74,
-       MFP_PIN_GPIO75,
-       MFP_PIN_GPIO76,
-       MFP_PIN_GPIO77,
-       MFP_PIN_GPIO78,
-       MFP_PIN_GPIO79,
-       MFP_PIN_GPIO80,
-       MFP_PIN_GPIO81,
-       MFP_PIN_GPIO82,
-       MFP_PIN_GPIO83,
-       MFP_PIN_GPIO84,
-       MFP_PIN_GPIO85,
-       MFP_PIN_GPIO86,
-       MFP_PIN_GPIO87,
-       MFP_PIN_GPIO88,
-       MFP_PIN_GPIO89,
-       MFP_PIN_GPIO90,
-       MFP_PIN_GPIO91,
-       MFP_PIN_GPIO92,
-       MFP_PIN_GPIO93,
-       MFP_PIN_GPIO94,
-       MFP_PIN_GPIO95,
-       MFP_PIN_GPIO96,
-       MFP_PIN_GPIO97,
-       MFP_PIN_GPIO98,
-       MFP_PIN_GPIO99,
-       MFP_PIN_GPIO100,
-       MFP_PIN_GPIO101,
-       MFP_PIN_GPIO102,
-       MFP_PIN_GPIO103,
-       MFP_PIN_GPIO104,
-       MFP_PIN_GPIO105,
-       MFP_PIN_GPIO106,
-       MFP_PIN_GPIO107,
-       MFP_PIN_GPIO108,
-       MFP_PIN_GPIO109,
-       MFP_PIN_GPIO110,
-       MFP_PIN_GPIO111,
-       MFP_PIN_GPIO112,
-       MFP_PIN_GPIO113,
-       MFP_PIN_GPIO114,
-       MFP_PIN_GPIO115,
-       MFP_PIN_GPIO116,
-       MFP_PIN_GPIO117,
-       MFP_PIN_GPIO118,
-       MFP_PIN_GPIO119,
-       MFP_PIN_GPIO120,
-       MFP_PIN_GPIO121,
-       MFP_PIN_GPIO122,
-       MFP_PIN_GPIO123,
-       MFP_PIN_GPIO124,
-       MFP_PIN_GPIO125,
-       MFP_PIN_GPIO126,
-       MFP_PIN_GPIO127,
-
-       MFP_PIN_GPIO128,
-       MFP_PIN_GPIO129,
-       MFP_PIN_GPIO130,
-       MFP_PIN_GPIO131,
-       MFP_PIN_GPIO132,
-       MFP_PIN_GPIO133,
-       MFP_PIN_GPIO134,
-       MFP_PIN_GPIO135,
-       MFP_PIN_GPIO136,
-       MFP_PIN_GPIO137,
-       MFP_PIN_GPIO138,
-       MFP_PIN_GPIO139,
-       MFP_PIN_GPIO140,
-       MFP_PIN_GPIO141,
-       MFP_PIN_GPIO142,
-       MFP_PIN_GPIO143,
-       MFP_PIN_GPIO144,
-       MFP_PIN_GPIO145,
-       MFP_PIN_GPIO146,
-       MFP_PIN_GPIO147,
-       MFP_PIN_GPIO148,
-       MFP_PIN_GPIO149,
-       MFP_PIN_GPIO150,
-       MFP_PIN_GPIO151,
-       MFP_PIN_GPIO152,
-       MFP_PIN_GPIO153,
-       MFP_PIN_GPIO154,
-       MFP_PIN_GPIO155,
-       MFP_PIN_GPIO156,
-       MFP_PIN_GPIO157,
-       MFP_PIN_GPIO158,
-       MFP_PIN_GPIO159,
-       MFP_PIN_GPIO160,
-       MFP_PIN_GPIO161,
-       MFP_PIN_GPIO162,
-       MFP_PIN_GPIO163,
-       MFP_PIN_GPIO164,
-       MFP_PIN_GPIO165,
-       MFP_PIN_GPIO166,
-       MFP_PIN_GPIO167,
-       MFP_PIN_GPIO168,
-       MFP_PIN_GPIO169,
-       MFP_PIN_GPIO170,
-       MFP_PIN_GPIO171,
-       MFP_PIN_GPIO172,
-       MFP_PIN_GPIO173,
-       MFP_PIN_GPIO174,
-       MFP_PIN_GPIO175,
-       MFP_PIN_GPIO176,
-       MFP_PIN_GPIO177,
-       MFP_PIN_GPIO178,
-       MFP_PIN_GPIO179,
-       MFP_PIN_GPIO180,
-       MFP_PIN_GPIO181,
-       MFP_PIN_GPIO182,
-       MFP_PIN_GPIO183,
-       MFP_PIN_GPIO184,
-       MFP_PIN_GPIO185,
-       MFP_PIN_GPIO186,
-       MFP_PIN_GPIO187,
-       MFP_PIN_GPIO188,
-       MFP_PIN_GPIO189,
-       MFP_PIN_GPIO190,
-       MFP_PIN_GPIO191,
-
-       MFP_PIN_GPIO255 = 255,
-
-       MFP_PIN_GPIO0_2,
-       MFP_PIN_GPIO1_2,
-       MFP_PIN_GPIO2_2,
-       MFP_PIN_GPIO3_2,
-       MFP_PIN_GPIO4_2,
-       MFP_PIN_GPIO5_2,
-       MFP_PIN_GPIO6_2,
-       MFP_PIN_GPIO7_2,
-       MFP_PIN_GPIO8_2,
-       MFP_PIN_GPIO9_2,
-       MFP_PIN_GPIO10_2,
-       MFP_PIN_GPIO11_2,
-       MFP_PIN_GPIO12_2,
-       MFP_PIN_GPIO13_2,
-       MFP_PIN_GPIO14_2,
-       MFP_PIN_GPIO15_2,
-       MFP_PIN_GPIO16_2,
-       MFP_PIN_GPIO17_2,
-
-       MFP_PIN_ULPI_STP,
-       MFP_PIN_ULPI_NXT,
-       MFP_PIN_ULPI_DIR,
-
-       MFP_PIN_nXCVREN,
-       MFP_PIN_DF_CLE_nOE,
-       MFP_PIN_DF_nADV1_ALE,
-       MFP_PIN_DF_SCLK_E,
-       MFP_PIN_DF_SCLK_S,
-       MFP_PIN_nBE0,
-       MFP_PIN_nBE1,
-       MFP_PIN_DF_nADV2_ALE,
-       MFP_PIN_DF_INT_RnB,
-       MFP_PIN_DF_nCS0,
-       MFP_PIN_DF_nCS1,
-       MFP_PIN_nLUA,
-       MFP_PIN_nLLA,
-       MFP_PIN_DF_nWE,
-       MFP_PIN_DF_ALE_nWE,
-       MFP_PIN_DF_nRE_nOE,
-       MFP_PIN_DF_ADDR0,
-       MFP_PIN_DF_ADDR1,
-       MFP_PIN_DF_ADDR2,
-       MFP_PIN_DF_ADDR3,
-       MFP_PIN_DF_IO0,
-       MFP_PIN_DF_IO1,
-       MFP_PIN_DF_IO2,
-       MFP_PIN_DF_IO3,
-       MFP_PIN_DF_IO4,
-       MFP_PIN_DF_IO5,
-       MFP_PIN_DF_IO6,
-       MFP_PIN_DF_IO7,
-       MFP_PIN_DF_IO8,
-       MFP_PIN_DF_IO9,
-       MFP_PIN_DF_IO10,
-       MFP_PIN_DF_IO11,
-       MFP_PIN_DF_IO12,
-       MFP_PIN_DF_IO13,
-       MFP_PIN_DF_IO14,
-       MFP_PIN_DF_IO15,
-       MFP_PIN_DF_nCS0_SM_nCS2,
-       MFP_PIN_DF_nCS1_SM_nCS3,
-       MFP_PIN_SM_nCS0,
-       MFP_PIN_SM_nCS1,
-       MFP_PIN_DF_WEn,
-       MFP_PIN_DF_REn,
-       MFP_PIN_DF_CLE_SM_OEn,
-       MFP_PIN_DF_ALE_SM_WEn,
-       MFP_PIN_DF_RDY0,
-       MFP_PIN_DF_RDY1,
-
-       MFP_PIN_SM_SCLK,
-       MFP_PIN_SM_BE0,
-       MFP_PIN_SM_BE1,
-       MFP_PIN_SM_ADV,
-       MFP_PIN_SM_ADVMUX,
-       MFP_PIN_SM_RDY,
-
-       MFP_PIN_MMC1_DAT7,
-       MFP_PIN_MMC1_DAT6,
-       MFP_PIN_MMC1_DAT5,
-       MFP_PIN_MMC1_DAT4,
-       MFP_PIN_MMC1_DAT3,
-       MFP_PIN_MMC1_DAT2,
-       MFP_PIN_MMC1_DAT1,
-       MFP_PIN_MMC1_DAT0,
-       MFP_PIN_MMC1_CMD,
-       MFP_PIN_MMC1_CLK,
-       MFP_PIN_MMC1_CD,
-       MFP_PIN_MMC1_WP,
-
-       /* additional pins on PXA930 */
-       MFP_PIN_GSIM_UIO,
-       MFP_PIN_GSIM_UCLK,
-       MFP_PIN_GSIM_UDET,
-       MFP_PIN_GSIM_nURST,
-       MFP_PIN_PMIC_INT,
-       MFP_PIN_RDY,
-
-       /* additional pins on MMP2 */
-       MFP_PIN_TWSI1_SCL,
-       MFP_PIN_TWSI1_SDA,
-       MFP_PIN_TWSI4_SCL,
-       MFP_PIN_TWSI4_SDA,
-       MFP_PIN_CLK_REQ,
-
-       MFP_PIN_MAX,
-};
-
-/*
- * a possible MFP configuration is represented by a 32-bit integer
- *
- * bit  0.. 9 - MFP Pin Number (1024 Pins Maximum)
- * bit 10..12 - Alternate Function Selection
- * bit 13..15 - Drive Strength
- * bit 16..18 - Low Power Mode State
- * bit 19..20 - Low Power Mode Edge Detection
- * bit 21..22 - Run Mode Pull State
- *
- * to facilitate the definition, the following macros are provided
- *
- * MFP_CFG_DEFAULT - default MFP configuration value, with
- *               alternate function = 0,
- *               drive strength = fast 3mA (MFP_DS03X)
- *               low power mode = default
- *               edge detection = none
- *
- * MFP_CFG     - default MFPR value with alternate function
- * MFP_CFG_DRV - default MFPR value with alternate function and
- *               pin drive strength
- * MFP_CFG_LPM - default MFPR value with alternate function and
- *               low power mode
- * MFP_CFG_X   - default MFPR value with alternate function,
- *               pin drive strength and low power mode
- */
-
-typedef unsigned long mfp_cfg_t;
-
-#define MFP_PIN(x)             ((x) & 0x3ff)
-
-#define MFP_AF0                        (0x0 << 10)
-#define MFP_AF1                        (0x1 << 10)
-#define MFP_AF2                        (0x2 << 10)
-#define MFP_AF3                        (0x3 << 10)
-#define MFP_AF4                        (0x4 << 10)
-#define MFP_AF5                        (0x5 << 10)
-#define MFP_AF6                        (0x6 << 10)
-#define MFP_AF7                        (0x7 << 10)
-#define MFP_AF_MASK            (0x7 << 10)
-#define MFP_AF(x)              (((x) >> 10) & 0x7)
-
-#define MFP_DS01X              (0x0 << 13)
-#define MFP_DS02X              (0x1 << 13)
-#define MFP_DS03X              (0x2 << 13)
-#define MFP_DS04X              (0x3 << 13)
-#define MFP_DS06X              (0x4 << 13)
-#define MFP_DS08X              (0x5 << 13)
-#define MFP_DS10X              (0x6 << 13)
-#define MFP_DS13X              (0x7 << 13)
-#define MFP_DS_MASK            (0x7 << 13)
-#define MFP_DS(x)              (((x) >> 13) & 0x7)
-
-#define MFP_LPM_DEFAULT                (0x0 << 16)
-#define MFP_LPM_DRIVE_LOW      (0x1 << 16)
-#define MFP_LPM_DRIVE_HIGH     (0x2 << 16)
-#define MFP_LPM_PULL_LOW       (0x3 << 16)
-#define MFP_LPM_PULL_HIGH      (0x4 << 16)
-#define MFP_LPM_FLOAT          (0x5 << 16)
-#define MFP_LPM_INPUT          (0x6 << 16)
-#define MFP_LPM_STATE_MASK     (0x7 << 16)
-#define MFP_LPM_STATE(x)       (((x) >> 16) & 0x7)
-
-#define MFP_LPM_EDGE_NONE      (0x0 << 19)
-#define MFP_LPM_EDGE_RISE      (0x1 << 19)
-#define MFP_LPM_EDGE_FALL      (0x2 << 19)
-#define MFP_LPM_EDGE_BOTH      (0x3 << 19)
-#define MFP_LPM_EDGE_MASK      (0x3 << 19)
-#define MFP_LPM_EDGE(x)                (((x) >> 19) & 0x3)
-
-#define MFP_PULL_NONE          (0x0 << 21)
-#define MFP_PULL_LOW           (0x1 << 21)
-#define MFP_PULL_HIGH          (0x2 << 21)
-#define MFP_PULL_BOTH          (0x3 << 21)
-#define MFP_PULL_FLOAT         (0x4 << 21)
-#define MFP_PULL_MASK          (0x7 << 21)
-#define MFP_PULL(x)            (((x) >> 21) & 0x7)
-
-#define MFP_CFG_DEFAULT                (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\
-                                MFP_LPM_EDGE_NONE | MFP_PULL_NONE)
-
-#define MFP_CFG(pin, af)               \
-       ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\
-        (MFP_PIN(MFP_PIN_##pin) | MFP_##af))
-
-#define MFP_CFG_DRV(pin, af, drv)      \
-       ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\
-        (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv))
-
-#define MFP_CFG_LPM(pin, af, lpm)      \
-       ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\
-        (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm))
-
-#define MFP_CFG_X(pin, af, drv, lpm)   \
-       ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\
-        (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm))
-
-#if defined(CONFIG_PXA3xx) || defined(CONFIG_ARCH_MMP)
-/*
- * each MFP pin will have a MFPR register, since the offset of the
- * register varies between processors, the processor specific code
- * should initialize the pin offsets by mfp_init()
- *
- * mfp_init_base() - accepts a virtual base for all MFPR registers and
- * initialize the MFP table to a default state
- *
- * mfp_init_addr() - accepts a table of "mfp_addr_map" structure, which
- * represents a range of MFP pins from "start" to "end", with the offset
- * beginning at "offset", to define a single pin, let "end" = -1.
- *
- * use
- *
- * MFP_ADDR_X() to define a range of pins
- * MFP_ADDR()   to define a single pin
- * MFP_ADDR_END to signal the end of pin offset definitions
- */
-struct mfp_addr_map {
-       unsigned int    start;
-       unsigned int    end;
-       unsigned long   offset;
-};
-
-#define MFP_ADDR_X(start, end, offset) \
-       { MFP_PIN_##start, MFP_PIN_##end, offset }
-
-#define MFP_ADDR(pin, offset) \
-       { MFP_PIN_##pin, -1, offset }
-
-#define MFP_ADDR_END   { MFP_PIN_INVALID, 0 }
-
-void __init mfp_init_base(void __iomem *mfpr_base);
-void __init mfp_init_addr(struct mfp_addr_map *map);
-
-/*
- * mfp_{read, write}() - for direct read/write access to the MFPR register
- * mfp_config()                - for configuring a group of MFPR registers
- * mfp_config_lpm()    - configuring all low power MFPR registers for suspend
- * mfp_config_run()    - configuring all run time  MFPR registers after resume
- */
-unsigned long mfp_read(int mfp);
-void mfp_write(int mfp, unsigned long mfpr_val);
-void mfp_config(unsigned long *mfp_cfgs, int num);
-void mfp_config_run(void);
-void mfp_config_lpm(void);
-#endif /* CONFIG_PXA3xx || CONFIG_ARCH_MMP */
-
-#endif /* __ASM_PLAT_MFP_H */
diff --git a/arch/arm/plat-pxa/mfp.c b/arch/arm/plat-pxa/mfp.c
deleted file mode 100644 (file)
index 17fc4f3..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/arch/arm/plat-pxa/mfp.c
- *
- *   Multi-Function Pin Support
- *
- * Copyright (C) 2007 Marvell Internation Ltd.
- *
- * 2007-08-21: eric miao <eric.miao@marvell.com>
- *             initial version
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/io.h>
-
-#include <plat/mfp.h>
-
-#define MFPR_SIZE      (PAGE_SIZE)
-
-/* MFPR register bit definitions */
-#define MFPR_PULL_SEL          (0x1 << 15)
-#define MFPR_PULLUP_EN         (0x1 << 14)
-#define MFPR_PULLDOWN_EN       (0x1 << 13)
-#define MFPR_SLEEP_SEL         (0x1 << 9)
-#define MFPR_SLEEP_OE_N                (0x1 << 7)
-#define MFPR_EDGE_CLEAR                (0x1 << 6)
-#define MFPR_EDGE_FALL_EN      (0x1 << 5)
-#define MFPR_EDGE_RISE_EN      (0x1 << 4)
-
-#define MFPR_SLEEP_DATA(x)     ((x) << 8)
-#define MFPR_DRIVE(x)          (((x) & 0x7) << 10)
-#define MFPR_AF_SEL(x)         (((x) & 0x7) << 0)
-
-#define MFPR_EDGE_NONE         (0)
-#define MFPR_EDGE_RISE         (MFPR_EDGE_RISE_EN)
-#define MFPR_EDGE_FALL         (MFPR_EDGE_FALL_EN)
-#define MFPR_EDGE_BOTH         (MFPR_EDGE_RISE | MFPR_EDGE_FALL)
-
-/*
- * Table that determines the low power modes outputs, with actual settings
- * used in parentheses for don't-care values. Except for the float output,
- * the configured driven and pulled levels match, so if there is a need for
- * non-LPM pulled output, the same configuration could probably be used.
- *
- * Output value  sleep_oe_n  sleep_data  pullup_en  pulldown_en  pull_sel
- *                 (bit 7)    (bit 8)    (bit 14)     (bit 13)   (bit 15)
- *
- * Input            0          X(0)        X(0)        X(0)       0
- * Drive 0          0          0           0           X(1)       0
- * Drive 1          0          1           X(1)        0         0
- * Pull hi (1)      1          X(1)        1           0         0
- * Pull lo (0)      1          X(0)        0           1         0
- * Z (float)        1          X(0)        0           0         0
- */
-#define MFPR_LPM_INPUT         (0)
-#define MFPR_LPM_DRIVE_LOW     (MFPR_SLEEP_DATA(0) | MFPR_PULLDOWN_EN)
-#define MFPR_LPM_DRIVE_HIGH            (MFPR_SLEEP_DATA(1) | MFPR_PULLUP_EN)
-#define MFPR_LPM_PULL_LOW              (MFPR_LPM_DRIVE_LOW  | MFPR_SLEEP_OE_N)
-#define MFPR_LPM_PULL_HIGH             (MFPR_LPM_DRIVE_HIGH | MFPR_SLEEP_OE_N)
-#define MFPR_LPM_FLOAT                 (MFPR_SLEEP_OE_N)
-#define MFPR_LPM_MASK          (0xe080)
-
-/*
- * The pullup and pulldown state of the MFP pin at run mode is by default
- * determined by the selected alternate function. In case that some buggy
- * devices need to override this default behavior,  the definitions below
- * indicates the setting of corresponding MFPR bits
- *
- * Definition       pull_sel  pullup_en  pulldown_en
- * MFPR_PULL_NONE       0         0        0
- * MFPR_PULL_LOW        1         0        1
- * MFPR_PULL_HIGH       1         1        0
- * MFPR_PULL_BOTH       1         1        1
- * MFPR_PULL_FLOAT     1         0        0
- */
-#define MFPR_PULL_NONE         (0)
-#define MFPR_PULL_LOW          (MFPR_PULL_SEL | MFPR_PULLDOWN_EN)
-#define MFPR_PULL_BOTH         (MFPR_PULL_LOW | MFPR_PULLUP_EN)
-#define MFPR_PULL_HIGH         (MFPR_PULL_SEL | MFPR_PULLUP_EN)
-#define MFPR_PULL_FLOAT                (MFPR_PULL_SEL)
-
-/* mfp_spin_lock is used to ensure that MFP register configuration
- * (most likely a read-modify-write operation) is atomic, and that
- * mfp_table[] is consistent
- */
-static DEFINE_SPINLOCK(mfp_spin_lock);
-
-static void __iomem *mfpr_mmio_base;
-
-struct mfp_pin {
-       unsigned long   config;         /* -1 for not configured */
-       unsigned long   mfpr_off;       /* MFPRxx Register offset */
-       unsigned long   mfpr_run;       /* Run-Mode Register Value */
-       unsigned long   mfpr_lpm;       /* Low Power Mode Register Value */
-};
-
-static struct mfp_pin mfp_table[MFP_PIN_MAX];
-
-/* mapping of MFP_LPM_* definitions to MFPR_LPM_* register bits */
-static const unsigned long mfpr_lpm[] = {
-       MFPR_LPM_INPUT,
-       MFPR_LPM_DRIVE_LOW,
-       MFPR_LPM_DRIVE_HIGH,
-       MFPR_LPM_PULL_LOW,
-       MFPR_LPM_PULL_HIGH,
-       MFPR_LPM_FLOAT,
-       MFPR_LPM_INPUT,
-};
-
-/* mapping of MFP_PULL_* definitions to MFPR_PULL_* register bits */
-static const unsigned long mfpr_pull[] = {
-       MFPR_PULL_NONE,
-       MFPR_PULL_LOW,
-       MFPR_PULL_HIGH,
-       MFPR_PULL_BOTH,
-       MFPR_PULL_FLOAT,
-};
-
-/* mapping of MFP_LPM_EDGE_* definitions to MFPR_EDGE_* register bits */
-static const unsigned long mfpr_edge[] = {
-       MFPR_EDGE_NONE,
-       MFPR_EDGE_RISE,
-       MFPR_EDGE_FALL,
-       MFPR_EDGE_BOTH,
-};
-
-#define mfpr_readl(off)                        \
-       __raw_readl(mfpr_mmio_base + (off))
-
-#define mfpr_writel(off, val)          \
-       __raw_writel(val, mfpr_mmio_base + (off))
-
-#define mfp_configured(p)      ((p)->config != -1)
-
-/*
- * perform a read-back of any valid MFPR register to make sure the
- * previous writings are finished
- */
-static unsigned long mfpr_off_readback;
-#define mfpr_sync()    (void)__raw_readl(mfpr_mmio_base + mfpr_off_readback)
-
-static inline void __mfp_config_run(struct mfp_pin *p)
-{
-       if (mfp_configured(p))
-               mfpr_writel(p->mfpr_off, p->mfpr_run);
-}
-
-static inline void __mfp_config_lpm(struct mfp_pin *p)
-{
-       if (mfp_configured(p)) {
-               unsigned long mfpr_clr = (p->mfpr_run & ~MFPR_EDGE_BOTH) | MFPR_EDGE_CLEAR;
-               if (mfpr_clr != p->mfpr_run)
-                       mfpr_writel(p->mfpr_off, mfpr_clr);
-               if (p->mfpr_lpm != mfpr_clr)
-                       mfpr_writel(p->mfpr_off, p->mfpr_lpm);
-       }
-}
-
-void mfp_config(unsigned long *mfp_cfgs, int num)
-{
-       unsigned long flags;
-       int i;
-
-       spin_lock_irqsave(&mfp_spin_lock, flags);
-
-       for (i = 0; i < num; i++, mfp_cfgs++) {
-               unsigned long tmp, c = *mfp_cfgs;
-               struct mfp_pin *p;
-               int pin, af, drv, lpm, edge, pull;
-
-               pin = MFP_PIN(c);
-               BUG_ON(pin >= MFP_PIN_MAX);
-               p = &mfp_table[pin];
-
-               af  = MFP_AF(c);
-               drv = MFP_DS(c);
-               lpm = MFP_LPM_STATE(c);
-               edge = MFP_LPM_EDGE(c);
-               pull = MFP_PULL(c);
-
-               /* run-mode pull settings will conflict with MFPR bits of
-                * low power mode state,  calculate mfpr_run and mfpr_lpm
-                * individually if pull != MFP_PULL_NONE
-                */
-               tmp = MFPR_AF_SEL(af) | MFPR_DRIVE(drv);
-
-               if (likely(pull == MFP_PULL_NONE)) {
-                       p->mfpr_run = tmp | mfpr_lpm[lpm] | mfpr_edge[edge];
-                       p->mfpr_lpm = p->mfpr_run;
-               } else {
-                       p->mfpr_lpm = tmp | mfpr_lpm[lpm] | mfpr_edge[edge];
-                       p->mfpr_run = tmp | mfpr_pull[pull];
-               }
-
-               p->config = c; __mfp_config_run(p);
-       }
-
-       mfpr_sync();
-       spin_unlock_irqrestore(&mfp_spin_lock, flags);
-}
-
-unsigned long mfp_read(int mfp)
-{
-       unsigned long val, flags;
-
-       BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
-
-       spin_lock_irqsave(&mfp_spin_lock, flags);
-       val = mfpr_readl(mfp_table[mfp].mfpr_off);
-       spin_unlock_irqrestore(&mfp_spin_lock, flags);
-
-       return val;
-}
-
-void mfp_write(int mfp, unsigned long val)
-{
-       unsigned long flags;
-
-       BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
-
-       spin_lock_irqsave(&mfp_spin_lock, flags);
-       mfpr_writel(mfp_table[mfp].mfpr_off, val);
-       mfpr_sync();
-       spin_unlock_irqrestore(&mfp_spin_lock, flags);
-}
-
-void __init mfp_init_base(void __iomem *mfpr_base)
-{
-       int i;
-
-       /* initialize the table with default - unconfigured */
-       for (i = 0; i < ARRAY_SIZE(mfp_table); i++)
-               mfp_table[i].config = -1;
-
-       mfpr_mmio_base = mfpr_base;
-}
-
-void __init mfp_init_addr(struct mfp_addr_map *map)
-{
-       struct mfp_addr_map *p;
-       unsigned long offset, flags;
-       int i;
-
-       spin_lock_irqsave(&mfp_spin_lock, flags);
-
-       /* mfp offset for readback */
-       mfpr_off_readback = map[0].offset;
-
-       for (p = map; p->start != MFP_PIN_INVALID; p++) {
-               offset = p->offset;
-               i = p->start;
-
-               do {
-                       mfp_table[i].mfpr_off = offset;
-                       mfp_table[i].mfpr_run = 0;
-                       mfp_table[i].mfpr_lpm = 0;
-                       offset += 4; i++;
-               } while ((i <= p->end) && (p->end != -1));
-       }
-
-       spin_unlock_irqrestore(&mfp_spin_lock, flags);
-}
-
-void mfp_config_lpm(void)
-{
-       struct mfp_pin *p = &mfp_table[0];
-       int pin;
-
-       for (pin = 0; pin < ARRAY_SIZE(mfp_table); pin++, p++)
-               __mfp_config_lpm(p);
-}
-
-void mfp_config_run(void)
-{
-       struct mfp_pin *p = &mfp_table[0];
-       int pin;
-
-       for (pin = 0; pin < ARRAY_SIZE(mfp_table); pin++, p++)
-               __mfp_config_run(p);
-}
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c
deleted file mode 100644 (file)
index 5634403..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  linux/arch/arm/mach-pxa/ssp.c
- *
- *  based on linux/arch/arm/mach-sa1100/ssp.c by Russell King
- *
- *  Copyright (C) 2003 Russell King.
- *  Copyright (C) 2003 Wolfson Microelectronics PLC
- *
- *  PXA2xx SSP driver.  This provides the generic core for simple
- *  IO-based SSP applications and allows easy port setup for DMA access.
- *
- *  Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/slab.h>
-#include <linux/errno.h>
-#include <linux/interrupt.h>
-#include <linux/ioport.h>
-#include <linux/init.h>
-#include <linux/mutex.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/platform_device.h>
-#include <linux/spi/pxa2xx_spi.h>
-#include <linux/io.h>
-#include <linux/of.h>
-#include <linux/of_device.h>
-
-#include <asm/irq.h>
-
-static DEFINE_MUTEX(ssp_lock);
-static LIST_HEAD(ssp_list);
-
-struct ssp_device *pxa_ssp_request(int port, const char *label)
-{
-       struct ssp_device *ssp = NULL;
-
-       mutex_lock(&ssp_lock);
-
-       list_for_each_entry(ssp, &ssp_list, node) {
-               if (ssp->port_id == port && ssp->use_count == 0) {
-                       ssp->use_count++;
-                       ssp->label = label;
-                       break;
-               }
-       }
-
-       mutex_unlock(&ssp_lock);
-
-       if (&ssp->node == &ssp_list)
-               return NULL;
-
-       return ssp;
-}
-EXPORT_SYMBOL(pxa_ssp_request);
-
-struct ssp_device *pxa_ssp_request_of(const struct device_node *of_node,
-                                     const char *label)
-{
-       struct ssp_device *ssp = NULL;
-
-       mutex_lock(&ssp_lock);
-
-       list_for_each_entry(ssp, &ssp_list, node) {
-               if (ssp->of_node == of_node && ssp->use_count == 0) {
-                       ssp->use_count++;
-                       ssp->label = label;
-                       break;
-               }
-       }
-
-       mutex_unlock(&ssp_lock);
-
-       if (&ssp->node == &ssp_list)
-               return NULL;
-
-       return ssp;
-}
-EXPORT_SYMBOL(pxa_ssp_request_of);
-
-void pxa_ssp_free(struct ssp_device *ssp)
-{
-       mutex_lock(&ssp_lock);
-       if (ssp->use_count) {
-               ssp->use_count--;
-               ssp->label = NULL;
-       } else
-               dev_err(ssp->dev, "device already free\n");
-       mutex_unlock(&ssp_lock);
-}
-EXPORT_SYMBOL(pxa_ssp_free);
-
-#ifdef CONFIG_OF
-static const struct of_device_id pxa_ssp_of_ids[] = {
-       { .compatible = "mrvl,pxa25x-ssp",      .data = (void *) PXA25x_SSP },
-       { .compatible = "mvrl,pxa25x-nssp",     .data = (void *) PXA25x_NSSP },
-       { .compatible = "mrvl,pxa27x-ssp",      .data = (void *) PXA27x_SSP },
-       { .compatible = "mrvl,pxa3xx-ssp",      .data = (void *) PXA3xx_SSP },
-       { .compatible = "mvrl,pxa168-ssp",      .data = (void *) PXA168_SSP },
-       { .compatible = "mrvl,pxa910-ssp",      .data = (void *) PXA910_SSP },
-       { .compatible = "mrvl,ce4100-ssp",      .data = (void *) CE4100_SSP },
-       { },
-};
-MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids);
-#endif
-
-static int pxa_ssp_probe(struct platform_device *pdev)
-{
-       struct resource *res;
-       struct ssp_device *ssp;
-       struct device *dev = &pdev->dev;
-
-       ssp = devm_kzalloc(dev, sizeof(struct ssp_device), GFP_KERNEL);
-       if (ssp == NULL)
-               return -ENOMEM;
-
-       ssp->dev = dev;
-
-       ssp->clk = devm_clk_get(dev, NULL);
-       if (IS_ERR(ssp->clk))
-               return PTR_ERR(ssp->clk);
-
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (res == NULL) {
-               dev_err(dev, "no memory resource defined\n");
-               return -ENODEV;
-       }
-
-       res = devm_request_mem_region(dev, res->start, resource_size(res),
-                                     pdev->name);
-       if (res == NULL) {
-               dev_err(dev, "failed to request memory resource\n");
-               return -EBUSY;
-       }
-
-       ssp->phys_base = res->start;
-
-       ssp->mmio_base = devm_ioremap(dev, res->start, resource_size(res));
-       if (ssp->mmio_base == NULL) {
-               dev_err(dev, "failed to ioremap() registers\n");
-               return -ENODEV;
-       }
-
-       ssp->irq = platform_get_irq(pdev, 0);
-       if (ssp->irq < 0) {
-               dev_err(dev, "no IRQ resource defined\n");
-               return -ENODEV;
-       }
-
-       if (dev->of_node) {
-               const struct of_device_id *id =
-                       of_match_device(of_match_ptr(pxa_ssp_of_ids), dev);
-               ssp->type = (int) id->data;
-       } else {
-               const struct platform_device_id *id =
-                       platform_get_device_id(pdev);
-               ssp->type = (int) id->driver_data;
-
-               /* PXA2xx/3xx SSP ports starts from 1 and the internal pdev->id
-                * starts from 0, do a translation here
-                */
-               ssp->port_id = pdev->id + 1;
-       }
-
-       ssp->use_count = 0;
-       ssp->of_node = dev->of_node;
-
-       mutex_lock(&ssp_lock);
-       list_add(&ssp->node, &ssp_list);
-       mutex_unlock(&ssp_lock);
-
-       platform_set_drvdata(pdev, ssp);
-
-       return 0;
-}
-
-static int pxa_ssp_remove(struct platform_device *pdev)
-{
-       struct ssp_device *ssp;
-
-       ssp = platform_get_drvdata(pdev);
-       if (ssp == NULL)
-               return -ENODEV;
-
-       mutex_lock(&ssp_lock);
-       list_del(&ssp->node);
-       mutex_unlock(&ssp_lock);
-
-       return 0;
-}
-
-static const struct platform_device_id ssp_id_table[] = {
-       { "pxa25x-ssp",         PXA25x_SSP },
-       { "pxa25x-nssp",        PXA25x_NSSP },
-       { "pxa27x-ssp",         PXA27x_SSP },
-       { "pxa3xx-ssp",         PXA3xx_SSP },
-       { "pxa168-ssp",         PXA168_SSP },
-       { "pxa910-ssp",         PXA910_SSP },
-       { },
-};
-
-static struct platform_driver pxa_ssp_driver = {
-       .probe          = pxa_ssp_probe,
-       .remove         = pxa_ssp_remove,
-       .driver         = {
-               .name           = "pxa2xx-ssp",
-               .of_match_table = of_match_ptr(pxa_ssp_of_ids),
-       },
-       .id_table       = ssp_id_table,
-};
-
-static int __init pxa_ssp_init(void)
-{
-       return platform_driver_register(&pxa_ssp_driver);
-}
-
-static void __exit pxa_ssp_exit(void)
-{
-       platform_driver_unregister(&pxa_ssp_driver);
-}
-
-arch_initcall(pxa_ssp_init);
-module_exit(pxa_ssp_exit);
-
-MODULE_DESCRIPTION("PXA SSP driver");
-MODULE_AUTHOR("Liam Girdwood");
-MODULE_LICENSE("GPL");
index cd72eaa1168f70c1415d663d1f01795dacb30b0c..e70e529ddd914d0ff98e3452df6560505860c79f 100644 (file)
@@ -732,16 +732,7 @@ static struct platform_device db1300_lcd_dev = {
 /**********************************************************************/
 
 #if IS_ENABLED(CONFIG_TOUCHSCREEN_WM97XX)
-static void db1300_wm97xx_irqen(struct wm97xx *wm, int enable)
-{
-       if (enable)
-               enable_irq(DB1300_AC97_PEN_INT);
-       else
-               disable_irq_nosync(DB1300_AC97_PEN_INT);
-}
-
 static struct wm97xx_mach_ops db1300_wm97xx_ops = {
-       .irq_enable     = db1300_wm97xx_irqen,
        .irq_gpio       = WM97XX_GPIO_3,
 };
 
index 2448441571ed64fb5d031edf1bab5d5a995c816c..400e65190904fd04868871df36491b36de53fa00 100644 (file)
@@ -25,7 +25,6 @@
 #include <linux/gpio/consumer.h>
 
 #include <scsi/scsi_host.h>
-#include <mach/palmld.h>
 
 #define DRV_NAME "pata_palmld"
 
@@ -63,7 +62,7 @@ static int palmld_pata_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        /* remap drive's physical memory address */
-       mem = devm_ioremap(dev, PALMLD_IDE_PHYS, 0x1000);
+       mem = devm_platform_ioremap_resource(pdev, 0);
        if (!mem)
                return -ENOMEM;
 
index cfc79f942b07eea72dc5562350caad5d38dea107..03de634efc5249c6bef7d54f3ca0764c12197758 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/clkdev.h>
 #include <linux/io.h>
 #include <linux/of.h>
+#include <linux/soc/pxa/smemc.h>
 
 #include <dt-bindings/clock/pxa-clock.h>
 #include "clk-pxa.h"
@@ -94,7 +95,8 @@ void __init clkdev_pxa_register(int ckid, const char *con_id,
                clk_register_clkdev(clk, con_id, dev_id);
 }
 
-int __init clk_pxa_cken_init(const struct desc_clk_cken *clks, int nb_clks)
+int __init clk_pxa_cken_init(const struct desc_clk_cken *clks,
+                            int nb_clks, void __iomem *clk_regs)
 {
        int i;
        struct pxa_clk *pxa_clk;
@@ -106,6 +108,7 @@ int __init clk_pxa_cken_init(const struct desc_clk_cken *clks, int nb_clks)
                pxa_clk->lp = clks[i].lp;
                pxa_clk->hp = clks[i].hp;
                pxa_clk->gate = clks[i].gate;
+               pxa_clk->gate.reg = clk_regs + clks[i].cken_reg;
                pxa_clk->gate.lock = &pxa_clk_lock;
                clk = clk_register_composite(NULL, clks[i].name,
                                             clks[i].parent_names, 2,
@@ -150,12 +153,13 @@ void pxa2xx_core_turbo_switch(bool on)
 }
 
 void pxa2xx_cpll_change(struct pxa2xx_freq *freq,
-                       u32 (*mdrefr_dri)(unsigned int), void __iomem *mdrefr,
+                       u32 (*mdrefr_dri)(unsigned int),
                        void __iomem *cccr)
 {
        unsigned int clkcfg = freq->clkcfg;
        unsigned int unused, preset_mdrefr, postset_mdrefr;
        unsigned long flags;
+       void __iomem *mdrefr = pxa_smemc_get_mdrefr();
 
        local_irq_save(flags);
 
index 5768e0f728ce3fd32666cf5b92ce7261b9e29e68..7ec2d2821d8f4964f212cfd4f7f9800bec41e8fc 100644 (file)
 struct desc_clk_cken {
        struct clk_hw hw;
        int ckid;
+       int cken_reg;
        const char *name;
        const char *dev_id;
        const char *con_id;
@@ -119,11 +120,12 @@ struct desc_clk_cken {
 #define PXA_CKEN(_dev_id, _con_id, _name, parents, _mult_lp, _div_lp,  \
                 _mult_hp, _div_hp, is_lp, _cken_reg, _cken_bit, flag)  \
        { .ckid = CLK_ ## _name, .name = #_name,                        \
+         .cken_reg = _cken_reg,                                        \
          .dev_id = _dev_id, .con_id = _con_id, .parent_names = parents,\
          .lp = { .mult = _mult_lp, .div = _div_lp },                   \
          .hp = { .mult = _mult_hp, .div = _div_hp },                   \
          .is_in_low_power = is_lp,                                     \
-         .gate = { .reg = (void __iomem *)_cken_reg, .bit_idx = _cken_bit }, \
+         .gate = { .bit_idx = _cken_bit }, \
          .flags = flag,                                                \
        }
 #define PXA_CKEN_1RATE(dev_id, con_id, name, parents, cken_reg,                \
@@ -146,12 +148,13 @@ static inline int dummy_clk_set_parent(struct clk_hw *hw, u8 index)
 
 extern void clkdev_pxa_register(int ckid, const char *con_id,
                                const char *dev_id, struct clk *clk);
-extern int clk_pxa_cken_init(const struct desc_clk_cken *clks, int nb_clks);
+extern int clk_pxa_cken_init(const struct desc_clk_cken *clks,
+                            int nb_clks, void __iomem *clk_regs);
 void clk_pxa_dt_common_init(struct device_node *np);
 
 void pxa2xx_core_turbo_switch(bool on);
 void pxa2xx_cpll_change(struct pxa2xx_freq *freq,
-                       u32 (*mdrefr_dri)(unsigned int), void __iomem *mdrefr,
+                       u32 (*mdrefr_dri)(unsigned int),
                        void __iomem *cccr);
 int pxa2xx_determine_rate(struct clk_rate_request *req,
                          struct pxa2xx_freq *freqs,  int nb_freqs);
index d0f957996acb9d9a35c7c33f87d93bec9399841c..93d5907b8530134625692047917652fe2c935495 100644 (file)
 #include <linux/clkdev.h>
 #include <linux/io.h>
 #include <linux/of.h>
-#include <mach/pxa2xx-regs.h>
-#include <mach/smemc.h>
+#include <linux/soc/pxa/smemc.h>
 
 #include <dt-bindings/clock/pxa-clock.h>
 #include "clk-pxa.h"
+#include "clk-pxa2xx.h"
 
 #define KHz 1000
 #define MHz (1000 * 1000)
@@ -33,15 +33,13 @@ enum {
         ((T) ? CLKCFG_TURBO : 0))
 #define PXA25x_CCCR(N2, M, L) (N2 << 7 | M << 5 | L)
 
-#define MDCNFG_DRAC2(mdcnfg)   (((mdcnfg) >> 21) & 0x3)
-#define MDCNFG_DRAC0(mdcnfg)   (((mdcnfg) >> 5) & 0x3)
-
 /* Define the refresh period in mSec for the SDRAM and the number of rows */
 #define SDRAM_TREF     64      /* standard 64ms SDRAM */
 
 /*
  * Various clock factors driven by the CCCR register.
  */
+static void __iomem *clk_regs;
 
 /* Crystal Frequency to Memory Frequency Multiplier (L) */
 static unsigned char L_clk_mult[32] = { 0, 27, 32, 36, 40, 45, 0, };
@@ -57,30 +55,9 @@ static const char * const get_freq_khz[] = {
        "core", "run", "cpll", "memory"
 };
 
-static int get_sdram_rows(void)
-{
-       static int sdram_rows;
-       unsigned int drac2 = 0, drac0 = 0;
-       u32 mdcnfg;
-
-       if (sdram_rows)
-               return sdram_rows;
-
-       mdcnfg = readl_relaxed(MDCNFG);
-
-       if (mdcnfg & (MDCNFG_DE2 | MDCNFG_DE3))
-               drac2 = MDCNFG_DRAC2(mdcnfg);
-
-       if (mdcnfg & (MDCNFG_DE0 | MDCNFG_DE1))
-               drac0 = MDCNFG_DRAC0(mdcnfg);
-
-       sdram_rows = 1 << (11 + max(drac0, drac2));
-       return sdram_rows;
-}
-
 static u32 mdrefr_dri(unsigned int freq_khz)
 {
-       u32 interval = freq_khz * SDRAM_TREF / get_sdram_rows();
+       u32 interval = freq_khz * SDRAM_TREF / pxa2xx_smemc_get_sdram_rows();
 
        return interval / 32;
 }
@@ -121,7 +98,7 @@ unsigned int pxa25x_get_clk_frequency_khz(int info)
 static unsigned long clk_pxa25x_memory_get_rate(struct clk_hw *hw,
                                                unsigned long parent_rate)
 {
-       unsigned long cccr = readl(CCCR);
+       unsigned long cccr = readl(clk_regs + CCCR);
        unsigned int m = M_clk_mult[(cccr >> 5) & 0x03];
 
        return parent_rate / m;
@@ -225,7 +202,7 @@ MUX_OPS(clk_pxa25x_core, "core", CLK_SET_RATE_PARENT);
 static unsigned long clk_pxa25x_run_get_rate(struct clk_hw *hw,
                                             unsigned long parent_rate)
 {
-       unsigned long cccr = readl(CCCR);
+       unsigned long cccr = readl(clk_regs + CCCR);
        unsigned int n2 = N2_clk_mult[(cccr >> 7) & 0x07];
 
        return (parent_rate / n2) * 2;
@@ -236,7 +213,7 @@ RATE_RO_OPS(clk_pxa25x_run, "run");
 static unsigned long clk_pxa25x_cpll_get_rate(struct clk_hw *hw,
        unsigned long parent_rate)
 {
-       unsigned long clkcfg, cccr = readl(CCCR);
+       unsigned long clkcfg, cccr = readl(clk_regs + CCCR);
        unsigned int l, m, n2, t;
 
        asm("mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg));
@@ -268,7 +245,7 @@ static int clk_pxa25x_cpll_set_rate(struct clk_hw *hw, unsigned long rate,
        if (i >= ARRAY_SIZE(pxa25x_freqs))
                return -EINVAL;
 
-       pxa2xx_cpll_change(&pxa25x_freqs[i], mdrefr_dri, MDREFR, CCCR);
+       pxa2xx_cpll_change(&pxa25x_freqs[i], mdrefr_dri, clk_regs + CCCR);
 
        return 0;
 }
@@ -345,16 +322,17 @@ static void __init pxa25x_dummy_clocks_init(void)
        }
 }
 
-int __init pxa25x_clocks_init(void)
+int __init pxa25x_clocks_init(void __iomem *regs)
 {
+       clk_regs = regs;
        pxa25x_base_clocks_init();
        pxa25x_dummy_clocks_init();
-       return clk_pxa_cken_init(pxa25x_clocks, ARRAY_SIZE(pxa25x_clocks));
+       return clk_pxa_cken_init(pxa25x_clocks, ARRAY_SIZE(pxa25x_clocks), clk_regs);
 }
 
 static void __init pxa25x_dt_clocks_init(struct device_node *np)
 {
-       pxa25x_clocks_init();
+       pxa25x_clocks_init(ioremap(0x41300000ul, 0x10));
        clk_pxa_dt_common_init(np);
 }
 CLK_OF_DECLARE(pxa25x_clks, "marvell,pxa250-core-clocks",
index 7b123105b5de40d38d02e8d8b04cda2b1b31ab65..116c6ac666e3c0b14c1f42a0c43143ceb84b56fb 100644 (file)
@@ -7,16 +7,15 @@
  * Heavily inspired from former arch/arm/mach-pxa/clock.c.
  */
 #include <linux/clk-provider.h>
-#include <mach/pxa2xx-regs.h>
 #include <linux/io.h>
 #include <linux/clk.h>
 #include <linux/clkdev.h>
 #include <linux/of.h>
-
-#include <mach/smemc.h>
+#include <linux/soc/pxa/smemc.h>
 
 #include <dt-bindings/clock/pxa-clock.h>
 #include "clk-pxa.h"
+#include "clk-pxa2xx.h"
 
 #define KHz 1000
 #define MHz (1000 * 1000)
@@ -50,41 +49,19 @@ enum {
         ((T)  ? CLKCFG_TURBO : 0))
 #define PXA27x_CCCR(A, L, N2) (A << 25 | N2 << 7 | L)
 
-#define MDCNFG_DRAC2(mdcnfg)   (((mdcnfg) >> 21) & 0x3)
-#define MDCNFG_DRAC0(mdcnfg)   (((mdcnfg) >> 5) & 0x3)
-
 /* Define the refresh period in mSec for the SDRAM and the number of rows */
 #define SDRAM_TREF     64      /* standard 64ms SDRAM */
 
+static void __iomem *clk_regs;
+
 static const char * const get_freq_khz[] = {
        "core", "run", "cpll", "memory",
        "system_bus"
 };
 
-static int get_sdram_rows(void)
-{
-       static int sdram_rows;
-       unsigned int drac2 = 0, drac0 = 0;
-       u32 mdcnfg;
-
-       if (sdram_rows)
-               return sdram_rows;
-
-       mdcnfg = readl_relaxed(MDCNFG);
-
-       if (mdcnfg & (MDCNFG_DE2 | MDCNFG_DE3))
-               drac2 = MDCNFG_DRAC2(mdcnfg);
-
-       if (mdcnfg & (MDCNFG_DE0 | MDCNFG_DE1))
-               drac0 = MDCNFG_DRAC0(mdcnfg);
-
-       sdram_rows = 1 << (11 + max(drac0, drac2));
-       return sdram_rows;
-}
-
 static u32 mdrefr_dri(unsigned int freq_khz)
 {
-       u32 interval = freq_khz * SDRAM_TREF / get_sdram_rows();
+       u32 interval = freq_khz * SDRAM_TREF / pxa2xx_smemc_get_sdram_rows();
 
        return (interval - 31) / 32;
 }
@@ -124,7 +101,7 @@ unsigned int pxa27x_get_clk_frequency_khz(int info)
 
 bool pxa27x_is_ppll_disabled(void)
 {
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        return ccsr & (1 << CCCR_PPDIS_BIT);
 }
@@ -226,7 +203,7 @@ static unsigned long clk_pxa27x_cpll_get_rate(struct clk_hw *hw,
        unsigned long clkcfg;
        unsigned int t, ht;
        unsigned int l, L, n2, N;
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        asm("mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg));
        t  = clkcfg & (1 << 0);
@@ -260,7 +237,7 @@ static int clk_pxa27x_cpll_set_rate(struct clk_hw *hw, unsigned long rate,
        if (i >= ARRAY_SIZE(pxa27x_freqs))
                return -EINVAL;
 
-       pxa2xx_cpll_change(&pxa27x_freqs[i], mdrefr_dri, MDREFR, CCCR);
+       pxa2xx_cpll_change(&pxa27x_freqs[i], mdrefr_dri, clk_regs + CCCR);
        return 0;
 }
 
@@ -271,8 +248,8 @@ static unsigned long clk_pxa27x_lcd_base_get_rate(struct clk_hw *hw,
                                                  unsigned long parent_rate)
 {
        unsigned int l, osc_forced;
-       unsigned long ccsr = readl(CCSR);
-       unsigned long cccr = readl(CCCR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
+       unsigned long cccr = readl(clk_regs + CCCR);
 
        l  = ccsr & CCSR_L_MASK;
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
@@ -293,7 +270,7 @@ static unsigned long clk_pxa27x_lcd_base_get_rate(struct clk_hw *hw,
 static u8 clk_pxa27x_lcd_base_get_parent(struct clk_hw *hw)
 {
        unsigned int osc_forced;
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
        if (osc_forced)
@@ -322,7 +299,7 @@ static u8 clk_pxa27x_core_get_parent(struct clk_hw *hw)
 {
        unsigned long clkcfg;
        unsigned int t, ht, osc_forced;
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
        if (osc_forced)
@@ -359,7 +336,7 @@ MUX_OPS(clk_pxa27x_core, "core", CLK_SET_RATE_PARENT);
 static unsigned long clk_pxa27x_run_get_rate(struct clk_hw *hw,
                                             unsigned long parent_rate)
 {
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
        unsigned int n2 = (ccsr & CCSR_N2_MASK) >> CCSR_N2_SHIFT;
 
        return (parent_rate / n2) * 2;
@@ -382,7 +359,7 @@ static unsigned long clk_pxa27x_system_bus_get_rate(struct clk_hw *hw,
 {
        unsigned long clkcfg;
        unsigned int b, osc_forced;
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
        asm("mrc\tp14, 0, %0, c6, c0, 0" : "=r" (clkcfg));
@@ -399,7 +376,7 @@ static unsigned long clk_pxa27x_system_bus_get_rate(struct clk_hw *hw,
 static u8 clk_pxa27x_system_bus_get_parent(struct clk_hw *hw)
 {
        unsigned int osc_forced;
-       unsigned long ccsr = readl(CCSR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
        if (osc_forced)
@@ -415,8 +392,8 @@ static unsigned long clk_pxa27x_memory_get_rate(struct clk_hw *hw,
                                                unsigned long parent_rate)
 {
        unsigned int a, l, osc_forced;
-       unsigned long cccr = readl(CCCR);
-       unsigned long ccsr = readl(CCSR);
+       unsigned long cccr = readl(clk_regs + CCCR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
        a = cccr & (1 << CCCR_A_BIT);
@@ -434,8 +411,8 @@ static unsigned long clk_pxa27x_memory_get_rate(struct clk_hw *hw,
 static u8 clk_pxa27x_memory_get_parent(struct clk_hw *hw)
 {
        unsigned int osc_forced, a;
-       unsigned long cccr = readl(CCCR);
-       unsigned long ccsr = readl(CCSR);
+       unsigned long cccr = readl(clk_regs + CCCR);
+       unsigned long ccsr = readl(clk_regs + CCSR);
 
        osc_forced = ccsr & (1 << CCCR_CPDIS_BIT);
        a = cccr & (1 << CCCR_A_BIT);
@@ -490,16 +467,17 @@ static void __init pxa27x_base_clocks_init(void)
        clk_register_clk_pxa27x_lcd_base();
 }
 
-int __init pxa27x_clocks_init(void)
+int __init pxa27x_clocks_init(void __iomem *regs)
 {
+       clk_regs = regs;
        pxa27x_base_clocks_init();
        pxa27x_dummy_clocks_init();
-       return clk_pxa_cken_init(pxa27x_clocks, ARRAY_SIZE(pxa27x_clocks));
+       return clk_pxa_cken_init(pxa27x_clocks, ARRAY_SIZE(pxa27x_clocks), regs);
 }
 
 static void __init pxa27x_dt_clocks_init(struct device_node *np)
 {
-       pxa27x_clocks_init();
+       pxa27x_clocks_init(ioremap(0x41300000ul, 0x10));
        clk_pxa_dt_common_init(np);
 }
 CLK_OF_DECLARE(pxa_clks, "marvell,pxa270-clocks", pxa27x_dt_clocks_init);
diff --git a/drivers/clk/pxa/clk-pxa2xx.h b/drivers/clk/pxa/clk-pxa2xx.h
new file mode 100644 (file)
index 0000000..94b03d0
--- /dev/null
@@ -0,0 +1,58 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __CLK_PXA2XX_H
+#define __CLK_PXA2XX_H
+
+#define CCCR           (0x0000)  /* Core Clock Configuration Register */
+#define CCSR           (0x000C)  /* Core Clock Status Register */
+#define CKEN           (0x0004)  /* Clock Enable Register */
+#define OSCC           (0x0008)  /* Oscillator Configuration Register */
+
+#define CCCR_N_MASK    0x0380  /* Run Mode Frequency to Turbo Mode Frequency Multiplier */
+#define CCCR_M_MASK    0x0060  /* Memory Frequency to Run Mode Frequency Multiplier */
+#define CCCR_L_MASK    0x001f  /* Crystal Frequency to Memory Frequency Multiplier */
+
+#define CCCR_CPDIS_BIT (31)
+#define CCCR_PPDIS_BIT (30)
+#define CCCR_LCD_26_BIT        (27)
+#define CCCR_A_BIT     (25)
+
+#define CCSR_N2_MASK   CCCR_N_MASK
+#define CCSR_M_MASK    CCCR_M_MASK
+#define CCSR_L_MASK    CCCR_L_MASK
+#define CCSR_N2_SHIFT  7
+
+#define CKEN_AC97CONF   (31)    /* AC97 Controller Configuration */
+#define CKEN_CAMERA    (24)    /* Camera Interface Clock Enable */
+#define CKEN_SSP1      (23)    /* SSP1 Unit Clock Enable */
+#define CKEN_MEMC      (22)    /* Memory Controller Clock Enable */
+#define CKEN_MEMSTK    (21)    /* Memory Stick Host Controller */
+#define CKEN_IM                (20)    /* Internal Memory Clock Enable */
+#define CKEN_KEYPAD    (19)    /* Keypad Interface Clock Enable */
+#define CKEN_USIM      (18)    /* USIM Unit Clock Enable */
+#define CKEN_MSL       (17)    /* MSL Unit Clock Enable */
+#define CKEN_LCD       (16)    /* LCD Unit Clock Enable */
+#define CKEN_PWRI2C    (15)    /* PWR I2C Unit Clock Enable */
+#define CKEN_I2C       (14)    /* I2C Unit Clock Enable */
+#define CKEN_FICP      (13)    /* FICP Unit Clock Enable */
+#define CKEN_MMC       (12)    /* MMC Unit Clock Enable */
+#define CKEN_USB       (11)    /* USB Unit Clock Enable */
+#define CKEN_ASSP      (10)    /* ASSP (SSP3) Clock Enable */
+#define CKEN_USBHOST   (10)    /* USB Host Unit Clock Enable */
+#define CKEN_OSTIMER   (9)     /* OS Timer Unit Clock Enable */
+#define CKEN_NSSP      (9)     /* NSSP (SSP2) Clock Enable */
+#define CKEN_I2S       (8)     /* I2S Unit Clock Enable */
+#define CKEN_BTUART    (7)     /* BTUART Unit Clock Enable */
+#define CKEN_FFUART    (6)     /* FFUART Unit Clock Enable */
+#define CKEN_STUART    (5)     /* STUART Unit Clock Enable */
+#define CKEN_HWUART    (4)     /* HWUART Unit Clock Enable */
+#define CKEN_SSP3      (4)     /* SSP3 Unit Clock Enable */
+#define CKEN_SSP       (3)     /* SSP Unit Clock Enable */
+#define CKEN_SSP2      (3)     /* SSP2 Unit Clock Enable */
+#define CKEN_AC97      (2)     /* AC97 Unit Clock Enable */
+#define CKEN_PWM1      (1)     /* PWM1 Clock Enable */
+#define CKEN_PWM0      (0)     /* PWM0 Clock Enable */
+
+#define OSCC_OON       (1 << 1)        /* 32.768kHz OON (write-once only bit) */
+#define OSCC_OOK       (1 << 0)        /* 32.768kHz OOK (read-only bit) */
+
+#endif
index 60db92772e72c1a56a2a898ed65bbdd7ec6dd7e6..42958a5426625a85af8935484bb13bd0bb576b20 100644 (file)
@@ -14,8 +14,9 @@
 #include <linux/clk-provider.h>
 #include <linux/clkdev.h>
 #include <linux/of.h>
-#include <mach/smemc.h>
-#include <mach/pxa3xx-regs.h>
+#include <linux/soc/pxa/cpu.h>
+#include <linux/soc/pxa/smemc.h>
+#include <linux/clk/pxa.h>
 
 #include <dt-bindings/clock/pxa-clock.h>
 #include "clk-pxa.h"
 #define KHz 1000
 #define MHz (1000 * 1000)
 
+#define ACCR                   (0x0000)        /* Application Subsystem Clock Configuration Register */
+#define ACSR                   (0x0004)        /* Application Subsystem Clock Status Register */
+#define AICSR                  (0x0008)        /* Application Subsystem Interrupt Control/Status Register */
+#define CKENA                  (0x000C)        /* A Clock Enable Register */
+#define CKENB                  (0x0010)        /* B Clock Enable Register */
+#define CKENC                  (0x0024)        /* C Clock Enable Register */
+#define AC97_DIV               (0x0014)        /* AC97 clock divisor value register */
+
+#define ACCR_XPDIS             (1 << 31)       /* Core PLL Output Disable */
+#define ACCR_SPDIS             (1 << 30)       /* System PLL Output Disable */
+#define ACCR_D0CS              (1 << 26)       /* D0 Mode Clock Select */
+#define ACCR_PCCE              (1 << 11)       /* Power Mode Change Clock Enable */
+#define ACCR_DDR_D0CS          (1 << 7)        /* DDR SDRAM clock frequency in D0CS (PXA31x only) */
+
+#define ACCR_SMCFS_MASK                (0x7 << 23)     /* Static Memory Controller Frequency Select */
+#define ACCR_SFLFS_MASK                (0x3 << 18)     /* Frequency Select for Internal Memory Controller */
+#define ACCR_XSPCLK_MASK       (0x3 << 16)     /* Core Frequency during Frequency Change */
+#define ACCR_HSS_MASK          (0x3 << 14)     /* System Bus-Clock Frequency Select */
+#define ACCR_DMCFS_MASK                (0x3 << 12)     /* Dynamic Memory Controller Clock Frequency Select */
+#define ACCR_XN_MASK           (0x7 << 8)      /* Core PLL Turbo-Mode-to-Run-Mode Ratio */
+#define ACCR_XL_MASK           (0x1f)          /* Core PLL Run-Mode-to-Oscillator Ratio */
+
+#define ACCR_SMCFS(x)          (((x) & 0x7) << 23)
+#define ACCR_SFLFS(x)          (((x) & 0x3) << 18)
+#define ACCR_XSPCLK(x)         (((x) & 0x3) << 16)
+#define ACCR_HSS(x)            (((x) & 0x3) << 14)
+#define ACCR_DMCFS(x)          (((x) & 0x3) << 12)
+#define ACCR_XN(x)             (((x) & 0x7) << 8)
+#define ACCR_XL(x)             ((x) & 0x1f)
+
+/*
+ * Clock Enable Bit
+ */
+#define CKEN_LCD       1       /* < LCD Clock Enable */
+#define CKEN_USBH      2       /* < USB host clock enable */
+#define CKEN_CAMERA    3       /* < Camera interface clock enable */
+#define CKEN_NAND      4       /* < NAND Flash Controller Clock Enable */
+#define CKEN_USB2      6       /* < USB 2.0 client clock enable. */
+#define CKEN_DMC       8       /* < Dynamic Memory Controller clock enable */
+#define CKEN_SMC       9       /* < Static Memory Controller clock enable */
+#define CKEN_ISC       10      /* < Internal SRAM Controller clock enable */
+#define CKEN_BOOT      11      /* < Boot rom clock enable */
+#define CKEN_MMC1      12      /* < MMC1 Clock enable */
+#define CKEN_MMC2      13      /* < MMC2 clock enable */
+#define CKEN_KEYPAD    14      /* < Keypand Controller Clock Enable */
+#define CKEN_CIR       15      /* < Consumer IR Clock Enable */
+#define CKEN_USIM0     17      /* < USIM[0] Clock Enable */
+#define CKEN_USIM1     18      /* < USIM[1] Clock Enable */
+#define CKEN_TPM       19      /* < TPM clock enable */
+#define CKEN_UDC       20      /* < UDC clock enable */
+#define CKEN_BTUART    21      /* < BTUART clock enable */
+#define CKEN_FFUART    22      /* < FFUART clock enable */
+#define CKEN_STUART    23      /* < STUART clock enable */
+#define CKEN_AC97      24      /* < AC97 clock enable */
+#define CKEN_TOUCH     25      /* < Touch screen Interface Clock Enable */
+#define CKEN_SSP1      26      /* < SSP1 clock enable */
+#define CKEN_SSP2      27      /* < SSP2 clock enable */
+#define CKEN_SSP3      28      /* < SSP3 clock enable */
+#define CKEN_SSP4      29      /* < SSP4 clock enable */
+#define CKEN_MSL0      30      /* < MSL0 clock enable */
+#define CKEN_PWM0      32      /* < PWM[0] clock enable */
+#define CKEN_PWM1      33      /* < PWM[1] clock enable */
+#define CKEN_I2C       36      /* < I2C clock enable */
+#define CKEN_INTC      38      /* < Interrupt controller clock enable */
+#define CKEN_GPIO      39      /* < GPIO clock enable */
+#define CKEN_1WIRE     40      /* < 1-wire clock enable */
+#define CKEN_HSIO2     41      /* < HSIO2 clock enable */
+#define CKEN_MINI_IM   48      /* < Mini-IM */
+#define CKEN_MINI_LCD  49      /* < Mini LCD */
+
+#define CKEN_MMC3      5       /* < MMC3 Clock Enable */
+#define CKEN_MVED      43      /* < MVED clock enable */
+
+/* Note: GCU clock enable bit differs on PXA300/PXA310 and PXA320 */
+#define CKEN_PXA300_GCU                42      /* Graphics controller clock enable */
+#define CKEN_PXA320_GCU                7       /* Graphics controller clock enable */
+
+
 enum {
        PXA_CORE_60Mhz = 0,
        PXA_CORE_RUN,
@@ -39,12 +118,12 @@ static unsigned char hss_mult[4] = { 8, 12, 16, 24 };
 
 /* crystal frequency to static memory controller multiplier (SMCFS) */
 static unsigned int smcfs_mult[8] = { 6, 0, 8, 0, 0, 16, };
-static unsigned int df_clkdiv[4] = { 1, 2, 4, 1 };
-
 static const char * const get_freq_khz[] = {
        "core", "ring_osc_60mhz", "run", "cpll", "system_bus"
 };
 
+static void __iomem *clk_regs;
+
 /*
  * Get the clock frequency as reflected by ACSR and the turbo flag.
  * We assume these values have been applied via a fcs.
@@ -78,12 +157,27 @@ unsigned int pxa3xx_get_clk_frequency_khz(int info)
        return (unsigned int)clks[0] / KHz;
 }
 
+void pxa3xx_clk_update_accr(u32 disable, u32 enable, u32 xclkcfg, u32 mask)
+{
+       u32 accr = readl(clk_regs + ACCR);
+
+       accr &= ~disable;
+       accr |= enable;
+
+       writel(accr, ACCR);
+       if (xclkcfg)
+               __asm__("mcr p14, 0, %0, c6, c0, 0\n" : : "r"(xclkcfg));
+
+       while ((readl(clk_regs + ACSR) & mask) != (accr & mask))
+               cpu_relax();
+}
+
 static unsigned long clk_pxa3xx_ac97_get_rate(struct clk_hw *hw,
                                             unsigned long parent_rate)
 {
        unsigned long ac97_div, rate;
 
-       ac97_div = AC97_DIV;
+       ac97_div = readl(clk_regs + AC97_DIV);
 
        /* This may loose precision for some rates but won't for the
         * standard 24.576MHz.
@@ -100,18 +194,18 @@ RATE_RO_OPS(clk_pxa3xx_ac97, "ac97");
 static unsigned long clk_pxa3xx_smemc_get_rate(struct clk_hw *hw,
                                              unsigned long parent_rate)
 {
-       unsigned long acsr = ACSR;
-       unsigned long memclkcfg = __raw_readl(MEMCLKCFG);
+       unsigned long acsr = readl(clk_regs + ACSR);
 
        return (parent_rate / 48)  * smcfs_mult[(acsr >> 23) & 0x7] /
-               df_clkdiv[(memclkcfg >> 16) & 0x3];
+               pxa3xx_smemc_get_memclkdiv();
+
 }
 PARENTS(clk_pxa3xx_smemc) = { "spll_624mhz" };
 RATE_RO_OPS(clk_pxa3xx_smemc, "smemc");
 
 static bool pxa3xx_is_ring_osc_forced(void)
 {
-       unsigned long acsr = ACSR;
+       unsigned long acsr = readl(clk_regs + ACSR);
 
        return acsr & ACCR_D0CS;
 }
@@ -123,7 +217,7 @@ PARENTS(pxa3xx_ac97_bus) = { "ring_osc_60mhz", "ac97" };
 PARENTS(pxa3xx_sbus) = { "ring_osc_60mhz", "system_bus" };
 PARENTS(pxa3xx_smemcbus) = { "ring_osc_60mhz", "smemc" };
 
-#define CKEN_AB(bit) ((CKEN_ ## bit > 31) ? &CKENB : &CKENA)
+#define CKEN_AB(bit) ((CKEN_ ## bit > 31) ? CKENB : CKENA)
 #define PXA3XX_CKEN(dev_id, con_id, parents, mult_lp, div_lp, mult_hp, \
                    div_hp, bit, is_lp, flags)                          \
        PXA_CKEN(dev_id, con_id, bit, parents, mult_lp, div_lp,         \
@@ -191,7 +285,7 @@ static struct desc_clk_cken pxa93x_clocks[] __initdata = {
 static unsigned long clk_pxa3xx_system_bus_get_rate(struct clk_hw *hw,
                                            unsigned long parent_rate)
 {
-       unsigned long acsr = ACSR;
+       unsigned long acsr = readl(clk_regs + ACSR);
        unsigned int hss = (acsr >> 14) & 0x3;
 
        if (pxa3xx_is_ring_osc_forced())
@@ -238,7 +332,7 @@ MUX_RO_RATE_RO_OPS(clk_pxa3xx_core, "core");
 static unsigned long clk_pxa3xx_run_get_rate(struct clk_hw *hw,
                                             unsigned long parent_rate)
 {
-       unsigned long acsr = ACSR;
+       unsigned long acsr = readl(clk_regs + ACSR);
        unsigned int xn = (acsr & ACCR_XN_MASK) >> 8;
        unsigned int t, xclkcfg;
 
@@ -254,7 +348,7 @@ RATE_RO_OPS(clk_pxa3xx_run, "run");
 static unsigned long clk_pxa3xx_cpll_get_rate(struct clk_hw *hw,
        unsigned long parent_rate)
 {
-       unsigned long acsr = ACSR;
+       unsigned long acsr = readl(clk_regs + ACSR);
        unsigned int xn = (acsr & ACCR_XN_MASK) >> 8;
        unsigned int xl = acsr & ACCR_XL_MASK;
        unsigned int t, xclkcfg;
@@ -325,7 +419,7 @@ static void __init pxa3xx_dummy_clocks_init(void)
        }
 }
 
-static void __init pxa3xx_base_clocks_init(void)
+static void __init pxa3xx_base_clocks_init(void __iomem *oscc_reg)
 {
        struct clk *clk;
 
@@ -335,34 +429,35 @@ static void __init pxa3xx_base_clocks_init(void)
        clk_register_clk_pxa3xx_ac97();
        clk_register_clk_pxa3xx_smemc();
        clk = clk_register_gate(NULL, "CLK_POUT",
-                               "osc_13mhz", 0, OSCC, 11, 0, NULL);
+                               "osc_13mhz", 0, oscc_reg, 11, 0, NULL);
        clk_register_clkdev(clk, "CLK_POUT", NULL);
        clkdev_pxa_register(CLK_OSTIMER, "OSTIMER0", NULL,
                            clk_register_fixed_factor(NULL, "os-timer0",
                                                      "osc_13mhz", 0, 1, 4));
 }
 
-int __init pxa3xx_clocks_init(void)
+int __init pxa3xx_clocks_init(void __iomem *regs, void __iomem *oscc_reg)
 {
        int ret;
 
-       pxa3xx_base_clocks_init();
+       clk_regs = regs;
+       pxa3xx_base_clocks_init(oscc_reg);
        pxa3xx_dummy_clocks_init();
-       ret = clk_pxa_cken_init(pxa3xx_clocks, ARRAY_SIZE(pxa3xx_clocks));
+       ret = clk_pxa_cken_init(pxa3xx_clocks, ARRAY_SIZE(pxa3xx_clocks), regs);
        if (ret)
                return ret;
        if (cpu_is_pxa320())
                return clk_pxa_cken_init(pxa320_clocks,
-                                        ARRAY_SIZE(pxa320_clocks));
+                                        ARRAY_SIZE(pxa320_clocks), regs);
        if (cpu_is_pxa300() || cpu_is_pxa310())
                return clk_pxa_cken_init(pxa300_310_clocks,
-                                        ARRAY_SIZE(pxa300_310_clocks));
-       return clk_pxa_cken_init(pxa93x_clocks, ARRAY_SIZE(pxa93x_clocks));
+                                        ARRAY_SIZE(pxa300_310_clocks), regs);
+       return clk_pxa_cken_init(pxa93x_clocks, ARRAY_SIZE(pxa93x_clocks), regs);
 }
 
 static void __init pxa3xx_dt_clocks_init(struct device_node *np)
 {
-       pxa3xx_clocks_init();
+       pxa3xx_clocks_init(ioremap(0x41340000, 0x10), ioremap(0x41350000, 4));
        clk_pxa_dt_common_init(np);
 }
 CLK_OF_DECLARE(pxa_clks, "marvell,pxa300-clocks", pxa3xx_dt_clocks_init);
index f0b6f52eb2c35e30f1452164becde44a5f2f5544..ed1ae061a6872a63f8116fe3472112a312e21a8f 100644 (file)
 #include <linux/cpufreq.h>
 #include <linux/err.h>
 #include <linux/regulator/consumer.h>
+#include <linux/soc/pxa/cpu.h>
 #include <linux/io.h>
 
-#include <mach/pxa2xx-regs.h>
-#include <mach/smemc.h>
-
 #ifdef DEBUG
 static unsigned int freq_debug;
 module_param(freq_debug, uint, 0);
@@ -106,8 +104,6 @@ static struct pxa_freqs pxa27x_freqs[] = {
 static struct cpufreq_frequency_table
        pxa27x_freq_table[NUM_PXA27x_FREQS+1];
 
-extern unsigned get_clk_frequency_khz(int info);
-
 #ifdef CONFIG_REGULATOR
 
 static int pxa_cpufreq_change_voltage(const struct pxa_freqs *pxa_freq)
index 32f993c94675332191ea874264298d1805f3d0f0..4afa48d172dbe0ae56d8f4adf19a0663bead7610 100644 (file)
@@ -8,12 +8,11 @@
 #include <linux/sched.h>
 #include <linux/init.h>
 #include <linux/cpufreq.h>
+#include <linux/soc/pxa/cpu.h>
+#include <linux/clk/pxa.h>
 #include <linux/slab.h>
 #include <linux/io.h>
 
-#include <mach/generic.h>
-#include <mach/pxa3xx-regs.h>
-
 #define HSS_104M       (0)
 #define HSS_156M       (1)
 #define HSS_208M       (2)
 #define DMCFS_26M      (0)
 #define DMCFS_260M     (3)
 
+#define ACCR_XPDIS             (1 << 31)       /* Core PLL Output Disable */
+#define ACCR_SPDIS             (1 << 30)       /* System PLL Output Disable */
+#define ACCR_D0CS              (1 << 26)       /* D0 Mode Clock Select */
+#define ACCR_PCCE              (1 << 11)       /* Power Mode Change Clock Enable */
+#define ACCR_DDR_D0CS          (1 << 7)        /* DDR SDRAM clock frequency in D0CS (PXA31x only) */
+
+#define ACCR_SMCFS_MASK                (0x7 << 23)     /* Static Memory Controller Frequency Select */
+#define ACCR_SFLFS_MASK                (0x3 << 18)     /* Frequency Select for Internal Memory Controller */
+#define ACCR_XSPCLK_MASK       (0x3 << 16)     /* Core Frequency during Frequency Change */
+#define ACCR_HSS_MASK          (0x3 << 14)     /* System Bus-Clock Frequency Select */
+#define ACCR_DMCFS_MASK                (0x3 << 12)     /* Dynamic Memory Controller Clock Frequency Select */
+#define ACCR_XN_MASK           (0x7 << 8)      /* Core PLL Turbo-Mode-to-Run-Mode Ratio */
+#define ACCR_XL_MASK           (0x1f)          /* Core PLL Run-Mode-to-Oscillator Ratio */
+
+#define ACCR_SMCFS(x)          (((x) & 0x7) << 23)
+#define ACCR_SFLFS(x)          (((x) & 0x3) << 18)
+#define ACCR_XSPCLK(x)         (((x) & 0x3) << 16)
+#define ACCR_HSS(x)            (((x) & 0x3) << 14)
+#define ACCR_DMCFS(x)          (((x) & 0x3) << 12)
+#define ACCR_XN(x)             (((x) & 0x7) << 8)
+#define ACCR_XL(x)             ((x) & 0x1f)
+
 struct pxa3xx_freq_info {
        unsigned int cpufreq_mhz;
        unsigned int core_xl : 5;
@@ -111,41 +132,29 @@ static int setup_freqs_table(struct cpufreq_policy *policy,
 
 static void __update_core_freq(struct pxa3xx_freq_info *info)
 {
-       uint32_t mask = ACCR_XN_MASK | ACCR_XL_MASK;
-       uint32_t accr = ACCR;
-       uint32_t xclkcfg;
-
-       accr &= ~(ACCR_XN_MASK | ACCR_XL_MASK | ACCR_XSPCLK_MASK);
-       accr |= ACCR_XN(info->core_xn) | ACCR_XL(info->core_xl);
+       u32 mask, disable, enable, xclkcfg;
 
+       mask    = ACCR_XN_MASK | ACCR_XL_MASK;
+       disable = mask | ACCR_XSPCLK_MASK;
+       enable  = ACCR_XN(info->core_xn) | ACCR_XL(info->core_xl);
        /* No clock until core PLL is re-locked */
-       accr |= ACCR_XSPCLK(XSPCLK_NONE);
-
+       enable |= ACCR_XSPCLK(XSPCLK_NONE);
        xclkcfg = (info->core_xn == 2) ? 0x3 : 0x2;     /* turbo bit */
 
-       ACCR = accr;
-       __asm__("mcr p14, 0, %0, c6, c0, 0\n" : : "r"(xclkcfg));
-
-       while ((ACSR & mask) != (accr & mask))
-               cpu_relax();
+       pxa3xx_clk_update_accr(disable, enable, xclkcfg, mask);
 }
 
 static void __update_bus_freq(struct pxa3xx_freq_info *info)
 {
-       uint32_t mask;
-       uint32_t accr = ACCR;
-
-       mask = ACCR_SMCFS_MASK | ACCR_SFLFS_MASK | ACCR_HSS_MASK |
-               ACCR_DMCFS_MASK;
-
-       accr &= ~mask;
-       accr |= ACCR_SMCFS(info->smcfs) | ACCR_SFLFS(info->sflfs) |
-               ACCR_HSS(info->hss) | ACCR_DMCFS(info->dmcfs);
+       u32 mask, disable, enable;
 
-       ACCR = accr;
+       mask    = ACCR_SMCFS_MASK | ACCR_SFLFS_MASK | ACCR_HSS_MASK |
+                 ACCR_DMCFS_MASK;
+       disable = mask;
+       enable  = ACCR_SMCFS(info->smcfs) | ACCR_SFLFS(info->sflfs) |
+                 ACCR_HSS(info->hss) | ACCR_DMCFS(info->dmcfs);
 
-       while ((ACSR & mask) != (accr & mask))
-               cpu_relax();
+       pxa3xx_clk_update_accr(disable, enable, 0, mask);
 }
 
 static unsigned int pxa3xx_cpufreq_get(unsigned int cpu)
index 3332b77eef2aecbe5748722d6ea40eae42677649..f04ba12dbfa8fa1b6e283162c5654bdad2ab9a6a 100644 (file)
@@ -15,7 +15,6 @@
 #include <linux/io.h>
 #include <linux/slab.h>
 
-#include <mach/hardware.h>
 #include <linux/platform_data/mouse-pxa930_trkball.h>
 
 /* Trackball Controller Register Definitions */
index 43c7d6e5bdc07ef992398dfae2ecb6bae09622df..2d70c945b20a972848d21601b519a83731a6629a 100644 (file)
@@ -902,6 +902,7 @@ config TOUCHSCREEN_WM9713
 config TOUCHSCREEN_WM97XX_MAINSTONE
        tristate "WM97xx Mainstone/Palm accelerated touch"
        depends on TOUCHSCREEN_WM97XX && ARCH_PXA
+       depends on SND_PXA2XX_LIB_AC97
        help
          Say Y here for support for streaming mode with WM97xx touchscreens
          on Mainstone, Palm Tungsten T5, TX and LifeDrive systems.
@@ -914,6 +915,7 @@ config TOUCHSCREEN_WM97XX_MAINSTONE
 config TOUCHSCREEN_WM97XX_ZYLONITE
        tristate "Zylonite accelerated touch"
        depends on TOUCHSCREEN_WM97XX && MACH_ZYLONITE
+       depends on SND_PXA2XX_LIB_AC97
        select TOUCHSCREEN_WM9713
        help
          Say Y here for support for streaming mode with the touchscreen
index f8564b398eb392d13765c9ddaa04e49cb978cfc7..c39f49720fe461a7adabe63a784261ecefe69d37 100644 (file)
 #include <linux/moduleparam.h>
 #include <linux/kernel.h>
 #include <linux/delay.h>
+#include <linux/gpio/consumer.h>
 #include <linux/irq.h>
 #include <linux/interrupt.h>
-#include <linux/wm97xx.h>
 #include <linux/io.h>
-#include <linux/gpio.h>
+#include <linux/soc/pxa/cpu.h>
+#include <linux/wm97xx.h>
 
-#include <mach/regs-ac97.h>
+#include <sound/pxa2xx-lib.h>
 
 #include <asm/mach-types.h>
 
@@ -41,24 +42,23 @@ struct continuous {
 #define WM_READS(sp) ((sp / HZ) + 1)
 
 static const struct continuous cinfo[] = {
-       {WM9705_ID2, 0, WM_READS(94), 94},
-       {WM9705_ID2, 1, WM_READS(188), 188},
-       {WM9705_ID2, 2, WM_READS(375), 375},
-       {WM9705_ID2, 3, WM_READS(750), 750},
-       {WM9712_ID2, 0, WM_READS(94), 94},
-       {WM9712_ID2, 1, WM_READS(188), 188},
-       {WM9712_ID2, 2, WM_READS(375), 375},
-       {WM9712_ID2, 3, WM_READS(750), 750},
-       {WM9713_ID2, 0, WM_READS(94), 94},
-       {WM9713_ID2, 1, WM_READS(120), 120},
-       {WM9713_ID2, 2, WM_READS(154), 154},
-       {WM9713_ID2, 3, WM_READS(188), 188},
+       { WM9705_ID2, 0, WM_READS(94),  94  },
+       { WM9705_ID2, 1, WM_READS(188), 188 },
+       { WM9705_ID2, 2, WM_READS(375), 375 },
+       { WM9705_ID2, 3, WM_READS(750), 750 },
+       { WM9712_ID2, 0, WM_READS(94),  94  },
+       { WM9712_ID2, 1, WM_READS(188), 188 },
+       { WM9712_ID2, 2, WM_READS(375), 375 },
+       { WM9712_ID2, 3, WM_READS(750), 750 },
+       { WM9713_ID2, 0, WM_READS(94),  94  },
+       { WM9713_ID2, 1, WM_READS(120), 120 },
+       { WM9713_ID2, 2, WM_READS(154), 154 },
+       { WM9713_ID2, 3, WM_READS(188), 188 },
 };
 
 /* continuous speed index */
 static int sp_idx;
-static u16 last, tries;
-static int irq;
+static struct gpio_desc *gpiod_irq;
 
 /*
  * Pen sampling frequency (Hz) in continuous mode.
@@ -97,44 +97,40 @@ MODULE_PARM_DESC(ac97_touch_slot, "Touch screen data slot AC97 number");
 
 
 /* flush AC97 slot 5 FIFO on pxa machines */
-#ifdef CONFIG_PXA27x
-static void wm97xx_acc_pen_up(struct wm97xx *wm)
-{
-       schedule_timeout_uninterruptible(1);
-
-       while (MISR & (1 << 2))
-               MODR;
-}
-#else
 static void wm97xx_acc_pen_up(struct wm97xx *wm)
 {
        unsigned int count;
 
-       schedule_timeout_uninterruptible(1);
+       msleep(1);
 
-       for (count = 0; count < 16; count++)
-               MODR;
+       if (cpu_is_pxa27x()) {
+               while (pxa2xx_ac97_read_misr() & (1 << 2))
+                       pxa2xx_ac97_read_modr();
+       } else if (cpu_is_pxa3xx()) {
+               for (count = 0; count < 16; count++)
+                       pxa2xx_ac97_read_modr();
+       }
 }
-#endif
 
 static int wm97xx_acc_pen_down(struct wm97xx *wm)
 {
        u16 x, y, p = 0x100 | WM97XX_ADCSEL_PRES;
        int reads = 0;
+       static u16 last, tries;
 
        /* When the AC97 queue has been drained we need to allow time
         * to buffer up samples otherwise we end up spinning polling
         * for samples.  The controller can't have a suitably low
         * threshold set to use the notifications it gives.
         */
-       schedule_timeout_uninterruptible(1);
+       msleep(1);
 
        if (tries > 5) {
                tries = 0;
                return RC_PENUP;
        }
 
-       x = MODR;
+       x = pxa2xx_ac97_read_modr();
        if (x == last) {
                tries++;
                return RC_AGAIN;
@@ -142,10 +138,10 @@ static int wm97xx_acc_pen_down(struct wm97xx *wm)
        last = x;
        do {
                if (reads)
-                       x = MODR;
-               y = MODR;
+                       x = pxa2xx_ac97_read_modr();
+               y = pxa2xx_ac97_read_modr();
                if (pressure)
-                       p = MODR;
+                       p = pxa2xx_ac97_read_modr();
 
                dev_dbg(wm->dev, "Raw coordinates: x=%x, y=%x, p=%x\n",
                        x, y, p);
@@ -194,28 +190,23 @@ static int wm97xx_acc_startup(struct wm97xx *wm)
        /* IRQ driven touchscreen is used on Palm hardware */
        if (machine_is_palmt5() || machine_is_palmtx() || machine_is_palmld()) {
                pen_int = 1;
-               irq = 27;
                /* There is some obscure mutant of WM9712 interbred with WM9713
                 * used on Palm HW */
                wm->variant = WM97xx_WM1613;
-       } else if (machine_is_mainstone() && pen_int)
-               irq = 4;
-
-       if (irq) {
-               ret = gpio_request(irq, "Touchscreen IRQ");
-               if (ret)
-                       goto out;
-
-               ret = gpio_direction_input(irq);
-               if (ret) {
-                       gpio_free(irq);
-                       goto out;
-               }
+       } else if (machine_is_zylonite()) {
+               pen_int = 1;
+       }
 
-               wm->pen_irq = gpio_to_irq(irq);
+       if (pen_int) {
+               gpiod_irq = gpiod_get(wm->dev, "touch", GPIOD_IN);
+               if (IS_ERR(gpiod_irq))
+                       pen_int = 0;
+       }
+
+       if (pen_int) {
+               wm->pen_irq = gpiod_to_irq(gpiod_irq);
                irq_set_irq_type(wm->pen_irq, IRQ_TYPE_EDGE_BOTH);
-       } else /* pen irq not supported */
-               pen_int = 0;
+       }
 
        /* codec specific irq config */
        if (pen_int) {
@@ -242,7 +233,6 @@ static int wm97xx_acc_startup(struct wm97xx *wm)
                }
        }
 
-out:
        return ret;
 }
 
@@ -250,28 +240,19 @@ static void wm97xx_acc_shutdown(struct wm97xx *wm)
 {
        /* codec specific deconfig */
        if (pen_int) {
-               if (irq)
-                       gpio_free(irq);
+               if (gpiod_irq)
+                       gpiod_put(gpiod_irq);
                wm->pen_irq = 0;
        }
 }
 
-static void wm97xx_irq_enable(struct wm97xx *wm, int enable)
-{
-       if (enable)
-               enable_irq(wm->pen_irq);
-       else
-               disable_irq_nosync(wm->pen_irq);
-}
-
 static struct wm97xx_mach_ops mainstone_mach_ops = {
-       .acc_enabled = 1,
-       .acc_pen_up = wm97xx_acc_pen_up,
-       .acc_pen_down = wm97xx_acc_pen_down,
-       .acc_startup = wm97xx_acc_startup,
-       .acc_shutdown = wm97xx_acc_shutdown,
-       .irq_enable = wm97xx_irq_enable,
-       .irq_gpio = WM97XX_GPIO_2,
+       .acc_enabled    = 1,
+       .acc_pen_up     = wm97xx_acc_pen_up,
+       .acc_pen_down   = wm97xx_acc_pen_down,
+       .acc_startup    = wm97xx_acc_startup,
+       .acc_shutdown   = wm97xx_acc_shutdown,
+       .irq_gpio       = WM97XX_GPIO_2,
 };
 
 static int mainstone_wm97xx_probe(struct platform_device *pdev)
@@ -286,14 +267,15 @@ static int mainstone_wm97xx_remove(struct platform_device *pdev)
        struct wm97xx *wm = platform_get_drvdata(pdev);
 
        wm97xx_unregister_mach_ops(wm);
+
        return 0;
 }
 
 static struct platform_driver mainstone_wm97xx_driver = {
-       .probe = mainstone_wm97xx_probe,
-       .remove = mainstone_wm97xx_remove,
-       .driver = {
-               .name = "wm97xx-touch",
+       .probe  = mainstone_wm97xx_probe,
+       .remove = mainstone_wm97xx_remove,
+       .driver = {
+               .name   = "wm97xx-touch",
        },
 };
 module_platform_driver(mainstone_wm97xx_driver);
index 1b58611c808406da9c5a22f070491adedb55b9cb..2757c7768ffe95456757d35eaa2f7dc41fddf589 100644 (file)
@@ -285,11 +285,12 @@ void wm97xx_set_suspend_mode(struct wm97xx *wm, u16 mode)
 EXPORT_SYMBOL_GPL(wm97xx_set_suspend_mode);
 
 /*
- * Handle a pen down interrupt.
+ * Codec PENDOWN irq handler
+ *
  */
-static void wm97xx_pen_irq_worker(struct work_struct *work)
+static irqreturn_t wm97xx_pen_interrupt(int irq, void *dev_id)
 {
-       struct wm97xx *wm = container_of(work, struct wm97xx, pen_event_work);
+       struct wm97xx *wm = dev_id;
        int pen_was_down = wm->pen_is_down;
 
        /* do we need to enable the touch panel reader */
@@ -343,27 +344,6 @@ static void wm97xx_pen_irq_worker(struct work_struct *work)
        if (!wm->pen_is_down && wm->mach_ops->acc_enabled)
                wm->mach_ops->acc_pen_up(wm);
 
-       wm->mach_ops->irq_enable(wm, 1);
-}
-
-/*
- * Codec PENDOWN irq handler
- *
- * We have to disable the codec interrupt in the handler because it
- * can take up to 1ms to clear the interrupt source. We schedule a task
- * in a work queue to do the actual interaction with the chip.  The
- * interrupt is then enabled again in the slow handler when the source
- * has been cleared.
- */
-static irqreturn_t wm97xx_pen_interrupt(int irq, void *dev_id)
-{
-       struct wm97xx *wm = dev_id;
-
-       if (!work_pending(&wm->pen_event_work)) {
-               wm->mach_ops->irq_enable(wm, 0);
-               queue_work(wm->ts_workq, &wm->pen_event_work);
-       }
-
        return IRQ_HANDLED;
 }
 
@@ -374,12 +354,9 @@ static int wm97xx_init_pen_irq(struct wm97xx *wm)
 {
        u16 reg;
 
-       /* If an interrupt is supplied an IRQ enable operation must also be
-        * provided. */
-       BUG_ON(!wm->mach_ops->irq_enable);
-
-       if (request_irq(wm->pen_irq, wm97xx_pen_interrupt, IRQF_SHARED,
-                       "wm97xx-pen", wm)) {
+       if (request_threaded_irq(wm->pen_irq, NULL, wm97xx_pen_interrupt,
+                                IRQF_SHARED | IRQF_ONESHOT,
+                                "wm97xx-pen", wm)) {
                dev_err(wm->dev,
                        "Failed to register pen down interrupt, polling");
                wm->pen_irq = 0;
@@ -509,7 +486,6 @@ static int wm97xx_ts_input_open(struct input_dev *idev)
        wm->codec->dig_enable(wm, 1);
 
        INIT_DELAYED_WORK(&wm->ts_reader, wm97xx_ts_reader);
-       INIT_WORK(&wm->pen_event_work, wm97xx_pen_irq_worker);
 
        wm->ts_reader_min_interval = HZ >= 100 ? HZ / 100 : 1;
        if (wm->ts_reader_min_interval < 1)
@@ -560,10 +536,6 @@ static void wm97xx_ts_input_close(struct input_dev *idev)
 
        wm->pen_is_down = 0;
 
-       /* Balance out interrupt disables/enables */
-       if (cancel_work_sync(&wm->pen_event_work))
-               wm->mach_ops->irq_enable(wm, 1);
-
        /* ts_reader rearms itself so we need to explicitly stop it
         * before we destroy the workqueue.
         */
index 0f4ac7f844cebec37b2cbd1d30821022d44a7c20..a70fe4abe52065fb6bff3e341f544c17d96edf94 100644 (file)
 #include <linux/moduleparam.h>
 #include <linux/kernel.h>
 #include <linux/delay.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
+#include <linux/soc/pxa/cpu.h>
 #include <linux/wm97xx.h>
 
-#include <mach/hardware.h>
-#include <mach/mfp.h>
-#include <mach/regs-ac97.h>
+#include <sound/pxa2xx-lib.h>
 
 struct continuous {
        u16 id;    /* codec id */
@@ -80,7 +79,7 @@ static void wm97xx_acc_pen_up(struct wm97xx *wm)
        msleep(1);
 
        for (i = 0; i < 16; i++)
-               MODR;
+               pxa2xx_ac97_read_modr();
 }
 
 static int wm97xx_acc_pen_down(struct wm97xx *wm)
@@ -101,7 +100,7 @@ static int wm97xx_acc_pen_down(struct wm97xx *wm)
                return RC_PENUP;
        }
 
-       x = MODR;
+       x = pxa2xx_ac97_read_modr();
        if (x == last) {
                tries++;
                return RC_AGAIN;
@@ -109,10 +108,10 @@ static int wm97xx_acc_pen_down(struct wm97xx *wm)
        last = x;
        do {
                if (reads)
-                       x = MODR;
-               y = MODR;
+                       x = pxa2xx_ac97_read_modr();
+               y = pxa2xx_ac97_read_modr();
                if (pressure)
-                       p = MODR;
+                       p = pxa2xx_ac97_read_modr();
 
                dev_dbg(wm->dev, "Raw coordinates: x=%x, y=%x, p=%x\n",
                        x, y, p);
@@ -161,34 +160,28 @@ static int wm97xx_acc_startup(struct wm97xx *wm)
        return 0;
 }
 
-static void wm97xx_irq_enable(struct wm97xx *wm, int enable)
-{
-       if (enable)
-               enable_irq(wm->pen_irq);
-       else
-               disable_irq_nosync(wm->pen_irq);
-}
-
 static struct wm97xx_mach_ops zylonite_mach_ops = {
        .acc_enabled    = 1,
        .acc_pen_up     = wm97xx_acc_pen_up,
        .acc_pen_down   = wm97xx_acc_pen_down,
        .acc_startup    = wm97xx_acc_startup,
-       .irq_enable     = wm97xx_irq_enable,
        .irq_gpio       = WM97XX_GPIO_2,
 };
 
 static int zylonite_wm97xx_probe(struct platform_device *pdev)
 {
        struct wm97xx *wm = platform_get_drvdata(pdev);
-       int gpio_touch_irq;
-
-       if (cpu_is_pxa320())
-               gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO15);
-       else
-               gpio_touch_irq = mfp_to_gpio(MFP_PIN_GPIO26);
+       struct gpio_desc *gpio_touch_irq;
+       int err;
+
+       gpio_touch_irq = devm_gpiod_get(&pdev->dev, "touch", GPIOD_IN);
+       err = PTR_ERR_OR_ZERO(gpio_touch_irq);
+       if (err) {
+               dev_err(&pdev->dev, "Cannot get irq gpio: %d\n", err);
+               return err;
+       }
 
-       wm->pen_irq = gpio_to_irq(gpio_touch_irq);
+       wm->pen_irq = gpiod_to_irq(gpio_touch_irq);
        irq_set_irq_type(wm->pen_irq, IRQ_TYPE_EDGE_BOTH);
 
        wm97xx_config_gpio(wm, WM97XX_GPIO_13, WM97XX_GPIO_IN,
index 42dc46e3f00fda52c9ad87f3a7a44c59c0fe84a7..9aa3fccd71fb2eb7d5b5b0d89200d287720f24b3 100644 (file)
@@ -11,7 +11,6 @@
 #include <linux/device.h>
 #include <linux/leds.h>
 
-#include <mach/hardware.h>
 #include <asm/hardware/locomo.h>
 
 static void locomoled_brightness_set(struct led_classdev *led_cdev,
index 3d5b14c60e204e198bd3bd4eed38576e264d4701..0be5731685b4a6f4144975fbcea8cf7e90091b91 100644 (file)
@@ -22,6 +22,8 @@
 #include <linux/mfd/tmio.h>
 #include <linux/mfd/tc6393xb.h>
 #include <linux/gpio/driver.h>
+#include <linux/gpio/machine.h>
+#include <linux/gpio/consumer.h>
 #include <linux/slab.h>
 
 #define SCR_REVID      0x08            /* b Revision ID        */
 
 struct tc6393xb {
        void __iomem            *scr;
+       struct device           *dev;
 
        struct gpio_chip        gpio;
+       struct gpio_desc        *vcc_on;
 
        struct clk              *clk; /* 3,6 Mhz */
 
@@ -497,17 +501,93 @@ static int tc6393xb_gpio_direction_output(struct gpio_chip *chip,
        return 0;
 }
 
-static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb, int gpio_base)
+/*
+ * TC6393XB GPIOs as used on TOSA, are the only user of this chip.
+ * GPIOs 2, 5, 8 and 13 are not connected.
+ */
+#define TOSA_GPIO_TG_ON                        0
+#define TOSA_GPIO_L_MUTE               1
+#define TOSA_GPIO_BL_C20MA             3
+#define TOSA_GPIO_CARD_VCC_ON          4
+#define TOSA_GPIO_CHARGE_OFF           6
+#define TOSA_GPIO_CHARGE_OFF_JC                7
+#define TOSA_GPIO_BAT0_V_ON            9
+#define TOSA_GPIO_BAT1_V_ON            10
+#define TOSA_GPIO_BU_CHRG_ON           11
+#define TOSA_GPIO_BAT_SW_ON            12
+#define TOSA_GPIO_BAT0_TH_ON           14
+#define TOSA_GPIO_BAT1_TH_ON           15
+
+
+GPIO_LOOKUP_SINGLE(tosa_lcd_gpio_lookup, "spi2.0", "tc6393xb",
+                  TOSA_GPIO_TG_ON, "tg #pwr", GPIO_ACTIVE_HIGH);
+
+GPIO_LOOKUP_SINGLE(tosa_lcd_bl_gpio_lookup, "i2c-tos-bl", "tc6393xb",
+                  TOSA_GPIO_BL_C20MA, "backlight", GPIO_ACTIVE_HIGH);
+
+GPIO_LOOKUP_SINGLE(tosa_audio_gpio_lookup, "tosa-audio", "tc6393xb",
+                  TOSA_GPIO_L_MUTE, NULL, GPIO_ACTIVE_HIGH);
+
+static struct gpiod_lookup_table tosa_battery_gpio_lookup = {
+       .dev_id = "wm97xx-battery",
+       .table = {
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_CHARGE_OFF,
+                           "main charge off", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_CHARGE_OFF_JC,
+                           "jacket charge off", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_BAT0_V_ON,
+                           "main battery", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_BAT1_V_ON,
+                           "jacket battery", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_BU_CHRG_ON,
+                           "backup battery", GPIO_ACTIVE_HIGH),
+               /* BAT1 and BAT0 thermistors appear to be swapped */
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_BAT1_TH_ON,
+                           "main battery temp", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_BAT0_TH_ON,
+                           "jacket battery temp", GPIO_ACTIVE_HIGH),
+               GPIO_LOOKUP("tc6393xb", TOSA_GPIO_BAT_SW_ON,
+                           "battery switch", GPIO_ACTIVE_HIGH),
+               { },
+       },
+};
+
+static struct gpiod_lookup_table *tc6393xb_gpio_lookups[] = {
+       &tosa_lcd_gpio_lookup,
+       &tosa_lcd_bl_gpio_lookup,
+       &tosa_audio_gpio_lookup,
+       &tosa_battery_gpio_lookup,
+};
+
+static int tc6393xb_register_gpio(struct tc6393xb *tc6393xb)
 {
-       tc6393xb->gpio.label = "tc6393xb";
-       tc6393xb->gpio.base = gpio_base;
-       tc6393xb->gpio.ngpio = 16;
-       tc6393xb->gpio.set = tc6393xb_gpio_set;
-       tc6393xb->gpio.get = tc6393xb_gpio_get;
-       tc6393xb->gpio.direction_input = tc6393xb_gpio_direction_input;
-       tc6393xb->gpio.direction_output = tc6393xb_gpio_direction_output;
-
-       return gpiochip_add_data(&tc6393xb->gpio, tc6393xb);
+       struct gpio_chip *gc = &tc6393xb->gpio;
+       struct device *dev = tc6393xb->dev;
+       int ret;
+
+       gc->label = "tc6393xb";
+       gc->base = -1; /* Dynamic allocation */
+       gc->ngpio = 16;
+       gc->set = tc6393xb_gpio_set;
+       gc->get = tc6393xb_gpio_get;
+       gc->direction_input = tc6393xb_gpio_direction_input;
+       gc->direction_output = tc6393xb_gpio_direction_output;
+
+       ret = devm_gpiochip_add_data(dev, gc, tc6393xb);
+       if (ret)
+               return dev_err_probe(dev, ret, "failed to add GPIO chip\n");
+
+       /* Register descriptor look-ups for consumers */
+       gpiod_add_lookup_tables(tc6393xb_gpio_lookups, ARRAY_SIZE(tc6393xb_gpio_lookups));
+
+       /* Request some of our own GPIOs */
+       tc6393xb->vcc_on = gpiochip_request_own_desc(gc, TOSA_GPIO_CARD_VCC_ON, "VCC ON",
+                                                    GPIO_ACTIVE_HIGH, GPIOD_OUT_HIGH);
+       if (IS_ERR(tc6393xb->vcc_on))
+               return dev_err_probe(dev, PTR_ERR(tc6393xb->vcc_on),
+                                    "failed to request VCC ON GPIO\n");
+
+       return 0;
 }
 
 /*--------------------------------------------------------------------------*/
@@ -617,6 +697,7 @@ static int tc6393xb_probe(struct platform_device *dev)
                ret = -ENOMEM;
                goto err_kzalloc;
        }
+       tc6393xb->dev = &dev->dev;
 
        raw_spin_lock_init(&tc6393xb->lock);
 
@@ -676,22 +757,12 @@ static int tc6393xb_probe(struct platform_device *dev)
                        tmio_ioread8(tc6393xb->scr + SCR_REVID),
                        (unsigned long) iomem->start, tc6393xb->irq);
 
-       tc6393xb->gpio.base = -1;
-
-       if (tcpd->gpio_base >= 0) {
-               ret = tc6393xb_register_gpio(tc6393xb, tcpd->gpio_base);
-               if (ret)
-                       goto err_gpio_add;
-       }
+       ret = tc6393xb_register_gpio(tc6393xb);
+       if (ret)
+               goto err_gpio_add;
 
        tc6393xb_attach_irq(dev);
 
-       if (tcpd->setup) {
-               ret = tcpd->setup(dev);
-               if (ret)
-                       goto err_setup;
-       }
-
        tc6393xb_cells[TC6393XB_CELL_NAND].platform_data = tcpd->nand_data;
        tc6393xb_cells[TC6393XB_CELL_NAND].pdata_size =
                                                sizeof(*tcpd->nand_data);
@@ -705,15 +776,8 @@ static int tc6393xb_probe(struct platform_device *dev)
        if (!ret)
                return 0;
 
-       if (tcpd->teardown)
-               tcpd->teardown(dev);
-
-err_setup:
        tc6393xb_detach_irq(dev);
-
 err_gpio_add:
-       if (tc6393xb->gpio.base != -1)
-               gpiochip_remove(&tc6393xb->gpio);
        tcpd->disable(dev);
 err_enable:
        clk_disable_unprepare(tc6393xb->clk);
@@ -738,14 +802,8 @@ static int tc6393xb_remove(struct platform_device *dev)
 
        mfd_remove_devices(&dev->dev);
 
-       if (tcpd->teardown)
-               tcpd->teardown(dev);
-
        tc6393xb_detach_irq(dev);
 
-       if (tc6393xb->gpio.base != -1)
-               gpiochip_remove(&tc6393xb->gpio);
-
        ret = tcpd->disable(dev);
        clk_disable_unprepare(tc6393xb->clk);
        iounmap(tc6393xb->scr);
index 316393c694d7a6dd73c39b2a2a57e0a1d7628195..0db9490dc6595a18ddea35717341259168a690f5 100644 (file)
 #include <linux/gfp.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <linux/sizes.h>
 
-#include <mach/hardware.h>
 #include <linux/platform_data/mmc-pxamci.h>
 
 #include "pxamci.h"
index 7d96758a8f04e0cf2a8b0da4eec31e8cab363e23..1749dbbacc135af325ee5030eddb8fb7496a07e6 100644 (file)
@@ -16,8 +16,6 @@
 #include <linux/mtd/partitions.h>
 
 #include <asm/io.h>
-#include <mach/hardware.h>
-
 #include <asm/mach/flash.h>
 
 #define CACHELINESIZE  32
index c43267b18f55bdde7ec6f3b26f1381a6727022f8..c59ddde42007d8de5e53eecc2a53eba453023ae2 100644 (file)
@@ -50,18 +50,5 @@ sa1100_cs-$(CONFIG_SA1100_SIMPAD)            += sa1100_simpad.o
 
 pxa2xx-obj-$(CONFIG_MACH_MAINSTONE)            += pxa2xx_mainstone.o
 pxa2xx-obj-$(CONFIG_PXA_SHARPSL)               += pxa2xx_sharpsl.o
-pxa2xx-obj-$(CONFIG_ARCOM_PCMCIA)              += pxa2xx_viper.o
-pxa2xx-obj-$(CONFIG_TRIZEPS_PCMCIA)            += pxa2xx_trizeps4.o
-pxa2xx-obj-$(CONFIG_MACH_PALMTX)               += pxa2xx_palmtx.o
-pxa2xx-obj-$(CONFIG_MACH_PALMTC)               += pxa2xx_palmtc.o
-pxa2xx-obj-$(CONFIG_MACH_PALMLD)               += pxa2xx_palmld.o
-pxa2xx-obj-$(CONFIG_MACH_E740)                 += pxa2xx_e740.o
-pxa2xx-obj-$(CONFIG_MACH_VPAC270)              += pxa2xx_vpac270.o
-pxa2xx-obj-$(CONFIG_MACH_BALLOON3)             += pxa2xx_balloon3.o
-pxa2xx-obj-$(CONFIG_MACH_COLIBRI)              += pxa2xx_colibri.o
-pxa2xx-obj-$(CONFIG_MACH_COLIBRI320)           += pxa2xx_colibri.o
-pxa2xx-obj-$(CONFIG_MACH_H4700)                        += pxa2xx_hx4700.o
-
 obj-$(CONFIG_PCMCIA_PXA2XX)                    += pxa2xx_base.o $(pxa2xx-obj-y)
-
 obj-$(CONFIG_PCMCIA_XXS1500)                   += xxs1500_ss.o
diff --git a/drivers/pcmcia/pxa2xx_balloon3.c b/drivers/pcmcia/pxa2xx_balloon3.c
deleted file mode 100644 (file)
index 5fe1da7..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_balloon3.c
- *
- * Balloon3 PCMCIA specific routines.
- *
- *  Author:    Nick Bane
- *  Created:   June, 2006
- *  Copyright: Toby Churchill Ltd
- *  Derived from pxa2xx_mainstone.c, by Nico Pitre
- *
- * Various modification by Marek Vasut <marek.vasut@gmail.com>
- */
-
-#include <linux/module.h>
-#include <linux/gpio.h>
-#include <linux/errno.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-#include <linux/irq.h>
-#include <linux/io.h>
-
-#include <mach/balloon3.h>
-
-#include <asm/mach-types.h>
-
-#include "soc_common.h"
-
-static int balloon3_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       uint16_t ver;
-
-       ver = __raw_readw(BALLOON3_FPGA_VER);
-       if (ver < 0x4f08)
-               pr_warn("The FPGA code, version 0x%04x, is too old. "
-                       "PCMCIA/CF support might be broken in this version!",
-                       ver);
-
-       skt->socket.pci_irq = BALLOON3_BP_CF_NRDY_IRQ;
-       skt->stat[SOC_STAT_CD].gpio = BALLOON3_GPIO_S0_CD;
-       skt->stat[SOC_STAT_CD].name = "PCMCIA0 CD";
-       skt->stat[SOC_STAT_BVD1].irq = BALLOON3_BP_NSTSCHG_IRQ;
-       skt->stat[SOC_STAT_BVD1].name = "PCMCIA0 STSCHG";
-
-       return 0;
-}
-
-static unsigned long balloon3_pcmcia_status[2] = {
-       BALLOON3_CF_nSTSCHG_BVD1,
-       BALLOON3_CF_nSTSCHG_BVD1
-};
-
-static void balloon3_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                   struct pcmcia_state *state)
-{
-       uint16_t status;
-       int flip;
-
-       /* This actually reads the STATUS register */
-       status = __raw_readw(BALLOON3_CF_STATUS_REG);
-       flip = (status ^ balloon3_pcmcia_status[skt->nr])
-               & BALLOON3_CF_nSTSCHG_BVD1;
-       /*
-        * Workaround for STSCHG which can't be deasserted:
-        * We therefore disable/enable corresponding IRQs
-        * as needed to avoid IRQ locks.
-        */
-       if (flip) {
-               balloon3_pcmcia_status[skt->nr] = status;
-               if (status & BALLOON3_CF_nSTSCHG_BVD1)
-                       enable_irq(BALLOON3_BP_NSTSCHG_IRQ);
-               else
-                       disable_irq(BALLOON3_BP_NSTSCHG_IRQ);
-       }
-
-       state->ready    = !!(status & BALLOON3_CF_nIRQ);
-       state->bvd1     = !!(status & BALLOON3_CF_nSTSCHG_BVD1);
-       state->bvd2     = 0;    /* not available */
-       state->vs_3v    = 1;    /* Always true its a CF card */
-       state->vs_Xv    = 0;    /* not available */
-}
-
-static int balloon3_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                                      const socket_state_t *state)
-{
-       __raw_writew(BALLOON3_CF_RESET, BALLOON3_CF_CONTROL_REG +
-                       ((state->flags & SS_RESET) ?
-                       BALLOON3_FPGA_SETnCLR : 0));
-       return 0;
-}
-
-static struct pcmcia_low_level balloon3_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-       .hw_init                = balloon3_pcmcia_hw_init,
-       .socket_state           = balloon3_pcmcia_socket_state,
-       .configure_socket       = balloon3_pcmcia_configure_socket,
-       .first                  = 0,
-       .nr                     = 1,
-};
-
-static struct platform_device *balloon3_pcmcia_device;
-
-static int __init balloon3_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_balloon3())
-               return -ENODEV;
-
-       balloon3_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!balloon3_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(balloon3_pcmcia_device,
-                       &balloon3_pcmcia_ops, sizeof(balloon3_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(balloon3_pcmcia_device);
-
-       if (ret)
-               platform_device_put(balloon3_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit balloon3_pcmcia_exit(void)
-{
-       platform_device_unregister(balloon3_pcmcia_device);
-}
-
-module_init(balloon3_pcmcia_init);
-module_exit(balloon3_pcmcia_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Nick Bane <nick@cecomputing.co.uk>");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_DESCRIPTION("Balloon3 board CF/PCMCIA driver");
index d6d2f75f8f470b4ecc57a6c4a7c053b3bd4f42f3..0ea41f1411e5fb895dc8e29cd603110eb6ace58d 100644 (file)
 #include <linux/kernel.h>
 #include <linux/spinlock.h>
 #include <linux/platform_device.h>
+#include <linux/soc/pxa/cpu.h>
+#include <linux/soc/pxa/smemc.h>
 
-#include <mach/hardware.h>
-#include <mach/smemc.h>
 #include <asm/io.h>
 #include <asm/irq.h>
-#include <mach/pxa2xx-regs.h>
 #include <asm/mach-types.h>
 
 #include <pcmcia/ss.h>
@@ -113,7 +112,7 @@ static inline u_int pxa2xx_pcmcia_cmd_time(u_int mem_clk_10khz,
        return (300000 * (pcmcia_mcxx_asst + 1) / mem_clk_10khz);
 }
 
-static int pxa2xx_pcmcia_set_mcmem( int sock, int speed, int clock )
+static uint32_t pxa2xx_pcmcia_mcmem(int sock, int speed, int clock)
 {
        uint32_t val;
 
@@ -124,12 +123,10 @@ static int pxa2xx_pcmcia_set_mcmem( int sock, int speed, int clock )
                | ((pxa2xx_mcxx_hold(speed, clock)
                & MCXX_HOLD_MASK) << MCXX_HOLD_SHIFT);
 
-       __raw_writel(val, MCMEM(sock));
-
-       return 0;
+       return val;
 }
 
-static int pxa2xx_pcmcia_set_mcio( int sock, int speed, int clock )
+static int pxa2xx_pcmcia_mcio(int sock, int speed, int clock)
 {
        uint32_t val;
 
@@ -140,12 +137,11 @@ static int pxa2xx_pcmcia_set_mcio( int sock, int speed, int clock )
                | ((pxa2xx_mcxx_hold(speed, clock)
                & MCXX_HOLD_MASK) << MCXX_HOLD_SHIFT);
 
-       __raw_writel(val, MCIO(sock));
 
-       return 0;
+       return val;
 }
 
-static int pxa2xx_pcmcia_set_mcatt( int sock, int speed, int clock )
+static int pxa2xx_pcmcia_mcatt(int sock, int speed, int clock)
 {
        uint32_t val;
 
@@ -156,31 +152,26 @@ static int pxa2xx_pcmcia_set_mcatt( int sock, int speed, int clock )
                | ((pxa2xx_mcxx_hold(speed, clock)
                & MCXX_HOLD_MASK) << MCXX_HOLD_SHIFT);
 
-       __raw_writel(val, MCATT(sock));
 
-       return 0;
+       return val;
 }
 
-static int pxa2xx_pcmcia_set_mcxx(struct soc_pcmcia_socket *skt, unsigned int clk)
+static int pxa2xx_pcmcia_set_timing(struct soc_pcmcia_socket *skt)
 {
+       unsigned long clk = clk_get_rate(skt->clk) / 10000;
        struct soc_pcmcia_timing timing;
        int sock = skt->nr;
 
        soc_common_pcmcia_get_timing(skt, &timing);
 
-       pxa2xx_pcmcia_set_mcmem(sock, timing.mem, clk);
-       pxa2xx_pcmcia_set_mcatt(sock, timing.attr, clk);
-       pxa2xx_pcmcia_set_mcio(sock, timing.io, clk);
+       pxa_smemc_set_pcmcia_timing(sock,
+               pxa2xx_pcmcia_mcmem(sock, timing.mem, clk),
+               pxa2xx_pcmcia_mcatt(sock, timing.attr, clk),
+               pxa2xx_pcmcia_mcio(sock, timing.io, clk));
 
        return 0;
 }
 
-static int pxa2xx_pcmcia_set_timing(struct soc_pcmcia_socket *skt)
-{
-       unsigned long clk = clk_get_rate(skt->clk);
-       return pxa2xx_pcmcia_set_mcxx(skt, clk / 10000);
-}
-
 #ifdef CONFIG_CPU_FREQ
 
 static int
@@ -215,18 +206,13 @@ pxa2xx_pcmcia_frequency_change(struct soc_pcmcia_socket *skt,
 
 void pxa2xx_configure_sockets(struct device *dev, struct pcmcia_low_level *ops)
 {
-       /*
-        * We have at least one socket, so set MECR:CIT
-        * (Card Is There)
-        */
-       uint32_t mecr = MECR_CIT;
+       int nr = 1;
 
-       /* Set MECR:NOS (Number Of Sockets) */
        if ((ops->first + ops->nr) > 1 ||
            machine_is_viper() || machine_is_arcom_zeus())
-               mecr |= MECR_NOS;
+               nr = 2;
 
-       __raw_writel(mecr, MECR);
+       pxa_smemc_set_pcmcia_socket(nr);
 }
 EXPORT_SYMBOL(pxa2xx_configure_sockets);
 
diff --git a/drivers/pcmcia/pxa2xx_colibri.c b/drivers/pcmcia/pxa2xx_colibri.c
deleted file mode 100644 (file)
index f0f725e..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_colibri.c
- *
- * Driver for Toradex Colibri PXA270 CF socket
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- */
-
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/gpio.h>
-
-#include <asm/mach-types.h>
-
-#include "soc_common.h"
-
-#define        COLIBRI270_RESET_GPIO   53
-#define        COLIBRI270_PPEN_GPIO    107
-#define        COLIBRI270_BVD1_GPIO    83
-#define        COLIBRI270_BVD2_GPIO    82
-#define        COLIBRI270_DETECT_GPIO  84
-#define        COLIBRI270_READY_GPIO   1
-
-#define        COLIBRI320_RESET_GPIO   77
-#define        COLIBRI320_PPEN_GPIO    57
-#define        COLIBRI320_BVD1_GPIO    53
-#define        COLIBRI320_BVD2_GPIO    79
-#define        COLIBRI320_DETECT_GPIO  81
-#define        COLIBRI320_READY_GPIO   29
-
-enum {
-       DETECT = 0,
-       READY = 1,
-       BVD1 = 2,
-       BVD2 = 3,
-       PPEN = 4,
-       RESET = 5,
-};
-
-/* Contents of this array are configured on-the-fly in init function */
-static struct gpio colibri_pcmcia_gpios[] = {
-       { 0,    GPIOF_IN,       "PCMCIA Detect" },
-       { 0,    GPIOF_IN,       "PCMCIA Ready" },
-       { 0,    GPIOF_IN,       "PCMCIA BVD1" },
-       { 0,    GPIOF_IN,       "PCMCIA BVD2" },
-       { 0,    GPIOF_INIT_LOW, "PCMCIA PPEN" },
-       { 0,    GPIOF_INIT_HIGH,"PCMCIA Reset" },
-};
-
-static int colibri_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       int ret;
-
-       ret = gpio_request_array(colibri_pcmcia_gpios,
-                               ARRAY_SIZE(colibri_pcmcia_gpios));
-       if (ret)
-               goto err1;
-
-       skt->socket.pci_irq = gpio_to_irq(colibri_pcmcia_gpios[READY].gpio);
-       skt->stat[SOC_STAT_CD].irq = gpio_to_irq(colibri_pcmcia_gpios[DETECT].gpio);
-       skt->stat[SOC_STAT_CD].name = "PCMCIA CD";
-
-err1:
-       return ret;
-}
-
-static void colibri_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       gpio_free_array(colibri_pcmcia_gpios,
-                       ARRAY_SIZE(colibri_pcmcia_gpios));
-}
-
-static void colibri_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                       struct pcmcia_state *state)
-{
-
-       state->detect = !!gpio_get_value(colibri_pcmcia_gpios[DETECT].gpio);
-       state->ready  = !!gpio_get_value(colibri_pcmcia_gpios[READY].gpio);
-       state->bvd1   = !!gpio_get_value(colibri_pcmcia_gpios[BVD1].gpio);
-       state->bvd2   = !!gpio_get_value(colibri_pcmcia_gpios[BVD2].gpio);
-       state->vs_3v  = 1;
-       state->vs_Xv  = 0;
-}
-
-static int
-colibri_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                               const socket_state_t *state)
-{
-       gpio_set_value(colibri_pcmcia_gpios[PPEN].gpio,
-                       !(state->Vcc == 33 && state->Vpp < 50));
-       gpio_set_value(colibri_pcmcia_gpios[RESET].gpio,
-                       state->flags & SS_RESET);
-       return 0;
-}
-
-static struct pcmcia_low_level colibri_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-
-       .first                  = 0,
-       .nr                     = 1,
-
-       .hw_init                = colibri_pcmcia_hw_init,
-       .hw_shutdown            = colibri_pcmcia_hw_shutdown,
-
-       .socket_state           = colibri_pcmcia_socket_state,
-       .configure_socket       = colibri_pcmcia_configure_socket,
-};
-
-static struct platform_device *colibri_pcmcia_device;
-
-static int __init colibri_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_colibri() && !machine_is_colibri320())
-               return -ENODEV;
-
-       colibri_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!colibri_pcmcia_device)
-               return -ENOMEM;
-
-       /* Colibri PXA270 */
-       if (machine_is_colibri()) {
-               colibri_pcmcia_gpios[RESET].gpio        = COLIBRI270_RESET_GPIO;
-               colibri_pcmcia_gpios[PPEN].gpio         = COLIBRI270_PPEN_GPIO;
-               colibri_pcmcia_gpios[BVD1].gpio         = COLIBRI270_BVD1_GPIO;
-               colibri_pcmcia_gpios[BVD2].gpio         = COLIBRI270_BVD2_GPIO;
-               colibri_pcmcia_gpios[DETECT].gpio       = COLIBRI270_DETECT_GPIO;
-               colibri_pcmcia_gpios[READY].gpio        = COLIBRI270_READY_GPIO;
-       /* Colibri PXA320 */
-       } else if (machine_is_colibri320()) {
-               colibri_pcmcia_gpios[RESET].gpio        = COLIBRI320_RESET_GPIO;
-               colibri_pcmcia_gpios[PPEN].gpio         = COLIBRI320_PPEN_GPIO;
-               colibri_pcmcia_gpios[BVD1].gpio         = COLIBRI320_BVD1_GPIO;
-               colibri_pcmcia_gpios[BVD2].gpio         = COLIBRI320_BVD2_GPIO;
-               colibri_pcmcia_gpios[DETECT].gpio       = COLIBRI320_DETECT_GPIO;
-               colibri_pcmcia_gpios[READY].gpio        = COLIBRI320_READY_GPIO;
-       }
-
-       ret = platform_device_add_data(colibri_pcmcia_device,
-               &colibri_pcmcia_ops, sizeof(colibri_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(colibri_pcmcia_device);
-
-       if (ret)
-               platform_device_put(colibri_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit colibri_pcmcia_exit(void)
-{
-       platform_device_unregister(colibri_pcmcia_device);
-}
-
-module_init(colibri_pcmcia_init);
-module_exit(colibri_pcmcia_exit);
-
-MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
-MODULE_DESCRIPTION("PCMCIA support for Toradex Colibri PXA270/PXA320");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pcmcia/pxa2xx_e740.c b/drivers/pcmcia/pxa2xx_e740.c
deleted file mode 100644 (file)
index 72caa6d..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Toshiba e740 PCMCIA specific routines.
- *
- * (c) 2004 Ian Molton <spyro@f2s.com>
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-
-#include <mach/eseries-gpio.h>
-
-#include <asm/irq.h>
-#include <asm/mach-types.h>
-
-#include "soc_common.h"
-
-static int e740_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       if (skt->nr == 0) {
-               skt->stat[SOC_STAT_CD].gpio = GPIO_E740_PCMCIA_CD0;
-               skt->stat[SOC_STAT_CD].name = "CF card detect";
-               skt->stat[SOC_STAT_RDY].gpio = GPIO_E740_PCMCIA_RDY0;
-               skt->stat[SOC_STAT_RDY].name = "CF ready";
-       } else {
-               skt->stat[SOC_STAT_CD].gpio = GPIO_E740_PCMCIA_CD1;
-               skt->stat[SOC_STAT_CD].name = "Wifi switch";
-               skt->stat[SOC_STAT_RDY].gpio = GPIO_E740_PCMCIA_RDY1;
-               skt->stat[SOC_STAT_RDY].name = "Wifi ready";
-       }
-
-       return 0;
-}
-
-static void e740_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                       struct pcmcia_state *state)
-{
-       state->vs_3v  = 1;
-       state->vs_Xv  = 0;
-}
-
-static int e740_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                                       const socket_state_t *state)
-{
-       if (state->flags & SS_RESET) {
-               if (skt->nr == 0)
-                       gpio_set_value(GPIO_E740_PCMCIA_RST0, 1);
-               else
-                       gpio_set_value(GPIO_E740_PCMCIA_RST1, 1);
-       } else {
-               if (skt->nr == 0)
-                       gpio_set_value(GPIO_E740_PCMCIA_RST0, 0);
-               else
-                       gpio_set_value(GPIO_E740_PCMCIA_RST1, 0);
-       }
-
-       switch (state->Vcc) {
-       case 0: /* Socket off */
-               if (skt->nr == 0)
-                       gpio_set_value(GPIO_E740_PCMCIA_PWR0, 0);
-               else
-                       gpio_set_value(GPIO_E740_PCMCIA_PWR1, 1);
-               break;
-       case 50:
-       case 33: /* socket on */
-               if (skt->nr == 0)
-                       gpio_set_value(GPIO_E740_PCMCIA_PWR0, 1);
-               else
-                       gpio_set_value(GPIO_E740_PCMCIA_PWR1, 0);
-               break;
-       default:
-               printk(KERN_ERR "e740_cs: Unsupported Vcc: %d\n", state->Vcc);
-       }
-
-       return 0;
-}
-
-static struct pcmcia_low_level e740_pcmcia_ops = {
-       .owner            = THIS_MODULE,
-       .hw_init          = e740_pcmcia_hw_init,
-       .socket_state     = e740_pcmcia_socket_state,
-       .configure_socket = e740_pcmcia_configure_socket,
-       .nr               = 2,
-};
-
-static struct platform_device *e740_pcmcia_device;
-
-static int __init e740_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_e740())
-               return -ENODEV;
-
-       e740_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!e740_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(e740_pcmcia_device, &e740_pcmcia_ops,
-                                       sizeof(e740_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(e740_pcmcia_device);
-
-       if (ret)
-               platform_device_put(e740_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit e740_pcmcia_exit(void)
-{
-       platform_device_unregister(e740_pcmcia_device);
-}
-
-module_init(e740_pcmcia_init);
-module_exit(e740_pcmcia_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Ian Molton <spyro@f2s.com>");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_DESCRIPTION("e740 PCMCIA platform support");
diff --git a/drivers/pcmcia/pxa2xx_hx4700.c b/drivers/pcmcia/pxa2xx_hx4700.c
deleted file mode 100644 (file)
index 87b6a16..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- *  Copyright (C) 2012 Paul Parsons <lost.distance@yahoo.com>
- */
-
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/err.h>
-#include <linux/gpio.h>
-#include <linux/irq.h>
-
-#include <asm/mach-types.h>
-#include <mach/hx4700.h>
-
-#include "soc_common.h"
-
-static struct gpio gpios[] = {
-       { GPIO114_HX4700_CF_RESET,    GPIOF_OUT_INIT_LOW,   "CF reset"        },
-       { EGPIO4_CF_3V3_ON,           GPIOF_OUT_INIT_LOW,   "CF 3.3V enable"  },
-};
-
-static int hx4700_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       int ret;
-
-       ret = gpio_request_array(gpios, ARRAY_SIZE(gpios));
-       if (ret)
-               goto out;
-
-       /*
-        * IRQ type must be set before soc_pcmcia_hw_init() calls request_irq().
-        * The asic3 default IRQ type is level trigger low level detect, exactly
-        * the the signal present on GPIOD4_CF_nCD when a CF card is inserted.
-        * If the IRQ type is not changed, the asic3 interrupt handler will loop
-        * repeatedly because it is unable to clear the level trigger interrupt.
-        */
-       irq_set_irq_type(gpio_to_irq(GPIOD4_CF_nCD), IRQ_TYPE_EDGE_BOTH);
-
-       skt->stat[SOC_STAT_CD].gpio = GPIOD4_CF_nCD;
-       skt->stat[SOC_STAT_CD].name = "PCMCIA CD";
-       skt->stat[SOC_STAT_RDY].gpio = GPIO60_HX4700_CF_RNB;
-       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
-
-out:
-       return ret;
-}
-
-static void hx4700_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       gpio_free_array(gpios, ARRAY_SIZE(gpios));
-}
-
-static void hx4700_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-       struct pcmcia_state *state)
-{
-       state->vs_3v = 1;
-       state->vs_Xv = 0;
-}
-
-static int hx4700_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-       const socket_state_t *state)
-{
-       switch (state->Vcc) {
-       case 0:
-               gpio_set_value(EGPIO4_CF_3V3_ON, 0);
-               break;
-       case 33:
-               gpio_set_value(EGPIO4_CF_3V3_ON, 1);
-               break;
-       default:
-               printk(KERN_ERR "pcmcia: Unsupported Vcc: %d\n", state->Vcc);
-               return -EINVAL;
-       }
-
-       gpio_set_value(GPIO114_HX4700_CF_RESET, (state->flags & SS_RESET) != 0);
-
-       return 0;
-}
-
-static struct pcmcia_low_level hx4700_pcmcia_ops = {
-       .owner          = THIS_MODULE,
-       .nr             = 1,
-       .hw_init        = hx4700_pcmcia_hw_init,
-       .hw_shutdown    = hx4700_pcmcia_hw_shutdown,
-       .socket_state   = hx4700_pcmcia_socket_state,
-       .configure_socket = hx4700_pcmcia_configure_socket,
-};
-
-static struct platform_device *hx4700_pcmcia_device;
-
-static int __init hx4700_pcmcia_init(void)
-{
-       struct platform_device *pdev;
-
-       if (!machine_is_h4700())
-               return -ENODEV;
-
-       pdev = platform_device_register_data(NULL, "pxa2xx-pcmcia", -1,
-               &hx4700_pcmcia_ops, sizeof(hx4700_pcmcia_ops));
-       if (IS_ERR(pdev))
-               return PTR_ERR(pdev);
-
-       hx4700_pcmcia_device = pdev;
-
-       return 0;
-}
-
-static void __exit hx4700_pcmcia_exit(void)
-{
-       platform_device_unregister(hx4700_pcmcia_device);
-}
-
-module_init(hx4700_pcmcia_init);
-module_exit(hx4700_pcmcia_exit);
-
-MODULE_AUTHOR("Paul Parsons <lost.distance@yahoo.com>");
-MODULE_DESCRIPTION("HP iPAQ hx4700 PCMCIA driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pcmcia/pxa2xx_palmld.c b/drivers/pcmcia/pxa2xx_palmld.c
deleted file mode 100644 (file)
index cfff41a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_palmld.c
- *
- * Driver for Palm LifeDrive PCMCIA
- *
- * Copyright (C) 2006 Alex Osborne <ato@meshy.org>
- * Copyright (C) 2007-2011 Marek Vasut <marek.vasut@gmail.com>
- */
-
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/gpio.h>
-
-#include <asm/mach-types.h>
-#include <mach/palmld.h>
-#include "soc_common.h"
-
-static struct gpio palmld_pcmcia_gpios[] = {
-       { GPIO_NR_PALMLD_PCMCIA_POWER,  GPIOF_INIT_LOW, "PCMCIA Power" },
-       { GPIO_NR_PALMLD_PCMCIA_RESET,  GPIOF_INIT_HIGH,"PCMCIA Reset" },
-};
-
-static int palmld_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       int ret;
-
-       ret = gpio_request_array(palmld_pcmcia_gpios,
-                               ARRAY_SIZE(palmld_pcmcia_gpios));
-
-       skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMLD_PCMCIA_READY;
-       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
-
-       return ret;
-}
-
-static void palmld_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       gpio_free_array(palmld_pcmcia_gpios, ARRAY_SIZE(palmld_pcmcia_gpios));
-}
-
-static void palmld_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                       struct pcmcia_state *state)
-{
-       state->detect = 1; /* always inserted */
-       state->vs_3v  = 1;
-       state->vs_Xv  = 0;
-}
-
-static int palmld_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                                       const socket_state_t *state)
-{
-       gpio_set_value(GPIO_NR_PALMLD_PCMCIA_POWER, 1);
-       gpio_set_value(GPIO_NR_PALMLD_PCMCIA_RESET,
-                       !!(state->flags & SS_RESET));
-
-       return 0;
-}
-
-static struct pcmcia_low_level palmld_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-
-       .first                  = 1,
-       .nr                     = 1,
-
-       .hw_init                = palmld_pcmcia_hw_init,
-       .hw_shutdown            = palmld_pcmcia_hw_shutdown,
-
-       .socket_state           = palmld_pcmcia_socket_state,
-       .configure_socket       = palmld_pcmcia_configure_socket,
-};
-
-static struct platform_device *palmld_pcmcia_device;
-
-static int __init palmld_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_palmld())
-               return -ENODEV;
-
-       palmld_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!palmld_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(palmld_pcmcia_device, &palmld_pcmcia_ops,
-                                       sizeof(palmld_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(palmld_pcmcia_device);
-
-       if (ret)
-               platform_device_put(palmld_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit palmld_pcmcia_exit(void)
-{
-       platform_device_unregister(palmld_pcmcia_device);
-}
-
-module_init(palmld_pcmcia_init);
-module_exit(palmld_pcmcia_exit);
-
-MODULE_AUTHOR("Alex Osborne <ato@meshy.org>,"
-           " Marek Vasut <marek.vasut@gmail.com>");
-MODULE_DESCRIPTION("PCMCIA support for Palm LifeDrive");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pcmcia/pxa2xx_palmtc.c b/drivers/pcmcia/pxa2xx_palmtc.c
deleted file mode 100644 (file)
index 8fe0561..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_palmtc.c
- *
- * Driver for Palm Tungsten|C PCMCIA
- *
- * Copyright (C) 2008 Alex Osborne <ato@meshy.org>
- * Copyright (C) 2009-2011 Marek Vasut <marek.vasut@gmail.com>
- */
-
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/gpio.h>
-#include <linux/delay.h>
-
-#include <asm/mach-types.h>
-#include <mach/palmtc.h>
-#include "soc_common.h"
-
-static struct gpio palmtc_pcmcia_gpios[] = {
-       { GPIO_NR_PALMTC_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" },
-       { GPIO_NR_PALMTC_PCMCIA_POWER2, GPIOF_INIT_LOW, "PCMCIA Power 2" },
-       { GPIO_NR_PALMTC_PCMCIA_POWER3, GPIOF_INIT_LOW, "PCMCIA Power 3" },
-       { GPIO_NR_PALMTC_PCMCIA_RESET,  GPIOF_INIT_HIGH,"PCMCIA Reset" },
-       { GPIO_NR_PALMTC_PCMCIA_PWRREADY, GPIOF_IN,     "PCMCIA Power Ready" },
-};
-
-static int palmtc_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       int ret;
-
-       ret = gpio_request_array(palmtc_pcmcia_gpios,
-                               ARRAY_SIZE(palmtc_pcmcia_gpios));
-
-       skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMTC_PCMCIA_READY;
-       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
-
-       return ret;
-}
-
-static void palmtc_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       gpio_free_array(palmtc_pcmcia_gpios, ARRAY_SIZE(palmtc_pcmcia_gpios));
-}
-
-static void palmtc_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                       struct pcmcia_state *state)
-{
-       state->detect = 1; /* always inserted */
-       state->vs_3v  = 1;
-       state->vs_Xv  = 0;
-}
-
-static int palmtc_wifi_powerdown(void)
-{
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER2, 0);
-       mdelay(40);
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER1, 0);
-       return 0;
-}
-
-static int palmtc_wifi_powerup(void)
-{
-       int timeout = 50;
-
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER3, 1);
-       mdelay(50);
-
-       /* Power up the card, 1.8V first, after a while 3.3V */
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER1, 1);
-       mdelay(100);
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER2, 1);
-
-       /* Wait till the card is ready */
-       while (!gpio_get_value(GPIO_NR_PALMTC_PCMCIA_PWRREADY) &&
-               timeout) {
-               mdelay(1);
-               timeout--;
-       }
-
-       /* Power down the WiFi in case of error */
-       if (!timeout) {
-               palmtc_wifi_powerdown();
-               return 1;
-       }
-
-       /* Reset the card */
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 1);
-       mdelay(20);
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_RESET, 0);
-       mdelay(25);
-
-       gpio_set_value(GPIO_NR_PALMTC_PCMCIA_POWER3, 0);
-
-       return 0;
-}
-
-static int palmtc_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                                       const socket_state_t *state)
-{
-       int ret = 1;
-
-       if (state->Vcc == 0)
-               ret = palmtc_wifi_powerdown();
-       else if (state->Vcc == 33)
-               ret = palmtc_wifi_powerup();
-
-       return ret;
-}
-
-static struct pcmcia_low_level palmtc_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-
-       .first                  = 0,
-       .nr                     = 1,
-
-       .hw_init                = palmtc_pcmcia_hw_init,
-       .hw_shutdown            = palmtc_pcmcia_hw_shutdown,
-
-       .socket_state           = palmtc_pcmcia_socket_state,
-       .configure_socket       = palmtc_pcmcia_configure_socket,
-};
-
-static struct platform_device *palmtc_pcmcia_device;
-
-static int __init palmtc_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_palmtc())
-               return -ENODEV;
-
-       palmtc_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!palmtc_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(palmtc_pcmcia_device, &palmtc_pcmcia_ops,
-                                       sizeof(palmtc_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(palmtc_pcmcia_device);
-
-       if (ret)
-               platform_device_put(palmtc_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit palmtc_pcmcia_exit(void)
-{
-       platform_device_unregister(palmtc_pcmcia_device);
-}
-
-module_init(palmtc_pcmcia_init);
-module_exit(palmtc_pcmcia_exit);
-
-MODULE_AUTHOR("Alex Osborne <ato@meshy.org>,"
-           " Marek Vasut <marek.vasut@gmail.com>");
-MODULE_DESCRIPTION("PCMCIA support for Palm Tungsten|C");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_LICENSE("GPL");
diff --git a/drivers/pcmcia/pxa2xx_palmtx.c b/drivers/pcmcia/pxa2xx_palmtx.c
deleted file mode 100644 (file)
index c449ca7..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_palmtx.c
- *
- * Driver for Palm T|X PCMCIA
- *
- * Copyright (C) 2007-2011 Marek Vasut <marek.vasut@gmail.com>
- */
-
-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/gpio.h>
-
-#include <asm/mach-types.h>
-#include <mach/palmtx.h>
-#include "soc_common.h"
-
-static struct gpio palmtx_pcmcia_gpios[] = {
-       { GPIO_NR_PALMTX_PCMCIA_POWER1, GPIOF_INIT_LOW, "PCMCIA Power 1" },
-       { GPIO_NR_PALMTX_PCMCIA_POWER2, GPIOF_INIT_LOW, "PCMCIA Power 2" },
-       { GPIO_NR_PALMTX_PCMCIA_RESET,  GPIOF_INIT_HIGH,"PCMCIA Reset" },
-};
-
-static int palmtx_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       int ret;
-
-       ret = gpio_request_array(palmtx_pcmcia_gpios,
-                               ARRAY_SIZE(palmtx_pcmcia_gpios));
-
-       skt->stat[SOC_STAT_RDY].gpio = GPIO_NR_PALMTX_PCMCIA_READY;
-       skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
-
-       return ret;
-}
-
-static void palmtx_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       gpio_free_array(palmtx_pcmcia_gpios, ARRAY_SIZE(palmtx_pcmcia_gpios));
-}
-
-static void palmtx_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                       struct pcmcia_state *state)
-{
-       state->detect = 1; /* always inserted */
-       state->vs_3v  = 1;
-       state->vs_Xv  = 0;
-}
-
-static int
-palmtx_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                               const socket_state_t *state)
-{
-       gpio_set_value(GPIO_NR_PALMTX_PCMCIA_POWER1, 1);
-       gpio_set_value(GPIO_NR_PALMTX_PCMCIA_POWER2, 1);
-       gpio_set_value(GPIO_NR_PALMTX_PCMCIA_RESET,
-                       !!(state->flags & SS_RESET));
-
-       return 0;
-}
-
-static struct pcmcia_low_level palmtx_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-
-       .first                  = 0,
-       .nr                     = 1,
-
-       .hw_init                = palmtx_pcmcia_hw_init,
-       .hw_shutdown            = palmtx_pcmcia_hw_shutdown,
-
-       .socket_state           = palmtx_pcmcia_socket_state,
-       .configure_socket       = palmtx_pcmcia_configure_socket,
-};
-
-static struct platform_device *palmtx_pcmcia_device;
-
-static int __init palmtx_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_palmtx())
-               return -ENODEV;
-
-       palmtx_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!palmtx_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(palmtx_pcmcia_device, &palmtx_pcmcia_ops,
-                                       sizeof(palmtx_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(palmtx_pcmcia_device);
-
-       if (ret)
-               platform_device_put(palmtx_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit palmtx_pcmcia_exit(void)
-{
-       platform_device_unregister(palmtx_pcmcia_device);
-}
-
-module_init(palmtx_pcmcia_init);
-module_exit(palmtx_pcmcia_exit);
-
-MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
-MODULE_DESCRIPTION("PCMCIA support for Palm T|X");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_LICENSE("GPL");
index 5fdd25a9e28eea6e7c7be7aac7329260cf4507d4..b3ba858f70cb9e7ac67d88f8abfa275b60738e97 100644 (file)
 #include <linux/platform_device.h>
 
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
 #include <asm/irq.h>
 #include <asm/hardware/scoop.h>
 
-#include "soc_common.h"
+#include <pcmcia/soc_common.h>
 
 #define        NO_KEEP_VS 0x0001
 #define SCOOP_DEV platform_scoop_config->devs
diff --git a/drivers/pcmcia/pxa2xx_trizeps4.c b/drivers/pcmcia/pxa2xx_trizeps4.c
deleted file mode 100644 (file)
index 6db8fe8..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_trizeps4.c
- *
- * TRIZEPS PCMCIA specific routines.
- *
- * Author:     Jürgen Schindele
- * Created:    20 02, 2006
- * Copyright:  Jürgen Schindele
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-
-#include <mach/pxa2xx-regs.h>
-#include <mach/trizeps4.h>
-
-#include "soc_common.h"
-
-extern void board_pcmcia_power(int power);
-
-static int trizeps_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       /* we dont have voltage/card/ready detection
-        * so we dont need interrupts for it
-        */
-       switch (skt->nr) {
-       case 0:
-               skt->stat[SOC_STAT_CD].gpio = GPIO_PCD;
-               skt->stat[SOC_STAT_CD].name = "cs0_cd";
-               skt->stat[SOC_STAT_RDY].gpio = GPIO_PRDY;
-               skt->stat[SOC_STAT_RDY].name = "cs0_rdy";
-               break;
-       default:
-               break;
-       }
-       /* release the reset of this card */
-       pr_debug("%s: sock %d irq %d\n", __func__, skt->nr, skt->socket.pci_irq);
-
-       return 0;
-}
-
-static unsigned long trizeps_pcmcia_status[2];
-
-static void trizeps_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                               struct pcmcia_state *state)
-{
-       unsigned short status = 0, change;
-       status = CFSR_readw();
-       change = (status ^ trizeps_pcmcia_status[skt->nr]) &
-                               ConXS_CFSR_BVD_MASK;
-       if (change) {
-               trizeps_pcmcia_status[skt->nr] = status;
-               if (status & ConXS_CFSR_BVD1) {
-                       /* enable_irq empty */
-               } else {
-                       /* disable_irq empty */
-               }
-       }
-
-       switch (skt->nr) {
-       case 0:
-               /* just fill in fix states */
-               state->bvd1   = (status & ConXS_CFSR_BVD1) ? 1 : 0;
-               state->bvd2   = (status & ConXS_CFSR_BVD2) ? 1 : 0;
-               state->vs_3v  = (status & ConXS_CFSR_VS1) ? 0 : 1;
-               state->vs_Xv  = (status & ConXS_CFSR_VS2) ? 0 : 1;
-               break;
-
-#ifndef CONFIG_MACH_TRIZEPS_CONXS
-       /* on ConXS we only have one slot. Second is inactive */
-       case 1:
-               state->detect = 0;
-               state->ready  = 0;
-               state->bvd1   = 0;
-               state->bvd2   = 0;
-               state->vs_3v  = 0;
-               state->vs_Xv  = 0;
-               break;
-
-#endif
-       }
-}
-
-static int trizeps_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                               const socket_state_t *state)
-{
-       int ret = 0;
-       unsigned short power = 0;
-
-       /* we do nothing here just check a bit */
-       switch (state->Vcc) {
-       case 0:  power &= 0xfc; break;
-       case 33: power |= ConXS_BCR_S0_VCC_3V3; break;
-       case 50:
-               pr_err("%s(): Vcc 5V not supported in socket\n", __func__);
-               break;
-       default:
-               pr_err("%s(): bad Vcc %u\n", __func__, state->Vcc);
-               ret = -1;
-       }
-
-       switch (state->Vpp) {
-       case 0:  power &= 0xf3; break;
-       case 33: power |= ConXS_BCR_S0_VPP_3V3; break;
-       case 120:
-               pr_err("%s(): Vpp 12V not supported in socket\n", __func__);
-               break;
-       default:
-               if (state->Vpp != state->Vcc) {
-                       pr_err("%s(): bad Vpp %u\n", __func__, state->Vpp);
-                       ret = -1;
-               }
-       }
-
-       switch (skt->nr) {
-       case 0:                  /* we only have 3.3V */
-               board_pcmcia_power(power);
-               break;
-
-#ifndef CONFIG_MACH_TRIZEPS_CONXS
-       /* on ConXS we only have one slot. Second is inactive */
-       case 1:
-#endif
-       default:
-               break;
-       }
-
-       return ret;
-}
-
-static void trizeps_pcmcia_socket_init(struct soc_pcmcia_socket *skt)
-{
-       /* default is on */
-       board_pcmcia_power(0x9);
-}
-
-static void trizeps_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt)
-{
-       board_pcmcia_power(0x0);
-}
-
-static struct pcmcia_low_level trizeps_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-       .hw_init                = trizeps_pcmcia_hw_init,
-       .socket_state           = trizeps_pcmcia_socket_state,
-       .configure_socket       = trizeps_pcmcia_configure_socket,
-       .socket_init            = trizeps_pcmcia_socket_init,
-       .socket_suspend         = trizeps_pcmcia_socket_suspend,
-#ifdef CONFIG_MACH_TRIZEPS_CONXS
-       .nr                     = 1,
-#else
-       .nr                     = 2,
-#endif
-       .first                  = 0,
-};
-
-static struct platform_device *trizeps_pcmcia_device;
-
-static int __init trizeps_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_trizeps4() && !machine_is_trizeps4wl())
-               return -ENODEV;
-
-       trizeps_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!trizeps_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(trizeps_pcmcia_device,
-                       &trizeps_pcmcia_ops, sizeof(trizeps_pcmcia_ops));
-
-       if (ret == 0)
-               ret = platform_device_add(trizeps_pcmcia_device);
-
-       if (ret)
-               platform_device_put(trizeps_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit trizeps_pcmcia_exit(void)
-{
-       platform_device_unregister(trizeps_pcmcia_device);
-}
-
-fs_initcall(trizeps_pcmcia_init);
-module_exit(trizeps_pcmcia_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Juergen Schindele");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
diff --git a/drivers/pcmcia/pxa2xx_viper.c b/drivers/pcmcia/pxa2xx_viper.c
deleted file mode 100644 (file)
index 7ac6647..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Viper/Zeus PCMCIA support
- *   Copyright 2004 Arcom Control Systems
- *
- * Maintained by Marc Zyngier <maz@misterjones.org>
- *
- * Based on:
- *   iPAQ h2200 PCMCIA support
- *   Copyright 2004 Koen Kooi <koen@vestingbar.nl>
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file COPYING in the main directory of this archive for
- * more details.
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-#include <linux/gpio.h>
-
-#include <pcmcia/ss.h>
-
-#include <asm/irq.h>
-
-#include <linux/platform_data/pcmcia-pxa2xx_viper.h>
-
-#include "soc_common.h"
-#include "pxa2xx_base.h"
-
-static struct platform_device *arcom_pcmcia_dev;
-
-static inline struct arcom_pcmcia_pdata *viper_get_pdata(void)
-{
-       return arcom_pcmcia_dev->dev.platform_data;
-}
-
-static int viper_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
-       unsigned long flags;
-
-       skt->stat[SOC_STAT_CD].gpio = pdata->cd_gpio;
-       skt->stat[SOC_STAT_CD].name = "PCMCIA_CD";
-       skt->stat[SOC_STAT_RDY].gpio = pdata->rdy_gpio;
-       skt->stat[SOC_STAT_RDY].name = "CF ready";
-
-       if (gpio_request(pdata->pwr_gpio, "CF power"))
-               goto err_request_pwr;
-
-       local_irq_save(flags);
-
-       if (gpio_direction_output(pdata->pwr_gpio, 0)) {
-               local_irq_restore(flags);
-               goto err_dir;
-       }
-
-       local_irq_restore(flags);
-
-       return 0;
-
-err_dir:
-       gpio_free(pdata->pwr_gpio);
-err_request_pwr:
-       dev_err(&arcom_pcmcia_dev->dev, "Failed to setup PCMCIA GPIOs\n");
-       return -1;
-}
-
-/*
- * Release all resources.
- */
-static void viper_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
-
-       gpio_free(pdata->pwr_gpio);
-}
-
-static void viper_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                     struct pcmcia_state *state)
-{
-       state->vs_3v  = 1; /* Can only apply 3.3V */
-       state->vs_Xv  = 0;
-}
-
-static int viper_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                                        const socket_state_t *state)
-{
-       struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
-
-       /* Silently ignore Vpp, output enable, speaker enable. */
-       pdata->reset(state->flags & SS_RESET);
-
-       /* Apply socket voltage */
-       switch (state->Vcc) {
-       case 0:
-               gpio_set_value(pdata->pwr_gpio, 0);
-               break;
-       case 33:
-               gpio_set_value(pdata->pwr_gpio, 1);
-               break;
-       default:
-               dev_err(&arcom_pcmcia_dev->dev, "Unsupported Vcc:%d\n", state->Vcc);
-               return -1;
-       }
-
-       return 0;
-}
-
-static struct pcmcia_low_level viper_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-       .hw_init                = viper_pcmcia_hw_init,
-       .hw_shutdown            = viper_pcmcia_hw_shutdown,
-       .socket_state           = viper_pcmcia_socket_state,
-       .configure_socket       = viper_pcmcia_configure_socket,
-       .nr                     = 1,
-};
-
-static struct platform_device *viper_pcmcia_device;
-
-static int viper_pcmcia_probe(struct platform_device *pdev)
-{
-       int ret;
-
-       /* I can't imagine more than one device, but you never know... */
-       if (arcom_pcmcia_dev)
-               return -EEXIST;
-
-       if (!pdev->dev.platform_data)
-               return -EINVAL;
-
-       viper_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!viper_pcmcia_device)
-               return -ENOMEM;
-
-       arcom_pcmcia_dev = pdev;
-
-       viper_pcmcia_device->dev.parent = &pdev->dev;
-
-       ret = platform_device_add_data(viper_pcmcia_device,
-                                      &viper_pcmcia_ops,
-                                      sizeof(viper_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(viper_pcmcia_device);
-
-       if (ret) {
-               platform_device_put(viper_pcmcia_device);
-               arcom_pcmcia_dev = NULL;
-       }
-
-       return ret;
-}
-
-static int viper_pcmcia_remove(struct platform_device *pdev)
-{
-       platform_device_unregister(viper_pcmcia_device);
-       arcom_pcmcia_dev = NULL;
-       return 0;
-}
-
-static struct platform_device_id viper_pcmcia_id_table[] = {
-       { .name = "viper-pcmcia", },
-       { .name = "zeus-pcmcia",  },
-       { },
-};
-
-static struct platform_driver viper_pcmcia_driver = {
-       .probe          = viper_pcmcia_probe,
-       .remove         = viper_pcmcia_remove,
-       .driver         = {
-               .name   = "arcom-pcmcia",
-       },
-       .id_table       = viper_pcmcia_id_table,
-};
-
-module_platform_driver(viper_pcmcia_driver);
-
-MODULE_DEVICE_TABLE(platform, viper_pcmcia_id_table);
-MODULE_LICENSE("GPL");
diff --git a/drivers/pcmcia/pxa2xx_vpac270.c b/drivers/pcmcia/pxa2xx_vpac270.c
deleted file mode 100644 (file)
index 3565add..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * linux/drivers/pcmcia/pxa2xx_vpac270.c
- *
- * Driver for Voipac PXA270 PCMCIA and CF sockets
- *
- * Copyright (C) 2010-2011 Marek Vasut <marek.vasut@gmail.com>
- */
-
-#include <linux/gpio.h>
-#include <linux/module.h>
-#include <linux/platform_device.h>
-
-#include <asm/mach-types.h>
-
-#include <mach/vpac270.h>
-
-#include "soc_common.h"
-
-static struct gpio vpac270_pcmcia_gpios[] = {
-       { GPIO107_VPAC270_PCMCIA_PPEN,  GPIOF_INIT_LOW, "PCMCIA PPEN" },
-       { GPIO11_VPAC270_PCMCIA_RESET,  GPIOF_INIT_LOW, "PCMCIA Reset" },
-};
-
-static struct gpio vpac270_cf_gpios[] = {
-       { GPIO16_VPAC270_CF_RESET,      GPIOF_INIT_LOW, "CF Reset" },
-};
-
-static int vpac270_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
-{
-       int ret;
-
-       if (skt->nr == 0) {
-               ret = gpio_request_array(vpac270_pcmcia_gpios,
-                               ARRAY_SIZE(vpac270_pcmcia_gpios));
-
-               skt->stat[SOC_STAT_CD].gpio = GPIO84_VPAC270_PCMCIA_CD;
-               skt->stat[SOC_STAT_CD].name = "PCMCIA CD";
-               skt->stat[SOC_STAT_RDY].gpio = GPIO35_VPAC270_PCMCIA_RDY;
-               skt->stat[SOC_STAT_RDY].name = "PCMCIA Ready";
-       } else {
-               ret = gpio_request_array(vpac270_cf_gpios,
-                               ARRAY_SIZE(vpac270_cf_gpios));
-
-               skt->stat[SOC_STAT_CD].gpio = GPIO17_VPAC270_CF_CD;
-               skt->stat[SOC_STAT_CD].name = "CF CD";
-               skt->stat[SOC_STAT_RDY].gpio = GPIO12_VPAC270_CF_RDY;
-               skt->stat[SOC_STAT_RDY].name = "CF Ready";
-       }
-
-       return ret;
-}
-
-static void vpac270_pcmcia_hw_shutdown(struct soc_pcmcia_socket *skt)
-{
-       if (skt->nr == 0)
-               gpio_free_array(vpac270_pcmcia_gpios,
-                                       ARRAY_SIZE(vpac270_pcmcia_gpios));
-       else
-               gpio_free_array(vpac270_cf_gpios,
-                                       ARRAY_SIZE(vpac270_cf_gpios));
-}
-
-static void vpac270_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
-                                       struct pcmcia_state *state)
-{
-       state->vs_3v  = 1;
-       state->vs_Xv  = 0;
-}
-
-static int
-vpac270_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,
-                               const socket_state_t *state)
-{
-       if (skt->nr == 0) {
-               gpio_set_value(GPIO11_VPAC270_PCMCIA_RESET,
-                       (state->flags & SS_RESET));
-               gpio_set_value(GPIO107_VPAC270_PCMCIA_PPEN,
-                       !(state->Vcc == 33 || state->Vcc == 50));
-       } else {
-               gpio_set_value(GPIO16_VPAC270_CF_RESET,
-                       (state->flags & SS_RESET));
-       }
-
-       return 0;
-}
-
-static struct pcmcia_low_level vpac270_pcmcia_ops = {
-       .owner                  = THIS_MODULE,
-
-       .first                  = 0,
-       .nr                     = 2,
-
-       .hw_init                = vpac270_pcmcia_hw_init,
-       .hw_shutdown            = vpac270_pcmcia_hw_shutdown,
-
-       .socket_state           = vpac270_pcmcia_socket_state,
-       .configure_socket       = vpac270_pcmcia_configure_socket,
-};
-
-static struct platform_device *vpac270_pcmcia_device;
-
-static int __init vpac270_pcmcia_init(void)
-{
-       int ret;
-
-       if (!machine_is_vpac270())
-               return -ENODEV;
-
-       vpac270_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
-       if (!vpac270_pcmcia_device)
-               return -ENOMEM;
-
-       ret = platform_device_add_data(vpac270_pcmcia_device,
-               &vpac270_pcmcia_ops, sizeof(vpac270_pcmcia_ops));
-
-       if (!ret)
-               ret = platform_device_add(vpac270_pcmcia_device);
-
-       if (ret)
-               platform_device_put(vpac270_pcmcia_device);
-
-       return ret;
-}
-
-static void __exit vpac270_pcmcia_exit(void)
-{
-       platform_device_unregister(vpac270_pcmcia_device);
-}
-
-module_init(vpac270_pcmcia_init);
-module_exit(vpac270_pcmcia_exit);
-
-MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
-MODULE_DESCRIPTION("PCMCIA support for Voipac PXA270");
-MODULE_ALIAS("platform:pxa2xx-pcmcia");
-MODULE_LICENSE("GPL");
index 29fdd174bc23295bddf77e6158c7a20985d6d725..bce664bbdc98f42c42754833185048f39f5bb04c 100644 (file)
@@ -17,7 +17,6 @@
 
 #include <pcmcia/ss.h>
 
-#include <mach/hardware.h>
 #include <asm/hardware/sa1111.h>
 #include <asm/mach-types.h>
 #include <asm/irq.h>
index 7feb8d61c639579d63b9109441581440c0cef933..f1b5160cb8fa0e4f5abc766210e8087267ba8880 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 
-#include <mach/hardware.h>
 #include <asm/hardware/sa1111.h>
 #include <asm/mach-types.h>
 
index 3a8c84bb174d73992570cd89a0f8ea4c3fce1983..61b0c8952bb5e027a582b37d37ffc73df81aa6b2 100644 (file)
@@ -46,8 +46,7 @@
 #include <linux/regulator/consumer.h>
 #include <linux/spinlock.h>
 #include <linux/timer.h>
-
-#include <mach/hardware.h>
+#include <linux/pci.h>
 
 #include "soc_common.h"
 
@@ -784,8 +783,7 @@ void soc_pcmcia_remove_one(struct soc_pcmcia_socket *skt)
        /* should not be required; violates some lowlevel drivers */
        soc_common_pcmcia_config_skt(skt, &dead_socket);
 
-       iounmap(skt->virt_io);
-       skt->virt_io = NULL;
+       iounmap(PCI_IOBASE + skt->res_io_io.start);
        release_resource(&skt->res_attr);
        release_resource(&skt->res_mem);
        release_resource(&skt->res_io);
@@ -818,11 +816,12 @@ int soc_pcmcia_add_one(struct soc_pcmcia_socket *skt)
        if (ret)
                goto out_err_4;
 
-       skt->virt_io = ioremap(skt->res_io.start, 0x10000);
-       if (skt->virt_io == NULL) {
-               ret = -ENOMEM;
+       skt->res_io_io = (struct resource)
+                DEFINE_RES_IO_NAMED(skt->nr * 0x1000 + 0x10000, 0x1000,
+                                    "PCMCIA I/O");
+       ret = pci_remap_iospace(&skt->res_io_io, skt->res_io.start);
+       if (ret)
                goto out_err_5;
-       }
 
        /*
         * We initialize default socket timing here, because
@@ -840,7 +839,7 @@ int soc_pcmcia_add_one(struct soc_pcmcia_socket *skt)
        skt->socket.resource_ops = &pccard_static_ops;
        skt->socket.irq_mask = 0;
        skt->socket.map_size = PAGE_SIZE;
-       skt->socket.io_offset = (unsigned long)skt->virt_io;
+       skt->socket.io_offset = (unsigned long)skt->res_io_io.start;
 
        skt->status = soc_common_pcmcia_skt_state(skt);
 
@@ -874,7 +873,7 @@ int soc_pcmcia_add_one(struct soc_pcmcia_socket *skt)
  out_err_7:
        soc_pcmcia_hw_shutdown(skt);
  out_err_6:
-       iounmap(skt->virt_io);
+       iounmap(PCI_IOBASE + skt->res_io_io.start);
  out_err_5:
        release_resource(&skt->res_attr);
  out_err_4:
index 222e81c793658d7032f4f0f227abe24b5c88938d..17ef05aa8afed3c39db017b571b7b87759f553d5 100644 (file)
 /* include the world */
 #include <linux/clk.h>
 #include <linux/cpufreq.h>
-#include <pcmcia/ss.h>
 #include <pcmcia/cistpl.h>
-
+#include <pcmcia/soc_common.h>
 
 struct device;
 struct gpio_desc;
 struct pcmcia_low_level;
 struct regulator;
 
-struct soc_pcmcia_regulator {
-       struct regulator        *reg;
-       bool                    on;
-};
-
-/*
- * This structure encapsulates per-socket state which we might need to
- * use when responding to a Card Services query of some kind.
- */
-struct soc_pcmcia_socket {
-       struct pcmcia_socket    socket;
-
-       /*
-        * Info from low level handler
-        */
-       unsigned int            nr;
-       struct clk              *clk;
-
-       /*
-        * Core PCMCIA state
-        */
-       const struct pcmcia_low_level *ops;
-
-       unsigned int            status;
-       socket_state_t          cs_state;
-
-       unsigned short          spd_io[MAX_IO_WIN];
-       unsigned short          spd_mem[MAX_WIN];
-       unsigned short          spd_attr[MAX_WIN];
-
-       struct resource         res_skt;
-       struct resource         res_io;
-       struct resource         res_mem;
-       struct resource         res_attr;
-       void __iomem            *virt_io;
-
-       struct {
-               int             gpio;
-               struct gpio_desc *desc;
-               unsigned int    irq;
-               const char      *name;
-       } stat[6];
-#define SOC_STAT_CD            0       /* Card detect */
-#define SOC_STAT_BVD1          1       /* BATDEAD / IOSTSCHG */
-#define SOC_STAT_BVD2          2       /* BATWARN / IOSPKR */
-#define SOC_STAT_RDY           3       /* Ready / Interrupt */
-#define SOC_STAT_VS1           4       /* Voltage sense 1 */
-#define SOC_STAT_VS2           5       /* Voltage sense 2 */
-
-       struct gpio_desc        *gpio_reset;
-       struct gpio_desc        *gpio_bus_enable;
-       struct soc_pcmcia_regulator vcc;
-       struct soc_pcmcia_regulator vpp;
-
-       unsigned int            irq_state;
-
-#ifdef CONFIG_CPU_FREQ
-       struct notifier_block   cpufreq_nb;
-#endif
-       struct timer_list       poll_timer;
-       struct list_head        node;
-       void *driver_data;
-};
-
 struct skt_dev_info {
        int nskt;
        struct soc_pcmcia_socket skt[];
 };
 
-struct pcmcia_state {
-  unsigned detect: 1,
-            ready: 1,
-             bvd1: 1,
-             bvd2: 1,
-           wrprot: 1,
-            vs_3v: 1,
-            vs_Xv: 1;
-};
-
-struct pcmcia_low_level {
-       struct module *owner;
-
-       /* first socket in system */
-       int first;
-       /* nr of sockets */
-       int nr;
-
-       int (*hw_init)(struct soc_pcmcia_socket *);
-       void (*hw_shutdown)(struct soc_pcmcia_socket *);
-
-       void (*socket_state)(struct soc_pcmcia_socket *, struct pcmcia_state *);
-       int (*configure_socket)(struct soc_pcmcia_socket *, const socket_state_t *);
-
-       /*
-        * Enable card status IRQs on (re-)initialisation.  This can
-        * be called at initialisation, power management event, or
-        * pcmcia event.
-        */
-       void (*socket_init)(struct soc_pcmcia_socket *);
-
-       /*
-        * Disable card status IRQs and PCMCIA bus on suspend.
-        */
-       void (*socket_suspend)(struct soc_pcmcia_socket *);
-
-       /*
-        * Hardware specific timing routines.
-        * If provided, the get_timing routine overrides the SOC default.
-        */
-       unsigned int (*get_timing)(struct soc_pcmcia_socket *, unsigned int, unsigned int);
-       int (*set_timing)(struct soc_pcmcia_socket *);
-       int (*show_timing)(struct soc_pcmcia_socket *, char *);
-
-#ifdef CONFIG_CPU_FREQ
-       /*
-        * CPUFREQ support.
-        */
-       int (*frequency_change)(struct soc_pcmcia_socket *, unsigned long, struct cpufreq_freqs *);
-#endif
-};
-
-
 struct soc_pcmcia_timing {
        unsigned short io;
        unsigned short mem;
index 32cc31cd47617a474e12d749086a9eb710133e25..73d4aca4c386e0222c6f1e0990444d316c21b63a 100644 (file)
 #include <linux/delay.h>
 #include <linux/spinlock.h>
 #include <linux/interrupt.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <asm/mach-types.h>
-#include <mach/tosa.h>
 
 static DEFINE_MUTEX(bat_lock); /* protects gpio pins */
 static struct work_struct bat_work;
@@ -28,22 +27,23 @@ struct tosa_bat {
        struct mutex work_lock; /* protects data */
 
        bool (*is_present)(struct tosa_bat *bat);
-       int gpio_full;
-       int gpio_charge_off;
+       struct gpio_desc *gpiod_full;
+       struct gpio_desc *gpiod_charge_off;
 
        int technology;
 
-       int gpio_bat;
+       struct gpio_desc *gpiod_bat;
        int adc_bat;
        int adc_bat_divider;
        int bat_max;
        int bat_min;
 
-       int gpio_temp;
+       struct gpio_desc *gpiod_temp;
        int adc_temp;
        int adc_temp_divider;
 };
 
+static struct gpio_desc *jacket_detect;
 static struct tosa_bat tosa_bat_main;
 static struct tosa_bat tosa_bat_jacket;
 
@@ -51,15 +51,15 @@ static unsigned long tosa_read_bat(struct tosa_bat *bat)
 {
        unsigned long value = 0;
 
-       if (bat->gpio_bat < 0 || bat->adc_bat < 0)
+       if (!bat->gpiod_bat || bat->adc_bat < 0)
                return 0;
 
        mutex_lock(&bat_lock);
-       gpio_set_value(bat->gpio_bat, 1);
+       gpiod_set_value(bat->gpiod_bat, 1);
        msleep(5);
        value = wm97xx_read_aux_adc(dev_get_drvdata(bat->psy->dev.parent),
                        bat->adc_bat);
-       gpio_set_value(bat->gpio_bat, 0);
+       gpiod_set_value(bat->gpiod_bat, 0);
        mutex_unlock(&bat_lock);
 
        value = value * 1000000 / bat->adc_bat_divider;
@@ -71,15 +71,15 @@ static unsigned long tosa_read_temp(struct tosa_bat *bat)
 {
        unsigned long value = 0;
 
-       if (bat->gpio_temp < 0 || bat->adc_temp < 0)
+       if (!bat->gpiod_temp || bat->adc_temp < 0)
                return 0;
 
        mutex_lock(&bat_lock);
-       gpio_set_value(bat->gpio_temp, 1);
+       gpiod_set_value(bat->gpiod_temp, 1);
        msleep(5);
        value = wm97xx_read_aux_adc(dev_get_drvdata(bat->psy->dev.parent),
                        bat->adc_temp);
-       gpio_set_value(bat->gpio_temp, 0);
+       gpiod_set_value(bat->gpiod_temp, 0);
        mutex_unlock(&bat_lock);
 
        value = value * 10000 / bat->adc_temp_divider;
@@ -136,7 +136,7 @@ static int tosa_bat_get_property(struct power_supply *psy,
 
 static bool tosa_jacket_bat_is_present(struct tosa_bat *bat)
 {
-       return gpio_get_value(TOSA_GPIO_JACKET_DETECT) == 0;
+       return gpiod_get_value(jacket_detect) == 0;
 }
 
 static void tosa_bat_external_power_changed(struct power_supply *psy)
@@ -166,23 +166,23 @@ static void tosa_bat_update(struct tosa_bat *bat)
                bat->full_chrg = -1;
        } else if (power_supply_am_i_supplied(psy)) {
                if (bat->status == POWER_SUPPLY_STATUS_DISCHARGING) {
-                       gpio_set_value(bat->gpio_charge_off, 0);
+                       gpiod_set_value(bat->gpiod_charge_off, 0);
                        mdelay(15);
                }
 
-               if (gpio_get_value(bat->gpio_full)) {
+               if (gpiod_get_value(bat->gpiod_full)) {
                        if (old == POWER_SUPPLY_STATUS_CHARGING ||
                                        bat->full_chrg == -1)
                                bat->full_chrg = tosa_read_bat(bat);
 
-                       gpio_set_value(bat->gpio_charge_off, 1);
+                       gpiod_set_value(bat->gpiod_charge_off, 1);
                        bat->status = POWER_SUPPLY_STATUS_FULL;
                } else {
-                       gpio_set_value(bat->gpio_charge_off, 0);
+                       gpiod_set_value(bat->gpiod_charge_off, 0);
                        bat->status = POWER_SUPPLY_STATUS_CHARGING;
                }
        } else {
-               gpio_set_value(bat->gpio_charge_off, 1);
+               gpiod_set_value(bat->gpiod_charge_off, 1);
                bat->status = POWER_SUPPLY_STATUS_DISCHARGING;
        }
 
@@ -251,18 +251,18 @@ static struct tosa_bat tosa_bat_main = {
        .full_chrg = -1,
        .psy = NULL,
 
-       .gpio_full = TOSA_GPIO_BAT0_CRG,
-       .gpio_charge_off = TOSA_GPIO_CHARGE_OFF,
+       .gpiod_full = NULL,
+       .gpiod_charge_off = NULL,
 
        .technology = POWER_SUPPLY_TECHNOLOGY_LIPO,
 
-       .gpio_bat = TOSA_GPIO_BAT0_V_ON,
+       .gpiod_bat = NULL,
        .adc_bat = WM97XX_AUX_ID3,
        .adc_bat_divider = 414,
        .bat_max = 4310000,
        .bat_min = 1551 * 1000000 / 414,
 
-       .gpio_temp = TOSA_GPIO_BAT1_TH_ON,
+       .gpiod_temp = NULL,
        .adc_temp = WM97XX_AUX_ID2,
        .adc_temp_divider = 10000,
 };
@@ -273,18 +273,18 @@ static struct tosa_bat tosa_bat_jacket = {
        .psy = NULL,
 
        .is_present = tosa_jacket_bat_is_present,
-       .gpio_full = TOSA_GPIO_BAT1_CRG,
-       .gpio_charge_off = TOSA_GPIO_CHARGE_OFF_JC,
+       .gpiod_full = NULL,
+       .gpiod_charge_off = NULL,
 
        .technology = POWER_SUPPLY_TECHNOLOGY_LIPO,
 
-       .gpio_bat = TOSA_GPIO_BAT1_V_ON,
+       .gpiod_bat = NULL,
        .adc_bat = WM97XX_AUX_ID3,
        .adc_bat_divider = 414,
        .bat_max = 4310000,
        .bat_min = 1551 * 1000000 / 414,
 
-       .gpio_temp = TOSA_GPIO_BAT0_TH_ON,
+       .gpiod_temp = NULL,
        .adc_temp = WM97XX_AUX_ID2,
        .adc_temp_divider = 10000,
 };
@@ -294,36 +294,20 @@ static struct tosa_bat tosa_bat_bu = {
        .full_chrg = -1,
        .psy = NULL,
 
-       .gpio_full = -1,
-       .gpio_charge_off = -1,
+       .gpiod_full = NULL,
+       .gpiod_charge_off = NULL,
 
        .technology = POWER_SUPPLY_TECHNOLOGY_LiMn,
 
-       .gpio_bat = TOSA_GPIO_BU_CHRG_ON,
+       .gpiod_bat = NULL,
        .adc_bat = WM97XX_AUX_ID4,
        .adc_bat_divider = 1266,
 
-       .gpio_temp = -1,
+       .gpiod_temp = NULL,
        .adc_temp = -1,
        .adc_temp_divider = -1,
 };
 
-static struct gpio tosa_bat_gpios[] = {
-       { TOSA_GPIO_CHARGE_OFF,    GPIOF_OUT_INIT_HIGH, "main charge off" },
-       { TOSA_GPIO_CHARGE_OFF_JC, GPIOF_OUT_INIT_HIGH, "jacket charge off" },
-       { TOSA_GPIO_BAT_SW_ON,     GPIOF_OUT_INIT_LOW,  "battery switch" },
-       { TOSA_GPIO_BAT0_V_ON,     GPIOF_OUT_INIT_LOW,  "main battery" },
-       { TOSA_GPIO_BAT1_V_ON,     GPIOF_OUT_INIT_LOW,  "jacket battery" },
-       { TOSA_GPIO_BAT1_TH_ON,    GPIOF_OUT_INIT_LOW,  "main battery temp" },
-       { TOSA_GPIO_BAT0_TH_ON,    GPIOF_OUT_INIT_LOW,  "jacket battery temp" },
-       { TOSA_GPIO_BU_CHRG_ON,    GPIOF_OUT_INIT_LOW,  "backup battery" },
-       { TOSA_GPIO_BAT0_CRG,      GPIOF_IN,            "main battery full" },
-       { TOSA_GPIO_BAT1_CRG,      GPIOF_IN,            "jacket battery full" },
-       { TOSA_GPIO_BAT0_LOW,      GPIOF_IN,            "main battery low" },
-       { TOSA_GPIO_BAT1_LOW,      GPIOF_IN,            "jacket battery low" },
-       { TOSA_GPIO_JACKET_DETECT, GPIOF_IN,            "jacket detect" },
-};
-
 #ifdef CONFIG_PM
 static int tosa_bat_suspend(struct platform_device *dev, pm_message_t state)
 {
@@ -343,19 +327,83 @@ static int tosa_bat_resume(struct platform_device *dev)
 #define tosa_bat_resume NULL
 #endif
 
-static int tosa_bat_probe(struct platform_device *dev)
+static int tosa_bat_probe(struct platform_device *pdev)
 {
        int ret;
        struct power_supply_config main_psy_cfg = {},
                                   jacket_psy_cfg = {},
                                   bu_psy_cfg = {};
+       struct device *dev = &pdev->dev;
+       struct gpio_desc *dummy;
 
        if (!machine_is_tosa())
                return -ENODEV;
 
-       ret = gpio_request_array(tosa_bat_gpios, ARRAY_SIZE(tosa_bat_gpios));
-       if (ret)
-               return ret;
+       /* Main charging control GPIOs */
+       tosa_bat_main.gpiod_charge_off = devm_gpiod_get(dev, "main charge off", GPIOD_OUT_HIGH);
+       if (IS_ERR(tosa_bat_main.gpiod_charge_off))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_main.gpiod_charge_off),
+                                    "no main charger GPIO\n");
+       tosa_bat_jacket.gpiod_charge_off = devm_gpiod_get(dev, "jacket charge off", GPIOD_OUT_HIGH);
+       if (IS_ERR(tosa_bat_jacket.gpiod_charge_off))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_jacket.gpiod_charge_off),
+                                    "no jacket charger GPIO\n");
+
+       /* Per-battery output check (routes battery voltage to ADC) */
+       tosa_bat_main.gpiod_bat = devm_gpiod_get(dev, "main battery", GPIOD_OUT_LOW);
+       if (IS_ERR(tosa_bat_main.gpiod_bat))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_main.gpiod_bat),
+                                    "no main battery GPIO\n");
+       tosa_bat_jacket.gpiod_bat = devm_gpiod_get(dev, "jacket battery", GPIOD_OUT_LOW);
+       if (IS_ERR(tosa_bat_jacket.gpiod_bat))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_jacket.gpiod_bat),
+                                    "no jacket battery GPIO\n");
+       tosa_bat_bu.gpiod_bat = devm_gpiod_get(dev, "backup battery", GPIOD_OUT_LOW);
+       if (IS_ERR(tosa_bat_bu.gpiod_bat))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_bu.gpiod_bat),
+                                    "no backup battery GPIO\n");
+
+       /* Battery full detect GPIOs (using PXA SoC GPIOs) */
+       tosa_bat_main.gpiod_full = devm_gpiod_get(dev, "main battery full", GPIOD_IN);
+       if (IS_ERR(tosa_bat_main.gpiod_full))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_main.gpiod_full),
+                                    "no main battery full GPIO\n");
+       tosa_bat_jacket.gpiod_full = devm_gpiod_get(dev, "jacket battery full", GPIOD_IN);
+       if (IS_ERR(tosa_bat_jacket.gpiod_full))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_jacket.gpiod_full),
+                                    "no jacket battery full GPIO\n");
+
+       /* Battery temperature GPIOs (routes thermistor voltage to ADC) */
+       tosa_bat_main.gpiod_temp = devm_gpiod_get(dev, "main battery temp", GPIOD_OUT_LOW);
+       if (IS_ERR(tosa_bat_main.gpiod_temp))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_main.gpiod_temp),
+                                    "no main battery temp GPIO\n");
+       tosa_bat_jacket.gpiod_temp = devm_gpiod_get(dev, "jacket battery temp", GPIOD_OUT_LOW);
+       if (IS_ERR(tosa_bat_jacket.gpiod_temp))
+               return dev_err_probe(dev, PTR_ERR(tosa_bat_jacket.gpiod_temp),
+                                    "no jacket battery temp GPIO\n");
+
+       /* Jacket detect GPIO */
+       jacket_detect = devm_gpiod_get(dev, "jacket detect", GPIOD_IN);
+       if (IS_ERR(jacket_detect))
+               return dev_err_probe(dev, PTR_ERR(jacket_detect),
+                                    "no jacket detect GPIO\n");
+
+       /* Battery low indication GPIOs (not used, we just request them) */
+       dummy = devm_gpiod_get(dev, "main battery low", GPIOD_IN);
+       if (IS_ERR(dummy))
+               return dev_err_probe(dev, PTR_ERR(dummy),
+                                    "no main battery low GPIO\n");
+       dummy = devm_gpiod_get(dev, "jacket battery low", GPIOD_IN);
+       if (IS_ERR(dummy))
+               return dev_err_probe(dev, PTR_ERR(dummy),
+                                    "no jacket battery low GPIO\n");
+
+       /* Battery switch GPIO (not used just requested) */
+       dummy = devm_gpiod_get(dev, "battery switch", GPIOD_OUT_LOW);
+       if (IS_ERR(dummy))
+               return dev_err_probe(dev, PTR_ERR(dummy),
+                                    "no battery switch GPIO\n");
 
        mutex_init(&tosa_bat_main.work_lock);
        mutex_init(&tosa_bat_jacket.work_lock);
@@ -363,7 +411,7 @@ static int tosa_bat_probe(struct platform_device *dev)
        INIT_WORK(&bat_work, tosa_bat_work);
 
        main_psy_cfg.drv_data = &tosa_bat_main;
-       tosa_bat_main.psy = power_supply_register(&dev->dev,
+       tosa_bat_main.psy = power_supply_register(dev,
                                                  &tosa_bat_main_desc,
                                                  &main_psy_cfg);
        if (IS_ERR(tosa_bat_main.psy)) {
@@ -372,7 +420,7 @@ static int tosa_bat_probe(struct platform_device *dev)
        }
 
        jacket_psy_cfg.drv_data = &tosa_bat_jacket;
-       tosa_bat_jacket.psy = power_supply_register(&dev->dev,
+       tosa_bat_jacket.psy = power_supply_register(dev,
                                                    &tosa_bat_jacket_desc,
                                                    &jacket_psy_cfg);
        if (IS_ERR(tosa_bat_jacket.psy)) {
@@ -381,28 +429,28 @@ static int tosa_bat_probe(struct platform_device *dev)
        }
 
        bu_psy_cfg.drv_data = &tosa_bat_bu;
-       tosa_bat_bu.psy = power_supply_register(&dev->dev, &tosa_bat_bu_desc,
+       tosa_bat_bu.psy = power_supply_register(dev, &tosa_bat_bu_desc,
                                                &bu_psy_cfg);
        if (IS_ERR(tosa_bat_bu.psy)) {
                ret = PTR_ERR(tosa_bat_bu.psy);
                goto err_psy_reg_bu;
        }
 
-       ret = request_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG),
+       ret = request_irq(gpiod_to_irq(tosa_bat_main.gpiod_full),
                                tosa_bat_gpio_isr,
                                IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                                "main full", &tosa_bat_main);
        if (ret)
                goto err_req_main;
 
-       ret = request_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG),
+       ret = request_irq(gpiod_to_irq(tosa_bat_jacket.gpiod_full),
                                tosa_bat_gpio_isr,
                                IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                                "jacket full", &tosa_bat_jacket);
        if (ret)
                goto err_req_jacket;
 
-       ret = request_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT),
+       ret = request_irq(gpiod_to_irq(jacket_detect),
                                tosa_bat_gpio_isr,
                                IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
                                "jacket detect", &tosa_bat_jacket);
@@ -411,9 +459,9 @@ static int tosa_bat_probe(struct platform_device *dev)
                return 0;
        }
 
-       free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket);
+       free_irq(gpiod_to_irq(tosa_bat_jacket.gpiod_full), &tosa_bat_jacket);
 err_req_jacket:
-       free_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG), &tosa_bat_main);
+       free_irq(gpiod_to_irq(tosa_bat_main.gpiod_full), &tosa_bat_main);
 err_req_main:
        power_supply_unregister(tosa_bat_bu.psy);
 err_psy_reg_bu:
@@ -425,15 +473,14 @@ err_psy_reg_main:
        /* see comment in tosa_bat_remove */
        cancel_work_sync(&bat_work);
 
-       gpio_free_array(tosa_bat_gpios, ARRAY_SIZE(tosa_bat_gpios));
        return ret;
 }
 
 static int tosa_bat_remove(struct platform_device *dev)
 {
-       free_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT), &tosa_bat_jacket);
-       free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket);
-       free_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG), &tosa_bat_main);
+       free_irq(gpiod_to_irq(jacket_detect), &tosa_bat_jacket);
+       free_irq(gpiod_to_irq(tosa_bat_jacket.gpiod_full), &tosa_bat_jacket);
+       free_irq(gpiod_to_irq(tosa_bat_main.gpiod_full), &tosa_bat_main);
 
        power_supply_unregister(tosa_bat_bu.psy);
        power_supply_unregister(tosa_bat_jacket.psy);
@@ -445,7 +492,6 @@ static int tosa_bat_remove(struct platform_device *dev)
         * unregistered now.
         */
        cancel_work_sync(&bat_work);
-       gpio_free_array(tosa_bat_gpios, ARRAY_SIZE(tosa_bat_gpios));
        return 0;
 }
 
index cf8119b6d32044b343d63e71f669190cc38ecfa1..eeacf480cf3621a0576a7e800b9adea88493534e 100644 (file)
@@ -16,8 +16,6 @@
 #include <linux/of.h>
 #include <linux/of_device.h>
 
-#include <mach/hardware.h>
-
 #include "rtc-sa1100.h"
 
 #define RTC_DEF_DIVIDER                (32768 - 1)
index c5aae42673d3b89e821f74e8bbd2ce544f0610e1..86ccf5970bc1bea94d4323967e238af5ab5dedb7 100644 (file)
@@ -14,6 +14,7 @@ source "drivers/soc/ixp4xx/Kconfig"
 source "drivers/soc/litex/Kconfig"
 source "drivers/soc/mediatek/Kconfig"
 source "drivers/soc/microchip/Kconfig"
+source "drivers/soc/pxa/Kconfig"
 source "drivers/soc/qcom/Kconfig"
 source "drivers/soc/renesas/Kconfig"
 source "drivers/soc/rockchip/Kconfig"
index e8228c4e5d18d3c9c0997fdfdd792a546cb51d76..919716e0e7001f645355f6a9d36c722545bf5165 100644 (file)
@@ -19,6 +19,7 @@ obj-$(CONFIG_SOC_XWAY)                += lantiq/
 obj-$(CONFIG_LITEX_SOC_CONTROLLER) += litex/
 obj-y                          += mediatek/
 obj-y                          += microchip/
+obj-y                          += pxa/
 obj-y                          += amlogic/
 obj-y                          += qcom/
 obj-y                          += renesas/
diff --git a/drivers/soc/pxa/Kconfig b/drivers/soc/pxa/Kconfig
new file mode 100644 (file)
index 0000000..c5c265a
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0-only
+config PLAT_PXA
+       bool
+
+config PXA_SSP
+       tristate
+       help
+         Enable support for PXA2xx SSP ports
diff --git a/drivers/soc/pxa/Makefile b/drivers/soc/pxa/Makefile
new file mode 100644 (file)
index 0000000..413dece
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+obj-$(CONFIG_PXA3xx)           += mfp.o
+obj-$(CONFIG_ARCH_MMP)         += mfp.o
+
+obj-$(CONFIG_PXA_SSP)          += ssp.o
diff --git a/drivers/soc/pxa/mfp.c b/drivers/soc/pxa/mfp.c
new file mode 100644 (file)
index 0000000..6220ba3
--- /dev/null
@@ -0,0 +1,282 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * linux/arch/arm/plat-pxa/mfp.c
+ *
+ *   Multi-Function Pin Support
+ *
+ * Copyright (C) 2007 Marvell Internation Ltd.
+ *
+ * 2007-08-21: eric miao <eric.miao@marvell.com>
+ *             initial version
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/io.h>
+
+#include <linux/soc/pxa/mfp.h>
+
+#define MFPR_SIZE      (PAGE_SIZE)
+
+/* MFPR register bit definitions */
+#define MFPR_PULL_SEL          (0x1 << 15)
+#define MFPR_PULLUP_EN         (0x1 << 14)
+#define MFPR_PULLDOWN_EN       (0x1 << 13)
+#define MFPR_SLEEP_SEL         (0x1 << 9)
+#define MFPR_SLEEP_OE_N                (0x1 << 7)
+#define MFPR_EDGE_CLEAR                (0x1 << 6)
+#define MFPR_EDGE_FALL_EN      (0x1 << 5)
+#define MFPR_EDGE_RISE_EN      (0x1 << 4)
+
+#define MFPR_SLEEP_DATA(x)     ((x) << 8)
+#define MFPR_DRIVE(x)          (((x) & 0x7) << 10)
+#define MFPR_AF_SEL(x)         (((x) & 0x7) << 0)
+
+#define MFPR_EDGE_NONE         (0)
+#define MFPR_EDGE_RISE         (MFPR_EDGE_RISE_EN)
+#define MFPR_EDGE_FALL         (MFPR_EDGE_FALL_EN)
+#define MFPR_EDGE_BOTH         (MFPR_EDGE_RISE | MFPR_EDGE_FALL)
+
+/*
+ * Table that determines the low power modes outputs, with actual settings
+ * used in parentheses for don't-care values. Except for the float output,
+ * the configured driven and pulled levels match, so if there is a need for
+ * non-LPM pulled output, the same configuration could probably be used.
+ *
+ * Output value  sleep_oe_n  sleep_data  pullup_en  pulldown_en  pull_sel
+ *                 (bit 7)    (bit 8)    (bit 14)     (bit 13)   (bit 15)
+ *
+ * Input            0          X(0)        X(0)        X(0)       0
+ * Drive 0          0          0           0           X(1)       0
+ * Drive 1          0          1           X(1)        0         0
+ * Pull hi (1)      1          X(1)        1           0         0
+ * Pull lo (0)      1          X(0)        0           1         0
+ * Z (float)        1          X(0)        0           0         0
+ */
+#define MFPR_LPM_INPUT         (0)
+#define MFPR_LPM_DRIVE_LOW     (MFPR_SLEEP_DATA(0) | MFPR_PULLDOWN_EN)
+#define MFPR_LPM_DRIVE_HIGH            (MFPR_SLEEP_DATA(1) | MFPR_PULLUP_EN)
+#define MFPR_LPM_PULL_LOW              (MFPR_LPM_DRIVE_LOW  | MFPR_SLEEP_OE_N)
+#define MFPR_LPM_PULL_HIGH             (MFPR_LPM_DRIVE_HIGH | MFPR_SLEEP_OE_N)
+#define MFPR_LPM_FLOAT                 (MFPR_SLEEP_OE_N)
+#define MFPR_LPM_MASK          (0xe080)
+
+/*
+ * The pullup and pulldown state of the MFP pin at run mode is by default
+ * determined by the selected alternate function. In case that some buggy
+ * devices need to override this default behavior,  the definitions below
+ * indicates the setting of corresponding MFPR bits
+ *
+ * Definition       pull_sel  pullup_en  pulldown_en
+ * MFPR_PULL_NONE       0         0        0
+ * MFPR_PULL_LOW        1         0        1
+ * MFPR_PULL_HIGH       1         1        0
+ * MFPR_PULL_BOTH       1         1        1
+ * MFPR_PULL_FLOAT     1         0        0
+ */
+#define MFPR_PULL_NONE         (0)
+#define MFPR_PULL_LOW          (MFPR_PULL_SEL | MFPR_PULLDOWN_EN)
+#define MFPR_PULL_BOTH         (MFPR_PULL_LOW | MFPR_PULLUP_EN)
+#define MFPR_PULL_HIGH         (MFPR_PULL_SEL | MFPR_PULLUP_EN)
+#define MFPR_PULL_FLOAT                (MFPR_PULL_SEL)
+
+/* mfp_spin_lock is used to ensure that MFP register configuration
+ * (most likely a read-modify-write operation) is atomic, and that
+ * mfp_table[] is consistent
+ */
+static DEFINE_SPINLOCK(mfp_spin_lock);
+
+static void __iomem *mfpr_mmio_base;
+
+struct mfp_pin {
+       unsigned long   config;         /* -1 for not configured */
+       unsigned long   mfpr_off;       /* MFPRxx Register offset */
+       unsigned long   mfpr_run;       /* Run-Mode Register Value */
+       unsigned long   mfpr_lpm;       /* Low Power Mode Register Value */
+};
+
+static struct mfp_pin mfp_table[MFP_PIN_MAX];
+
+/* mapping of MFP_LPM_* definitions to MFPR_LPM_* register bits */
+static const unsigned long mfpr_lpm[] = {
+       MFPR_LPM_INPUT,
+       MFPR_LPM_DRIVE_LOW,
+       MFPR_LPM_DRIVE_HIGH,
+       MFPR_LPM_PULL_LOW,
+       MFPR_LPM_PULL_HIGH,
+       MFPR_LPM_FLOAT,
+       MFPR_LPM_INPUT,
+};
+
+/* mapping of MFP_PULL_* definitions to MFPR_PULL_* register bits */
+static const unsigned long mfpr_pull[] = {
+       MFPR_PULL_NONE,
+       MFPR_PULL_LOW,
+       MFPR_PULL_HIGH,
+       MFPR_PULL_BOTH,
+       MFPR_PULL_FLOAT,
+};
+
+/* mapping of MFP_LPM_EDGE_* definitions to MFPR_EDGE_* register bits */
+static const unsigned long mfpr_edge[] = {
+       MFPR_EDGE_NONE,
+       MFPR_EDGE_RISE,
+       MFPR_EDGE_FALL,
+       MFPR_EDGE_BOTH,
+};
+
+#define mfpr_readl(off)                        \
+       __raw_readl(mfpr_mmio_base + (off))
+
+#define mfpr_writel(off, val)          \
+       __raw_writel(val, mfpr_mmio_base + (off))
+
+#define mfp_configured(p)      ((p)->config != -1)
+
+/*
+ * perform a read-back of any valid MFPR register to make sure the
+ * previous writings are finished
+ */
+static unsigned long mfpr_off_readback;
+#define mfpr_sync()    (void)__raw_readl(mfpr_mmio_base + mfpr_off_readback)
+
+static inline void __mfp_config_run(struct mfp_pin *p)
+{
+       if (mfp_configured(p))
+               mfpr_writel(p->mfpr_off, p->mfpr_run);
+}
+
+static inline void __mfp_config_lpm(struct mfp_pin *p)
+{
+       if (mfp_configured(p)) {
+               unsigned long mfpr_clr = (p->mfpr_run & ~MFPR_EDGE_BOTH) | MFPR_EDGE_CLEAR;
+               if (mfpr_clr != p->mfpr_run)
+                       mfpr_writel(p->mfpr_off, mfpr_clr);
+               if (p->mfpr_lpm != mfpr_clr)
+                       mfpr_writel(p->mfpr_off, p->mfpr_lpm);
+       }
+}
+
+void mfp_config(unsigned long *mfp_cfgs, int num)
+{
+       unsigned long flags;
+       int i;
+
+       spin_lock_irqsave(&mfp_spin_lock, flags);
+
+       for (i = 0; i < num; i++, mfp_cfgs++) {
+               unsigned long tmp, c = *mfp_cfgs;
+               struct mfp_pin *p;
+               int pin, af, drv, lpm, edge, pull;
+
+               pin = MFP_PIN(c);
+               BUG_ON(pin >= MFP_PIN_MAX);
+               p = &mfp_table[pin];
+
+               af  = MFP_AF(c);
+               drv = MFP_DS(c);
+               lpm = MFP_LPM_STATE(c);
+               edge = MFP_LPM_EDGE(c);
+               pull = MFP_PULL(c);
+
+               /* run-mode pull settings will conflict with MFPR bits of
+                * low power mode state,  calculate mfpr_run and mfpr_lpm
+                * individually if pull != MFP_PULL_NONE
+                */
+               tmp = MFPR_AF_SEL(af) | MFPR_DRIVE(drv);
+
+               if (likely(pull == MFP_PULL_NONE)) {
+                       p->mfpr_run = tmp | mfpr_lpm[lpm] | mfpr_edge[edge];
+                       p->mfpr_lpm = p->mfpr_run;
+               } else {
+                       p->mfpr_lpm = tmp | mfpr_lpm[lpm] | mfpr_edge[edge];
+                       p->mfpr_run = tmp | mfpr_pull[pull];
+               }
+
+               p->config = c; __mfp_config_run(p);
+       }
+
+       mfpr_sync();
+       spin_unlock_irqrestore(&mfp_spin_lock, flags);
+}
+
+unsigned long mfp_read(int mfp)
+{
+       unsigned long val, flags;
+
+       BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
+
+       spin_lock_irqsave(&mfp_spin_lock, flags);
+       val = mfpr_readl(mfp_table[mfp].mfpr_off);
+       spin_unlock_irqrestore(&mfp_spin_lock, flags);
+
+       return val;
+}
+
+void mfp_write(int mfp, unsigned long val)
+{
+       unsigned long flags;
+
+       BUG_ON(mfp < 0 || mfp >= MFP_PIN_MAX);
+
+       spin_lock_irqsave(&mfp_spin_lock, flags);
+       mfpr_writel(mfp_table[mfp].mfpr_off, val);
+       mfpr_sync();
+       spin_unlock_irqrestore(&mfp_spin_lock, flags);
+}
+
+void __init mfp_init_base(void __iomem *mfpr_base)
+{
+       int i;
+
+       /* initialize the table with default - unconfigured */
+       for (i = 0; i < ARRAY_SIZE(mfp_table); i++)
+               mfp_table[i].config = -1;
+
+       mfpr_mmio_base = mfpr_base;
+}
+
+void __init mfp_init_addr(struct mfp_addr_map *map)
+{
+       struct mfp_addr_map *p;
+       unsigned long offset, flags;
+       int i;
+
+       spin_lock_irqsave(&mfp_spin_lock, flags);
+
+       /* mfp offset for readback */
+       mfpr_off_readback = map[0].offset;
+
+       for (p = map; p->start != MFP_PIN_INVALID; p++) {
+               offset = p->offset;
+               i = p->start;
+
+               do {
+                       mfp_table[i].mfpr_off = offset;
+                       mfp_table[i].mfpr_run = 0;
+                       mfp_table[i].mfpr_lpm = 0;
+                       offset += 4; i++;
+               } while ((i <= p->end) && (p->end != -1));
+       }
+
+       spin_unlock_irqrestore(&mfp_spin_lock, flags);
+}
+
+void mfp_config_lpm(void)
+{
+       struct mfp_pin *p = &mfp_table[0];
+       int pin;
+
+       for (pin = 0; pin < ARRAY_SIZE(mfp_table); pin++, p++)
+               __mfp_config_lpm(p);
+}
+
+void mfp_config_run(void)
+{
+       struct mfp_pin *p = &mfp_table[0];
+       int pin;
+
+       for (pin = 0; pin < ARRAY_SIZE(mfp_table); pin++, p++)
+               __mfp_config_run(p);
+}
diff --git a/drivers/soc/pxa/ssp.c b/drivers/soc/pxa/ssp.c
new file mode 100644 (file)
index 0000000..5634403
--- /dev/null
@@ -0,0 +1,231 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ *  linux/arch/arm/mach-pxa/ssp.c
+ *
+ *  based on linux/arch/arm/mach-sa1100/ssp.c by Russell King
+ *
+ *  Copyright (C) 2003 Russell King.
+ *  Copyright (C) 2003 Wolfson Microelectronics PLC
+ *
+ *  PXA2xx SSP driver.  This provides the generic core for simple
+ *  IO-based SSP applications and allows easy port setup for DMA access.
+ *
+ *  Author: Liam Girdwood <liam.girdwood@wolfsonmicro.com>
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/errno.h>
+#include <linux/interrupt.h>
+#include <linux/ioport.h>
+#include <linux/init.h>
+#include <linux/mutex.h>
+#include <linux/clk.h>
+#include <linux/err.h>
+#include <linux/platform_device.h>
+#include <linux/spi/pxa2xx_spi.h>
+#include <linux/io.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+
+#include <asm/irq.h>
+
+static DEFINE_MUTEX(ssp_lock);
+static LIST_HEAD(ssp_list);
+
+struct ssp_device *pxa_ssp_request(int port, const char *label)
+{
+       struct ssp_device *ssp = NULL;
+
+       mutex_lock(&ssp_lock);
+
+       list_for_each_entry(ssp, &ssp_list, node) {
+               if (ssp->port_id == port && ssp->use_count == 0) {
+                       ssp->use_count++;
+                       ssp->label = label;
+                       break;
+               }
+       }
+
+       mutex_unlock(&ssp_lock);
+
+       if (&ssp->node == &ssp_list)
+               return NULL;
+
+       return ssp;
+}
+EXPORT_SYMBOL(pxa_ssp_request);
+
+struct ssp_device *pxa_ssp_request_of(const struct device_node *of_node,
+                                     const char *label)
+{
+       struct ssp_device *ssp = NULL;
+
+       mutex_lock(&ssp_lock);
+
+       list_for_each_entry(ssp, &ssp_list, node) {
+               if (ssp->of_node == of_node && ssp->use_count == 0) {
+                       ssp->use_count++;
+                       ssp->label = label;
+                       break;
+               }
+       }
+
+       mutex_unlock(&ssp_lock);
+
+       if (&ssp->node == &ssp_list)
+               return NULL;
+
+       return ssp;
+}
+EXPORT_SYMBOL(pxa_ssp_request_of);
+
+void pxa_ssp_free(struct ssp_device *ssp)
+{
+       mutex_lock(&ssp_lock);
+       if (ssp->use_count) {
+               ssp->use_count--;
+               ssp->label = NULL;
+       } else
+               dev_err(ssp->dev, "device already free\n");
+       mutex_unlock(&ssp_lock);
+}
+EXPORT_SYMBOL(pxa_ssp_free);
+
+#ifdef CONFIG_OF
+static const struct of_device_id pxa_ssp_of_ids[] = {
+       { .compatible = "mrvl,pxa25x-ssp",      .data = (void *) PXA25x_SSP },
+       { .compatible = "mvrl,pxa25x-nssp",     .data = (void *) PXA25x_NSSP },
+       { .compatible = "mrvl,pxa27x-ssp",      .data = (void *) PXA27x_SSP },
+       { .compatible = "mrvl,pxa3xx-ssp",      .data = (void *) PXA3xx_SSP },
+       { .compatible = "mvrl,pxa168-ssp",      .data = (void *) PXA168_SSP },
+       { .compatible = "mrvl,pxa910-ssp",      .data = (void *) PXA910_SSP },
+       { .compatible = "mrvl,ce4100-ssp",      .data = (void *) CE4100_SSP },
+       { },
+};
+MODULE_DEVICE_TABLE(of, pxa_ssp_of_ids);
+#endif
+
+static int pxa_ssp_probe(struct platform_device *pdev)
+{
+       struct resource *res;
+       struct ssp_device *ssp;
+       struct device *dev = &pdev->dev;
+
+       ssp = devm_kzalloc(dev, sizeof(struct ssp_device), GFP_KERNEL);
+       if (ssp == NULL)
+               return -ENOMEM;
+
+       ssp->dev = dev;
+
+       ssp->clk = devm_clk_get(dev, NULL);
+       if (IS_ERR(ssp->clk))
+               return PTR_ERR(ssp->clk);
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       if (res == NULL) {
+               dev_err(dev, "no memory resource defined\n");
+               return -ENODEV;
+       }
+
+       res = devm_request_mem_region(dev, res->start, resource_size(res),
+                                     pdev->name);
+       if (res == NULL) {
+               dev_err(dev, "failed to request memory resource\n");
+               return -EBUSY;
+       }
+
+       ssp->phys_base = res->start;
+
+       ssp->mmio_base = devm_ioremap(dev, res->start, resource_size(res));
+       if (ssp->mmio_base == NULL) {
+               dev_err(dev, "failed to ioremap() registers\n");
+               return -ENODEV;
+       }
+
+       ssp->irq = platform_get_irq(pdev, 0);
+       if (ssp->irq < 0) {
+               dev_err(dev, "no IRQ resource defined\n");
+               return -ENODEV;
+       }
+
+       if (dev->of_node) {
+               const struct of_device_id *id =
+                       of_match_device(of_match_ptr(pxa_ssp_of_ids), dev);
+               ssp->type = (int) id->data;
+       } else {
+               const struct platform_device_id *id =
+                       platform_get_device_id(pdev);
+               ssp->type = (int) id->driver_data;
+
+               /* PXA2xx/3xx SSP ports starts from 1 and the internal pdev->id
+                * starts from 0, do a translation here
+                */
+               ssp->port_id = pdev->id + 1;
+       }
+
+       ssp->use_count = 0;
+       ssp->of_node = dev->of_node;
+
+       mutex_lock(&ssp_lock);
+       list_add(&ssp->node, &ssp_list);
+       mutex_unlock(&ssp_lock);
+
+       platform_set_drvdata(pdev, ssp);
+
+       return 0;
+}
+
+static int pxa_ssp_remove(struct platform_device *pdev)
+{
+       struct ssp_device *ssp;
+
+       ssp = platform_get_drvdata(pdev);
+       if (ssp == NULL)
+               return -ENODEV;
+
+       mutex_lock(&ssp_lock);
+       list_del(&ssp->node);
+       mutex_unlock(&ssp_lock);
+
+       return 0;
+}
+
+static const struct platform_device_id ssp_id_table[] = {
+       { "pxa25x-ssp",         PXA25x_SSP },
+       { "pxa25x-nssp",        PXA25x_NSSP },
+       { "pxa27x-ssp",         PXA27x_SSP },
+       { "pxa3xx-ssp",         PXA3xx_SSP },
+       { "pxa168-ssp",         PXA168_SSP },
+       { "pxa910-ssp",         PXA910_SSP },
+       { },
+};
+
+static struct platform_driver pxa_ssp_driver = {
+       .probe          = pxa_ssp_probe,
+       .remove         = pxa_ssp_remove,
+       .driver         = {
+               .name           = "pxa2xx-ssp",
+               .of_match_table = of_match_ptr(pxa_ssp_of_ids),
+       },
+       .id_table       = ssp_id_table,
+};
+
+static int __init pxa_ssp_init(void)
+{
+       return platform_driver_register(&pxa_ssp_driver);
+}
+
+static void __exit pxa_ssp_exit(void)
+{
+       platform_driver_unregister(&pxa_ssp_driver);
+}
+
+arch_initcall(pxa_ssp_init);
+module_exit(pxa_ssp_exit);
+
+MODULE_DESCRIPTION("PXA SSP driver");
+MODULE_AUTHOR("Liam Girdwood");
+MODULE_LICENSE("GPL");
index 6c414c99d01c00b0d1d075da1c4bcea5d38b605e..c593fc383481e7436759cef5b4b6b5d8511329bd 100644 (file)
 #include <linux/usb/gadget.h>
 #include <linux/usb/otg.h>
 
-#ifdef CONFIG_ARCH_LUBBOCK
-#include <mach/lubbock.h>
-#endif
-
 #define UDCCR   0x0000 /* UDC Control Register */
 #define UDC_RES1 0x0004 /* UDC Undocumented - Reserved1 */
 #define UDC_RES2 0x0008 /* UDC Undocumented - Reserved2 */
@@ -1578,18 +1574,15 @@ lubbock_vbus_irq(int irq, void *_dev)
        int                     vbus;
 
        dev->stats.irqs++;
-       switch (irq) {
-       case LUBBOCK_USB_IRQ:
+       if (irq == dev->usb_irq) {
                vbus = 1;
-               disable_irq(LUBBOCK_USB_IRQ);
-               enable_irq(LUBBOCK_USB_DISC_IRQ);
-               break;
-       case LUBBOCK_USB_DISC_IRQ:
+               disable_irq(dev->usb_irq);
+               enable_irq(dev->usb_disc_irq);
+       } else if (irq == dev->usb_disc_irq) {
                vbus = 0;
-               disable_irq(LUBBOCK_USB_DISC_IRQ);
-               enable_irq(LUBBOCK_USB_IRQ);
-               break;
-       default:
+               disable_irq(dev->usb_disc_irq);
+               enable_irq(dev->usb_irq);
+       } else {
                return IRQ_NONE;
        }
 
@@ -2422,20 +2415,28 @@ static int pxa25x_udc_probe(struct platform_device *pdev)
 
 #ifdef CONFIG_ARCH_LUBBOCK
        if (machine_is_lubbock()) {
-               retval = devm_request_irq(&pdev->dev, LUBBOCK_USB_DISC_IRQ,
+               dev->usb_irq = platform_get_irq(pdev, 1);
+               if (dev->usb_irq < 0)
+                       return dev->usb_irq;
+
+               dev->usb_disc_irq = platform_get_irq(pdev, 2);
+               if (dev->usb_disc_irq < 0)
+                       return dev->usb_disc_irq;
+
+               retval = devm_request_irq(&pdev->dev, dev->usb_disc_irq,
                                          lubbock_vbus_irq, 0, driver_name,
                                          dev);
                if (retval != 0) {
                        pr_err("%s: can't get irq %i, err %d\n",
-                               driver_name, LUBBOCK_USB_DISC_IRQ, retval);
+                               driver_name, dev->usb_disc_irq, retval);
                        goto err;
                }
-               retval = devm_request_irq(&pdev->dev, LUBBOCK_USB_IRQ,
+               retval = devm_request_irq(&pdev->dev, dev->usb_irq,
                                          lubbock_vbus_irq, 0, driver_name,
                                          dev);
                if (retval != 0) {
                        pr_err("%s: can't get irq %i, err %d\n",
-                               driver_name, LUBBOCK_USB_IRQ, retval);
+                               driver_name, dev->usb_irq, retval);
                        goto err;
                }
        } else
index aa4b68fd9fc0f4953181091a8243d036e85dc08c..6ab6047edc83427dad1d19e44a63d0799b8f8cc7 100644 (file)
@@ -117,16 +117,13 @@ struct pxa25x_udc {
        u64                                     dma_mask;
        struct pxa25x_ep                        ep [PXA_UDC_NUM_ENDPOINTS];
        void __iomem                            *regs;
+       int                                     usb_irq;
+       int                                     usb_disc_irq;
 };
 #define to_pxa25x(g)   (container_of((g), struct pxa25x_udc, gadget))
 
 /*-------------------------------------------------------------------------*/
 
-#ifdef CONFIG_ARCH_LUBBOCK
-#include <mach/lubbock.h>
-/* lubbock can also report usb connect/disconnect irqs */
-#endif
-
 static struct pxa25x_udc *the_controller;
 
 /*-------------------------------------------------------------------------*/
index 54aa5c77e5493b0430484f0cff4fea026b7ab255..ab4f610a0140f2bc87bd283c17344dac1d6f0130 100644 (file)
@@ -36,8 +36,7 @@
 #include <linux/usb.h>
 #include <linux/usb/hcd.h>
 #include <linux/usb/otg.h>
-
-#include <mach/hardware.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include "ohci.h"
 
diff --git a/drivers/video/fbdev/pxa3xx-regs.h b/drivers/video/fbdev/pxa3xx-regs.h
new file mode 100644 (file)
index 0000000..6a96610
--- /dev/null
@@ -0,0 +1,180 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_ARCH_REGS_LCD_H
+#define __ASM_ARCH_REGS_LCD_H
+
+/*
+ * LCD Controller Registers and Bits Definitions
+ */
+#define LCCR0          (0x000) /* LCD Controller Control Register 0 */
+#define LCCR1          (0x004) /* LCD Controller Control Register 1 */
+#define LCCR2          (0x008) /* LCD Controller Control Register 2 */
+#define LCCR3          (0x00C) /* LCD Controller Control Register 3 */
+#define LCCR4          (0x010) /* LCD Controller Control Register 4 */
+#define LCCR5          (0x014) /* LCD Controller Control Register 5 */
+#define LCSR           (0x038) /* LCD Controller Status Register 0 */
+#define LCSR1          (0x034) /* LCD Controller Status Register 1 */
+#define LIIDR          (0x03C) /* LCD Controller Interrupt ID Register */
+#define TMEDRGBR       (0x040) /* TMED RGB Seed Register */
+#define TMEDCR         (0x044) /* TMED Control Register */
+
+#define FBR0           (0x020) /* DMA Channel 0 Frame Branch Register */
+#define FBR1           (0x024) /* DMA Channel 1 Frame Branch Register */
+#define FBR2           (0x028) /* DMA Channel 2 Frame Branch Register */
+#define FBR3           (0x02C) /* DMA Channel 2 Frame Branch Register */
+#define FBR4           (0x030) /* DMA Channel 2 Frame Branch Register */
+#define FBR5           (0x110) /* DMA Channel 2 Frame Branch Register */
+#define FBR6           (0x114) /* DMA Channel 2 Frame Branch Register */
+
+#define OVL1C1         (0x050) /* Overlay 1 Control Register 1 */
+#define OVL1C2         (0x060) /* Overlay 1 Control Register 2 */
+#define OVL2C1         (0x070) /* Overlay 2 Control Register 1 */
+#define OVL2C2         (0x080) /* Overlay 2 Control Register 2 */
+
+#define CMDCR          (0x100) /* Command Control Register */
+#define PRSR           (0x104) /* Panel Read Status Register */
+
+#define LCCR3_BPP(x)   ((((x) & 0x7) << 24) | (((x) & 0x8) ? (1 << 29) : 0))
+
+#define LCCR3_PDFOR_0  (0 << 30)
+#define LCCR3_PDFOR_1  (1 << 30)
+#define LCCR3_PDFOR_2  (2 << 30)
+#define LCCR3_PDFOR_3  (3 << 30)
+
+#define LCCR4_PAL_FOR_0        (0 << 15)
+#define LCCR4_PAL_FOR_1        (1 << 15)
+#define LCCR4_PAL_FOR_2        (2 << 15)
+#define LCCR4_PAL_FOR_3        (3 << 15)
+#define LCCR4_PAL_FOR_MASK     (3 << 15)
+
+#define FDADR0         (0x200) /* DMA Channel 0 Frame Descriptor Address Register */
+#define FDADR1         (0x210) /* DMA Channel 1 Frame Descriptor Address Register */
+#define FDADR2         (0x220) /* DMA Channel 2 Frame Descriptor Address Register */
+#define FDADR3         (0x230) /* DMA Channel 3 Frame Descriptor Address Register */
+#define FDADR4         (0x240) /* DMA Channel 4 Frame Descriptor Address Register */
+#define FDADR5         (0x250) /* DMA Channel 5 Frame Descriptor Address Register */
+#define FDADR6         (0x260) /* DMA Channel 6 Frame Descriptor Address Register */
+
+#define LCCR0_ENB      (1 << 0)        /* LCD Controller enable */
+#define LCCR0_CMS      (1 << 1)        /* Color/Monochrome Display Select */
+#define LCCR0_Color    (LCCR0_CMS*0)   /*  Color display */
+#define LCCR0_Mono     (LCCR0_CMS*1)   /*  Monochrome display */
+#define LCCR0_SDS      (1 << 2)        /* Single/Dual Panel Display Select */
+#define LCCR0_Sngl     (LCCR0_SDS*0)   /*  Single panel display */
+#define LCCR0_Dual     (LCCR0_SDS*1)   /*  Dual panel display */
+
+#define LCCR0_LDM      (1 << 3)        /* LCD Disable Done Mask */
+#define LCCR0_SFM      (1 << 4)        /* Start of frame mask */
+#define LCCR0_IUM      (1 << 5)        /* Input FIFO underrun mask */
+#define LCCR0_EFM      (1 << 6)        /* End of Frame mask */
+#define LCCR0_PAS      (1 << 7)        /* Passive/Active display Select */
+#define LCCR0_Pas      (LCCR0_PAS*0)   /*  Passive display (STN) */
+#define LCCR0_Act      (LCCR0_PAS*1)   /*  Active display (TFT) */
+#define LCCR0_DPD      (1 << 9)        /* Double Pixel Data (monochrome) */
+#define LCCR0_4PixMono (LCCR0_DPD*0)   /*  4-Pixel/clock Monochrome display */
+#define LCCR0_8PixMono (LCCR0_DPD*1)   /*  8-Pixel/clock Monochrome display */
+#define LCCR0_DIS      (1 << 10)       /* LCD Disable */
+#define LCCR0_QDM      (1 << 11)       /* LCD Quick Disable mask */
+#define LCCR0_PDD      (0xff << 12)    /* Palette DMA request delay */
+#define LCCR0_PDD_S    12
+#define LCCR0_BM       (1 << 20)       /* Branch mask */
+#define LCCR0_OUM      (1 << 21)       /* Output FIFO underrun mask */
+#define LCCR0_LCDT     (1 << 22)       /* LCD panel type */
+#define LCCR0_RDSTM    (1 << 23)       /* Read status interrupt mask */
+#define LCCR0_CMDIM    (1 << 24)       /* Command interrupt mask */
+#define LCCR0_OUC      (1 << 25)       /* Overlay Underlay control bit */
+#define LCCR0_LDDALT   (1 << 26)       /* LDD alternate mapping control */
+
+#define Fld(Size, Shft)        (((Size) << 16) + (Shft))
+#define FShft(Field)   ((Field) & 0x0000FFFF)
+
+#define LCCR1_PPL      Fld (10, 0)     /* Pixels Per Line - 1 */
+#define LCCR1_DisWdth(Pixel)   (((Pixel) - 1) << FShft (LCCR1_PPL))
+
+#define LCCR1_HSW      Fld (6, 10)     /* Horizontal Synchronization */
+#define LCCR1_HorSnchWdth(Tpix)        (((Tpix) - 1) << FShft (LCCR1_HSW))
+
+#define LCCR1_ELW      Fld (8, 16)     /* End-of-Line pixel clock Wait - 1 */
+#define LCCR1_EndLnDel(Tpix)   (((Tpix) - 1) << FShft (LCCR1_ELW))
+
+#define LCCR1_BLW      Fld (8, 24)     /* Beginning-of-Line pixel clock */
+#define LCCR1_BegLnDel(Tpix)   (((Tpix) - 1) << FShft (LCCR1_BLW))
+
+#define LCCR2_LPP      Fld (10, 0)     /* Line Per Panel - 1 */
+#define LCCR2_DisHght(Line)    (((Line) - 1) << FShft (LCCR2_LPP))
+
+#define LCCR2_VSW      Fld (6, 10)     /* Vertical Synchronization pulse - 1 */
+#define LCCR2_VrtSnchWdth(Tln) (((Tln) - 1) << FShft (LCCR2_VSW))
+
+#define LCCR2_EFW      Fld (8, 16)     /* End-of-Frame line clock Wait */
+#define LCCR2_EndFrmDel(Tln)   ((Tln) << FShft (LCCR2_EFW))
+
+#define LCCR2_BFW      Fld (8, 24)     /* Beginning-of-Frame line clock */
+#define LCCR2_BegFrmDel(Tln)   ((Tln) << FShft (LCCR2_BFW))
+
+#define LCCR3_API      (0xf << 16)     /* AC Bias pin trasitions per interrupt */
+#define LCCR3_API_S    16
+#define LCCR3_VSP      (1 << 20)       /* vertical sync polarity */
+#define LCCR3_HSP      (1 << 21)       /* horizontal sync polarity */
+#define LCCR3_PCP      (1 << 22)       /* Pixel Clock Polarity (L_PCLK) */
+#define LCCR3_PixRsEdg (LCCR3_PCP*0)   /*  Pixel clock Rising-Edge */
+#define LCCR3_PixFlEdg (LCCR3_PCP*1)   /*  Pixel clock Falling-Edge */
+
+#define LCCR3_OEP      (1 << 23)       /* Output Enable Polarity */
+#define LCCR3_OutEnH   (LCCR3_OEP*0)   /*  Output Enable active High */
+#define LCCR3_OutEnL   (LCCR3_OEP*1)   /*  Output Enable active Low */
+
+#define LCCR3_DPC      (1 << 27)       /* double pixel clock mode */
+#define LCCR3_PCD      Fld (8, 0)      /* Pixel Clock Divisor */
+#define LCCR3_PixClkDiv(Div)   (((Div) << FShft (LCCR3_PCD)))
+
+#define LCCR3_ACB      Fld (8, 8)      /* AC Bias */
+#define LCCR3_Acb(Acb) (((Acb) << FShft (LCCR3_ACB)))
+
+#define LCCR3_HorSnchH (LCCR3_HSP*0)   /*  HSP Active High */
+#define LCCR3_HorSnchL (LCCR3_HSP*1)   /*  HSP Active Low */
+
+#define LCCR3_VrtSnchH (LCCR3_VSP*0)   /*  VSP Active High */
+#define LCCR3_VrtSnchL (LCCR3_VSP*1)   /*  VSP Active Low */
+
+#define LCCR5_IUM(x)   (1 << ((x) + 23)) /* input underrun mask */
+#define LCCR5_BSM(x)   (1 << ((x) + 15)) /* branch mask */
+#define LCCR5_EOFM(x)  (1 << ((x) + 7))  /* end of frame mask */
+#define LCCR5_SOFM(x)  (1 << ((x) + 0))  /* start of frame mask */
+
+#define LCSR_LDD       (1 << 0)        /* LCD Disable Done */
+#define LCSR_SOF       (1 << 1)        /* Start of frame */
+#define LCSR_BER       (1 << 2)        /* Bus error */
+#define LCSR_ABC       (1 << 3)        /* AC Bias count */
+#define LCSR_IUL       (1 << 4)        /* input FIFO underrun Lower panel */
+#define LCSR_IUU       (1 << 5)        /* input FIFO underrun Upper panel */
+#define LCSR_OU                (1 << 6)        /* output FIFO underrun */
+#define LCSR_QD                (1 << 7)        /* quick disable */
+#define LCSR_EOF       (1 << 8)        /* end of frame */
+#define LCSR_BS                (1 << 9)        /* branch status */
+#define LCSR_SINT      (1 << 10)       /* subsequent interrupt */
+#define LCSR_RD_ST     (1 << 11)       /* read status */
+#define LCSR_CMD_INT   (1 << 12)       /* command interrupt */
+
+#define LCSR1_IU(x)    (1 << ((x) + 23)) /* Input FIFO underrun */
+#define LCSR1_BS(x)    (1 << ((x) + 15)) /* Branch Status */
+#define LCSR1_EOF(x)   (1 << ((x) + 7))  /* End of Frame Status */
+#define LCSR1_SOF(x)   (1 << ((x) - 1))  /* Start of Frame Status */
+
+#define LDCMD_PAL      (1 << 26)       /* instructs DMA to load palette buffer */
+
+/* overlay control registers */
+#define OVLxC1_PPL(x)  ((((x) - 1) & 0x3ff) << 0)      /* Pixels Per Line */
+#define OVLxC1_LPO(x)  ((((x) - 1) & 0x3ff) << 10)     /* Number of Lines */
+#define OVLxC1_BPP(x)  (((x) & 0xf) << 20)     /* Bits Per Pixel */
+#define OVLxC1_OEN     (1 << 31)               /* Enable bit for Overlay */
+#define OVLxC2_XPOS(x) (((x) & 0x3ff) << 0)    /* Horizontal Position */
+#define OVLxC2_YPOS(x) (((x) & 0x3ff) << 10)   /* Vertical Position */
+#define OVL2C2_PFOR(x) (((x) & 0x7) << 20)     /* Pixel Format */
+
+/* smartpanel related */
+#define PRSR_DATA(x)   ((x) & 0xff)    /* Panel Data */
+#define PRSR_A0                (1 << 8)        /* Read Data Source */
+#define PRSR_ST_OK     (1 << 9)        /* Status OK */
+#define PRSR_CON_NT    (1 << 10)       /* Continue to Next Command */
+
+#endif /* __ASM_ARCH_REGS_LCD_H */
index 8ad91c251fe6a171bbf455d1277c8b664b033b37..66cfc3e9d3cfd73120b407e8dad6e13d3554834f 100644 (file)
 #include <linux/console.h>
 #include <linux/of_graph.h>
 #include <linux/regulator/consumer.h>
+#include <linux/soc/pxa/cpu.h>
 #include <video/of_display_timing.h>
 #include <video/videomode.h>
 
-#include <mach/hardware.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/div64.h>
-#include <mach/bitfield.h>
 #include <linux/platform_data/video-pxafb.h>
 
 /*
@@ -73,6 +72,7 @@
 #define DEBUG_VAR 1
 
 #include "pxafb.h"
+#include "pxa3xx-regs.h"
 
 /* Bits which should not be set in machine configuration structures */
 #define LCCR0_INVALID_CONFIG_MASK      (LCCR0_OUM | LCCR0_BM | LCCR0_QDM |\
index 27846c6bdfb00c4ae410e15527c73ff52dd5f6f3..2d0a06a158a85117db18827dbd93a7d835f1defe 100644 (file)
@@ -22,6 +22,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/fs.h>
+#include <linux/platform_device.h>
 #include <linux/miscdevice.h>
 #include <linux/watchdog.h>
 #include <linux/init.h>
 #include <linux/uaccess.h>
 #include <linux/timex.h>
 
-#ifdef CONFIG_ARCH_PXA
-#include <mach/regs-ost.h>
-#endif
+#define REG_OSMR0      0x0000  /* OS timer Match Reg. 0 */
+#define REG_OSMR1      0x0004  /* OS timer Match Reg. 1 */
+#define REG_OSMR2      0x0008  /* OS timer Match Reg. 2 */
+#define REG_OSMR3      0x000c  /* OS timer Match Reg. 3 */
+#define REG_OSCR       0x0010  /* OS timer Counter Reg. */
+#define REG_OSSR       0x0014  /* OS timer Status Reg. */
+#define REG_OWER       0x0018  /* OS timer Watch-dog Enable Reg. */
+#define REG_OIER       0x001C  /* OS timer Interrupt Enable Reg. */
 
-#include <mach/reset.h>
-#include <mach/hardware.h>
+#define OSSR_M3                (1 << 3)        /* Match status channel 3 */
+#define OSSR_M2                (1 << 2)        /* Match status channel 2 */
+#define OSSR_M1                (1 << 1)        /* Match status channel 1 */
+#define OSSR_M0                (1 << 0)        /* Match status channel 0 */
+
+#define OWER_WME       (1 << 0)        /* Watchdog Match Enable */
+
+#define OIER_E3                (1 << 3)        /* Interrupt enable channel 3 */
+#define OIER_E2                (1 << 2)        /* Interrupt enable channel 2 */
+#define OIER_E1                (1 << 1)        /* Interrupt enable channel 1 */
+#define OIER_E0                (1 << 0)        /* Interrupt enable channel 0 */
 
 static unsigned long oscr_freq;
 static unsigned long sa1100wdt_users;
 static unsigned int pre_margin;
 static int boot_status;
+static void __iomem *reg_base;
+
+static inline void sa1100_wr(u32 val, u32 offset)
+{
+       writel_relaxed(val, reg_base + offset);
+}
+
+static inline u32 sa1100_rd(u32 offset)
+{
+       return readl_relaxed(reg_base + offset);
+}
 
 /*
  *     Allow only one person to hold it open
@@ -51,10 +77,10 @@ static int sa1100dog_open(struct inode *inode, struct file *file)
                return -EBUSY;
 
        /* Activate SA1100 Watchdog timer */
-       writel_relaxed(readl_relaxed(OSCR) + pre_margin, OSMR3);
-       writel_relaxed(OSSR_M3, OSSR);
-       writel_relaxed(OWER_WME, OWER);
-       writel_relaxed(readl_relaxed(OIER) | OIER_E3, OIER);
+       sa1100_wr(sa1100_rd(REG_OSCR) + pre_margin, REG_OSMR3);
+       sa1100_wr(OSSR_M3, REG_OSSR);
+       sa1100_wr(OWER_WME, REG_OWER);
+       sa1100_wr(sa1100_rd(REG_OIER) | OIER_E3, REG_OIER);
        return stream_open(inode, file);
 }
 
@@ -62,7 +88,7 @@ static int sa1100dog_open(struct inode *inode, struct file *file)
  * The watchdog cannot be disabled.
  *
  * Previous comments suggested that turning off the interrupt by
- * clearing OIER[E3] would prevent the watchdog timing out but this
+ * clearing REG_OIER[E3] would prevent the watchdog timing out but this
  * does not appear to be true (at least on the PXA255).
  */
 static int sa1100dog_release(struct inode *inode, struct file *file)
@@ -77,7 +103,7 @@ static ssize_t sa1100dog_write(struct file *file, const char __user *data,
 {
        if (len)
                /* Refresh OSMR3 timer. */
-               writel_relaxed(readl_relaxed(OSCR) + pre_margin, OSMR3);
+               sa1100_wr(sa1100_rd(REG_OSCR) + pre_margin, REG_OSMR3);
        return len;
 }
 
@@ -111,7 +137,7 @@ static long sa1100dog_ioctl(struct file *file, unsigned int cmd,
                break;
 
        case WDIOC_KEEPALIVE:
-               writel_relaxed(readl_relaxed(OSCR) + pre_margin, OSMR3);
+               sa1100_wr(sa1100_rd(REG_OSCR) + pre_margin, REG_OSMR3);
                ret = 0;
                break;
 
@@ -126,7 +152,7 @@ static long sa1100dog_ioctl(struct file *file, unsigned int cmd,
                }
 
                pre_margin = oscr_freq * time;
-               writel_relaxed(readl_relaxed(OSCR) + pre_margin, OSMR3);
+               sa1100_wr(sa1100_rd(REG_OSCR) + pre_margin, REG_OSMR3);
                fallthrough;
 
        case WDIOC_GETTIMEOUT:
@@ -152,12 +178,22 @@ static struct miscdevice sa1100dog_miscdev = {
        .fops           = &sa1100dog_fops,
 };
 
-static int margin __initdata = 60;             /* (secs) Default is 1 minute */
+static int margin = 60;                /* (secs) Default is 1 minute */
 static struct clk *clk;
 
-static int __init sa1100dog_init(void)
+static int sa1100dog_probe(struct platform_device *pdev)
 {
        int ret;
+       int *platform_data;
+       struct resource *res;
+
+       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       if (!res)
+               return -ENXIO;
+       reg_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
+       ret = PTR_ERR_OR_ZERO(reg_base);
+       if (ret)
+               return ret;
 
        clk = clk_get(NULL, "OSTIMER0");
        if (IS_ERR(clk)) {
@@ -175,13 +211,9 @@ static int __init sa1100dog_init(void)
 
        oscr_freq = clk_get_rate(clk);
 
-       /*
-        * Read the reset status, and save it for later.  If
-        * we suspend, RCSR will be cleared, and the watchdog
-        * reset reason will be lost.
-        */
-       boot_status = (reset_status & RESET_STATUS_WATCHDOG) ?
-                               WDIOF_CARDRESET : 0;
+       platform_data = pdev->dev.platform_data;
+       if (platform_data && *platform_data)
+               boot_status = WDIOF_CARDRESET;
        pre_margin = oscr_freq * margin;
 
        ret = misc_register(&sa1100dog_miscdev);
@@ -197,15 +229,21 @@ err:
        return ret;
 }
 
-static void __exit sa1100dog_exit(void)
+static int sa1100dog_remove(struct platform_device *pdev)
 {
        misc_deregister(&sa1100dog_miscdev);
        clk_disable_unprepare(clk);
        clk_put(clk);
+
+       return 0;
 }
 
-module_init(sa1100dog_init);
-module_exit(sa1100dog_exit);
+struct platform_driver sa1100dog_driver = {
+       .driver.name = "sa1100_wdt",
+       .probe    = sa1100dog_probe,
+       .remove   = sa1100dog_remove,
+};
+module_platform_driver(sa1100dog_driver);
 
 MODULE_AUTHOR("Oleg Drokin <green@crimea.edu>");
 MODULE_DESCRIPTION("SA1100/PXA2xx Watchdog");
diff --git a/include/linux/clk/pxa.h b/include/linux/clk/pxa.h
new file mode 100644 (file)
index 0000000..736b8bb
--- /dev/null
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <linux/compiler.h>
+#include <linux/types.h>
+
+extern int pxa25x_clocks_init(void __iomem *regs);
+extern int pxa27x_clocks_init(void __iomem *regs);
+extern int pxa3xx_clocks_init(void __iomem *regs, void __iomem *oscc_reg);
+
+#ifdef CONFIG_PXA3xx
+extern unsigned        pxa3xx_get_clk_frequency_khz(int);
+extern void pxa3xx_clk_update_accr(u32 disable, u32 enable, u32 xclkcfg, u32 mask);
+#else
+#define pxa3xx_get_clk_frequency_khz(x)                (0)
+#define pxa3xx_clk_update_accr(disable, enable, xclkcfg, mask) do { } while (0)
+#endif
index 2647dd10b5419015a20cb16752220efd83a51a06..4d55da28e66418e335b97b2f1c4d0d7e2cbdd33a 100644 (file)
@@ -63,6 +63,18 @@ struct gpiod_hog {
        int dflags;
 };
 
+/*
+ * Helper for lookup tables with just one single lookup for a device.
+ */
+#define GPIO_LOOKUP_SINGLE(_name, _dev_id, _key, _chip_hwnum, _con_id, _flags) \
+static struct gpiod_lookup_table _name = {                             \
+       .dev_id = _dev_id,                                              \
+       .table = {                                                      \
+               GPIO_LOOKUP(_key, _chip_hwnum, _con_id, _flags),        \
+               {},                                                     \
+       },                                                              \
+}
+
 /*
  * Simple definition of a single GPIO under a con_id
  */
index fcc8e74f0e8d139f652cd0c16eee16589fb351ef..d336c541b7df5b5fad707a3708b124822b1aa97f 100644 (file)
@@ -27,9 +27,6 @@ struct tc6393xb_platform_data {
        int     (*resume)(struct platform_device *dev);
 
        int     irq_base;       /* base for subdevice irqs */
-       int     gpio_base;
-       int     (*setup)(struct platform_device *dev);
-       void    (*teardown)(struct platform_device *dev);
 
        struct tmio_nand_data   *nand_data;
        struct tmio_fb_data     *fb_data;
diff --git a/include/linux/platform_data/asoc-poodle.h b/include/linux/platform_data/asoc-poodle.h
new file mode 100644 (file)
index 0000000..2052fad
--- /dev/null
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __LINUX_PLATFORM_DATA_POODLE_AUDIO
+#define __LINUX_PLATFORM_DATA_POODLE_AUDIO
+
+/* locomo is not a proper gpio driver, and uses its own api */
+struct poodle_audio_platform_data {
+       struct device   *locomo_dev;
+
+       int             gpio_amp_on;
+       int             gpio_mute_l;
+       int             gpio_mute_r;
+       int             gpio_232vcc_on;
+       int             gpio_jk_b;
+};
+
+#endif
diff --git a/include/linux/platform_data/asoc-pxa.h b/include/linux/platform_data/asoc-pxa.h
new file mode 100644 (file)
index 0000000..327454c
--- /dev/null
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __SOC_PXA_AUDIO_H__
+#define __SOC_PXA_AUDIO_H__
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/ac97_codec.h>
+
+/*
+ * @reset_gpio: AC97 reset gpio (normally gpio113 or gpio95)
+ *              a -1 value means no gpio will be used for reset
+ * @codec_pdata: AC97 codec platform_data
+
+ * reset_gpio should only be specified for pxa27x CPUs where a silicon
+ * bug prevents correct operation of the reset line. If not specified,
+ * the default behaviour on these CPUs is to consider gpio 113 as the
+ * AC97 reset line, which is the default on most boards.
+ */
+typedef struct {
+       int (*startup)(struct snd_pcm_substream *, void *);
+       void (*shutdown)(struct snd_pcm_substream *, void *);
+       void (*suspend)(void *);
+       void (*resume)(void *);
+       void *priv;
+       int reset_gpio;
+       void *codec_pdata[AC97_BUS_MAX_DEVICES];
+} pxa2xx_audio_ops_t;
+
+extern void pxa_set_ac97_info(pxa2xx_audio_ops_t *ops);
+
+#endif
diff --git a/include/linux/platform_data/pcmcia-pxa2xx_viper.h b/include/linux/platform_data/pcmcia-pxa2xx_viper.h
deleted file mode 100644 (file)
index a23b58a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __ARCOM_PCMCIA_H
-#define __ARCOM_PCMCIA_H
-
-struct arcom_pcmcia_pdata {
-       int     cd_gpio;
-       int     rdy_gpio;
-       int     pwr_gpio;
-       void    (*reset)(int state);
-};
-
-#endif
index b3d5747783263f244deefe8d9fff613b622cc470..6333bac166a5a5e9139bc7cde580a9fcb40663bb 100644 (file)
@@ -8,7 +8,6 @@
  */
 
 #include <linux/fb.h>
-#include <mach/regs-lcd.h>
 
 /*
  * Supported LCD connections
@@ -153,6 +152,27 @@ struct pxafb_mach_info {
 void pxa_set_fb_info(struct device *, struct pxafb_mach_info *);
 unsigned long pxafb_get_hsync_time(struct device *dev);
 
+/* smartpanel related */
+#define SMART_CMD_A0                    (0x1 << 8)
+#define SMART_CMD_READ_STATUS_REG       (0x0 << 9)
+#define SMART_CMD_READ_FRAME_BUFFER    ((0x0 << 9) | SMART_CMD_A0)
+#define SMART_CMD_WRITE_COMMAND                 (0x1 << 9)
+#define SMART_CMD_WRITE_DATA           ((0x1 << 9) | SMART_CMD_A0)
+#define SMART_CMD_WRITE_FRAME          ((0x2 << 9) | SMART_CMD_A0)
+#define SMART_CMD_WAIT_FOR_VSYNC        (0x3 << 9)
+#define SMART_CMD_NOOP                  (0x4 << 9)
+#define SMART_CMD_INTERRUPT             (0x5 << 9)
+
+#define SMART_CMD(x)   (SMART_CMD_WRITE_COMMAND | ((x) & 0xff))
+#define SMART_DAT(x)   (SMART_CMD_WRITE_DATA | ((x) & 0xff))
+
+/* SMART_DELAY() is introduced for software controlled delay primitive which
+ * can be inserted between command sequences, unused command 0x6 is used here
+ * and delay ranges from 0ms ~ 255ms
+ */
+#define SMART_CMD_DELAY                (0x6 << 9)
+#define SMART_DELAY(ms)                (SMART_CMD_DELAY | ((ms) & 0xff))
+
 #ifdef CONFIG_FB_PXA_SMARTPANEL
 extern int pxafb_smart_queue(struct fb_info *info, uint16_t *cmds, int);
 extern int pxafb_smart_flush(struct fb_info *info);
diff --git a/include/linux/soc/pxa/cpu.h b/include/linux/soc/pxa/cpu.h
new file mode 100644 (file)
index 0000000..5782450
--- /dev/null
@@ -0,0 +1,252 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *  Author:    Nicolas Pitre
+ *  Created:   Jun 15, 2001
+ *  Copyright: MontaVista Software Inc.
+ */
+
+#ifndef __SOC_PXA_CPU_H
+#define __SOC_PXA_CPU_H
+
+#ifdef CONFIG_ARM
+#include <asm/cputype.h>
+#endif
+
+/*
+ *   CPU     Stepping     CPU_ID         JTAG_ID
+ *
+ *  PXA210     B0      0x69052922      0x2926C013
+ *  PXA210     B1      0x69052923      0x3926C013
+ *  PXA210     B2      0x69052924      0x4926C013
+ *  PXA210     C0      0x69052D25      0x5926C013
+ *
+ *  PXA250     A0      0x69052100      0x09264013
+ *  PXA250     A1      0x69052101      0x19264013
+ *  PXA250     B0      0x69052902      0x29264013
+ *  PXA250     B1      0x69052903      0x39264013
+ *  PXA250     B2      0x69052904      0x49264013
+ *  PXA250     C0      0x69052D05      0x59264013
+ *
+ *  PXA255     A0      0x69052D06      0x69264013
+ *
+ *  PXA26x     A0      0x69052903      0x39264013
+ *  PXA26x     B0      0x69052D05      0x59264013
+ *
+ *  PXA27x     A0      0x69054110      0x09265013
+ *  PXA27x     A1      0x69054111      0x19265013
+ *  PXA27x     B0      0x69054112      0x29265013
+ *  PXA27x     B1      0x69054113      0x39265013
+ *  PXA27x     C0      0x69054114      0x49265013
+ *  PXA27x     C5      0x69054117      0x79265013
+ *
+ *  PXA30x     A0      0x69056880      0x0E648013
+ *  PXA30x     A1      0x69056881      0x1E648013
+ *  PXA31x     A0      0x69056890      0x0E649013
+ *  PXA31x     A1      0x69056891      0x1E649013
+ *  PXA31x     A2      0x69056892      0x2E649013
+ *  PXA32x     B1      0x69056825      0x5E642013
+ *  PXA32x     B2      0x69056826      0x6E642013
+ *
+ *  PXA930     B0      0x69056835      0x5E643013
+ *  PXA930     B1      0x69056837      0x7E643013
+ *  PXA930     B2      0x69056838      0x8E643013
+ *
+ *  PXA935     A0      0x56056931      0x1E653013
+ *  PXA935     B0      0x56056936      0x6E653013
+ *  PXA935     B1      0x56056938      0x8E653013
+ */
+#ifdef CONFIG_PXA25x
+#define __cpu_is_pxa210(id)                            \
+       ({                                              \
+               unsigned int _id = (id) & 0xf3f0;       \
+               _id == 0x2120;                          \
+       })
+
+#define __cpu_is_pxa250(id)                            \
+       ({                                              \
+               unsigned int _id = (id) & 0xf3ff;       \
+               _id <= 0x2105;                          \
+       })
+
+#define __cpu_is_pxa255(id)                            \
+       ({                                              \
+               unsigned int _id = (id) & 0xffff;       \
+               _id == 0x2d06;                          \
+       })
+
+#define __cpu_is_pxa25x(id)                            \
+       ({                                              \
+               unsigned int _id = (id) & 0xf300;       \
+               _id == 0x2100;                          \
+       })
+#else
+#define __cpu_is_pxa210(id)    (0)
+#define __cpu_is_pxa250(id)    (0)
+#define __cpu_is_pxa255(id)    (0)
+#define __cpu_is_pxa25x(id)    (0)
+#endif
+
+#ifdef CONFIG_PXA27x
+#define __cpu_is_pxa27x(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x411;                           \
+       })
+#else
+#define __cpu_is_pxa27x(id)    (0)
+#endif
+
+#ifdef CONFIG_CPU_PXA300
+#define __cpu_is_pxa300(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x688;                           \
+        })
+#else
+#define __cpu_is_pxa300(id)    (0)
+#endif
+
+#ifdef CONFIG_CPU_PXA310
+#define __cpu_is_pxa310(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x689;                           \
+        })
+#else
+#define __cpu_is_pxa310(id)    (0)
+#endif
+
+#ifdef CONFIG_CPU_PXA320
+#define __cpu_is_pxa320(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x603 || _id == 0x682;           \
+        })
+#else
+#define __cpu_is_pxa320(id)    (0)
+#endif
+
+#ifdef CONFIG_CPU_PXA930
+#define __cpu_is_pxa930(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x683;                           \
+        })
+#else
+#define __cpu_is_pxa930(id)    (0)
+#endif
+
+#ifdef CONFIG_CPU_PXA935
+#define __cpu_is_pxa935(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 4 & 0xfff;   \
+               _id == 0x693;                           \
+        })
+#else
+#define __cpu_is_pxa935(id)    (0)
+#endif
+
+#define cpu_is_pxa210()                                        \
+       ({                                              \
+               __cpu_is_pxa210(read_cpuid_id());       \
+       })
+
+#define cpu_is_pxa250()                                        \
+       ({                                              \
+               __cpu_is_pxa250(read_cpuid_id());       \
+       })
+
+#define cpu_is_pxa255()                                 \
+       ({                                              \
+               __cpu_is_pxa255(read_cpuid_id());       \
+       })
+
+#define cpu_is_pxa25x()                                        \
+       ({                                              \
+               __cpu_is_pxa25x(read_cpuid_id());       \
+       })
+
+#define cpu_is_pxa27x()                                        \
+       ({                                              \
+               __cpu_is_pxa27x(read_cpuid_id());       \
+       })
+
+#define cpu_is_pxa300()                                        \
+       ({                                              \
+               __cpu_is_pxa300(read_cpuid_id());       \
+        })
+
+#define cpu_is_pxa310()                                        \
+       ({                                              \
+               __cpu_is_pxa310(read_cpuid_id());       \
+        })
+
+#define cpu_is_pxa320()                                        \
+       ({                                              \
+               __cpu_is_pxa320(read_cpuid_id());       \
+        })
+
+#define cpu_is_pxa930()                                        \
+       ({                                              \
+               __cpu_is_pxa930(read_cpuid_id());       \
+        })
+
+#define cpu_is_pxa935()                                        \
+       ({                                              \
+               __cpu_is_pxa935(read_cpuid_id());       \
+        })
+
+
+
+/*
+ * CPUID Core Generation Bit
+ * <= 0x2 for pxa21x/pxa25x/pxa26x/pxa27x
+ */
+#if defined(CONFIG_PXA25x) || defined(CONFIG_PXA27x)
+#define __cpu_is_pxa2xx(id)                            \
+       ({                                              \
+               unsigned int _id = (id) >> 13 & 0x7;    \
+               _id <= 0x2;                             \
+        })
+#else
+#define __cpu_is_pxa2xx(id)    (0)
+#endif
+
+#ifdef CONFIG_PXA3xx
+#define __cpu_is_pxa3xx(id)                            \
+       ({                                              \
+               __cpu_is_pxa300(id)                     \
+                       || __cpu_is_pxa310(id)          \
+                       || __cpu_is_pxa320(id)          \
+                       || __cpu_is_pxa93x(id);         \
+        })
+#else
+#define __cpu_is_pxa3xx(id)    (0)
+#endif
+
+#if defined(CONFIG_CPU_PXA930) || defined(CONFIG_CPU_PXA935)
+#define __cpu_is_pxa93x(id)                            \
+       ({                                              \
+               __cpu_is_pxa930(id)                     \
+                       || __cpu_is_pxa935(id);         \
+        })
+#else
+#define __cpu_is_pxa93x(id)    (0)
+#endif
+
+#define cpu_is_pxa2xx()                                        \
+       ({                                              \
+               __cpu_is_pxa2xx(read_cpuid_id());       \
+        })
+
+#define cpu_is_pxa3xx()                                        \
+       ({                                              \
+               __cpu_is_pxa3xx(read_cpuid_id());       \
+        })
+
+#define cpu_is_pxa93x()                                        \
+       ({                                              \
+               __cpu_is_pxa93x(read_cpuid_id());       \
+        })
+
+#endif
diff --git a/include/linux/soc/pxa/mfp.h b/include/linux/soc/pxa/mfp.h
new file mode 100644 (file)
index 0000000..39779cb
--- /dev/null
@@ -0,0 +1,470 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ *   Common Multi-Function Pin Definitions
+ *
+ * Copyright (C) 2007 Marvell International Ltd.
+ *
+ * 2007-8-21: eric miao <eric.miao@marvell.com>
+ *            initial version
+ */
+
+#ifndef __ASM_PLAT_MFP_H
+#define __ASM_PLAT_MFP_H
+
+#define mfp_to_gpio(m) ((m) % 256)
+
+/* list of all the configurable MFP pins */
+enum {
+       MFP_PIN_INVALID = -1,
+
+       MFP_PIN_GPIO0 = 0,
+       MFP_PIN_GPIO1,
+       MFP_PIN_GPIO2,
+       MFP_PIN_GPIO3,
+       MFP_PIN_GPIO4,
+       MFP_PIN_GPIO5,
+       MFP_PIN_GPIO6,
+       MFP_PIN_GPIO7,
+       MFP_PIN_GPIO8,
+       MFP_PIN_GPIO9,
+       MFP_PIN_GPIO10,
+       MFP_PIN_GPIO11,
+       MFP_PIN_GPIO12,
+       MFP_PIN_GPIO13,
+       MFP_PIN_GPIO14,
+       MFP_PIN_GPIO15,
+       MFP_PIN_GPIO16,
+       MFP_PIN_GPIO17,
+       MFP_PIN_GPIO18,
+       MFP_PIN_GPIO19,
+       MFP_PIN_GPIO20,
+       MFP_PIN_GPIO21,
+       MFP_PIN_GPIO22,
+       MFP_PIN_GPIO23,
+       MFP_PIN_GPIO24,
+       MFP_PIN_GPIO25,
+       MFP_PIN_GPIO26,
+       MFP_PIN_GPIO27,
+       MFP_PIN_GPIO28,
+       MFP_PIN_GPIO29,
+       MFP_PIN_GPIO30,
+       MFP_PIN_GPIO31,
+       MFP_PIN_GPIO32,
+       MFP_PIN_GPIO33,
+       MFP_PIN_GPIO34,
+       MFP_PIN_GPIO35,
+       MFP_PIN_GPIO36,
+       MFP_PIN_GPIO37,
+       MFP_PIN_GPIO38,
+       MFP_PIN_GPIO39,
+       MFP_PIN_GPIO40,
+       MFP_PIN_GPIO41,
+       MFP_PIN_GPIO42,
+       MFP_PIN_GPIO43,
+       MFP_PIN_GPIO44,
+       MFP_PIN_GPIO45,
+       MFP_PIN_GPIO46,
+       MFP_PIN_GPIO47,
+       MFP_PIN_GPIO48,
+       MFP_PIN_GPIO49,
+       MFP_PIN_GPIO50,
+       MFP_PIN_GPIO51,
+       MFP_PIN_GPIO52,
+       MFP_PIN_GPIO53,
+       MFP_PIN_GPIO54,
+       MFP_PIN_GPIO55,
+       MFP_PIN_GPIO56,
+       MFP_PIN_GPIO57,
+       MFP_PIN_GPIO58,
+       MFP_PIN_GPIO59,
+       MFP_PIN_GPIO60,
+       MFP_PIN_GPIO61,
+       MFP_PIN_GPIO62,
+       MFP_PIN_GPIO63,
+       MFP_PIN_GPIO64,
+       MFP_PIN_GPIO65,
+       MFP_PIN_GPIO66,
+       MFP_PIN_GPIO67,
+       MFP_PIN_GPIO68,
+       MFP_PIN_GPIO69,
+       MFP_PIN_GPIO70,
+       MFP_PIN_GPIO71,
+       MFP_PIN_GPIO72,
+       MFP_PIN_GPIO73,
+       MFP_PIN_GPIO74,
+       MFP_PIN_GPIO75,
+       MFP_PIN_GPIO76,
+       MFP_PIN_GPIO77,
+       MFP_PIN_GPIO78,
+       MFP_PIN_GPIO79,
+       MFP_PIN_GPIO80,
+       MFP_PIN_GPIO81,
+       MFP_PIN_GPIO82,
+       MFP_PIN_GPIO83,
+       MFP_PIN_GPIO84,
+       MFP_PIN_GPIO85,
+       MFP_PIN_GPIO86,
+       MFP_PIN_GPIO87,
+       MFP_PIN_GPIO88,
+       MFP_PIN_GPIO89,
+       MFP_PIN_GPIO90,
+       MFP_PIN_GPIO91,
+       MFP_PIN_GPIO92,
+       MFP_PIN_GPIO93,
+       MFP_PIN_GPIO94,
+       MFP_PIN_GPIO95,
+       MFP_PIN_GPIO96,
+       MFP_PIN_GPIO97,
+       MFP_PIN_GPIO98,
+       MFP_PIN_GPIO99,
+       MFP_PIN_GPIO100,
+       MFP_PIN_GPIO101,
+       MFP_PIN_GPIO102,
+       MFP_PIN_GPIO103,
+       MFP_PIN_GPIO104,
+       MFP_PIN_GPIO105,
+       MFP_PIN_GPIO106,
+       MFP_PIN_GPIO107,
+       MFP_PIN_GPIO108,
+       MFP_PIN_GPIO109,
+       MFP_PIN_GPIO110,
+       MFP_PIN_GPIO111,
+       MFP_PIN_GPIO112,
+       MFP_PIN_GPIO113,
+       MFP_PIN_GPIO114,
+       MFP_PIN_GPIO115,
+       MFP_PIN_GPIO116,
+       MFP_PIN_GPIO117,
+       MFP_PIN_GPIO118,
+       MFP_PIN_GPIO119,
+       MFP_PIN_GPIO120,
+       MFP_PIN_GPIO121,
+       MFP_PIN_GPIO122,
+       MFP_PIN_GPIO123,
+       MFP_PIN_GPIO124,
+       MFP_PIN_GPIO125,
+       MFP_PIN_GPIO126,
+       MFP_PIN_GPIO127,
+
+       MFP_PIN_GPIO128,
+       MFP_PIN_GPIO129,
+       MFP_PIN_GPIO130,
+       MFP_PIN_GPIO131,
+       MFP_PIN_GPIO132,
+       MFP_PIN_GPIO133,
+       MFP_PIN_GPIO134,
+       MFP_PIN_GPIO135,
+       MFP_PIN_GPIO136,
+       MFP_PIN_GPIO137,
+       MFP_PIN_GPIO138,
+       MFP_PIN_GPIO139,
+       MFP_PIN_GPIO140,
+       MFP_PIN_GPIO141,
+       MFP_PIN_GPIO142,
+       MFP_PIN_GPIO143,
+       MFP_PIN_GPIO144,
+       MFP_PIN_GPIO145,
+       MFP_PIN_GPIO146,
+       MFP_PIN_GPIO147,
+       MFP_PIN_GPIO148,
+       MFP_PIN_GPIO149,
+       MFP_PIN_GPIO150,
+       MFP_PIN_GPIO151,
+       MFP_PIN_GPIO152,
+       MFP_PIN_GPIO153,
+       MFP_PIN_GPIO154,
+       MFP_PIN_GPIO155,
+       MFP_PIN_GPIO156,
+       MFP_PIN_GPIO157,
+       MFP_PIN_GPIO158,
+       MFP_PIN_GPIO159,
+       MFP_PIN_GPIO160,
+       MFP_PIN_GPIO161,
+       MFP_PIN_GPIO162,
+       MFP_PIN_GPIO163,
+       MFP_PIN_GPIO164,
+       MFP_PIN_GPIO165,
+       MFP_PIN_GPIO166,
+       MFP_PIN_GPIO167,
+       MFP_PIN_GPIO168,
+       MFP_PIN_GPIO169,
+       MFP_PIN_GPIO170,
+       MFP_PIN_GPIO171,
+       MFP_PIN_GPIO172,
+       MFP_PIN_GPIO173,
+       MFP_PIN_GPIO174,
+       MFP_PIN_GPIO175,
+       MFP_PIN_GPIO176,
+       MFP_PIN_GPIO177,
+       MFP_PIN_GPIO178,
+       MFP_PIN_GPIO179,
+       MFP_PIN_GPIO180,
+       MFP_PIN_GPIO181,
+       MFP_PIN_GPIO182,
+       MFP_PIN_GPIO183,
+       MFP_PIN_GPIO184,
+       MFP_PIN_GPIO185,
+       MFP_PIN_GPIO186,
+       MFP_PIN_GPIO187,
+       MFP_PIN_GPIO188,
+       MFP_PIN_GPIO189,
+       MFP_PIN_GPIO190,
+       MFP_PIN_GPIO191,
+
+       MFP_PIN_GPIO255 = 255,
+
+       MFP_PIN_GPIO0_2,
+       MFP_PIN_GPIO1_2,
+       MFP_PIN_GPIO2_2,
+       MFP_PIN_GPIO3_2,
+       MFP_PIN_GPIO4_2,
+       MFP_PIN_GPIO5_2,
+       MFP_PIN_GPIO6_2,
+       MFP_PIN_GPIO7_2,
+       MFP_PIN_GPIO8_2,
+       MFP_PIN_GPIO9_2,
+       MFP_PIN_GPIO10_2,
+       MFP_PIN_GPIO11_2,
+       MFP_PIN_GPIO12_2,
+       MFP_PIN_GPIO13_2,
+       MFP_PIN_GPIO14_2,
+       MFP_PIN_GPIO15_2,
+       MFP_PIN_GPIO16_2,
+       MFP_PIN_GPIO17_2,
+
+       MFP_PIN_ULPI_STP,
+       MFP_PIN_ULPI_NXT,
+       MFP_PIN_ULPI_DIR,
+
+       MFP_PIN_nXCVREN,
+       MFP_PIN_DF_CLE_nOE,
+       MFP_PIN_DF_nADV1_ALE,
+       MFP_PIN_DF_SCLK_E,
+       MFP_PIN_DF_SCLK_S,
+       MFP_PIN_nBE0,
+       MFP_PIN_nBE1,
+       MFP_PIN_DF_nADV2_ALE,
+       MFP_PIN_DF_INT_RnB,
+       MFP_PIN_DF_nCS0,
+       MFP_PIN_DF_nCS1,
+       MFP_PIN_nLUA,
+       MFP_PIN_nLLA,
+       MFP_PIN_DF_nWE,
+       MFP_PIN_DF_ALE_nWE,
+       MFP_PIN_DF_nRE_nOE,
+       MFP_PIN_DF_ADDR0,
+       MFP_PIN_DF_ADDR1,
+       MFP_PIN_DF_ADDR2,
+       MFP_PIN_DF_ADDR3,
+       MFP_PIN_DF_IO0,
+       MFP_PIN_DF_IO1,
+       MFP_PIN_DF_IO2,
+       MFP_PIN_DF_IO3,
+       MFP_PIN_DF_IO4,
+       MFP_PIN_DF_IO5,
+       MFP_PIN_DF_IO6,
+       MFP_PIN_DF_IO7,
+       MFP_PIN_DF_IO8,
+       MFP_PIN_DF_IO9,
+       MFP_PIN_DF_IO10,
+       MFP_PIN_DF_IO11,
+       MFP_PIN_DF_IO12,
+       MFP_PIN_DF_IO13,
+       MFP_PIN_DF_IO14,
+       MFP_PIN_DF_IO15,
+       MFP_PIN_DF_nCS0_SM_nCS2,
+       MFP_PIN_DF_nCS1_SM_nCS3,
+       MFP_PIN_SM_nCS0,
+       MFP_PIN_SM_nCS1,
+       MFP_PIN_DF_WEn,
+       MFP_PIN_DF_REn,
+       MFP_PIN_DF_CLE_SM_OEn,
+       MFP_PIN_DF_ALE_SM_WEn,
+       MFP_PIN_DF_RDY0,
+       MFP_PIN_DF_RDY1,
+
+       MFP_PIN_SM_SCLK,
+       MFP_PIN_SM_BE0,
+       MFP_PIN_SM_BE1,
+       MFP_PIN_SM_ADV,
+       MFP_PIN_SM_ADVMUX,
+       MFP_PIN_SM_RDY,
+
+       MFP_PIN_MMC1_DAT7,
+       MFP_PIN_MMC1_DAT6,
+       MFP_PIN_MMC1_DAT5,
+       MFP_PIN_MMC1_DAT4,
+       MFP_PIN_MMC1_DAT3,
+       MFP_PIN_MMC1_DAT2,
+       MFP_PIN_MMC1_DAT1,
+       MFP_PIN_MMC1_DAT0,
+       MFP_PIN_MMC1_CMD,
+       MFP_PIN_MMC1_CLK,
+       MFP_PIN_MMC1_CD,
+       MFP_PIN_MMC1_WP,
+
+       /* additional pins on PXA930 */
+       MFP_PIN_GSIM_UIO,
+       MFP_PIN_GSIM_UCLK,
+       MFP_PIN_GSIM_UDET,
+       MFP_PIN_GSIM_nURST,
+       MFP_PIN_PMIC_INT,
+       MFP_PIN_RDY,
+
+       /* additional pins on MMP2 */
+       MFP_PIN_TWSI1_SCL,
+       MFP_PIN_TWSI1_SDA,
+       MFP_PIN_TWSI4_SCL,
+       MFP_PIN_TWSI4_SDA,
+       MFP_PIN_CLK_REQ,
+
+       MFP_PIN_MAX,
+};
+
+/*
+ * a possible MFP configuration is represented by a 32-bit integer
+ *
+ * bit  0.. 9 - MFP Pin Number (1024 Pins Maximum)
+ * bit 10..12 - Alternate Function Selection
+ * bit 13..15 - Drive Strength
+ * bit 16..18 - Low Power Mode State
+ * bit 19..20 - Low Power Mode Edge Detection
+ * bit 21..22 - Run Mode Pull State
+ *
+ * to facilitate the definition, the following macros are provided
+ *
+ * MFP_CFG_DEFAULT - default MFP configuration value, with
+ *               alternate function = 0,
+ *               drive strength = fast 3mA (MFP_DS03X)
+ *               low power mode = default
+ *               edge detection = none
+ *
+ * MFP_CFG     - default MFPR value with alternate function
+ * MFP_CFG_DRV - default MFPR value with alternate function and
+ *               pin drive strength
+ * MFP_CFG_LPM - default MFPR value with alternate function and
+ *               low power mode
+ * MFP_CFG_X   - default MFPR value with alternate function,
+ *               pin drive strength and low power mode
+ */
+
+typedef unsigned long mfp_cfg_t;
+
+#define MFP_PIN(x)             ((x) & 0x3ff)
+
+#define MFP_AF0                        (0x0 << 10)
+#define MFP_AF1                        (0x1 << 10)
+#define MFP_AF2                        (0x2 << 10)
+#define MFP_AF3                        (0x3 << 10)
+#define MFP_AF4                        (0x4 << 10)
+#define MFP_AF5                        (0x5 << 10)
+#define MFP_AF6                        (0x6 << 10)
+#define MFP_AF7                        (0x7 << 10)
+#define MFP_AF_MASK            (0x7 << 10)
+#define MFP_AF(x)              (((x) >> 10) & 0x7)
+
+#define MFP_DS01X              (0x0 << 13)
+#define MFP_DS02X              (0x1 << 13)
+#define MFP_DS03X              (0x2 << 13)
+#define MFP_DS04X              (0x3 << 13)
+#define MFP_DS06X              (0x4 << 13)
+#define MFP_DS08X              (0x5 << 13)
+#define MFP_DS10X              (0x6 << 13)
+#define MFP_DS13X              (0x7 << 13)
+#define MFP_DS_MASK            (0x7 << 13)
+#define MFP_DS(x)              (((x) >> 13) & 0x7)
+
+#define MFP_LPM_DEFAULT                (0x0 << 16)
+#define MFP_LPM_DRIVE_LOW      (0x1 << 16)
+#define MFP_LPM_DRIVE_HIGH     (0x2 << 16)
+#define MFP_LPM_PULL_LOW       (0x3 << 16)
+#define MFP_LPM_PULL_HIGH      (0x4 << 16)
+#define MFP_LPM_FLOAT          (0x5 << 16)
+#define MFP_LPM_INPUT          (0x6 << 16)
+#define MFP_LPM_STATE_MASK     (0x7 << 16)
+#define MFP_LPM_STATE(x)       (((x) >> 16) & 0x7)
+
+#define MFP_LPM_EDGE_NONE      (0x0 << 19)
+#define MFP_LPM_EDGE_RISE      (0x1 << 19)
+#define MFP_LPM_EDGE_FALL      (0x2 << 19)
+#define MFP_LPM_EDGE_BOTH      (0x3 << 19)
+#define MFP_LPM_EDGE_MASK      (0x3 << 19)
+#define MFP_LPM_EDGE(x)                (((x) >> 19) & 0x3)
+
+#define MFP_PULL_NONE          (0x0 << 21)
+#define MFP_PULL_LOW           (0x1 << 21)
+#define MFP_PULL_HIGH          (0x2 << 21)
+#define MFP_PULL_BOTH          (0x3 << 21)
+#define MFP_PULL_FLOAT         (0x4 << 21)
+#define MFP_PULL_MASK          (0x7 << 21)
+#define MFP_PULL(x)            (((x) >> 21) & 0x7)
+
+#define MFP_CFG_DEFAULT                (MFP_AF0 | MFP_DS03X | MFP_LPM_DEFAULT |\
+                                MFP_LPM_EDGE_NONE | MFP_PULL_NONE)
+
+#define MFP_CFG(pin, af)               \
+       ((MFP_CFG_DEFAULT & ~MFP_AF_MASK) |\
+        (MFP_PIN(MFP_PIN_##pin) | MFP_##af))
+
+#define MFP_CFG_DRV(pin, af, drv)      \
+       ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK)) |\
+        (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv))
+
+#define MFP_CFG_LPM(pin, af, lpm)      \
+       ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_LPM_STATE_MASK)) |\
+        (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_LPM_##lpm))
+
+#define MFP_CFG_X(pin, af, drv, lpm)   \
+       ((MFP_CFG_DEFAULT & ~(MFP_AF_MASK | MFP_DS_MASK | MFP_LPM_STATE_MASK)) |\
+        (MFP_PIN(MFP_PIN_##pin) | MFP_##af | MFP_##drv | MFP_LPM_##lpm))
+
+#if defined(CONFIG_PXA3xx) || defined(CONFIG_ARCH_MMP)
+/*
+ * each MFP pin will have a MFPR register, since the offset of the
+ * register varies between processors, the processor specific code
+ * should initialize the pin offsets by mfp_init()
+ *
+ * mfp_init_base() - accepts a virtual base for all MFPR registers and
+ * initialize the MFP table to a default state
+ *
+ * mfp_init_addr() - accepts a table of "mfp_addr_map" structure, which
+ * represents a range of MFP pins from "start" to "end", with the offset
+ * beginning at "offset", to define a single pin, let "end" = -1.
+ *
+ * use
+ *
+ * MFP_ADDR_X() to define a range of pins
+ * MFP_ADDR()   to define a single pin
+ * MFP_ADDR_END to signal the end of pin offset definitions
+ */
+struct mfp_addr_map {
+       unsigned int    start;
+       unsigned int    end;
+       unsigned long   offset;
+};
+
+#define MFP_ADDR_X(start, end, offset) \
+       { MFP_PIN_##start, MFP_PIN_##end, offset }
+
+#define MFP_ADDR(pin, offset) \
+       { MFP_PIN_##pin, -1, offset }
+
+#define MFP_ADDR_END   { MFP_PIN_INVALID, 0 }
+
+void mfp_init_base(void __iomem *mfpr_base);
+void mfp_init_addr(struct mfp_addr_map *map);
+
+/*
+ * mfp_{read, write}() - for direct read/write access to the MFPR register
+ * mfp_config()                - for configuring a group of MFPR registers
+ * mfp_config_lpm()    - configuring all low power MFPR registers for suspend
+ * mfp_config_run()    - configuring all run time  MFPR registers after resume
+ */
+unsigned long mfp_read(int mfp);
+void mfp_write(int mfp, unsigned long mfpr_val);
+void mfp_config(unsigned long *mfp_cfgs, int num);
+void mfp_config_run(void);
+void mfp_config_lpm(void);
+#endif /* CONFIG_PXA3xx || CONFIG_ARCH_MMP */
+
+#endif /* __ASM_PLAT_MFP_H */
diff --git a/include/linux/soc/pxa/smemc.h b/include/linux/soc/pxa/smemc.h
new file mode 100644 (file)
index 0000000..f1ffea2
--- /dev/null
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __PXA_REGS_H
+#define __PXA_REGS_H
+
+#include <linux/types.h>
+
+void pxa_smemc_set_pcmcia_timing(int sock, u32 mcmem, u32 mcatt, u32 mcio);
+void pxa_smemc_set_pcmcia_socket(int nr);
+int pxa2xx_smemc_get_sdram_rows(void);
+unsigned int pxa3xx_smemc_get_memclkdiv(void);
+void __iomem *pxa_smemc_get_mdrefr(void);
+
+#endif
index 462854f4f286c659f7849200baa60ef757349b71..332d2b0f29b993a14ad2e51a8e03991bed5e356c 100644 (file)
@@ -254,9 +254,6 @@ struct wm97xx_mach_ops {
        int (*acc_startup) (struct wm97xx *);
        void (*acc_shutdown) (struct wm97xx *);
 
-       /* interrupt mask control - required for accelerated operation */
-       void (*irq_enable) (struct wm97xx *, int enable);
-
        /* GPIO pin used for accelerated operation */
        int irq_gpio;
 
@@ -281,7 +278,6 @@ struct wm97xx {
        unsigned long ts_reader_min_interval; /* Minimum interval */
        unsigned int pen_irq;           /* Pen IRQ number in use */
        struct workqueue_struct *ts_workq;
-       struct work_struct pen_event_work;
        u16 acc_slot;                   /* AC97 slot used for acc touch data */
        u16 acc_rate;                   /* acc touch data rate */
        unsigned pen_is_down:1;         /* Pen is down */
diff --git a/include/pcmcia/soc_common.h b/include/pcmcia/soc_common.h
new file mode 100644 (file)
index 0000000..d4f18f4
--- /dev/null
@@ -0,0 +1,125 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#include <pcmcia/ss.h>
+
+struct module;
+struct cpufreq_freqs;
+
+struct soc_pcmcia_regulator {
+       struct regulator        *reg;
+       bool                    on;
+};
+
+struct pcmcia_state {
+  unsigned detect: 1,
+            ready: 1,
+             bvd1: 1,
+             bvd2: 1,
+           wrprot: 1,
+            vs_3v: 1,
+            vs_Xv: 1;
+};
+
+/*
+ * This structure encapsulates per-socket state which we might need to
+ * use when responding to a Card Services query of some kind.
+ */
+struct soc_pcmcia_socket {
+       struct pcmcia_socket    socket;
+
+       /*
+        * Info from low level handler
+        */
+       unsigned int            nr;
+       struct clk              *clk;
+
+       /*
+        * Core PCMCIA state
+        */
+       const struct pcmcia_low_level *ops;
+
+       unsigned int            status;
+       socket_state_t          cs_state;
+
+       unsigned short          spd_io[MAX_IO_WIN];
+       unsigned short          spd_mem[MAX_WIN];
+       unsigned short          spd_attr[MAX_WIN];
+
+       struct resource         res_skt;
+       struct resource         res_io;
+       struct resource         res_io_io;
+       struct resource         res_mem;
+       struct resource         res_attr;
+
+       struct {
+               int             gpio;
+               struct gpio_desc *desc;
+               unsigned int    irq;
+               const char      *name;
+       } stat[6];
+#define SOC_STAT_CD            0       /* Card detect */
+#define SOC_STAT_BVD1          1       /* BATDEAD / IOSTSCHG */
+#define SOC_STAT_BVD2          2       /* BATWARN / IOSPKR */
+#define SOC_STAT_RDY           3       /* Ready / Interrupt */
+#define SOC_STAT_VS1           4       /* Voltage sense 1 */
+#define SOC_STAT_VS2           5       /* Voltage sense 2 */
+
+       struct gpio_desc        *gpio_reset;
+       struct gpio_desc        *gpio_bus_enable;
+       struct soc_pcmcia_regulator vcc;
+       struct soc_pcmcia_regulator vpp;
+
+       unsigned int            irq_state;
+
+#ifdef CONFIG_CPU_FREQ
+       struct notifier_block   cpufreq_nb;
+#endif
+       struct timer_list       poll_timer;
+       struct list_head        node;
+       void *driver_data;
+};
+
+
+struct pcmcia_low_level {
+       struct module *owner;
+
+       /* first socket in system */
+       int first;
+       /* nr of sockets */
+       int nr;
+
+       int (*hw_init)(struct soc_pcmcia_socket *);
+       void (*hw_shutdown)(struct soc_pcmcia_socket *);
+
+       void (*socket_state)(struct soc_pcmcia_socket *, struct pcmcia_state *);
+       int (*configure_socket)(struct soc_pcmcia_socket *, const socket_state_t *);
+
+       /*
+        * Enable card status IRQs on (re-)initialisation.  This can
+        * be called at initialisation, power management event, or
+        * pcmcia event.
+        */
+       void (*socket_init)(struct soc_pcmcia_socket *);
+
+       /*
+        * Disable card status IRQs and PCMCIA bus on suspend.
+        */
+       void (*socket_suspend)(struct soc_pcmcia_socket *);
+
+       /*
+        * Hardware specific timing routines.
+        * If provided, the get_timing routine overrides the SOC default.
+        */
+       unsigned int (*get_timing)(struct soc_pcmcia_socket *, unsigned int, unsigned int);
+       int (*set_timing)(struct soc_pcmcia_socket *);
+       int (*show_timing)(struct soc_pcmcia_socket *, char *);
+
+#ifdef CONFIG_CPU_FREQ
+       /*
+        * CPUFREQ support.
+        */
+       int (*frequency_change)(struct soc_pcmcia_socket *, unsigned long, struct cpufreq_freqs *);
+#endif
+};
+
+
+
index 95100cff25d14424391a4524af5dd38a067ba993..0a6f8dabf8c4cae6fd0ea9f903b4f73cfa8069e0 100644 (file)
@@ -52,4 +52,8 @@ extern int pxa2xx_ac97_hw_resume(void);
 extern int pxa2xx_ac97_hw_probe(struct platform_device *dev);
 extern void pxa2xx_ac97_hw_remove(struct platform_device *dev);
 
+/* modem registers, used by touchscreen driver */
+u32 pxa2xx_ac97_read_modr(void);
+u32 pxa2xx_ac97_read_misr(void);
+
 #endif
index 58274b4a1f0909d913e69084260438223d476227..e55c0421718b3abe9441229f4b2d1fb49b450332 100644 (file)
 #include <linux/io.h>
 #include <linux/gpio.h>
 #include <linux/of_gpio.h>
+#include <linux/soc/pxa/cpu.h>
 
 #include <sound/pxa2xx-lib.h>
 
-#include <mach/irqs.h>
-#include <mach/regs-ac97.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
+
+#include "pxa2xx-ac97-regs.h"
 
 static DEFINE_MUTEX(car_mutex);
 static DECLARE_WAIT_QUEUE_HEAD(gsr_wq);
@@ -30,6 +31,7 @@ static volatile long gsr_bits;
 static struct clk *ac97_clk;
 static struct clk *ac97conf_clk;
 static int reset_gpio;
+static void __iomem *ac97_reg_base;
 
 extern void pxa27x_configure_ac97reset(int reset_gpio, bool to_gpio);
 
@@ -46,7 +48,7 @@ extern void pxa27x_configure_ac97reset(int reset_gpio, bool to_gpio);
 int pxa2xx_ac97_read(int slot, unsigned short reg)
 {
        int val = -ENODEV;
-       volatile u32 *reg_addr;
+       u32 __iomem *reg_addr;
 
        if (slot > 0)
                return -ENODEV;
@@ -55,31 +57,33 @@ int pxa2xx_ac97_read(int slot, unsigned short reg)
 
        /* set up primary or secondary codec space */
        if (cpu_is_pxa25x() && reg == AC97_GPIO_STATUS)
-               reg_addr = slot ? &SMC_REG_BASE : &PMC_REG_BASE;
+               reg_addr = ac97_reg_base +
+                          (slot ? SMC_REG_BASE : PMC_REG_BASE);
        else
-               reg_addr = slot ? &SAC_REG_BASE : &PAC_REG_BASE;
+               reg_addr = ac97_reg_base +
+                          (slot ? SAC_REG_BASE : PAC_REG_BASE);
        reg_addr += (reg >> 1);
 
        /* start read access across the ac97 link */
-       GSR = GSR_CDONE | GSR_SDONE;
+       writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
        gsr_bits = 0;
-       val = (*reg_addr & 0xffff);
+       val = (readl(reg_addr) & 0xffff);
        if (reg == AC97_GPIO_STATUS)
                goto out;
-       if (wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_SDONE, 1) <= 0 &&
-           !((GSR | gsr_bits) & GSR_SDONE)) {
+       if (wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE, 1) <= 0 &&
+           !((readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE)) {
                printk(KERN_ERR "%s: read error (ac97_reg=%d GSR=%#lx)\n",
-                               __func__, reg, GSR | gsr_bits);
+                               __func__, reg, readl(ac97_reg_base + GSR) | gsr_bits);
                val = -ETIMEDOUT;
                goto out;
        }
 
        /* valid data now */
-       GSR = GSR_CDONE | GSR_SDONE;
+       writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
        gsr_bits = 0;
-       val = (*reg_addr & 0xffff);
+       val = (readl(reg_addr) & 0xffff);
        /* but we've just started another cycle... */
-       wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_SDONE, 1);
+       wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_SDONE, 1);
 
 out:   mutex_unlock(&car_mutex);
        return val;
@@ -88,25 +92,27 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_read);
 
 int pxa2xx_ac97_write(int slot, unsigned short reg, unsigned short val)
 {
-       volatile u32 *reg_addr;
+       u32 __iomem *reg_addr;
        int ret = 0;
 
        mutex_lock(&car_mutex);
 
        /* set up primary or secondary codec space */
        if (cpu_is_pxa25x() && reg == AC97_GPIO_STATUS)
-               reg_addr = slot ? &SMC_REG_BASE : &PMC_REG_BASE;
+               reg_addr = ac97_reg_base +
+                          (slot ? SMC_REG_BASE : PMC_REG_BASE);
        else
-               reg_addr = slot ? &SAC_REG_BASE : &PAC_REG_BASE;
+               reg_addr = ac97_reg_base +
+                          (slot ? SAC_REG_BASE : PAC_REG_BASE);
        reg_addr += (reg >> 1);
 
-       GSR = GSR_CDONE | GSR_SDONE;
+       writel(GSR_CDONE | GSR_SDONE, ac97_reg_base + GSR);
        gsr_bits = 0;
-       *reg_addr = val;
-       if (wait_event_timeout(gsr_wq, (GSR | gsr_bits) & GSR_CDONE, 1) <= 0 &&
-           !((GSR | gsr_bits) & GSR_CDONE)) {
+       writel(val, reg_addr);
+       if (wait_event_timeout(gsr_wq, (readl(ac97_reg_base + GSR) | gsr_bits) & GSR_CDONE, 1) <= 0 &&
+           !((readl(ac97_reg_base + GSR) | gsr_bits) & GSR_CDONE)) {
                printk(KERN_ERR "%s: write error (ac97_reg=%d GSR=%#lx)\n",
-                               __func__, reg, GSR | gsr_bits);
+                               __func__, reg, readl(ac97_reg_base + GSR) | gsr_bits);
                ret = -EIO;
        }
 
@@ -120,17 +126,17 @@ static inline void pxa_ac97_warm_pxa25x(void)
 {
        gsr_bits = 0;
 
-       GCR |= GCR_WARM_RST;
+       writel(readl(ac97_reg_base + GCR) | (GCR_WARM_RST), ac97_reg_base + GCR);
 }
 
 static inline void pxa_ac97_cold_pxa25x(void)
 {
-       GCR &=  GCR_COLD_RST;  /* clear everything but nCRST */
-       GCR &= ~GCR_COLD_RST;  /* then assert nCRST */
+       writel(readl(ac97_reg_base + GCR) & ( GCR_COLD_RST), ac97_reg_base + GCR);  /* clear everything but nCRST */
+       writel(readl(ac97_reg_base + GCR) & (~GCR_COLD_RST), ac97_reg_base + GCR);  /* then assert nCRST */
 
        gsr_bits = 0;
 
-       GCR = GCR_COLD_RST;
+       writel(GCR_COLD_RST, ac97_reg_base + GCR);
 }
 #endif
 
@@ -142,15 +148,15 @@ static inline void pxa_ac97_warm_pxa27x(void)
        /* warm reset broken on Bulverde, so manually keep AC97 reset high */
        pxa27x_configure_ac97reset(reset_gpio, true);
        udelay(10);
-       GCR |= GCR_WARM_RST;
+       writel(readl(ac97_reg_base + GCR) | (GCR_WARM_RST), ac97_reg_base + GCR);
        pxa27x_configure_ac97reset(reset_gpio, false);
        udelay(500);
 }
 
 static inline void pxa_ac97_cold_pxa27x(void)
 {
-       GCR &=  GCR_COLD_RST;  /* clear everything but nCRST */
-       GCR &= ~GCR_COLD_RST;  /* then assert nCRST */
+       writel(readl(ac97_reg_base + GCR) & ( GCR_COLD_RST), ac97_reg_base + GCR);  /* clear everything but nCRST */
+       writel(readl(ac97_reg_base + GCR) & (~GCR_COLD_RST), ac97_reg_base + GCR);  /* then assert nCRST */
 
        gsr_bits = 0;
 
@@ -158,7 +164,7 @@ static inline void pxa_ac97_cold_pxa27x(void)
        clk_prepare_enable(ac97conf_clk);
        udelay(5);
        clk_disable_unprepare(ac97conf_clk);
-       GCR = GCR_COLD_RST | GCR_WARM_RST;
+       writel(GCR_COLD_RST | GCR_WARM_RST, ac97_reg_base + GCR);
 }
 #endif
 
@@ -168,26 +174,26 @@ static inline void pxa_ac97_warm_pxa3xx(void)
        gsr_bits = 0;
 
        /* Can't use interrupts */
-       GCR |= GCR_WARM_RST;
+       writel(readl(ac97_reg_base + GCR) | (GCR_WARM_RST), ac97_reg_base + GCR);
 }
 
 static inline void pxa_ac97_cold_pxa3xx(void)
 {
        /* Hold CLKBPB for 100us */
-       GCR = 0;
-       GCR = GCR_CLKBPB;
+       writel(0, ac97_reg_base + GCR);
+       writel(GCR_CLKBPB, ac97_reg_base + GCR);
        udelay(100);
-       GCR = 0;
+       writel(0, ac97_reg_base + GCR);
 
-       GCR &=  GCR_COLD_RST;  /* clear everything but nCRST */
-       GCR &= ~GCR_COLD_RST;  /* then assert nCRST */
+       writel(readl(ac97_reg_base + GCR) & ( GCR_COLD_RST), ac97_reg_base + GCR);  /* clear everything but nCRST */
+       writel(readl(ac97_reg_base + GCR) & (~GCR_COLD_RST), ac97_reg_base + GCR);  /* then assert nCRST */
 
        gsr_bits = 0;
 
        /* Can't use interrupts on PXA3xx */
-       GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
+       writel(readl(ac97_reg_base + GCR) & (~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN)), ac97_reg_base + GCR);
 
-       GCR = GCR_WARM_RST | GCR_COLD_RST;
+       writel(GCR_WARM_RST | GCR_COLD_RST, ac97_reg_base + GCR);
 }
 #endif
 
@@ -213,10 +219,10 @@ bool pxa2xx_ac97_try_warm_reset(void)
 #endif
                snd_BUG();
 
-       while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
+       while (!((readl(ac97_reg_base + GSR) | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
                mdelay(1);
 
-       gsr = GSR | gsr_bits;
+       gsr = readl(ac97_reg_base + GSR) | gsr_bits;
        if (!(gsr & (GSR_PCR | GSR_SCR))) {
                printk(KERN_INFO "%s: warm reset timeout (GSR=%#lx)\n",
                                 __func__, gsr);
@@ -250,10 +256,10 @@ bool pxa2xx_ac97_try_cold_reset(void)
 #endif
                snd_BUG();
 
-       while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
+       while (!((readl(ac97_reg_base + GSR) | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--)
                mdelay(1);
 
-       gsr = GSR | gsr_bits;
+       gsr = readl(ac97_reg_base + GSR) | gsr_bits;
        if (!(gsr & (GSR_PCR | GSR_SCR))) {
                printk(KERN_INFO "%s: cold reset timeout (GSR=%#lx)\n",
                                 __func__, gsr);
@@ -268,8 +274,10 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_try_cold_reset);
 
 void pxa2xx_ac97_finish_reset(void)
 {
-       GCR &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
-       GCR |= GCR_SDONE_IE|GCR_CDONE_IE;
+       u32 gcr = readl(ac97_reg_base + GCR);
+       gcr &= ~(GCR_PRIRDY_IEN|GCR_SECRDY_IEN);
+       gcr |= GCR_SDONE_IE|GCR_CDONE_IE;
+       writel(gcr, ac97_reg_base + GCR);
 }
 EXPORT_SYMBOL_GPL(pxa2xx_ac97_finish_reset);
 
@@ -277,9 +285,9 @@ static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id)
 {
        long status;
 
-       status = GSR;
+       status = readl(ac97_reg_base + GSR);
        if (status) {
-               GSR = status;
+               writel(status, ac97_reg_base + GSR);
                gsr_bits |= status;
                wake_up(&gsr_wq);
 
@@ -287,9 +295,9 @@ static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id)
                   since they tend to spuriously trigger when MMC is used
                   (hardware bug? go figure)... */
                if (cpu_is_pxa27x()) {
-                       MISR = MISR_EOC;
-                       PISR = PISR_EOC;
-                       MCSR = MCSR_EOC;
+                       writel(MISR_EOC, ac97_reg_base + MISR);
+                       writel(PISR_EOC, ac97_reg_base + PISR);
+                       writel(MCSR_EOC, ac97_reg_base + MCSR);
                }
 
                return IRQ_HANDLED;
@@ -301,7 +309,7 @@ static irqreturn_t pxa2xx_ac97_irq(int irq, void *dev_id)
 #ifdef CONFIG_PM
 int pxa2xx_ac97_hw_suspend(void)
 {
-       GCR |= GCR_ACLINK_OFF;
+       writel(readl(ac97_reg_base + GCR) | (GCR_ACLINK_OFF), ac97_reg_base + GCR);
        clk_disable_unprepare(ac97_clk);
        return 0;
 }
@@ -318,8 +326,15 @@ EXPORT_SYMBOL_GPL(pxa2xx_ac97_hw_resume);
 int pxa2xx_ac97_hw_probe(struct platform_device *dev)
 {
        int ret;
+       int irq;
        pxa2xx_audio_ops_t *pdata = dev->dev.platform_data;
 
+       ac97_reg_base = devm_platform_ioremap_resource(dev, 0);
+       if (IS_ERR(ac97_reg_base)) {
+               dev_err(&dev->dev, "Missing MMIO resource\n");
+               return PTR_ERR(ac97_reg_base);
+       }
+
        if (pdata) {
                switch (pdata->reset_gpio) {
                case 95:
@@ -386,14 +401,18 @@ int pxa2xx_ac97_hw_probe(struct platform_device *dev)
        if (ret)
                goto err_clk2;
 
-       ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, 0, "AC97", NULL);
+       irq = platform_get_irq(dev, 0);
+       if (!irq)
+               goto err_irq;
+
+       ret = request_irq(irq, pxa2xx_ac97_irq, 0, "AC97", NULL);
        if (ret < 0)
                goto err_irq;
 
        return 0;
 
 err_irq:
-       GCR |= GCR_ACLINK_OFF;
+       writel(readl(ac97_reg_base + GCR) | (GCR_ACLINK_OFF), ac97_reg_base + GCR);
 err_clk2:
        clk_put(ac97_clk);
        ac97_clk = NULL;
@@ -411,8 +430,8 @@ void pxa2xx_ac97_hw_remove(struct platform_device *dev)
 {
        if (cpu_is_pxa27x())
                gpio_free(reset_gpio);
-       GCR |= GCR_ACLINK_OFF;
-       free_irq(IRQ_AC97, NULL);
+       writel(readl(ac97_reg_base + GCR) | (GCR_ACLINK_OFF), ac97_reg_base + GCR);
+       free_irq(platform_get_irq(dev, 0), NULL);
        if (ac97conf_clk) {
                clk_put(ac97conf_clk);
                ac97conf_clk = NULL;
@@ -423,6 +442,24 @@ void pxa2xx_ac97_hw_remove(struct platform_device *dev)
 }
 EXPORT_SYMBOL_GPL(pxa2xx_ac97_hw_remove);
 
+u32 pxa2xx_ac97_read_modr(void)
+{
+       if (!ac97_reg_base)
+               return 0;
+
+       return readl(ac97_reg_base + MODR);
+}
+EXPORT_SYMBOL_GPL(pxa2xx_ac97_read_modr);
+
+u32 pxa2xx_ac97_read_misr(void)
+{
+       if (!ac97_reg_base)
+               return 0;
+
+       return readl(ac97_reg_base + MISR);
+}
+EXPORT_SYMBOL_GPL(pxa2xx_ac97_read_misr);
+
 MODULE_AUTHOR("Nicolas Pitre");
 MODULE_DESCRIPTION("Intel/Marvell PXA sound library");
 MODULE_LICENSE("GPL");
diff --git a/sound/arm/pxa2xx-ac97-regs.h b/sound/arm/pxa2xx-ac97-regs.h
new file mode 100644 (file)
index 0000000..ae638a1
--- /dev/null
@@ -0,0 +1,100 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __ASM_ARCH_REGS_AC97_H
+#define __ASM_ARCH_REGS_AC97_H
+
+/*
+ * AC97 Controller registers
+ */
+
+#define POCR           (0x0000)        /* PCM Out Control Register */
+#define POCR_FEIE      (1 << 3)        /* FIFO Error Interrupt Enable */
+#define POCR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
+
+#define PICR           (0x0004)        /* PCM In Control Register */
+#define PICR_FEIE      (1 << 3)        /* FIFO Error Interrupt Enable */
+#define PICR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
+
+#define MCCR           (0x0008)        /* Mic In Control Register */
+#define MCCR_FEIE      (1 << 3)        /* FIFO Error Interrupt Enable */
+#define MCCR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
+
+#define GCR            (0x000C)         /* Global Control Register */
+#ifdef CONFIG_PXA3xx
+#define GCR_CLKBPB     (1 << 31)       /* Internal clock enable */
+#endif
+#define GCR_nDMAEN     (1 << 24)       /* non DMA Enable */
+#define GCR_CDONE_IE   (1 << 19)       /* Command Done Interrupt Enable */
+#define GCR_SDONE_IE   (1 << 18)       /* Status Done Interrupt Enable */
+#define GCR_SECRDY_IEN (1 << 9)        /* Secondary Ready Interrupt Enable */
+#define GCR_PRIRDY_IEN (1 << 8)        /* Primary Ready Interrupt Enable */
+#define GCR_SECRES_IEN (1 << 5)        /* Secondary Resume Interrupt Enable */
+#define GCR_PRIRES_IEN (1 << 4)        /* Primary Resume Interrupt Enable */
+#define GCR_ACLINK_OFF (1 << 3)        /* AC-link Shut Off */
+#define GCR_WARM_RST   (1 << 2)        /* AC97 Warm Reset */
+#define GCR_COLD_RST   (1 << 1)        /* AC'97 Cold Reset (0 = active) */
+#define GCR_GIE                (1 << 0)        /* Codec GPI Interrupt Enable */
+
+#define POSR           (0x0010)        /* PCM Out Status Register */
+#define POSR_FIFOE     (1 << 4)        /* FIFO error */
+#define POSR_FSR       (1 << 2)        /* FIFO Service Request */
+
+#define PISR           (0x0014)        /* PCM In Status Register */
+#define PISR_FIFOE     (1 << 4)        /* FIFO error */
+#define PISR_EOC       (1 << 3)        /* DMA End-of-Chain (exclusive clear) */
+#define PISR_FSR       (1 << 2)        /* FIFO Service Request */
+
+#define MCSR           (0x0018)        /* Mic In Status Register */
+#define MCSR_FIFOE     (1 << 4)        /* FIFO error */
+#define MCSR_EOC       (1 << 3)        /* DMA End-of-Chain (exclusive clear) */
+#define MCSR_FSR       (1 << 2)        /* FIFO Service Request */
+
+#define GSR            (0x001C)        /* Global Status Register */
+#define GSR_CDONE      (1 << 19)       /* Command Done */
+#define GSR_SDONE      (1 << 18)       /* Status Done */
+#define GSR_RDCS       (1 << 15)       /* Read Completion Status */
+#define GSR_BIT3SLT12  (1 << 14)       /* Bit 3 of slot 12 */
+#define GSR_BIT2SLT12  (1 << 13)       /* Bit 2 of slot 12 */
+#define GSR_BIT1SLT12  (1 << 12)       /* Bit 1 of slot 12 */
+#define GSR_SECRES     (1 << 11)       /* Secondary Resume Interrupt */
+#define GSR_PRIRES     (1 << 10)       /* Primary Resume Interrupt */
+#define GSR_SCR                (1 << 9)        /* Secondary Codec Ready */
+#define GSR_PCR                (1 << 8)        /*  Primary Codec Ready */
+#define GSR_MCINT      (1 << 7)        /* Mic In Interrupt */
+#define GSR_POINT      (1 << 6)        /* PCM Out Interrupt */
+#define GSR_PIINT      (1 << 5)        /* PCM In Interrupt */
+#define GSR_ACOFFD     (1 << 3)        /* AC-link Shut Off Done */
+#define GSR_MOINT      (1 << 2)        /* Modem Out Interrupt */
+#define GSR_MIINT      (1 << 1)        /* Modem In Interrupt */
+#define GSR_GSCI       (1 << 0)        /* Codec GPI Status Change Interrupt */
+
+#define CAR            (0x0020)        /* CODEC Access Register */
+#define CAR_CAIP       (1 << 0)        /* Codec Access In Progress */
+
+#define PCDR           (0x0040)        /* PCM FIFO Data Register */
+#define MCDR           (0x0060)        /* Mic-in FIFO Data Register */
+
+#define MOCR           (0x0100)        /* Modem Out Control Register */
+#define MOCR_FEIE      (1 << 3)        /* FIFO Error */
+#define MOCR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
+
+#define MICR           (0x0108)        /* Modem In Control Register */
+#define MICR_FEIE      (1 << 3)        /* FIFO Error */
+#define MICR_FSRIE     (1 << 1)        /* FIFO Service Request Interrupt Enable */
+
+#define MOSR           (0x0110)        /* Modem Out Status Register */
+#define MOSR_FIFOE     (1 << 4)        /* FIFO error */
+#define MOSR_FSR       (1 << 2)        /* FIFO Service Request */
+
+#define MISR           (0x0118)        /* Modem In Status Register */
+#define MISR_FIFOE     (1 << 4)        /* FIFO error */
+#define MISR_EOC       (1 << 3)        /* DMA End-of-Chain (exclusive clear) */
+#define MISR_FSR       (1 << 2)        /* FIFO Service Request */
+
+#define MODR           (0x0140)        /* Modem FIFO Data Register */
+
+#define PAC_REG_BASE   (0x0200)        /* Primary Audio Codec */
+#define SAC_REG_BASE   (0x0300)        /* Secondary Audio Codec */
+#define PMC_REG_BASE   (0x0400)        /* Primary Modem Codec */
+#define SMC_REG_BASE   (0x0500)        /* Secondary Modem Codec */
+
+#endif /* __ASM_ARCH_REGS_AC97_H */
index c17a19fe59ed1c9cfa65ffbb92a0749e6fa9b500..c162086455ad59a6ecb3ca5558cb422f02e5d97d 100644 (file)
@@ -21,8 +21,7 @@
 #include <sound/pxa2xx-lib.h>
 #include <sound/dmaengine_pcm.h>
 
-#include <mach/regs-ac97.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 static void pxa2xx_ac97_legacy_reset(struct snd_ac97 *ac97)
 {
index 8ee2dea25a8d0263a94432952a39c06fe7a947ee..4489d2c8b1244409f39c35f5b04089ea79645adf 100644 (file)
@@ -21,8 +21,7 @@
 #include <sound/soc.h>
 
 #include <asm/mach-types.h>
-#include <mach/corgi.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include "../codecs/wm8731.h"
 #include "pxa2xx-i2s.h"
@@ -41,6 +40,9 @@
 static int corgi_jack_func;
 static int corgi_spk_func;
 
+static struct gpio_desc *gpiod_mute_l, *gpiod_mute_r,
+                       *gpiod_apm_on, *gpiod_mic_bias;
+
 static void corgi_ext_control(struct snd_soc_dapm_context *dapm)
 {
        snd_soc_dapm_mutex_lock(dapm);
@@ -49,8 +51,8 @@ static void corgi_ext_control(struct snd_soc_dapm_context *dapm)
        switch (corgi_jack_func) {
        case CORGI_HP:
                /* set = unmute headphone */
-               gpio_set_value(CORGI_GPIO_MUTE_L, 1);
-               gpio_set_value(CORGI_GPIO_MUTE_R, 1);
+               gpiod_set_value(gpiod_mute_l, 1);
+               gpiod_set_value(gpiod_mute_r, 1);
                snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");
@@ -58,24 +60,24 @@ static void corgi_ext_control(struct snd_soc_dapm_context *dapm)
                break;
        case CORGI_MIC:
                /* reset = mute headphone */
-               gpio_set_value(CORGI_GPIO_MUTE_L, 0);
-               gpio_set_value(CORGI_GPIO_MUTE_R, 0);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 0);
                snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
                break;
        case CORGI_LINE:
-               gpio_set_value(CORGI_GPIO_MUTE_L, 0);
-               gpio_set_value(CORGI_GPIO_MUTE_R, 0);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 0);
                snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_enable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
                break;
        case CORGI_HEADSET:
-               gpio_set_value(CORGI_GPIO_MUTE_L, 0);
-               gpio_set_value(CORGI_GPIO_MUTE_R, 1);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 1);
                snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
@@ -108,8 +110,8 @@ static int corgi_startup(struct snd_pcm_substream *substream)
 static void corgi_shutdown(struct snd_pcm_substream *substream)
 {
        /* set = unmute headphone */
-       gpio_set_value(CORGI_GPIO_MUTE_L, 1);
-       gpio_set_value(CORGI_GPIO_MUTE_R, 1);
+       gpiod_set_value(gpiod_mute_l, 1);
+       gpiod_set_value(gpiod_mute_r, 1);
 }
 
 static int corgi_hw_params(struct snd_pcm_substream *substream,
@@ -199,14 +201,14 @@ static int corgi_set_spk(struct snd_kcontrol *kcontrol,
 static int corgi_amp_event(struct snd_soc_dapm_widget *w,
        struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(CORGI_GPIO_APM_ON, SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_apm_on, SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
 static int corgi_mic_event(struct snd_soc_dapm_widget *w,
        struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(CORGI_GPIO_MIC_BIAS, SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_mic_bias, SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
@@ -293,6 +295,19 @@ static int corgi_probe(struct platform_device *pdev)
 
        card->dev = &pdev->dev;
 
+       gpiod_mute_l = devm_gpiod_get(&pdev->dev, "mute-l", GPIOD_OUT_HIGH);
+       if (IS_ERR(gpiod_mute_l))
+               return PTR_ERR(gpiod_mute_l);
+       gpiod_mute_r = devm_gpiod_get(&pdev->dev, "mute-r", GPIOD_OUT_HIGH);
+       if (IS_ERR(gpiod_mute_r))
+               return PTR_ERR(gpiod_mute_r);
+       gpiod_apm_on = devm_gpiod_get(&pdev->dev, "apm-on", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_apm_on))
+               return PTR_ERR(gpiod_apm_on);
+       gpiod_mic_bias = devm_gpiod_get(&pdev->dev, "mic-bias", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_mic_bias))
+               return PTR_ERR(gpiod_mic_bias);
+
        ret = devm_snd_soc_register_card(&pdev->dev, card);
        if (ret)
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
index eafa1482afbeca15e2ba5636ad00dec4c766b128..4e0e9b778d4c0a209f3a7655c014a2ec586ce761 100644 (file)
@@ -7,17 +7,19 @@
 
 #include <linux/module.h>
 #include <linux/moduleparam.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/soc.h>
 
-#include <mach/audio.h>
-#include <mach/eseries-gpio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include <asm/mach-types.h>
 
+static struct gpio_desc *gpiod_output_amp, *gpiod_input_amp;
+static struct gpio_desc *gpiod_audio_power;
+
 #define E740_AUDIO_OUT 1
 #define E740_AUDIO_IN  2
 
@@ -25,9 +27,9 @@ static int e740_audio_power;
 
 static void e740_sync_audio_power(int status)
 {
-       gpio_set_value(GPIO_E740_WM9705_nAVDD2, !status);
-       gpio_set_value(GPIO_E740_AMP_ON, (status & E740_AUDIO_OUT) ? 1 : 0);
-       gpio_set_value(GPIO_E740_MIC_ON, (status & E740_AUDIO_IN) ? 1 : 0);
+       gpiod_set_value(gpiod_audio_power, !status);
+       gpiod_set_value(gpiod_output_amp, (status & E740_AUDIO_OUT) ? 1 : 0);
+       gpiod_set_value(gpiod_input_amp, (status & E740_AUDIO_IN) ? 1 : 0);
 }
 
 static int e740_mic_amp_event(struct snd_soc_dapm_widget *w,
@@ -116,36 +118,35 @@ static struct snd_soc_card e740 = {
        .fully_routed = true,
 };
 
-static struct gpio e740_audio_gpios[] = {
-       { GPIO_E740_MIC_ON, GPIOF_OUT_INIT_LOW, "Mic amp" },
-       { GPIO_E740_AMP_ON, GPIOF_OUT_INIT_LOW, "Output amp" },
-       { GPIO_E740_WM9705_nAVDD2, GPIOF_OUT_INIT_HIGH, "Audio power" },
-};
-
 static int e740_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &e740;
        int ret;
 
-       ret = gpio_request_array(e740_audio_gpios,
-                                ARRAY_SIZE(e740_audio_gpios));
+       gpiod_input_amp  = devm_gpiod_get(&pdev->dev, "Mic amp", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(gpiod_input_amp);
+       if (ret)
+               return ret;
+       gpiod_output_amp  = devm_gpiod_get(&pdev->dev, "Output amp", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(gpiod_output_amp);
+       if (ret)
+               return ret;
+       gpiod_audio_power = devm_gpiod_get(&pdev->dev, "Audio power", GPIOD_OUT_HIGH);
+       ret = PTR_ERR_OR_ZERO(gpiod_audio_power);
        if (ret)
                return ret;
 
        card->dev = &pdev->dev;
 
        ret = devm_snd_soc_register_card(&pdev->dev, card);
-       if (ret) {
+       if (ret)
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
                        ret);
-               gpio_free_array(e740_audio_gpios, ARRAY_SIZE(e740_audio_gpios));
-       }
        return ret;
 }
 
 static int e740_remove(struct platform_device *pdev)
 {
-       gpio_free_array(e740_audio_gpios, ARRAY_SIZE(e740_audio_gpios));
        return 0;
 }
 
index d75510d7b16bd37490d96f0bbd306e6dff769fef..7a1e0d8bfd1138f3c612339407913426c76c3517 100644 (file)
@@ -7,24 +7,25 @@
 
 #include <linux/module.h>
 #include <linux/moduleparam.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/soc.h>
 
-#include <mach/audio.h>
-#include <mach/eseries-gpio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include <asm/mach-types.h>
 
+static struct gpio_desc *gpiod_spk_amp, *gpiod_hp_amp;
+
 static int e750_spk_amp_event(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *kcontrol, int event)
 {
        if (event & SND_SOC_DAPM_PRE_PMU)
-               gpio_set_value(GPIO_E750_SPK_AMP_OFF, 0);
+               gpiod_set_value(gpiod_spk_amp, 1);
        else if (event & SND_SOC_DAPM_POST_PMD)
-               gpio_set_value(GPIO_E750_SPK_AMP_OFF, 1);
+               gpiod_set_value(gpiod_spk_amp, 0);
 
        return 0;
 }
@@ -33,9 +34,9 @@ static int e750_hp_amp_event(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *kcontrol, int event)
 {
        if (event & SND_SOC_DAPM_PRE_PMU)
-               gpio_set_value(GPIO_E750_HP_AMP_OFF, 0);
+               gpiod_set_value(gpiod_hp_amp, 1);
        else if (event & SND_SOC_DAPM_POST_PMD)
-               gpio_set_value(GPIO_E750_HP_AMP_OFF, 1);
+               gpiod_set_value(gpiod_hp_amp, 0);
 
        return 0;
 }
@@ -100,35 +101,31 @@ static struct snd_soc_card e750 = {
        .fully_routed = true,
 };
 
-static struct gpio e750_audio_gpios[] = {
-       { GPIO_E750_HP_AMP_OFF, GPIOF_OUT_INIT_HIGH, "Headphone amp" },
-       { GPIO_E750_SPK_AMP_OFF, GPIOF_OUT_INIT_HIGH, "Speaker amp" },
-};
-
 static int e750_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &e750;
        int ret;
 
-       ret = gpio_request_array(e750_audio_gpios,
-                                ARRAY_SIZE(e750_audio_gpios));
+       gpiod_hp_amp  = devm_gpiod_get(&pdev->dev, "Headphone amp", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(gpiod_hp_amp);
+       if (ret)
+               return ret;
+       gpiod_spk_amp  = devm_gpiod_get(&pdev->dev, "Speaker amp", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(gpiod_spk_amp);
        if (ret)
                return ret;
 
        card->dev = &pdev->dev;
 
        ret = devm_snd_soc_register_card(&pdev->dev, card);
-       if (ret) {
+       if (ret)
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
                        ret);
-               gpio_free_array(e750_audio_gpios, ARRAY_SIZE(e750_audio_gpios));
-       }
        return ret;
 }
 
 static int e750_remove(struct platform_device *pdev)
 {
-       gpio_free_array(e750_audio_gpios, ARRAY_SIZE(e750_audio_gpios));
        return 0;
 }
 
index 56d543da938ae95b05d7027b71c8b3d535531ff2..a39c494127cf74a05148f7f281625f47eeee303e 100644 (file)
@@ -7,23 +7,24 @@
 
 #include <linux/module.h>
 #include <linux/moduleparam.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/soc.h>
 
 #include <asm/mach-types.h>
-#include <mach/audio.h>
-#include <mach/eseries-gpio.h>
+#include <linux/platform_data/asoc-pxa.h>
+
+static struct gpio_desc *gpiod_spk_amp, *gpiod_hp_amp;
 
 static int e800_spk_amp_event(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *kcontrol, int event)
 {
        if (event & SND_SOC_DAPM_PRE_PMU)
-               gpio_set_value(GPIO_E800_SPK_AMP_ON, 1);
+               gpiod_set_value(gpiod_spk_amp, 1);
        else if (event & SND_SOC_DAPM_POST_PMD)
-               gpio_set_value(GPIO_E800_SPK_AMP_ON, 0);
+               gpiod_set_value(gpiod_spk_amp, 0);
 
        return 0;
 }
@@ -32,9 +33,9 @@ static int e800_hp_amp_event(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *kcontrol, int event)
 {
        if (event & SND_SOC_DAPM_PRE_PMU)
-               gpio_set_value(GPIO_E800_HP_AMP_OFF, 0);
+               gpiod_set_value(gpiod_hp_amp, 1);
        else if (event & SND_SOC_DAPM_POST_PMD)
-               gpio_set_value(GPIO_E800_HP_AMP_OFF, 1);
+               gpiod_set_value(gpiod_hp_amp, 0);
 
        return 0;
 }
@@ -100,35 +101,31 @@ static struct snd_soc_card e800 = {
        .num_dapm_routes = ARRAY_SIZE(audio_map),
 };
 
-static struct gpio e800_audio_gpios[] = {
-       { GPIO_E800_SPK_AMP_ON, GPIOF_OUT_INIT_HIGH, "Headphone amp" },
-       { GPIO_E800_HP_AMP_OFF, GPIOF_OUT_INIT_HIGH, "Speaker amp" },
-};
-
 static int e800_probe(struct platform_device *pdev)
 {
        struct snd_soc_card *card = &e800;
        int ret;
 
-       ret = gpio_request_array(e800_audio_gpios,
-                                ARRAY_SIZE(e800_audio_gpios));
+       gpiod_hp_amp  = devm_gpiod_get(&pdev->dev, "Headphone amp", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(gpiod_hp_amp);
+       if (ret)
+               return ret;
+       gpiod_spk_amp  = devm_gpiod_get(&pdev->dev, "Speaker amp", GPIOD_OUT_LOW);
+       ret = PTR_ERR_OR_ZERO(gpiod_spk_amp);
        if (ret)
                return ret;
 
        card->dev = &pdev->dev;
 
        ret = devm_snd_soc_register_card(&pdev->dev, card);
-       if (ret) {
+       if (ret)
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
                        ret);
-               gpio_free_array(e800_audio_gpios, ARRAY_SIZE(e800_audio_gpios));
-       }
        return ret;
 }
 
 static int e800_remove(struct platform_device *pdev)
 {
-       gpio_free_array(e800_audio_gpios, ARRAY_SIZE(e800_audio_gpios));
        return 0;
 }
 
index 9076ea7e93396022d9393ab893d22296772cf342..b59ec22e1e7e508430627cb360840a46ea512e9e 100644 (file)
@@ -23,7 +23,7 @@
 #include <sound/soc.h>
 
 #include <asm/mach-types.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 SND_SOC_DAILINK_DEFS(ac97,
        DAILINK_COMP_ARRAY(COMP_CPU("pxa2xx-ac97")),
index 9a816156f012c69a96d6c3871e48eabeafa51921..a323ddb8fc3ebcbedfbb493839170c04c5232fe5 100644 (file)
@@ -10,7 +10,7 @@
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
 #include <linux/delay.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/core.h>
 #include <sound/jack.h>
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 
-#include <mach/hx4700.h>
 #include <asm/mach-types.h>
 #include "pxa2xx-i2s.h"
 
+static struct gpio_desc *gpiod_hp_driver, *gpiod_spk_sd;
 static struct snd_soc_jack hs_jack;
 
 /* Headphones jack detection DAPM pin */
@@ -29,20 +29,18 @@ static struct snd_soc_jack_pin hs_jack_pin[] = {
        {
                .pin    = "Headphone Jack",
                .mask   = SND_JACK_HEADPHONE,
+               .invert = 1,
        },
        {
                .pin    = "Speaker",
                /* disable speaker when hp jack is inserted */
                .mask   = SND_JACK_HEADPHONE,
-               .invert = 1,
        },
 };
 
 /* Headphones jack detection GPIO */
 static struct snd_soc_jack_gpio hs_jack_gpio = {
-       .gpio           = GPIO75_HX4700_EARPHONE_nDET,
-       .invert         = true,
-       .name           = "hp-gpio",
+       .name           = "earphone-det",
        .report         = SND_JACK_HEADPHONE,
        .debounce_time  = 200,
 };
@@ -81,14 +79,14 @@ static const struct snd_soc_ops hx4700_ops = {
 static int hx4700_spk_power(struct snd_soc_dapm_widget *w,
                            struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(GPIO107_HX4700_SPK_nSD, !!SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_spk_sd, !SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
 static int hx4700_hp_power(struct snd_soc_dapm_widget *w,
                           struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(GPIO92_HX4700_HP_DRIVER, !!SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_hp_driver, !!SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
@@ -162,11 +160,6 @@ static struct snd_soc_card snd_soc_card_hx4700 = {
        .fully_routed           = true,
 };
 
-static struct gpio hx4700_audio_gpios[] = {
-       { GPIO107_HX4700_SPK_nSD, GPIOF_OUT_INIT_HIGH, "SPK_POWER" },
-       { GPIO92_HX4700_HP_DRIVER, GPIOF_OUT_INIT_LOW, "EP_POWER" },
-};
-
 static int hx4700_audio_probe(struct platform_device *pdev)
 {
        int ret;
@@ -174,26 +167,26 @@ static int hx4700_audio_probe(struct platform_device *pdev)
        if (!machine_is_h4700())
                return -ENODEV;
 
-       ret = gpio_request_array(hx4700_audio_gpios,
-                               ARRAY_SIZE(hx4700_audio_gpios));
+       gpiod_hp_driver = devm_gpiod_get(&pdev->dev, "hp-driver", GPIOD_ASIS);
+       ret = PTR_ERR_OR_ZERO(gpiod_hp_driver);
+       if (ret)
+               return ret;
+       gpiod_spk_sd = devm_gpiod_get(&pdev->dev, "spk-sd", GPIOD_ASIS);
+       ret = PTR_ERR_OR_ZERO(gpiod_spk_sd);
        if (ret)
                return ret;
 
+       hs_jack_gpio.gpiod_dev = &pdev->dev;
        snd_soc_card_hx4700.dev = &pdev->dev;
        ret = devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_hx4700);
-       if (ret)
-               gpio_free_array(hx4700_audio_gpios,
-                               ARRAY_SIZE(hx4700_audio_gpios));
 
        return ret;
 }
 
 static int hx4700_audio_remove(struct platform_device *pdev)
 {
-       gpio_set_value(GPIO92_HX4700_HP_DRIVER, 0);
-       gpio_set_value(GPIO107_HX4700_SPK_nSD, 0);
-
-       gpio_free_array(hx4700_audio_gpios, ARRAY_SIZE(hx4700_audio_gpios));
+       gpiod_set_value(gpiod_hp_driver, 0);
+       gpiod_set_value(gpiod_spk_sd, 0);
        return 0;
 }
 
index a5f326c97af23e5fbf03e39e3b08ba0b9659c2e9..9433cc92775527f7a03404df389b9cb4cdb13a2b 100644 (file)
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
 #include <linux/delay.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <linux/i2c.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
-#include <sound/uda1380.h>
 
-#include <mach/magician.h>
 #include <asm/mach-types.h>
 #include "../codecs/uda1380.h"
 #include "pxa2xx-i2s.h"
@@ -36,6 +34,9 @@ static int magician_hp_switch;
 static int magician_spk_switch = 1;
 static int magician_in_sel = MAGICIAN_MIC;
 
+static struct gpio_desc *gpiod_spk_power, *gpiod_ep_power, *gpiod_mic_power;
+static struct gpio_desc *gpiod_in_sel0, *gpiod_in_sel1;
+
 static void magician_ext_control(struct snd_soc_dapm_context *dapm)
 {
 
@@ -215,10 +216,10 @@ static int magician_set_input(struct snd_kcontrol *kcontrol,
 
        switch (magician_in_sel) {
        case MAGICIAN_MIC:
-               gpio_set_value(EGPIO_MAGICIAN_IN_SEL1, 1);
+               gpiod_set_value(gpiod_in_sel1, 1);
                break;
        case MAGICIAN_MIC_EXT:
-               gpio_set_value(EGPIO_MAGICIAN_IN_SEL1, 0);
+               gpiod_set_value(gpiod_in_sel1, 0);
        }
 
        return 1;
@@ -227,21 +228,21 @@ static int magician_set_input(struct snd_kcontrol *kcontrol,
 static int magician_spk_power(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(EGPIO_MAGICIAN_SPK_POWER, SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_spk_power, SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
 static int magician_hp_power(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(EGPIO_MAGICIAN_EP_POWER, SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_ep_power, SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
 static int magician_mic_bias(struct snd_soc_dapm_widget *w,
                                struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(EGPIO_MAGICIAN_MIC_POWER, SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value(gpiod_mic_power, SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
@@ -328,106 +329,38 @@ static struct snd_soc_card snd_soc_card_magician = {
        .fully_routed = true,
 };
 
-static struct platform_device *magician_snd_device;
-
-/*
- * FIXME: move into magician board file once merged into the pxa tree
- */
-static struct uda1380_platform_data uda1380_info = {
-       .gpio_power = EGPIO_MAGICIAN_CODEC_POWER,
-       .gpio_reset = EGPIO_MAGICIAN_CODEC_RESET,
-       .dac_clk    = UDA1380_DAC_CLK_WSPLL,
-};
-
-static struct i2c_board_info i2c_board_info[] = {
-       {
-               I2C_BOARD_INFO("uda1380", 0x18),
-               .platform_data = &uda1380_info,
-       },
-};
-
-static int __init magician_init(void)
-{
-       int ret;
-       struct i2c_adapter *adapter;
-       struct i2c_client *client;
-
-       if (!machine_is_magician())
-               return -ENODEV;
-
-       adapter = i2c_get_adapter(0);
-       if (!adapter)
-               return -ENODEV;
-       client = i2c_new_client_device(adapter, i2c_board_info);
-       i2c_put_adapter(adapter);
-       if (IS_ERR(client))
-               return PTR_ERR(client);
-
-       ret = gpio_request(EGPIO_MAGICIAN_SPK_POWER, "SPK_POWER");
-       if (ret)
-               goto err_request_spk;
-       ret = gpio_request(EGPIO_MAGICIAN_EP_POWER, "EP_POWER");
-       if (ret)
-               goto err_request_ep;
-       ret = gpio_request(EGPIO_MAGICIAN_MIC_POWER, "MIC_POWER");
-       if (ret)
-               goto err_request_mic;
-       ret = gpio_request(EGPIO_MAGICIAN_IN_SEL0, "IN_SEL0");
-       if (ret)
-               goto err_request_in_sel0;
-       ret = gpio_request(EGPIO_MAGICIAN_IN_SEL1, "IN_SEL1");
-       if (ret)
-               goto err_request_in_sel1;
-
-       gpio_set_value(EGPIO_MAGICIAN_IN_SEL0, 0);
-
-       magician_snd_device = platform_device_alloc("soc-audio", -1);
-       if (!magician_snd_device) {
-               ret = -ENOMEM;
-               goto err_pdev;
-       }
-
-       platform_set_drvdata(magician_snd_device, &snd_soc_card_magician);
-       ret = platform_device_add(magician_snd_device);
-       if (ret) {
-               platform_device_put(magician_snd_device);
-               goto err_pdev;
-       }
-
-       return 0;
-
-err_pdev:
-       gpio_free(EGPIO_MAGICIAN_IN_SEL1);
-err_request_in_sel1:
-       gpio_free(EGPIO_MAGICIAN_IN_SEL0);
-err_request_in_sel0:
-       gpio_free(EGPIO_MAGICIAN_MIC_POWER);
-err_request_mic:
-       gpio_free(EGPIO_MAGICIAN_EP_POWER);
-err_request_ep:
-       gpio_free(EGPIO_MAGICIAN_SPK_POWER);
-err_request_spk:
-       return ret;
-}
-
-static void __exit magician_exit(void)
+static int magician_audio_probe(struct platform_device *pdev)
 {
-       platform_device_unregister(magician_snd_device);
-
-       gpio_set_value(EGPIO_MAGICIAN_SPK_POWER, 0);
-       gpio_set_value(EGPIO_MAGICIAN_EP_POWER, 0);
-       gpio_set_value(EGPIO_MAGICIAN_MIC_POWER, 0);
-
-       gpio_free(EGPIO_MAGICIAN_IN_SEL1);
-       gpio_free(EGPIO_MAGICIAN_IN_SEL0);
-       gpio_free(EGPIO_MAGICIAN_MIC_POWER);
-       gpio_free(EGPIO_MAGICIAN_EP_POWER);
-       gpio_free(EGPIO_MAGICIAN_SPK_POWER);
+       struct device *dev = &pdev->dev;
+
+       gpiod_spk_power = devm_gpiod_get(dev, "SPK_POWER", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_spk_power))
+               return PTR_ERR(gpiod_spk_power);
+       gpiod_ep_power = devm_gpiod_get(dev, "EP_POWER", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_ep_power))
+               return PTR_ERR(gpiod_ep_power);
+       gpiod_mic_power = devm_gpiod_get(dev, "MIC_POWER", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_mic_power))
+               return PTR_ERR(gpiod_mic_power);
+       gpiod_in_sel0 = devm_gpiod_get(dev, "IN_SEL0", GPIOD_OUT_HIGH);
+       if (IS_ERR(gpiod_in_sel0))
+               return PTR_ERR(gpiod_in_sel0);
+       gpiod_in_sel1 = devm_gpiod_get(dev, "IN_SEL1", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_in_sel1))
+               return PTR_ERR(gpiod_in_sel1);
+
+       snd_soc_card_magician.dev = &pdev->dev;
+       return devm_snd_soc_register_card(&pdev->dev, &snd_soc_card_magician);
 }
 
-module_init(magician_init);
-module_exit(magician_exit);
+static struct platform_driver magician_audio_driver = {
+       .driver.name = "magician-audio",
+       .driver.pm = &snd_soc_pm_ops,
+       .probe = magician_audio_probe,
+};
+module_platform_driver(magician_audio_driver);
 
 MODULE_AUTHOR("Philipp Zabel");
 MODULE_DESCRIPTION("ALSA SoC Magician");
 MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:magician-audio");
index 763db7bbd9bb30592a09b5c37c682cc4e2abcb7a..0fa37637eca9d04d7e23c50a7dbafd319194bd3f 100644 (file)
@@ -33,7 +33,7 @@
 #include <linux/platform_device.h>
 
 #include <asm/mach-types.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
index 65257f7fe4c4041759283b6a9a0fbaa4a7d5657d..a2321c01c160bde443d62faea33c23966bf29d0a 100644 (file)
@@ -20,7 +20,7 @@
 #include <sound/jack.h>
 
 #include <asm/mach-types.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 #include <linux/platform_data/asoc-palm27x.h>
 
 static struct snd_soc_jack hs_jack;
index 323ba3e23039ddf6158d7c23902aed42e13f288d..5fdaa477e85d27b0e75dc58c157f69ea6f0ec4ac 100644 (file)
@@ -21,8 +21,8 @@
 
 #include <asm/mach-types.h>
 #include <asm/hardware/locomo.h>
-#include <mach/poodle.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
+#include <linux/platform_data/asoc-poodle.h>
 
 #include "../codecs/wm8731.h"
 #include "pxa2xx-i2s.h"
 static int poodle_jack_func;
 static int poodle_spk_func;
 
+static struct poodle_audio_platform_data *poodle_pdata;
+
 static void poodle_ext_control(struct snd_soc_dapm_context *dapm)
 {
        /* set up jack connection */
        if (poodle_jack_func == POODLE_HP) {
                /* set = unmute headphone */
-               locomo_gpio_write(&poodle_locomo_device.dev,
-                       POODLE_LOCOMO_GPIO_MUTE_L, 1);
-               locomo_gpio_write(&poodle_locomo_device.dev,
-                       POODLE_LOCOMO_GPIO_MUTE_R, 1);
+               locomo_gpio_write(poodle_pdata->locomo_dev,
+                       poodle_pdata->gpio_mute_l, 1);
+               locomo_gpio_write(poodle_pdata->locomo_dev,
+                       poodle_pdata->gpio_mute_r, 1);
                snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
        } else {
-               locomo_gpio_write(&poodle_locomo_device.dev,
-                       POODLE_LOCOMO_GPIO_MUTE_L, 0);
-               locomo_gpio_write(&poodle_locomo_device.dev,
-                       POODLE_LOCOMO_GPIO_MUTE_R, 0);
+               locomo_gpio_write(poodle_pdata->locomo_dev,
+                       poodle_pdata->gpio_mute_l, 0);
+               locomo_gpio_write(poodle_pdata->locomo_dev,
+                       poodle_pdata->gpio_mute_r, 0);
                snd_soc_dapm_disable_pin(dapm, "Headphone Jack");
        }
 
@@ -80,10 +82,10 @@ static int poodle_startup(struct snd_pcm_substream *substream)
 static void poodle_shutdown(struct snd_pcm_substream *substream)
 {
        /* set = unmute headphone */
-       locomo_gpio_write(&poodle_locomo_device.dev,
-               POODLE_LOCOMO_GPIO_MUTE_L, 1);
-       locomo_gpio_write(&poodle_locomo_device.dev,
-               POODLE_LOCOMO_GPIO_MUTE_R, 1);
+       locomo_gpio_write(poodle_pdata->locomo_dev,
+               poodle_pdata->gpio_mute_l, 1);
+       locomo_gpio_write(poodle_pdata->locomo_dev,
+               poodle_pdata->gpio_mute_r, 1);
 }
 
 static int poodle_hw_params(struct snd_pcm_substream *substream,
@@ -174,11 +176,11 @@ static int poodle_amp_event(struct snd_soc_dapm_widget *w,
        struct snd_kcontrol *k, int event)
 {
        if (SND_SOC_DAPM_EVENT_ON(event))
-               locomo_gpio_write(&poodle_locomo_device.dev,
-                       POODLE_LOCOMO_GPIO_AMP_ON, 0);
+               locomo_gpio_write(poodle_pdata->locomo_dev,
+                       poodle_pdata->gpio_amp_on, 0);
        else
-               locomo_gpio_write(&poodle_locomo_device.dev,
-                       POODLE_LOCOMO_GPIO_AMP_ON, 1);
+               locomo_gpio_write(poodle_pdata->locomo_dev,
+                       poodle_pdata->gpio_amp_on, 1);
 
        return 0;
 }
@@ -254,13 +256,14 @@ static int poodle_probe(struct platform_device *pdev)
        struct snd_soc_card *card = &poodle;
        int ret;
 
-       locomo_gpio_set_dir(&poodle_locomo_device.dev,
-               POODLE_LOCOMO_GPIO_AMP_ON, 0);
+       poodle_pdata = pdev->dev.platform_data;
+       locomo_gpio_set_dir(poodle_pdata->locomo_dev,
+               poodle_pdata->gpio_amp_on, 0);
        /* should we mute HP at startup - burning power ?*/
-       locomo_gpio_set_dir(&poodle_locomo_device.dev,
-               POODLE_LOCOMO_GPIO_MUTE_L, 0);
-       locomo_gpio_set_dir(&poodle_locomo_device.dev,
-               POODLE_LOCOMO_GPIO_MUTE_R, 0);
+       locomo_gpio_set_dir(poodle_pdata->locomo_dev,
+               poodle_pdata->gpio_mute_l, 0);
+       locomo_gpio_set_dir(poodle_pdata->locomo_dev,
+               poodle_pdata->gpio_mute_r, 0);
 
        card->dev = &pdev->dev;
 
index 58f8541ba55c640612b5c6f0d69814522f0528de..809ea34736edc9305ec339833c4c6a9339ff06b6 100644 (file)
 #include <sound/pxa2xx-lib.h>
 #include <sound/dmaengine_pcm.h>
 
-#include <mach/hardware.h>
-#include <mach/regs-ac97.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
+
+#define PCDR   0x0040  /* PCM FIFO Data Register */
+#define MODR   0x0140  /* Modem FIFO Data Register */
+#define MCDR   0x0060  /* Mic-in FIFO Data Register */
 
 static void pxa2xx_ac97_warm_reset(struct ac97_controller *adrv)
 {
@@ -59,35 +61,30 @@ static struct ac97_controller_ops pxa2xx_ac97_ops = {
 };
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_in = {
-       .addr           = __PREG(PCDR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_4_BYTES,
        .chan_name      = "pcm_pcm_stereo_in",
        .maxburst       = 32,
 };
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_stereo_out = {
-       .addr           = __PREG(PCDR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_4_BYTES,
        .chan_name      = "pcm_pcm_stereo_out",
        .maxburst       = 32,
 };
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_aux_mono_out = {
-       .addr           = __PREG(MODR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_2_BYTES,
        .chan_name      = "pcm_aux_mono_out",
        .maxburst       = 16,
 };
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_aux_mono_in = {
-       .addr           = __PREG(MODR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_2_BYTES,
        .chan_name      = "pcm_aux_mono_in",
        .maxburst       = 16,
 };
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_ac97_pcm_mic_mono_in = {
-       .addr           = __PREG(MCDR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_2_BYTES,
        .chan_name      = "pcm_aux_mic_mono",
        .maxburst       = 16,
@@ -226,6 +223,7 @@ static int pxa2xx_ac97_dev_probe(struct platform_device *pdev)
        int ret;
        struct ac97_controller *ctrl;
        pxa2xx_audio_ops_t *pdata = pdev->dev.platform_data;
+       struct resource *regs;
        void **codecs_pdata;
 
        if (pdev->id != -1) {
@@ -233,6 +231,16 @@ static int pxa2xx_ac97_dev_probe(struct platform_device *pdev)
                return -ENXIO;
        }
 
+       regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       if (!regs)
+               return -ENXIO;
+
+       pxa2xx_ac97_pcm_stereo_in.addr = regs->start + PCDR;
+       pxa2xx_ac97_pcm_stereo_out.addr = regs->start + PCDR;
+       pxa2xx_ac97_pcm_aux_mono_out.addr = regs->start + MODR;
+       pxa2xx_ac97_pcm_aux_mono_in.addr = regs->start + MODR;
+       pxa2xx_ac97_pcm_mic_mono_in.addr = regs->start + MCDR;
+
        ret = pxa2xx_ac97_hw_probe(pdev);
        if (ret) {
                dev_err(&pdev->dev, "PXA2xx AC97 hw probe error (%d)\n", ret);
index 5bfc1a9665320668871eca500ca34815012c02a8..746e6ec9198b0d5f7cf17940ce594882916a4893 100644 (file)
 #include <sound/pxa2xx-lib.h>
 #include <sound/dmaengine_pcm.h>
 
-#include <mach/hardware.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include "pxa2xx-i2s.h"
 
 /*
  * I2S Controller Register and Bit Definitions
  */
-#define SACR0          __REG(0x40400000)  /* Global Control Register */
-#define SACR1          __REG(0x40400004)  /* Serial Audio I 2 S/MSB-Justified Control Register */
-#define SASR0          __REG(0x4040000C)  /* Serial Audio I 2 S/MSB-Justified Interface and FIFO Status Register */
-#define SAIMR          __REG(0x40400014)  /* Serial Audio Interrupt Mask Register */
-#define SAICR          __REG(0x40400018)  /* Serial Audio Interrupt Clear Register */
-#define SADIV          __REG(0x40400060)  /* Audio Clock Divider Register. */
-#define SADR           __REG(0x40400080)  /* Serial Audio Data Register (TX and RX FIFO access Register). */
+#define SACR0          (0x0000)        /* Global Control Register */
+#define SACR1          (0x0004)        /* Serial Audio I 2 S/MSB-Justified Control Register */
+#define SASR0          (0x000C)        /* Serial Audio I 2 S/MSB-Justified Interface and FIFO Status Register */
+#define SAIMR          (0x0014)        /* Serial Audio Interrupt Mask Register */
+#define SAICR          (0x0018)        /* Serial Audio Interrupt Clear Register */
+#define SADIV          (0x0060)        /* Audio Clock Divider Register. */
+#define SADR           (0x0080)        /* Serial Audio Data Register (TX and RX FIFO access Register). */
 
 #define SACR0_RFTH(x)  ((x) << 12)     /* Rx FIFO Interrupt or DMA Trigger Threshold */
 #define SACR0_TFTH(x)  ((x) << 8)      /* Tx FIFO Interrupt or DMA Trigger Threshold */
@@ -77,16 +76,15 @@ struct pxa_i2s_port {
 static struct pxa_i2s_port pxa_i2s;
 static struct clk *clk_i2s;
 static int clk_ena = 0;
+static void __iomem *i2s_reg_base;
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_i2s_pcm_stereo_out = {
-       .addr           = __PREG(SADR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_4_BYTES,
        .chan_name      = "tx",
        .maxburst       = 32,
 };
 
 static struct snd_dmaengine_dai_dma_data pxa2xx_i2s_pcm_stereo_in = {
-       .addr           = __PREG(SADR),
        .addr_width     = DMA_SLAVE_BUSWIDTH_4_BYTES,
        .chan_name      = "rx",
        .maxburst       = 32,
@@ -102,7 +100,7 @@ static int pxa2xx_i2s_startup(struct snd_pcm_substream *substream,
                return PTR_ERR(clk_i2s);
 
        if (!snd_soc_dai_active(cpu_dai))
-               SACR0 = 0;
+               writel(0, i2s_reg_base + SACR0);
 
        return 0;
 }
@@ -114,7 +112,7 @@ static int pxa_i2s_wait(void)
 
        /* flush the Rx FIFO */
        for (i = 0; i < 16; i++)
-               SADR;
+               readl(i2s_reg_base + SADR);
        return 0;
 }
 
@@ -174,39 +172,39 @@ static int pxa2xx_i2s_hw_params(struct snd_pcm_substream *substream,
 
        /* is port used by another stream */
        if (!(SACR0 & SACR0_ENB)) {
-               SACR0 = 0;
+               writel(0, i2s_reg_base + SACR0);
                if (pxa_i2s.master)
-                       SACR0 |= SACR0_BCKD;
+                       writel(readl(i2s_reg_base + SACR0) | (SACR0_BCKD), i2s_reg_base + SACR0);
 
-               SACR0 |= SACR0_RFTH(14) | SACR0_TFTH(1);
-               SACR1 |= pxa_i2s.fmt;
+               writel(readl(i2s_reg_base + SACR0) | (SACR0_RFTH(14) | SACR0_TFTH(1)), i2s_reg_base + SACR0);
+               writel(readl(i2s_reg_base + SACR1) | (pxa_i2s.fmt), i2s_reg_base + SACR1);
        }
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-               SAIMR |= SAIMR_TFS;
+               writel(readl(i2s_reg_base + SAIMR) | (SAIMR_TFS), i2s_reg_base + SAIMR);
        else
-               SAIMR |= SAIMR_RFS;
+               writel(readl(i2s_reg_base + SAIMR) | (SAIMR_RFS), i2s_reg_base + SAIMR);
 
        switch (params_rate(params)) {
        case 8000:
-               SADIV = 0x48;
+               writel(0x48, i2s_reg_base + SADIV);
                break;
        case 11025:
-               SADIV = 0x34;
+               writel(0x34, i2s_reg_base + SADIV);
                break;
        case 16000:
-               SADIV = 0x24;
+               writel(0x24, i2s_reg_base + SADIV);
                break;
        case 22050:
-               SADIV = 0x1a;
+               writel(0x1a, i2s_reg_base + SADIV);
                break;
        case 44100:
-               SADIV = 0xd;
+               writel(0xd, i2s_reg_base + SADIV);
                break;
        case 48000:
-               SADIV = 0xc;
+               writel(0xc, i2s_reg_base + SADIV);
                break;
        case 96000: /* not in manual and possibly slightly inaccurate */
-               SADIV = 0x6;
+               writel(0x6, i2s_reg_base + SADIV);
                break;
        }
 
@@ -221,10 +219,10 @@ static int pxa2xx_i2s_trigger(struct snd_pcm_substream *substream, int cmd,
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
                if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-                       SACR1 &= ~SACR1_DRPL;
+                       writel(readl(i2s_reg_base + SACR1) & (~SACR1_DRPL), i2s_reg_base + SACR1);
                else
-                       SACR1 &= ~SACR1_DREC;
-               SACR0 |= SACR0_ENB;
+                       writel(readl(i2s_reg_base + SACR1) & (~SACR1_DREC), i2s_reg_base + SACR1);
+               writel(readl(i2s_reg_base + SACR0) | (SACR0_ENB), i2s_reg_base + SACR0);
                break;
        case SNDRV_PCM_TRIGGER_RESUME:
        case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
@@ -243,15 +241,15 @@ static void pxa2xx_i2s_shutdown(struct snd_pcm_substream *substream,
                                struct snd_soc_dai *dai)
 {
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-               SACR1 |= SACR1_DRPL;
-               SAIMR &= ~SAIMR_TFS;
+               writel(readl(i2s_reg_base + SACR1) | (SACR1_DRPL), i2s_reg_base + SACR1);
+               writel(readl(i2s_reg_base + SAIMR) & (~SAIMR_TFS), i2s_reg_base + SAIMR);
        } else {
-               SACR1 |= SACR1_DREC;
-               SAIMR &= ~SAIMR_RFS;
+               writel(readl(i2s_reg_base + SACR1) | (SACR1_DREC), i2s_reg_base + SACR1);
+               writel(readl(i2s_reg_base + SAIMR) & (~SAIMR_RFS), i2s_reg_base + SAIMR);
        }
 
-       if ((SACR1 & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) {
-               SACR0 &= ~SACR0_ENB;
+       if ((readl(i2s_reg_base + SACR1) & (SACR1_DREC | SACR1_DRPL)) == (SACR1_DREC | SACR1_DRPL)) {
+               writel(readl(i2s_reg_base + SACR0) & (~SACR0_ENB), i2s_reg_base + SACR0);
                pxa_i2s_wait();
                if (clk_ena) {
                        clk_disable_unprepare(clk_i2s);
@@ -264,13 +262,13 @@ static void pxa2xx_i2s_shutdown(struct snd_pcm_substream *substream,
 static int pxa2xx_soc_pcm_suspend(struct snd_soc_component *component)
 {
        /* store registers */
-       pxa_i2s.sacr0 = SACR0;
-       pxa_i2s.sacr1 = SACR1;
-       pxa_i2s.saimr = SAIMR;
-       pxa_i2s.sadiv = SADIV;
+       pxa_i2s.sacr0 = readl(i2s_reg_base + SACR0);
+       pxa_i2s.sacr1 = readl(i2s_reg_base + SACR1);
+       pxa_i2s.saimr = readl(i2s_reg_base + SAIMR);
+       pxa_i2s.sadiv = readl(i2s_reg_base + SADIV);
 
        /* deactivate link */
-       SACR0 &= ~SACR0_ENB;
+       writel(readl(i2s_reg_base + SACR0) & (~SACR0_ENB), i2s_reg_base + SACR0);
        pxa_i2s_wait();
        return 0;
 }
@@ -279,12 +277,12 @@ static int pxa2xx_soc_pcm_resume(struct snd_soc_component *component)
 {
        pxa_i2s_wait();
 
-       SACR0 = pxa_i2s.sacr0 & ~SACR0_ENB;
-       SACR1 = pxa_i2s.sacr1;
-       SAIMR = pxa_i2s.saimr;
-       SADIV = pxa_i2s.sadiv;
+       writel(pxa_i2s.sacr0 & ~SACR0_ENB, i2s_reg_base + SACR0);
+       writel(pxa_i2s.sacr1, i2s_reg_base + SACR1);
+       writel(pxa_i2s.saimr, i2s_reg_base + SAIMR);
+       writel(pxa_i2s.sadiv, i2s_reg_base + SADIV);
 
-       SACR0 = pxa_i2s.sacr0;
+       writel(pxa_i2s.sacr0, i2s_reg_base + SACR0);
 
        return 0;
 }
@@ -306,12 +304,12 @@ static int pxa2xx_i2s_probe(struct snd_soc_dai *dai)
         * the SACR0[RST] bit must also be set and cleared to reset all
         * I2S controller registers.
         */
-       SACR0 = SACR0_RST;
-       SACR0 = 0;
+       writel(SACR0_RST, i2s_reg_base + SACR0);
+       writel(0, i2s_reg_base + SACR0);
        /* Make sure RPL and REC are disabled */
-       SACR1 = SACR1_DRPL | SACR1_DREC;
+       writel(SACR1_DRPL | SACR1_DREC, i2s_reg_base + SACR1);
        /* Along with FIFO servicing */
-       SAIMR &= ~(SAIMR_RFS | SAIMR_TFS);
+       writel(readl(i2s_reg_base + SAIMR) & (~(SAIMR_RFS | SAIMR_TFS)), i2s_reg_base + SAIMR);
 
        snd_soc_dai_init_dma_data(dai, &pxa2xx_i2s_pcm_stereo_out,
                &pxa2xx_i2s_pcm_stereo_in);
@@ -371,6 +369,22 @@ static const struct snd_soc_component_driver pxa_i2s_component = {
 
 static int pxa2xx_i2s_drv_probe(struct platform_device *pdev)
 {
+       struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+
+       if (!res) {
+               dev_err(&pdev->dev, "missing MMIO resource\n");
+               return -ENXIO;
+       }
+
+       i2s_reg_base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(i2s_reg_base)) {
+               dev_err(&pdev->dev, "ioremap failed\n");
+               return PTR_ERR(i2s_reg_base);
+       }
+
+       pxa2xx_i2s_pcm_stereo_out.addr = res->start + SADR;
+       pxa2xx_i2s_pcm_stereo_in.addr = res->start + SADR;
+
        return devm_snd_soc_register_component(&pdev->dev, &pxa_i2s_component,
                                               &pxa_i2s_dai, 1);
 }
index 7c1384a869ca482f9cac29925510cb80f6ac6aa8..44303b6eb228bf67f987c188a4d88823a7d1ae1a 100644 (file)
 #include <linux/timer.h>
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/soc.h>
 
 #include <asm/mach-types.h>
-#include <mach/spitz.h>
 #include "../codecs/wm8750.h"
 #include "pxa2xx-i2s.h"
 
@@ -37,7 +36,7 @@
 
 static int spitz_jack_func;
 static int spitz_spk_func;
-static int spitz_mic_gpio;
+static struct gpio_desc *gpiod_mic, *gpiod_mute_l, *gpiod_mute_r;
 
 static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
 {
@@ -56,8 +55,8 @@ static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
                snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");
-               gpio_set_value(SPITZ_GPIO_MUTE_L, 1);
-               gpio_set_value(SPITZ_GPIO_MUTE_R, 1);
+               gpiod_set_value(gpiod_mute_l, 1);
+               gpiod_set_value(gpiod_mute_r, 1);
                break;
        case SPITZ_MIC:
                /* enable mic jack and bias, mute hp */
@@ -65,8 +64,8 @@ static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
-               gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
-               gpio_set_value(SPITZ_GPIO_MUTE_R, 0);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 0);
                break;
        case SPITZ_LINE:
                /* enable line jack, disable mic bias and mute hp */
@@ -74,8 +73,8 @@ static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_enable_pin_unlocked(dapm, "Line Jack");
-               gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
-               gpio_set_value(SPITZ_GPIO_MUTE_R, 0);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 0);
                break;
        case SPITZ_HEADSET:
                /* enable and unmute headset jack enable mic bias, mute L hp */
@@ -83,8 +82,8 @@ static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
                snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
                snd_soc_dapm_enable_pin_unlocked(dapm, "Headset Jack");
-               gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
-               gpio_set_value(SPITZ_GPIO_MUTE_R, 1);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 1);
                break;
        case SPITZ_HP_OFF:
 
@@ -93,8 +92,8 @@ static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
                snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
                snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
-               gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
-               gpio_set_value(SPITZ_GPIO_MUTE_R, 0);
+               gpiod_set_value(gpiod_mute_l, 0);
+               gpiod_set_value(gpiod_mute_r, 0);
                break;
        }
 
@@ -199,7 +198,7 @@ static int spitz_set_spk(struct snd_kcontrol *kcontrol,
 static int spitz_mic_bias(struct snd_soc_dapm_widget *w,
        struct snd_kcontrol *k, int event)
 {
-       gpio_set_value_cansleep(spitz_mic_gpio, SND_SOC_DAPM_EVENT_ON(event));
+       gpiod_set_value_cansleep(gpiod_mic, SND_SOC_DAPM_EVENT_ON(event));
        return 0;
 }
 
@@ -287,39 +286,28 @@ static int spitz_probe(struct platform_device *pdev)
        struct snd_soc_card *card = &snd_soc_spitz;
        int ret;
 
-       if (machine_is_akita())
-               spitz_mic_gpio = AKITA_GPIO_MIC_BIAS;
-       else
-               spitz_mic_gpio = SPITZ_GPIO_MIC_BIAS;
-
-       ret = gpio_request(spitz_mic_gpio, "MIC GPIO");
-       if (ret)
-               goto err1;
-
-       ret = gpio_direction_output(spitz_mic_gpio, 0);
-       if (ret)
-               goto err2;
+       gpiod_mic = devm_gpiod_get(&pdev->dev, "mic", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_mic))
+               return PTR_ERR(gpiod_mic);
+       gpiod_mute_l = devm_gpiod_get(&pdev->dev, "mute-l", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_mute_l))
+               return PTR_ERR(gpiod_mute_l);
+       gpiod_mute_r = devm_gpiod_get(&pdev->dev, "mute-r", GPIOD_OUT_LOW);
+       if (IS_ERR(gpiod_mute_r))
+               return PTR_ERR(gpiod_mute_r);
 
        card->dev = &pdev->dev;
 
        ret = devm_snd_soc_register_card(&pdev->dev, card);
-       if (ret) {
+       if (ret)
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
                        ret);
-               goto err2;
-       }
-
-       return 0;
 
-err2:
-       gpio_free(spitz_mic_gpio);
-err1:
        return ret;
 }
 
 static int spitz_remove(struct platform_device *pdev)
 {
-       gpio_free(spitz_mic_gpio);
        return 0;
 }
 
index 3b40b5fa5de7e2bb8cef493e0923f4964eb98bcd..30f83cab0c321529f9ebe2841298c4cf05acac50 100644 (file)
 #include <linux/module.h>
 #include <linux/moduleparam.h>
 #include <linux/device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
 #include <sound/soc.h>
 
 #include <asm/mach-types.h>
-#include <mach/tosa.h>
-#include <mach/audio.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #define TOSA_HP        0
 #define TOSA_MIC_INT   1
@@ -33,6 +32,7 @@
 #define TOSA_SPK_ON    0
 #define TOSA_SPK_OFF   1
 
+static struct gpio_desc *tosa_mute;
 static int tosa_jack_func;
 static int tosa_spk_func;
 
@@ -128,7 +128,7 @@ static int tosa_set_spk(struct snd_kcontrol *kcontrol,
 static int tosa_hp_event(struct snd_soc_dapm_widget *w,
        struct snd_kcontrol *k, int event)
 {
-       gpio_set_value(TOSA_GPIO_L_MUTE, SND_SOC_DAPM_EVENT_ON(event) ? 1 : 0);
+       gpiod_set_value(tosa_mute, SND_SOC_DAPM_EVENT_ON(event) ? 1 : 0);
        return 0;
 }
 
@@ -222,10 +222,11 @@ static int tosa_probe(struct platform_device *pdev)
        struct snd_soc_card *card = &tosa;
        int ret;
 
-       ret = gpio_request_one(TOSA_GPIO_L_MUTE, GPIOF_OUT_INIT_LOW,
-                              "Headphone Jack");
-       if (ret)
-               return ret;
+       tosa_mute = devm_gpiod_get(&pdev->dev, NULL, GPIOD_OUT_LOW);
+       if (IS_ERR(tosa_mute))
+               return dev_err_probe(&pdev->dev, PTR_ERR(tosa_mute),
+                                    "failed to get L_MUTE GPIO\n");
+       gpiod_set_consumer_name(tosa_mute, "Headphone Jack");
 
        card->dev = &pdev->dev;
 
@@ -233,24 +234,16 @@ static int tosa_probe(struct platform_device *pdev)
        if (ret) {
                dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
                        ret);
-               gpio_free(TOSA_GPIO_L_MUTE);
        }
        return ret;
 }
 
-static int tosa_remove(struct platform_device *pdev)
-{
-       gpio_free(TOSA_GPIO_L_MUTE);
-       return 0;
-}
-
 static struct platform_driver tosa_driver = {
        .driver         = {
                .name   = "tosa-audio",
                .pm     = &snd_soc_pm_ops,
        },
        .probe          = tosa_probe,
-       .remove         = tosa_remove,
 };
 
 module_platform_driver(tosa_driver);
index f4a7cfe22115f9d959dfa4686b0c9d85be8095e3..020dcce1df1f860639862ad6e0ba7d994a754854 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/timer.h>
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
 
 #include <sound/core.h>
 #include <sound/pcm.h>
@@ -21,9 +21,7 @@
 #include <sound/jack.h>
 
 #include <asm/mach-types.h>
-#include <mach/hardware.h>
-#include <mach/audio.h>
-#include <mach/z2.h>
+#include <linux/platform_data/asoc-pxa.h>
 
 #include "../codecs/wm8750.h"
 #include "pxa2xx-i2s.h"
@@ -90,7 +88,6 @@ static struct snd_soc_jack_pin hs_jack_pins[] = {
 /* Headset jack detection gpios */
 static struct snd_soc_jack_gpio hs_jack_gpios[] = {
        {
-               .gpio           = GPIO37_ZIPITZ2_HEADSET_DETECT,
                .name           = "hsdet-gpio",
                .report         = SND_JACK_HEADSET,
                .debounce_time  = 200,
@@ -197,6 +194,7 @@ static int __init z2_init(void)
        if (!z2_snd_device)
                return -ENOMEM;
 
+       hs_jack_gpios[0].gpiod_dev = &z2_snd_device->dev;
        platform_set_drvdata(z2_snd_device, &snd_soc_z2);
        ret = platform_device_add(z2_snd_device);